Laptop Mode Tools

来自 Arch Linux 中文维基

Laptop Mode Tools 是一个 Linux 系统下的笔记本电源管理软件。它是让内核开启笔记本电脑模式功能的主要方法,能让硬盘降速。另外,它允许你通过一个简单的配置文件调整一些其他的节能相关的设置。

acpidCPU frequency scaling 结合使用,LMT 提供给了大多数用户一个完整的笔记本电脑电源管理方案。

安装[编辑 | 编辑源代码]

安装 laptop-mode-toolsAURlaptop-mode-tools-gitAUR

配置[编辑 | 编辑源代码]

配置是通过下列文件来控制的:

  • /etc/laptop-mode/laptop-mode.conf - 主要配置文件
  • /etc/laptop-mode/conf.d/* - 许多特定功能的模块.

每个模块都可以通过修改对应的conf.d/*文件中的CONTROL_*的值控制 (enabled 启用, disabled 禁用, auto 自动)。

如果在 /etc/laptop-mode/laptop-mode.conf 中设置了 ENABLE_AUTO_MODULES,LMT会自动启用那些CONTROL_*设为auto的模块。

要查看模块的状态,使用下面命令:

$ grep -r '^\(CONTROL\|ENABLE\)_' /etc/laptop-mode/conf.d

最后启用 laptop-mode.service

硬盘[编辑 | 编辑源代码]

为了使用该功能您需要安装 hdparm 或者 sdparm。 查看 Hdparm.

通过 hdparm -S 命令来降低硬盘转速可以让计算机更省电同时更安静. 即是您正在使用电脑您依然可以使用磁盘预读功能让硬盘经常降低转速。LMT(笔记本电脑工具包)也可以使用hdparm -B 命令。硬盘省电级别最高(最省电)为1,最低是254,使用交流电源供电时默认为254,使用电池供电时默认为1。如果你觉得硬盘减速使得一些操作变慢的话,把它设置为一个高一点的值(比如128)是个好主意,这会让它不会太频繁的减速。 hdparm -Shdparm -B 命令的一些参数设置在 /etc/laptop-mode/laptop-mode.conf文件中。

警告: 频繁降速提速会降低硬盘寿命,请不要设置的太激进。

如果 CONTROL_MOUNT_OPTIONS 选项为 on (默认即为 on), laptop-mode-tools 会自动重新挂载分区, 并在挂载选项中增加了 'commit=600,noatime'。这会让磁盘日志程序jbd2每10分钟才更新一次磁盘日志,而通常情况下几秒钟就会更新一次 (注意:使用该设置你可能会丢掉前10分钟的工作成果(当系统意外关闭时)). 同时请确保不要使用 atime 的挂载参数, 使用 noatimerelatime 来替代。

注意: CONTROL_MOUNT_OPTIONS 的值不应该在nilfs2分区上被设置为 on (原因可查看 https://bbs.archlinux.org/viewtopic.php?id=134656) (也可以查看 https://www.ibm.com/developerworks/cn/linux/l-cn-nilfs2/index.html 对nilfs2文件系统的中文介绍)

固态硬盘[编辑 | 编辑源代码]

来自 官方上游 FAQ:

问题:我电脑里装了一个固态硬盘,那么那些硬盘相关的配置还有效吗?

回答:它们有可能有效,原因有两个:1)laptop mode 会减少写次数,从而延长SSD的寿命;2)laptop mode 会让写操作变成突发形式,从而会使一些节电机制(例如ALPM)更好地介入。然而,效果可能会因硬件不同而有差别。有些硬件可能完全没效果,有些则效果显著。

CPU 频率调节[编辑 | 编辑源代码]

使用该功能你需要安装调节CPU频率的驱动模块。 查看 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

设备和总线[编辑 | 编辑源代码]

Intel SATA[编辑 | 编辑源代码]

  • 开启Intel SATA AHCI控制器的ALPM特性使磁盘空闲时让磁盘工作在非常低的功耗模式。
# 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.conf 文件。

USB 自动休眠[编辑 | 编辑源代码]

USB 自动休眠功能从 usb-autosuspend 移动到了 runtime-pm,请在 /lib/udev/rules.d/99-laptop-mode.rules 中将 usb-autosuspend 替换为 runtime-pm.

# runtime-pm.conf
# ThinkPad T40/T42/T60 Example
#
DEBUG=0
CONTROL_RUNTIME_AUTOSUSPEND=1
BATT_SUSPEND_RUNTIME=1
LM_AC_SUSPEND_RUNTIME=1
NOLM_AC_SUSPEND_RUNTIME=1
AUTOSUSPEND_TIMEOUT=2
注意: 更多详细配置信息请参阅 /etc/laptop-mode/conf.d/runtime-pm.conf 文件。如果你有一个经常使用的USB设备(比如USB鼠标),把它们禁用可以防止它们自动休眠。

显示和图形[编辑 | 编辑源代码]

LCD 显示器亮度[编辑 | 编辑源代码]

  • 可以通过以下命令来查看可用的笔记本电脑屏幕亮度数值:
$ cat /proc/acpi/video/VID/LCD/brightness
ThinkPad T40/T42[编辑 | 编辑源代码]

对于 ThinkPad T40/T42 笔记本,最小和最大亮度的查看要通过以下命令:

$ 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"
ThinkPad T60[编辑 | 编辑源代码]
  • 对于 ThinkPad T60 笔记本,最小和最大亮度的查看要通过以下命令:
$ 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.conf 文件。

终端黑屏时间[编辑 | 编辑源代码]

# 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.conf 文件。

网络[编辑 | 编辑源代码]

以太网[编辑 | 编辑源代码]

# 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"

无线局域网[编辑 | 编辑源代码]

无线网络设备的电源管理是设备相关的,因此配置时更需要一些技巧。依赖于无线芯片,设置通过下面三个文件中的一个来管理:

  1. /etc/laptop-mode/conf.d/wireless-power.conf 用于的电源管理的通用方法 (通过 "iwconfig wlan0 power on/off"). 这个适用于大多数芯片(除了Intel芯片集之外)。
  2. /etc/laptop-mode/conf.d/wireless-ipw-power.conf 通过老的ipw驱动来管理 Intel 芯片集。这适用于 IPW3945、IPW2200 和 IPW2100. 现在(到LMT 1.55-1为止)它用 iwpriv 来管理 IPW3945,以及用 iwconfig 结合 iwpriv来管理 IPW2100 和 IPW220。详细信息请参见 /usr/share/laptop-mode-tools/modules/wireless-ipw-power 文件。(注意,ipw3945模块已经废弃了,见下面)
  3. /etc/laptop-mode/conf.d/wireless-iwl-power.conf 用于管理 iwl4965、iwl3945 和 iwlagn 驱动的Intel芯片集(iwlagn 支持 4965, 5100, 5300, 5350, 5150, 1000, 和 6000 芯片集)
注意: 三个模块全开通常不会带来问题,因为LMT会自动检测设备对应的模块。

每个配置文件所支持的模块是直接源自LMT的。但是有些已经过时了,因为从Linux内核版本2.6.34开始就不再提供ipw3945和iwl4965模块(3945采用iwl3945,4965采用通用模块iwlagn)。这并不影响LMT的正常工作。

对于iwlagn驱动的一些芯片集(包括5300或其它),有一个已知的问题。在这些芯片集上,文件 /etc/laptop-mode/conf.d/wireless-iwl-power.conf中的下列配置:

IWL_AC_POWER
IWL_BATT_POWER

会被忽略,因为文件 /sys/class/net/wlan*/device/power_level 不存在。于是通用方法(通过 "iwconfig wlan0 power on/off" )会被自动启用。

音频设备[编辑 | 编辑源代码]

AC97[编辑 | 编辑源代码]

# ac97-powersave.conf
# ThinkPad T40/T42/T60 Example
#
DEBUG=0
CONTROL_AC97_POWER=1

Intel HDA[编辑 | 编辑源代码]

# 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

疑难问题[编辑 | 编辑源代码]

Laptop-mode-tools 不能收到事件[编辑 | 编辑源代码]

对于使用 systemd 的系统,开启并使其开机自动加载acpid 请运行以下命令:

# systemctl enable acpid
# systemctl start acpid

如果这样不管用的话,请仔细检查一边 laptop-mode 的配置文件并确定需要开启的服务被设置成 1 了。许多服务,包括cpu频率控制服务 (cpufreq control) 默认设置都是'自动'("auto"),所以可能没有开启。

USB Mouse sleeping after 5 seconds when on battery[编辑 | 编辑源代码]

First find the ID of you device (it should look like 046d:c534):

$ lsusb

Put this value into the AUTOSUSPEND_DEVID_BLACKLIST variable in /etc/laptop-mode/conf.d/runtime-pm.conf, for example:

/etc/laptop-mode/conf.d/runtime-pm.conf
...
AUTOSUSPEND_DEVID_BLACKLIST="046d:c534"
...

Multiple IDs can be seperated with spaces.

注意: Do not forget to restart laptop-mode.service. You might also need to reconnect the USB device.

Issues with NVIDIA driver[编辑 | 编辑源代码]

KDE shows black screen[编辑 | 编辑源代码]

When laptop mode is enabled, KDE fails to start. The reason is that the default KDE display manager (SDDM) starts before the NVIDIA driver. To prevent this from happening you need to remove the nomodeset kernel parameter.

Slower Boot after enabling laptop-mode.service[编辑 | 编辑源代码]

As described before, laptop-mode-tools affects the NVIDIA driver. Adding the nvidia-drm.modeset=1 kernel parameter reduces boot time dramatically.

相关链接[编辑 | 编辑源代码]