{"id":13491140,"url":"https://github.com/intel/thermal_daemon","last_synced_at":"2026-01-28T23:03:25.305Z","repository":{"id":7318193,"uuid":"8636697","full_name":"intel/thermal_daemon","owner":"intel","description":"Thermal daemon for IA","archived":false,"fork":false,"pushed_at":"2025-02-11T10:17:31.000Z","size":16410,"stargazers_count":561,"open_issues_count":5,"forks_count":119,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-02-11T11:25:52.085Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/intel.png","metadata":{"files":{"readme":"README.txt","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-03-07T21:15:52.000Z","updated_at":"2025-02-11T10:15:59.000Z","dependencies_parsed_at":"2023-12-19T17:35:37.705Z","dependency_job_id":"0a3fdd56-5d46-4e26-8c72-4982deeaac48","html_url":"https://github.com/intel/thermal_daemon","commit_stats":{"total_commits":843,"total_committers":69,"mean_commits":"12.217391304347826","dds":"0.33926453143534996","last_synced_commit":"a61fc4267d61ef64dd213805433bb430c2ca23df"},"previous_names":[],"tags_count":70,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2Fthermal_daemon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2Fthermal_daemon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2Fthermal_daemon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2Fthermal_daemon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/intel","download_url":"https://codeload.github.com/intel/thermal_daemon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245989397,"owners_count":20705822,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T19:00:53.959Z","updated_at":"2026-01-28T23:03:25.288Z","avatar_url":"https://github.com/intel.png","language":"C++","readme":"Use man pages to check command line arguments in configuration:\n\tman thermald\n\tman thermal-conf.xml\n\nPrerequisites:\n\tKernel\n\t\tPrefers kernel with\n\t\t\tIntel RAPL power capping driver : Available from Linux kernel 3.13.rc1\n\t\t\tIntel P State driver (Available in Linux kernel stable release)\n\t\t\tIntel Power clamp driver (Available in Linux kernel stable release)\n\t\t\tIntel INT340X drivers\n\t\t\tIntel RAPL-mmio power capping driver: Available from 5.3-rc1\n\nCompanion tools\n\tThermalMonitor\n\t\tGraphical front end for monitoring and control.\n\t\tSource code is as part of tools folder in this git repository.\n\tdptfxtract\n\t\tDownload from: https://github.com/intel/dptfxtract\n\t\tThis generates configuration files for thermald on some systems.\n\nBuilding and executing on Fedora\n1.\nInstall\n\n\tyum install automake\n\tyum install autoconf-archive\n\tyum install gcc\n\tyum install gcc-c++\n\tyum install glib-devel\n\tyum install libxml2-devel\n\tyum install gtk-doc\n\tyum install upower-devel\n\tyum install libevdev-devel\n\nReplace yum with dnf for later Fedora versions.\n\n2\nBuild\n\n\t./autogen.sh prefix=/\n\tmake\n\tsudo make install\n\nThe prefix value depends on the distribution version.\nThis can be \"/\" or \"/usr\". So please check existing\npath of thermald install, if present to update and\nadd appropriate prefix.\n\n3\n- start service\n\tsudo systemctl start thermald.service\n- Get status\n\tsudo systemctl status thermald.service\n- Stop service\n\tsudo systemctl stop thermald.service\n- To enable service at boot\n\tsudo systemctl enable thermald.service\n\n4. Terminate using DBUS I/F\n\tsudo test/test_pref.sh\n\t\tand select \"TERMINATE\" choice.\n\n\n\nBuilding on Ubuntu\n1. Install\n\tsudo apt install autoconf\n\tsudo apt install autoconf-archive\n\tsudo apt install g++\n\tsudo apt install libglib2.0-dev\n\tsudo apt install libxml2-dev\n\tsudo apt install gtk-doc-tools\n\tsudo apt install libupower-glib-dev\n\tsudo apt install libevdev-dev\n\n2\nBuild\n\n\t./autogen.sh prefix=/\n\tmake\n\tsudo make install\n\n(It will give error for systemd configuration, but ignore)\n\n3.\nIf using systemd, use\n- start service\n\tsudo systemctl start thermald.service\n- Get status\n\tsudo systemctl status thermald.service\n- Stop service\n\tsudo systemctl stop thermald.service\n\nBuilding and executing on openSUSE\n1.\nInstall\n\tzypper in automake\n\tzypper in gcc\n\tzypper in gcc-c++\n\tzypper in glib2-devel\n\tzypper in libxml2-devel\n\tzypper in automake autoconf-archive\n\tzypper in gtk-doc\n\tzypper in libupower-glib-devel\n\tzypper in libevdev-devel\n\nFor build, follow the same procedure as Fedora.\n\n-------------------------------------------\n\nReleases\n\nRelease 2.5.11\n- Clang-tidy fixes\n- Wildcat Lake support\n- CVE related to symbolic links exploitations\n- dbus interface fixes and remove power group after Thermal monitor\nsupport is deprecated\n\nRelease 2.5.10\n- For new ITMT string version 3 support\n- There was issue in updating path for DPTF files for Panther Lake\n- Minor print format for time_t value\n- Don't reset clamping bit for RAPL for MSR rapl zones when disabled\n- Add confitional power floor processing\n\nRelease 2.5.9\n- Panther Lake support\n- Intel P-state in passive mode support\n\nRelease 2.5.8\n- Lunar Lake support\n- Arrow Lake support\n- Remove coverity errors to minimum\n- Add a script to plot temperature and trips from debug log\n- Deprecate modem/KBL-G support\n- Remove dbus-glib-devel as requirment\n\nRelease 2.5.7\n- Remove dependency on lzma libs\n- Fix remaining issues with  GDBUS transition\n- Seg fault when no config file for the first time\n\nRelease 2.5.6\n- Fix crash with GDBus port\n\nRelease 2.5.5\n- Use GDBus for dbus\n- Handle single trip to solve thermal shutdown issue for an Alder Lake desktop\n\nRelease 2.5.4\n- Android support\n- Workarounds for missing conditions/tables\n\nRelease 2.5.3\n- Support Meteor Lake\n\nRelease 2.5.2\n- Support Alder Lake N\n- Support ITMT version 2, which is used in some Raptor Lake systems\n\nRelease 2.5.1\n- Static analysis fixes\n- Missing init, which causes skipping of conditions in a Dell system\n\nRelease 2.5\n- Support of new thermal table for Alder Lake\n- Add Raptor Lake in the list\n\nRelease 2.4.9\n- Fix performance issues for Dell Latitude 5421\n- Fix performance issues for Dell Latitude 7320/7420\n(Depend on kernel patch \"thermal: int340x: Update OS policy capability handshake\")\n- Adaptive improvements from Benzea\n- Thermal Monitor fixes and cosmetic updates\n- Documentation updates from Colin King\n- Static analysis fixes from Benzea\n- Fix test for compressed data vaults\n\nRelease 2.4.8\n-Fix Ideapad thermal shutdown issue #328\n\nRelease 2.4.7\n- Fix AC/DC power limit issue in some HP TigerLake systems\n- Regression fix for RAPL MSR usage in xml config file\n- Added Japer Lake and Alder Lake CPU models\n- Debug scripts for log collection to upload\n\nRelease 2.4.6\n- Fix for Ubuntu bug 1930422\n\nRelease 2.4.5\n- Address low performance with Dell Latitude 5420\nwith the latest BIOS\n\nRelease 2.4.4\n- Address low performance with Dell Latitude 5420\n\nRelease 2.4.3\n- Allow --ingore-cpuid-check to use with --adaptive option\n\nRelease 2.4.2\n- Issue with Dell Latitude 7400. Fix for issue #291\n\nRelease 2.4.1\n- Minor change for Dell XPS 13 with Tiger Lake.\n\nRelease 2.4\n- Support for Rocket Lake and Commet Lake CPU model\n- Tiger Lake DPTF tables support\n- CPU stuck at low frequency on two models (issue 280)\n- Changes related to PID and exit codes\n\nRelease 2.3\n- Merged changes from mjg59 for adaptive\n- Requires Linux kernel version 5.8 or later\n- By default tries --adaptive and fallback to old style\n- At least some level of success to use adaptive option on:\n(not expected to be on par with Windows DPTF)\nDell XPS 13 9360\nDell XPS 13 9370\nDell XPS 13 9380\nDell XPS 13 7390 2-in-1\nDell Insperion_7386\nHP Spectre x360 Convertible 15-ch0xx\nHP ZBook 15 G5\nLenovo Thinkpad T480\n\n- thermald will not run on Lenovo platforms with lap mode sysfs entry\n\nRelease 2.2\n- Ignore PPCC power limits when max and min power is same\n- Regression in cpufreq cooling device causing min state to get stuck\n\nRelease 2.1\n- Workaround for invalid PPCC power limits\n- Reduce polling for power when PPCC is not present\n\nRelease 2.0\n- Tiger Lake support\n- PL1 limit setting from PPCC as is\n- Optimize multi step, multi zone control\n- Add new tag for product identification \"product_sku\"\n\nRelease 1.9.1\n- Remove default CPU temperature compensation for auto generated configuration from dptfxtract\n- Minor Android build warnings\n\nRelease 1.9\n- The major change in this version is the active power limits adjustment.\nThis will be useful to improve performance on some newer platform. But\nthis will lead to increase in CPU and other temperatures. Hence this\nis important to run dptfxtract version 1.4.1 tool to get performance\nsensitive thermal limits (https://github.com/intel/dptfxtract/commits/v1.4.1).\nIf the default configuration picked up by thermald is not optimal, user\ncan select other less aggressive configuration. Refer to the README here\nhttps://github.com/intel/dptfxtract/blob/master/README.txt\n\nThis power limit adjustment depends on some kernel changes released with\nkernel version v5.3-rc1. For older kernel release run thermald with\n--workaround-enabled\nBut this will depend on /dev/mem access, which means that platforms with\nsecure boot must update to newer kernels.\n\n- TCC offset limits\nAs reported in some forums that some platforms have issue with high TCC\noffset settings. Under some special condition this offset is adjusted,\nbut that currently needs msr module loaded to get MSR access\nfrom user space. I have submitted a patch to have this exported via sysfs\nfor v5.4+ kernel.\n\n- To disable all the above performance optimization, use --disable-active-power.\nSince Linux Thermal Daemon implementation doesn't have capability to match\nIntel® Dynamic Platform and Thermal Framework (DPTF) implementation on other\nOperating systems, this option is very important if the user is experiencing\nthermal issues. If there is some OEM/manufactures have issue with this\nimplementation, please get back to me for blacklist of platforms.\n\n- Added support for Ice Lake platform\n\n- ThermalMonitor\nCleaned up the plots, so that only active sensors and trips gets plotted.\n\nRelease 1.8\n- Support of KBL-G with discrete GPU\n- Fast removal of any cooling action which was applied once\ntemperature is normal\n- Android support\n- Add Hot trip point, which when reached just calls \"suspend\"\n- Adding new tag \"DependsOn\" which enable/disable trip based on some other trip\n- Polling interval can be configured via thermal xml config\n- Per trip PID control\n- Simplify RAPL cooling device\n\nRelease 1.7.2\n- Workwround for platform with invalid thermal table\n- Error printing for RAPL constraint sysfs read on failure\n- thermal-conf.xml.auto  can be read from /etc/thermald, which allows user to modify\ngenerated thermal-conf.xml from /var/run/thermald and copy to /etc/thermald\n\nRelease 1.7.1\n- Removed dptfxtract binary as there is an issue\nin packaging this with GPL source for distributions\n\nRelease 1.7\n- Add GeminiLake\n- Add dptfxtract tool, which converts DPTF tables to thermald tables using best effort\n- Changes to accommodate dptfxtract tool conversions\n- Better facility to configure fan controls\n- PID control optimization\n- Fix powerlimit write errors because of bad FW settings of power limits\n- More restrictive compile options and warnings as errors\n- Improve logging\n- Android build fixes\n\nRelease 1.6\n- Add Kabylake and missing Broadwell CPU model\n- Removed deprecated modules\n- Added passive trip between critical and max, to allow fan to take control first\n- Fixed clash when multiple zones and trips controlling same cdev\n\n1.5.4\n- Use Processor thermal device in lieu of CPU zone when present\n- Haswell/Skylake PCH sensor\n- Fix regression in LCD/Backlight path\n\nRelease 1.5.3\n- PCH sensor support\n\nRelease 1.5.2\n- Security bug for bios lock fix\n\nRelease 1.5.1\n- Regression fix for the default config file location\n\nRelease 1.5\n- Default warning level increase so that doesn't print much in logs\n- Add new feature to set specific target state on reaching a threshold,\nthis allows multiple thresholds (trips)\n- Android update for build\n- Additional backlight devices\n- New option to specify config file via command line\n- Prevent adding cooling device in /etc via dbus\n- Whitelist of processor models, to avoid startup on server platforms\n\nRelease 1.4.3\n- One new dbus message to get temp\n- Fixes to prevent warnings\n\nRelease 1.4\n- Extension of DBUS I/F for developing Monitoring and Control GUI\n- Added exampled to thermal-conf man page\n- Support INT340X class of thermal control introduced in kernel 4.0\n- Reinit without restart thermald to load new parameters like new control temperature\n- Fix indexes when Linux thermal sysfs doesn't have contiguous zone numbering\n- Support for new Intel SoC platforms\n- Introduce back-light control as the Linux back light cooling device is removed\n- Restore modified passive trip points in thermal zones on exit\n- Virtual Sensor definition\n- Fix loop when uevents floods the system\n- Error message removal for rapl sysfs traversal\n- Coverity error\n\nRelease 1.3\n- Auto creation of configuration based on ACPI thermal relationship table\n- Default CPU bound load check for unbinded thermal sensors\n\nRelease 1.2\n- Several fixes for Klocworks and Coverity scans (0 issues remaining)\n- Baytrail RAPL support as this doesn't have max power limit value\n\nRelease 1.1\n- Use powercap Intel RAPL driver\n- Use skin temperature sensor by default if available\n- Specify thermal relationship\n- Clean up for MSR related controls as up stream kernel driver are capable now\n- Override capability of thermal sysfs for a specific sensor or zone\n- Friendly to new thermal sysfs\n\nRelease 1.04\n- Android and chrome os integration\n- Minor fixes for buggy max temp\n\nRelease 1.03\n- Allow negative step increments while configuring via XML\n- Use powercap RAPL driver I/F\n- Additional cpuids in the list\n- Add man page with details of usage\n- Added P state turbo on/off\n\nRelease 1.02\n- Allow user to change the max temperature via dbus message\n- Allow user to change the cooling method order via an XML configuration\n- Upstart fixes\n- Valgrind and zero warnings on build\n\nRelease 1.01\n- Implement RAPL using MSRs.\n- User can configure cooling device order via XML config file\n- Fix sensor path configuration for thermal-conf.xml, so that user cn specify custom sensor paths\n- Use CPU max scaling frequency to control CPU Frequencies\n- RPM generation scripts\n- Build and formatting fixes from Alexander Bersenev\n\n\nRelease 1.0\n- Tested on multiple platforms\n- Using PID\n\nversion 0.9\n- Replaced netlink with uevents\n- Fix issue with pre-configured thermal data to control daemon\n- Use pthreads\n\nversion 0.8\n- Fix RAPL PATH, which is submitted upstream\n- Handle case when there is no MSR access from user mode\n- Allow non Intel CPUs\n\nversion 0.7\n- Conditional per cpu control\n- Family id check\n- If no max use offset from critical temperature\n- Switch to hwmon if there is no coretemp\n- Error handling if MSR support is not enabled in kernel\n- Code clean up and comments\n\nVersion 0.6\n- Use Intel P state driver to control P states\n- Use RAPL cooling device\n- Fix valgrind reported errors and cleanup\n- Add document\n\nVersion 0.5\n- License update to GPL v2 or later\n- Change dbus session bus to system\n- Load thermal-conf.xml data if exact UUID  match\n\nVersion 0.4\n- Added power clamp driver interface\n- Added per cpu controls by trying to calibrate in the background to learn sensor cpu relationship\n- Optimized p states and turbo states and cleaned up\n- systemd and service start stop interface\n\nVersion 0.3\n- Added P states t states turbo states as the cooling methods\n- No longer depend on any thermal sysfs, zone cooling device by default\n- Uses DTS core temperature and p/turbo/t states to cool system\n- By default only will use DTS core temperature and p/turbo/t states only\n- All the previous controls based on the zones/cdevs and XML configuration is only done, when activated via command line\n- The set points are calculated and stored in a config file when it hits thermal threshold and adjusted based\non slope and angular increments to dynamically adjust set point\n\n\nVersion 0.2\n- Define XML interface to set configuration data. Refer to thermal-conf.xml. This allows overriding buggy Bios thermal comfiguration and also allows extending the capability.\n- Use platform DMI UUID to index into configuration data. If there is no UUID match, falls back to thermal sysfs\n- Terminate interface\n- Takes over control from kernel thermal processing\n- Clean up of classes.\n\n\nVersion 0.1\n- Dbus interface to set preferred policy: \"performance\", \"quiet/power\", \"disabled\"\n- Defines a C++ classes for zones, cooling devices, trip points, thermal engine\n- Methods can be overridden in a custom class to modify default behaviour\n- Read thermal zone and cooling devices, trip points etc,\n- Read temperature via netlink notification or via polling configurable via command line\n- Once a trip point is crossed, activate the associate cooling devices. Start with min tstate to max tstate for each cooling device.\n- Based on active or passive settings it decides the cooling devices\n\n","funding_links":[],"categories":["C++","HarmonyOS"],"sub_categories":["Windows Manager"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintel%2Fthermal_daemon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintel%2Fthermal_daemon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintel%2Fthermal_daemon/lists"}