Optimise battery runtime with TLP

Basic to intermediate difficulty - Only suitable for you if you feel comfortable:

  • using the command line

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

Installation

You can install TLP from your package manager, such as KDE Plasma's Discover store. Alternatively, you can use apt in the command line. See my personal notes, below. TLP has excellent documentation, here: https://linrunner.de/tlp/

Graphical user interface

If you are a beginning user, I recommend that you install TLP-UI, from your package manager or from FlatHub For TLP-UI documentation, see TLP-UI on GitHub

TLP is not compatible with some other power management tools. For example, when installing TLP on Ubuntu, you may be prompted to remove or disable power-profiles-daemon.

Personal notes and command line

Note: TLP on the Ubuntu repo is slightly outdated.

Installing TLP with apt

sudo apt update
sudo apt install tlp tlp-rdw acpi-call-dkms

tlp-rdw: improves radio/Wi-Fi/WWAN power management.
acpi-call-dkms: allows extra CPU/Intel GPU power features.

Enable and start TLP
sudo systemctl enable tlp --now

Verify it’s running
tlp-stat -s

You should see something like:
TLP power save = enabled

Activate configuration changes from the command line

Steps to apply:

  • Open TLP config: sudo nano /etc/tlp.conf
  • Replace contents with the above.
  • Save (Ctrl+O → Enter) and exit (Ctrl+X).
  • Apply changes: sudo tlp start
  • Check status:
tlp-stat -s
tlp-stat -b  # optional, battery info

TLP configuration for agressive powersave

The following TLP configuration is from my Lenovo Thinkpad X1 Carbon Gen9.

This aims to:

  • Maximize performance when connected to AC power;
  • Maximize battery runtime by aggressively sacrificing performance when on battery.
# =======================
# /etc/tlp.conf
# X1 Carbon Gen9 tuned for max battery / full AC performance
# =======================

# -----------------------
# Battery (maximum runtime)
# -----------------------
CPU_SCALING_GOVERNOR_ON_BAT=powersave
CPU_ENERGY_PERF_POLICY_ON_BAT=power
CPU_MIN_PERF_ON_BAT=0
CPU_MAX_PERF_ON_BAT=25

PLATFORM_PROFILE_ON_BAT=low-power
NMI_WATCHDOG_ON_BAT=0

WIFI_PWR_ON_BAT=on
DISK_APM_LEVEL_ON_BAT="64 64"
DISK_IDLE_SECS_ON_BAT=60

# Intel GPU power saving
INTEL_GPU_RUNTIME_PM_ON_BAT=auto

# PCIe / device runtime PM
RUNTIME_PM_ON_BAT=auto
PCIE_ASPM_ON_BAT=powersave

# USB autosuspend
USB_AUTOSUSPEND_ON_BAT=on

DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE=nfc

# Optional battery charge thresholds - consciously marked out
# START_CHARGE_THRESH_BAT0=75
# STOP_CHARGE_THRESH_BAT0=95

# -----------------------
# AC (maximum performance)
# -----------------------
CPU_SCALING_GOVERNOR_ON_AC=performance
CPU_ENERGY_PERF_POLICY_ON_AC=performance
CPU_MIN_PERF_ON_AC=0
CPU_MAX_PERF_ON_AC=100

PLATFORM_PROFILE_ON_AC=performance
NMI_WATCHDOG_ON_AC=1

WIFI_PWR_ON_AC=off
DISK_APM_LEVEL_ON_AC="254 254"
DISK_IDLE_SECS_ON_AC=0

# Intel GPU
INTEL_GPU_RUNTIME_PM_ON_AC=off

# PCIe / device runtime PM
RUNTIME_PM_ON_AC=on
PCIE_ASPM_ON_AC=performance

# USB
USB_AUTOSUSPEND_ON_AC=off

# -----------------------
# General TLP settings
# -----------------------
TLP_ENABLE=1
SOUND_POWER_SAVE_ON_BAT=1
SOUND_POWER_SAVE_CONTROLLER=Y
USB_EXCLUDE_BTUSB=1

Provide feedback

Comment and discuss this article...