Provided by: freebsd-manpages_12.2-1_all bug

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
       applications 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 represents 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 information:

             system     "ACPI"
             subsystem  "IBM"
             type       The source of the event in the ACPI namespace.  The value 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 active or not.

       dev.acpi_ibm.0.fan
               Indicates whether the fan is in automatic (1) or manual (0) mode.   Default  is  automatic  mode.
               This  sysctl  should be used with extreme precaution, since disabling automatic fan control might
               overheat the ThinkPad and lead to permanent damage if the fan_level is not set accordingly.

       dev.acpi_ibm.0.fan_level
               Indicates at what speed the fan should run when being in manual mode.  Valid values range from  0
               (off)  to  7  (max) and 8.  Level 8 is used by the driver to set the fan in unthrottled mode.  In
               this mode, the fan is set to spin freely and will quickly reach a very high speed.  Use this mode
               only if absolutely necessary, e.g., if the system has reached its critical temperature and it  is
               about  to  shut  down.   The  resulting  speed differs from model to model.  On a T41p this is as
               follows:

               0           off
               1, 2        ~3000 RPM
               3, 4, 5     ~3600 RPM
               6, 7        ~4300 RPM
               8           ~6400 RPM (Full-speed, unthrottled)

       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  different  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 sensor 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

       dev.acpi_ibm.0.handlerevents
               devd(8)  events  handled  by  acpi_ibm  when  events  is  set  to  1.   Events are specified as a
               whitespace-separated list of event code in hexadecimal or decimal  form.   Note  that  the  event
               maybe handled twice (e.g., Brightness up/down) if ACPI BIOS already handled the event.

       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 $notify 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.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

       The following example specify that event code 0x04 (Suspend  to  RAM),  0x10  (Brightness  up)  and  0x11
       (Brightness down) are handled by acpi_ibm.

             sysctl dev.acpi_ibm.0.handlerevents='0x04 0x10 0x11'

       in sysctl.conf(5):

             dev.acpi_ibm.0.handlerevents=0x04\ 0x10\ 0x11

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@FreeBSD.org>.

Debian                                            June 24, 2020                                      ACPI_IBM(4)