ACPI モジュール

提供: ArchWiki
2020年2月8日 (土) 10:32時点におけるKen (トーク | 投稿記録)による版 (→‎適切なモジュールの選択: どのマシンが⇒どのモジュールがマシンで)
ナビゲーションに移動 検索に移動

関連記事

ACPI のサイト より:

ACPI (Advanced Configuration and Power Interface) は Hewlett-Packard, Intel, Microsoft, Phoenix, Toshiba によって共同開発されたオープンな工業規格です。

ACPI モジュールは様々な ACPI パーツに対応するカーネルモジュールです。ACPI モジュールは特殊な ACPI の機能を有効にしたり /proc/sys に情報を追加します。情報は acpid によって解析されてイベントなどを監視するアプリケーションで使われます。

利用可能なモジュール

以下は ACPI カーネルモジュールの簡単なリストです:

  • ac (電源コネクタの状態)
  • asus-laptop (ASUS/medion のノートパソコンで使用)
  • battery (バッテリーの状態)
  • bay (ドライブベイの状態)
  • button (LID や POWER BUTTON などのボタンイベント)
  • container (コンテナの状態)
  • dock (ドッキングステーションの状態)
  • fan (ファンの状態)
  • i2c_ec (EC SMBUs ドライバー)
  • thinkpad_acpi (Lenovo Thinkpad ノートパソコンで使用)
  • processor (プロセッサの状態)
  • sbs (スマートバッテリーの状態)
  • thermal (温度センサーの状態)
  • toshiba_acpi (Toshiba ノートパソコンで使用)
  • video (ビデオデバイスの状態)

実行中のカーネルのモジュールリストを表示:

$ ls -l /usr/lib/modules/$(uname -r)/kernel/drivers/acpi
total 112
-rw-r--r-- 1 root root  2808 Aug 29 23:58 ac.ko.gz
-rw-r--r-- 1 root root  3021 Aug 29 23:58 acpi_ipmi.ko.gz
-rw-r--r-- 1 root root  3354 Aug 29 23:58 acpi_memhotplug.ko.gz
-rw-r--r-- 1 root root  4628 Aug 29 23:58 acpi_pad.ko.gz
drwxr-xr-x 2 root root  4096 Aug 29 23:59 apei
-rw-r--r-- 1 root root  7120 Aug 29 23:58 battery.ko.gz
-rw-r--r-- 1 root root  3700 Aug 29 23:58 button.ko.gz
-rw-r--r-- 1 root root  2181 Aug 29 23:58 container.ko.gz
-rw-r--r-- 1 root root  1525 Aug 29 23:58 custom_method.ko.gz
-rw-r--r-- 1 root root  1909 Aug 29 23:58 ec_sys.ko.gz
-rw-r--r-- 1 root root  2001 Aug 29 23:58 fan.ko.gz
-rw-r--r-- 1 root root  1532 Aug 29 23:58 hed.ko.gz
-rw-r--r-- 1 root root  3241 Aug 29 23:58 pci_slot.ko.gz
-rw-r--r-- 1 root root 17742 Aug 29 23:58 processor.ko.gz
-rw-r--r-- 1 root root  3073 Aug 29 23:58 sbshc.ko.gz
-rw-r--r-- 1 root root  7098 Aug 29 23:58 sbs.ko.gz
-rw-r--r-- 1 root root  6311 Aug 29 23:58 thermal.ko.gz
-rw-r--r-- 1 root root  8891 Aug 29 23:58 video.ko.gz

適切なモジュールの選択

どのモジュールがマシンで動作するのか確認してください:

# modprobe <yourmodule>

それから以下のコマンドでモジュールをハードウェアがサポートしているかどうか確認してください:

$ dmesg
ヒント: grep 検索を使って結果を絞ると良いでしょう。
$ dmesg | grep acpi
[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x04] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x05] enabled)
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])
[    5.066752] ACPI: acpi_idle yielding to intel_idle
[    5.438998] acpi device:04: registered as cooling_device4

動作するモジュールを /etc/modules-load.d の設定ファイルに追加してください。詳しくはカーネルモジュール#/etc/modprobe.d/ 内のファイルを使うを参照。

情報の取得

バッテリー情報を読み出すには、公式リポジトリacpi パッケージをインストールして次を実行:

acpi -i

Linux 2.6.24 から /proc を使うことで無効になっている ACPI 情報を保存できます。同じデータは /sys から扱うこともでき、netlink 経由でカーネルからの ACPI イベントを取得できます。例えば、バッテリーの場合:

/sys/class/power_supply/BAT0/

トラブルシューティング

DSDT の修正

適切なモジュールをロードしているのに電源管理に問題が発生する場合、Linux フレンドリーではない DSDT が原因かもしれません。詳しくは DSDT を参照してください。

ノートパソコンの ACPI の修正

ときどき "ACPI: EC: input buffer is not empty, aborting transaction" と表示されることがあります。これは ACPI の問題で、BIOS の非互換性が原因です。問題を解決する方法は4つあります:

1. BIOS をアップデートする。Linux から BIOS を書き換えるや製造元からの情報を参照してください。

2. カーネルパラメータacpi=off を追加する。ただしバッテリーの充電や省電力機能などの全ての ACPI 機能が使えなくなります。

3. 以下のコマンドを実行し、DPMS を無効にすることで問題が解決することもあります [1]。ただし、画面の輝度を変更できなくなります。

$ xset dpms force off

4. bugs.launchpad.net にあるパッチを当ててカーネルをビルドする。

ノートパソコンが起動しない場合、AC アダプタとバッテリーを5秒間ほど取り外してからバッテリーを使って再度起動してみてください。

参照