Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


Thermal daemon for IA

Subscribe to updates I use thermal_daemon

Statistics on thermal_daemon

Number of watchers on Github 191
Number of open issues 5
Average time to close an issue 3 months
Main language C++
Average time to merge a PR 6 days
Open pull requests 5+
Closed pull requests 11+
Last commit almost 2 years ago
Repo Created over 6 years ago
Repo Last Updated over 1 year ago
Size 15.1 MB
Organization / Authorintel
Page Updated
Do you use thermal_daemon? Leave a review!
View open issues (5)
View thermal_daemon activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating thermal_daemon for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Use man pages to check command line arguments in configuration: man thermald man thermal-conf.xml

Prerequisites: Kernel Prefers kernel with Intel RAPL power capping driver : Available from Linux kernel 3.13.rc1 Intel P State driver (Available in Linux kernel stable release) Intel Power clamp driver (Available in Linux kernel stable release)

    CONFIG_X86_MSR, so that x86 MSR can be read/write from user space to control RAPL if no RAPL powecap class driver is not present.

    If none of the above available cpufreq to control P states.

Building and executing on Fedora 1. Install

yum install automake
yum install gcc
yum install gcc-c++
yum install glib-devel
yum install dbus-glib-devel
yum install libxml2-devel

2 Build

 ./configure prefix=/
sudo make install


  • start service sudo systemctl start thermald.service
  • Get status sudo systemctl status thermald.service
  • Stop service sudo systemctl stop thermald.service
  1. Terminate using DBUS I/F sudo test/ and select TERMINATE choice.

Building on Ubuntu

  1. Install sudo apt-get install autoconf sudo apt-get install g++ sudo apt-get install libglib2.0-dev sudo apt-get install libdbus-1-dev sudo apt-get install libdbus-glib-1-dev sudo apt-get install libxml2-dev

2 Build

 ./configure prefix=/usr
sudo make install

(It will give error for systemd configuration, but ignore)

3. If using systemd, use

  • start service sudo systemctl start thermald.service
  • Get status sudo systemctl status thermald.service
  • Stop service sudo systemctl stop thermald.service


Release 1.7.1

  • Removed dptfxtract binary as there is an issue in packaging this with GPL source for distributions

Release 1.7

  • Add GeminiLake
  • Add dptfxtract tool, which converts DPTF tables to thermald tables using best effort
  • Changes to accommodate dptfxtract tool conversions
  • Better facility to configure fan controls
  • PID control optimization
  • Fix powerlimit write errors because of bad FW settings of power limits
  • More restrictive compile options and warnings as errors
  • Improve logging
  • Android build fixes

Release 1.6

  • Add Kabylake and missing Broadwell CPU model
  • Removed deprecated modules
  • Added passive trip between critical and max, to allow fan to take control first
  • Fixed clash when multiple zones and trips controlling same cdev


  • Use Processor thermal device in lieu of CPU zone when present
  • Haswell/Skylake PCH sensor
  • Fix regression in LCD/Backlight path

Release 1.5.3

  • PCH sensor support

Release 1.5.2

  • Security bug for bios lock fix

Release 1.5.1

  • Regression fix for the default config file location

Release 1.5

  • Default warning level increase so that doesn't print much in logs
  • Add new feature to set specific target state on reaching a threshold, this allows multiple thresholds (trips)
  • Android update for build
  • Additional backlight devices
  • New option to specify config file via command line
  • Prevent adding cooling device in /etc via dbus
  • Whitelist of processor models, to avoid startup on server platforms

Release 1.4.3

  • One new dbus message to get temp
  • Fixes to prevent warnings

Release 1.4

  • Extension of DBUS I/F for developing Monitoring and Control GUI
  • Added exampled to thermal-conf man page
  • Support INT340X class of thermal control introduced in kernel 4.0
  • Reinit without restart thermald to load new parameters like new control temperature
  • Fix indexes when Linux thermal sysfs doesn't have contiguous zone numbering
  • Support for new Intel SoC platforms
  • Introduce back-light control as the Linux back light cooling device is removed
  • Restore modified passive trip points in thermal zones on exit
  • Virtual Sensor definition
  • Fix loop when uevents floods the system
  • Error message removal for rapl sysfs traversal
  • Coverity error

Release 1.3

  • Auto creation of configuration based on ACPI thermal relationship table
  • Default CPU bound load check for unbinded thermal sensors

Release 1.2

  • Several fixes for Klocworks and Coverity scans (0 issues remaining)
  • Baytrail RAPL support as this doesn't have max power limit value

Release 1.1

  • Use powercap Intel RAPL driver
  • Use skin temperature sensor by default if available
  • Specify thermal relationship
  • Clean up for MSR related controls as up stream kernel driver are capable now
  • Override capability of thermal sysfs for a specific sensor or zone
  • Friendly to new thermal sysfs

Release 1.04

  • Android and chrome os integration
  • Minor fixes for buggy max temp

Release 1.03

  • Allow negative step increments while configuring via XML
  • Use powercap RAPL driver I/F
  • Additional cpuids in the list
  • Add man page with details of usage
  • Added P state turbo on/off

Release 1.02

  • Allow user to change the max temperarure via dbus message
  • Allow user to change the cooling method order via an XML configuration
  • Upstart fixes
  • Valgrind and zero warnings on build

Release 1.01

  • Implement RAPL using MSRs.
  • User can configure cooling device order via XML config file
  • Fix sensor path configuration for thermal-conf.xml, so that user cn specify custom sensor paths
  • Use CPU max scaling frequency to control CPU Frequencies
  • RPM generation scripts
  • Build and formatting fixes from Alexander Bersenev

Release 1.0

  • Tested on multiple platforms
  • Using PID

version 0.9

  • Replaced netlink with uevents
  • Fix issue with pre-configured thermal data to control daemon
  • Use pthreads

version 0.8

  • Fix RAPL PATH, which is submitted upstream
  • Handle case when there is no MSR access from user mode
  • Allow non Intel CPUs

version 0.7

  • Conditional per cpu control
  • Family id check
  • If no max use offset from critical temperature
  • Switch to hwmon if there is no coretemp
  • Error handling if MSR support is not enabled in kernel
  • Code clean up and comments

Version 0.6

  • Use Intel P state driver to control P states
  • Use RAPL cooling device
  • Fix valgrind reported errors and cleanup
  • Add document

Version 0.5

  • License update to GPL v2 or later
  • Change dbus session bus to system
  • Load thermal-conf.xml data if exact UUID match

Version 0.4

  • Added power clamp driver interface
  • Added per cpu controls by trying to calibrate in the background to learn sensor cpu relationship
  • Optimized p states and turbo states and cleaned up
  • systemd and service start stop interface

Version 0.3

  • Added P states t states turbo states as the cooling methods
  • No longer depend on any thermal sysfs, zone cooling device by default
  • Uses DTS core temperature and p/turbo/t states to cool system
  • By default only will use DTS core temperature and p/turbo/t states only
  • All the previous controls based on the zones/cdevs and XML configuration is only done, when activated via command line
  • The set points are calculated and stored in a config file when it hits thermal threshold and adjusted based on slope and angular increments to dynamically adjust set point

Version 0.2

  • Define XML interface to set configuration data. Refere to thermal-conf.xml. This allows to overide buggy Bios thermal comfiguration and also allows to extend the capability.
  • Use platform DMI UUID to index into configuration data. If there is no UUID match, falls back to thermal sysfs
  • Terminate interface
  • Takes over control from kernel thermal processing
  • Clean up of classes.

Version 0.1

  • Dbus interface to set preferred policy: performance, quiet/power, disabled
  • Defines a C++ classes for zones, cooling devices, trip points, thermal engine
  • Methods can be overridden in a custom class to modify default behaviour
  • Read thermal zone and cooling devices, trip points etc,
  • Read temprature via netlink notification or via polling configurable via command line
  • Once a trip point is crossed, activate the associate cooling devices. Start with min tstate to max tstate for each cooling device.
  • Based on active or passive settings it decides the cooling devices
thermal_daemon open issues Ask a question     (View All Issues)
  • almost 3 years Powerclamp throttles before fan spins up on Lenovo laptop
  • about 3 years Failed to start Thermald in Ubuntu 16
  • about 3 years Non-static class member preference is not initialized in constructor in thd_preference.cpp
  • over 3 years scan-build detects issues on static analysis of ThermalMonitor
  • over 3 years Haswell, thermald 1.5.3-1 ARCH - TRT/ART failed, sysfs read/write failed
  • over 3 years thermald fails on ASUS M5A78L-M LX with AMD FX-6100
  • over 3 years Thermald does not read /etc/thermald/thermal-conf.xml anymore
  • almost 4 years thermald fails to start: no RAPL
  • almost 4 years Thermald configuration is retard, please fix
  • about 4 years logging level is increased since 1.4.3 update
  • over 4 years cpuFan and gfxFan
  • over 4 years Question: What is the "Processor" cooling device
  • over 4 years Question: Arch AUR package
  • over 4 years please provide a client to query the daemon
  • over 4 years QUESTION: Kernel Has Thermal Support So Why thermal_daemon?
  • over 4 years Weird CPU usage raising when thermald is running
  • over 4 years Thermald is being too conservative on high temperatures
  • over 4 years Could thermald be the cause of this crash?
  • over 4 years Non-dbus and non-glib builds
  • almost 5 years Integer overflow on Intel Core i7 4770S (Haswell)
  • almost 5 years Questionable implementation of PID controller
  • almost 5 years Can I use thermald to stay below n degrees?
  • about 5 years Issues with thermald and real time kernel.
  • about 5 years Performance with one process at 100% and temperature at idle
  • over 5 years Unable to initialize daemon
  • almost 6 years Core i7 - MSR READ Failed - MSR CONTROL WILL BE DISABLED
  • almost 6 years dbus GetCurrentPreference returns empty string
  • almost 6 years Disabling turbo?
  • about 6 years pstate and high idle
  • over 6 years MSR READ Failed
thermal_daemon open pull requests (View All Pulls)
  • Update build instructions for Ubuntu
  • data: Fix for non-systemd platforms
  • manual: thermal-conf.xml: fix typos, "confirm" -> "conform"
  • Don't terminate the thermald engine if thd_engine is null
  • Fix issues with musl and x32
thermal_daemon list of languages used
Other projects in C++