Laptop Mode Tools

提供: ArchWiki
移動先: 案内検索

Laptop Mode Tools は Linux 用のノートパソコン省電力化パッケージです。Linux カーネルの Laptop Mode 機能を有効にする手段として不可欠であり、ハードドライブをスピンダウンさせることができます。さらに、シンプルな設定ファイルを使ってその他の電源関連の設定を多数変更することが可能です。

acpidCPU の周波数スケールと組み合わさって、LMT は完全なノートパソコンの電源管理スイートを実現します。

インストール

AUR から laptop-mode-toolsAUR をインストールしてください。

設定

設定は以下のファイルで行います:

  • /etc/laptop-mode/laptop-mode.conf - メインの設定ファイル。
  • /etc/laptop-mode/conf.d/* - 数十の"モジュール"ごとの機能。

それぞれのモジュールは conf.d/ 内のファイルの CONTROL_* 引数を変更することにより、enableddisabled にしたり auto に設定することができます。/etc/laptop-mode/laptop-mode.confENABLE_AUTO_MODULES が設定されている場合、LMT は CONTROL_*auto に設定されているモジュールを全て有効にします。このルールには2つだけ例外があります: auto-hibernate.confbattery-level-polling.confCONTROL_* の代わりに ENABLE_* 変数を利用します。

どのモジュールが有効・無効・自動になっているか確認するには、次を実行:

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

最後に、laptop-mode.service有効化してください。

ハードディスク

hdparmsdparm をインストールする必要があります。Hdparm を見て下さい。

hdparm -S の値でハードドライブをスピンダウンすることにより電力が節約され音がとても静かになります。先読み機能を使えばコンピュータに触っているときでもドライブをスピンダウンさせることが可能です。LMT は hdparm -B の値も使うことができます。ハードドライブを最大限節電するには 1 で最小は 254 です。例えば、電源使用時にはこの値を 254に設定し、バッテリー使用時には 20 に設定します。通常の作業でディスクがスピンアップするのを待つ間にフリーズがおこるような場合は、高い値 (例: 128) に設定すると良いでしょう。スピンダウンを行う頻度が下がります。hdparm -Shdparm -B の値は /etc/laptop-mode/laptop-mode.conf で設定します。

警告: ハードドライブを極端にスピンダウンすると寿命が短くなることもあります。値を考える時は慎重に。

CONTROL_MOUNT_OPTIONS 変数を使用すると (デフォルトでオン)、laptop-mode-tools はパーティションを自動的に再マウントして、マウントオプションに commit=600,noatime を追加します。これによってジャーナリングプログラム jbd2 はディスクに数秒ごとにアクセスし続けながら、ディスクジャーナルは10分ごとに更新されます。

警告: この設定を使うと10分間の作業を喪失することになります。また、atime マウントオプションは使用しないで下さい。代わりに noatimerelatime を使って下さい。
ノート: nilfs2 パーティションで CONTROL_MOUNT_OPTIONS を有効にしてはいけません。フォーラムの次のスレッドを参照してください: https://bbs.archlinux.org/viewtopic.php?id=134656

ソリッドステートドライブ

公式の、上流の FAQ より:

問: わたしのマシンにはソリッドステートドライブ (SSD) が載っています。laptop-mode-tools のディスク関連の部分は有効にすべきでしょうか?もしくは有効にするのは不適切ですか?

答: おそらく有効にするのが妥当です。理由は2つあります。(a) Laptop Mode は書き込み回数を減らすため、SSD の寿命が伸びる。(b) Laptop Mode は書き込みをバーストにするので、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 コントローラーの Aggressive Link Power Management 機能を有効にすればディスク 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 の自動サスペンド

ヒント: 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

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

無線 LAN

無線インターフェイスの電源管理設定はハードウェアに依存しており、設定するのが少し厄介です。ワイヤレスチップセットに応じて、以下の3つのファイルのどれか1つで設定を管理します:

  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 現在) IPW3945 には iwpriv を使用し、IPW2100 と IPW220 には iwconfig と iwpriv の設定を組み合わせます。詳しくは /usr/share/laptop-mode-tools/modules/wireless-ipw-power を参照 (ipw3945 は使われません、下を見て下さい)。
  3. /etc/laptop-mode/conf.d/wireless-iwl-power.conf は iwl4965, iwl3945, iwlagn モジュールで動作する Intel チップセット用です (4965, 5100, 5300, 5350, 5150, 1000, 6000 チップセットをサポートしています)。

3つとも有効にしてもあまり問題にはなりません。LMT はインターフェイスが使用しているモジュールを検出してそれにあわせて動作するからです。

上記のそれぞれの設定ファイルでサポートされているモジュールは LMT から直接引用してきています。ただし、現在の 2.6.34 カーネルは ipw3945 と iwl4965 モジュールがないため、やや情報が古いようです (3945 チップセットは iwl3945 を使用し、4965 チップセットは iwlagn モジュールを代わりに使用しています)。どちらにしろ LMT が動作するのには影響がないため、あくまで資料として記載しています。

iwlagn モジュールで動作するチップセットには既知の問題が存在します (つまり 5300 チップセットなど)。/sys/class/net/wlan*/device/power_level ファイルが存在しないため、これらのチップセットでは /etc/laptop-mode/conf.d/wireless-iwl-power.conf の以下の設定は無視されます:

IWL_AC_POWER
IWL_BATT_POWER

代わりに、標準の方法 ("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 がイベントを認識しない

acpid をインストールして systemd サービスの acpid.service を有効化してください。

これで問題が解決しない場合、laptop-mode の設定ファイルで有効にしたいサービスが 1 に設定されているか確認してください。多くのサービス (cpufreq コントロールなど) はデフォルトで "auto" に設定されていますが、これだと有効にならないこともあります。

バッテリーで起動した時に bluetooth が動作しないという問題が起こる場合、runtime-pm を無効にすれば直ることがあります。

電源使用時に Laptop-mode-tools が無効にならない

laptop-mode-tools と pm-utils の両方をインストールしていると、互いに干渉しあって、laptop-mode-tools が正しく設定を行えないことがあります。

pm-utils の重複する機能があるスクリプトを無効化することで修正できます。この問題の主原因は /usr/lib/pm-utils/power.d にある laptop-mode スクリプトです。/usr/lib/pm-utils/power.d のフックと同じ名前のダミーファイルを /etc/pm/power.d に作成することで不必要なフックを動作しないようにすることができます。例えば laptop-mode フックを無効化したい場合:

# touch /etc/pm/power.d/laptop-mode
ノート: ダミーフックに実行可能属性を設定しないでください。

LMT と同じ機能を持つフックは無効化することを推奨します。

バッテリー使用時に5秒で USB マウスがスリープする

デバイスの ID を確かめて下さい (例: 046d:c534):

$ lsusb

その値を /etc/laptop-mode/conf.d/usb-autosuspend.confAUTOSUSPEND_USBID_BLACKLIST 変数に記述してください、例えば:

/etc/laptop-mode/conf.d/usb-autosuspend.conf
...
AUTOSUSPEND_USBID_BLACKLIST="046d:c534"
...

スペースで区切ることで複数の ID を指定できます。

ノート: systemctl restart laptop-mode を実行して laptop-tools モジュールを忘れずに再起動してください。

参照