1f2948e36SHasso Tepper.\" Copyright (c) 2005 Christian Brueffer 2f2948e36SHasso Tepper.\" Copyright (c) 2005 Markus Brueffer 3f2948e36SHasso Tepper.\" All rights reserved. 4f2948e36SHasso Tepper.\" 5f2948e36SHasso Tepper.\" Redistribution and use in source and binary forms, with or without 6f2948e36SHasso Tepper.\" modification, are permitted provided that the following conditions 7f2948e36SHasso Tepper.\" are met: 8f2948e36SHasso Tepper.\" 1. Redistributions of source code must retain the above copyright 9f2948e36SHasso Tepper.\" notice, this list of conditions and the following disclaimer. 10f2948e36SHasso Tepper.\" 2. Redistributions in binary form must reproduce the above copyright 11f2948e36SHasso Tepper.\" notice, this list of conditions and the following disclaimer in the 12f2948e36SHasso Tepper.\" documentation and/or other materials provided with the distribution. 13f2948e36SHasso Tepper.\" 14f2948e36SHasso Tepper.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15f2948e36SHasso Tepper.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16f2948e36SHasso Tepper.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17f2948e36SHasso Tepper.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18f2948e36SHasso Tepper.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19f2948e36SHasso Tepper.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20f2948e36SHasso Tepper.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21f2948e36SHasso Tepper.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22f2948e36SHasso Tepper.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23f2948e36SHasso Tepper.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24f2948e36SHasso Tepper.\" SUCH DAMAGE. 25f2948e36SHasso Tepper.\" 26*20befb6eSPierre-Alain TORET.\" $FreeBSD: head/share/man/man4/acpi_ibm.4 358333 2020-02-26 14:26:36Z kaktus $ 27f2948e36SHasso Tepper.\" 28*20befb6eSPierre-Alain TORET.Dd June 1, 2020 2921041a1aSSascha Wildner.Dt ACPI_THINKPAD 4 30f2948e36SHasso Tepper.Os 31f2948e36SHasso Tepper.Sh NAME 32f2948e36SHasso Tepper.Nm acpi_thinkpad 33*20befb6eSPierre-Alain TORET.Nd "ThinkPad ACPI extras driver" 34f2948e36SHasso Tepper.Sh SYNOPSIS 35f2948e36SHasso TepperTo compile this driver into the kernel, 36f2948e36SHasso Tepperplace the following line in your 37f2948e36SHasso Tepperkernel configuration file: 38f2948e36SHasso Tepper.Bd -ragged -offset indent 39f2948e36SHasso Tepper.Cd "device acpi_thinkpad" 40f2948e36SHasso Tepper.Ed 41f2948e36SHasso Tepper.Pp 42f2948e36SHasso TepperAlternatively, to load the driver as a 43f2948e36SHasso Teppermodule at boot time, place the following line in 44f2948e36SHasso Tepper.Xr loader.conf 5 : 45f2948e36SHasso Tepper.Bd -literal -offset indent 46f2948e36SHasso Tepperacpi_thinkpad_load="YES" 47f2948e36SHasso Tepper.Ed 48f2948e36SHasso Tepper.Sh DESCRIPTION 49f2948e36SHasso TepperThe 50f2948e36SHasso Tepper.Nm 51*20befb6eSPierre-Alain TORETdriver provides support for hotkeys and other components of ThinkPad laptops. 52f2948e36SHasso TepperThe main purpose of this driver is to provide an interface, 53f2948e36SHasso Tepperaccessible via 548dfecc5fSSascha Wildner.Xr sysctl 8 55b82fb0eeSHasso Tepperand 56b82fb0eeSHasso Tepper.Xr devd 8 , 57f2948e36SHasso Tepperthrough which applications can determine the status of 58f2948e36SHasso Teppervarious laptop components. 59b82fb0eeSHasso Tepper.Pp 60b82fb0eeSHasso TepperWhile the 61b82fb0eeSHasso Tepper.Xr sysctl 8 62b82fb0eeSHasso Tepperinterface is enabled automatically after loading the driver, the 63b82fb0eeSHasso Tepper.Xr devd 8 64b82fb0eeSHasso Tepperinterface has to be enabled explicitly, as it may alter the default action of 65b82fb0eeSHasso Teppercertain keys. 66b82fb0eeSHasso TepperThis is done by setting the 67b82fb0eeSHasso Tepper.Va events 68b82fb0eeSHasso Teppersysctl as described below. 69b82fb0eeSHasso TepperSpecifying which keys should generate events is done by setting a bitmask, 70b82fb0eeSHasso Tepperwhereas each bit represents one key or key combination. 71b82fb0eeSHasso TepperThis bitmask, accessible via the 72b82fb0eeSHasso Tepper.Va eventmask 73b82fb0eeSHasso Teppersysctl, is set to 74b82fb0eeSHasso Tepper.Va availmask 75b82fb0eeSHasso Tepperby default, a value representing all possible keypress events on the specific 76b82fb0eeSHasso TepperThinkPad model. 77*20befb6eSPierre-Alain TORET.Ss Xr devd 8 Events 78b82fb0eeSHasso TepperHotkey events received by 79b82fb0eeSHasso Tepper.Xr devd 8 80b82fb0eeSHasso Tepperprovide the following information: 81b82fb0eeSHasso Tepper.Pp 82b82fb0eeSHasso Tepper.Bl -tag -width "subsystem" -offset indent -compact 83b82fb0eeSHasso Tepper.It system 84b82fb0eeSHasso Tepper.Qq Li ACPI 85b82fb0eeSHasso Tepper.It subsystem 86b82fb0eeSHasso Tepper.Qq Li THINKPAD 87b82fb0eeSHasso Tepper.It type 88b82fb0eeSHasso TepperThe source of the event in the ACPI namespace. 89b82fb0eeSHasso TepperThe value depends on the model. 90b82fb0eeSHasso Tepper.It notify 91b82fb0eeSHasso TepperEvent code (see below). 92b82fb0eeSHasso Tepper.El 93b82fb0eeSHasso Tepper.Pp 94b82fb0eeSHasso TepperDepending on the ThinkPad model, event codes may vary. 95b82fb0eeSHasso TepperOn a ThinkPad T41p these are as follows: 96b82fb0eeSHasso Tepper.Pp 97b82fb0eeSHasso Tepper.Bl -tag -width "subsystem" -offset indent -compact 98b82fb0eeSHasso Tepper.It Li 0x01 99b82fb0eeSHasso TepperFn + F1 100b82fb0eeSHasso Tepper.It Li 0x02 101b82fb0eeSHasso TepperFn + F2 102b82fb0eeSHasso Tepper.It Li 0x03 103b82fb0eeSHasso TepperFn + F3 (LCD backlight) 104b82fb0eeSHasso Tepper.It Li 0x04 105b82fb0eeSHasso TepperFn + F4 (Suspend to RAM) 106b82fb0eeSHasso Tepper.It Li 0x05 107b82fb0eeSHasso TepperFn + F5 (Bluetooth) 108b82fb0eeSHasso Tepper.It Li 0x06 109b82fb0eeSHasso TepperFn + F6 110b82fb0eeSHasso Tepper.It Li 0x07 111b82fb0eeSHasso TepperFn + F7 (Screen expand) 112b82fb0eeSHasso Tepper.It Li 0x08 113b82fb0eeSHasso TepperFn + F8 114b82fb0eeSHasso Tepper.It Li 0x09 115b82fb0eeSHasso TepperFn + F9 116b82fb0eeSHasso Tepper.It Li 0x0a 117b82fb0eeSHasso TepperFn + F10 118b82fb0eeSHasso Tepper.It Li 0x0b 119b82fb0eeSHasso TepperFn + F11 120b82fb0eeSHasso Tepper.It Li 0x0c 121b82fb0eeSHasso TepperFn + F12 (Suspend to disk) 122b82fb0eeSHasso Tepper.It Li 0x0d 123b82fb0eeSHasso TepperFn + Backspace 124b82fb0eeSHasso Tepper.It Li 0x0e 125b82fb0eeSHasso TepperFn + Insert 126b82fb0eeSHasso Tepper.It Li 0x0f 127b82fb0eeSHasso TepperFn + Delete 128b82fb0eeSHasso Tepper.It Li 0x10 129b82fb0eeSHasso TepperFn + Home (Brightness up) 130b82fb0eeSHasso Tepper.It Li 0x11 131b82fb0eeSHasso TepperFn + End (Brightness down) 132b82fb0eeSHasso Tepper.It Li 0x12 133b82fb0eeSHasso TepperFn + PageUp (ThinkLight) 134b82fb0eeSHasso Tepper.It Li 0x13 135b82fb0eeSHasso TepperFn + PageDown 136b82fb0eeSHasso Tepper.It Li 0x14 137b82fb0eeSHasso TepperFn + Space (Zoom) 138b82fb0eeSHasso Tepper.It Li 0x15 139b82fb0eeSHasso TepperVolume Up 140b82fb0eeSHasso Tepper.It Li 0x16 141b82fb0eeSHasso TepperVolume Down 142b82fb0eeSHasso Tepper.It Li 0x17 143b82fb0eeSHasso TepperMute 144b82fb0eeSHasso Tepper.It Li 0x18 145*20befb6eSPierre-Alain TORETAccess THINKPAD Button 146b82fb0eeSHasso Tepper.El 147*20befb6eSPierre-Alain TORET.Ss Xr led 4 Interface 148e9283513SSascha WildnerThe 149e9283513SSascha Wildner.Nm 150e9283513SSascha Wildnerdriver provides a 151e9283513SSascha Wildner.Xr led 4 152e9283513SSascha Wildnerinterface for the ThinkLight. 153e9283513SSascha WildnerThe ThinkLight can be made to blink by writing 154e9283513SSascha Wildner.Tn ASCII 155e9283513SSascha Wildnerstrings to the 156e9283513SSascha Wildner.Pa /dev/led/thinklight 157e9283513SSascha Wildnerdevice. 158f2948e36SHasso Tepper.Sh SYSCTL VARIABLES 159f2948e36SHasso TepperThe following sysctls are currently implemented: 160f2948e36SHasso Tepper.Bl -tag -width indent 161*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.initialmask 162f2948e36SHasso Tepper(read-only) 163f2948e36SHasso TepperBitmask of ACPI events before the 164f2948e36SHasso Tepper.Nm 165f2948e36SHasso Tepperdriver was loaded. 166*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.availmask 167f2948e36SHasso Tepper(read-only) 168f2948e36SHasso TepperBitmask of all supported ACPI events. 169*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.events 170f2948e36SHasso TepperEnable ACPI events and set the 171f2948e36SHasso Tepper.Va eventmask 172f2948e36SHasso Tepperto 173f2948e36SHasso Tepper.Va availmask . 174f2948e36SHasso TepperWithout the 175f2948e36SHasso Tepper.Nm 176f2948e36SHasso Tepperdriver being loaded, only the Fn+F4 button generates an ACPI event. 177*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.eventmask 178f2948e36SHasso TepperSets the ACPI events which are reported to 1792f5aa587SSascha Wildner.Xr devd 8 . 180f2948e36SHasso TepperFn+F3, Fn+F4 and Fn+F12 always generate ACPI events, regardless which value 181f2948e36SHasso Tepper.Va eventmask 182f2948e36SHasso Tepperhas. 183f2948e36SHasso TepperDepending on the ThinkPad model, the meaning of different bits in the 184f2948e36SHasso Tepper.Va eventmask 185f2948e36SHasso Teppermay vary. 186f2948e36SHasso TepperOn a ThinkPad T41p this is a bitwise OR of the following: 187f2948e36SHasso Tepper.Pp 188f2948e36SHasso Tepper.Bl -tag -width indent-two -compact 189f2948e36SHasso Tepper.It Li 1 190f2948e36SHasso TepperFn + F1 191f2948e36SHasso Tepper.It Li 2 192f2948e36SHasso TepperFn + F2 193f2948e36SHasso Tepper.It Li 4 194f2948e36SHasso TepperFn + F3 (LCD backlight) 195f2948e36SHasso Tepper.It Li 8 196f2948e36SHasso TepperFn + F4 (Suspend to RAM) 197f2948e36SHasso Tepper.It Li 16 198f2948e36SHasso TepperFn + F5 (Bluetooth) 199f2948e36SHasso Tepper.It Li 32 200f2948e36SHasso TepperFn + F6 201f2948e36SHasso Tepper.It Li 64 202f2948e36SHasso TepperFn + F7 (Screen expand) 203f2948e36SHasso Tepper.It Li 128 204f2948e36SHasso TepperFn + F8 205f2948e36SHasso Tepper.It Li 256 206f2948e36SHasso TepperFn + F9 207f2948e36SHasso Tepper.It Li 512 208f2948e36SHasso TepperFn + F10 209f2948e36SHasso Tepper.It Li 1024 210f2948e36SHasso TepperFn + F11 211f2948e36SHasso Tepper.It Li 2048 212f2948e36SHasso TepperFn + F12 (Suspend to disk) 213f2948e36SHasso Tepper.It Li 4096 214f2948e36SHasso TepperFn + Backspace 215f2948e36SHasso Tepper.It Li 8192 216f2948e36SHasso TepperFn + Insert 217f2948e36SHasso Tepper.It Li 16384 218f2948e36SHasso TepperFn + Delete 219f2948e36SHasso Tepper.It Li 32768 220f2948e36SHasso TepperFn + Home (Brightness up) 221f2948e36SHasso Tepper.It Li 65536 222f2948e36SHasso TepperFn + End (Brightness down) 223f2948e36SHasso Tepper.It Li 131072 224f2948e36SHasso TepperFn + PageUp (ThinkLight) 225f2948e36SHasso Tepper.It Li 262144 226f2948e36SHasso TepperFn + PageDown 227f2948e36SHasso Tepper.It Li 524288 228f2948e36SHasso TepperFn + Space (Zoom) 229f2948e36SHasso Tepper.It Li 1048576 230f2948e36SHasso TepperVolume Up 231f2948e36SHasso Tepper.It Li 2097152 232f2948e36SHasso TepperVolume Down 233f2948e36SHasso Tepper.It Li 4194304 234f2948e36SHasso TepperMute 235f2948e36SHasso Tepper.It Li 8388608 236*20befb6eSPierre-Alain TORETAccess THINKPAD Button 237f2948e36SHasso Tepper.El 238*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.hotkey 239f2948e36SHasso Tepper(read-only) 240f2948e36SHasso TepperStatus of several buttons. 241f2948e36SHasso TepperEvery time a button is pressed, the respecting bit is toggled. 242f2948e36SHasso TepperIt is a bitwise OR of the following: 243f2948e36SHasso Tepper.Pp 244f2948e36SHasso Tepper.Bl -tag -width indent-two -compact 245f2948e36SHasso Tepper.It Li 1 246f2948e36SHasso TepperHome Button 247f2948e36SHasso Tepper.It Li 2 248f2948e36SHasso TepperSearch Button 249f2948e36SHasso Tepper.It Li 4 250f2948e36SHasso TepperMail Button 251f2948e36SHasso Tepper.It Li 8 252*20befb6eSPierre-Alain TORETAccess THINKPAD Button 253f2948e36SHasso Tepper.It Li 16 254f2948e36SHasso TepperZoom 255f2948e36SHasso Tepper.It Li 32 256f2948e36SHasso TepperWireless LAN Button 257f2948e36SHasso Tepper.It Li 64 258f2948e36SHasso TepperVideo Button 259f2948e36SHasso Tepper.It Li 128 260f2948e36SHasso TepperHibernate Button 261f2948e36SHasso Tepper.It Li 256 262f2948e36SHasso TepperThinkLight Button 263f2948e36SHasso Tepper.It Li 512 264f2948e36SHasso TepperScreen Expand 265f2948e36SHasso Tepper.It Li 1024 266f2948e36SHasso TepperBrightness Up/Down Button 267f2948e36SHasso Tepper.It Li 2048 268f2948e36SHasso TepperVolume Up/Down/Mute Button 269f2948e36SHasso Tepper.El 270*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.lcd_brightness 271f2948e36SHasso TepperCurrent brightness level of the display. 272*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.volume 273f2948e36SHasso TepperSpeaker volume. 274*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.mute 275f2948e36SHasso TepperIndicates, whether the speakers are muted or not. 276*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.mic_mute 277*20befb6eSPierre-Alain TORETIndicates, whether the microphone led (present on some model) is on or not. 278*20befb6eSPierre-Alain TORETNote that this does not mean that the microphone input is muted. 279*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.thinklight 280f2948e36SHasso TepperIndicates, whether the ThinkLight keyboard light is activated or not. 281*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.bluetooth 282f2948e36SHasso TepperToggle Bluetooth chip activity. 283*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.wlan 284f2948e36SHasso Tepper(read-only) 285f2948e36SHasso TepperIndicates whether the WLAN chip is active or not. 286*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.fan 287f2948e36SHasso TepperIndicates whether the fan is in automatic (1) or manual (0) mode. 288f2948e36SHasso TepperDefault is automatic mode. 289f2948e36SHasso TepperThis sysctl should be used with extreme precaution, since disabling automatic 290f2948e36SHasso Tepperfan control might overheat the ThinkPad and lead to permanent damage if the 291f2948e36SHasso Tepper.Va fan_level 292f2948e36SHasso Tepperis not set accordingly. 293*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.fan_level 294f2948e36SHasso TepperIndicates at what speed the fan should run when being in manual mode. 295f2948e36SHasso TepperValues are ranging from 0 (off) to 7 (max). 296f2948e36SHasso TepperThe resulting speed differs from model to model. 297f2948e36SHasso TepperOn a T41p this is as follows: 298f2948e36SHasso Tepper.Pp 299f2948e36SHasso Tepper.Bl -tag -width indent-two -compact 300f2948e36SHasso Tepper.It Li 0 301f2948e36SHasso Tepperoff 302f2948e36SHasso Tepper.It Li 1, 2 303f2948e36SHasso Tepper~3000 RPM 304f2948e36SHasso Tepper.It Li 3, 4, 5 305f2948e36SHasso Tepper~3600 RPM 306f2948e36SHasso Tepper.It Li 6, 7 307f2948e36SHasso Tepper~4300 RPM 308f2948e36SHasso Tepper.El 309*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.fan_speed 3102f5aa587SSascha Wildner(read-only) 3112f5aa587SSascha WildnerFan speed in rounds per minute. 3122f5aa587SSascha WildnerA few older ThinkPads report the fan speed in levels ranging from 0 (off) 3132f5aa587SSascha Wildnerto 7 (max). 314*20befb6eSPierre-Alain TORET.It Va hw.acpi.thermal 3152f5aa587SSascha Wildner(read-only) 3162f5aa587SSascha WildnerShows the readings of up to eight different temperature sensors. 317f2948e36SHasso TepperMost ThinkPads include six or more temperature sensors but 318f2948e36SHasso Tepperonly expose the CPU temperature through 319f2948e36SHasso Tepper.Xr acpi_thermal 4 . 320f2948e36SHasso TepperSome ThinkPads have the below sensor layout which might vary depending on the 321f2948e36SHasso Tepperspecific model: 322f2948e36SHasso Tepper.Pp 323f2948e36SHasso Tepper.Bl -enum -compact 324f2948e36SHasso Tepper.It 325f2948e36SHasso TepperCPU 326f2948e36SHasso Tepper.It 327f2948e36SHasso TepperMini PCI Module 328f2948e36SHasso Tepper.It 329f2948e36SHasso TepperHDD 330f2948e36SHasso Tepper.It 331f2948e36SHasso TepperGPU 332f2948e36SHasso Tepper.It 333f2948e36SHasso TepperBuilt-in battery 334f2948e36SHasso Tepper.It 335f2948e36SHasso TepperUltraBay battery 336f2948e36SHasso Tepper.It 337f2948e36SHasso TepperBuilt-in battery 338f2948e36SHasso Tepper.It 339f2948e36SHasso TepperUltraBay battery 340f2948e36SHasso Tepper.El 341*20befb6eSPierre-Alain TORET.It Va dev.acpi_thinkpad.<node>.handlerevents 342a31756d0SMarkus Pfeiffer.Xr devd 8 343a31756d0SMarkus Pfeifferevents handled by 344a31756d0SMarkus Pfeiffer.Nm 345a31756d0SMarkus Pfeifferwhen 346a31756d0SMarkus Pfeiffer.Va events 347a31756d0SMarkus Pfeifferis set to 1. 348a31756d0SMarkus PfeifferEvents are specified as a whitespace-separated list of event code in 349a31756d0SMarkus Pfeifferhexadecimal or decimal form. 350a31756d0SMarkus PfeifferNote that the event may be handled twice (eg. Brightness up/down) if ACPI BIOS 351a31756d0SMarkus Pfeifferalready handled the event. 3522f5aa587SSascha Wildner.It Va hw.sensors.acpi_thinkpad0.tempX 3532f5aa587SSascha WildnerShow the readings of up to eight different temperature sensors. 354f2948e36SHasso Tepper.It Va hw.sensors.acpi_thinkpad0.fan0 355f2948e36SHasso TepperFan speed in rounds per minute. 356f2948e36SHasso Tepper.\" A few older ThinkPads report the fan speed in levels ranging from 0 (off) 357f2948e36SHasso Tepper.\" to 7 (max). 358f2948e36SHasso Tepper.El 359f2948e36SHasso Tepper.Pp 360f2948e36SHasso TepperDefaults for these sysctls can be set in 361f2948e36SHasso Tepper.Xr sysctl.conf 5 . 362f2948e36SHasso TepperSensors can be monitored by 363f2948e36SHasso Tepper.Xr sensorsd 8 . 364e9283513SSascha Wildner.Sh FILES 365e9283513SSascha Wildner.Bl -tag -width ".Pa /dev/led/thinklight" 366e9283513SSascha Wildner.It Pa /dev/led/thinklight 367e9283513SSascha WildnerThinkLight 368e9283513SSascha Wildner.Xr led 4 369e9283513SSascha Wildnerdevice node 370e9283513SSascha Wildner.El 371b82fb0eeSHasso Tepper.Sh EXAMPLES 372b82fb0eeSHasso TepperThe following can be added to 373b82fb0eeSHasso Tepper.Xr devd.conf 5 374b82fb0eeSHasso Tepperin order to pass button events to a 375b82fb0eeSHasso Tepper.Pa /usr/local/sbin/acpi_oem_exec.sh 376b82fb0eeSHasso Tepperscript: 377b82fb0eeSHasso Tepper.Bd -literal -offset indent 378b82fb0eeSHasso Teppernotify 10 { 379b82fb0eeSHasso Tepper match "system" "ACPI"; 380*20befb6eSPierre-Alain TORET match "subsystem" "THINKPAD"; 381*20befb6eSPierre-Alain TORET action "/usr/local/sbin/acpi_oem_exec.sh $notify thinkpad"; 382b82fb0eeSHasso Tepper}; 383b82fb0eeSHasso Tepper.Ed 384b82fb0eeSHasso Tepper.Pp 385b82fb0eeSHasso TepperA possible 386b82fb0eeSHasso Tepper.Pa /usr/local/sbin/acpi_oem_exec.sh 387b82fb0eeSHasso Tepperscript might look like: 388b82fb0eeSHasso Tepper.Bd -literal -offset indent 389b82fb0eeSHasso Tepper#!/bin/sh 390b82fb0eeSHasso Tepper# 391b82fb0eeSHasso Tepperif [ "$1" = "" -o "$2" = "" ] 392b82fb0eeSHasso Tepperthen 393b82fb0eeSHasso Tepper echo "usage: $0 notify oem_name" 394b82fb0eeSHasso Tepper exit 1 395b82fb0eeSHasso Tepperfi 396b82fb0eeSHasso TepperNOTIFY=`echo $1` 397b82fb0eeSHasso TepperLOGGER="logger" 398b82fb0eeSHasso TepperCALC="bc" 399b82fb0eeSHasso TepperBC_PRECOMMANDS="scale=2" 400b82fb0eeSHasso TepperECHO="echo" 401b82fb0eeSHasso TepperCUT="cut" 402b82fb0eeSHasso TepperMAX_LCD_BRIGHTNESS=7 403b82fb0eeSHasso TepperMAX_VOLUME=14 404b82fb0eeSHasso TepperOEM=$2 405b82fb0eeSHasso TepperDISPLAY_PIPE=/tmp/acpi_${OEM}_display 406b82fb0eeSHasso Tepper 407b82fb0eeSHasso Teppercase ${NOTIFY} in 408b82fb0eeSHasso Tepper 0x05) 409*20befb6eSPierre-Alain TORET LEVEL=`sysctl -n dev.acpi_${OEM}.0.bluetooth` 410b82fb0eeSHasso Tepper if [ "$LEVEL" = "1" ] 411b82fb0eeSHasso Tepper then 412*20befb6eSPierre-Alain TORET sysctl dev.acpi_${OEM}.0.bluetooth=0 413b82fb0eeSHasso Tepper MESSAGE="bluetooth disabled" 414b82fb0eeSHasso Tepper else 415*20befb6eSPierre-Alain TORET sysctl dev.acpi_${OEM}.0.bluetooth=1 416b82fb0eeSHasso Tepper MESSAGE="bluetooth enabled" 417b82fb0eeSHasso Tepper fi 418b82fb0eeSHasso Tepper ;; 419b82fb0eeSHasso Tepper 0x10|0x11) 420*20befb6eSPierre-Alain TORET LEVEL=`sysctl -n dev.acpi_${OEM}.0.lcd_brightness` 421b82fb0eeSHasso Tepper PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \\ 422b82fb0eeSHasso Tepper ${LEVEL} / ${MAX_LCD_BRIGHTNESS} * 100" |\\ 423b82fb0eeSHasso Tepper ${CALC} | ${CUT} -d . -f 1` 424b82fb0eeSHasso Tepper MESSAGE="brightness level ${PERCENT}%" 425b82fb0eeSHasso Tepper ;; 426b82fb0eeSHasso Tepper 0x12) 427*20befb6eSPierre-Alain TORET LEVEL=`sysctl -n dev.acpi_${OEM}.0.thinklight` 428b82fb0eeSHasso Tepper if [ "$LEVEL" = "1" ] 429b82fb0eeSHasso Tepper then 430b82fb0eeSHasso Tepper MESSAGE="thinklight enabled" 431b82fb0eeSHasso Tepper else 432b82fb0eeSHasso Tepper MESSAGE="thinklight disabled" 433b82fb0eeSHasso Tepper fi 434b82fb0eeSHasso Tepper ;; 435b82fb0eeSHasso Tepper 0x15|0x16) 436*20befb6eSPierre-Alain TORET LEVEL=`sysctl -n dev.acpi_${OEM}.0.volume` 437b82fb0eeSHasso Tepper PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \\ 438b82fb0eeSHasso Tepper ${LEVEL} / ${MAX_VOLUME} * 100" | \\ 439b82fb0eeSHasso Tepper ${CALC} | ${CUT} -d . -f 1` 440b82fb0eeSHasso Tepper MESSAGE="volume level ${PERCENT}%" 441b82fb0eeSHasso Tepper ;; 442b82fb0eeSHasso Tepper 0x17) 443*20befb6eSPierre-Alain TORET LEVEL=`sysctl -n dev.acpi_${OEM}.0.mute` 444b82fb0eeSHasso Tepper if [ "$LEVEL" = "1" ] 445b82fb0eeSHasso Tepper then 446b82fb0eeSHasso Tepper MESSAGE="volume muted" 447b82fb0eeSHasso Tepper else 448b82fb0eeSHasso Tepper MESSAGE="volume unmuted" 449b82fb0eeSHasso Tepper fi 450b82fb0eeSHasso Tepper ;; 451*20befb6eSPierre-Alain TORET 0x1b) 452*20befb6eSPierre-Alain TORET LEVEL=`sysctl -n dev.acpi_${OEM}.0.mic_led` 453*20befb6eSPierre-Alain TORET if [ $LEVEL -eq 0 ]; then 454*20befb6eSPierre-Alain TORET sysctl dev.acpi_${OEM}.0.mic_led=1 455*20befb6eSPierre-Alain TORET mixer rec 0 456*20befb6eSPierre-Alain TORET fi 457*20befb6eSPierre-Alain TORET if [ $LEVEL -eq 1 ]; then 458*20befb6eSPierre-Alain TORET sysctl dev.acpi_${OEM}.0.mic_led=0 459*20befb6eSPierre-Alain TORET mixer rec 30 460*20befb6eSPierre-Alain TORET fi 461*20befb6eSPierre-Alain TORET ;; 462b82fb0eeSHasso Tepper *) 463b82fb0eeSHasso Tepper ;; 464b82fb0eeSHasso Tepperesac 465b82fb0eeSHasso Tepper${LOGGER} ${MESSAGE} 466b82fb0eeSHasso Tepperif [ -p ${DISPLAY_PIPE} ] 467b82fb0eeSHasso Tepperthen 468b82fb0eeSHasso Tepper ${ECHO} ${MESSAGE} >> ${DISPLAY_PIPE} & 469b82fb0eeSHasso Tepperfi 470b82fb0eeSHasso Tepperexit 0 471b82fb0eeSHasso Tepper.Ed 472a31756d0SMarkus Pfeiffer.Pp 473a31756d0SMarkus PfeifferThe following example specify that event code 0x04 (Suspend to RAM), 474a31756d0SMarkus Pfeiffer0x10 (Brightness up) and 0x11 (Brightness down) are handled by 475a31756d0SMarkus Pfeiffer.Nm . 476a31756d0SMarkus Pfeiffer.Bd -literal -offset indent 477*20befb6eSPierre-Alain TORETsysctl dev.acpi_thinkpad.0.handlerevents='0x04 0x10 0x11' 478a31756d0SMarkus Pfeiffer.Ed 479a31756d0SMarkus Pfeiffer.Pp 480a31756d0SMarkus Pfeifferin 481a31756d0SMarkus Pfeiffer.Xr sysctl.conf 5 : 482a31756d0SMarkus Pfeiffer.Bd -literal -offset indent 483a31756d0SMarkus Pfeifferhw.acpi.thinkpad.handlerevents=0x04\\ 0x10\\ 0x11 484a31756d0SMarkus Pfeiffer.Ed 485f2948e36SHasso Tepper.Sh SEE ALSO 486f2948e36SHasso Tepper.Xr acpi 4 , 487e9283513SSascha Wildner.Xr led 4 , 488f2948e36SHasso Tepper.Xr sysctl.conf 5 , 489b82fb0eeSHasso Tepper.Xr devd 8 , 490f2948e36SHasso Tepper.Xr sensorsd 8 , 491f2948e36SHasso Tepper.Xr sysctl 8 492f2948e36SHasso Tepper.Sh HISTORY 493f2948e36SHasso TepperThe 494f2948e36SHasso Tepper.Nm 495f2948e36SHasso Tepperdevice driver first appeared in 496f2948e36SHasso Tepper.Fx 6.0 497f2948e36SHasso Tepperand was imported into 498f2948e36SHasso Tepper.Dx 2.1 . 499f2948e36SHasso Tepper.Sh AUTHORS 500f2948e36SHasso Tepper.An -nosplit 501f2948e36SHasso TepperThe 502f2948e36SHasso Tepper.Nm 503f2948e36SHasso Tepperdriver was written by 504b2a6f486SFranco Fichtner.An Takanori Watanabe Aq Mt takawata@FreeBSD.org 505f2948e36SHasso Tepperand later mostly rewritten by 506b2a6f486SFranco Fichtner.An Markus Brueffer Aq Mt markus@FreeBSD.org . 507f2948e36SHasso TepperThis manual page was written by 508b2a6f486SFranco Fichtner.An Christian Brueffer Aq Mt brueffer@FreeBSD.org 509f2948e36SHasso Tepperand 510b2a6f486SFranco Fichtner.An Markus Brueffer Aq Mt markus@FreeBSD.org . 511