ACPI_IBM(4) | FreeBSD Kernel Interfaces Manual | ACPI_IBM(4) |
名称
acpi_ibm — IBM ラップトップのための ACPI 特別ドライバ書式
このドライバをカーネルにコンパイルするためには、次の行を利用者のカーネル設定ファイルに置きます:
device acpi_ibm
もう一つの方法として、ブート時にモジュールとしてドライバをロードするためには、次の行を loader.conf(5) に置きます:
acpi_ibm_load="YES"
解説
acpi_ibm ドライバは、IBM ラップトップのホットキーおよび他のコンポーネントのサポートを行います。このドライバの主な目的は、アプリケーションが様々なラップトップコンポーネントの状態を決定することができるために、 sysctl(8) と devd(8) を通して、アクセス可能なインタフェースを提供することです。ドライバをロードした後に sysctl(8) インタフェースが自動的に有効にされている間、 devd(8) インタフェースは、特定のキーのデフォルト動作を変更できるように、明らかに有効にされなければなりません。以下に説明されているように events sysctl を設定することによってこれは行われます。どのキーがイベントを生成するべきであるかの指定は、各ビットが 1 つのキーまたはキーの組み合わせを表す、ビットマスクを設定することによって行われます。 eventmask sysctl を通してアクセス可能なこのビットマスクは、特定の ThinkPad モデルですべての起こり得る keypress イベントを表す値である、デフォルトの availmask に設定されます。
devd(8) Ss イベント
devd(8) によって受け付けられたホットキーイベントは、次の情報を提供します:
- system
-
“
ACPI
” - subsystem
-
“
IBM
” - type
- ACPI 名前空間でのイベントのソース。値はモデルよって決まります。
- notify
- イベントコード (下記参照)。
ThinkPad モデルにより、イベントコードは異なります。 ThinkPad T41p では、これらは次の通りです:
-
0x01
- Fn + F1
-
0x02
- Fn + F2
-
0x03
- Fn + F3 (LCD バックライト)
-
0x04
- Fn + F4 (RAM をサスペンド)
-
0x05
- Fn + F5 (Bluetooth)
-
0x06
- Fn + F6
-
0x07
- Fn + F7 (拡張画面)
-
0x08
- Fn + F8
-
0x09
- Fn + F9
-
0x0a
- Fn + F10
-
0x0b
- Fn + F11
-
0x0c
- Fn + F12 (disk をサスペンド)
-
0x0d
- Fn + Backspace
-
0x0e
- Fn + Insert
-
0x0f
- Fn + Delete
-
0x10
- Fn + Home (輝度アップ)
-
0x11
- Fn + End (輝度ダウン)
-
0x12
- Fn + PageUp (ThinkLight)
-
0x13
- Fn + PageDown
-
0x14
- Fn + Space (Zoom) (ズーム)
-
0x15
- Volume Up (ボリュームアップ)
-
0x16
- Volume Down (ボリュームダウン)
-
0x17
- Mute (ミュート)
-
0x18
- Access IBM ボタン
SYSCTL 変数
次の sysctl が現在、実装されています:- dev.acpi_ibm.0.initialmask
- (読み込み専用) acpi_ibm ドライバがロードされる前の ACPI イベントのビットマスク。
- dev.acpi_ibm.0.availmask
- (読み込み専用) すべてのサポートされた ACPI イベントのビットマスク。
- dev.acpi_ibm.0.events
- ACPI イベントを有効にし、 eventmask と availmask を設定します。 acpi_ibm ドライバをロードすることなしで、Fn+F4 ボタンだけが ACPI イベントを生成します。
- dev.acpi_ibm.0.eventmask
-
devd(8) に報告される ACPI イベントを設定します。
eventmask にある値にかかわらず、Fn+F3、Fn+F4 と Fn+F12 は、常に ACPI イベントを生成します。 ThinkPad モデルにより、
eventmask の異なったビットの意味は異なります。 ThinkPad T41p では、これは、次のビット単位の論理和 (OR) です:
-
1
- Fn + F1
-
2
- Fn + F2
-
4
- Fn + F3 (LCD バックライト)
-
8
- Fn + F4 (RAM をサスペンド)
-
16
- Fn + F5 (Bluetooth)
-
32
- Fn + F6
-
64
- Fn + F7 (画面拡張)
-
128
- Fn + F8
-
256
- Fn + F9
-
512
- Fn + F10
-
1024
- Fn + F11
-
2048
- Fn + F12 (disk をサスペンド)
-
4096
- Fn + Backspace
-
8192
- Fn + Insert
-
16384
- Fn + Delete
-
32768
- Fn + Home (Brightness up) (輝度アップ)
-
65536
- Fn + End (Brightness down) (輝度ダウン)
-
131072
- Fn + PageUp (ThinkLight)
-
262144
- Fn + PageDown
-
524288
- Fn + Space (Zoom) (ズーム)
-
1048576
- Volume Up (ボリュームアップ)
-
2097152
- Volume Down (ボリュームダウン)
-
4194304
- Mute (ミュート)
-
8388608
- Access IBM ボタン
-
- dev.acpi_ibm.0.hotkey
-
(読み込み専用) いくつかのボタンの状態。ボタンが押されるときはいつも、関係するビットは切り替えられます。次のビット単位の論理和 (OR) です:
-
1
- Home ボタン
-
2
- Search ボタン
-
4
- Mail ボタン
-
8
- Access IBM ボタン
-
16
- ズーム (Zoom)
-
32
- Wireless LAN ボタン
-
64
- Video ボタン
-
128
- Hibernate ボタン
-
256
- ThinkLight ボタン
-
512
- Screen Expand (画面拡張)
-
1024
- Brightness Up/Down (輝度アップ/ダウン) ボタン
-
2048
- Volume Up/Down/Mute (ボリュームアップ/ダウン/ミュート) ボタン
-
- dev.acpi_ibm.0.lcd_brightness
- ディスプレイの現在の輝度レベル。
- dev.acpi_ibm.0.volume
- スピーカのボリューム。
- dev.acpi_ibm.0.mute
- スピーカが音を消されているかどうかを表示します。
- dev.acpi_ibm.0.thinklight
- ThinkLight キーボードライトがアクティブであるかどうかを表示します。
- dev.acpi_ibm.0.bluetooth
- Bluetooth チップのアクティビティを切り替えます。
- dev.acpi_ibm.0.wlan
- (読み込み専用) WLAN チップがアクティブであるかどうかを表示します。
- dev.acpi_ibm.0.fan
- ファンが、自動モード (1) またはマニュアルモード (0) であるかどうかを示します。デフォルトは、自動モードです。この sysctl は、極端な用心して使用されるべきで、自動ファン制御を無効にすることは、 fan_level がそれなりに設定されていないなら、ThinkPad を過熱させ、永久的な損傷の原因となるかもしれません。
- dev.acpi_ibm.0.fan_level
-
マニュアルモードであるとき、ファンがどのような速度で走らせるべきであるかを示します。値は、0 (オフ) から 7 (最大) までの範囲です。結果の速度は、モデルによって異なっています。 T41p では、これは、次の通りです:
-
0
- オフ
-
1, 2
- ~3000 RPM
-
3, 4, 5
- ~3600 RPM
-
6, 7
- ~4300 RPM
-
- dev.acpi_ibm.0.fan_speed
- (読み込み専用) 1 分あたりのファン速度の概算。いくつかのより古い ThinkPad は、0 (オフ) から 7 (最大) のレベル範囲でファン速度を報告します。
- dev.acpi_ibm.0.thermal
-
(読み込み専用) 最大 8 個の異なった温度センサの測定値を表示します。ほとんどの ThinkPad は、6 個以上の温度センサを含んでいますが、
acpi_thermal(4) を通して CPU 温度を公表するだけです。いくつかの ThinkPad には、特定のモデルによって異なるかもしれない以下のセンサ割り付けがあります:
- CPU
- ミニ PCI モジュール
- HDD
- GPU
- Built-in バッテリ
- UltraBay バッテリ
- Built-in バッテリ
- UltraBay バッテリ
- dev.acpi_ibm.0.handlerevents
- events が 1 に設定されるとき、 acpi_ibm によって操作される devd(8) のイベント。イベントは、16 進数または 10 進数の形式のイベントコードの空白類で分離されたリストとして指定されます。イベントは、ACPI BIOS が既にイベントを操作していたなら、 (例えば、輝度のアップ/ダウン) 2 度操作されるかもしれないことに注意してください。
これらの sysctl のためのデフォルトは、 sysctl.conf(5) で設定することができます。
関連ファイル
- /dev/led/thinklight
- ThinkLight led(4) デバイスノード
使用例
ボタンのイベントを /usr/local/sbin/acpi_oem_exec.sh スクリプトに渡すために devd.conf(5) に次を追加することができます:
notify 10 { match "system" "ACPI"; match "subsystem" "IBM"; action "/usr/local/sbin/acpi_oem_exec.sh $notify ibm"; };
利用可能な /usr/local/sbin/acpi_oem_exec.sh スクリプトは次に似ているかもしれません:
#!/bin/sh # if [ "$1" = "" -o "$2" = "" ] then echo "usage: $0 notify oem_name" exit 1 fi NOTIFY=`echo $1` LOGGER="logger" CALC="bc" BC_PRECOMMANDS="scale=2" ECHO="echo" CUT="cut" MAX_LCD_BRIGHTNESS=7 MAX_VOLUME=14 OEM=$2 DISPLAY_PIPE=/tmp/acpi_${OEM}_display case ${NOTIFY} in 0x05) LEVEL=`sysctl -n dev.acpi_${OEM}.0.bluetooth` if [ "$LEVEL" = "1" ] then sysctl dev.acpi_${OEM}.0.bluetooth=0 MESSAGE="bluetooth disabled" else sysctl dev.acpi_${OEM}.0.bluetooth=1 MESSAGE="bluetooth enabled" fi ;; 0x10|0x11) LEVEL=`sysctl -n dev.acpi_${OEM}.0.lcd_brightness` PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \ ${LEVEL} / ${MAX_LCD_BRIGHTNESS} * 100" |\ ${CALC} | ${CUT} -d . -f 1` MESSAGE="brightness level ${PERCENT}%" ;; 0x12) LEVEL=`sysctl -n dev.acpi_${OEM}.0.thinklight` if [ "$LEVEL" = "1" ] then MESSAGE="thinklight enabled" else MESSAGE="thinklight disabled" fi ;; 0x15|0x16) LEVEL=`sysctl -n dev.acpi_${OEM}.0.volume` PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \ ${LEVEL} / ${MAX_VOLUME} * 100" | \ ${CALC} | ${CUT} -d . -f 1` MESSAGE="volume level ${PERCENT}%" ;; 0x17) LEVEL=`sysctl -n dev.acpi_${OEM}.0.mute` if [ "$LEVEL" = "1" ] then MESSAGE="volume muted" else MESSAGE="volume unmuted" fi ;; *) ;; esac ${LOGGER} ${MESSAGE} if [ -p ${DISPLAY_PIPE} ] then ${ECHO} ${MESSAGE} >> ${DISPLAY_PIPE} & fi exit 0
次の使用例は、イベントコード 0x04 (RAM をサスペンドする)、 0x10 (輝度をアップ) と 0x11 (輝度をダウン) が acpi_ibm によって操作されることを指定します。
sysctl dev.acpi_ibm.0.handlerevents='0x04 0x10 0x11'
次の sysctl.conf(5) で:
dev.acpi_ibm.0.handlerevents=0x04\ 0x10\ 0x11
歴史
acpi_ibm デバイスドライバは FreeBSD 6.0 ではじめて登場しました。作者
acpi_ibm ドライバは <takawata@FreeBSD.org>によって書かれ、後で <markus@FreeBSD.org>よってほとんど書き直されました。このマニュアルページは <brueffer@FreeBSD.org>と <markus@FreeBSD.org>によって書かれました。June 24, 2012 | FreeBSD |