Radio Devices: Bluetooth, Wi-Fi, WWAN

Slow or unstable Wi-Fi on battery power

Cause: kernel driver does not implement power saving properly.

Solution: disable power saving on battery in configuration

WIFI_PWR_ON_BAT=off

Apply with tlp start.

Wi-Fi power saving is activated despite being disabled in TLP’s configuration

Cause: conflict with NetworkManager.

Solution: remove the file /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf.

Bluetooth devices hang, disconnect or do not pair

Cause: most internal laptop bluetooth devices and all external bluetooth dongles are USB devices. Some do not implement autosuspend mode properly, giving trouble to connected devices or preventing discovery or pairing.

Solution: configure

USB_EXCLUDE_BTUSB=1

Version 1.3.1 and lower use USB_BLACKLIST_BTUSB instead

Apply with tlp usb.

USB_EXCLUDE_BTUSB=1 does not disable autosuspend

Refer to USB_EXCLUDE_BTUSB=1 does not disable autosuspend.

Bluetooth is not disabled upon system startup

Probable cause: your desktop environment’s bluetooth applet – or some other installed software – re-enables the bluetooth device after TLP disabled it.

Solution: disable the relevant applet’s setting or disable/remove the causing applet. For XFCE/blueman see Disable Bluetooth Auto Power-on in Blueman.

Radio states are not as expected after boot or a configured event

Cause 1: conflict with other settings, for instance DEVICES_TO_DISABLE_ON_STARTUP ff.

Solution: don’t use RESTORE_DEVICE_STATE_ON_STARTUP=1 and DEVICES_TO_DISABLE_ON_STARTUP ff. simultaneously.


Cause 2: other conflicting settings from Radio Device Switching and/or Radio Device Wizard.

Solution: check if you configured contradictory instructions, for example

DEVICES_TO_DISABLE_ON_BAT="wifi"
DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi"

may not turn on Wi-Fi when undocking and changing to battery power.


Cause 3: systemd implements its radio state restore scheme.

Symptoms: tlp-stat -s shows

Warning: systemd-rfkill.service is not masked, radio device switching may not work as configured.
>>> Invoke 'systemctl enable systemd-rfkill.service to correct this!

and/or

Warning: systemd-rfkill.socket is not masked, radio device switching may not work as configured.
>>> Invoke 'systemctl enable systemd-rfkill.socket to correct this!

systemd-rfkill.service/.socket are part of systemd. Their purpose is to restore the state of the radio devices from the last shutdown at system startup. In case you enabled settings from Radio Device Switching or Radio Device Wizard this may lead to a conflict that produces unpredictable results.

Solution: use either RESTORE_DEVICE_STATE_ON_STARTUP=1 and mask systemd-rfkill.service and systemd-rfkill.socket or use systemd’s approach but not both.