diff options
author | Borislav Deianov <borislav@users.sf.net> | 2005-08-17 00:00:00 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2005-08-25 17:37:51 -0400 |
commit | 78f81cc4355c31c798564ff7efb253cc4cdce6c0 (patch) | |
tree | e3be9c36048b75db33218e49e7f75fea8be09261 /Documentation/ibm-acpi.txt | |
parent | 9c2c38a122cc23d6a09b8004d60a33913683eedf (diff) |
[ACPI] IBM ThinkPad ACPI Extras Driver v0.12
http://ibm-acpi.sf.net/
Signed-off-by: Borislav Deianov <borislav@users.sf.net>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'Documentation/ibm-acpi.txt')
-rw-r--r-- | Documentation/ibm-acpi.txt | 376 |
1 files changed, 283 insertions, 93 deletions
diff --git a/Documentation/ibm-acpi.txt b/Documentation/ibm-acpi.txt index c437b1aeff55..8b3fd82b2ce7 100644 --- a/Documentation/ibm-acpi.txt +++ b/Documentation/ibm-acpi.txt | |||
@@ -1,16 +1,16 @@ | |||
1 | IBM ThinkPad ACPI Extras Driver | 1 | IBM ThinkPad ACPI Extras Driver |
2 | 2 | ||
3 | Version 0.8 | 3 | Version 0.12 |
4 | 8 November 2004 | 4 | 17 August 2005 |
5 | 5 | ||
6 | Borislav Deianov <borislav@users.sf.net> | 6 | Borislav Deianov <borislav@users.sf.net> |
7 | http://ibm-acpi.sf.net/ | 7 | http://ibm-acpi.sf.net/ |
8 | 8 | ||
9 | 9 | ||
10 | This is a Linux ACPI driver for the IBM ThinkPad laptops. It aims to | 10 | This is a Linux ACPI driver for the IBM ThinkPad laptops. It supports |
11 | support various features of these laptops which are accessible through | 11 | various features of these laptops which are accessible through the |
12 | the ACPI framework but not otherwise supported by the generic Linux | 12 | ACPI framework but not otherwise supported by the generic Linux ACPI |
13 | ACPI drivers. | 13 | drivers. |
14 | 14 | ||
15 | 15 | ||
16 | Status | 16 | Status |
@@ -25,9 +25,14 @@ detailed description): | |||
25 | - ThinkLight on and off | 25 | - ThinkLight on and off |
26 | - limited docking and undocking | 26 | - limited docking and undocking |
27 | - UltraBay eject | 27 | - UltraBay eject |
28 | - Experimental: CMOS control | 28 | - CMOS control |
29 | - Experimental: LED control | 29 | - LED control |
30 | - Experimental: ACPI sounds | 30 | - ACPI sounds |
31 | - temperature sensors | ||
32 | - Experimental: embedded controller register dump | ||
33 | - Experimental: LCD brightness control | ||
34 | - Experimental: volume control | ||
35 | - Experimental: fan speed, fan enable/disable | ||
31 | 36 | ||
32 | A compatibility table by model and feature is maintained on the web | 37 | A compatibility table by model and feature is maintained on the web |
33 | site, http://ibm-acpi.sf.net/. I appreciate any success or failure | 38 | site, http://ibm-acpi.sf.net/. I appreciate any success or failure |
@@ -91,12 +96,12 @@ driver is still in the alpha stage, the exact proc file format and | |||
91 | commands supported by the various features is guaranteed to change | 96 | commands supported by the various features is guaranteed to change |
92 | frequently. | 97 | frequently. |
93 | 98 | ||
94 | Driver Version -- /proc/acpi/ibm/driver | 99 | Driver version -- /proc/acpi/ibm/driver |
95 | -------------------------------------- | 100 | --------------------------------------- |
96 | 101 | ||
97 | The driver name and version. No commands can be written to this file. | 102 | The driver name and version. No commands can be written to this file. |
98 | 103 | ||
99 | Hot Keys -- /proc/acpi/ibm/hotkey | 104 | Hot keys -- /proc/acpi/ibm/hotkey |
100 | --------------------------------- | 105 | --------------------------------- |
101 | 106 | ||
102 | Without this driver, only the Fn-F4 key (sleep button) generates an | 107 | Without this driver, only the Fn-F4 key (sleep button) generates an |
@@ -188,7 +193,7 @@ and, on the X40, video corruption. By disabling automatic switching, | |||
188 | the flickering or video corruption can be avoided. | 193 | the flickering or video corruption can be avoided. |
189 | 194 | ||
190 | The video_switch command cycles through the available video outputs | 195 | The video_switch command cycles through the available video outputs |
191 | (it sumulates the behavior of Fn-F7). | 196 | (it simulates the behavior of Fn-F7). |
192 | 197 | ||
193 | Video expansion can be toggled through this feature. This controls | 198 | Video expansion can be toggled through this feature. This controls |
194 | whether the display is expanded to fill the entire LCD screen when a | 199 | whether the display is expanded to fill the entire LCD screen when a |
@@ -201,6 +206,12 @@ Fn-F7 from working. This also disables the video output switching | |||
201 | features of this driver, as it uses the same ACPI methods as | 206 | features of this driver, as it uses the same ACPI methods as |
202 | Fn-F7. Video switching on the console should still work. | 207 | Fn-F7. Video switching on the console should still work. |
203 | 208 | ||
209 | UPDATE: There's now a patch for the X.org Radeon driver which | ||
210 | addresses this issue. Some people are reporting success with the patch | ||
211 | while others are still having problems. For more information: | ||
212 | |||
213 | https://bugs.freedesktop.org/show_bug.cgi?id=2000 | ||
214 | |||
204 | ThinkLight control -- /proc/acpi/ibm/light | 215 | ThinkLight control -- /proc/acpi/ibm/light |
205 | ------------------------------------------ | 216 | ------------------------------------------ |
206 | 217 | ||
@@ -211,7 +222,7 @@ models which do not make the status available will show it as | |||
211 | echo on > /proc/acpi/ibm/light | 222 | echo on > /proc/acpi/ibm/light |
212 | echo off > /proc/acpi/ibm/light | 223 | echo off > /proc/acpi/ibm/light |
213 | 224 | ||
214 | Docking / Undocking -- /proc/acpi/ibm/dock | 225 | Docking / undocking -- /proc/acpi/ibm/dock |
215 | ------------------------------------------ | 226 | ------------------------------------------ |
216 | 227 | ||
217 | Docking and undocking (e.g. with the X4 UltraBase) requires some | 228 | Docking and undocking (e.g. with the X4 UltraBase) requires some |
@@ -228,11 +239,15 @@ NOTE: These events will only be generated if the laptop was docked | |||
228 | when originally booted. This is due to the current lack of support for | 239 | when originally booted. This is due to the current lack of support for |
229 | hot plugging of devices in the Linux ACPI framework. If the laptop was | 240 | hot plugging of devices in the Linux ACPI framework. If the laptop was |
230 | booted while not in the dock, the following message is shown in the | 241 | booted while not in the dock, the following message is shown in the |
231 | logs: "ibm_acpi: dock device not present". No dock-related events are | 242 | logs: |
232 | generated but the dock and undock commands described below still | 243 | |
233 | work. They can be executed manually or triggered by Fn key | 244 | Mar 17 01:42:34 aero kernel: ibm_acpi: dock device not present |
234 | combinations (see the example acpid configuration files included in | 245 | |
235 | the driver tarball package available on the web site). | 246 | In this case, no dock-related events are generated but the dock and |
247 | undock commands described below still work. They can be executed | ||
248 | manually or triggered by Fn key combinations (see the example acpid | ||
249 | configuration files included in the driver tarball package available | ||
250 | on the web site). | ||
236 | 251 | ||
237 | When the eject request button on the dock is pressed, the first event | 252 | When the eject request button on the dock is pressed, the first event |
238 | above is generated. The handler for this event should issue the | 253 | above is generated. The handler for this event should issue the |
@@ -267,7 +282,7 @@ the only docking stations currently supported are the X-series | |||
267 | UltraBase docks and "dumb" port replicators like the Mini Dock (the | 282 | UltraBase docks and "dumb" port replicators like the Mini Dock (the |
268 | latter don't need any ACPI support, actually). | 283 | latter don't need any ACPI support, actually). |
269 | 284 | ||
270 | UltraBay Eject -- /proc/acpi/ibm/bay | 285 | UltraBay eject -- /proc/acpi/ibm/bay |
271 | ------------------------------------ | 286 | ------------------------------------ |
272 | 287 | ||
273 | Inserting or ejecting an UltraBay device requires some actions to be | 288 | Inserting or ejecting an UltraBay device requires some actions to be |
@@ -284,8 +299,11 @@ when the laptop was originally booted (on the X series, the UltraBay | |||
284 | is in the dock, so it may not be present if the laptop was undocked). | 299 | is in the dock, so it may not be present if the laptop was undocked). |
285 | This is due to the current lack of support for hot plugging of devices | 300 | This is due to the current lack of support for hot plugging of devices |
286 | in the Linux ACPI framework. If the laptop was booted without the | 301 | in the Linux ACPI framework. If the laptop was booted without the |
287 | UltraBay, the following message is shown in the logs: "ibm_acpi: bay | 302 | UltraBay, the following message is shown in the logs: |
288 | device not present". No bay-related events are generated but the eject | 303 | |
304 | Mar 17 01:42:34 aero kernel: ibm_acpi: bay device not present | ||
305 | |||
306 | In this case, no bay-related events are generated but the eject | ||
289 | command described below still works. It can be executed manually or | 307 | command described below still works. It can be executed manually or |
290 | triggered by a hot key combination. | 308 | triggered by a hot key combination. |
291 | 309 | ||
@@ -306,22 +324,33 @@ necessary to enable the UltraBay device (e.g. call idectl). | |||
306 | The contents of the /proc/acpi/ibm/bay file shows the current status | 324 | The contents of the /proc/acpi/ibm/bay file shows the current status |
307 | of the UltraBay, as provided by the ACPI framework. | 325 | of the UltraBay, as provided by the ACPI framework. |
308 | 326 | ||
309 | Experimental Features | 327 | EXPERIMENTAL warm eject support on the 600e/x, A22p and A3x (To use |
310 | --------------------- | 328 | this feature, you need to supply the experimental=1 parameter when |
329 | loading the module): | ||
330 | |||
331 | These models do not have a button near the UltraBay device to request | ||
332 | a hot eject but rather require the laptop to be put to sleep | ||
333 | (suspend-to-ram) before the bay device is ejected or inserted). | ||
334 | The sequence of steps to eject the device is as follows: | ||
335 | |||
336 | echo eject > /proc/acpi/ibm/bay | ||
337 | put the ThinkPad to sleep | ||
338 | remove the drive | ||
339 | resume from sleep | ||
340 | cat /proc/acpi/ibm/bay should show that the drive was removed | ||
341 | |||
342 | On the A3x, both the UltraBay 2000 and UltraBay Plus devices are | ||
343 | supported. Use "eject2" instead of "eject" for the second bay. | ||
311 | 344 | ||
312 | The following features are marked experimental because using them | 345 | Note: the UltraBay eject support on the 600e/x, A22p and A3x is |
313 | involves guessing the correct values of some parameters. Guessing | 346 | EXPERIMENTAL and may not work as expected. USE WITH CAUTION! |
314 | incorrectly may have undesirable effects like crashing your | ||
315 | ThinkPad. USE THESE WITH CAUTION! To activate them, you'll need to | ||
316 | supply the experimental=1 parameter when loading the module. | ||
317 | 347 | ||
318 | Experimental: CMOS control - /proc/acpi/ibm/cmos | 348 | CMOS control -- /proc/acpi/ibm/cmos |
319 | ------------------------------------------------ | 349 | ----------------------------------- |
320 | 350 | ||
321 | This feature is used internally by the ACPI firmware to control the | 351 | This feature is used internally by the ACPI firmware to control the |
322 | ThinkLight on most newer ThinkPad models. It appears that it can also | 352 | ThinkLight on most newer ThinkPad models. It may also control LCD |
323 | control LCD brightness, sounds volume and more, but only on some | 353 | brightness, sounds volume and more, but only on some models. |
324 | models. | ||
325 | 354 | ||
326 | The commands are non-negative integer numbers: | 355 | The commands are non-negative integer numbers: |
327 | 356 | ||
@@ -330,10 +359,9 @@ The commands are non-negative integer numbers: | |||
330 | echo 2 >/proc/acpi/ibm/cmos | 359 | echo 2 >/proc/acpi/ibm/cmos |
331 | ... | 360 | ... |
332 | 361 | ||
333 | The range of numbers which are used internally by various models is 0 | 362 | The range of valid numbers is 0 to 21, but not all have an effect and |
334 | to 21, but it's possible that numbers outside this range have | 363 | the behavior varies from model to model. Here is the behavior on the |
335 | interesting behavior. Here is the behavior on the X40 (tpb is the | 364 | X40 (tpb is the ThinkPad Buttons utility): |
336 | ThinkPad Buttons utility): | ||
337 | 365 | ||
338 | 0 - no effect but tpb reports "Volume down" | 366 | 0 - no effect but tpb reports "Volume down" |
339 | 1 - no effect but tpb reports "Volume up" | 367 | 1 - no effect but tpb reports "Volume up" |
@@ -346,26 +374,18 @@ ThinkPad Buttons utility): | |||
346 | 13 - ThinkLight off | 374 | 13 - ThinkLight off |
347 | 14 - no effect but tpb reports ThinkLight status change | 375 | 14 - no effect but tpb reports ThinkLight status change |
348 | 376 | ||
349 | If you try this feature, please send me a report similar to the | 377 | LED control -- /proc/acpi/ibm/led |
350 | above. On models which allow control of LCD brightness or sound | 378 | --------------------------------- |
351 | volume, I'd like to provide this functionality in an user-friendly | ||
352 | way, but first I need a way to identify the models which this is | ||
353 | possible. | ||
354 | |||
355 | Experimental: LED control - /proc/acpi/ibm/LED | ||
356 | ---------------------------------------------- | ||
357 | 379 | ||
358 | Some of the LED indicators can be controlled through this feature. The | 380 | Some of the LED indicators can be controlled through this feature. The |
359 | available commands are: | 381 | available commands are: |
360 | 382 | ||
361 | echo <led number> on >/proc/acpi/ibm/led | 383 | echo '<led number> on' >/proc/acpi/ibm/led |
362 | echo <led number> off >/proc/acpi/ibm/led | 384 | echo '<led number> off' >/proc/acpi/ibm/led |
363 | echo <led number> blink >/proc/acpi/ibm/led | 385 | echo '<led number> blink' >/proc/acpi/ibm/led |
364 | 386 | ||
365 | The <led number> parameter is a non-negative integer. The range of LED | 387 | The <led number> range is 0 to 7. The set of LEDs that can be |
366 | numbers used internally by various models is 0 to 7 but it's possible | 388 | controlled varies from model to model. Here is the mapping on the X40: |
367 | that numbers outside this range are also valid. Here is the mapping on | ||
368 | the X40: | ||
369 | 389 | ||
370 | 0 - power | 390 | 0 - power |
371 | 1 - battery (orange) | 391 | 1 - battery (orange) |
@@ -376,49 +396,224 @@ the X40: | |||
376 | 396 | ||
377 | All of the above can be turned on and off and can be made to blink. | 397 | All of the above can be turned on and off and can be made to blink. |
378 | 398 | ||
379 | If you try this feature, please send me a report similar to the | 399 | ACPI sounds -- /proc/acpi/ibm/beep |
380 | above. I'd like to provide this functionality in an user-friendly way, | 400 | ---------------------------------- |
381 | but first I need to identify the which numbers correspond to which | ||
382 | LEDs on various models. | ||
383 | |||
384 | Experimental: ACPI sounds - /proc/acpi/ibm/beep | ||
385 | ----------------------------------------------- | ||
386 | 401 | ||
387 | The BEEP method is used internally by the ACPI firmware to provide | 402 | The BEEP method is used internally by the ACPI firmware to provide |
388 | audible alerts in various situtation. This feature allows the same | 403 | audible alerts in various situations. This feature allows the same |
389 | sounds to be triggered manually. | 404 | sounds to be triggered manually. |
390 | 405 | ||
391 | The commands are non-negative integer numbers: | 406 | The commands are non-negative integer numbers: |
392 | 407 | ||
393 | echo 0 >/proc/acpi/ibm/beep | 408 | echo <number> >/proc/acpi/ibm/beep |
394 | echo 1 >/proc/acpi/ibm/beep | ||
395 | echo 2 >/proc/acpi/ibm/beep | ||
396 | ... | ||
397 | 409 | ||
398 | The range of numbers which are used internally by various models is 0 | 410 | The valid <number> range is 0 to 17. Not all numbers trigger sounds |
399 | to 17, but it's possible that numbers outside this range are also | 411 | and the sounds vary from model to model. Here is the behavior on the |
400 | valid. Here is the behavior on the X40: | 412 | X40: |
401 | 413 | ||
402 | 2 - two beeps, pause, third beep | 414 | 0 - stop a sound in progress (but use 17 to stop 16) |
415 | 2 - two beeps, pause, third beep ("low battery") | ||
403 | 3 - single beep | 416 | 3 - single beep |
404 | 4 - "unable" | 417 | 4 - high, followed by low-pitched beep ("unable") |
405 | 5 - single beep | 418 | 5 - single beep |
406 | 6 - "AC/DC" | 419 | 6 - very high, followed by high-pitched beep ("AC/DC") |
407 | 7 - high-pitched beep | 420 | 7 - high-pitched beep |
408 | 9 - three short beeps | 421 | 9 - three short beeps |
409 | 10 - very long beep | 422 | 10 - very long beep |
410 | 12 - low-pitched beep | 423 | 12 - low-pitched beep |
424 | 15 - three high-pitched beeps repeating constantly, stop with 0 | ||
425 | 16 - one medium-pitched beep repeating constantly, stop with 17 | ||
426 | 17 - stop 16 | ||
427 | |||
428 | Temperature sensors -- /proc/acpi/ibm/thermal | ||
429 | --------------------------------------------- | ||
430 | |||
431 | Most ThinkPads include six or more separate temperature sensors but | ||
432 | only expose the CPU temperature through the standard ACPI methods. | ||
433 | This feature shows readings from up to eight different sensors. Some | ||
434 | readings may not be valid, e.g. may show large negative values. For | ||
435 | example, on the X40, a typical output may be: | ||
436 | |||
437 | temperatures: 42 42 45 41 36 -128 33 -128 | ||
438 | |||
439 | Thomas Gruber took his R51 apart and traced all six active sensors in | ||
440 | his laptop (the location of sensors may vary on other models): | ||
441 | |||
442 | 1: CPU | ||
443 | 2: Mini PCI Module | ||
444 | 3: HDD | ||
445 | 4: GPU | ||
446 | 5: Battery | ||
447 | 6: N/A | ||
448 | 7: Battery | ||
449 | 8: N/A | ||
450 | |||
451 | No commands can be written to this file. | ||
452 | |||
453 | EXPERIMENTAL: Embedded controller reigster dump -- /proc/acpi/ibm/ecdump | ||
454 | ------------------------------------------------------------------------ | ||
455 | |||
456 | This feature is marked EXPERIMENTAL because the implementation | ||
457 | directly accesses hardware registers and may not work as expected. USE | ||
458 | WITH CAUTION! To use this feature, you need to supply the | ||
459 | experimental=1 parameter when loading the module. | ||
460 | |||
461 | This feature dumps the values of 256 embedded controller | ||
462 | registers. Values which have changed since the last time the registers | ||
463 | were dumped are marked with a star: | ||
464 | |||
465 | [root@x40 ibm-acpi]# cat /proc/acpi/ibm/ecdump | ||
466 | EC +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0a +0b +0c +0d +0e +0f | ||
467 | EC 0x00: a7 47 87 01 fe 96 00 08 01 00 cb 00 00 00 40 00 | ||
468 | EC 0x10: 00 00 ff ff f4 3c 87 09 01 ff 42 01 ff ff 0d 00 | ||
469 | EC 0x20: 00 00 00 00 00 00 00 00 00 00 00 03 43 00 00 80 | ||
470 | EC 0x30: 01 07 1a 00 30 04 00 00 *85 00 00 10 00 50 00 00 | ||
471 | EC 0x40: 00 00 00 00 00 00 14 01 00 04 00 00 00 00 00 00 | ||
472 | EC 0x50: 00 c0 02 0d 00 01 01 02 02 03 03 03 03 *bc *02 *bc | ||
473 | EC 0x60: *02 *bc *02 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
474 | EC 0x70: 00 00 00 00 00 12 30 40 *24 *26 *2c *27 *20 80 *1f 80 | ||
475 | EC 0x80: 00 00 00 06 *37 *0e 03 00 00 00 0e 07 00 00 00 00 | ||
476 | EC 0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
477 | EC 0xa0: *ff 09 ff 09 ff ff *64 00 *00 *00 *a2 41 *ff *ff *e0 00 | ||
478 | EC 0xb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
479 | EC 0xc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
480 | EC 0xd0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
481 | EC 0xe0: 00 00 00 00 00 00 00 00 11 20 49 04 24 06 55 03 | ||
482 | EC 0xf0: 31 55 48 54 35 38 57 57 08 2f 45 73 07 65 6c 1a | ||
483 | |||
484 | This feature can be used to determine the register holding the fan | ||
485 | speed on some models. To do that, do the following: | ||
486 | |||
487 | - make sure the battery is fully charged | ||
488 | - make sure the fan is running | ||
489 | - run 'cat /proc/acpi/ibm/ecdump' several times, once per second or so | ||
490 | |||
491 | The first step makes sure various charging-related values don't | ||
492 | vary. The second ensures that the fan-related values do vary, since | ||
493 | the fan speed fluctuates a bit. The third will (hopefully) mark the | ||
494 | fan register with a star: | ||
495 | |||
496 | [root@x40 ibm-acpi]# cat /proc/acpi/ibm/ecdump | ||
497 | EC +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0a +0b +0c +0d +0e +0f | ||
498 | EC 0x00: a7 47 87 01 fe 96 00 08 01 00 cb 00 00 00 40 00 | ||
499 | EC 0x10: 00 00 ff ff f4 3c 87 09 01 ff 42 01 ff ff 0d 00 | ||
500 | EC 0x20: 00 00 00 00 00 00 00 00 00 00 00 03 43 00 00 80 | ||
501 | EC 0x30: 01 07 1a 00 30 04 00 00 85 00 00 10 00 50 00 00 | ||
502 | EC 0x40: 00 00 00 00 00 00 14 01 00 04 00 00 00 00 00 00 | ||
503 | EC 0x50: 00 c0 02 0d 00 01 01 02 02 03 03 03 03 bc 02 bc | ||
504 | EC 0x60: 02 bc 02 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
505 | EC 0x70: 00 00 00 00 00 12 30 40 24 27 2c 27 21 80 1f 80 | ||
506 | EC 0x80: 00 00 00 06 *be 0d 03 00 00 00 0e 07 00 00 00 00 | ||
507 | EC 0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
508 | EC 0xa0: ff 09 ff 09 ff ff 64 00 00 00 a2 41 ff ff e0 00 | ||
509 | EC 0xb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
510 | EC 0xc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
511 | EC 0xd0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
512 | EC 0xe0: 00 00 00 00 00 00 00 00 11 20 49 04 24 06 55 03 | ||
513 | EC 0xf0: 31 55 48 54 35 38 57 57 08 2f 45 73 07 65 6c 1a | ||
514 | |||
515 | Another set of values that varies often is the temperature | ||
516 | readings. Since temperatures don't change vary fast, you can take | ||
517 | several quick dumps to eliminate them. | ||
518 | |||
519 | You can use a similar method to figure out the meaning of other | ||
520 | embedded controller registers - e.g. make sure nothing else changes | ||
521 | except the charging or discharging battery to determine which | ||
522 | registers contain the current battery capacity, etc. If you experiment | ||
523 | with this, do send me your results (including some complete dumps with | ||
524 | a description of the conditions when they were taken.) | ||
525 | |||
526 | EXPERIMENTAL: LCD brightness control -- /proc/acpi/ibm/brightness | ||
527 | ----------------------------------------------------------------- | ||
528 | |||
529 | This feature is marked EXPERIMENTAL because the implementation | ||
530 | directly accesses hardware registers and may not work as expected. USE | ||
531 | WITH CAUTION! To use this feature, you need to supply the | ||
532 | experimental=1 parameter when loading the module. | ||
533 | |||
534 | This feature allows software control of the LCD brightness on ThinkPad | ||
535 | models which don't have a hardware brightness slider. The available | ||
536 | commands are: | ||
537 | |||
538 | echo up >/proc/acpi/ibm/brightness | ||
539 | echo down >/proc/acpi/ibm/brightness | ||
540 | echo 'level <level>' >/proc/acpi/ibm/brightness | ||
541 | |||
542 | The <level> number range is 0 to 7, although not all of them may be | ||
543 | distinct. The current brightness level is shown in the file. | ||
544 | |||
545 | EXPERIMENTAL: Volume control -- /proc/acpi/ibm/volume | ||
546 | ----------------------------------------------------- | ||
547 | |||
548 | This feature is marked EXPERIMENTAL because the implementation | ||
549 | directly accesses hardware registers and may not work as expected. USE | ||
550 | WITH CAUTION! To use this feature, you need to supply the | ||
551 | experimental=1 parameter when loading the module. | ||
552 | |||
553 | This feature allows volume control on ThinkPad models which don't have | ||
554 | a hardware volume knob. The available commands are: | ||
555 | |||
556 | echo up >/proc/acpi/ibm/volume | ||
557 | echo down >/proc/acpi/ibm/volume | ||
558 | echo mute >/proc/acpi/ibm/volume | ||
559 | echo 'level <level>' >/proc/acpi/ibm/volume | ||
560 | |||
561 | The <level> number range is 0 to 15 although not all of them may be | ||
562 | distinct. The unmute the volume after the mute command, use either the | ||
563 | up or down command (the level command will not unmute the volume). | ||
564 | The current volume level and mute state is shown in the file. | ||
565 | |||
566 | EXPERIMENTAL: fan speed, fan enable/disable -- /proc/acpi/ibm/fan | ||
567 | ----------------------------------------------------------------- | ||
568 | |||
569 | This feature is marked EXPERIMENTAL because the implementation | ||
570 | directly accesses hardware registers and may not work as expected. USE | ||
571 | WITH CAUTION! To use this feature, you need to supply the | ||
572 | experimental=1 parameter when loading the module. | ||
573 | |||
574 | This feature attempts to show the current fan speed. The speed is read | ||
575 | directly from the hardware registers of the embedded controller. This | ||
576 | is known to work on later R, T and X series ThinkPads but may show a | ||
577 | bogus value on other models. | ||
578 | |||
579 | The fan may be enabled or disabled with the following commands: | ||
580 | |||
581 | echo enable >/proc/acpi/ibm/fan | ||
582 | echo disable >/proc/acpi/ibm/fan | ||
583 | |||
584 | WARNING WARNING WARNING: do not leave the fan disabled unless you are | ||
585 | monitoring the temperature sensor readings and you are ready to enable | ||
586 | it if necessary to avoid overheating. | ||
587 | |||
588 | The fan only runs if it's enabled *and* the various temperature | ||
589 | sensors which control it read high enough. On the X40, this seems to | ||
590 | depend on the CPU and HDD temperatures. Specifically, the fan is | ||
591 | turned on when either the CPU temperature climbs to 56 degrees or the | ||
592 | HDD temperature climbs to 46 degrees. The fan is turned off when the | ||
593 | CPU temperature drops to 49 degrees and the HDD temperature drops to | ||
594 | 41 degrees. These thresholds cannot currently be controlled. | ||
595 | |||
596 | On the X31 and X40 (and ONLY on those models), the fan speed can be | ||
597 | controlled to a certain degree. Once the fan is running, it can be | ||
598 | forced to run faster or slower with the following command: | ||
599 | |||
600 | echo 'speed <speed>' > /proc/acpi/ibm/thermal | ||
601 | |||
602 | The sustainable range of fan speeds on the X40 appears to be from | ||
603 | about 3700 to about 7350. Values outside this range either do not have | ||
604 | any effect or the fan speed eventually settles somewhere in that | ||
605 | range. The fan cannot be stopped or started with this command. | ||
606 | |||
607 | On the 570, temperature readings are not available through this | ||
608 | feature and the fan control works a little differently. The fan speed | ||
609 | is reported in levels from 0 (off) to 7 (max) and can be controlled | ||
610 | with the following command: | ||
411 | 611 | ||
412 | (I've only been able to identify a couple of them). | 612 | echo 'level <level>' > /proc/acpi/ibm/thermal |
413 | |||
414 | If you try this feature, please send me a report similar to the | ||
415 | above. I'd like to provide this functionality in an user-friendly way, | ||
416 | but first I need to identify the which numbers correspond to which | ||
417 | sounds on various models. | ||
418 | 613 | ||
419 | 614 | ||
420 | Multiple Command, Module Parameters | 615 | Multiple Commands, Module Parameters |
421 | ----------------------------------- | 616 | ------------------------------------ |
422 | 617 | ||
423 | Multiple commands can be written to the proc files in one shot by | 618 | Multiple commands can be written to the proc files in one shot by |
424 | separating them with commas, for example: | 619 | separating them with commas, for example: |
@@ -451,24 +646,19 @@ scripts (included with ibm-acpi for completeness): | |||
451 | /usr/local/sbin/laptop_mode -- from the Linux kernel source | 646 | /usr/local/sbin/laptop_mode -- from the Linux kernel source |
452 | distribution, see Documentation/laptop-mode.txt | 647 | distribution, see Documentation/laptop-mode.txt |
453 | /sbin/service -- comes with Redhat/Fedora distributions | 648 | /sbin/service -- comes with Redhat/Fedora distributions |
649 | /usr/sbin/hibernate -- from the Software Suspend 2 distribution, | ||
650 | see http://softwaresuspend.berlios.de/ | ||
454 | 651 | ||
455 | Toan T Nguyen <ntt@control.uchicago.edu> has written a SuSE powersave | 652 | Toan T Nguyen <ntt@physics.ucla.edu> notes that Suse uses the |
456 | script for the X20, included in config/usr/sbin/ibm_hotkeys_X20 | 653 | powersave program to suspend ('powersave --suspend-to-ram') or |
654 | hibernate ('powersave --suspend-to-disk'). This means that the | ||
655 | hibernate script is not needed on that distribution. | ||
457 | 656 | ||
458 | Henrik Brix Andersen <brix@gentoo.org> has written a Gentoo ACPI event | 657 | Henrik Brix Andersen <brix@gentoo.org> has written a Gentoo ACPI event |
459 | handler script for the X31. You can get the latest version from | 658 | handler script for the X31. You can get the latest version from |
460 | http://dev.gentoo.org/~brix/files/x31.sh | 659 | http://dev.gentoo.org/~brix/files/x31.sh |
461 | 660 | ||
462 | David Schweikert <dws@ee.eth.ch> has written an alternative blank.sh | 661 | David Schweikert <dws@ee.eth.ch> has written an alternative blank.sh |
463 | script which works on Debian systems, included in | 662 | script which works on Debian systems. This scripts has now been |
464 | configs/etc/acpi/actions/blank-debian.sh | 663 | extended to also work on Fedora systems and included as the default |
465 | 664 | blank.sh in the distribution. | |
466 | |||
467 | TODO | ||
468 | ---- | ||
469 | |||
470 | I'd like to implement the following features but haven't yet found the | ||
471 | time and/or I don't yet know how to implement them: | ||
472 | |||
473 | - UltraBay floppy drive support | ||
474 | |||