blob: 91d08921a4cae6353863c38da8c4599b289c3319 [file] [log] [blame]
Henrique de Moraes Holschuh643f12d2007-03-29 01:58:43 -03001 ThinkPad ACPI Extras Driver
Linus Torvalds1da177e2005-04-16 15:20:36 -07002
Henrique de Moraes Holschuh643f12d2007-03-29 01:58:43 -03003 Version 0.14
Henrique de Moraes Holschuh54ae1502007-04-24 11:48:12 -03004 April 21st, 2007
Linus Torvalds1da177e2005-04-16 15:20:36 -07005
6 Borislav Deianov <borislav@users.sf.net>
Henrique de Moraes Holschuh38f996e2007-03-23 17:33:59 -03007 Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Linus Torvalds1da177e2005-04-16 15:20:36 -07008 http://ibm-acpi.sf.net/
9
10
Henrique de Moraes Holschuh643f12d2007-03-29 01:58:43 -030011This is a Linux driver for the IBM and Lenovo ThinkPad laptops. It
12supports various features of these laptops which are accessible
13through the ACPI and ACPI EC framework, but not otherwise fully
14supported by the generic Linux ACPI drivers.
15
16This driver used to be named ibm-acpi until kernel 2.6.21 and release
170.13-20070314. It used to be in the drivers/acpi tree, but it was
18moved to the drivers/misc tree and renamed to thinkpad-acpi for kernel
192.6.22, and release 0.14.
Linus Torvalds1da177e2005-04-16 15:20:36 -070020
21
22Status
23------
24
25The features currently supported are the following (see below for
26detailed description):
27
28 - Fn key combinations
29 - Bluetooth enable and disable
Henrique de Moraes Holschuh837ca6d2007-03-23 17:33:54 -030030 - video output switching, expansion control
Linus Torvalds1da177e2005-04-16 15:20:36 -070031 - ThinkLight on and off
32 - limited docking and undocking
33 - UltraBay eject
Borislav Deianov78f81cc2005-08-17 00:00:00 -040034 - CMOS control
35 - LED control
36 - ACPI sounds
37 - temperature sensors
38 - Experimental: embedded controller register dump
Stefan Schmidt24f7ff02006-09-22 12:19:15 +020039 - LCD brightness control
40 - Volume control
Henrique de Moraes Holschuhecf2a802007-04-27 22:00:09 -030041 - Fan control and monitoring: fan speed, fan enable/disable
Stefan Schmidt28b779d2006-09-22 12:19:16 +020042 - Experimental: WAN enable and disable
Linus Torvalds1da177e2005-04-16 15:20:36 -070043
44A compatibility table by model and feature is maintained on the web
45site, http://ibm-acpi.sf.net/. I appreciate any success or failure
46reports, especially if they add to or correct the compatibility table.
47Please include the following information in your report:
48
49 - ThinkPad model name
50 - a copy of your DSDT, from /proc/acpi/dsdt
Henrique de Moraes Holschuh643f12d2007-03-29 01:58:43 -030051 - a copy of the output of dmidecode, with serial numbers
52 and UUIDs masked off
Linus Torvalds1da177e2005-04-16 15:20:36 -070053 - which driver features work and which don't
54 - the observed behavior of non-working features
55
56Any other comments or patches are also more than welcome.
57
58
59Installation
60------------
61
62If you are compiling this driver as included in the Linux kernel
Henrique de Moraes Holschuh643f12d2007-03-29 01:58:43 -030063sources, simply enable the CONFIG_THINKPAD_ACPI option, and optionally
64enable the CONFIG_THINKPAD_ACPI_BAY option if you want the
65thinkpad-specific bay functionality.
Linus Torvalds1da177e2005-04-16 15:20:36 -070066
67Features
68--------
69
Henrique de Moraes Holschuh54ae1502007-04-24 11:48:12 -030070The driver exports two different interfaces to userspace, which can be
71used to access the features it provides. One is a legacy procfs-based
72interface, which will be removed at some time in the distant future.
73The other is a new sysfs-based interface which is not complete yet.
74
75The procfs interface creates the /proc/acpi/ibm directory. There is a
76file under that directory for each feature it supports. The procfs
77interface is mostly frozen, and will change very little if at all: it
78will not be extended to add any new functionality in the driver, instead
79all new functionality will be implemented on the sysfs interface.
80
81The sysfs interface tries to blend in the generic Linux sysfs subsystems
82and classes as much as possible. Since some of these subsystems are not
83yet ready or stabilized, it is expected that this interface will change,
84and any and all userspace programs must deal with it.
85
86
87Notes about the sysfs interface:
88
89Unlike what was done with the procfs interface, correctness when talking
90to the sysfs interfaces will be enforced, as will correctness in the
91thinkpad-acpi's implementation of sysfs interfaces.
92
93Also, any bugs in the thinkpad-acpi sysfs driver code or in the
94thinkpad-acpi's implementation of the sysfs interfaces will be fixed for
95maximum correctness, even if that means changing an interface in
96non-compatible ways. As these interfaces mature both in the kernel and
97in thinkpad-acpi, such changes should become quite rare.
98
99Applications interfacing to the thinkpad-acpi sysfs interfaces must
100follow all sysfs guidelines and correctly process all errors (the sysfs
101interface makes extensive use of errors). File descriptors and open /
102close operations to the sysfs inodes must also be properly implemented.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700103
Henrique de Moraes Holschuh176750d2007-04-24 11:48:13 -0300104The version of thinkpad-acpi's sysfs interface is exported by the driver
105as a driver attribute (see below).
106
107Sysfs driver attributes are on the driver's sysfs attribute space,
108for 2.6.20 this is /sys/bus/platform/drivers/thinkpad-acpi/.
109
110Sysfs device attributes are on the driver's sysfs attribute space,
111for 2.6.20 this is /sys/devices/platform/thinkpad-acpi/.
112
113Driver version
114--------------
115
116procfs: /proc/acpi/ibm/driver
117sysfs driver attribute: version
Linus Torvalds1da177e2005-04-16 15:20:36 -0700118
119The driver name and version. No commands can be written to this file.
120
Henrique de Moraes Holschuh176750d2007-04-24 11:48:13 -0300121Sysfs interface version
122-----------------------
123
124sysfs driver attribute: interface_version
125
126Version of the thinkpad-acpi sysfs interface, as an unsigned long
127(output in hex format: 0xAAAABBCC), where:
128 AAAA - major revision
129 BB - minor revision
130 CC - bugfix revision
131
132The sysfs interface version changelog for the driver can be found at the
133end of this document. Changes to the sysfs interface done by the kernel
134subsystems are not documented here, nor are they tracked by this
135attribute.
136
Henrique de Moraes Holschuh94b08712007-07-18 23:45:32 -0300137Changes to the thinkpad-acpi sysfs interface are only considered
138non-experimental when they are submitted to Linux mainline, at which
139point the changes in this interface are documented and interface_version
140may be updated. If you are using any thinkpad-acpi features not yet
141sent to mainline for merging, you do so on your own risk: these features
142may disappear, or be implemented in a different and incompatible way by
143the time they are merged in Linux mainline.
144
145Changes that are backwards-compatible by nature (e.g. the addition of
146attributes that do not change the way the other attributes work) do not
147always warrant an update of interface_version. Therefore, one must
148expect that an attribute might not be there, and deal with it properly
149(an attribute not being there *is* a valid way to make it clear that a
150feature is not available in sysfs).
151
Henrique de Moraes Holschuha0416422007-04-27 22:00:16 -0300152Hot keys
153--------
154
155procfs: /proc/acpi/ibm/hotkey
Henrique de Moraes Holschuhcc4c24e2007-05-30 20:50:14 -0300156sysfs device attribute: hotkey_*
Linus Torvalds1da177e2005-04-16 15:20:36 -0700157
158Without this driver, only the Fn-F4 key (sleep button) generates an
159ACPI event. With the driver loaded, the hotkey feature enabled and the
160mask set (see below), the various hot keys generate ACPI events in the
161following format:
162
163 ibm/hotkey HKEY 00000080 0000xxxx
164
165The last four digits vary depending on the key combination pressed.
166All labeled Fn-Fx key combinations generate distinct events. In
167addition, the lid microswitch and some docking station buttons may
168also generate such events.
169
Henrique de Moraes Holschuh6a38abb2007-07-18 23:45:35 -0300170Hot keys also generate regular keyboard key press/release events through
171the input layer in addition to the ibm/hotkey ACPI events. The input
172layer support accepts the standard IOCTLs to remap the keycodes assigned
173to each hotkey.
174
175When the input device is open, the driver will suppress any ACPI hot key
176events that get translated into a meaningful input layer event, in order
177to avoid sending duplicate events to userspace. Hot keys that are
178mapped to KEY_RESERVED are not translated, and will always generate only
179ACPI hot key event, and no input layer events.
180
Linus Torvalds1da177e2005-04-16 15:20:36 -0700181The bit mask allows some control over which hot keys generate ACPI
Henrique de Moraes Holschuhae92bd12007-07-18 23:45:29 -0300182events. Not all bits in the mask can be modified. Not all bits that can
183be modified do anything. Not all hot keys can be individually controlled
184by the mask. Some models do not support the mask at all. On those
185models, hot keys cannot be controlled individually.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700186
187Note that enabling ACPI events for some keys prevents their default
Henrique de Moraes Holschuhae92bd12007-07-18 23:45:29 -0300188behavior. For example, if events for Fn-F5 are enabled, that key will no
189longer enable/disable Bluetooth by itself. This can still be done from
190an acpid handler for the ibm/hotkey event.
191
192On some models, even enabling/disabling the entire hot key feature may
193change the way some keys behave (e.g. in a T43, Fn+F4 will generate an
194button/sleep ACPI event if hot keys are disabled, and it will ignore its
195mask when hot keys are enabled, so the key always does something. On a
196X40, Fn+F4 respects its mask status, but generates the button/sleep ACPI
197event if masked off).
Linus Torvalds1da177e2005-04-16 15:20:36 -0700198
199Note also that not all Fn key combinations are supported through
200ACPI. For example, on the X40, the brightness, volume and "Access IBM"
201buttons do not generate ACPI events even with this driver. They *can*
202be used through the "ThinkPad Buttons" utility, see
203http://www.nongnu.org/tpb/
204
Henrique de Moraes Holschuha0416422007-04-27 22:00:16 -0300205procfs notes:
206
207The following commands can be written to the /proc/acpi/ibm/hotkey file:
208
209 echo enable > /proc/acpi/ibm/hotkey -- enable the hot keys feature
210 echo disable > /proc/acpi/ibm/hotkey -- disable the hot keys feature
Henrique de Moraes Holschuhae92bd12007-07-18 23:45:29 -0300211 echo 0xffffffff > /proc/acpi/ibm/hotkey -- enable all hot keys
212 echo 0 > /proc/acpi/ibm/hotkey -- disable all possible hot keys
213 ... any other 8-hex-digit mask ...
Henrique de Moraes Holschuha0416422007-04-27 22:00:16 -0300214 echo reset > /proc/acpi/ibm/hotkey -- restore the original mask
215
216sysfs notes:
217
Henrique de Moraes Holschuhcc4c24e2007-05-30 20:50:14 -0300218 hotkey_bios_enabled:
Henrique de Moraes Holschuha0416422007-04-27 22:00:16 -0300219 Returns the status of the hot keys feature when
220 thinkpad-acpi was loaded. Upon module unload, the hot
221 key feature status will be restored to this value.
222
223 0: hot keys were disabled
224 1: hot keys were enabled
225
Henrique de Moraes Holschuhcc4c24e2007-05-30 20:50:14 -0300226 hotkey_bios_mask:
Henrique de Moraes Holschuha0416422007-04-27 22:00:16 -0300227 Returns the hot keys mask when thinkpad-acpi was loaded.
228 Upon module unload, the hot keys mask will be restored
229 to this value.
230
Henrique de Moraes Holschuhcc4c24e2007-05-30 20:50:14 -0300231 hotkey_enable:
Henrique de Moraes Holschuha0416422007-04-27 22:00:16 -0300232 Enables/disables the hot keys feature, and reports
233 current status of the hot keys feature.
234
235 0: disables the hot keys feature / feature disabled
236 1: enables the hot keys feature / feature enabled
237
Henrique de Moraes Holschuhcc4c24e2007-05-30 20:50:14 -0300238 hotkey_mask:
Henrique de Moraes Holschuha0416422007-04-27 22:00:16 -0300239 bit mask to enable ACPI event generation for each hot
240 key (see above). Returns the current status of the hot
241 keys mask, and allows one to modify it.
242
Henrique de Moraes Holschuh9b010de2007-07-18 23:45:30 -0300243 hotkey_all_mask:
244 bit mask that should enable event reporting for all
245 supported hot keys, when echoed to hotkey_mask above.
246 Unless you know which events need to be handled
247 passively (because the firmware *will* handle them
248 anyway), do *not* use hotkey_all_mask. Use
249 hotkey_recommended_mask, instead. You have been warned.
250
251 hotkey_recommended_mask:
252 bit mask that should enable event reporting for all
253 supported hot keys, except those which are handled by
254 the firmware. Echo it to hotkey_mask above, to use.
255
Henrique de Moraes Holschuh74941a62007-07-18 23:45:31 -0300256 hotkey_radio_sw:
257 if the ThinkPad has a hardware radio switch, this
258 attribute will read 0 if the switch is in the "radios
259 disabled" postition, and 1 if the switch is in the
260 "radios enabled" position.
261
Henrique de Moraes Holschuh6a38abb2007-07-18 23:45:35 -0300262input layer notes:
263
264A Hot key is mapped to a single input layer EV_KEY event, possibly
265followed by an EV_MSC MSC_SCAN event that shall contain that key's scan
266code. An EV_SYN event will always be generated to mark the end of the
267event block.
268
269Do not use the EV_MSC MSC_SCAN events to process keys. They are to be
270used as a helper to remap keys, only. They are particularly useful when
271remapping KEY_UNKNOWN keys.
272
273The events are available in an input device, with the following id:
274
275 Bus: BUS_HOST
276 vendor: 0x1014 (PCI_VENDOR_ID_IBM)
277 product: 0x5054 ("TP")
278 version: 0x4101
279
280The version will have its LSB incremented if the keymap changes in a
281backwards-compatible way. The MSB shall always be 0x41 for this input
282device. If the MSB is not 0x41, do not use the device as described in
283this section, as it is either something else (e.g. another input device
284exported by a thinkpad driver, such as HDAPS) or its functionality has
285been changed in a non-backwards compatible way.
286
287Adding other event types for other functionalities shall be considered a
288backwards-compatible change for this input device.
289
290Thinkpad-acpi Hot Key event map (version 0x4101):
291
292ACPI Scan
293event code Key Notes
294
2950x1001 0x00 FN+F1 -
2960x1002 0x01 FN+F2 -
297
2980x1003 0x02 FN+F3 Many models always report this
299 hot key, even with hot keys
300 disabled or with Fn+F3 masked
301 off
302
3030x1004 0x03 FN+F4 Sleep button (ACPI sleep button
304 semanthics, i.e. sleep-to-RAM).
305 It is always generate some kind
306 of event, either the hot key
307 event or a ACPI sleep button
308 event. The firmware may
309 refuse to generate further FN+F4
310 key presses until a S3 or S4 ACPI
311 sleep cycle is performed or some
312 time passes.
313
3140x1005 0x04 FN+F5 Radio. Enables/disables
315 the internal BlueTooth hardware
316 and W-WAN card if left in control
317 of the firmware. Does not affect
318 the WLAN card.
319
3200x1006 0x05 FN+F6 -
321
3220x1007 0x06 FN+F7 Video output cycle.
323 Do you feel lucky today?
324
3250x1008 0x07 FN+F8 -
326 .. .. ..
3270x100B 0x0A FN+F11 -
328
3290x100C 0x0B FN+F12 Sleep to disk. You are always
330 supposed to handle it yourself,
331 either through the ACPI event,
332 or through a hotkey event.
333 The firmware may refuse to
334 generate further FN+F4 key
335 press events until a S3 or S4
336 ACPI sleep cycle is performed,
337 or some time passes.
338
3390x100D 0x0C FN+BACKSPACE -
3400x100E 0x0D FN+INSERT -
3410x100F 0x0E FN+DELETE -
342
3430x1010 0x0F FN+HOME Brightness up. This key is
344 always handled by the firmware,
345 even when unmasked. Just leave
346 it alone.
3470x1011 0x10 FN+END Brightness down. This key is
348 always handled by the firmware,
349 even when unmasked. Just leave
350 it alone.
3510x1012 0x11 FN+PGUP Thinklight toggle. This key is
352 always handled by the firmware,
353 even when unmasked.
354
3550x1013 0x12 FN+PGDOWN -
356
3570x1014 0x13 FN+SPACE Zoom key
358
3590x1015 0x14 VOLUME UP Internal mixer volume up. This
360 key is always handled by the
361 firmware, even when unmasked.
3620x1016 0x15 VOLUME DOWN Internal mixer volume up. This
363 key is always handled by the
364 firmware, even when unmasked.
3650x1017 0x16 MUTE Mute internal mixer. This
366 key is always handled by the
367 firmware, even when unmasked.
368
3690x1018 0x17 THINKPAD Thinkpad/Access IBM/Lenovo key
370
3710x1019 0x18 unknown
372.. .. ..
3730x1020 0x1F unknown
374
375The ThinkPad firmware does not allow one to differentiate when most hot
376keys are pressed or released (either that, or we don't know how to, yet).
377For these keys, the driver generates a set of events for a key press and
378immediately issues the same set of events for a key release. It is
379unknown by the driver if the ThinkPad firmware triggered these events on
380hot key press or release, but the firmware will do it for either one, not
381both.
382
383If a key is mapped to KEY_RESERVED, it generates no input events at all,
384and it may generate a legacy thinkpad-acpi ACPI hotkey event.
385
386If a key is mapped to KEY_UNKNOWN, it generates an input event that
387includes an scan code, and it may also generate a legacy thinkpad-acpi
388ACPI hotkey event.
389
390If a key is mapped to anything else, it will only generate legacy
391thinkpad-acpi ACPI hotkey events if nobody has opened the input device.
392
393For userspace backwards-compatibility purposes, the keycode map is
394initially filled with KEY_RESERVED and KEY_UNKNOWN mappings for scan codes
3950x00 to 0x10 (and maybe others).
396
397Non hot-key ACPI HKEY event map:
3980x5001 Lid closed
3990x5002 Lid opened
4000x7000 Radio Switch may have changed state
401
Henrique de Moraes Holschuha0416422007-04-27 22:00:16 -0300402
Henrique de Moraes Holschuhd3a6ade2007-04-27 22:00:17 -0300403Bluetooth
404---------
Linus Torvalds1da177e2005-04-16 15:20:36 -0700405
Henrique de Moraes Holschuhd3a6ade2007-04-27 22:00:17 -0300406procfs: /proc/acpi/ibm/bluetooth
Henrique de Moraes Holschuhcc4c24e2007-05-30 20:50:14 -0300407sysfs device attribute: bluetooth_enable
Henrique de Moraes Holschuhd3a6ade2007-04-27 22:00:17 -0300408
409This feature shows the presence and current state of a ThinkPad
410Bluetooth device in the internal ThinkPad CDC slot.
411
412Procfs notes:
413
414If Bluetooth is installed, the following commands can be used:
Linus Torvalds1da177e2005-04-16 15:20:36 -0700415
416 echo enable > /proc/acpi/ibm/bluetooth
417 echo disable > /proc/acpi/ibm/bluetooth
418
Henrique de Moraes Holschuhd3a6ade2007-04-27 22:00:17 -0300419Sysfs notes:
420
421 If the Bluetooth CDC card is installed, it can be enabled /
Henrique de Moraes Holschuhcc4c24e2007-05-30 20:50:14 -0300422 disabled through the "bluetooth_enable" thinkpad-acpi device
Henrique de Moraes Holschuhd3a6ade2007-04-27 22:00:17 -0300423 attribute, and its current status can also be queried.
424
425 enable:
426 0: disables Bluetooth / Bluetooth is disabled
427 1: enables Bluetooth / Bluetooth is enabled.
428
429 Note: this interface will be probably be superseeded by the
Henrique de Moraes Holschuhcc4c24e2007-05-30 20:50:14 -0300430 generic rfkill class, so it is NOT to be considered stable yet.
Henrique de Moraes Holschuhd3a6ade2007-04-27 22:00:17 -0300431
Linus Torvalds1da177e2005-04-16 15:20:36 -0700432Video output control -- /proc/acpi/ibm/video
433--------------------------------------------
434
435This feature allows control over the devices used for video output -
436LCD, CRT or DVI (if available). The following commands are available:
437
438 echo lcd_enable > /proc/acpi/ibm/video
439 echo lcd_disable > /proc/acpi/ibm/video
440 echo crt_enable > /proc/acpi/ibm/video
441 echo crt_disable > /proc/acpi/ibm/video
442 echo dvi_enable > /proc/acpi/ibm/video
443 echo dvi_disable > /proc/acpi/ibm/video
444 echo auto_enable > /proc/acpi/ibm/video
445 echo auto_disable > /proc/acpi/ibm/video
446 echo expand_toggle > /proc/acpi/ibm/video
447 echo video_switch > /proc/acpi/ibm/video
448
449Each video output device can be enabled or disabled individually.
450Reading /proc/acpi/ibm/video shows the status of each device.
451
452Automatic video switching can be enabled or disabled. When automatic
453video switching is enabled, certain events (e.g. opening the lid,
454docking or undocking) cause the video output device to change
455automatically. While this can be useful, it also causes flickering
456and, on the X40, video corruption. By disabling automatic switching,
457the flickering or video corruption can be avoided.
458
459The video_switch command cycles through the available video outputs
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400460(it simulates the behavior of Fn-F7).
Linus Torvalds1da177e2005-04-16 15:20:36 -0700461
462Video expansion can be toggled through this feature. This controls
463whether the display is expanded to fill the entire LCD screen when a
464mode with less than full resolution is used. Note that the current
465video expansion status cannot be determined through this feature.
466
467Note that on many models (particularly those using Radeon graphics
468chips) the X driver configures the video card in a way which prevents
469Fn-F7 from working. This also disables the video output switching
470features of this driver, as it uses the same ACPI methods as
471Fn-F7. Video switching on the console should still work.
472
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400473UPDATE: There's now a patch for the X.org Radeon driver which
474addresses this issue. Some people are reporting success with the patch
475while others are still having problems. For more information:
476
477https://bugs.freedesktop.org/show_bug.cgi?id=2000
478
Linus Torvalds1da177e2005-04-16 15:20:36 -0700479ThinkLight control -- /proc/acpi/ibm/light
480------------------------------------------
481
482The current status of the ThinkLight can be found in this file. A few
483models which do not make the status available will show it as
484"unknown". The available commands are:
485
486 echo on > /proc/acpi/ibm/light
487 echo off > /proc/acpi/ibm/light
488
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400489Docking / undocking -- /proc/acpi/ibm/dock
Linus Torvalds1da177e2005-04-16 15:20:36 -0700490------------------------------------------
491
492Docking and undocking (e.g. with the X4 UltraBase) requires some
493actions to be taken by the operating system to safely make or break
494the electrical connections with the dock.
495
496The docking feature of this driver generates the following ACPI events:
497
498 ibm/dock GDCK 00000003 00000001 -- eject request
499 ibm/dock GDCK 00000003 00000002 -- undocked
500 ibm/dock GDCK 00000000 00000003 -- docked
501
502NOTE: These events will only be generated if the laptop was docked
503when originally booted. This is due to the current lack of support for
504hot plugging of devices in the Linux ACPI framework. If the laptop was
505booted while not in the dock, the following message is shown in the
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400506logs:
507
Henrique de Moraes Holschuh643f12d2007-03-29 01:58:43 -0300508 Mar 17 01:42:34 aero kernel: thinkpad_acpi: dock device not present
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400509
510In this case, no dock-related events are generated but the dock and
511undock commands described below still work. They can be executed
512manually or triggered by Fn key combinations (see the example acpid
513configuration files included in the driver tarball package available
514on the web site).
Linus Torvalds1da177e2005-04-16 15:20:36 -0700515
516When the eject request button on the dock is pressed, the first event
517above is generated. The handler for this event should issue the
518following command:
519
520 echo undock > /proc/acpi/ibm/dock
521
522After the LED on the dock goes off, it is safe to eject the laptop.
523Note: if you pressed this key by mistake, go ahead and eject the
524laptop, then dock it back in. Otherwise, the dock may not function as
525expected.
526
527When the laptop is docked, the third event above is generated. The
528handler for this event should issue the following command to fully
529enable the dock:
530
531 echo dock > /proc/acpi/ibm/dock
532
533The contents of the /proc/acpi/ibm/dock file shows the current status
534of the dock, as provided by the ACPI framework.
535
536The docking support in this driver does not take care of enabling or
537disabling any other devices you may have attached to the dock. For
538example, a CD drive plugged into the UltraBase needs to be disabled or
539enabled separately. See the provided example acpid configuration files
540for how this can be accomplished.
541
542There is no support yet for PCI devices that may be attached to a
543docking station, e.g. in the ThinkPad Dock II. The driver currently
544does not recognize, enable or disable such devices. This means that
545the only docking stations currently supported are the X-series
546UltraBase docks and "dumb" port replicators like the Mini Dock (the
547latter don't need any ACPI support, actually).
548
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400549UltraBay eject -- /proc/acpi/ibm/bay
Linus Torvalds1da177e2005-04-16 15:20:36 -0700550------------------------------------
551
552Inserting or ejecting an UltraBay device requires some actions to be
553taken by the operating system to safely make or break the electrical
554connections with the device.
555
556This feature generates the following ACPI events:
557
558 ibm/bay MSTR 00000003 00000000 -- eject request
559 ibm/bay MSTR 00000001 00000000 -- eject lever inserted
560
561NOTE: These events will only be generated if the UltraBay was present
562when the laptop was originally booted (on the X series, the UltraBay
563is in the dock, so it may not be present if the laptop was undocked).
564This is due to the current lack of support for hot plugging of devices
565in the Linux ACPI framework. If the laptop was booted without the
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400566UltraBay, the following message is shown in the logs:
567
Henrique de Moraes Holschuh643f12d2007-03-29 01:58:43 -0300568 Mar 17 01:42:34 aero kernel: thinkpad_acpi: bay device not present
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400569
570In this case, no bay-related events are generated but the eject
Linus Torvalds1da177e2005-04-16 15:20:36 -0700571command described below still works. It can be executed manually or
572triggered by a hot key combination.
573
574Sliding the eject lever generates the first event shown above. The
575handler for this event should take whatever actions are necessary to
576shut down the device in the UltraBay (e.g. call idectl), then issue
577the following command:
578
579 echo eject > /proc/acpi/ibm/bay
580
581After the LED on the UltraBay goes off, it is safe to pull out the
582device.
583
584When the eject lever is inserted, the second event above is
585generated. The handler for this event should take whatever actions are
586necessary to enable the UltraBay device (e.g. call idectl).
587
588The contents of the /proc/acpi/ibm/bay file shows the current status
589of the UltraBay, as provided by the ACPI framework.
590
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400591EXPERIMENTAL warm eject support on the 600e/x, A22p and A3x (To use
592this feature, you need to supply the experimental=1 parameter when
593loading the module):
Linus Torvalds1da177e2005-04-16 15:20:36 -0700594
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400595These models do not have a button near the UltraBay device to request
596a hot eject but rather require the laptop to be put to sleep
597(suspend-to-ram) before the bay device is ejected or inserted).
598The sequence of steps to eject the device is as follows:
Linus Torvalds1da177e2005-04-16 15:20:36 -0700599
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400600 echo eject > /proc/acpi/ibm/bay
601 put the ThinkPad to sleep
602 remove the drive
603 resume from sleep
604 cat /proc/acpi/ibm/bay should show that the drive was removed
605
606On the A3x, both the UltraBay 2000 and UltraBay Plus devices are
607supported. Use "eject2" instead of "eject" for the second bay.
608
609Note: the UltraBay eject support on the 600e/x, A22p and A3x is
610EXPERIMENTAL and may not work as expected. USE WITH CAUTION!
611
Henrique de Moraes Holschuhb6160042007-04-24 11:48:19 -0300612CMOS control
613------------
614
615procfs: /proc/acpi/ibm/cmos
616sysfs device attribute: cmos_command
Linus Torvalds1da177e2005-04-16 15:20:36 -0700617
Henrique de Moraes Holschuhd54b7d72007-07-18 23:45:33 -0300618This feature is mostly used internally by the ACPI firmware to keep the legacy
619CMOS NVRAM bits in sync with the current machine state, and to record this
620state so that the ThinkPad will retain such settings across reboots.
621
622Some of these commands actually perform actions in some ThinkPad models, but
623this is expected to disappear more and more in newer models. As an example, in
624a T43 and in a X40, commands 12 and 13 still control the ThinkLight state for
625real, but commands 0 to 2 don't control the mixer anymore (they have been
626phased out) and just update the NVRAM.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700627
Henrique de Moraes Holschuhb6160042007-04-24 11:48:19 -0300628The range of valid cmos command numbers is 0 to 21, but not all have an
629effect and the behavior varies from model to model. Here is the behavior
630on the X40 (tpb is the ThinkPad Buttons utility):
Linus Torvalds1da177e2005-04-16 15:20:36 -0700631
Henrique de Moraes Holschuhd54b7d72007-07-18 23:45:33 -0300632 0 - Related to "Volume down" key press
633 1 - Related to "Volume up" key press
634 2 - Related to "Mute on" key press
635 3 - Related to "Access IBM" key press
636 4 - Related to "LCD brightness up" key pess
637 5 - Related to "LCD brightness down" key press
638 11 - Related to "toggle screen expansion" key press/function
639 12 - Related to "ThinkLight on"
640 13 - Related to "ThinkLight off"
641 14 - Related to "ThinkLight" key press (toggle thinklight)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700642
Henrique de Moraes Holschuhb6160042007-04-24 11:48:19 -0300643The cmos command interface is prone to firmware split-brain problems, as
Henrique de Moraes Holschuhd54b7d72007-07-18 23:45:33 -0300644in newer ThinkPads it is just a compatibility layer. Do not use it, it is
645exported just as a debug tool.
Henrique de Moraes Holschuhb6160042007-04-24 11:48:19 -0300646
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400647LED control -- /proc/acpi/ibm/led
648---------------------------------
Linus Torvalds1da177e2005-04-16 15:20:36 -0700649
650Some of the LED indicators can be controlled through this feature. The
651available commands are:
652
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400653 echo '<led number> on' >/proc/acpi/ibm/led
654 echo '<led number> off' >/proc/acpi/ibm/led
655 echo '<led number> blink' >/proc/acpi/ibm/led
Linus Torvalds1da177e2005-04-16 15:20:36 -0700656
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400657The <led number> range is 0 to 7. The set of LEDs that can be
658controlled varies from model to model. Here is the mapping on the X40:
Linus Torvalds1da177e2005-04-16 15:20:36 -0700659
660 0 - power
661 1 - battery (orange)
662 2 - battery (green)
663 3 - UltraBase
664 4 - UltraBay
665 7 - standby
666
667All of the above can be turned on and off and can be made to blink.
668
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400669ACPI sounds -- /proc/acpi/ibm/beep
670----------------------------------
Linus Torvalds1da177e2005-04-16 15:20:36 -0700671
672The BEEP method is used internally by the ACPI firmware to provide
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400673audible alerts in various situations. This feature allows the same
Linus Torvalds1da177e2005-04-16 15:20:36 -0700674sounds to be triggered manually.
675
676The commands are non-negative integer numbers:
677
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400678 echo <number> >/proc/acpi/ibm/beep
Linus Torvalds1da177e2005-04-16 15:20:36 -0700679
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400680The valid <number> range is 0 to 17. Not all numbers trigger sounds
681and the sounds vary from model to model. Here is the behavior on the
682X40:
Linus Torvalds1da177e2005-04-16 15:20:36 -0700683
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400684 0 - stop a sound in progress (but use 17 to stop 16)
685 2 - two beeps, pause, third beep ("low battery")
Linus Torvalds1da177e2005-04-16 15:20:36 -0700686 3 - single beep
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400687 4 - high, followed by low-pitched beep ("unable")
Linus Torvalds1da177e2005-04-16 15:20:36 -0700688 5 - single beep
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400689 6 - very high, followed by high-pitched beep ("AC/DC")
Linus Torvalds1da177e2005-04-16 15:20:36 -0700690 7 - high-pitched beep
691 9 - three short beeps
692 10 - very long beep
693 12 - low-pitched beep
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400694 15 - three high-pitched beeps repeating constantly, stop with 0
695 16 - one medium-pitched beep repeating constantly, stop with 17
696 17 - stop 16
Linus Torvalds1da177e2005-04-16 15:20:36 -0700697
Henrique de Moraes Holschuh2c37aa42007-04-24 11:48:16 -0300698Temperature sensors
699-------------------
700
701procfs: /proc/acpi/ibm/thermal
702sysfs device attributes: (hwmon) temp*_input
Linus Torvalds1da177e2005-04-16 15:20:36 -0700703
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400704Most ThinkPads include six or more separate temperature sensors but
705only expose the CPU temperature through the standard ACPI methods.
Henrique de Moraes Holschuh60eb0b32006-11-24 11:47:08 -0200706This feature shows readings from up to eight different sensors on older
707ThinkPads, and it has experimental support for up to sixteen different
Henrique de Moraes Holschuh2c37aa42007-04-24 11:48:16 -0300708sensors on newer ThinkPads.
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400709
Henrique de Moraes Holschuh60eb0b32006-11-24 11:47:08 -0200710EXPERIMENTAL: The 16-sensors feature is marked EXPERIMENTAL because the
711implementation directly accesses hardware registers and may not work as
712expected. USE WITH CAUTION! To use this feature, you need to supply the
713experimental=1 parameter when loading the module. When EXPERIMENTAL
714mode is enabled, reading the first 8 sensors on newer ThinkPads will
715also use an new experimental thermal sensor access mode.
716
717For example, on the X40, a typical output may be:
718temperatures: 42 42 45 41 36 -128 33 -128
719
720EXPERIMENTAL: On the T43/p, a typical output may be:
721temperatures: 48 48 36 52 38 -128 31 -128 48 52 48 -128 -128 -128 -128 -128
722
723The mapping of thermal sensors to physical locations varies depending on
724system-board model (and thus, on ThinkPad model).
725
726http://thinkwiki.org/wiki/Thermal_Sensors is a public wiki page that
727tries to track down these locations for various models.
728
729Most (newer?) models seem to follow this pattern:
730
7311: CPU
7322: (depends on model)
7333: (depends on model)
7344: GPU
7355: Main battery: main sensor
7366: Bay battery: main sensor
7377: Main battery: secondary sensor
7388: Bay battery: secondary sensor
7399-15: (depends on model)
740
741For the R51 (source: Thomas Gruber):
7422: Mini-PCI
7433: Internal HDD
744
745For the T43, T43/p (source: Shmidoax/Thinkwiki.org)
746http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_T43.2C_T43p
7472: System board, left side (near PCMCIA slot), reported as HDAPS temp
7483: PCMCIA slot
7499: MCH (northbridge) to DRAM Bus
Henrique de Moraes Holschuhb8b26402007-07-18 23:45:28 -030075010: Clock-generator, mini-pci card and ICH (southbridge), under Mini-PCI
751 card, under touchpad
Henrique de Moraes Holschuh60eb0b32006-11-24 11:47:08 -020075211: Power regulator, underside of system board, below F2 key
753
Henrique de Moraes Holschuh88679a12006-11-24 11:47:09 -0200754The A31 has a very atypical layout for the thermal sensors
755(source: Milos Popovic, http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_A31)
7561: CPU
7572: Main Battery: main sensor
7583: Power Converter
7594: Bay Battery: main sensor
7605: MCH (northbridge)
7616: PCMCIA/ambient
7627: Main Battery: secondary sensor
7638: Bay Battery: secondary sensor
764
Henrique de Moraes Holschuh60eb0b32006-11-24 11:47:08 -0200765
Henrique de Moraes Holschuh2c37aa42007-04-24 11:48:16 -0300766Procfs notes:
767 Readings from sensors that are not available return -128.
768 No commands can be written to this file.
769
770Sysfs notes:
771 Sensors that are not available return the ENXIO error. This
772 status may change at runtime, as there are hotplug thermal
773 sensors, like those inside the batteries and docks.
774
775 thinkpad-acpi thermal sensors are reported through the hwmon
776 subsystem, and follow all of the hwmon guidelines at
777 Documentation/hwmon.
778
779
Matt LaPlanted6bc8ac2006-10-03 22:54:15 +0200780EXPERIMENTAL: Embedded controller register dump -- /proc/acpi/ibm/ecdump
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400781------------------------------------------------------------------------
782
783This feature is marked EXPERIMENTAL because the implementation
784directly accesses hardware registers and may not work as expected. USE
785WITH CAUTION! To use this feature, you need to supply the
786experimental=1 parameter when loading the module.
787
788This feature dumps the values of 256 embedded controller
789registers. Values which have changed since the last time the registers
790were dumped are marked with a star:
791
Henrique de Moraes Holschuh837ca6d2007-03-23 17:33:54 -0300792[root@x40 ibm-acpi]# cat /proc/acpi/ibm/ecdump
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400793EC +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0a +0b +0c +0d +0e +0f
794EC 0x00: a7 47 87 01 fe 96 00 08 01 00 cb 00 00 00 40 00
795EC 0x10: 00 00 ff ff f4 3c 87 09 01 ff 42 01 ff ff 0d 00
796EC 0x20: 00 00 00 00 00 00 00 00 00 00 00 03 43 00 00 80
797EC 0x30: 01 07 1a 00 30 04 00 00 *85 00 00 10 00 50 00 00
798EC 0x40: 00 00 00 00 00 00 14 01 00 04 00 00 00 00 00 00
799EC 0x50: 00 c0 02 0d 00 01 01 02 02 03 03 03 03 *bc *02 *bc
800EC 0x60: *02 *bc *02 00 00 00 00 00 00 00 00 00 00 00 00 00
801EC 0x70: 00 00 00 00 00 12 30 40 *24 *26 *2c *27 *20 80 *1f 80
802EC 0x80: 00 00 00 06 *37 *0e 03 00 00 00 0e 07 00 00 00 00
803EC 0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
804EC 0xa0: *ff 09 ff 09 ff ff *64 00 *00 *00 *a2 41 *ff *ff *e0 00
805EC 0xb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
806EC 0xc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
807EC 0xd0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
808EC 0xe0: 00 00 00 00 00 00 00 00 11 20 49 04 24 06 55 03
809EC 0xf0: 31 55 48 54 35 38 57 57 08 2f 45 73 07 65 6c 1a
810
811This feature can be used to determine the register holding the fan
812speed on some models. To do that, do the following:
813
814 - make sure the battery is fully charged
815 - make sure the fan is running
816 - run 'cat /proc/acpi/ibm/ecdump' several times, once per second or so
817
818The first step makes sure various charging-related values don't
819vary. The second ensures that the fan-related values do vary, since
820the fan speed fluctuates a bit. The third will (hopefully) mark the
821fan register with a star:
822
Henrique de Moraes Holschuh837ca6d2007-03-23 17:33:54 -0300823[root@x40 ibm-acpi]# cat /proc/acpi/ibm/ecdump
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400824EC +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0a +0b +0c +0d +0e +0f
825EC 0x00: a7 47 87 01 fe 96 00 08 01 00 cb 00 00 00 40 00
826EC 0x10: 00 00 ff ff f4 3c 87 09 01 ff 42 01 ff ff 0d 00
827EC 0x20: 00 00 00 00 00 00 00 00 00 00 00 03 43 00 00 80
828EC 0x30: 01 07 1a 00 30 04 00 00 85 00 00 10 00 50 00 00
829EC 0x40: 00 00 00 00 00 00 14 01 00 04 00 00 00 00 00 00
830EC 0x50: 00 c0 02 0d 00 01 01 02 02 03 03 03 03 bc 02 bc
831EC 0x60: 02 bc 02 00 00 00 00 00 00 00 00 00 00 00 00 00
832EC 0x70: 00 00 00 00 00 12 30 40 24 27 2c 27 21 80 1f 80
833EC 0x80: 00 00 00 06 *be 0d 03 00 00 00 0e 07 00 00 00 00
834EC 0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
835EC 0xa0: ff 09 ff 09 ff ff 64 00 00 00 a2 41 ff ff e0 00
836EC 0xb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
837EC 0xc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
838EC 0xd0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
839EC 0xe0: 00 00 00 00 00 00 00 00 11 20 49 04 24 06 55 03
840EC 0xf0: 31 55 48 54 35 38 57 57 08 2f 45 73 07 65 6c 1a
841
842Another set of values that varies often is the temperature
843readings. Since temperatures don't change vary fast, you can take
844several quick dumps to eliminate them.
845
846You can use a similar method to figure out the meaning of other
847embedded controller registers - e.g. make sure nothing else changes
848except the charging or discharging battery to determine which
849registers contain the current battery capacity, etc. If you experiment
850with this, do send me your results (including some complete dumps with
851a description of the conditions when they were taken.)
852
Henrique de Moraes Holschuh7d5a0152007-04-24 11:48:20 -0300853LCD brightness control
854----------------------
855
856procfs: /proc/acpi/ibm/brightness
857sysfs backlight device "thinkpad_screen"
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400858
859This feature allows software control of the LCD brightness on ThinkPad
Henrique de Moraes Holschuh7d5a0152007-04-24 11:48:20 -0300860models which don't have a hardware brightness slider.
861
862It has some limitations: the LCD backlight cannot be actually turned on or off
863by this interface, and in many ThinkPad models, the "dim while on battery"
864functionality will be enabled by the BIOS when this interface is used, and
865cannot be controlled.
866
867The backlight control has eight levels, ranging from 0 to 7. Some of the
868levels may not be distinct.
869
870Procfs notes:
871
872 The available commands are:
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400873
874 echo up >/proc/acpi/ibm/brightness
875 echo down >/proc/acpi/ibm/brightness
876 echo 'level <level>' >/proc/acpi/ibm/brightness
877
Henrique de Moraes Holschuh7d5a0152007-04-24 11:48:20 -0300878Sysfs notes:
879
880The interface is implemented through the backlight sysfs class, which is poorly
881documented at this time.
882
883Locate the thinkpad_screen device under /sys/class/backlight, and inside it
884there will be the following attributes:
885
886 max_brightness:
887 Reads the maximum brightness the hardware can be set to.
888 The minimum is always zero.
889
890 actual_brightness:
891 Reads what brightness the screen is set to at this instant.
892
893 brightness:
894 Writes request the driver to change brightness to the given
895 value. Reads will tell you what brightness the driver is trying
896 to set the display to when "power" is set to zero and the display
897 has not been dimmed by a kernel power management event.
898
899 power:
900 power management mode, where 0 is "display on", and 1 to 3 will
901 dim the display backlight to brightness level 0 because
902 thinkpad-acpi cannot really turn the backlight off. Kernel
903 power management events can temporarily increase the current
904 power management level, i.e. they can dim the display.
905
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400906
Stefan Schmidt24f7ff02006-09-22 12:19:15 +0200907Volume control -- /proc/acpi/ibm/volume
908---------------------------------------
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400909
910This feature allows volume control on ThinkPad models which don't have
911a hardware volume knob. The available commands are:
912
913 echo up >/proc/acpi/ibm/volume
914 echo down >/proc/acpi/ibm/volume
915 echo mute >/proc/acpi/ibm/volume
916 echo 'level <level>' >/proc/acpi/ibm/volume
917
918The <level> number range is 0 to 15 although not all of them may be
919distinct. The unmute the volume after the mute command, use either the
920up or down command (the level command will not unmute the volume).
921The current volume level and mute state is shown in the file.
922
Henrique de Moraes Holschuhecf2a802007-04-27 22:00:09 -0300923Fan control and monitoring: fan speed, fan enable/disable
924---------------------------------------------------------
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -0300925
926procfs: /proc/acpi/ibm/fan
927sysfs device attributes: (hwmon) fan_input, pwm1, pwm1_enable
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400928
Henrique de Moraes Holschuhecf2a802007-04-27 22:00:09 -0300929NOTE NOTE NOTE: fan control operations are disabled by default for
930safety reasons. To enable them, the module parameter "fan_control=1"
931must be given to thinkpad-acpi.
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400932
Henrique de Moraes Holschuha12095c2006-11-24 11:47:13 -0200933This feature attempts to show the current fan speed, control mode and
934other fan data that might be available. The speed is read directly
935from the hardware registers of the embedded controller. This is known
Henrique de Moraes Holschuhecf2a802007-04-27 22:00:09 -0300936to work on later R, T, X and Z series ThinkPads but may show a bogus
Henrique de Moraes Holschuha12095c2006-11-24 11:47:13 -0200937value on other models.
938
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -0300939Fan levels:
Henrique de Moraes Holschuha12095c2006-11-24 11:47:13 -0200940
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -0300941Most ThinkPad fans work in "levels" at the firmware interface. Level 0
942stops the fan. The higher the level, the higher the fan speed, although
943adjacent levels often map to the same fan speed. 7 is the highest
944level, where the fan reaches the maximum recommended speed.
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400945
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -0300946Level "auto" means the EC changes the fan level according to some
947internal algorithm, usually based on readings from the thermal sensors.
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400948
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -0300949There is also a "full-speed" level, also known as "disengaged" level.
950In this level, the EC disables the speed-locked closed-loop fan control,
951and drives the fan as fast as it can go, which might exceed hardware
952limits, so use this level with caution.
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400953
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -0300954The fan usually ramps up or down slowly from one speed to another, and
955it is normal for the EC to take several seconds to react to fan
956commands. The full-speed level may take up to two minutes to ramp up to
957maximum speed, and in some ThinkPads, the tachometer readings go stale
958while the EC is transitioning to the full-speed level.
Borislav Deianov78f81cc2005-08-17 00:00:00 -0400959
Henrique de Moraes Holschuha12095c2006-11-24 11:47:13 -0200960WARNING WARNING WARNING: do not leave the fan disabled unless you are
961monitoring all of the temperature sensor readings and you are ready to
962enable it if necessary to avoid overheating.
963
964An enabled fan in level "auto" may stop spinning if the EC decides the
965ThinkPad is cool enough and doesn't need the extra airflow. This is
966normal, and the EC will spin the fan up if the varios thermal readings
967rise too much.
968
969On the X40, this seems to depend on the CPU and HDD temperatures.
970Specifically, the fan is turned on when either the CPU temperature
971climbs to 56 degrees or the HDD temperature climbs to 46 degrees. The
972fan is turned off when the CPU temperature drops to 49 degrees and the
973HDD temperature drops to 41 degrees. These thresholds cannot
974currently be controlled.
975
Henrique de Moraes Holschuha12095c2006-11-24 11:47:13 -0200976The ThinkPad's ACPI DSDT code will reprogram the fan on its own when
977certain conditions are met. It will override any fan programming done
Henrique de Moraes Holschuh643f12d2007-03-29 01:58:43 -0300978through thinkpad-acpi.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700979
Henrique de Moraes Holschuh643f12d2007-03-29 01:58:43 -0300980The thinkpad-acpi kernel driver can be programmed to revert the fan
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -0300981level to a safe setting if userspace does not issue one of the procfs
982fan commands: "enable", "disable", "level" or "watchdog", or if there
983are no writes to pwm1_enable (or to pwm1 *if and only if* pwm1_enable is
984set to 1, manual mode) within a configurable amount of time of up to
985120 seconds. This functionality is called fan safety watchdog.
Henrique de Moraes Holschuh38f996e2007-03-23 17:33:59 -0300986
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -0300987Note that the watchdog timer stops after it enables the fan. It will be
988rearmed again automatically (using the same interval) when one of the
989above mentioned fan commands is received. The fan watchdog is,
990therefore, not suitable to protect against fan mode changes made through
991means other than the "enable", "disable", and "level" procfs fan
992commands, or the hwmon fan control sysfs interface.
Henrique de Moraes Holschuh38f996e2007-03-23 17:33:59 -0300993
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -0300994Procfs notes:
Henrique de Moraes Holschuh38f996e2007-03-23 17:33:59 -0300995
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -0300996The fan may be enabled or disabled with the following commands:
997
998 echo enable >/proc/acpi/ibm/fan
999 echo disable >/proc/acpi/ibm/fan
1000
1001Placing a fan on level 0 is the same as disabling it. Enabling a fan
1002will try to place it in a safe level if it is too slow or disabled.
1003
1004The fan level can be controlled with the command:
1005
1006 echo 'level <level>' > /proc/acpi/ibm/fan
1007
1008Where <level> is an integer from 0 to 7, or one of the words "auto" or
1009"full-speed" (without the quotes). Not all ThinkPads support the "auto"
1010and "full-speed" levels. The driver accepts "disengaged" as an alias for
1011"full-speed", and reports it as "disengaged" for backwards
1012compatibility.
1013
1014On the X31 and X40 (and ONLY on those models), the fan speed can be
1015controlled to a certain degree. Once the fan is running, it can be
1016forced to run faster or slower with the following command:
1017
1018 echo 'speed <speed>' > /proc/acpi/ibm/fan
1019
1020The sustainable range of fan speeds on the X40 appears to be from about
10213700 to about 7350. Values outside this range either do not have any
1022effect or the fan speed eventually settles somewhere in that range. The
1023fan cannot be stopped or started with this command. This functionality
1024is incomplete, and not available through the sysfs interface.
1025
1026To program the safety watchdog, use the "watchdog" command.
1027
1028 echo 'watchdog <interval in seconds>' > /proc/acpi/ibm/fan
1029
1030If you want to disable the watchdog, use 0 as the interval.
1031
1032Sysfs notes:
1033
1034The sysfs interface follows the hwmon subsystem guidelines for the most
1035part, and the exception is the fan safety watchdog.
1036
Henrique de Moraes Holschuhb39fe582007-04-27 22:00:13 -03001037Writes to any of the sysfs attributes may return the EINVAL error if
1038that operation is not supported in a given ThinkPad or if the parameter
1039is out-of-bounds, and EPERM if it is forbidden. They may also return
1040EINTR (interrupted system call), and EIO (I/O error while trying to talk
1041to the firmware).
1042
1043Features not yet implemented by the driver return ENOSYS.
1044
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -03001045hwmon device attribute pwm1_enable:
1046 0: PWM offline (fan is set to full-speed mode)
1047 1: Manual PWM control (use pwm1 to set fan level)
1048 2: Hardware PWM control (EC "auto" mode)
1049 3: reserved (Software PWM control, not implemented yet)
1050
Henrique de Moraes Holschuhb39fe582007-04-27 22:00:13 -03001051 Modes 0 and 2 are not supported by all ThinkPads, and the
1052 driver is not always able to detect this. If it does know a
1053 mode is unsupported, it will return -EINVAL.
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -03001054
1055hwmon device attribute pwm1:
1056 Fan level, scaled from the firmware values of 0-7 to the hwmon
1057 scale of 0-255. 0 means fan stopped, 255 means highest normal
1058 speed (level 7).
1059
1060 This attribute only commands the fan if pmw1_enable is set to 1
1061 (manual PWM control).
1062
1063hwmon device attribute fan1_input:
1064 Fan tachometer reading, in RPM. May go stale on certain
1065 ThinkPads while the EC transitions the PWM to offline mode,
1066 which can take up to two minutes. May return rubbish on older
1067 ThinkPads.
1068
1069driver attribute fan_watchdog:
1070 Fan safety watchdog timer interval, in seconds. Minimum is
1071 1 second, maximum is 120 seconds. 0 disables the watchdog.
1072
1073To stop the fan: set pwm1 to zero, and pwm1_enable to 1.
1074
1075To start the fan in a safe mode: set pwm1_enable to 2. If that fails
Henrique de Moraes Holschuhb39fe582007-04-27 22:00:13 -03001076with EINVAL, try to set pwm1_enable to 1 and pwm1 to at least 128 (255
1077would be the safest choice, though).
Henrique de Moraes Holschuhfe98a522007-04-24 11:48:17 -03001078
Henrique de Moraes Holschuh38f996e2007-03-23 17:33:59 -03001079
Henrique de Moraes Holschuhd3a6ade2007-04-27 22:00:17 -03001080EXPERIMENTAL: WAN
1081-----------------
1082
1083procfs: /proc/acpi/ibm/wan
Henrique de Moraes Holschuhcc4c24e2007-05-30 20:50:14 -03001084sysfs device attribute: wwan_enable
Stefan Schmidt28b779d2006-09-22 12:19:16 +02001085
1086This feature is marked EXPERIMENTAL because the implementation
1087directly accesses hardware registers and may not work as expected. USE
1088WITH CAUTION! To use this feature, you need to supply the
1089experimental=1 parameter when loading the module.
1090
Henrique de Moraes Holschuhd3a6ade2007-04-27 22:00:17 -03001091This feature shows the presence and current state of a W-WAN (Sierra
1092Wireless EV-DO) device.
1093
1094It was tested on a Lenovo Thinkpad X60. It should probably work on other
1095Thinkpad models which come with this module installed.
1096
1097Procfs notes:
1098
1099If the W-WAN card is installed, the following commands can be used:
Stefan Schmidt28b779d2006-09-22 12:19:16 +02001100
1101 echo enable > /proc/acpi/ibm/wan
1102 echo disable > /proc/acpi/ibm/wan
1103
Henrique de Moraes Holschuhd3a6ade2007-04-27 22:00:17 -03001104Sysfs notes:
1105
1106 If the W-WAN card is installed, it can be enabled /
Henrique de Moraes Holschuhcc4c24e2007-05-30 20:50:14 -03001107 disabled through the "wwan_enable" thinkpad-acpi device
Henrique de Moraes Holschuhd3a6ade2007-04-27 22:00:17 -03001108 attribute, and its current status can also be queried.
1109
1110 enable:
1111 0: disables WWAN card / WWAN card is disabled
1112 1: enables WWAN card / WWAN card is enabled.
1113
1114 Note: this interface will be probably be superseeded by the
Henrique de Moraes Holschuhcc4c24e2007-05-30 20:50:14 -03001115 generic rfkill class, so it is NOT to be considered stable yet.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001116
Borislav Deianov78f81cc2005-08-17 00:00:00 -04001117Multiple Commands, Module Parameters
1118------------------------------------
Linus Torvalds1da177e2005-04-16 15:20:36 -07001119
1120Multiple commands can be written to the proc files in one shot by
1121separating them with commas, for example:
1122
1123 echo enable,0xffff > /proc/acpi/ibm/hotkey
1124 echo lcd_disable,crt_enable > /proc/acpi/ibm/video
1125
Henrique de Moraes Holschuh643f12d2007-03-29 01:58:43 -03001126Commands can also be specified when loading the thinkpad-acpi module,
1127for example:
Linus Torvalds1da177e2005-04-16 15:20:36 -07001128
Henrique de Moraes Holschuh643f12d2007-03-29 01:58:43 -03001129 modprobe thinkpad_acpi hotkey=enable,0xffff video=auto_disable
Linus Torvalds1da177e2005-04-16 15:20:36 -07001130
Henrique de Moraes Holschuh132ce092007-04-21 11:08:30 -03001131Enabling debugging output
1132-------------------------
1133
1134The module takes a debug paramater which can be used to selectively
1135enable various classes of debugging output, for example:
1136
1137 modprobe ibm_acpi debug=0xffff
1138
1139will enable all debugging output classes. It takes a bitmask, so
1140to enable more than one output class, just add their values.
1141
Henrique de Moraes Holschuhfe08bc42007-04-21 11:08:32 -03001142 Debug bitmask Description
1143 0x0001 Initialization and probing
1144 0x0002 Removal
1145
Henrique de Moraes Holschuh132ce092007-04-21 11:08:30 -03001146There is also a kernel build option to enable more debugging
1147information, which may be necessary to debug driver problems.
Henrique de Moraes Holschuh0dcef772007-04-21 11:08:34 -03001148
Henrique de Moraes Holschuh176750d2007-04-24 11:48:13 -03001149The level of debugging information output by the driver can be changed
1150at runtime through sysfs, using the driver attribute debug_level. The
1151attribute takes the same bitmask as the debug module parameter above.
1152
Henrique de Moraes Holschuh0dcef772007-04-21 11:08:34 -03001153Force loading of module
1154-----------------------
1155
1156If thinkpad-acpi refuses to detect your ThinkPad, you can try to specify
1157the module parameter force_load=1. Regardless of whether this works or
1158not, please contact ibm-acpi-devel@lists.sourceforge.net with a report.
Henrique de Moraes Holschuh176750d2007-04-24 11:48:13 -03001159
1160
1161Sysfs interface changelog:
1162
11630x000100: Initial sysfs support, as a single platform driver and
1164 device.
Henrique de Moraes Holschuh94b08712007-07-18 23:45:32 -030011650x000200: Hot key support for 32 hot keys, and radio slider switch
1166 support.