Laptop Mode Tools
Laptop Mode Tools 是一个用于 Linux 系统的笔记本电脑省电软件包。它是启用 Linux 内核的 Laptop Mode 功能的主要方法,该功能可以让您的硬盘驱动器停止旋转。此外,它还允许您使用简单的配置文件调整许多其他与电源相关的设置。
结合 acpid 和 CPU 频率调节,LMT 为大多数用户提供了完整的笔记本电脑电源管理套件。
安装
安装 laptop-mode-toolsAUR 软件包或 laptop-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
的模块。上述规则有两个例外:auto-hibernate.conf
和 battery-level-polling.conf
使用 ENABLE_*
变量而不是 CONTROL_*
。
要快速检查哪些模块已启用、禁用或自动,请运行
$ grep -r '^\(CONTROL\|ENABLE\)_' /etc/laptop-mode/conf.d
最后,启用 laptop-mode.service
。
硬盘
为此,您需要安装 hdparm 和/或 sdparm。请参阅 Hdparm。
通过 hdparm -S
值降低硬盘驱动器的转速可以节省电量,并使一切都安静得多。LMT 还可以建立 hdparm -B
值。最大硬盘驱动器节能为 1,最小为 254。例如,在交流电源下将此值设置为 254,在电池供电时设置为 20。如果您发现正常活动经常在等待磁盘启动时挂起,则最好将其设置为更高的值(例如 128),这将使其不太频繁地停止旋转。hdparm -S
和 hdparm -B
值在 /etc/laptop-mode/laptop-mode.conf
中配置。
使用 CONTROL_MOUNT_OPTIONS
变量(默认开启),laptop-mode-tools 会自动重新挂载您的分区,并在挂载选项中附加 commit=600,noatime
。这可以防止日志程序 jbd2 每隔几秒访问您的磁盘,而是每 10 分钟更新一次磁盘日志。
atime
挂载选项。请改用 noatime
或 relatime
。CONTROL_MOUNT_OPTIONS
不应与 nilfs2 分区一起打开。请参阅论坛上的这个帖子:https://bbs.archlinux.org/viewtopic.php?id=134656固态硬盘
来自 官方上游 FAQ
问题: 我的机器中有一个固态硬盘 (SSD)。我应该启用 laptop-mode-tools 的任何与磁盘相关的部分吗,还是它们无关紧要?
回答: 它们可能是相关的,因为 (a) 笔记本电脑模式将减少写入次数,从而延长 SSD 的寿命,并且 (b) 笔记本电脑模式使写入突发性,这使得 ALPM 等节能机制能够启动。但是,您的里程可能会因所涉及的特定硬件而异。对于某些硬件,您将一无所获,而对于某些硬件,收益可能很大。
CPU 频率
为此,您需要安装 CPU 频率驱动程序。请参阅 CPU 频率调节。
# 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 控制器主动式链路电源管理功能,以便在没有磁盘 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.conf
文件以获取更多配置详细信息。USB 自动挂起
# 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
文件以获取更多配置详细信息。华硕笔记本电脑
LCD
对于大多数(可能所有)配备 Intel CPU 的华硕 ROG 和 TUF 笔记本电脑,可以通过运行以下命令获得最大亮度值
# cat /sys/class/backlight/intel_backlight/max_brightness
# lcd-brightness.conf # Asus TUF Dash F15 2022 Example # DEBUG=0 CONTROL_BRIGHTNESS=1 BATT_BRIGHTNESS_COMMAND="echo 32000" LM_AC_BRIGHTNESS_COMMAND="echo 96000" NOLM_AC_BRIGHTNESS_COMMAND="echo 96000" BRIGHTNESS_OUTPUT="/sys/class/backlight/intel_backlight/brightness"
键盘背光
华硕笔记本电脑通过华硕专用模块与内核对话,因此标准键盘亮度命令将不起作用。可以通过运行以下命令获得最大亮度级别
# cat /sys/class/leds/asus::kbd_backlight/max_brightness
# kbd-backlight.conf # Asus TUF Dash F15 2022 Example # DEBUG=0 CONTROL_BRIGHTNESS=1 BATT_BRIGHTNESS_COMMAND="echo 1" LM_AC_BRIGHTNESS_COMMAND="echo 3" NOLM_AC_BRIGHTNESS_COMMAND="echo 3" BRIGHTNESS_OUTPUT="/sys/class/leds/asus::kbd_backlight/max_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
/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"
无线局域网
无线接口电源管理设置取决于硬件,因此配置起来有点棘手。根据无线芯片组,设置在以下三个文件之一中进行管理
/etc/laptop-mode/conf.d/wireless-power.conf
用于通用的节能方法(使用 "iwconfig wlan0 power on/off")。这适用于大多数芯片组(即,除下面列出的 Intel 芯片组之外的任何芯片组)。/etc/laptop-mode/conf.d/wireless-ipw-power.conf
用于由旧 ipw 驱动程序驱动的 Intel 芯片组。这适用于 IPW3945、IPW2200 和 IPW2100。目前(截至 LMT 1.55-1)对 IPW3945 使用 iwpriv,对 IPW2100 和 IPW220 使用 iwconfig 和 iwpriv 设置的组合。有关详细信息,请参阅/usr/share/laptop-mode-tools/modules/wireless-ipw-power
。(请注意,ipw3945 已不再使用,请参见下文)/etc/laptop-mode/conf.d/wireless-iwl-power.conf
用于由模块 iwl4965、iwl3945 和 iwlagn 驱动的 Intel 芯片组(后者支持芯片组 4965、5100、5300、5350、5150、1000 和 6000)
请注意,激活它们中的三个不应该有太大的问题,因为 LMT 会检测接口使用的模块并采取相应的操作。
上面指示的每个配置文件的受支持模块直接取自 LMT。但是,这似乎有点过时,因为当前的 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 没有捕捉到事件
如果这没有帮助,请浏览 laptop-mode 配置文件,并确保要启用的服务设置为 1。许多服务(包括 cpufreq 控制)默认设置为“auto”,这可能不会启用它们。
蓝牙在电池启动时无法工作的问题可以通过禁用 runtime-pm 来解决。
使用电池时 USB 鼠标在 5 秒后休眠
首先找到您设备的 ID(它应该看起来像 046d:c534
)
$ lsusb
将此值放入 /etc/laptop-mode/conf.d/runtime-pm.conf
中的 AUTOSUSPEND_DEVID_BLACKLIST
变量中,例如
/etc/laptop-mode/conf.d/runtime-pm.conf
... AUTOSUSPEND_DEVID_BLACKLIST="046d:c534" ...
多个 ID 可以用空格分隔。
laptop-mode.service
。您可能还需要重新连接 USB 设备。NVIDIA 驱动程序问题
KDE 显示黑屏
启用笔记本电脑模式后,KDE 无法启动。原因是默认的 KDE 显示管理器 (SDDM) 在 NVIDIA 驱动程序之前启动。为了防止这种情况发生,您需要删除 nomodeset
内核参数。
启用 laptop-mode.service 后启动速度变慢
如前所述,laptop-mode-tools 会影响 NVIDIA 驱动程序。添加 nvidia-drm.modeset=1
内核参数 可显著缩短启动时间。