ACPI モジュール
ACPI のサイト より:
- ACPI (Advanced Configuration and Power Interface) は Hewlett-Packard, Intel, Microsoft, Phoenix, Toshiba によって共同開発されたオープンな工業規格です。
ACPI モジュールは様々な ACPI パーツに対応するカーネルモジュールです。ACPI モジュールは特殊な ACPI の機能を有効にしたり /proc
や /sys
に情報を追加します。情報は acpid によって解析されてイベントなどを監視するアプリケーションで使われます。
利用可能なモジュール
以下は ACPI カーネルモジュールの簡単なリストです:
- ac (電源コネクタの状態)
- asus-laptop (useful on ASUS/medion laptops)
- battery (バッテリーの状態)
- bay (bay status)
- button (LID や POWER BUTTON などのボタンイベント)
- container (container status)
- dock (ドッキングステーションの状態)
- fan (ファンの状態)
- i2c_ec (EC SMBUs ドライバー)
- thinkpad_acpi (useful on Lenovo Thinkpad laptops)
- processor (プロセッサの状態)
- sbs (smart battery status)
- thermal (温度センサーの状態)
- toshiba_acpi (useful for Toshiba laptops)
- video (ビデオデバイスの状態)
complete list of your running kernel:
$ 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
適切なモジュールの選択
You have to try yourself which module works for your machine:
# modprobe <yourmodule>
then check if the module is supported on your hardware by using
$ dmesg
$ 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
Add the working ones to configuration files in /etc/modules-load.d
according to the pattern described in man modules-load.d
.
情報の取得
バッテリー情報を読み出すには、公式リポジトリの acpi パッケージをインストールして次を実行:
acpi -i
Using /proc
to store ACPI information has been discouraged and deprecated since Linux 2.6.24. The same data is available in /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/
トラブルシューティング
DSDT fix
If problems with power management persist despite having loaded the proper modules, a Linux-unfriendly 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:
1. Update your BIOS.
2. "Easy" Put 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.
3. In some cases (such as here) the following has been reported to solve the issue. However, screen brightness may no longer be fully controllable.
$ xset dpms force off
4. "Hard" build your kernel with patch bugs.launchpad.net.
If notebook does not start, just remove the AC adapter and battery for 5 seconds and start without AC!