Tools to lower power consumption and device cooling

  • CPU frequency scaling and battery optimization for Notebook and PC systems


is a Linux daemon used to prevent the overheating of platforms. This daemon monitors temperature and applies compensation using available cooling methods.

By default, it monitors CPU temperature using available CPU digital temperature sensors and maintains CPU temperature under control, before HW takes aggressive correction action. If there is a skin temperature sensor in thermal sysfs, then it tries to keep skin temperature under 45C.


Code Source:

As each update of thermald-package will overwrite the service file we need to move this to


So that it will not stop working after thermald updates.

install needed:

sudo pacman -S --needed thermald
sudo cp /usr/lib/systemd/system/thermald.service /etc/systemd/system/
sudo nano /etc/systemd/system/thermald.service

change the line:

ExecStart=/usr/bin/thermald --no-daemon --dbus-enable

like so:

ExecStart=/usr/bin/thermald --no-daemon --dbus-enable --ignore-cpuid-check

save the file by pressing [Ctrl+Alt+x] and confirm by typing “y

Last two things to do is enable the systemd service for Thermald to automatic start it on every boot of your system:

sudo systemctl enable thermald

and now please reboot system to make it start working.

It will need some time to measure and then really control to hold the temperature down, so be patient and wait to see the effect for some time ( may need one or two hours before working for the first time)

Alternative to thermald (auto-cpufreq)

Not available on official Repository, so it needs to be built from AUR:

yay -S auto-cpufreq-git

On how to enable and use this read the documentation on GitHub:


is a set of userspace utilities designed to assist with CPU frequency scaling.

full list of available modules:

sudo ls /usr/lib/modules/$(uname -r)/kernel/drivers/cpufreq/

Load the appropriate module (see Kernel modules for details). Once the appropriate cpufreq driver is loaded, detailed information about the CPU(s) can be displayed by running

sudo cpupower frequency-info

Scaling governors

Governors (see table below) are power schemes for the CPU. Only one may be active at a time. For details, see the kernel documentation in the kernel source.

NOTE: If you want to use this method, make sure you disable CPU-scaling from TLP (as this is enabled by default on EndeavourOS and using both together for the same mechanism will cause failure)

performanceRun the CPU at the maximum frequency.
powersaveRun the CPU at the minimum frequency.
userspaceRun the CPU at user specified frequencies.
ondemandScales the frequency dynamically according to current load. Jumps to the highest frequency and then possibly back off as the idle time increases.
conservativeScales the frequency dynamically according to current load. Scales the frequency more gradually than ondemand.
Scheduler-driven CPU frequency selection [1][2].

set one for all cores:
(replace governor with e.g. what you want ondemand p.e…)

sudo echo *governor* > /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

see live output:

watch grep \"cpu MHz\" /proc/cpuinfo

making one permanent:

sudo systemctl enable cpupower.service

and configure it to use what you want per default:

inside /etc/default/cpupower

# Define CPUs governor
# valid governors: ondemand, performance, powersave, conservative, userspace.

# Limit frequency range
# Valid suffixes: Hz, kHz (default), MHz, GHz, THz

# Specific frequency to be set.
# Requires userspace governor to be available.
# Do not set governor field if you use this one.

# Utilizes cores in one processor package/socket first before processes are 
# scheduled to other processor packages/sockets.
# See man (1) CPUPOWER-SET for additional details.

# Utilizes thread siblings of one processor core first before processes are
# scheduled to other cores. See man (1) CPUPOWER-SET for additional details.

#  Sets a register on supported Intel processore which allows software to convey
# its policy for the relative importance of performance versus energy savings to
# the  processor. See man (1) CPUPOWER-SET for additional details.

# vim:set ts=2 sw=2 ft=sh et:


TLP is a feature-rich command-line utility for Linux, saving laptop battery power without the need to delve deeper into technical details.

TLP’s default settings are already optimized for battery life and implement Powertop’s recommendations out of the box. So you may just install and forget it.

Nevertheless, TLP is highly customizable to fulfill your specific requirements.

for more info:



  • On default EndeavourOS install TLP is installed and enabled already for you.

But read here on may needed optional dependencies to make stuff working on your hardware:

Install TLP from the official repositories – pay attention to its optional dependencies that may help provide additional power saving:

  • acpi_call: ThinkPad battery functions, Sandy Bridge and newer
  • ethtool: Disable Wake On Lan
  • lsb-release: Display LSB release version in tlp-stat
  • smartmontools: Display S.M.A.R.T. data in tlp-stat
  • tp_smapi: ThinkPad battery functions
  • x86_energy_perf_policy: Set energy versus performance policy on x86 processors

sudo pacman -S tlp

To complete TLP’s install, you must enable the systemd service tlp.service:

sudo systemctl enable tlp.service

You should also mask the systemd service systemd-rfkill.service and socket systemd-rfkill.socket to avoid conflicts and assure proper operation of TLP’s radio device switching options.

sudo systemctl mask systemd-rfkill.service systemd-rfkill.socket

reboot your machine and you are fine.

TLP configuration tool (tlpui)

The Python scripts in this project generate a GTK-UI to change TLP configuration files easily. It has the aim to protect users from setting bad configuration and to deliver a basic overview of all the valid configuration values.

The TLP configuration app is not available as a package so you will need to build from AUR:

yay -S tlpui-git

Connect with us:

Tools to lower power consumption and device cooling

  • by