「ACPI モジュール」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:電源管理 de:ACPI Module en:ACPI modules it:ACPI modules zh-CN:ACPI modules {{Related articles start}} {{Related|acpid}} {{Related|DSDT}}...」)
 
 
(6人の利用者による、間の7版が非表示)
2行目: 2行目:
 
[[de:ACPI Module]]
 
[[de:ACPI Module]]
 
[[en:ACPI modules]]
 
[[en:ACPI modules]]
  +
[[es:ACPI modules]]
 
[[it:ACPI modules]]
 
[[it:ACPI modules]]
[[zh-CN:ACPI modules]]
+
[[zh-hans:ACPI modules]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|acpid}}
 
{{Related|acpid}}
17行目: 18行目:
 
以下は ACPI カーネルモジュールの簡単なリストです:
 
以下は ACPI カーネルモジュールの簡単なリストです:
 
* ac (電源コネクタの状態)
 
* ac (電源コネクタの状態)
* asus-laptop (useful on ASUS/medion laptops)
+
* asus-laptop (ASUS/medion のノートパソコンで使用)
 
* battery (バッテリーの状態)
 
* battery (バッテリーの状態)
* bay (bay status)
+
* bay (ドライブベイの状態)
 
* button (LID や POWER BUTTON などのボタンイベント)
 
* button (LID や POWER BUTTON などのボタンイベント)
* container (container status)
+
* container (コンテナの状態)
 
* dock (ドッキングステーションの状態)
 
* dock (ドッキングステーションの状態)
 
* fan (ファンの状態)
 
* fan (ファンの状態)
* i2c_ec (EC SMBUs ドライバー)
+
* i2c_ec (EC SMyBUs ドライバー)
* thinkpad_acpi (useful on Lenovo Thinkpad laptops)
+
* thinkpad_acpi (Lenovo ThinkPad ノートパソコンで使用)
 
* processor (プロセッサの状態)
 
* processor (プロセッサの状態)
  +
* sbs (スマートバッテリーの状態)
* sbs (smart battery status)
 
 
* thermal (温度センサーの状態)
 
* thermal (温度センサーの状態)
* toshiba_acpi (useful for Toshiba laptops)
+
* toshiba_acpi (Toshiba ノートパソコンで使用)
 
* video (ビデオデバイスの状態)
 
* video (ビデオデバイスの状態)
   
  +
実行中のカーネルのモジュールリストを表示:
complete list of your running kernel:
 
 
{{hc|$ ls -l /usr/lib/modules/$(uname -r)/kernel/drivers/acpi|<nowiki>
 
{{hc|$ ls -l /usr/lib/modules/$(uname -r)/kernel/drivers/acpi|<nowiki>
 
total 112
 
total 112
56行目: 57行目:
   
 
==適切なモジュールの選択==
 
==適切なモジュールの選択==
  +
どのモジュールがマシンで動作するのか確認してください:
You have to try yourself which module works for your machine:
 
{{bc|# modprobe <yourmodule>}}
+
# modprobe <yourmodule>
  +
それから以下のコマンドでモジュールをハードウェアがサポートしているかどうか確認してください:
then check if the module is supported on your hardware by using
 
{{bc|$ dmesg}}
+
$ dmesg
  +
{{Tip|grep 検索を使って結果を絞ると良いでしょう。}}
{{Tip| It may help to add a grep text search to narrow your results.}}
 
 
$ dmesg | grep acpi
 
$ dmesg | grep acpi
 
[ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
 
[ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
73行目: 74行目:
 
[ 5.438998] acpi device:04: registered as cooling_device4
 
[ 5.438998] acpi device:04: registered as cooling_device4
   
  +
動作するモジュールを {{ic|/etc/modules-load.d}} の設定ファイルに追加してください。詳しくは[[カーネルモジュール#/etc/modprobe.d/ 内のファイルを使う]]を参照。
Add the working ones to configuration files in {{ic|/etc/modules-load.d}} according to the pattern described in {{ic|man modules-load.d}}.
 
   
 
== 情報の取得 ==
 
== 情報の取得 ==
79行目: 80行目:
 
acpi -i
 
acpi -i
   
  +
Linux 2.6.24 から {{ic|/proc}} を使うことで無効になっている ACPI 情報を保存できます。同じデータは {{ic|/sys}} から扱うこともでき、netlink 経由でカーネルからの ACPI イベントを取得できます。例えば、バッテリーの場合:
Using {{ic|/proc}} to store ACPI information has been discouraged and deprecated since Linux 2.6.24. The same data is available in {{ic|/sys}} now, and interested parties can (should) subscribe to ACPI events from the kernel via netlink. For example, for battery:
 
 
/sys/class/power_supply/BAT0/
 
/sys/class/power_supply/BAT0/
   
 
==トラブルシューティング==
 
==トラブルシューティング==
===DSDT fix===
 
If problems with power management persist despite having loaded the proper modules, a Linux-unfriendly [http://en.wikipedia.org/wiki/DSDT#ACPI_Tables DSDT] might be the cause. See the wiki article on [[DSDT]].
 
===ACPI fix for notebooks===
 
Sometimes you see "ACPI: EC: input buffer is not empty, aborting transaction". This is a problem with ACPI, more specifically an incompatibility of the BIOS. There are four ways to solve this:
 
   
  +
===DSDT の修正===
1. Update your BIOS.
 
   
  +
適切なモジュールをロードしているのに電源管理に問題が発生する場合、Linux フレンドリーではない [[DSDT]] が原因かもしれません。
2. "Easy" Put {{ic|1=acpi=off}} in the kernel line in your bootloader's configuration file, but that will kill all ACPI functionality like battery charging and power saving.
 
   
  +
===ノートパソコンの ACPI の修正===
3. In some cases (such as [http://ubuntuforums.org/showthread.php?p=8030130#10 here]) the following has been reported to solve the issue. However, screen brightness may no longer be fully controllable.
 
  +
  +
時々 "ACPI: EC: input buffer is not empty, aborting transaction" と表示されることがあります。これは ACPI の問題で、BIOS の非互換性が原因です。問題を解決する方法は4つあります:
  +
  +
1. BIOS をアップデートする。[[Linux から BIOS を書き換える]]や製造元からの情報を参照してください。
  +
  +
2. [[カーネルパラメータ]]に {{ic|1=acpi=off}} を追加する。ただしバッテリーの充電や省電力機能などの全ての ACPI 機能が使えなくなります。
  +
  +
3. 以下のコマンドを実行し、[[DPMS]] を無効にすることで問題が解決することもあります [https://ubuntuforums.org/showthread.php?p=8030130#10]。ただし、画面の輝度を変更できなくなります。
 
$ xset dpms force off
 
$ xset dpms force off
   
4. "Hard" build your kernel with patch [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/578506 bugs.launchpad.net].
+
4. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/578506 bugs.launchpad.net] にあるパッチを当てて[[カーネル#コンパイル|カーネルをビルド]]する。
  +
  +
=== ブートでループする ===
  +
  +
一部のノートブックまたはマザーボードでは、ACPI ファームウェアの実装が不適切なため、ブートローダーから OS への移行中に電源がオフになるなど、起動に問題が発生する可能性があります。次の手順では、順番にテストするためのいくつかの [[カーネルパラメータ]] を提供します。
   
  +
# {{ic|1=acpi=off}} を設定します。正常に起動できた場合:
If notebook does not start, just remove the AC adapter and battery for 5 seconds and start without AC!
 
  +
## ACPI テーブルをダンプし、"Windows XXXX" に類似した文字列がないか確認します。: {{bc|# acpidump -b && for i in *; do echo $i:; strings -a $i {{!}} grep -i windows; done}}
  +
## {{ic|1=acpi_osi="Windows XXXX"}} を設定します。
  +
# ブートループの問題は、C-States が不安定であることが原因である可能性があります。
  +
## {{ic|1=processor.max_cstate=0}} を使用して ACPI C-State ドライバーを無効にします
  +
## Intel プロセッサを使用している場合は、{{ic|1=intel_idle.max_cstate=2}} を設定して C-State を C1E に制限します。C-State を高くすると機能する場合がありますが、起動時間は異なる場合があります。
  +
## MWAIT 命令を無効にし、{{ic|1=idle=nomwait}} を使用して ACPI C-State ドライバーにフォールバックします。 [[cpupower]]: {{bc|1=$ cpupower idle-info}} を使用して変更を確認します。
   
 
== 参照 ==
 
== 参照 ==

2024年10月2日 (水) 23:35時点における最新版

関連記事

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 SMyBUs ドライバー)
  • 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 が原因かもしれません。

ノートパソコンの 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 にあるパッチを当ててカーネルをビルドする。

ブートでループする

一部のノートブックまたはマザーボードでは、ACPI ファームウェアの実装が不適切なため、ブートローダーから OS への移行中に電源がオフになるなど、起動に問題が発生する可能性があります。次の手順では、順番にテストするためのいくつかの カーネルパラメータ を提供します。

  1. acpi=off を設定します。正常に起動できた場合:
    1. ACPI テーブルをダンプし、"Windows XXXX" に類似した文字列がないか確認します。:
      # acpidump -b && for i in *; do echo $i:; strings -a $i | grep -i windows; done
    2. acpi_osi="Windows XXXX" を設定します。
  2. ブートループの問題は、C-States が不安定であることが原因である可能性があります。
    1. processor.max_cstate=0 を使用して ACPI C-State ドライバーを無効にします
    2. Intel プロセッサを使用している場合は、intel_idle.max_cstate=2 を設定して C-State を C1E に制限します。C-State を高くすると機能する場合がありますが、起動時間は異なる場合があります。
    3. MWAIT 命令を無効にし、idle=nomwait を使用して ACPI C-State ドライバーにフォールバックします。 cpupower:
      $ cpupower idle-info
      を使用して変更を確認します。

参照