# Configure ThermalD

ThermalD is a Linux daemon that helps prevent platform overheating by continuously monitoring temperature sensors and applying thermal mitigation using available cooling mechanisms. It functions as an intelligent thermal management system, maintaining safe operating temperatures proactively, before the hardware needs to apply aggressive corrective measures.

ThermalD monitors CPU and overall system temperatures using digital temperature sensors and enforces thermal control by engaging multiple cooling strategies, such as:

> 
> 
> - CPU frequency scaling
> - Power limiting
> - Fan control

The daemon integrates with the Linux thermal subsystem (`/sys/class/thermal`) and extends or overrides kernel thermal policies using XML-based configuration files. It supports both automatic configuration through ACPI thermal relationship tables and manual configuration to enable custom thermal management strategies.

Following is the XML structure overview of ThermalD:

<?xml version="1.0"?>
    <ThermalConfiguration>
        <Platform>
        <Name>Platform Name</Name>
        <ProductName>Product Name or *</ProductName>
        <UUID>Optional UUID</UUID>
        <Preference>QUIET|PERFORMANCE</Preference>
    
        <ThermalSensors>
            <!-- Sensor definitions -->
        </ThermalSensors>
    
        <ThermalZones>
            <!-- Zone and trip point definitions -->
        </ThermalZones>
    
        <CoolingDevices>
            <!-- Cooling device configurations -->
        </CoolingDevices>
        </Platform>
    </ThermalConfiguration>
    Copy to clipboard

## Push custom rules to ThermalD

ThermalD uses the configuration file `/etc/thermald/thermal-conf.xml` for manual configuration.

The following example shows how to manually configure ThermalD using an XML configuration file to manage GPU and CPU thermal zones:

> 
> 
> - The configuration specifies three thermal sensors, one for the GPU and two for separate CPU clusters, each associated with passive cooling trip points. The GPU thermal zone is triggered at 35 °C, while the CPU cluster zones activate at 40 °C and 45 °C, respectively.
> - All zones use CPU or GPU frequency scaling as the cooling mechanism, with a 100 ms sampling interval and a 5 °C hysteresis to prevent thermal oscillation. The cooling devices are configured with defined state ranges and automatic down-control enabled, allowing for gradual and controlled temperature reduction.

<ThermalConfiguration>
        <Platform>
            <Name>*</Name>
            <UUID>*</UUID>
            <ProductName>*</ProductName>
            <Preference>QUIET</Preference>
            <!-- 100ms polling interval -->
            <PollingInterval>5</PollingInterval>
            <ThermalSensors>
                <ThermalSensor>
                    <Type>gpuss-0-thermal</Type>
                    <AsyncCapable>0</AsyncCapable>
                </ThermalSensor>
            </ThermalSensors>
            <ThermalSensors>
                <ThermalSensor>
                    <Type>cpu-0-0-0-thermal</Type>
                    <AsyncCapable>0</AsyncCapable>
                </ThermalSensor>
            </ThermalSensors>
            <ThermalSensors>
                <ThermalSensor>
                    <Type>cpu-1-1-1-thermal</Type>
                    <AsyncCapable>0</AsyncCapable>
                </ThermalSensor>
            </ThermalSensors>
    
            <ThermalZones>
                <ThermalZone>
                    <Type>gpuss-0-thermal</Type>
                    <TripPoints>
                        <TripPoint>
                            <SensorType>gpuss-0-thermal</SensorType>
                            <Temperature>35000</Temperature>
                            <Hysteresis>5000</Hysteresis>
                            <Hyst>5000</Hyst>
                            <type>passive</type>
                            <ControlType>SEQUENTIAL</ControlType>
                            <CoolingDevice>
                                <index>0</index>
                                <type>devfreq-3d00000.gpu</type>
                                <influence>5000</influence>
                                <SamplingPeriod>5</SamplingPeriod>  <!-- 100ms sampling -->
                            </CoolingDevice>
                        </TripPoint>
                    </TripPoints>
                </ThermalZone>
                <ThermalZone>
                    <Type>cpu-0-0-0-thermal</Type>
                    <TripPoints>
                        <TripPoint>
                            <SensorType>cpu-0-0-0-thermal</SensorType>
                            <Temperature>40000</Temperature>  <!-- 75°C threshold -->
                            <Hysteresis>5000</Hysteresis>
                            <Hyst>5000</Hyst>
                            <type>passive</type>
                            <ControlType>SEQUENTIAL</ControlType>
                            <CoolingDevice>
                                <index>0</index>
                                <type>cpufreq-cpu0</type>
                                <influence>5000</influence>
                                <SamplingPeriod>5</SamplingPeriod>  <!-- 100ms sampling -->
                            </CoolingDevice>
                        </TripPoint>
                    </TripPoints>
                </ThermalZone>
                <ThermalZone>
                    <Type>cpu-1-1-1-thermal</Type>
                    <TripPoints>
                        <TripPoint>
                            <SensorType>cpu-1-1-1-thermal</SensorType>
                            <Temperature>45000</Temperature>  <!-- 75°C threshold -->
                            <Hysteresis>5000</Hysteresis>
                            <Hyst>5000</Hyst>
                            <type>passive</type>
                            <ControlType>SEQUENTIAL</ControlType>
                            <CoolingDevice>
                                <index>0</index>
                                <type>cpufreq-cpu4</type>
                                <influence>5000</influence>
                                <SamplingPeriod>5</SamplingPeriod>  <!-- 100ms sampling -->
                            </CoolingDevice>
                        </TripPoint>
                    </TripPoints>
                </ThermalZone>
            </ThermalZones>
    
            <CoolingDevices>
                <CoolingDevice>
                    <Index>0</Index>
                    <Type>devfreq-3d00000.gpu</Type>
                    <SysfsPath>/sys/class/thermal/cooling_device2</SysfsPath>
                    <MinState>0</MinState>
                    <MaxState>3</MaxState>
                    <IncDecStep>1</IncDecStep>
                    <ReadBack>1</ReadBack>
                    <AutoDownControl>1</AutoDownControl>
                    <TargetState>1</TargetState>
                </CoolingDevice>
                <CoolingDevice>
                    <Index>0</Index>
                    <Type>cpufreq-cpu0</Type>
                    <SysfsPath>/sys/class/thermal/cooling_device0</SysfsPath>
                    <MinState>0</MinState>
                    <MaxState>13</MaxState>
                    <IncDecStep>1</IncDecStep>
                    <ReadBack>1</ReadBack>
                    <AutoDownControl>1</AutoDownControl>
                    <TargetState>1</TargetState>
                </CoolingDevice>
                <CoolingDevice>
                    <Index>0</Index>
                    <Type>cpufreq-cpu4</Type>
                    <SysfsPath>/sys/class/thermal/cooling_device1</SysfsPath>
                    <MinState>0</MinState>
                    <MaxState>13</MaxState>
                    <IncDecStep>1</IncDecStep>
                    <ReadBack>1</ReadBack>
                    <AutoDownControl>1</AutoDownControl>
                    <TargetState>1</TargetState>
                </CoolingDevice>
            </CoolingDevices>
        </Platform>
    </ThermalConfiguration>
    Copy to clipboard

Note

See [Thermal Daemon](https://github.com/intel/thermal_daemon/blob/master/README.txt) for more information.

## Next steps

- [Verify thermal state](https://docs.qualcomm.com/doc/80-80022-30/topic/thermal-debug.html#thermal-debug)

Last Published: May 06, 2026

[Previous Topic
Regulate temperature with fan controller](https://docs.qualcomm.com/bundle/publicresource/80-80022-30/topics/fan-controller.md) [Next Topic
Verify thermal state](https://docs.qualcomm.com/bundle/publicresource/80-80022-30/topics/thermal-debug.md)