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 ファイルに詳しい説明があります。
ASUS ノートパソコン
LCD

Intel CPU を搭載したほとんどの (おそらくすべての) Asus 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"
キーボードのバックライト

Asus ノートブックは Asus 固有のモジュールを介してカーネルと通信するため、標準のキーボードの明るさのコマンドは機能しません。最大の輝度レベルは、以下を実行することで取得できます。

# 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

# 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 を無効にすれば直ることがあります。

バッテリー使用時に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 モジュールを忘れずに再起動してください。

NVIDIA ドライバーの問題

KDE で黒い画面が表示される

laptop-mode が有効になっている場合、KDE ​​は起動に失敗します。その理由は、デフォルトの KDE ディスプレイマネージャー (SDDM) が NVIDIA ドライバーよりも前に起動するためです。これを防ぐには、nomodeset カーネルパラメータ を削除する必要があります。

laptop-mode.service を有効にした後に起動が遅くなる

前に説明したように、 laptop-mode-tools は NVIDIA ドライバーに影響を与えます。nvidia-drm.modeset=1 カーネルパラメータ を追加すると、起動時間が大幅に短縮されます。

参照