About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / laptops / thinkpad-acpi.txt


Based on kernel version 4.16.1. Page generated on 2018-04-09 11:53 EST.

1			     ThinkPad ACPI Extras Driver
2	
3	                            Version 0.25
4	                        October 16th,  2013
5	
6	               Borislav Deianov <borislav@users.sf.net>
7	             Henrique de Moraes Holschuh <hmh@hmh.eng.br>
8	                      http://ibm-acpi.sf.net/
9	
10	
11	This is a Linux driver for the IBM and Lenovo ThinkPad laptops. It
12	supports various features of these laptops which are accessible
13	through the ACPI and ACPI EC framework, but not otherwise fully
14	supported by the generic Linux ACPI drivers.
15	
16	This driver used to be named ibm-acpi until kernel 2.6.21 and release
17	0.13-20070314.  It used to be in the drivers/acpi tree, but it was
18	moved to the drivers/misc tree and renamed to thinkpad-acpi for kernel
19	2.6.22, and release 0.14.  It was moved to drivers/platform/x86 for
20	kernel 2.6.29 and release 0.22.
21	
22	The driver is named "thinkpad-acpi".  In some places, like module
23	names and log messages, "thinkpad_acpi" is used because of userspace
24	issues.
25	
26	"tpacpi" is used as a shorthand where "thinkpad-acpi" would be too
27	long due to length limitations on some Linux kernel versions.
28	
29	Status
30	------
31	
32	The features currently supported are the following (see below for
33	detailed description):
34	
35		- Fn key combinations
36		- Bluetooth enable and disable
37		- video output switching, expansion control
38		- ThinkLight on and off
39		- CMOS/UCMS control
40		- LED control
41		- ACPI sounds
42		- temperature sensors
43		- Experimental: embedded controller register dump
44		- LCD brightness control
45		- Volume control
46		- Fan control and monitoring: fan speed, fan enable/disable
47		- WAN enable and disable
48		- UWB enable and disable
49	
50	A compatibility table by model and feature is maintained on the web
51	site, http://ibm-acpi.sf.net/. I appreciate any success or failure
52	reports, especially if they add to or correct the compatibility table.
53	Please include the following information in your report:
54	
55		- ThinkPad model name
56		- a copy of your ACPI tables, using the "acpidump" utility
57		- a copy of the output of dmidecode, with serial numbers
58		  and UUIDs masked off
59		- which driver features work and which don't
60		- the observed behavior of non-working features
61	
62	Any other comments or patches are also more than welcome.
63	
64	
65	Installation
66	------------
67	
68	If you are compiling this driver as included in the Linux kernel
69	sources, look for the CONFIG_THINKPAD_ACPI Kconfig option.
70	It is located on the menu path: "Device Drivers" -> "X86 Platform
71	Specific Device Drivers" -> "ThinkPad ACPI Laptop Extras".
72	
73	
74	Features
75	--------
76	
77	The driver exports two different interfaces to userspace, which can be
78	used to access the features it provides.  One is a legacy procfs-based
79	interface, which will be removed at some time in the future.  The other
80	is a new sysfs-based interface which is not complete yet.
81	
82	The procfs interface creates the /proc/acpi/ibm directory.  There is a
83	file under that directory for each feature it supports.  The procfs
84	interface is mostly frozen, and will change very little if at all: it
85	will not be extended to add any new functionality in the driver, instead
86	all new functionality will be implemented on the sysfs interface.
87	
88	The sysfs interface tries to blend in the generic Linux sysfs subsystems
89	and classes as much as possible.  Since some of these subsystems are not
90	yet ready or stabilized, it is expected that this interface will change,
91	and any and all userspace programs must deal with it.
92	
93	
94	Notes about the sysfs interface:
95	
96	Unlike what was done with the procfs interface, correctness when talking
97	to the sysfs interfaces will be enforced, as will correctness in the
98	thinkpad-acpi's implementation of sysfs interfaces.
99	
100	Also, any bugs in the thinkpad-acpi sysfs driver code or in the
101	thinkpad-acpi's implementation of the sysfs interfaces will be fixed for
102	maximum correctness, even if that means changing an interface in
103	non-compatible ways.  As these interfaces mature both in the kernel and
104	in thinkpad-acpi, such changes should become quite rare.
105	
106	Applications interfacing to the thinkpad-acpi sysfs interfaces must
107	follow all sysfs guidelines and correctly process all errors (the sysfs
108	interface makes extensive use of errors).  File descriptors and open /
109	close operations to the sysfs inodes must also be properly implemented.
110	
111	The version of thinkpad-acpi's sysfs interface is exported by the driver
112	as a driver attribute (see below).
113	
114	Sysfs driver attributes are on the driver's sysfs attribute space,
115	for 2.6.23+ this is /sys/bus/platform/drivers/thinkpad_acpi/ and
116	/sys/bus/platform/drivers/thinkpad_hwmon/
117	
118	Sysfs device attributes are on the thinkpad_acpi device sysfs attribute
119	space, for 2.6.23+ this is /sys/devices/platform/thinkpad_acpi/.
120	
121	Sysfs device attributes for the sensors and fan are on the
122	thinkpad_hwmon device's sysfs attribute space, but you should locate it
123	looking for a hwmon device with the name attribute of "thinkpad", or
124	better yet, through libsensors. For 4.14+ sysfs attributes were moved to the
125	hwmon device (/sys/bus/platform/devices/thinkpad_hwmon/hwmon/hwmon? or
126	/sys/class/hwmon/hwmon?).
127	
128	Driver version
129	--------------
130	
131	procfs: /proc/acpi/ibm/driver
132	sysfs driver attribute: version
133	
134	The driver name and version. No commands can be written to this file.
135	
136	
137	Sysfs interface version
138	-----------------------
139	
140	sysfs driver attribute: interface_version
141	
142	Version of the thinkpad-acpi sysfs interface, as an unsigned long
143	(output in hex format: 0xAAAABBCC), where:
144		AAAA - major revision
145		BB - minor revision
146		CC - bugfix revision
147	
148	The sysfs interface version changelog for the driver can be found at the
149	end of this document.  Changes to the sysfs interface done by the kernel
150	subsystems are not documented here, nor are they tracked by this
151	attribute.
152	
153	Changes to the thinkpad-acpi sysfs interface are only considered
154	non-experimental when they are submitted to Linux mainline, at which
155	point the changes in this interface are documented and interface_version
156	may be updated.  If you are using any thinkpad-acpi features not yet
157	sent to mainline for merging, you do so on your own risk: these features
158	may disappear, or be implemented in a different and incompatible way by
159	the time they are merged in Linux mainline.
160	
161	Changes that are backwards-compatible by nature (e.g. the addition of
162	attributes that do not change the way the other attributes work) do not
163	always warrant an update of interface_version.  Therefore, one must
164	expect that an attribute might not be there, and deal with it properly
165	(an attribute not being there *is* a valid way to make it clear that a
166	feature is not available in sysfs).
167	
168	
169	Hot keys
170	--------
171	
172	procfs: /proc/acpi/ibm/hotkey
173	sysfs device attribute: hotkey_*
174	
175	In a ThinkPad, the ACPI HKEY handler is responsible for communicating
176	some important events and also keyboard hot key presses to the operating
177	system.  Enabling the hotkey functionality of thinkpad-acpi signals the
178	firmware that such a driver is present, and modifies how the ThinkPad
179	firmware will behave in many situations.
180	
181	The driver enables the HKEY ("hot key") event reporting automatically
182	when loaded, and disables it when it is removed.
183	
184	The driver will report HKEY events in the following format:
185	
186		ibm/hotkey HKEY 00000080 0000xxxx
187	
188	Some of these events refer to hot key presses, but not all of them.
189	
190	The driver will generate events over the input layer for hot keys and
191	radio switches, and over the ACPI netlink layer for other events.  The
192	input layer support accepts the standard IOCTLs to remap the keycodes
193	assigned to each hot key.
194	
195	The hot key bit mask allows some control over which hot keys generate
196	events.  If a key is "masked" (bit set to 0 in the mask), the firmware
197	will handle it.  If it is "unmasked", it signals the firmware that
198	thinkpad-acpi would prefer to handle it, if the firmware would be so
199	kind to allow it (and it often doesn't!).
200	
201	Not all bits in the mask can be modified.  Not all bits that can be
202	modified do anything.  Not all hot keys can be individually controlled
203	by the mask.  Some models do not support the mask at all.  The behaviour
204	of the mask is, therefore, highly dependent on the ThinkPad model.
205	
206	The driver will filter out any unmasked hotkeys, so even if the firmware
207	doesn't allow disabling an specific hotkey, the driver will not report
208	events for unmasked hotkeys.
209	
210	Note that unmasking some keys prevents their default behavior.  For
211	example, if Fn+F5 is unmasked, that key will no longer enable/disable
212	Bluetooth by itself in firmware.
213	
214	Note also that not all Fn key combinations are supported through ACPI
215	depending on the ThinkPad model and firmware version.  On those
216	ThinkPads, it is still possible to support some extra hotkeys by
217	polling the "CMOS NVRAM" at least 10 times per second.  The driver
218	attempts to enables this functionality automatically when required.
219	
220	procfs notes:
221	
222	The following commands can be written to the /proc/acpi/ibm/hotkey file:
223	
224		echo 0xffffffff > /proc/acpi/ibm/hotkey -- enable all hot keys
225		echo 0 > /proc/acpi/ibm/hotkey -- disable all possible hot keys
226		... any other 8-hex-digit mask ...
227		echo reset > /proc/acpi/ibm/hotkey -- restore the recommended mask
228	
229	The following commands have been deprecated and will cause the kernel
230	to log a warning:
231	
232		echo enable > /proc/acpi/ibm/hotkey -- does nothing
233		echo disable > /proc/acpi/ibm/hotkey -- returns an error
234	
235	The procfs interface does not support NVRAM polling control.  So as to
236	maintain maximum bug-to-bug compatibility, it does not report any masks,
237	nor does it allow one to manipulate the hot key mask when the firmware
238	does not support masks at all, even if NVRAM polling is in use.
239	
240	sysfs notes:
241	
242		hotkey_bios_enabled:
243			DEPRECATED, WILL BE REMOVED SOON.
244	
245			Returns 0.
246	
247		hotkey_bios_mask:
248			DEPRECATED, DON'T USE, WILL BE REMOVED IN THE FUTURE.
249	
250			Returns the hot keys mask when thinkpad-acpi was loaded.
251			Upon module unload, the hot keys mask will be restored
252			to this value.   This is always 0x80c, because those are
253			the hotkeys that were supported by ancient firmware
254			without mask support.
255	
256		hotkey_enable:
257			DEPRECATED, WILL BE REMOVED SOON.
258	
259			0: returns -EPERM
260			1: does nothing
261	
262		hotkey_mask:
263			bit mask to enable reporting (and depending on
264			the firmware, ACPI event generation) for each hot key
265			(see above).  Returns the current status of the hot keys
266			mask, and allows one to modify it.
267	
268		hotkey_all_mask:
269			bit mask that should enable event reporting for all
270			supported hot keys, when echoed to hotkey_mask above.
271			Unless you know which events need to be handled
272			passively (because the firmware *will* handle them
273			anyway), do *not* use hotkey_all_mask.  Use
274			hotkey_recommended_mask, instead. You have been warned.
275	
276		hotkey_recommended_mask:
277			bit mask that should enable event reporting for all
278			supported hot keys, except those which are always
279			handled by the firmware anyway.  Echo it to
280			hotkey_mask above, to use.  This is the default mask
281			used by the driver.
282	
283		hotkey_source_mask:
284			bit mask that selects which hot keys will the driver
285			poll the NVRAM for.  This is auto-detected by the driver
286			based on the capabilities reported by the ACPI firmware,
287			but it can be overridden at runtime.
288	
289			Hot keys whose bits are set in hotkey_source_mask are
290			polled for in NVRAM, and reported as hotkey events if
291			enabled in hotkey_mask.  Only a few hot keys are
292			available through CMOS NVRAM polling.
293	
294			Warning: when in NVRAM mode, the volume up/down/mute
295			keys are synthesized according to changes in the mixer,
296			which uses a single volume up or volume down hotkey
297			press to unmute, as per the ThinkPad volume mixer user
298			interface.  When in ACPI event mode, volume up/down/mute
299			events are reported by the firmware and can behave
300			differently (and that behaviour changes with firmware
301			version -- not just with firmware models -- as well as
302			OSI(Linux) state).
303	
304		hotkey_poll_freq:
305			frequency in Hz for hot key polling. It must be between
306			0 and 25 Hz.  Polling is only carried out when strictly
307			needed.
308	
309			Setting hotkey_poll_freq to zero disables polling, and
310			will cause hot key presses that require NVRAM polling
311			to never be reported.
312	
313			Setting hotkey_poll_freq too low may cause repeated
314			pressings of the same hot key to be misreported as a
315			single key press, or to not even be detected at all.
316			The recommended polling frequency is 10Hz.
317	
318		hotkey_radio_sw:
319			If the ThinkPad has a hardware radio switch, this
320			attribute will read 0 if the switch is in the "radios
321			disabled" position, and 1 if the switch is in the
322			"radios enabled" position.
323	
324			This attribute has poll()/select() support.
325	
326		hotkey_tablet_mode:
327			If the ThinkPad has tablet capabilities, this attribute
328			will read 0 if the ThinkPad is in normal mode, and
329			1 if the ThinkPad is in tablet mode.
330	
331			This attribute has poll()/select() support.
332	
333		wakeup_reason:
334			Set to 1 if the system is waking up because the user
335			requested a bay ejection.  Set to 2 if the system is
336			waking up because the user requested the system to
337			undock.  Set to zero for normal wake-ups or wake-ups
338			due to unknown reasons.
339	
340			This attribute has poll()/select() support.
341	
342		wakeup_hotunplug_complete:
343			Set to 1 if the system was waken up because of an
344			undock or bay ejection request, and that request
345			was successfully completed.  At this point, it might
346			be useful to send the system back to sleep, at the
347			user's choice.  Refer to HKEY events 0x4003 and
348			0x3003, below.
349	
350			This attribute has poll()/select() support.
351	
352	input layer notes:
353	
354	A Hot key is mapped to a single input layer EV_KEY event, possibly
355	followed by an EV_MSC MSC_SCAN event that shall contain that key's scan
356	code.  An EV_SYN event will always be generated to mark the end of the
357	event block.
358	
359	Do not use the EV_MSC MSC_SCAN events to process keys.  They are to be
360	used as a helper to remap keys, only.  They are particularly useful when
361	remapping KEY_UNKNOWN keys.
362	
363	The events are available in an input device, with the following id:
364	
365		Bus:		BUS_HOST
366		vendor:		0x1014 (PCI_VENDOR_ID_IBM)  or
367				0x17aa (PCI_VENDOR_ID_LENOVO)
368		product:	0x5054 ("TP")
369		version:	0x4101
370	
371	The version will have its LSB incremented if the keymap changes in a
372	backwards-compatible way.  The MSB shall always be 0x41 for this input
373	device.  If the MSB is not 0x41, do not use the device as described in
374	this section, as it is either something else (e.g. another input device
375	exported by a thinkpad driver, such as HDAPS) or its functionality has
376	been changed in a non-backwards compatible way.
377	
378	Adding other event types for other functionalities shall be considered a
379	backwards-compatible change for this input device.
380	
381	Thinkpad-acpi Hot Key event map (version 0x4101):
382	
383	ACPI	Scan
384	event	code	Key		Notes
385	
386	0x1001	0x00	FN+F1		-
387	
388	0x1002	0x01	FN+F2		IBM: battery (rare)
389					Lenovo: Screen lock
390	
391	0x1003	0x02	FN+F3		Many IBM models always report
392					this hot key, even with hot keys
393					disabled or with Fn+F3 masked
394					off
395					IBM: screen lock, often turns
396					off the ThinkLight as side-effect
397					Lenovo: battery
398	
399	0x1004	0x03	FN+F4		Sleep button (ACPI sleep button
400					semantics, i.e. sleep-to-RAM).
401					It always generates some kind
402					of event, either the hot key
403					event or an ACPI sleep button
404					event. The firmware may
405					refuse to generate further FN+F4
406					key presses until a S3 or S4 ACPI
407					sleep cycle is performed or some
408					time passes.
409	
410	0x1005	0x04	FN+F5		Radio.  Enables/disables
411					the internal Bluetooth hardware
412					and W-WAN card if left in control
413					of the firmware.  Does not affect
414					the WLAN card.
415					Should be used to turn on/off all
416					radios (Bluetooth+W-WAN+WLAN),
417					really.
418	
419	0x1006	0x05	FN+F6		-
420	
421	0x1007	0x06	FN+F7		Video output cycle.
422					Do you feel lucky today?
423	
424	0x1008	0x07	FN+F8		IBM: toggle screen expand
425					Lenovo: configure UltraNav,
426					or toggle screen expand
427	
428	0x1009	0x08	FN+F9		-
429		..	..		..
430	0x100B	0x0A	FN+F11		-
431	
432	0x100C	0x0B	FN+F12		Sleep to disk.  You are always
433					supposed to handle it yourself,
434					either through the ACPI event,
435					or through a hotkey event.
436					The firmware may refuse to
437					generate further FN+F12 key
438					press events until a S3 or S4
439					ACPI sleep cycle is performed,
440					or some time passes.
441	
442	0x100D	0x0C	FN+BACKSPACE	-
443	0x100E	0x0D	FN+INSERT	-
444	0x100F	0x0E	FN+DELETE	-
445	
446	0x1010	0x0F	FN+HOME		Brightness up.  This key is
447					always handled by the firmware
448					in IBM ThinkPads, even when
449					unmasked.  Just leave it alone.
450					For Lenovo ThinkPads with a new
451					BIOS, it has to be handled either
452					by the ACPI OSI, or by userspace.
453					The driver does the right thing,
454					never mess with this.
455	0x1011	0x10	FN+END		Brightness down.  See brightness
456					up for details.
457	
458	0x1012	0x11	FN+PGUP		ThinkLight toggle.  This key is
459					always handled by the firmware,
460					even when unmasked.
461	
462	0x1013	0x12	FN+PGDOWN	-
463	
464	0x1014	0x13	FN+SPACE	Zoom key
465	
466	0x1015	0x14	VOLUME UP	Internal mixer volume up. This
467					key is always handled by the
468					firmware, even when unmasked.
469					NOTE: Lenovo seems to be changing
470					this.
471	0x1016	0x15	VOLUME DOWN	Internal mixer volume up. This
472					key is always handled by the
473					firmware, even when unmasked.
474					NOTE: Lenovo seems to be changing
475					this.
476	0x1017	0x16	MUTE		Mute internal mixer. This
477					key is always handled by the
478					firmware, even when unmasked.
479	
480	0x1018	0x17	THINKPAD	ThinkPad/Access IBM/Lenovo key
481	
482	0x1019	0x18	unknown
483	..	..	..
484	0x1020	0x1F	unknown
485	
486	The ThinkPad firmware does not allow one to differentiate when most hot
487	keys are pressed or released (either that, or we don't know how to, yet).
488	For these keys, the driver generates a set of events for a key press and
489	immediately issues the same set of events for a key release.  It is
490	unknown by the driver if the ThinkPad firmware triggered these events on
491	hot key press or release, but the firmware will do it for either one, not
492	both.
493	
494	If a key is mapped to KEY_RESERVED, it generates no input events at all.
495	If a key is mapped to KEY_UNKNOWN, it generates an input event that
496	includes an scan code.  If a key is mapped to anything else, it will
497	generate input device EV_KEY events.
498	
499	In addition to the EV_KEY events, thinkpad-acpi may also issue EV_SW
500	events for switches:
501	
502	SW_RFKILL_ALL	T60 and later hardware rfkill rocker switch
503	SW_TABLET_MODE	Tablet ThinkPads HKEY events 0x5009 and 0x500A
504	
505	Non hotkey ACPI HKEY event map:
506	-------------------------------
507	
508	Events that are never propagated by the driver:
509	
510	0x2304		System is waking up from suspend to undock
511	0x2305		System is waking up from suspend to eject bay
512	0x2404		System is waking up from hibernation to undock
513	0x2405		System is waking up from hibernation to eject bay
514	0x5001		Lid closed
515	0x5002		Lid opened
516	0x5009		Tablet swivel: switched to tablet mode
517	0x500A		Tablet swivel: switched to normal mode
518	0x5010		Brightness level changed/control event
519	0x6000		KEYBOARD: Numlock key pressed
520	0x6005		KEYBOARD: Fn key pressed (TO BE VERIFIED)
521	0x7000		Radio Switch may have changed state
522	
523	
524	Events that are propagated by the driver to userspace:
525	
526	0x2313		ALARM: System is waking up from suspend because
527			the battery is nearly empty
528	0x2413		ALARM: System is waking up from hibernation because
529			the battery is nearly empty
530	0x3003		Bay ejection (see 0x2x05) complete, can sleep again
531	0x3006		Bay hotplug request (hint to power up SATA link when
532			the optical drive tray is ejected)
533	0x4003		Undocked (see 0x2x04), can sleep again
534	0x4010		Docked into hotplug port replicator (non-ACPI dock)
535	0x4011		Undocked from hotplug port replicator (non-ACPI dock)
536	0x500B		Tablet pen inserted into its storage bay
537	0x500C		Tablet pen removed from its storage bay
538	0x6011		ALARM: battery is too hot
539	0x6012		ALARM: battery is extremely hot
540	0x6021		ALARM: a sensor is too hot
541	0x6022		ALARM: a sensor is extremely hot
542	0x6030		System thermal table changed
543	0x6040		Nvidia Optimus/AC adapter related (TO BE VERIFIED)
544	0x60C0		X1 Yoga 2016, Tablet mode status changed
545	
546	Battery nearly empty alarms are a last resort attempt to get the
547	operating system to hibernate or shutdown cleanly (0x2313), or shutdown
548	cleanly (0x2413) before power is lost.  They must be acted upon, as the
549	wake up caused by the firmware will have negated most safety nets...
550	
551	When any of the "too hot" alarms happen, according to Lenovo the user
552	should suspend or hibernate the laptop (and in the case of battery
553	alarms, unplug the AC adapter) to let it cool down.  These alarms do
554	signal that something is wrong, they should never happen on normal
555	operating conditions.
556	
557	The "extremely hot" alarms are emergencies.  According to Lenovo, the
558	operating system is to force either an immediate suspend or hibernate
559	cycle, or a system shutdown.  Obviously, something is very wrong if this
560	happens.
561	
562	
563	Brightness hotkey notes:
564	
565	Don't mess with the brightness hotkeys in a Thinkpad.  If you want
566	notifications for OSD, use the sysfs backlight class event support.
567	
568	The driver will issue KEY_BRIGHTNESS_UP and KEY_BRIGHTNESS_DOWN events
569	automatically for the cases were userspace has to do something to
570	implement brightness changes.  When you override these events, you will
571	either fail to handle properly the ThinkPads that require explicit
572	action to change backlight brightness, or the ThinkPads that require
573	that no action be taken to work properly.
574	
575	
576	Bluetooth
577	---------
578	
579	procfs: /proc/acpi/ibm/bluetooth
580	sysfs device attribute: bluetooth_enable (deprecated)
581	sysfs rfkill class: switch "tpacpi_bluetooth_sw"
582	
583	This feature shows the presence and current state of a ThinkPad
584	Bluetooth device in the internal ThinkPad CDC slot.
585	
586	If the ThinkPad supports it, the Bluetooth state is stored in NVRAM,
587	so it is kept across reboots and power-off.
588	
589	Procfs notes:
590	
591	If Bluetooth is installed, the following commands can be used:
592	
593		echo enable > /proc/acpi/ibm/bluetooth
594		echo disable > /proc/acpi/ibm/bluetooth
595	
596	Sysfs notes:
597	
598		If the Bluetooth CDC card is installed, it can be enabled /
599		disabled through the "bluetooth_enable" thinkpad-acpi device
600		attribute, and its current status can also be queried.
601	
602		enable:
603			0: disables Bluetooth / Bluetooth is disabled
604			1: enables Bluetooth / Bluetooth is enabled.
605	
606		Note: this interface has been superseded by the	generic rfkill
607		class.  It has been deprecated, and it will be removed in year
608		2010.
609	
610		rfkill controller switch "tpacpi_bluetooth_sw": refer to
611		Documentation/rfkill.txt for details.
612	
613	
614	Video output control -- /proc/acpi/ibm/video
615	--------------------------------------------
616	
617	This feature allows control over the devices used for video output -
618	LCD, CRT or DVI (if available). The following commands are available:
619	
620		echo lcd_enable > /proc/acpi/ibm/video
621		echo lcd_disable > /proc/acpi/ibm/video
622		echo crt_enable > /proc/acpi/ibm/video
623		echo crt_disable > /proc/acpi/ibm/video
624		echo dvi_enable > /proc/acpi/ibm/video
625		echo dvi_disable > /proc/acpi/ibm/video
626		echo auto_enable > /proc/acpi/ibm/video
627		echo auto_disable > /proc/acpi/ibm/video
628		echo expand_toggle > /proc/acpi/ibm/video
629		echo video_switch > /proc/acpi/ibm/video
630	
631	NOTE: Access to this feature is restricted to processes owning the
632	CAP_SYS_ADMIN capability for safety reasons, as it can interact badly
633	enough with some versions of X.org to crash it.
634	
635	Each video output device can be enabled or disabled individually.
636	Reading /proc/acpi/ibm/video shows the status of each device.
637	
638	Automatic video switching can be enabled or disabled.  When automatic
639	video switching is enabled, certain events (e.g. opening the lid,
640	docking or undocking) cause the video output device to change
641	automatically. While this can be useful, it also causes flickering
642	and, on the X40, video corruption. By disabling automatic switching,
643	the flickering or video corruption can be avoided.
644	
645	The video_switch command cycles through the available video outputs
646	(it simulates the behavior of Fn-F7).
647	
648	Video expansion can be toggled through this feature. This controls
649	whether the display is expanded to fill the entire LCD screen when a
650	mode with less than full resolution is used. Note that the current
651	video expansion status cannot be determined through this feature.
652	
653	Note that on many models (particularly those using Radeon graphics
654	chips) the X driver configures the video card in a way which prevents
655	Fn-F7 from working. This also disables the video output switching
656	features of this driver, as it uses the same ACPI methods as
657	Fn-F7. Video switching on the console should still work.
658	
659	UPDATE: refer to https://bugs.freedesktop.org/show_bug.cgi?id=2000
660	
661	
662	ThinkLight control
663	------------------
664	
665	procfs: /proc/acpi/ibm/light
666	sysfs attributes: as per LED class, for the "tpacpi::thinklight" LED
667	
668	procfs notes:
669	
670	The ThinkLight status can be read and set through the procfs interface.  A
671	few models which do not make the status available will show the ThinkLight
672	status as "unknown". The available commands are:
673	
674		echo on  > /proc/acpi/ibm/light
675		echo off > /proc/acpi/ibm/light
676	
677	sysfs notes:
678	
679	The ThinkLight sysfs interface is documented by the LED class
680	documentation, in Documentation/leds/leds-class.txt.  The ThinkLight LED name
681	is "tpacpi::thinklight".
682	
683	Due to limitations in the sysfs LED class, if the status of the ThinkLight
684	cannot be read or if it is unknown, thinkpad-acpi will report it as "off".
685	It is impossible to know if the status returned through sysfs is valid.
686	
687	
688	CMOS/UCMS control
689	-----------------
690	
691	procfs: /proc/acpi/ibm/cmos
692	sysfs device attribute: cmos_command
693	
694	This feature is mostly used internally by the ACPI firmware to keep the legacy
695	CMOS NVRAM bits in sync with the current machine state, and to record this
696	state so that the ThinkPad will retain such settings across reboots.
697	
698	Some of these commands actually perform actions in some ThinkPad models, but
699	this is expected to disappear more and more in newer models.  As an example, in
700	a T43 and in a X40, commands 12 and 13 still control the ThinkLight state for
701	real, but commands 0 to 2 don't control the mixer anymore (they have been
702	phased out) and just update the NVRAM.
703	
704	The range of valid cmos command numbers is 0 to 21, but not all have an
705	effect and the behavior varies from model to model.  Here is the behavior
706	on the X40 (tpb is the ThinkPad Buttons utility):
707	
708		0 - Related to "Volume down" key press
709		1 - Related to "Volume up" key press
710		2 - Related to "Mute on" key press
711		3 - Related to "Access IBM" key press
712		4 - Related to "LCD brightness up" key press
713		5 - Related to "LCD brightness down" key press
714		11 - Related to "toggle screen expansion" key press/function
715		12 - Related to "ThinkLight on"
716		13 - Related to "ThinkLight off"
717		14 - Related to "ThinkLight" key press (toggle ThinkLight)
718	
719	The cmos command interface is prone to firmware split-brain problems, as
720	in newer ThinkPads it is just a compatibility layer.  Do not use it, it is
721	exported just as a debug tool.
722	
723	
724	LED control
725	-----------
726	
727	procfs: /proc/acpi/ibm/led
728	sysfs attributes: as per LED class, see below for names
729	
730	Some of the LED indicators can be controlled through this feature.  On
731	some older ThinkPad models, it is possible to query the status of the
732	LED indicators as well.  Newer ThinkPads cannot query the real status
733	of the LED indicators.
734	
735	Because misuse of the LEDs could induce an unaware user to perform
736	dangerous actions (like undocking or ejecting a bay device while the
737	buses are still active), or mask an important alarm (such as a nearly
738	empty battery, or a broken battery), access to most LEDs is
739	restricted.
740	
741	Unrestricted access to all LEDs requires that thinkpad-acpi be
742	compiled with the CONFIG_THINKPAD_ACPI_UNSAFE_LEDS option enabled.
743	Distributions must never enable this option.  Individual users that
744	are aware of the consequences are welcome to enabling it.
745	
746	Audio mute and microphone mute LEDs are supported, but currently not
747	visible to userspace. They are used by the snd-hda-intel audio driver.
748	
749	procfs notes:
750	
751	The available commands are:
752	
753		echo '<LED number> on' >/proc/acpi/ibm/led
754		echo '<LED number> off' >/proc/acpi/ibm/led
755		echo '<LED number> blink' >/proc/acpi/ibm/led
756	
757	The <LED number> range is 0 to 15. The set of LEDs that can be
758	controlled varies from model to model. Here is the common ThinkPad
759	mapping:
760	
761		0 - power
762		1 - battery (orange)
763		2 - battery (green)
764		3 - UltraBase/dock
765		4 - UltraBay
766		5 - UltraBase battery slot
767		6 - (unknown)
768		7 - standby
769		8 - dock status 1
770		9 - dock status 2
771		10, 11 - (unknown)
772		12 - thinkvantage
773		13, 14, 15 - (unknown)
774	
775	All of the above can be turned on and off and can be made to blink.
776	
777	sysfs notes:
778	
779	The ThinkPad LED sysfs interface is described in detail by the LED class
780	documentation, in Documentation/leds/leds-class.txt.
781	
782	The LEDs are named (in LED ID order, from 0 to 12):
783	"tpacpi::power", "tpacpi:orange:batt", "tpacpi:green:batt",
784	"tpacpi::dock_active", "tpacpi::bay_active", "tpacpi::dock_batt",
785	"tpacpi::unknown_led", "tpacpi::standby", "tpacpi::dock_status1",
786	"tpacpi::dock_status2", "tpacpi::unknown_led2", "tpacpi::unknown_led3",
787	"tpacpi::thinkvantage".
788	
789	Due to limitations in the sysfs LED class, if the status of the LED
790	indicators cannot be read due to an error, thinkpad-acpi will report it as
791	a brightness of zero (same as LED off).
792	
793	If the thinkpad firmware doesn't support reading the current status,
794	trying to read the current LED brightness will just return whatever
795	brightness was last written to that attribute.
796	
797	These LEDs can blink using hardware acceleration.  To request that a
798	ThinkPad indicator LED should blink in hardware accelerated mode, use the
799	"timer" trigger, and leave the delay_on and delay_off parameters set to
800	zero (to request hardware acceleration autodetection).
801	
802	LEDs that are known not to exist in a given ThinkPad model are not
803	made available through the sysfs interface.  If you have a dock and you
804	notice there are LEDs listed for your ThinkPad that do not exist (and
805	are not in the dock), or if you notice that there are missing LEDs,
806	a report to ibm-acpi-devel@lists.sourceforge.net is appreciated.
807	
808	
809	ACPI sounds -- /proc/acpi/ibm/beep
810	----------------------------------
811	
812	The BEEP method is used internally by the ACPI firmware to provide
813	audible alerts in various situations. This feature allows the same
814	sounds to be triggered manually.
815	
816	The commands are non-negative integer numbers:
817	
818		echo <number> >/proc/acpi/ibm/beep
819	
820	The valid <number> range is 0 to 17. Not all numbers trigger sounds
821	and the sounds vary from model to model. Here is the behavior on the
822	X40:
823	
824		0 - stop a sound in progress (but use 17 to stop 16)
825		2 - two beeps, pause, third beep ("low battery")
826		3 - single beep
827		4 - high, followed by low-pitched beep ("unable")
828		5 - single beep
829		6 - very high, followed by high-pitched beep ("AC/DC")
830		7 - high-pitched beep
831		9 - three short beeps
832		10 - very long beep
833		12 - low-pitched beep
834		15 - three high-pitched beeps repeating constantly, stop with 0
835		16 - one medium-pitched beep repeating constantly, stop with 17
836		17 - stop 16
837	
838	
839	Temperature sensors
840	-------------------
841	
842	procfs: /proc/acpi/ibm/thermal
843	sysfs device attributes: (hwmon "thinkpad") temp*_input
844	
845	Most ThinkPads include six or more separate temperature sensors but only
846	expose the CPU temperature through the standard ACPI methods.  This
847	feature shows readings from up to eight different sensors on older
848	ThinkPads, and up to sixteen different sensors on newer ThinkPads.
849	
850	For example, on the X40, a typical output may be:
851	temperatures:   42 42 45 41 36 -128 33 -128
852	
853	On the T43/p, a typical output may be:
854	temperatures:   48 48 36 52 38 -128 31 -128 48 52 48 -128 -128 -128 -128 -128
855	
856	The mapping of thermal sensors to physical locations varies depending on
857	system-board model (and thus, on ThinkPad model).
858	
859	http://thinkwiki.org/wiki/Thermal_Sensors is a public wiki page that
860	tries to track down these locations for various models.
861	
862	Most (newer?) models seem to follow this pattern:
863	
864	1:  CPU
865	2:  (depends on model)
866	3:  (depends on model)
867	4:  GPU
868	5:  Main battery: main sensor
869	6:  Bay battery: main sensor
870	7:  Main battery: secondary sensor
871	8:  Bay battery: secondary sensor
872	9-15: (depends on model)
873	
874	For the R51 (source: Thomas Gruber):
875	2:  Mini-PCI
876	3:  Internal HDD
877	
878	For the T43, T43/p (source: Shmidoax/Thinkwiki.org)
879	http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_T43.2C_T43p
880	2:  System board, left side (near PCMCIA slot), reported as HDAPS temp
881	3:  PCMCIA slot
882	9:  MCH (northbridge) to DRAM Bus
883	10: Clock-generator, mini-pci card and ICH (southbridge), under Mini-PCI
884	    card, under touchpad
885	11: Power regulator, underside of system board, below F2 key
886	
887	The A31 has a very atypical layout for the thermal sensors
888	(source: Milos Popovic, http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_A31)
889	1:  CPU
890	2:  Main Battery: main sensor
891	3:  Power Converter
892	4:  Bay Battery: main sensor
893	5:  MCH (northbridge)
894	6:  PCMCIA/ambient
895	7:  Main Battery: secondary sensor
896	8:  Bay Battery: secondary sensor
897	
898	
899	Procfs notes:
900		Readings from sensors that are not available return -128.
901		No commands can be written to this file.
902	
903	Sysfs notes:
904		Sensors that are not available return the ENXIO error.  This
905		status may change at runtime, as there are hotplug thermal
906		sensors, like those inside the batteries and docks.
907	
908		thinkpad-acpi thermal sensors are reported through the hwmon
909		subsystem, and follow all of the hwmon guidelines at
910		Documentation/hwmon.
911	
912	EXPERIMENTAL: Embedded controller register dump
913	-----------------------------------------------
914	
915	This feature is not included in the thinkpad driver anymore.
916	Instead the EC can be accessed through /sys/kernel/debug/ec with
917	a userspace tool which can be found here:
918	ftp://ftp.suse.com/pub/people/trenn/sources/ec
919	
920	Use it to determine the register holding the fan
921	speed on some models. To do that, do the following:
922		- make sure the battery is fully charged
923		- make sure the fan is running
924		- use above mentioned tool to read out the EC
925	
926	Often fan and temperature values vary between
927	readings. Since temperatures don't change vary fast, you can take
928	several quick dumps to eliminate them.
929	
930	You can use a similar method to figure out the meaning of other
931	embedded controller registers - e.g. make sure nothing else changes
932	except the charging or discharging battery to determine which
933	registers contain the current battery capacity, etc. If you experiment
934	with this, do send me your results (including some complete dumps with
935	a description of the conditions when they were taken.)
936	
937	
938	LCD brightness control
939	----------------------
940	
941	procfs: /proc/acpi/ibm/brightness
942	sysfs backlight device "thinkpad_screen"
943	
944	This feature allows software control of the LCD brightness on ThinkPad
945	models which don't have a hardware brightness slider.
946	
947	It has some limitations: the LCD backlight cannot be actually turned
948	on or off by this interface, it just controls the backlight brightness
949	level.
950	
951	On IBM (and some of the earlier Lenovo) ThinkPads, the backlight control
952	has eight brightness levels, ranging from 0 to 7.  Some of the levels
953	may not be distinct.  Later Lenovo models that implement the ACPI
954	display backlight brightness control methods have 16 levels, ranging
955	from 0 to 15.
956	
957	For IBM ThinkPads, there are two interfaces to the firmware for direct
958	brightness control, EC and UCMS (or CMOS).  To select which one should be
959	used, use the brightness_mode module parameter: brightness_mode=1 selects
960	EC mode, brightness_mode=2 selects UCMS mode, brightness_mode=3 selects EC
961	mode with NVRAM backing (so that brightness changes are remembered across
962	shutdown/reboot).
963	
964	The driver tries to select which interface to use from a table of
965	defaults for each ThinkPad model.  If it makes a wrong choice, please
966	report this as a bug, so that we can fix it.
967	
968	Lenovo ThinkPads only support brightness_mode=2 (UCMS).
969	
970	When display backlight brightness controls are available through the
971	standard ACPI interface, it is best to use it instead of this direct
972	ThinkPad-specific interface.  The driver will disable its native
973	backlight brightness control interface if it detects that the standard
974	ACPI interface is available in the ThinkPad.
975	
976	If you want to use the thinkpad-acpi backlight brightness control
977	instead of the generic ACPI video backlight brightness control for some
978	reason, you should use the acpi_backlight=vendor kernel parameter.
979	
980	The brightness_enable module parameter can be used to control whether
981	the LCD brightness control feature will be enabled when available.
982	brightness_enable=0 forces it to be disabled.  brightness_enable=1
983	forces it to be enabled when available, even if the standard ACPI
984	interface is also available.
985	
986	Procfs notes:
987	
988		The available commands are:
989	
990		echo up   >/proc/acpi/ibm/brightness
991		echo down >/proc/acpi/ibm/brightness
992		echo 'level <level>' >/proc/acpi/ibm/brightness
993	
994	Sysfs notes:
995	
996	The interface is implemented through the backlight sysfs class, which is
997	poorly documented at this time.
998	
999	Locate the thinkpad_screen device under /sys/class/backlight, and inside
1000	it there will be the following attributes:
1001	
1002		max_brightness:
1003			Reads the maximum brightness the hardware can be set to.
1004			The minimum is always zero.
1005	
1006		actual_brightness:
1007			Reads what brightness the screen is set to at this instant.
1008	
1009		brightness:
1010			Writes request the driver to change brightness to the
1011			given value.  Reads will tell you what brightness the
1012			driver is trying to set the display to when "power" is set
1013			to zero and the display has not been dimmed by a kernel
1014			power management event.
1015	
1016		power:
1017			power management mode, where 0 is "display on", and 1 to 3
1018			will dim the display backlight to brightness level 0
1019			because thinkpad-acpi cannot really turn the backlight
1020			off.  Kernel power management events can temporarily
1021			increase the current power management level, i.e. they can
1022			dim the display.
1023	
1024	
1025	WARNING:
1026	
1027	    Whatever you do, do NOT ever call thinkpad-acpi backlight-level change
1028	    interface and the ACPI-based backlight level change interface
1029	    (available on newer BIOSes, and driven by the Linux ACPI video driver)
1030	    at the same time.  The two will interact in bad ways, do funny things,
1031	    and maybe reduce the life of the backlight lamps by needlessly kicking
1032	    its level up and down at every change.
1033	
1034	
1035	Volume control (Console Audio control)
1036	--------------------------------------
1037	
1038	procfs: /proc/acpi/ibm/volume
1039	ALSA: "ThinkPad Console Audio Control", default ID: "ThinkPadEC"
1040	
1041	NOTE: by default, the volume control interface operates in read-only
1042	mode, as it is supposed to be used for on-screen-display purposes.
1043	The read/write mode can be enabled through the use of the
1044	"volume_control=1" module parameter.
1045	
1046	NOTE: distros are urged to not enable volume_control by default, this
1047	should be done by the local admin only.  The ThinkPad UI is for the
1048	console audio control to be done through the volume keys only, and for
1049	the desktop environment to just provide on-screen-display feedback.
1050	Software volume control should be done only in the main AC97/HDA
1051	mixer.
1052	
1053	
1054	About the ThinkPad Console Audio control:
1055	
1056	ThinkPads have a built-in amplifier and muting circuit that drives the
1057	console headphone and speakers.  This circuit is after the main AC97
1058	or HDA mixer in the audio path, and under exclusive control of the
1059	firmware.
1060	
1061	ThinkPads have three special hotkeys to interact with the console
1062	audio control: volume up, volume down and mute.
1063	
1064	It is worth noting that the normal way the mute function works (on
1065	ThinkPads that do not have a "mute LED") is:
1066	
1067	1. Press mute to mute.  It will *always* mute, you can press it as
1068	   many times as you want, and the sound will remain mute.
1069	
1070	2. Press either volume key to unmute the ThinkPad (it will _not_
1071	   change the volume, it will just unmute).
1072	
1073	This is a very superior design when compared to the cheap software-only
1074	mute-toggle solution found on normal consumer laptops:  you can be
1075	absolutely sure the ThinkPad will not make noise if you press the mute
1076	button, no matter the previous state.
1077	
1078	The IBM ThinkPads, and the earlier Lenovo ThinkPads have variable-gain
1079	amplifiers driving the speakers and headphone output, and the firmware
1080	also handles volume control for the headphone and speakers on these
1081	ThinkPads without any help from the operating system (this volume
1082	control stage exists after the main AC97 or HDA mixer in the audio
1083	path).
1084	
1085	The newer Lenovo models only have firmware mute control, and depend on
1086	the main HDA mixer to do volume control (which is done by the operating
1087	system).  In this case, the volume keys are filtered out for unmute
1088	key press (there are some firmware bugs in this area) and delivered as
1089	normal key presses to the operating system (thinkpad-acpi is not
1090	involved).
1091	
1092	
1093	The ThinkPad-ACPI volume control:
1094	
1095	The preferred way to interact with the Console Audio control is the
1096	ALSA interface.
1097	
1098	The legacy procfs interface allows one to read the current state,
1099	and if volume control is enabled, accepts the following commands:
1100	
1101		echo up   >/proc/acpi/ibm/volume
1102		echo down >/proc/acpi/ibm/volume
1103		echo mute >/proc/acpi/ibm/volume
1104		echo unmute >/proc/acpi/ibm/volume
1105		echo 'level <level>' >/proc/acpi/ibm/volume
1106	
1107	The <level> number range is 0 to 14 although not all of them may be
1108	distinct. To unmute the volume after the mute command, use either the
1109	up or down command (the level command will not unmute the volume), or
1110	the unmute command.
1111	
1112	You can use the volume_capabilities parameter to tell the driver
1113	whether your thinkpad has volume control or mute-only control:
1114	volume_capabilities=1 for mixers with mute and volume control,
1115	volume_capabilities=2 for mixers with only mute control.
1116	
1117	If the driver misdetects the capabilities for your ThinkPad model,
1118	please report this to ibm-acpi-devel@lists.sourceforge.net, so that we
1119	can update the driver.
1120	
1121	There are two strategies for volume control.  To select which one
1122	should be used, use the volume_mode module parameter: volume_mode=1
1123	selects EC mode, and volume_mode=3 selects EC mode with NVRAM backing
1124	(so that volume/mute changes are remembered across shutdown/reboot).
1125	
1126	The driver will operate in volume_mode=3 by default. If that does not
1127	work well on your ThinkPad model, please report this to
1128	ibm-acpi-devel@lists.sourceforge.net.
1129	
1130	The driver supports the standard ALSA module parameters.  If the ALSA
1131	mixer is disabled, the driver will disable all volume functionality.
1132	
1133	
1134	Fan control and monitoring: fan speed, fan enable/disable
1135	---------------------------------------------------------
1136	
1137	procfs: /proc/acpi/ibm/fan
1138	sysfs device attributes: (hwmon "thinkpad") fan1_input, pwm1,
1139				  pwm1_enable, fan2_input
1140	sysfs hwmon driver attributes: fan_watchdog
1141	
1142	NOTE NOTE NOTE: fan control operations are disabled by default for
1143	safety reasons.  To enable them, the module parameter "fan_control=1"
1144	must be given to thinkpad-acpi.
1145	
1146	This feature attempts to show the current fan speed, control mode and
1147	other fan data that might be available.  The speed is read directly
1148	from the hardware registers of the embedded controller.  This is known
1149	to work on later R, T, X and Z series ThinkPads but may show a bogus
1150	value on other models.
1151	
1152	Some Lenovo ThinkPads support a secondary fan.  This fan cannot be
1153	controlled separately, it shares the main fan control.
1154	
1155	Fan levels:
1156	
1157	Most ThinkPad fans work in "levels" at the firmware interface.  Level 0
1158	stops the fan.  The higher the level, the higher the fan speed, although
1159	adjacent levels often map to the same fan speed.  7 is the highest
1160	level, where the fan reaches the maximum recommended speed.
1161	
1162	Level "auto" means the EC changes the fan level according to some
1163	internal algorithm, usually based on readings from the thermal sensors.
1164	
1165	There is also a "full-speed" level, also known as "disengaged" level.
1166	In this level, the EC disables the speed-locked closed-loop fan control,
1167	and drives the fan as fast as it can go, which might exceed hardware
1168	limits, so use this level with caution.
1169	
1170	The fan usually ramps up or down slowly from one speed to another, and
1171	it is normal for the EC to take several seconds to react to fan
1172	commands.  The full-speed level may take up to two minutes to ramp up to
1173	maximum speed, and in some ThinkPads, the tachometer readings go stale
1174	while the EC is transitioning to the full-speed level.
1175	
1176	WARNING WARNING WARNING: do not leave the fan disabled unless you are
1177	monitoring all of the temperature sensor readings and you are ready to
1178	enable it if necessary to avoid overheating.
1179	
1180	An enabled fan in level "auto" may stop spinning if the EC decides the
1181	ThinkPad is cool enough and doesn't need the extra airflow.  This is
1182	normal, and the EC will spin the fan up if the various thermal readings
1183	rise too much.
1184	
1185	On the X40, this seems to depend on the CPU and HDD temperatures.
1186	Specifically, the fan is turned on when either the CPU temperature
1187	climbs to 56 degrees or the HDD temperature climbs to 46 degrees.  The
1188	fan is turned off when the CPU temperature drops to 49 degrees and the
1189	HDD temperature drops to 41 degrees.  These thresholds cannot
1190	currently be controlled.
1191	
1192	The ThinkPad's ACPI DSDT code will reprogram the fan on its own when
1193	certain conditions are met.  It will override any fan programming done
1194	through thinkpad-acpi.
1195	
1196	The thinkpad-acpi kernel driver can be programmed to revert the fan
1197	level to a safe setting if userspace does not issue one of the procfs
1198	fan commands: "enable", "disable", "level" or "watchdog", or if there
1199	are no writes to pwm1_enable (or to pwm1 *if and only if* pwm1_enable is
1200	set to 1, manual mode) within a configurable amount of time of up to
1201	120 seconds.  This functionality is called fan safety watchdog.
1202	
1203	Note that the watchdog timer stops after it enables the fan.  It will be
1204	rearmed again automatically (using the same interval) when one of the
1205	above mentioned fan commands is received.  The fan watchdog is,
1206	therefore, not suitable to protect against fan mode changes made through
1207	means other than the "enable", "disable", and "level" procfs fan
1208	commands, or the hwmon fan control sysfs interface.
1209	
1210	Procfs notes:
1211	
1212	The fan may be enabled or disabled with the following commands:
1213	
1214		echo enable  >/proc/acpi/ibm/fan
1215		echo disable >/proc/acpi/ibm/fan
1216	
1217	Placing a fan on level 0 is the same as disabling it.  Enabling a fan
1218	will try to place it in a safe level if it is too slow or disabled.
1219	
1220	The fan level can be controlled with the command:
1221	
1222		echo 'level <level>' > /proc/acpi/ibm/fan
1223	
1224	Where <level> is an integer from 0 to 7, or one of the words "auto" or
1225	"full-speed" (without the quotes).  Not all ThinkPads support the "auto"
1226	and "full-speed" levels.  The driver accepts "disengaged" as an alias for
1227	"full-speed", and reports it as "disengaged" for backwards
1228	compatibility.
1229	
1230	On the X31 and X40 (and ONLY on those models), the fan speed can be
1231	controlled to a certain degree.  Once the fan is running, it can be
1232	forced to run faster or slower with the following command:
1233	
1234		echo 'speed <speed>' > /proc/acpi/ibm/fan
1235	
1236	The sustainable range of fan speeds on the X40 appears to be from about
1237	3700 to about 7350. Values outside this range either do not have any
1238	effect or the fan speed eventually settles somewhere in that range.  The
1239	fan cannot be stopped or started with this command.  This functionality
1240	is incomplete, and not available through the sysfs interface.
1241	
1242	To program the safety watchdog, use the "watchdog" command.
1243	
1244		echo 'watchdog <interval in seconds>' > /proc/acpi/ibm/fan
1245	
1246	If you want to disable the watchdog, use 0 as the interval.
1247	
1248	Sysfs notes:
1249	
1250	The sysfs interface follows the hwmon subsystem guidelines for the most
1251	part, and the exception is the fan safety watchdog.
1252	
1253	Writes to any of the sysfs attributes may return the EINVAL error if
1254	that operation is not supported in a given ThinkPad or if the parameter
1255	is out-of-bounds, and EPERM if it is forbidden.  They may also return
1256	EINTR (interrupted system call), and EIO (I/O error while trying to talk
1257	to the firmware).
1258	
1259	Features not yet implemented by the driver return ENOSYS.
1260	
1261	hwmon device attribute pwm1_enable:
1262		0: PWM offline (fan is set to full-speed mode)
1263		1: Manual PWM control (use pwm1 to set fan level)
1264		2: Hardware PWM control (EC "auto" mode)
1265		3: reserved (Software PWM control, not implemented yet)
1266	
1267		Modes 0 and 2 are not supported by all ThinkPads, and the
1268		driver is not always able to detect this.  If it does know a
1269		mode is unsupported, it will return -EINVAL.
1270	
1271	hwmon device attribute pwm1:
1272		Fan level, scaled from the firmware values of 0-7 to the hwmon
1273		scale of 0-255.  0 means fan stopped, 255 means highest normal
1274		speed (level 7).
1275	
1276		This attribute only commands the fan if pmw1_enable is set to 1
1277		(manual PWM control).
1278	
1279	hwmon device attribute fan1_input:
1280		Fan tachometer reading, in RPM.  May go stale on certain
1281		ThinkPads while the EC transitions the PWM to offline mode,
1282		which can take up to two minutes.  May return rubbish on older
1283		ThinkPads.
1284	
1285	hwmon device attribute fan2_input:
1286		Fan tachometer reading, in RPM, for the secondary fan.
1287		Available only on some ThinkPads.  If the secondary fan is
1288		not installed, will always read 0.
1289	
1290	hwmon driver attribute fan_watchdog:
1291		Fan safety watchdog timer interval, in seconds.  Minimum is
1292		1 second, maximum is 120 seconds.  0 disables the watchdog.
1293	
1294	To stop the fan: set pwm1 to zero, and pwm1_enable to 1.
1295	
1296	To start the fan in a safe mode: set pwm1_enable to 2.  If that fails
1297	with EINVAL, try to set pwm1_enable to 1 and pwm1 to at least 128 (255
1298	would be the safest choice, though).
1299	
1300	
1301	WAN
1302	---
1303	
1304	procfs: /proc/acpi/ibm/wan
1305	sysfs device attribute: wwan_enable (deprecated)
1306	sysfs rfkill class: switch "tpacpi_wwan_sw"
1307	
1308	This feature shows the presence and current state of the built-in
1309	Wireless WAN device.
1310	
1311	If the ThinkPad supports it, the WWAN state is stored in NVRAM,
1312	so it is kept across reboots and power-off.
1313	
1314	It was tested on a Lenovo ThinkPad X60. It should probably work on other
1315	ThinkPad models which come with this module installed.
1316	
1317	Procfs notes:
1318	
1319	If the W-WAN card is installed, the following commands can be used:
1320	
1321		echo enable > /proc/acpi/ibm/wan
1322		echo disable > /proc/acpi/ibm/wan
1323	
1324	Sysfs notes:
1325	
1326		If the W-WAN card is installed, it can be enabled /
1327		disabled through the "wwan_enable" thinkpad-acpi device
1328		attribute, and its current status can also be queried.
1329	
1330		enable:
1331			0: disables WWAN card / WWAN card is disabled
1332			1: enables WWAN card / WWAN card is enabled.
1333	
1334		Note: this interface has been superseded by the	generic rfkill
1335		class.  It has been deprecated, and it will be removed in year
1336		2010.
1337	
1338		rfkill controller switch "tpacpi_wwan_sw": refer to
1339		Documentation/rfkill.txt for details.
1340	
1341	
1342	EXPERIMENTAL: UWB
1343	-----------------
1344	
1345	This feature is considered EXPERIMENTAL because it has not been extensively
1346	tested and validated in various ThinkPad models yet.  The feature may not
1347	work as expected. USE WITH CAUTION! To use this feature, you need to supply
1348	the experimental=1 parameter when loading the module.
1349	
1350	sysfs rfkill class: switch "tpacpi_uwb_sw"
1351	
1352	This feature exports an rfkill controller for the UWB device, if one is
1353	present and enabled in the BIOS.
1354	
1355	Sysfs notes:
1356	
1357		rfkill controller switch "tpacpi_uwb_sw": refer to
1358		Documentation/rfkill.txt for details.
1359	
1360	Adaptive keyboard
1361	-----------------
1362	
1363	sysfs device attribute: adaptive_kbd_mode
1364	
1365	This sysfs attribute controls the keyboard "face" that will be shown on the
1366	Lenovo X1 Carbon 2nd gen (2014)'s adaptive keyboard. The value can be read
1367	and set.
1368	
1369	1 = Home mode
1370	2 = Web-browser mode
1371	3 = Web-conference mode
1372	4 = Function mode
1373	5 = Layflat mode
1374	
1375	For more details about which buttons will appear depending on the mode, please
1376	review the laptop's user guide:
1377	http://www.lenovo.com/shop/americas/content/user_guides/x1carbon_2_ug_en.pdf
1378	
1379	Multiple Commands, Module Parameters
1380	------------------------------------
1381	
1382	Multiple commands can be written to the proc files in one shot by
1383	separating them with commas, for example:
1384	
1385		echo enable,0xffff > /proc/acpi/ibm/hotkey
1386		echo lcd_disable,crt_enable > /proc/acpi/ibm/video
1387	
1388	Commands can also be specified when loading the thinkpad-acpi module,
1389	for example:
1390	
1391		modprobe thinkpad_acpi hotkey=enable,0xffff video=auto_disable
1392	
1393	
1394	Enabling debugging output
1395	-------------------------
1396	
1397	The module takes a debug parameter which can be used to selectively
1398	enable various classes of debugging output, for example:
1399	
1400		 modprobe thinkpad_acpi debug=0xffff
1401	
1402	will enable all debugging output classes.  It takes a bitmask, so
1403	to enable more than one output class, just add their values.
1404	
1405		Debug bitmask		Description
1406		0x8000			Disclose PID of userspace programs
1407					accessing some functions of the driver
1408		0x0001			Initialization and probing
1409		0x0002			Removal
1410		0x0004			RF Transmitter control (RFKILL)
1411					(bluetooth, WWAN, UWB...)
1412		0x0008			HKEY event interface, hotkeys
1413		0x0010			Fan control
1414		0x0020			Backlight brightness
1415		0x0040			Audio mixer/volume control
1416	
1417	There is also a kernel build option to enable more debugging
1418	information, which may be necessary to debug driver problems.
1419	
1420	The level of debugging information output by the driver can be changed
1421	at runtime through sysfs, using the driver attribute debug_level.  The
1422	attribute takes the same bitmask as the debug module parameter above.
1423	
1424	
1425	Force loading of module
1426	-----------------------
1427	
1428	If thinkpad-acpi refuses to detect your ThinkPad, you can try to specify
1429	the module parameter force_load=1.  Regardless of whether this works or
1430	not, please contact ibm-acpi-devel@lists.sourceforge.net with a report.
1431	
1432	
1433	Sysfs interface changelog:
1434	
1435	0x000100:	Initial sysfs support, as a single platform driver and
1436			device.
1437	0x000200:	Hot key support for 32 hot keys, and radio slider switch
1438			support.
1439	0x010000:	Hot keys are now handled by default over the input
1440			layer, the radio switch generates input event EV_RADIO,
1441			and the driver enables hot key handling by default in
1442			the firmware.
1443	
1444	0x020000:	ABI fix: added a separate hwmon platform device and
1445			driver, which must be located by name (thinkpad)
1446			and the hwmon class for libsensors4 (lm-sensors 3)
1447			compatibility.  Moved all hwmon attributes to this
1448			new platform device.
1449	
1450	0x020100:	Marker for thinkpad-acpi with hot key NVRAM polling
1451			support.  If you must, use it to know you should not
1452			start a userspace NVRAM poller (allows to detect when
1453			NVRAM is compiled out by the user because it is
1454			unneeded/undesired in the first place).
1455	0x020101:	Marker for thinkpad-acpi with hot key NVRAM polling
1456			and proper hotkey_mask semantics (version 8 of the
1457			NVRAM polling patch).  Some development snapshots of
1458			0.18 had an earlier version that did strange things
1459			to hotkey_mask.
1460	
1461	0x020200:	Add poll()/select() support to the following attributes:
1462			hotkey_radio_sw, wakeup_hotunplug_complete, wakeup_reason
1463	
1464	0x020300:	hotkey enable/disable support removed, attributes
1465			hotkey_bios_enabled and hotkey_enable deprecated and
1466			marked for removal.
1467	
1468	0x020400:	Marker for 16 LEDs support.  Also, LEDs that are known
1469			to not exist in a given model are not registered with
1470			the LED sysfs class anymore.
1471	
1472	0x020500:	Updated hotkey driver, hotkey_mask is always available
1473			and it is always able to disable hot keys.  Very old
1474			thinkpads are properly supported.  hotkey_bios_mask
1475			is deprecated and marked for removal.
1476	
1477	0x020600:	Marker for backlight change event support.
1478	
1479	0x020700:	Support for mute-only mixers.
1480			Volume control in read-only mode by default.
1481			Marker for ALSA mixer support.
1482	
1483	0x030000:	Thermal and fan sysfs attributes were moved to the hwmon
1484			device instead of being attached to the backing platform
1485			device.
Hide Line Numbers


About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog