acpi_ibm(4)
NAME
acpi_ibm - ACPI extras driver for IBM laptops
SYNOPSIS
To compile this driver into the kernel, place the following
line in your
kernel configuration file:
device acpi_ibm
Alternatively, to load the driver as a module at boot time,
place the
following line in loader.conf(5):
acpi_ibm_load="YES"
DESCRIPTION
- The acpi_ibm driver provides support for hotkeys and other
- components of
IBM laptops. The main purpose of this driver is to provide - an interface,
accessible via sysctl(8) and devd(8), through which applica - tions can
determine the status of various laptop components. - While the sysctl(8) interface is enabled automatically after
- loading the
driver, the devd(8) interface has to be enabled explicitly, - as it may
alter the default action of certain keys. This is done by - setting the
events sysctl as described below. Specifying which keys - should generate
events is done by setting a bitmask, whereas each bit repre - sents one key
or key combination. This bitmask, accessible via the - eventmask sysctl,
is set to availmask by default, a value representing all - possible keypress events on the specific ThinkPad model.
- devd(8) Events
- Hotkey events received by devd(8) provide the following in
- formation:
system "ACPI"
subsystem "IBM"
type The source of the event in the ACPI namespace. Thevalue depends on the model.notify Event code (see below). - Depending on the ThinkPad model, event codes may vary. On a
- ThinkPad
T41p these are as follows:
0x01 Fn + F1
0x02 Fn + F2
0x03 Fn + F3 (LCD backlight)
0x04 Fn + F4 (Suspend to RAM)
0x05 Fn + F5 (Bluetooth)
0x06 Fn + F6
0x07 Fn + F7 (Screen expand)
0x08 Fn + F8
0x09 Fn + F9
0x0a Fn + F10
0x0b Fn + F11
0x0c Fn + F12 (Suspend to disk)
0x0d Fn + Backspace
0x0e Fn + Insert
0x0f Fn + Delete
0x10 Fn + Home (Brightness up)
0x11 Fn + End (Brightness down)
0x12 Fn + PageUp (ThinkLight)
0x13 Fn + PageDown
0x14 Fn + Space (Zoom)
0x15 Volume Up
0x16 Volume Down
0x17 Mute
0x18 Access IBM Button - led(4) Interface
- The acpi_ibm driver provides a led(4) interface for the
- ThinkLight. The
ThinkLight can be made to blink by writing ASCII strings to - the
/dev/led/thinklight device.
SYSCTL VARIABLES
The following sysctls are currently implemented:
- dev.acpi_ibm.0.initialmask
- (read-only) Bitmask of ACPI events before the
- acpi_ibm driver was
loaded. - dev.acpi_ibm.0.availmask
- (read-only) Bitmask of all supported ACPI events.
- dev.acpi_ibm.0.events
- Enable ACPI events and set the eventmask to
- availmask. Without
the acpi_ibm driver being loaded, only the Fn+F4 - button generates
an ACPI event. - dev.acpi_ibm.0.eventmask
- Sets the ACPI events which are reported to devd(8).
- Fn+F3, Fn+F4
and Fn+F12 always generate ACPI events, regardless - which value
eventmask has. Depending on the ThinkPad model, the - meaning of
different bits in the eventmask may vary. On a - ThinkPad T41p
this is a bitwise OR of the following: - 1 Fn + F1
2 Fn + F2
4 Fn + F3 (LCD backlight)
8 Fn + F4 (Suspend to RAM)
16 Fn + F5 (Bluetooth)
32 Fn + F6
64 Fn + F7 (Screen expand)
128 Fn + F8
256 Fn + F9
512 Fn + F10
1024 Fn + F11
2048 Fn + F12 (Suspend to 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 Button - dev.acpi_ibm.0.hotkey
- (read-only) Status of several buttons. Every time a
- button is
pressed, the respecting bit is toggled. It is a - bitwise OR of
the following: - 1 Home Button
2 Search Button
4 Mail Button
8 Access IBM Button
16 Zoom
32 Wireless LAN Button
64 Video Button
128 Hibernate Button
256 ThinkLight Button
512 Screen Expand
1024 Brightness Up/Down Button
2048 Volume Up/Down/Mute Button - dev.acpi_ibm.0.lcd_brightness
- Current brightness level of the display.
- dev.acpi_ibm.0.volume
- Speaker volume.
- dev.acpi_ibm.0.mute
- Indicates, whether the speakers are muted or not.
- dev.acpi_ibm.0.thinklight
- Indicates, whether the ThinkLight keyboard light is
- activated or
not. - dev.acpi_ibm.0.bluetooth
- Toggle Bluetooth chip activity.
- dev.acpi_ibm.0.wlan
- (read-only) Indicates whether the WLAN chip is ac
- tive or not.
- dev.acpi_ibm.0.fan
- (read-only) Indicates whether the fan is on or off.
- dev.acpi_ibm.0.fan_speed
- (read-only) Fan speed in rounds per minute. A few
- older
ThinkPads report the fan speed in levels ranging - from 0 (off) to
7 (max). - dev.acpi_ibm.0.thermal
- (read-only) Shows the readings of up to eight dif
- ferent temperature sensors. Most ThinkPads include six or more
- temperature
sensors but only expose the CPU temperature through
acpi_thermal(4). Some ThinkPads have the below sen - sor layout
which might vary depending on the specific model: - 1. CPU
2. Mini PCI Module
3. HDD
4. GPU
5. Built-in battery
6. UltraBay battery
7. Built-in battery
8. UltraBay battery - Defaults for these sysctls can be set in sysctl.conf(5).
FILES
/dev/led/thinklight ThinkLight led(4) device node
EXAMPLES
- The following can be added to devd.conf(5) in order to pass
- button events
to a /usr/local/sbin/acpi_oem_exec.sh script:
notify 10 {
match "system" "ACPI";
match "subsystem" "IBM";
action "/usr/local/sbin/acpi_oem_exec.sh $no- tify ibm";
- };
- A possible /usr/local/sbin/acpi_oem_exec.sh script might
- look like:
#!/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.blue - tooth=0
MESSAGE="bluetooth disabled" - else
sysctl dev.acpi_${OEM}.0.blue - tooth=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
SEE ALSO
acpi(4), led(4), sysctl.conf(5), devd(8), sysctl(8)
HISTORY
The acpi_ibm device driver first appeared in FreeBSD 6.0.
AUTHORS
- The acpi_ibm driver was written by Takanori Watanabe
<takawata@FreeBSD.org> and later mostly rewritten by Markus - Brueffer
<markus@FreeBSD.org>. This manual page was written by - Christian Brueffer
<brueffer@FreeBSD.org> and Markus Brueffer <markus@FreeB - SD.org>.
- BSD January 14, 2006