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.

相關連結[編輯 | 編輯原始碼]