TLP

From ArchWiki

From the project page:

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 fulfil your specific requirements.

TLP intentionally excludes some settings from the project, notably Fan speed control and Backlight.

Installation

Install the tlp package. Installing the optional dependencies may help provide additional power saving.

Enable/start tlp.service.

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

Radio Device Wizard (tlp-rdw)

When using the Radio Device Wizard (tlp-rdw), it is required to use NetworkManager and enabling NetworkManager-dispatcher.service.

See TLP settings for details.

Front end

  • tlpuiAUR is a GTK user interface for TLP written in Python.
  • slimbookbatteryAUR is a different GTK interface that works with additional drivers like AMD and NVIDIA.

ThinkPads only

Some additional packages might be required to support advanced battery functions (i.e. charge thresholds and recalibration), as well as specific status output of tlp-stat.

Controlling the charge thresholds using D-Bus without root privileges is possible using threshyAUR and its example Qt user interface threshy-guiAUR.

The following summarizes the upstream installation instructions for Arch Linux and TLP FAQ section "Which external kernel module do I need for my ThinkPad?".

SandyBridge and newer (2011 onwards)

As of linux 5.17 and TLP 1.5, no external kernel modules are required for advanced battery functions for ThinkPads from model year 2011 onwards (e.g. T420/X220 and newer), therefore installing acpi_call is not necessary anymore.

If using linux-lts, install acpi_call-lts. If not running kernels from official repositories, install acpi_call-dkms.

Before SandyBridge (until 2010)

For ThinkPads before model year 2011, install tp_smapi or tp_smapi-lts, depending on which kernel version you are using.

Configuration

The configuration file is located at /etc/tlp.conf and provides a largely optimized power saving by default. For a full explanation of options see: TLP settings.

USB autosuspend

When starting TLP with the default configuration, some USB devices such as audio DACs will be powered down when running on battery due to TLP's autosuspend feature. Some devices such as keyboards and scanners are blacklisted from autosuspend by default.

You may simply want to disable USB autosuspend entirely with the following setting:

/etc/tlp.conf
# Do not suspend USB devices
USB_AUTOSUSPEND=0

Or blacklist specific devices from being auto-suspended. See the TLP documentation on USB devices for details.

Force battery (BAT) configuration

When no power supply can be detected, the setting for AC will be used on devices like desktops and embedded hardware.

You may want to force the battery (BAT) settings when using TLP on these devices to enable more power saving:

/etc/tlp.conf
# Operation mode when no power supply can be detected: AC, BAT.
TLP_DEFAULT_MODE=BAT

# Operation mode select: 0=depend on power source, 1=always use TLP_DEFAULT_MODE
TLP_PERSISTENT_DEFAULT=1

Bumblebee with NVIDIA driver

If you are running Bumblebee with NVIDIA driver, you need to disable power management for the GPU in TLP in order to make Bumblebee control the power of the GPU.

Depending on the driver(s) that you are using, blacklist one or more of them, preventing TLP from managing their power state:

/etc/tlp.conf
RUNTIME_PM_DRIVER_DENYLIST="nouveau nvidia"

PCI(e) runtime power management on AC

Enabling runtime power management for PCI(e) bus devices while on AC may improve power saving on some laptops. This is enabled by default on battery, but not on AC. To enable on AC, set:

/etc/tlp.conf
RUNTIME_PM_ON_AC=auto

Command line

TLP provides several command line tools. See TLP commands.

Troubleshooting

For debugging you can display information about the currently used Mode(AC/BAT) and applied configurations:

# tlp-stat

See also the upstream troubleshooting guide.

hci0: link tx timeout

If your bluetooth headphones suddenly stop working and you see this error from dmesg, it may be caused by TLP suspending your device. Add device ID to USB_BLACKLIST in /etc/tlp.conf:

# Disable bluetooth autosuspend
USB_DENYLIST="8087:0aaa"

Get the device ID for your bluetooth device from lsusb -v. Restart TLP and the bluetooth service.

See also