Laptop Mode Tools
Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary heading Template:Article summary link Template:Article summary link Template:Article summary link Template:Article summary link
- 1 Preface
- 2 Installation
- 3 Configuration
- 4 Tips and tricks
- 5 Troubleshooting
The Linux kernel, starting from version 2.6.6, contains a feature called laptop mode. This feature is also present in the Linux 2.4 series starting from version 2.4.23. When enabled, the kernel allows the hard drive to spin down more often, resulting in significant power savings. Laptop Mode Tools (LMT) evolved from a simple program that controlled the hard drives to a centralized power saving solution providing a wide selection of options and can perform a number of varying power saving functions across separate subsystems simultaneously. Combined with acpid, cpufrequtils and pm-utils, LMT provides most users with a complete notebook power management suite.
Template:Package Official can be installed from the [extra] repository:
# pacman -S laptop-mode-tools
Configuration is handled through the primary configuration file Template:Filename and through the configuration of dozens of feature-specific files in Template:Filename. Recent versions of LMT are able to automatically enable commonly used Template:Filename settings by way of the Template:Codeline variable in Template:Filename.
For this you need to have hdparm and/or sdparm installed. See Hdparm.
Spinning down the hard drive through Template:Codeline 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 Template:Codeline values. The maximum hard drive power saving is 1 and the minimum is 254. Set this value to 254 when on AC and 1 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 (eg. 128) which will make it spin down less often. Template:Codeline and Template:Codeline values are configured in Template:Filename.
For ext4 (and ext3) partitions you might want to add a commit value to your mount options in Template:Filename. For example:
/dev/sda2 / ext4 defaults,noatime,commit=600 0 0
This keeps the journaling program jbd2 from accessing your disc every few seconds, instead the disc journal gets updated every 10 minutes (BEWARE: with this setting you could lose up to 10 minutes of work). Also be sure not to use the Template:Codeline mount option, use Template:Codeline or Template:Codeline instead.
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
- See CPU Frequency Scaling for details on how to setup the needed kernel modules.
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
# 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
Display and graphics
- Available brightness values for certain laptops can can be obtained by running following two commands:
$ cat /proc/acpi/video/VID/LCD/brightness
For ThinkPad notebooks, minimum brightness values can be obtained by running one of the following two commands:
$ cat /sys/class/backlight/acpi_video0/brightness
$ cat /sys/class/backlight/thinkpad_screen/brightness
- For ThinkPad notebooks, maximum brightness values can be obtained by running one of the following two commands:
$ cat /sys/class/backlight/acpi_video0/max_brightness
$ cat /sys/class/backlight/thinkpad_screen/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"
# 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"
# 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
# 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:
- Template:Filename for 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).
- Template:Filename for 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 Template:Filename for details. (note that the ipw3945 is not used anymore, see below)
- Template:Filename for 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 Template:Filename :
are ignored, because the Template:Filename 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
DAEMONS=(... acpid ...)
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.
Unhandled kernel version: 3.0.0
If you are using the kernel version which is in the "testing" repository right now (3.0.0), laptop-mode-tools will stop working because it detects a kernel version it was not made for. However, laptop-mode-tools is perfectly capable of running with Kernel 3 (as some of the developers say in this post: link laptop-mode-tools 1.53 can not handle kernel 3.0 rc-x) so the problem is not in the new Kernel itself but in the fact that the new version is not in laptop-mode "list" of approved kernels. The developers have already solved this issue and the fix will be in their next release but, if you are too impatient to wait for it, it is very easy to bypass this problem by editing manually the file Template:Filename as the developers suggest in the prior link. Just look for the section:
case "$KLEVEL" in "2.4" ) ;; "2.6" ) ;; *) log "ERR" "Unhandled kernel version: $KLEVEL ('uname -r' = '$(uname -r)')" >&2 exit 1 ;; esac
You can add manually the kernel version to the list or (if you think it is unlikely you will use an unsupported Kernel before the next release of laptop-mode-tools) you can just comment that part of the code (from "case" to "esac" inclusively).