Laptop Mode Tools
Laptop Mode Tools is a laptop power saving package for Linux systems. It is the primary way to enable the Laptop Mode feature of the Linux kernel, which lets your hard drive spin down. In addition, it allows you to tweak a number of other power-related settings using a simple configuration file.
- 1 Installation
- 2 Configuration
- 2.1 Hard disks
- 2.2 CPU frequency
- 2.3 Device and bus
- 2.4 Display and graphics
- 2.5 Networking
- 2.6 Audio
- 3 Tips and tricks
- 4 Troubleshooting
- 5 See also
AUR.AUR can be installed from the
# systemctl enable laptop-mode.service
Configuration is handled through:
/etc/laptop-mode/laptop-mode.conf- primary configuration file
/etc/laptop-mode/conf.d/*- dozens of feature-specific "modules".
Each module can be explicitly enabled/disabled by changing the
CONTROL_* value in the individual settings file found in
ENABLE_AUTO_MODULES is set in
/etc/laptop-mode/laptop-mode.conf, LMT will automatically enable any modules where
CONTROL_* is set to
If you want to check which modules are enabled, disabled or auto, run:
$ grep -r '^\(CONTROL\|ENABLE\)_' /etc/laptop-mode/conf.d
battery-level-polling.confare an exception and use an
ENABLE_*variable instead of
For this you need to have hdparm and/or sdparm installed. See Hdparm.
Spinning down the hard drive through
hdparm -S values saves power and makes everything a lot more quiet. By using the readahead function you can allow the drives to spin down more often even though you are using the computer. LMT can also establish
hdparm -B values. The maximum hard drive power saving is 1 and the minimum is 254. For example, set this value to 254 when on AC and 20 when on battery. If you find that normal activity hangs often while waiting for the disk to spin up, it might be a good idea to set it to a higher value (e.g. 128) which will make it spin down less often.
hdparm -S and
hdparm -B values are configured in
CONTROL_MOUNT_OPTIONS variable (default on), laptop-mode-tools automatically remounts your partitions, appending
commit=600,noatime in the mount options. This keeps the journaling program jbd2 from accessing your disk every few seconds, instead the disk journal gets updated every 10 minutes.
atimemount option. Use
CONTROL_MOUNT_OPTIONSshould not be turned on with nilfs2 partitions. Refer to this thread on the forum: https://bbs.archlinux.org/viewtopic.php?id=134656
Solid state drives
For this you need to have a CPU frequency driver installed. See CPU Frequency Scaling.
# cpufreq.conf # ThinkPad T40/T42/T60 Example # CONTROL_CPU_FREQUENCY=1 BATT_CPU_MAXFREQ=fastest BATT_CPU_MINFREQ=slowest BATT_CPU_GOVERNOR=ondemand BATT_CPU_IGNORE_NICE_LOAD=1 LM_AC_CPU_MAXFREQ=fastest LM_AC_CPU_MINFREQ=slowest LM_AC_CPU_GOVERNOR=ondemand LM_AC_CPU_IGNORE_NICE_LOAD=1 NOLM_AC_CPU_MAXFREQ=fastest NOLM_AC_CPU_MINFREQ=slowest NOLM_AC_CPU_GOVERNOR=ondemand NOLM_AC_CPU_IGNORE_NICE_LOAD=0 CONTROL_CPU_THROTTLING=0
Device and bus
- Enable the Intel SATA AHCI controller Aggressive Link Power Management feature to set the disk link into a very low power mode in the absence of disk IO.
# intel-sata-powermgmt.conf # ThinkPad T40/T42/T60 Example # DEBUG=0 CONTROL_INTEL_SATA_POWER=1 BATT_ACTIVATE_SATA_POWER=1 LM_AC_ACTIVATE_SATA_POWER=1 NOLM_AC_ACTIVATE_SATA_POWER=0
/etc/laptop-mode/conf.d/intel-sata-powermgmt.conffile for additional configuration details.
# usb-autosuspend.conf # ThinkPad T40/T42/T60 Example # DEBUG=0 CONTROL_USB_AUTOSUSPEND=1 BATT_SUSPEND_USB=1 LM_AC_SUSPEND_USB=1 NOLM_AC_SUSPEND_USB=0 AUTOSUSPEND_TIMEOUT=2
/etc/laptop-mode/conf.d/usb-autosuspend.conffile for additional configuration details. If you have an USB tool you always use (like an USB mouse), blacklisting them would stop them from suspending.
Display and graphics
- Available brightness values for certain laptops can be obtained by running following command:
$ cat /proc/acpi/video/VID/LCD/brightness
For ThinkPad T40/T42 notebooks, minimum and maximum brightness values can be obtained by running:
$ cat /sys/class/backlight/acpi_video0/brightness $ cat /sys/class/backlight/acpi_video0/max_brightness
# lcd-brightness.conf # ThinkPad T40/T42 Example # DEBUG=0 CONTROL_BRIGHTNESS=1 BATT_BRIGHTNESS_COMMAND="echo 0" LM_AC_BRIGHTNESS_COMMAND="echo 7" NOLM_AC_BRIGHTNESS_COMMAND="echo 7" BRIGHTNESS_OUTPUT="/sys/class/backlight/thinkpad_screen/brightness"
- For ThinkPad T60 notebooks, minimum and maximum brightness values can be obtained by running:
$ cat /sys/class/backlight/thinkpad_screen/max_brightness $ cat /sys/class/backlight/thinkpad_screen/brightness
# lcd-brightness.conf # ThinkPad T60 Example # DEBUG=0 CONTROL_BRIGHTNESS=1 BATT_BRIGHTNESS_COMMAND="echo 0" LM_AC_BRIGHTNESS_COMMAND="echo 7" NOLM_AC_BRIGHTNESS_COMMAND="echo 7" BRIGHTNESS_OUTPUT="/sys/class/backlight/acpi_video0/brightness"
/etc/laptop-mode/conf.d/lcd-brightness.conffile for additional configuration details.
# terminal-blanking.conf # ThinkPad T40/T42/T60 Example # DEBUG=0 CONTROL_TERMINAL=1 TERMINALS="/dev/tty1" BATT_TERMINAL_BLANK_MINUTES=1 BATT_TERMINAL_POWERDOWN_MINUTES=2 LM_AC_TERMINAL_BLANK_MINUTES=10 LM_AC_TERMINAL_POWERDOWN_MINUTES=10 NOLM_AC_TERMINAL_BLANK_MINUTES=10 NOLM_AC_TERMINAL_POWERDOWN_MINUTES=10
/etc/laptop-mode/conf.d/terminal-blanking.conffile for additional configuration details.
# ethernet.conf # ThinkPad T40/T42/T60 Example # DEBUG=0 CONTROL_ETHERNET=1 LM_AC_THROTTLE_ETHERNET=0 NOLM_AC_THROTTLE_ETHERNET=0 DISABLE_WAKEUP_ON_LAN=1 DISABLE_ETHERNET_ON_BATTERY=1 ETHERNET_DEVICES="eth0"
Wireless interface power management settings are hardware-dependent, and thus a bit trickier to configure. Depending on the wireless chipset, the settings are managed in one of the following three files:
/etc/laptop-mode/conf.d/wireless-power.conffor a generic method of saving power (using "iwconfig wlan0 power on/off"). This applies to most chipsets (that is, anything but Intel chipsets listed below).
/etc/laptop-mode/conf.d/wireless-ipw-power.conffor Intel chipsets driven by the old ipw driver. This apply to IPW3945, IPW2200 and IPW2100. It currently (as of LMT 1.55-1) uses iwpriv for IPW3945, and a combination of iwconfig and iwpriv settings for IPW2100 and IPW220. See
/usr/share/laptop-mode-tools/modules/wireless-ipw-powerfor details. (note that the ipw3945 is not used anymore, see below)
/etc/laptop-mode/conf.d/wireless-iwl-power.conffor Intel chipsets driven by modules iwl4965, iwl3945 and iwlagn (this latter supports chipsets 4965, 5100, 5300, 5350, 5150, 1000, and 6000)
Note that activating the three of them should not be much of a problem, since LMT detects the module used by the interface and acts accordingly.
The supported modules for each configuration file, indicated above, are taken directly from LMT. However, this seems to be a bit out-of-date, since the current 2.6.34 kernel does not provide the ipw3945 and iwl4965 modules anymore (3945 chipset uses iwl3945 instead, and 4965 uses the generic module iwlagn). This is only brought here for information, as this does not (or should not) affect the way LMT works.
There is a known issue with some chipsets running with the iwlagn module (namely, the 5300 chipset, and maybe others). On those chipsets, the following settings of
are ignored, because the
/sys/class/net/wlan*/device/power_level file does not exist. Instead, the standard method (with "iwconfig wlan0 power on/off") is automatically used.
# ac97-powersave.conf # ThinkPad T40/T42/T60 Example # DEBUG=0 CONTROL_AC97_POWER=1
# intel-hda-powersave.conf # ThinkPad T40/T42/T60 Example # DEBUG=0 CONTROL_INTEL_HDA_POWER=1 BATT_INTEL_HDA_POWERSAVE=1 LM_AC_INTEL_HDA_POWERSAVE=1 NOLM_AC_INTEL_HDA_POWERSAVE=0 INTEL_HDA_DEVICE_TIMEOUT=10 INTEL_HDA_DEVICE_CONTROLLER=0
Tips and tricks
Laptop-mode-tools is not picking up events
If that does not help, go through the laptop-mode configuration files and make sure that the service you want to enable is set to 1. Many services (including cpufreq control) are by default set to "auto", which may not enable them.
I have experienced issues with bluetooth not working if I boot up with battery, and I fixed it with disabling runtime-pm.
Laptop-mode-tools does not disable on AC
It is possible if you have both laptop-mode-tools and pm-utils installed, they can conflict with each other, causing laptop-mode-tools to not properly set its state.
This can be fixed by disabling scripts with duplicate functionality in pm-utils. The main cause of this particular issue is the laptop-mode script located in
/usr/lib/pm-utils/power.d. You can stop any unwanted hooks from running by creating a dummy file in
/etc/pm/power.d with the same name as the corresponding
/usr/lib/pm-utils/power.d hook. For example if you want to disable the laptop-mode hook:
# touch /etc/pm/power.d/laptop-mode
Its recommended to disable any hook that has equivalent functionality in LMT.