Skip to content

Instantly share code, notes, and snippets.

@pauloromeira
Last active April 24, 2024 19:32
Show Gist options
  • Star 60 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
  • Save pauloromeira/787c75d83777098453f5c2ed7eafa42a to your computer and use it in GitHub Desktop.
Save pauloromeira/787c75d83777098453f5c2ed7eafa42a to your computer and use it in GitHub Desktop.
My TLP config file (/etc/default/tlp) for ThinkPad
# ------------------------------------------------------------------------------
# tlp - Parameters for power saving
# See full explanation: http://linrunner.de/en/tlp/docs/tlp-configuration.html
# dir: /etc/default/tlp
# Hint: some features are disabled by default, remove the leading # to enable
# them.
# Set to 0 to disable, 1 to enable TLP.
TLP_ENABLE=1
# Operation mode when no power supply can be detected: AC, BAT
# Concerns some desktop and embedded hardware only.
TLP_DEFAULT_MODE=AC
# Operation mode select: 0=depend on power source, 1=always use TLP_DEFAULT_MODE
# Hint: use in conjunction with TLP_DEFAULT_MODE=BAT for BAT settings on AC
TLP_PERSISTENT_DEFAULT=0
# Seconds laptop mode has to wait after the disk goes idle before doing a sync.
# Non-zero value enables, zero disables laptop mode.
DISK_IDLE_SECS_ON_AC=0
DISK_IDLE_SECS_ON_BAT=2
# Dirty page values (timeouts in secs).
MAX_LOST_WORK_SECS_ON_AC=15
MAX_LOST_WORK_SECS_ON_BAT=60
# Hint: CPU parameters below are disabled by default, remove the leading #
# to enable them, otherwise kernel default values are used.
# Select a CPU frequency scaling governor.
# Intel Core i processor with intel_pstate driver:
# powersave(*), performance
# Older hardware with acpi-cpufreq driver:
# ondemand(*), powersave, performance, conservative, schedutil
# (*) is recommended.
# Hint: use tlp-stat -p to show the active driver and available governors.
# Important:
# You *must* disable your distribution's governor settings or conflicts will
# occur. ondemand is sufficient for *almost all* workloads, you should know
# what you're doing!
#CPU_SCALING_GOVERNOR_ON_AC=powersave
#CPU_SCALING_GOVERNOR_ON_BAT=powersave
# Set the min/max frequency available for the scaling governor.
# Possible values strongly depend on your CPU. For available frequencies see
# the output of tlp-stat -p.
#CPU_SCALING_MIN_FREQ_ON_AC=0
#CPU_SCALING_MAX_FREQ_ON_AC=0
#CPU_SCALING_MIN_FREQ_ON_BAT=0
#CPU_SCALING_MAX_FREQ_ON_BAT=0
# Set energy performance hints (HWP) for Intel P-state governor:
# default, performance, balance_performance, balance_power, power
# Values are given in order of increasing power saving.
# Note: Intel Skylake or newer CPU and Kernel >= 4.10 required.
CPU_HWP_ON_AC=balance_performance
CPU_HWP_ON_BAT=balance_power
# Set Intel P-state performance: 0..100 (%)
# Limit the max/min P-state to control the power dissipation of the CPU.
# Values are stated as a percentage of the available performance.
# Requires an Intel Core i processor with intel_pstate driver.
#CPU_MIN_PERF_ON_AC=0
#CPU_MAX_PERF_ON_AC=100
#CPU_MIN_PERF_ON_BAT=0
#CPU_MAX_PERF_ON_BAT=30
# Set the CPU "turbo boost" feature: 0=disable, 1=allow
# Requires an Intel Core i processor.
# Important:
# - This may conflict with your distribution's governor settings
# - A value of 1 does *not* activate boosting, it just allows it
#CPU_BOOST_ON_AC=1
#CPU_BOOST_ON_BAT=0
# Minimize number of used CPU cores/hyper-threads under light load conditions
SCHED_POWERSAVE_ON_AC=0
SCHED_POWERSAVE_ON_BAT=1
# Kernel NMI Watchdog:
# 0=disable (default, saves power), 1=enable (for kernel debugging only)
NMI_WATCHDOG=0
# Change CPU voltages aka "undervolting" - Kernel with PHC patch required
# Frequency voltage pairs are written to:
# /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
# CAUTION: only use this, if you thoroughly understand what you are doing!
#PHC_CONTROLS="F:V F:V F:V F:V"
# Set CPU performance versus energy savings policy:
# performance, normal, powersave
# Requires kernel module msr and x86_energy_perf_policy from linux-tools
ENERGY_PERF_POLICY_ON_AC=performance
ENERGY_PERF_POLICY_ON_BAT=powersave
# Hard disk devices; separate multiple devices with spaces (default: sda).
# Devices can be specified by disk ID also (lookup with: tlp diskid).
DISK_DEVICES="sda sdb"
# Hard disk advanced power management level: 1..254, 255 (max saving, min, off)
# Levels 1..127 may spin down the disk; 255 allowable on most drives.
# Separate values for multiple disks with spaces. Use the special value 'keep'
# to keep the hardware default for the particular disk.
DISK_APM_LEVEL_ON_AC="254 254"
DISK_APM_LEVEL_ON_BAT="128 128"
# Hard disk spin down timeout:
# 0: spin down disabled
# 1..240: timeouts from 5s to 20min (in units of 5s)
# 241..251: timeouts from 30min to 5.5 hours (in units of 30min)
# See 'man hdparm' for details.
# Separate values for multiple disks with spaces. Use the special value 'keep'
# to keep the hardware default for the particular disk.
#DISK_SPINDOWN_TIMEOUT_ON_AC="0 0"
#DISK_SPINDOWN_TIMEOUT_ON_BAT="0 0"
# Select IO scheduler for the disk devices: cfq, deadline, noop (Default: cfq);
# Separate values for multiple disks with spaces. Use the special value 'keep'
# to keep the kernel default scheduler for the particular disk.
#DISK_IOSCHED="cfq cfq"
# SATA aggressive link power management (ALPM):
# min_power, medium_power, max_performance
SATA_LINKPWR_ON_AC=max_performance
SATA_LINKPWR_ON_BAT=min_power
# Exclude SATA host devices from link power management.
# Separate multiple hosts with spaces.
#SATA_LINKPWR_BLACKLIST="host1"
# Runtime Power Management for AHCI controllers and disks:
# on=disable, auto=enable
# EXPERIMENTAL ** WARNING: auto will most likely cause system lockups/data loss
#AHCI_RUNTIME_PM_ON_AC=on
#AHCI_RUNTIME_PM_ON_BAT=on
# Seconds of inactivity before disk is suspended
AHCI_RUNTIME_PM_TIMEOUT=15
# PCI Express Active State Power Management (PCIe ASPM):
# default, performance, powersave
PCIE_ASPM_ON_AC=performance
PCIE_ASPM_ON_BAT=powersave
# Radeon graphics clock speed (profile method): low, mid, high, auto, default;
# auto = mid on BAT, high on AC; default = use hardware defaults.
# (Kernel >= 2.6.35 only, open-source radeon driver explicitly)
RADEON_POWER_PROFILE_ON_AC=high
RADEON_POWER_PROFILE_ON_BAT=low
# Radeon dynamic power management method (DPM): battery, performance
# (Kernel >= 3.11 only, requires boot option radeon.dpm=1)
RADEON_DPM_STATE_ON_AC=performance
RADEON_DPM_STATE_ON_BAT=battery
# Radeon DPM performance level: auto, low, high; auto is recommended.
RADEON_DPM_PERF_LEVEL_ON_AC=auto
RADEON_DPM_PERF_LEVEL_ON_BAT=auto
# WiFi power saving mode: on=enable, off=disable; not supported by all adapters.
WIFI_PWR_ON_AC=off
WIFI_PWR_ON_BAT=on
# Disable wake on LAN: Y/N
WOL_DISABLE=Y
# Enable audio power saving for Intel HDA, AC97 devices (timeout in secs).
# A value of 0 disables, >=1 enables power saving.
SOUND_POWER_SAVE_ON_AC=0
SOUND_POWER_SAVE_ON_BAT=1
# Disable controller too (HDA only): Y/N
SOUND_POWER_SAVE_CONTROLLER=Y
# Power off optical drive in UltraBay/MediaBay: 0=disable, 1=enable.
# Drive can be powered on again by releasing (and reinserting) the eject lever
# or by pressing the disc eject button on newer models.
# Note: an UltraBay/MediaBay hard disk is never powered off.
BAY_POWEROFF_ON_AC=0
BAY_POWEROFF_ON_BAT=0
# Optical drive device to power off (default sr0).
BAY_DEVICE="sr0"
# Runtime Power Management for PCI(e) bus devices: on=disable, auto=enable
RUNTIME_PM_ON_AC=on
RUNTIME_PM_ON_BAT=auto
# Exclude PCI(e) device adresses the following list from Runtime PM
# (separate with spaces). Use lspci to get the adresses (1st column).
#RUNTIME_PM_BLACKLIST="bb:dd.f 11:22.3 44:55.6"
# Exclude PCI(e) devices assigned to the listed drivers from Runtime PM.
# Default when unconfigured is "amdgpu nouveau nvidia radeon" which
# prevents accidential power-on of dGPU in hybrid graphics setups.
# Use "" to disable the feature completely.
# Separate multiple drivers with spaces.
#RUNTIME_PM_DRIVER_BLACKLIST="amdgpu nouveau nvidia radeon"
# Set to 0 to disable, 1 to enable USB autosuspend feature.
USB_AUTOSUSPEND=1
# Exclude listed devices from USB autosuspend (separate with spaces).
# Use lsusb to get the ids.
# Note: input devices (usbhid) are excluded automatically
#USB_BLACKLIST="1111:2222 3333:4444"
# Bluetooth devices are excluded from USB autosuspend:
# 0=do not exclude, 1=exclude
USB_BLACKLIST_BTUSB=0
# Phone devices are excluded from USB autosuspend:
# 0=do not exclude, 1=exclude (enable charging)
USB_BLACKLIST_PHONE=0
# WWAN devices are excluded from USB autosuspend:
# 0=do not exclude, 1=exclude
USB_BLACKLIST_WWAN=1
# Include listed devices into USB autosuspend even if already excluded
# by the blacklists above (separate with spaces).
# Use lsusb to get the ids.
#USB_WHITELIST="1111:2222 3333:4444"
# Set to 1 to disable autosuspend before shutdown, 0 to do nothing
# (workaround for USB devices that cause shutdown problems).
#USB_AUTOSUSPEND_DISABLE_ON_SHUTDOWN=1
# Restore radio device state (Bluetooth, WiFi, WWAN) from previous shutdown
# on system startup: 0=disable, 1=enable.
# Hint: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below
# are ignored when this is enabled!
RESTORE_DEVICE_STATE_ON_STARTUP=0
# Radio devices to disable on startup: bluetooth, wifi, wwan.
# Separate multiple devices with spaces.
#DEVICES_TO_DISABLE_ON_STARTUP="bluetooth wifi wwan"
# Radio devices to enable on startup: bluetooth, wifi, wwan.
# Separate multiple devices with spaces.
#DEVICES_TO_ENABLE_ON_STARTUP="wifi"
# Radio devices to disable on shutdown: bluetooth, wifi, wwan
# (workaround for devices that are blocking shutdown).
#DEVICES_TO_DISABLE_ON_SHUTDOWN="bluetooth wifi wwan"
# Radio devices to enable on shutdown: bluetooth, wifi, wwan
# (to prevent other operating systems from missing radios).
#DEVICES_TO_ENABLE_ON_SHUTDOWN="wwan"
# Radio devices to enable on AC: bluetooth, wifi, wwan
#DEVICES_TO_ENABLE_ON_AC="bluetooth wifi wwan"
# Radio devices to disable on battery: bluetooth, wifi, wwan
#DEVICES_TO_DISABLE_ON_BAT="bluetooth wifi wwan"
# Radio devices to disable on battery when not in use (not connected):
# bluetooth, wifi, wwan
#DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE="bluetooth wifi wwan"
# Battery charge thresholds (ThinkPad only, tp-smapi or acpi-call kernel module
# required). Charging starts when the remaining capacity falls below the
# START_CHARGE_THRESH value and stops when exceeding the STOP_CHARGE_THRESH value.
# Main / Internal battery (values in %)
START_CHARGE_THRESH_BAT0=75
STOP_CHARGE_THRESH_BAT0=85
# Ultrabay / Slice / Replaceable battery (values in %)
#START_CHARGE_THRESH_BAT1=75
#STOP_CHARGE_THRESH_BAT1=80
# Restore charge thresholds when AC is unplugged: 0=disable, 1=enable
#RESTORE_THRESHOLDS_ON_BAT=1
# ------------------------------------------------------------------------------
# tlp-rdw - Parameters for the radio device wizard
# Possible devices: bluetooth, wifi, wwan
# Hints:
# - Parameters are disabled by default, remove the leading # to enable them.
# - Separate multiple radio devices with spaces.
# Radio devices to disable on connect.
DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan"
DEVICES_TO_DISABLE_ON_WIFI_CONNECT="wwan"
DEVICES_TO_DISABLE_ON_WWAN_CONNECT="wifi"
# Radio devices to enable on disconnect.
DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi wwan"
DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT=""
DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT=""
# Radio devices to enable/disable when docked.
#DEVICES_TO_ENABLE_ON_DOCK=""
#DEVICES_TO_DISABLE_ON_DOCK=""
# Radio devices to enable/disable when undocked.
#DEVICES_TO_ENABLE_ON_UNDOCK="wifi"
#DEVICES_TO_DISABLE_ON_UNDOCK=""
@e-m-m-a
Copy link

e-m-m-a commented Jun 16, 2018

This is great. I fiddled with mine and ruined things - copied this instead and I'm at 3.88w on powertop. Thanks!

@ChristianJacobsen
Copy link

This is great! I managed to get mine down to around 6! How poster above managed to get to 3.88 I don't know, but I'm happy where I am currently!

@e-m-m-a
Copy link

e-m-m-a commented Jul 6, 2018

I'm using a thinkpad t460 and it just works...

@nikhil7737
Copy link

I am using Ubuntu 18.04. I am facing a LAN connection problem. The problem is when I start my laptop it will connect to the LAN but once I disconnect it it won't reconnect. Then I will have to put the laptop in sleep mode and then it would reconnect. Every time I reinstalled Ubuntu and the problem didn't showed up for the first 3-4 days and then again the same problem happens. But this time I think I have figured out the reason behind this. there was no issue till today when I installed tlp and started it. Only after tlp it showed the same problem again. I googled and got to know that tlp activation changes some settings in order to save battery. Is it possible that tlp is the culprit. If so is there any way I can disable a particular setting so that tlp keeps working and I get rid of the problem. And yes I have my laptop dual booted with windows 10 and there is no such issue in windows 10. So certainly it is specific to Ubuntu. I think I have to change some settings in the tlp configuration file. Can anyone help

@pauloromeira
Copy link
Author

pauloromeira commented Nov 15, 2018

Hello, guys! I'm glad that my gist somehow helped you. I've uploaded here just for backup. Now I have this config file included in my dotfiles: https://github.com/pauloromeira/dotfiles/blob/master/ubuntu/config/tlp

@nikcodes, You can try to tweak some settings from line 284 to the end of the file (in this gist). Or just comment all (from 284 to the end) to see if it solves your problem.

@jorschach-g
Copy link

It is just beautiful! Love how much the thing works! I am now feeling super productive with this tool. Thank you so much!

@nsfrnm
Copy link

nsfrnm commented Jan 19, 2020

Thanks. Works great on a ThinkPad E480.

@srbhp
Copy link

srbhp commented Jan 25, 2020

Thanks.

@woopstar
Copy link

I'm at 3.88w on powertop

How do you even get it that low. On my newly installed ThinkPad X1 gen 7, im at around 10-12W running Plasma 5

@nsfrnm
Copy link

nsfrnm commented Feb 21, 2020

I'm at 3.88w on powertop

How do you even get it that low. On my newly installed ThinkPad X1 gen 7, im at around 10-12W running Plasma 5

Is that without any open Applications? That's a lot. My Thinkpad with all my daily work tools (Office 365 Web-Applications, MS Teams, Thunderbird email and a bunch of open browser windows, external Display only) uses between 4-8 W and average is around 6 W on Wifi. Usually get 8-9 hours easily with one battery charge.

The battery reports a discharge rate of 5.47 W
The power consumed was 129 J
The estimated remaining time is 9 hours, 50 minutes

Did you install "tpacpi-bat" and "tp-smapi" for Thinkpad battery features?

@woopstar
Copy link

woopstar commented Feb 21, 2020

I'm at 3.88w on powertop

How do you even get it that low. On my newly installed ThinkPad X1 gen 7, im at around 10-12W running Plasma 5

Is that without any open Applications? That's a lot. My Thinkpad with all my daily work tools (Office 365 Web-Applications, MS Teams, Thunderbird email and a bunch of open browser windows, external Display only) uses between 4-8 W and average is around 6 W on Wifi. Usually get 8-9 hours easily with one battery charge.

The battery reports a discharge rate of 5.47 W
The power consumed was 129 J
The estimated remaining time is 9 hours, 50 minutes

Did you install "tpacpi-bat" and "tp-smapi" for Thinkpad battery features?

That is when I just run Plasma 5 and services in background. No open applications.

Right now I have an external monitor, keyboard and etc. connected to the laptop. This is the output from powertop:

The battery reports a discharge rate of 45.9 W
The power consumed was 0.00 J
The estimated remaining time is 0 hours, 8 minutes

Summary: 2677,7 wakeups/second,  0,0 GPU ops/seconds, 0,0 VFS ops/sec and 58,7% CPU use

Power est.              Usage       Events/s    Category       Description
  3.49 W    178,8 ms/s     850,1        Process        [PID 14790] /usr/bin/kwin_x11 -session 10147a38fd2000158209997100000019830004_1582128196_438021
  2.18 W     10,5 ms/s     557,4        Timer          tick_sched_timer
  619 mW      8,8 ms/s     156,5        Process        [PID 2358908] /usr/lib/thunderbird/thunderbird
  512 mW     29,6 ms/s     123,6        Process        [PID 2360167] /usr/bin/konsole
  368 mW      2,1 ms/s      93,7        Process        [PID 11] [rcu_preempt]
  351 mW     75,8 ms/s      70,5        Process        [PID 14645] /usr/lib/Xorg -nolisten tcp -dpi 140 -auth /var/run/sddm/{4b243445-b67d-4268-9404-4fdb39e590f2} -background none
  303 mW      5,2 ms/s      76,3        Interrupt      [0] HI_SOFTIRQ
  291 mW    102,7 ms/s      48,3        Process        [PID 2358865] /usr/lib/thunderbird/thunderbird
  234 mW     15,5 ms/s      56,0        Process        [PID 2360378] powertop
  206 mW     17,9 ms/s      48,3        Process        [PID 2359024] /usr/lib/chromium/chromium --type=renderer --disable-webrtc-apm-in-audio-service --field-trial-handle=12480130
  181 mW      3,8 ms/s      45,4        Interrupt      [134] i915
  177 mW     22,3 ms/s      39,6        Process        [PID 2358909] /usr/lib/thunderbird/thunderbird
  175 mW      9,6 ms/s      42,5        Interrupt      [7] sched(softirq)
  152 mW      1,5 ms/s      38,6        Process        [PID 14816] /usr/bin/plasmashell
  146 mW      2,7 ms/s      36,7        Process        [PID 2358897] /usr/lib/thunderbird/thunderbird
  111 mW      1,3 ms/s      28,0        Process        [PID 14819] /usr/bin/latte-dock
 83.3 mW    436,7 µs/s      21,3        kWork          intel_atomic_cleanup_work
 82.9 mW     57,7 µs/s      21,3        kWork          intel_atomic_helper_free_state_
 82.3 mW      6,9 ms/s      19,3        kWork          __i915_globals_park
 79.1 mW      0,0 µs/s      20,3        kWork          intel_atomic_commit_work
 78.5 mW      3,1 ms/s      19,3        Process        [PID 2345105] /usr/lib/chromium/chromium --ignore-gpu-blacklist --enable-gpu-rasterization --enable-native-gpu-memory-buffer
 75.0 mW     11,0 ms/s      16,4        Process        [PID 14796] /usr/bin/plasmashell
 72.1 mW    545,5 µs/s      18,4        Process        [PID 782] [xfsaild/dm-2]

I have not installed tpacpi-bat and tp-smapi, but acpi_calls. When I installed tpsmapi my laptop was unable to boot. From what I could read on arch wiki, i need acpi_calls for gen 7 (due to the newer cpu) and not tp-smapi ?

My current installed packages can be seen here: https://github.com/woopstar/.dotfiles/blob/master/archlinux/install.sh

@nsfrnm
Copy link

nsfrnm commented Feb 21, 2020

Your Kwin session already uses 3.5 W. And what is your CPU doing at 58% when nothing's running? My power estimates Top 3 with no apps running are under 100mW each. Don't want to blame KDE/Plasma but that is not really energy efficient.
tp-smapi is running fine on my 8th gen i5.

@gilsondev
Copy link

This config work fine with T480?

@nsfrnm
Copy link

nsfrnm commented Apr 17, 2020

According to previous comments it works fine on T460 and also my E480. Just give it a try - should work.

@UUUnicorn1
Copy link

Please, would this work on a 2011 Lenovo ThinkPad X1 1st generation ultrabook? Thank you very much in advance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment