sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget5/translations/zh_CN/admin-guide/laptops/thinkpad-acpimodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget5/translations/zh_TW/admin-guide/laptops/thinkpad-acpimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget5/translations/it_IT/admin-guide/laptops/thinkpad-acpimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget5/translations/ja_JP/admin-guide/laptops/thinkpad-acpimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget5/translations/ko_KR/admin-guide/laptops/thinkpad-acpimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget5/translations/sp_SP/admin-guide/laptops/thinkpad-acpimodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hThinkPad ACPI Extras Driverh]hThinkPad ACPI Extras Driver}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhO/var/lib/git/docbuild/linux/Documentation/admin-guide/laptops/thinkpad-acpi.rsthKubh paragraph)}(h Version 0.25h]h Version 0.25}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hOctober 16th, 2013h]hOctober 16th, 2013}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh bullet_list)}(hhh](h list_item)}(h(Borislav Deianov h]h)}(hhh](hBorislav Deianov <}(hhhhhNhNubh reference)}(hborislav@users.sf.neth]hborislav@users.sf.net}(hhhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:borislav@users.sf.netuh1hhhubh>}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h-Henrique de Moraes Holschuh h]h)}(h,Henrique de Moraes Holschuh h](hHenrique de Moraes Holschuh <}(hj hhhNhNubh)}(hhmh@hmh.eng.brh]hhmh@hmh.eng.br}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:hmh@hmh.eng.bruh1hhj ubh>}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hj ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhK hhhhubh)}(hhttp://ibm-acpi.sf.net/h]h)}(hj?h]hhttp://ibm-acpi.sf.net/}(hjAhhhNhNubah}(h]h ]h"]h$]h&]refurij?uh1hhj=ubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hThis is a Linux driver for the IBM and Lenovo ThinkPad laptops. It supports various features of these laptops which are accessible through the ACPI and ACPI EC framework, but not otherwise fully supported by the generic Linux ACPI drivers.h]hThis is a Linux driver for the IBM and Lenovo ThinkPad laptops. It supports various features of these laptops which are accessible through the ACPI and ACPI EC framework, but not otherwise fully supported by the generic Linux ACPI drivers.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hX3This driver used to be named ibm-acpi until kernel 2.6.21 and release 0.13-20070314. It used to be in the drivers/acpi tree, but it was moved to the drivers/misc tree and renamed to thinkpad-acpi for kernel 2.6.22, and release 0.14. It was moved to drivers/platform/x86 for kernel 2.6.29 and release 0.22.h]hX3This driver used to be named ibm-acpi until kernel 2.6.21 and release 0.13-20070314. It used to be in the drivers/acpi tree, but it was moved to the drivers/misc tree and renamed to thinkpad-acpi for kernel 2.6.22, and release 0.14. It was moved to drivers/platform/x86 for kernel 2.6.29 and release 0.22.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hThe driver is named "thinkpad-acpi". In some places, like module names and log messages, "thinkpad_acpi" is used because of userspace issues.h]hThe driver is named “thinkpad-acpi”. In some places, like module names and log messages, “thinkpad_acpi” is used because of userspace issues.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h"tpacpi" is used as a shorthand where "thinkpad-acpi" would be too long due to length limitations on some Linux kernel versions.h]h“tpacpi” is used as a shorthand where “thinkpad-acpi” would be too long due to length limitations on some Linux kernel versions.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(hStatush]hStatus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK!ubh)}(hXThe features currently supported are the following (see below for detailed description):h]hXThe features currently supported are the following (see below for detailed description):}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK#hjhhubh block_quote)}(hX- Fn key combinations - Bluetooth enable and disable - video output switching, expansion control - ThinkLight on and off - CMOS/UCMS control - LED control - ACPI sounds - temperature sensors - Experimental: embedded controller register dump - LCD brightness control - Volume control - Fan control and monitoring: fan speed, fan enable/disable - WAN enable and disable - UWB enable and disable - LCD Shadow (PrivacyGuard) enable and disable - Lap mode sensor - Setting keyboard language - WWAN Antenna type - Auxmac h]h)}(hhh](h)}(hFn key combinationsh]h)}(hjh]hFn key combinations}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hBluetooth enable and disableh]h)}(hjh]hBluetooth enable and disable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h)video output switching, expansion controlh]h)}(hjh]h)video output switching, expansion control}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hThinkLight on and offh]h)}(hjh]hThinkLight on and off}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hCMOS/UCMS controlh]h)}(hjh]hCMOS/UCMS control}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h LED controlh]h)}(hj*h]h LED control}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hj(ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h ACPI soundsh]h)}(hjAh]h ACPI sounds}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK,hj?ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(htemperature sensorsh]h)}(hjXh]htemperature sensors}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjVubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h/Experimental: embedded controller register dumph]h)}(hjoh]h/Experimental: embedded controller register dump}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjmubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hLCD brightness controlh]h)}(hjh]hLCD brightness control}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hVolume controlh]h)}(hjh]hVolume control}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h9Fan control and monitoring: fan speed, fan enable/disableh]h)}(hjh]h9Fan control and monitoring: fan speed, fan enable/disable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hWAN enable and disableh]h)}(hjh]hWAN enable and disable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hUWB enable and disableh]h)}(hjh]hUWB enable and disable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h,LCD Shadow (PrivacyGuard) enable and disableh]h)}(hjh]h,LCD Shadow (PrivacyGuard) enable and disable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hLap mode sensorh]h)}(hjh]hLap mode sensor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hSetting keyboard languageh]h)}(hj'h]hSetting keyboard language}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hj%ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hWWAN Antenna typeh]h)}(hj>h]hWWAN Antenna type}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hj<ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hAuxmac h]h)}(hAuxmach]hAuxmac}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK8hjSubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhK&hjubah}(h]h ]h"]h$]h&]uh1jhhhK&hjhhubh)}(hXA compatibility table by model and feature is maintained on the web site, http://ibm-acpi.sf.net/. I appreciate any success or failure reports, especially if they add to or correct the compatibility table. Please include the following information in your report:h](hJA compatibility table by model and feature is maintained on the web site, }(hjwhhhNhNubh)}(hhttp://ibm-acpi.sf.net/h]hhttp://ibm-acpi.sf.net/}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhjwubh. I appreciate any success or failure reports, especially if they add to or correct the compatibility table. Please include the following information in your report:}(hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK:hjhhubj)}(h- ThinkPad model name - a copy of your ACPI tables, using the "acpidump" utility - a copy of the output of dmidecode, with serial numbers and UUIDs masked off - which driver features work and which don't - the observed behavior of non-working features h]h)}(hhh](h)}(hThinkPad model nameh]h)}(hjh]hThinkPad model name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h8a copy of your ACPI tables, using the "acpidump" utilityh]h)}(hjh]h "X86 Platform Specific Device Drivers" -> "ThinkPad ACPI Laptop Extras".h]hXIf you are compiling this driver as included in the Linux kernel sources, look for the CONFIG_THINKPAD_ACPI Kconfig option. It is located on the menu path: “Device Drivers” -> “X86 Platform Specific Device Drivers” -> “ThinkPad ACPI Laptop Extras”.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKLhj6hhubeh}(h] installationah ]h"] installationah$]h&]uh1hhhhhhhhKJubh)}(hhh](h)}(hFeaturesh]hFeatures}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hhhhhKSubh)}(hXThe driver exports two different interfaces to userspace, which can be used to access the features it provides. One is a legacy procfs-based interface, which will be removed at some time in the future. The other is a new sysfs-based interface which is not complete yet.h]hXThe driver exports two different interfaces to userspace, which can be used to access the features it provides. One is a legacy procfs-based interface, which will be removed at some time in the future. The other is a new sysfs-based interface which is not complete yet.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhj]hhubh)}(hX[The procfs interface creates the /proc/acpi/ibm directory. There is a file under that directory for each feature it supports. The procfs interface is mostly frozen, and will change very little if at all: it will not be extended to add any new functionality in the driver, instead all new functionality will be implemented on the sysfs interface.h]hX[The procfs interface creates the /proc/acpi/ibm directory. There is a file under that directory for each feature it supports. The procfs interface is mostly frozen, and will change very little if at all: it will not be extended to add any new functionality in the driver, instead all new functionality will be implemented on the sysfs interface.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKZhj]hhubh)}(hXThe sysfs interface tries to blend in the generic Linux sysfs subsystems and classes as much as possible. Since some of these subsystems are not yet ready or stabilized, it is expected that this interface will change, and any and all userspace programs must deal with it.h]hXThe sysfs interface tries to blend in the generic Linux sysfs subsystems and classes as much as possible. Since some of these subsystems are not yet ready or stabilized, it is expected that this interface will change, and any and all userspace programs must deal with it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK`hj]hhubh)}(hhh](h)}(hNotes about the sysfs interfaceh]hNotes about the sysfs interface}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKgubh)}(hUnlike what was done with the procfs interface, correctness when talking to the sysfs interfaces will be enforced, as will correctness in the thinkpad-acpi's implementation of sysfs interfaces.h]hUnlike what was done with the procfs interface, correctness when talking to the sysfs interfaces will be enforced, as will correctness in the thinkpad-acpi’s implementation of sysfs interfaces.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihjhhubh)}(hXJAlso, any bugs in the thinkpad-acpi sysfs driver code or in the thinkpad-acpi's implementation of the sysfs interfaces will be fixed for maximum correctness, even if that means changing an interface in non-compatible ways. As these interfaces mature both in the kernel and in thinkpad-acpi, such changes should become quite rare.h]hXLAlso, any bugs in the thinkpad-acpi sysfs driver code or in the thinkpad-acpi’s implementation of the sysfs interfaces will be fixed for maximum correctness, even if that means changing an interface in non-compatible ways. As these interfaces mature both in the kernel and in thinkpad-acpi, such changes should become quite rare.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhjhhubh)}(hXApplications interfacing to the thinkpad-acpi sysfs interfaces must follow all sysfs guidelines and correctly process all errors (the sysfs interface makes extensive use of errors). File descriptors and open / close operations to the sysfs inodes must also be properly implemented.h]hXApplications interfacing to the thinkpad-acpi sysfs interfaces must follow all sysfs guidelines and correctly process all errors (the sysfs interface makes extensive use of errors). File descriptors and open / close operations to the sysfs inodes must also be properly implemented.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjhhubh)}(hkThe version of thinkpad-acpi's sysfs interface is exported by the driver as a driver attribute (see below).h]hmThe version of thinkpad-acpi’s sysfs interface is exported by the driver as a driver attribute (see below).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKxhjhhubh)}(hSysfs driver attributes are on the driver's sysfs attribute space, for 2.6.23+ this is /sys/bus/platform/drivers/thinkpad_acpi/ and /sys/bus/platform/drivers/thinkpad_hwmon/h]hSysfs driver attributes are on the driver’s sysfs attribute space, for 2.6.23+ this is /sys/bus/platform/drivers/thinkpad_acpi/ and /sys/bus/platform/drivers/thinkpad_hwmon/}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK{hjhhubh)}(hSysfs device attributes are on the thinkpad_acpi device sysfs attribute space, for 2.6.23+ this is /sys/devices/platform/thinkpad_acpi/.h]hSysfs device attributes are on the thinkpad_acpi device sysfs attribute space, for 2.6.23+ this is /sys/devices/platform/thinkpad_acpi/.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXuSysfs device attributes for the sensors and fan are on the thinkpad_hwmon device's sysfs attribute space, but you should locate it looking for a hwmon device with the name attribute of "thinkpad", or better yet, through libsensors. For 4.14+ sysfs attributes were moved to the hwmon device (/sys/bus/platform/devices/thinkpad_hwmon/hwmon/hwmon? or /sys/class/hwmon/hwmon?).h]hX{Sysfs device attributes for the sensors and fan are on the thinkpad_hwmon device’s sysfs attribute space, but you should locate it looking for a hwmon device with the name attribute of “thinkpad”, or better yet, through libsensors. For 4.14+ sysfs attributes were moved to the hwmon device (/sys/bus/platform/devices/thinkpad_hwmon/hwmon/hwmon? or /sys/class/hwmon/hwmon?).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]notes-about-the-sysfs-interfaceah ]h"]notes about the sysfs interfaceah$]h&]uh1hhj]hhhhhKgubeh}(h]featuresah ]h"]featuresah$]h&]uh1hhhhhhhhKSubh)}(hhh](h)}(hDriver versionh]hDriver version}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hprocfs: /proc/acpi/ibm/driverh]hprocfs: /proc/acpi/ibm/driver}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hsysfs driver attribute: versionh]hsysfs driver attribute: version}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hEThe driver name and version. No commands can be written to this file.h]hEThe driver name and version. No commands can be written to this file.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]driver-versionah ]h"]driver versionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hSysfs interface versionh]hSysfs interface version}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hhhhhKubh)}(h)sysfs driver attribute: interface_versionh]h)sysfs driver attribute: interface_version}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj^hhubh)}(hlVersion of the thinkpad-acpi sysfs interface, as an unsigned long (output in hex format: 0xAAAABBCC), where:h]hlVersion of the thinkpad-acpi sysfs interface, as an unsigned long (output in hex format: 0xAAAABBCC), where:}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj^hhubj)}(hEAAAA - major revision BB - minor revision CC - bugfix revision h]hdefinition_list)}(hhh](hdefinition_list_item)}(hAAAA - major revisionh](hterm)}(hAAAAh]hAAAA}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubh definition)}(hhh]h)}(hhh]h)}(hmajor revisionh]h)}(hjh]hmajor revision}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]j;j<uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hBB - minor revisionh](j)}(hBBh]hBB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hhh]h)}(hhh]h)}(hminor revisionh]h)}(hjh]hminor revision}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]j;j<uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hCC - bugfix revision h](j)}(hCCh]hCC}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hhh]h)}(hhh]h)}(hbugfix revision h]h)}(hbugfix revisionh]hbugfix revision}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj4ubah}(h]h ]h"]h$]h&]uh1hhj1ubah}(h]h ]h"]h$]h&]j;j<uh1hhhhKhj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhhhKhj^hhubh)}(hThe sysfs interface version changelog for the driver can be found at the end of this document. Changes to the sysfs interface done by the kernel subsystems are not documented here, nor are they tracked by this attribute.h]hThe sysfs interface version changelog for the driver can be found at the end of this document. Changes to the sysfs interface done by the kernel subsystems are not documented here, nor are they tracked by this attribute.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj^hhubh)}(hXChanges to the thinkpad-acpi sysfs interface are only considered non-experimental when they are submitted to Linux mainline, at which point the changes in this interface are documented and interface_version may be updated. If you are using any thinkpad-acpi features not yet sent to mainline for merging, you do so on your own risk: these features may disappear, or be implemented in a different and incompatible way by the time they are merged in Linux mainline.h]hXChanges to the thinkpad-acpi sysfs interface are only considered non-experimental when they are submitted to Linux mainline, at which point the changes in this interface are documented and interface_version may be updated. If you are using any thinkpad-acpi features not yet sent to mainline for merging, you do so on your own risk: these features may disappear, or be implemented in a different and incompatible way by the time they are merged in Linux mainline.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj^hhubh)}(hXChanges that are backwards-compatible by nature (e.g. the addition of attributes that do not change the way the other attributes work) do not always warrant an update of interface_version. Therefore, one must expect that an attribute might not be there, and deal with it properly (an attribute not being there *is* a valid way to make it clear that a feature is not available in sysfs).h](hX7Changes that are backwards-compatible by nature (e.g. the addition of attributes that do not change the way the other attributes work) do not always warrant an update of interface_version. Therefore, one must expect that an attribute might not be there, and deal with it properly (an attribute not being there }(hjhhhNhNubhemphasis)}(h*is*h]his}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhH a valid way to make it clear that a feature is not available in sysfs).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj^hhubeh}(h]sysfs-interface-versionah ]h"]sysfs interface versionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hHot keysh]hHot keys}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hprocfs: /proc/acpi/ibm/hotkeyh]hprocfs: /proc/acpi/ibm/hotkey}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h sysfs device attribute: hotkey_*h]h sysfs device attribute: hotkey_*}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXEIn a ThinkPad, the ACPI HKEY handler is responsible for communicating some important events and also keyboard hot key presses to the operating system. Enabling the hotkey functionality of thinkpad-acpi signals the firmware that such a driver is present, and modifies how the ThinkPad firmware will behave in many situations.h]hXEIn a ThinkPad, the ACPI HKEY handler is responsible for communicating some important events and also keyboard hot key presses to the operating system. Enabling the hotkey functionality of thinkpad-acpi signals the firmware that such a driver is present, and modifies how the ThinkPad firmware will behave in many situations.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hvThe driver enables the HKEY ("hot key") event reporting automatically when loaded, and disables it when it is removed.h]hzThe driver enables the HKEY (“hot key”) event reporting automatically when loaded, and disables it when it is removed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hThe hot key bit mask allows some control over which hot keys generate events. If a key is "masked" (bit set to 0 in the mask), the firmware will handle it. If it is "unmasked", it signals the firmware that thinkpad-acpi would prefer to handle it, if the firmware would be so kind to allow it (and it often doesn't!).h]hXHThe hot key bit mask allows some control over which hot keys generate events. If a key is “masked” (bit set to 0 in the mask), the firmware will handle it. If it is “unmasked”, it signals the firmware that thinkpad-acpi would prefer to handle it, if the firmware would be so kind to allow it (and it often doesn’t!).}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXNot all bits in the mask can be modified. Not all bits that can be modified do anything. Not all hot keys can be individually controlled by the mask. Some models do not support the mask at all. The behaviour of the mask is, therefore, highly dependent on the ThinkPad model.h]hXNot all bits in the mask can be modified. Not all bits that can be modified do anything. Not all hot keys can be individually controlled by the mask. Some models do not support the mask at all. The behaviour of the mask is, therefore, highly dependent on the ThinkPad model.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hThe driver will filter out any unmasked hotkeys, so even if the firmware doesn't allow disabling an specific hotkey, the driver will not report events for unmasked hotkeys.h]hThe driver will filter out any unmasked hotkeys, so even if the firmware doesn’t allow disabling an specific hotkey, the driver will not report events for unmasked hotkeys.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hNote that unmasking some keys prevents their default behavior. For example, if Fn+F5 is unmasked, that key will no longer enable/disable Bluetooth by itself in firmware.h]hNote that unmasking some keys prevents their default behavior. For example, if Fn+F5 is unmasked, that key will no longer enable/disable Bluetooth by itself in firmware.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXMNote also that not all Fn key combinations are supported through ACPI depending on the ThinkPad model and firmware version. On those ThinkPads, it is still possible to support some extra hotkeys by polling the "CMOS NVRAM" at least 10 times per second. The driver attempts to enables this functionality automatically when required.h]hXQNote also that not all Fn key combinations are supported through ACPI depending on the ThinkPad model and firmware version. On those ThinkPads, it is still possible to support some extra hotkeys by polling the “CMOS NVRAM” at least 10 times per second. The driver attempts to enables this functionality automatically when required.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hhh](h)}(h procfs notesh]h procfs notes}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hhhhhKubh)}(hIThe following commands can be written to the /proc/acpi/ibm/hotkey file::h]hHThe following commands can be written to the /proc/acpi/ibm/hotkey file:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj{hhubj)}(hecho 0xffffffff > /proc/acpi/ibm/hotkey -- enable all hot keys echo 0 > /proc/acpi/ibm/hotkey -- disable all possible hot keys ... any other 8-hex-digit mask ... echo reset > /proc/acpi/ibm/hotkey -- restore the recommended maskh]hecho 0xffffffff > /proc/acpi/ibm/hotkey -- enable all hot keys echo 0 > /proc/acpi/ibm/hotkey -- disable all possible hot keys ... any other 8-hex-digit mask ... echo reset > /proc/acpi/ibm/hotkey -- restore the recommended mask}hjsbah}(h]h ]h"]h$]h&]jjuh1jhhhKhj{hhubh)}(hXThe following commands have been deprecated and will cause the kernel to log a warning::h]hWThe following commands have been deprecated and will cause the kernel to log a warning:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj{hhubj)}(hlecho enable > /proc/acpi/ibm/hotkey -- does nothing echo disable > /proc/acpi/ibm/hotkey -- returns an errorh]hlecho enable > /proc/acpi/ibm/hotkey -- does nothing echo disable > /proc/acpi/ibm/hotkey -- returns an error}hjsbah}(h]h ]h"]h$]h&]jjuh1jhhhKhj{hhubh)}(hXThe procfs interface does not support NVRAM polling control. So as to maintain maximum bug-to-bug compatibility, it does not report any masks, nor does it allow one to manipulate the hot key mask when the firmware does not support masks at all, even if NVRAM polling is in use.h]hXThe procfs interface does not support NVRAM polling control. So as to maintain maximum bug-to-bug compatibility, it does not report any masks, nor does it allow one to manipulate the hot key mask when the firmware does not support masks at all, even if NVRAM polling is in use.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj{hhubeh}(h] procfs-notesah ]h"]h$] procfs notesah&]uh1hhjhhhhhK referencedKubh)}(hhh](h)}(h sysfs notesh]h sysfs notes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubj)}(hXhotkey_bios_enabled: DEPRECATED, WILL BE REMOVED SOON. Returns 0. hotkey_bios_mask: DEPRECATED, DON'T USE, WILL BE REMOVED IN THE FUTURE. Returns the hot keys mask when thinkpad-acpi was loaded. Upon module unload, the hot keys mask will be restored to this value. This is always 0x80c, because those are the hotkeys that were supported by ancient firmware without mask support. hotkey_enable: DEPRECATED, WILL BE REMOVED SOON. 0: returns -EPERM 1: does nothing hotkey_mask: bit mask to enable reporting (and depending on the firmware, ACPI event generation) for each hot key (see above). Returns the current status of the hot keys mask, and allows one to modify it. hotkey_all_mask: bit mask that should enable event reporting for all supported hot keys, when echoed to hotkey_mask above. Unless you know which events need to be handled passively (because the firmware *will* handle them anyway), do *not* use hotkey_all_mask. Use hotkey_recommended_mask, instead. You have been warned. hotkey_recommended_mask: bit mask that should enable event reporting for all supported hot keys, except those which are always handled by the firmware anyway. Echo it to hotkey_mask above, to use. This is the default mask used by the driver. hotkey_source_mask: bit mask that selects which hot keys will the driver poll the NVRAM for. This is auto-detected by the driver based on the capabilities reported by the ACPI firmware, but it can be overridden at runtime. Hot keys whose bits are set in hotkey_source_mask are polled for in NVRAM, and reported as hotkey events if enabled in hotkey_mask. Only a few hot keys are available through CMOS NVRAM polling. Warning: when in NVRAM mode, the volume up/down/mute keys are synthesized according to changes in the mixer, which uses a single volume up or volume down hotkey press to unmute, as per the ThinkPad volume mixer user interface. When in ACPI event mode, volume up/down/mute events are reported by the firmware and can behave differently (and that behaviour changes with firmware version -- not just with firmware models -- as well as OSI(Linux) state). hotkey_poll_freq: frequency in Hz for hot key polling. It must be between 0 and 25 Hz. Polling is only carried out when strictly needed. Setting hotkey_poll_freq to zero disables polling, and will cause hot key presses that require NVRAM polling to never be reported. Setting hotkey_poll_freq too low may cause repeated pressings of the same hot key to be misreported as a single key press, or to not even be detected at all. The recommended polling frequency is 10Hz. hotkey_radio_sw: If the ThinkPad has a hardware radio switch, this attribute will read 0 if the switch is in the "radios disabled" position, and 1 if the switch is in the "radios enabled" position. This attribute has poll()/select() support. hotkey_tablet_mode: If the ThinkPad has tablet capabilities, this attribute will read 0 if the ThinkPad is in normal mode, and 1 if the ThinkPad is in tablet mode. This attribute has poll()/select() support. wakeup_reason: Set to 1 if the system is waking up because the user requested a bay ejection. Set to 2 if the system is waking up because the user requested the system to undock. Set to zero for normal wake-ups or wake-ups due to unknown reasons. This attribute has poll()/select() support. wakeup_hotunplug_complete: Set to 1 if the system was waken up because of an undock or bay ejection request, and that request was successfully completed. At this point, it might be useful to send the system back to sleep, at the user's choice. Refer to HKEY events 0x4003 and 0x3003, below. This attribute has poll()/select() support. h]j)}(hhh](j)}(hChotkey_bios_enabled: DEPRECATED, WILL BE REMOVED SOON. Returns 0. h](j)}(hhotkey_bios_enabled:h]hhotkey_bios_enabled:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(hhh](h)}(h!DEPRECATED, WILL BE REMOVED SOON.h]h!DEPRECATED, WILL BE REMOVED SOON.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubh)}(h Returns 0.h]h Returns 0.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(hX<hotkey_bios_mask: DEPRECATED, DON'T USE, WILL BE REMOVED IN THE FUTURE. Returns the hot keys mask when thinkpad-acpi was loaded. Upon module unload, the hot keys mask will be restored to this value. This is always 0x80c, because those are the hotkeys that were supported by ancient firmware without mask support. h](j)}(hhotkey_bios_mask:h]hhotkey_bios_mask:}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhj0ubj)}(hhh](h)}(h5DEPRECATED, DON'T USE, WILL BE REMOVED IN THE FUTURE.h]h7DEPRECATED, DON’T USE, WILL BE REMOVED IN THE FUTURE.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjBubh)}(hReturns the hot keys mask when thinkpad-acpi was loaded. Upon module unload, the hot keys mask will be restored to this value. This is always 0x80c, because those are the hotkeys that were supported by ancient firmware without mask support.h]hReturns the hot keys mask when thinkpad-acpi was loaded. Upon module unload, the hot keys mask will be restored to this value. This is always 0x80c, because those are the hotkeys that were supported by ancient firmware without mask support.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjBubeh}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(hThotkey_enable: DEPRECATED, WILL BE REMOVED SOON. 0: returns -EPERM 1: does nothing h](j)}(hhotkey_enable:h]hhotkey_enable:}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhjmubj)}(hhh](h)}(h!DEPRECATED, WILL BE REMOVED SOON.h]h!DEPRECATED, WILL BE REMOVED SOON.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubh)}(h!0: returns -EPERM 1: does nothingh]h!0: returns -EPERM 1: does nothing}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubeh}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(hhotkey_mask: bit mask to enable reporting (and depending on the firmware, ACPI event generation) for each hot key (see above). Returns the current status of the hot keys mask, and allows one to modify it. h](j)}(h hotkey_mask:h]h hotkey_mask:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(hhh]h)}(hbit mask to enable reporting (and depending on the firmware, ACPI event generation) for each hot key (see above). Returns the current status of the hot keys mask, and allows one to modify it.h]hbit mask to enable reporting (and depending on the firmware, ACPI event generation) for each hot key (see above). Returns the current status of the hot keys mask, and allows one to modify it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(hXBhotkey_all_mask: bit mask that should enable event reporting for all supported hot keys, when echoed to hotkey_mask above. Unless you know which events need to be handled passively (because the firmware *will* handle them anyway), do *not* use hotkey_all_mask. Use hotkey_recommended_mask, instead. You have been warned. h](j)}(hhotkey_all_mask:h]hhotkey_all_mask:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM#hjubj)}(hhh]h)}(hX0bit mask that should enable event reporting for all supported hot keys, when echoed to hotkey_mask above. Unless you know which events need to be handled passively (because the firmware *will* handle them anyway), do *not* use hotkey_all_mask. Use hotkey_recommended_mask, instead. You have been warned.h](hbit mask that should enable event reporting for all supported hot keys, when echoed to hotkey_mask above. Unless you know which events need to be handled passively (because the firmware }(hjhhhNhNubj)}(h*will*h]hwill}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh handle them anyway), do }(hjhhhNhNubj)}(h*not*h]hnot}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhR use hotkey_all_mask. Use hotkey_recommended_mask, instead. You have been warned.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhM#hjubj)}(hhotkey_recommended_mask: bit mask that should enable event reporting for all supported hot keys, except those which are always handled by the firmware anyway. Echo it to hotkey_mask above, to use. This is the default mask used by the driver. h](j)}(hhotkey_recommended_mask:h]hhotkey_recommended_mask:}(hj0 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM*hj, ubj)}(hhh]h)}(hbit mask that should enable event reporting for all supported hot keys, except those which are always handled by the firmware anyway. Echo it to hotkey_mask above, to use. This is the default mask used by the driver.h]hbit mask that should enable event reporting for all supported hot keys, except those which are always handled by the firmware anyway. Echo it to hotkey_mask above, to use. This is the default mask used by the driver.}(hjA hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hj> ubah}(h]h ]h"]h$]h&]uh1jhj, ubeh}(h]h ]h"]h$]h&]uh1jhhhM*hjubj)}(hXihotkey_source_mask: bit mask that selects which hot keys will the driver poll the NVRAM for. This is auto-detected by the driver based on the capabilities reported by the ACPI firmware, but it can be overridden at runtime. Hot keys whose bits are set in hotkey_source_mask are polled for in NVRAM, and reported as hotkey events if enabled in hotkey_mask. Only a few hot keys are available through CMOS NVRAM polling. Warning: when in NVRAM mode, the volume up/down/mute keys are synthesized according to changes in the mixer, which uses a single volume up or volume down hotkey press to unmute, as per the ThinkPad volume mixer user interface. When in ACPI event mode, volume up/down/mute events are reported by the firmware and can behave differently (and that behaviour changes with firmware version -- not just with firmware models -- as well as OSI(Linux) state). h](j)}(hhotkey_source_mask:h]hhotkey_source_mask:}(hj_ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM?hj[ ubj)}(hhh](h)}(hbit mask that selects which hot keys will the driver poll the NVRAM for. This is auto-detected by the driver based on the capabilities reported by the ACPI firmware, but it can be overridden at runtime.h]hbit mask that selects which hot keys will the driver poll the NVRAM for. This is auto-detected by the driver based on the capabilities reported by the ACPI firmware, but it can be overridden at runtime.}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM-hjm ubh)}(hHot keys whose bits are set in hotkey_source_mask are polled for in NVRAM, and reported as hotkey events if enabled in hotkey_mask. Only a few hot keys are available through CMOS NVRAM polling.h]hHot keys whose bits are set in hotkey_source_mask are polled for in NVRAM, and reported as hotkey events if enabled in hotkey_mask. Only a few hot keys are available through CMOS NVRAM polling.}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM2hjm ubh)}(hXWarning: when in NVRAM mode, the volume up/down/mute keys are synthesized according to changes in the mixer, which uses a single volume up or volume down hotkey press to unmute, as per the ThinkPad volume mixer user interface. When in ACPI event mode, volume up/down/mute events are reported by the firmware and can behave differently (and that behaviour changes with firmware version -- not just with firmware models -- as well as OSI(Linux) state).h]hXWarning: when in NVRAM mode, the volume up/down/mute keys are synthesized according to changes in the mixer, which uses a single volume up or volume down hotkey press to unmute, as per the ThinkPad volume mixer user interface. When in ACPI event mode, volume up/down/mute events are reported by the firmware and can behave differently (and that behaviour changes with firmware version -- not just with firmware models -- as well as OSI(Linux) state).}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM7hjm ubeh}(h]h ]h"]h$]h&]uh1jhj[ ubeh}(h]h ]h"]h$]h&]uh1jhhhM?hjubj)}(hXhotkey_poll_freq: frequency in Hz for hot key polling. It must be between 0 and 25 Hz. Polling is only carried out when strictly needed. Setting hotkey_poll_freq to zero disables polling, and will cause hot key presses that require NVRAM polling to never be reported. Setting hotkey_poll_freq too low may cause repeated pressings of the same hot key to be misreported as a single key press, or to not even be detected at all. The recommended polling frequency is 10Hz. h](j)}(hhotkey_poll_freq:h]hhotkey_poll_freq:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMMhj ubj)}(hhh](h)}(hwfrequency in Hz for hot key polling. It must be between 0 and 25 Hz. Polling is only carried out when strictly needed.h]hwfrequency in Hz for hot key polling. It must be between 0 and 25 Hz. Polling is only carried out when strictly needed.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMBhj ubh)}(hSetting hotkey_poll_freq to zero disables polling, and will cause hot key presses that require NVRAM polling to never be reported.h]hSetting hotkey_poll_freq to zero disables polling, and will cause hot key presses that require NVRAM polling to never be reported.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMFhj ubh)}(hSetting hotkey_poll_freq too low may cause repeated pressings of the same hot key to be misreported as a single key press, or to not even be detected at all. The recommended polling frequency is 10Hz.h]hSetting hotkey_poll_freq too low may cause repeated pressings of the same hot key to be misreported as a single key press, or to not even be detected at all. The recommended polling frequency is 10Hz.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMJhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhMMhjubj)}(hhotkey_radio_sw: If the ThinkPad has a hardware radio switch, this attribute will read 0 if the switch is in the "radios disabled" position, and 1 if the switch is in the "radios enabled" position. This attribute has poll()/select() support. h](j)}(hhotkey_radio_sw:h]hhotkey_radio_sw:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMUhj ubj)}(hhh](h)}(hIf the ThinkPad has a hardware radio switch, this attribute will read 0 if the switch is in the "radios disabled" position, and 1 if the switch is in the "radios enabled" position.h]hIf the ThinkPad has a hardware radio switch, this attribute will read 0 if the switch is in the “radios disabled” position, and 1 if the switch is in the “radios enabled” position.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMPhj ubh)}(h+This attribute has poll()/select() support.h]h+This attribute has poll()/select() support.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMUhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhMUhjubj)}(hhotkey_tablet_mode: If the ThinkPad has tablet capabilities, this attribute will read 0 if the ThinkPad is in normal mode, and 1 if the ThinkPad is in tablet mode. This attribute has poll()/select() support. h](j)}(hhotkey_tablet_mode:h]hhotkey_tablet_mode:}(hj2 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM\hj. ubj)}(hhh](h)}(hIf the ThinkPad has tablet capabilities, this attribute will read 0 if the ThinkPad is in normal mode, and 1 if the ThinkPad is in tablet mode.h]hIf the ThinkPad has tablet capabilities, this attribute will read 0 if the ThinkPad is in normal mode, and 1 if the ThinkPad is in tablet mode.}(hjC hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMXhj@ ubh)}(h+This attribute has poll()/select() support.h]h+This attribute has poll()/select() support.}(hjQ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM\hj@ ubeh}(h]h ]h"]h$]h&]uh1jhj. ubeh}(h]h ]h"]h$]h&]uh1jhhhM\hjubj)}(hX&wakeup_reason: Set to 1 if the system is waking up because the user requested a bay ejection. Set to 2 if the system is waking up because the user requested the system to undock. Set to zero for normal wake-ups or wake-ups due to unknown reasons. This attribute has poll()/select() support. h](j)}(hwakeup_reason:h]hwakeup_reason:}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMehjk ubj)}(hhh](h)}(hSet to 1 if the system is waking up because the user requested a bay ejection. Set to 2 if the system is waking up because the user requested the system to undock. Set to zero for normal wake-ups or wake-ups due to unknown reasons.h]hSet to 1 if the system is waking up because the user requested a bay ejection. Set to 2 if the system is waking up because the user requested the system to undock. Set to zero for normal wake-ups or wake-ups due to unknown reasons.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM_hj} ubh)}(h+This attribute has poll()/select() support.h]h+This attribute has poll()/select() support.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMehj} ubeh}(h]h ]h"]h$]h&]uh1jhjk ubeh}(h]h ]h"]h$]h&]uh1jhhhMehjubj)}(hXRwakeup_hotunplug_complete: Set to 1 if the system was waken up because of an undock or bay ejection request, and that request was successfully completed. At this point, it might be useful to send the system back to sleep, at the user's choice. Refer to HKEY events 0x4003 and 0x3003, below. This attribute has poll()/select() support. h](j)}(hwakeup_hotunplug_complete:h]hwakeup_hotunplug_complete:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMohj ubj)}(hhh](h)}(hX Set to 1 if the system was waken up because of an undock or bay ejection request, and that request was successfully completed. At this point, it might be useful to send the system back to sleep, at the user's choice. Refer to HKEY events 0x4003 and 0x3003, below.h]hX Set to 1 if the system was waken up because of an undock or bay ejection request, and that request was successfully completed. At this point, it might be useful to send the system back to sleep, at the user’s choice. Refer to HKEY events 0x4003 and 0x3003, below.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhhj ubh)}(h+This attribute has poll()/select() support.h]h+This attribute has poll()/select() support.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMohj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhMohjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhhhMhjhhubeh}(h] sysfs-notesah ]h"]h$] sysfs notesah&]uh1hhjhhhhhMjKubh)}(hhh](h)}(hinput layer notesh]hinput layer notes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMrubh)}(hA Hot key is mapped to a single input layer EV_KEY event, possibly followed by an EV_MSC MSC_SCAN event that shall contain that key's scan code. An EV_SYN event will always be generated to mark the end of the event block.h]hA Hot key is mapped to a single input layer EV_KEY event, possibly followed by an EV_MSC MSC_SCAN event that shall contain that key’s scan code. An EV_SYN event will always be generated to mark the end of the event block.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMthj hhubh)}(hDo not use the EV_MSC MSC_SCAN events to process keys. They are to be used as a helper to remap keys, only. They are particularly useful when remapping KEY_UNKNOWN keys.h]hDo not use the EV_MSC MSC_SCAN events to process keys. They are to be used as a helper to remap keys, only. They are particularly useful when remapping KEY_UNKNOWN keys.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMyhj hhubh)}(hCThe events are available in an input device, with the following id:h]hCThe events are available in an input device, with the following id:}(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM}hj hhubj)}(hX ============== ============================== Bus BUS_HOST vendor 0x1014 (PCI_VENDOR_ID_IBM) or 0x17aa (PCI_VENDOR_ID_LENOVO) product 0x5054 ("TP") version 0x4101 ============== ============================== h]htable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jB hj? ubjC )}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jB hj? ubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(hBush]hBus}(hjg hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjd ubah}(h]h ]h"]h$]h&]uh1jb hj_ ubjc )}(hhh]h)}(hBUS_HOSTh]hBUS_HOST}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj{ ubah}(h]h ]h"]h$]h&]uh1jb hj_ ubeh}(h]h ]h"]h$]h&]uh1j] hjZ ubj^ )}(hhh](jc )}(hhh]h)}(hvendorh]hvendor}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(h<0x1014 (PCI_VENDOR_ID_IBM) or 0x17aa (PCI_VENDOR_ID_LENOVO)h]h<0x1014 (PCI_VENDOR_ID_IBM) or 0x17aa (PCI_VENDOR_ID_LENOVO)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubeh}(h]h ]h"]h$]h&]uh1j] hjZ ubj^ )}(hhh](jc )}(hhh]h)}(hproducth]hproduct}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(h 0x5054 ("TP")h]h0x5054 (“TP”)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubeh}(h]h ]h"]h$]h&]uh1j] hjZ ubj^ )}(hhh](jc )}(hhh]h)}(hversionh]hversion}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(h0x4101h]h0x4101}(hj# hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubeh}(h]h ]h"]h$]h&]uh1j] hjZ ubeh}(h]h ]h"]h$]h&]uh1jX hj? ubeh}(h]h ]h"]h$]h&]colsKuh1j= hj: ubah}(h]h ]h"]h$]h&]uh1j8 hj4 ubah}(h]h ]h"]h$]h&]uh1jhhhMhj hhubh)}(hXThe version will have its LSB incremented if the keymap changes in a backwards-compatible way. The MSB shall always be 0x41 for this input device. If the MSB is not 0x41, do not use the device as described in this section, as it is either something else (e.g. another input device exported by a thinkpad driver, such as HDAPS) or its functionality has been changed in a non-backwards compatible way.h]hXThe version will have its LSB incremented if the keymap changes in a backwards-compatible way. The MSB shall always be 0x41 for this input device. If the MSB is not 0x41, do not use the device as described in this section, as it is either something else (e.g. another input device exported by a thinkpad driver, such as HDAPS) or its functionality has been changed in a non-backwards compatible way.}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(h{Adding other event types for other functionalities shall be considered a backwards-compatible change for this input device.h]h{Adding other event types for other functionalities shall be considered a backwards-compatible change for this input device.}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(h1Thinkpad-acpi Hot Key event map (version 0x4101):h]h1Thinkpad-acpi Hot Key event map (version 0x4101):}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj9 )}(hhh]j> )}(hhh](jC )}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jB hj ubjC )}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jB hj ubjC )}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jB hj ubjC )}(hhh]h}(h]h ]h"]h$]h&]colwidthK.uh1jB hj ubhthead)}(hhh](j^ )}(hhh](jc )}(hhh]h)}(hACPIh]hACPI}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(hScanh]hScan}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h}(h]h ]h"]h$]h&]uh1jb hj ubeh}(h]h ]h"]h$]h&]uh1j] hj ubj^ )}(hhh](jc )}(hhh]h)}(heventh]hevent}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(hcodeh]hcode}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(hKeyh]hKey}(hj0 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj- ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(hNotesh]hNotes}(hjG hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjD ubah}(h]h ]h"]h$]h&]uh1jb hj ubeh}(h]h ]h"]h$]h&]uh1j] hj ubeh}(h]h ]h"]h$]h&]uh1j hj ubjY )}(hhh](j^ )}(hhh](jc )}(hhh]h)}(h0x1001h]h0x1001}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjm ubah}(h]h ]h"]h$]h&]uh1jb hjj ubjc )}(hhh]h)}(h0x00h]h0x00}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hjj ubjc )}(hhh]h)}(hFN+F1h]hFN+F1}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hjj ubjc )}(hhh]h)}(hhh]h)}(hhh]h}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]j;j<uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hjj ubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1002h]h0x1002}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(h0x01h]h0x01}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(hFN+F2h]hFN+F2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(h'IBM: battery (rare) Lenovo: Screen lockh]h'IBM: battery (rare) Lenovo: Screen lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hj ubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1003h]h0x1003}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj;ubah}(h]h ]h"]h$]h&]uh1jb hj8ubjc )}(hhh]h)}(h0x02h]h0x02}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjRubah}(h]h ]h"]h$]h&]uh1jb hj8ubjc )}(hhh]h)}(hFN+F3h]hFN+F3}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjiubah}(h]h ]h"]h$]h&]uh1jb hj8ubjc )}(hhh]h)}(hMany IBM models always report this hot key, even with hot keys disabled or with Fn+F3 masked off IBM: screen lock, often turns off the ThinkLight as side-effect Lenovo: batteryh]hMany IBM models always report this hot key, even with hot keys disabled or with Fn+F3 masked off IBM: screen lock, often turns off the ThinkLight as side-effect Lenovo: battery}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hj8ubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1004h]h0x1004}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0x03h]h0x03}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hFN+F4h]hFN+F4}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hX Sleep button (ACPI sleep button semantics, i.e. sleep-to-RAM). It always generates some kind of event, either the hot key event or an ACPI sleep button event. The firmware may refuse to generate further FN+F4 key presses until a S3 or S4 ACPI sleep cycle is performed or some time passes.h]hX Sleep button (ACPI sleep button semantics, i.e. sleep-to-RAM). It always generates some kind of event, either the hot key event or an ACPI sleep button event. The firmware may refuse to generate further FN+F4 key presses until a S3 or S4 ACPI sleep cycle is performed or some time passes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1005h]h0x1005}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0x04h]h0x04}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hFN+F5h]hFN+F5}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj3ubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hRadio. Enables/disables the internal Bluetooth hardware and W-WAN card if left in control of the firmware. Does not affect the WLAN card. Should be used to turn on/off all radios (Bluetooth+W-WAN+WLAN), really.h]hRadio. Enables/disables the internal Bluetooth hardware and W-WAN card if left in control of the firmware. Does not affect the WLAN card. Should be used to turn on/off all radios (Bluetooth+W-WAN+WLAN), really.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjJubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1006h]h0x1006}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjjubah}(h]h ]h"]h$]h&]uh1jb hjgubjc )}(hhh]h)}(h0x05h]h0x05}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjgubjc )}(hhh]h)}(hFN+F6h]hFN+F6}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjgubjc )}(hhh]h)}(hhh]h)}(hhh]h}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]j;j<uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjgubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1007h]h0x1007}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0x06h]h0x06}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hFN+F7h]hFN+F7}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h,Video output cycle. Do you feel lucky today?h]h,Video output cycle. Do you feel lucky today?}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1008h]h0x1008}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj8ubah}(h]h ]h"]h$]h&]uh1jb hj5ubjc )}(hhh]h)}(h0x07h]h0x07}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjOubah}(h]h ]h"]h$]h&]uh1jb hj5ubjc )}(hhh]h)}(hFN+F8h]hFN+F8}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjfubah}(h]h ]h"]h$]h&]uh1jb hj5ubjc )}(hhh]h)}(hIBM: toggle screen expand Lenovo: configure UltraNav, or toggle screen expand. On 2024 platforms replaced by 0x131f (see below) and on newer platforms (2025 +) keycode is replaced by 0x1401 (see below).h]hIBM: toggle screen expand Lenovo: configure UltraNav, or toggle screen expand. On 2024 platforms replaced by 0x131f (see below) and on newer platforms (2025 +) keycode is replaced by 0x1401 (see below).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj}ubah}(h]h ]h"]h$]h&]uh1jb hj5ubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1009h]h0x1009}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0x08h]h0x08}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hFN+F9h]hFN+F9}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hhh]h)}(hhh]h}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]j;j<uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h...h]h...}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h...h]h...}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h...h]h...}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj4ubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h...h]h...}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjKubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x100Bh]h0x100B}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjkubah}(h]h ]h"]h$]h&]uh1jb hjhubjc )}(hhh]h)}(h0x0Ah]h0x0A}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjhubjc )}(hhh]h)}(hFN+F11h]hFN+F11}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjhubjc )}(hhh]h)}(hhh]h)}(hhh]h}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]j;j<uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjhubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x100Ch]h0x100C}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0x0Bh]h0x0B}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hFN+F12h]hFN+F12}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hXSleep to disk. You are always supposed to handle it yourself, either through the ACPI event, or through a hotkey event. The firmware may refuse to generate further FN+F12 key press events until a S3 or S4 ACPI sleep cycle is performed, or some time passes.h]hXSleep to disk. You are always supposed to handle it yourself, either through the ACPI event, or through a hotkey event. The firmware may refuse to generate further FN+F12 key press events until a S3 or S4 ACPI sleep cycle is performed, or some time passes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x100Dh]h0x100D}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj9ubah}(h]h ]h"]h$]h&]uh1jb hj6ubjc )}(hhh]h)}(h0x0Ch]h0x0C}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjPubah}(h]h ]h"]h$]h&]uh1jb hj6ubjc )}(hhh]h)}(h FN+BACKSPACEh]h FN+BACKSPACE}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjgubah}(h]h ]h"]h$]h&]uh1jb hj6ubjc )}(hhh]h)}(hhh]h)}(hhh]h}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]j;j<uh1hhhhMhj~ubah}(h]h ]h"]h$]h&]uh1jb hj6ubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x100Eh]h0x100E}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0x0Dh]h0x0D}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h FN+INSERTh]h FN+INSERT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hhh]h)}(hhh]h}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]j;j<uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x100Fh]h0x100F}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0x0Eh]h0x0E}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"ubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h FN+DELETEh]h FN+DELETE}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj9ubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hhh]h)}(hhh]h}(h]h ]h"]h$]h&]uh1hhjSubah}(h]h ]h"]h$]h&]j;j<uh1hhhhMhjPubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1010h]h0x1010}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjtubah}(h]h ]h"]h$]h&]uh1jb hjqubjc )}(hhh]h)}(h0x0Fh]h0x0F}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjqubjc )}(hhh]h)}(hFN+HOMEh]hFN+HOME}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjqubjc )}(hhh]h)}(hXBrightness up. This key is always handled by the firmware in IBM ThinkPads, even when unmasked. Just leave it alone. For Lenovo ThinkPads with a new BIOS, it has to be handled either by the ACPI OSI, or by userspace. The driver does the right thing, never mess with this.h]hXBrightness up. This key is always handled by the firmware in IBM ThinkPads, even when unmasked. Just leave it alone. For Lenovo ThinkPads with a new BIOS, it has to be handled either by the ACPI OSI, or by userspace. The driver does the right thing, never mess with this.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjqubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1011h]h0x1011}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0x10h]h0x10}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hFN+ENDh]hFN+END}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0Brightness down. See brightness up for details.h]h0Brightness down. See brightness up for details.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1012h]h0x1012}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj>ubah}(h]h ]h"]h$]h&]uh1jb hj;ubjc )}(hhh]h)}(h0x11h]h0x11}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjUubah}(h]h ]h"]h$]h&]uh1jb hj;ubjc )}(hhh]h)}(hFN+PGUPh]hFN+PGUP}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjlubah}(h]h ]h"]h$]h&]uh1jb hj;ubjc )}(hhh]h)}(hSThinkLight toggle. This key is always handled by the firmware, even when unmasked.h]hSThinkLight toggle. This key is always handled by the firmware, even when unmasked.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hj;ubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1013h]h0x1013}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0x12h]h0x12}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h FN+PGDOWNh]h FN+PGDOWN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hhh]h)}(hhh]h}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]j;j<uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1014h]h0x1014}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(h0x13h]h0x13}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(hFN+SPACEh]hFN+SPACE}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj:ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(hZoom keyh]hZoom key}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQubah}(h]h ]h"]h$]h&]uh1jb hj ubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1015h]h0x1015}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjqubah}(h]h ]h"]h$]h&]uh1jb hjnubjc )}(hhh]h)}(h0x14h]h0x14}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjnubjc )}(hhh]h)}(h VOLUME UPh]h VOLUME UP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjnubjc )}(hhh]h)}(hInternal mixer volume up. This key is always handled by the firmware, even when unmasked. NOTE: Lenovo seems to be changing this.h]hInternal mixer volume up. This key is always handled by the firmware, even when unmasked. NOTE: Lenovo seems to be changing this.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjnubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1016h]h0x1016}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0x15h]h0x15}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h VOLUME DOWNh]h VOLUME DOWN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hInternal mixer volume up. This key is always handled by the firmware, even when unmasked. NOTE: Lenovo seems to be changing this.h]hInternal mixer volume up. This key is always handled by the firmware, even when unmasked. NOTE: Lenovo seems to be changing this.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1017h]h0x1017}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj;ubah}(h]h ]h"]h$]h&]uh1jb hj8ubjc )}(hhh]h)}(h0x16h]h0x16}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjRubah}(h]h ]h"]h$]h&]uh1jb hj8ubjc )}(hhh]h)}(hMUTEh]hMUTE}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjiubah}(h]h ]h"]h$]h&]uh1jb hj8ubjc )}(hhh]h)}(hTMute internal mixer. This key is always handled by the firmware, even when unmasked.h]hTMute internal mixer. This key is always handled by the firmware, even when unmasked.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hj8ubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1018h]h0x1018}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0x17h]h0x17}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hTHINKPADh]hTHINKPAD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hThinkPad/Access IBM/Lenovo keyh]hThinkPad/Access IBM/Lenovo key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1019h]h0x1019}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h0x18h]h0x18}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hunknownh]hunknown}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj3ubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x131fh]h0x131f}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj\ubah}(h]h ]h"]h$]h&]uh1jb hjYubjc )}(hhh]h)}(h...h]h...}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjsubah}(h]h ]h"]h$]h&]uh1jb hjYubjc )}(hhh]h)}(hFN+F8h]hFN+F8}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjYubjc )}(hhh]h)}(h;Platform Mode change (2024 systems). Implemented in driver.h]h;Platform Mode change (2024 systems). Implemented in driver.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjYubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1401h]h0x1401}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h...h]h...}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hFN+F8h]hFN+F8}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h=Platform Mode change (2025 + systems). Implemented in driver.h]h=Platform Mode change (2025 + systems). Implemented in driver.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h...h]h...}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj&ubah}(h]h ]h"]h$]h&]uh1jb hj#ubjc )}(hhh]h)}(h...h]h...}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj=ubah}(h]h ]h"]h$]h&]uh1jb hj#ubjc )}(hhh]h)}(h...h]h...}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjTubah}(h]h ]h"]h$]h&]uh1jb hj#ubjc )}(hhh]h}(h]h ]h"]h$]h&]uh1jb hj#ubeh}(h]h ]h"]h$]h&]uh1j] hjg ubj^ )}(hhh](jc )}(hhh]h)}(h0x1020h]h0x1020}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj}ubah}(h]h ]h"]h$]h&]uh1jb hjzubjc )}(hhh]h)}(h0x1Fh]h0x1F}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjzubjc )}(hhh]h)}(hunknownh]hunknown}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jb hjzubjc )}(hhh]h}(h]h ]h"]h$]h&]uh1jb hjzubeh}(h]h ]h"]h$]h&]uh1j] hjg ubeh}(h]h ]h"]h$]h&]uh1jX hj ubeh}(h]h ]h"]h$]h&]colsKuh1j= hj ubah}(h]h ]h"]h$]h&]uh1j8 hj hhhhhNubh)}(hXThe ThinkPad firmware does not allow one to differentiate when most hot keys are pressed or released (either that, or we don't know how to, yet). For these keys, the driver generates a set of events for a key press and immediately issues the same set of events for a key release. It is unknown by the driver if the ThinkPad firmware triggered these events on hot key press or release, but the firmware will do it for either one, not both.h]hXThe ThinkPad firmware does not allow one to differentiate when most hot keys are pressed or released (either that, or we don’t know how to, yet). For these keys, the driver generates a set of events for a key press and immediately issues the same set of events for a key release. It is unknown by the driver if the ThinkPad firmware triggered these events on hot key press or release, but the firmware will do it for either one, not both.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj hhubh)}(hIf a key is mapped to KEY_RESERVED, it generates no input events at all. If a key is mapped to KEY_UNKNOWN, it generates an input event that includes an scan code. If a key is mapped to anything else, it will generate input device EV_KEY events.h]hIf a key is mapped to KEY_RESERVED, it generates no input events at all. If a key is mapped to KEY_UNKNOWN, it generates an input event that includes an scan code. If a key is mapped to anything else, it will generate input device EV_KEY events.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hYIn addition to the EV_KEY events, thinkpad-acpi may also issue EV_SW events for switches:h]hYIn addition to the EV_KEY events, thinkpad-acpi may also issue EV_SW events for switches:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj9 )}(hhh]j> )}(hhh](jC )}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jB hjubjC )}(hhh]h}(h]h ]h"]h$]h&]colwidthK.uh1jB hjubjY )}(hhh](j^ )}(hhh](jc )}(hhh]h)}(h SW_RFKILL_ALLh]h SW_RFKILL_ALL}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.ubah}(h]h ]h"]h$]h&]uh1jb hj+ubjc )}(hhh]h)}(h+T60 and later hardware rfkill rocker switchh]h+T60 and later hardware rfkill rocker switch}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjEubah}(h]h ]h"]h$]h&]uh1jb hj+ubeh}(h]h ]h"]h$]h&]uh1j] hj(ubj^ )}(hhh](jc )}(hhh]h)}(hSW_TABLET_MODEh]hSW_TABLET_MODE}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjeubah}(h]h ]h"]h$]h&]uh1jb hjbubjc )}(hhh]h)}(h.Tablet ThinkPads HKEY events 0x5009 and 0x500Ah]h.Tablet ThinkPads HKEY events 0x5009 and 0x500A}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj|ubah}(h]h ]h"]h$]h&]uh1jb hjbubeh}(h]h ]h"]h$]h&]uh1j] hj(ubeh}(h]h ]h"]h$]h&]uh1jX hjubeh}(h]h ]h"]h$]h&]colsKuh1j= hjubah}(h]h ]h"]h$]h&]uh1j8 hj hhhhhNubeh}(h]input-layer-notesah ]h"]input layer notesah$]h&]uh1hhjhhhhhMrubeh}(h]hot-keysah ]h"]hot keysah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hNon hotkey ACPI HKEY event maph]hNon hotkey ACPI HKEY event map}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(h/Events that are never propagated by the driver:h]h/Events that are never propagated by the driver:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM!hjhhubj9 )}(hhh]j> )}(hhh](jC )}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jB hjubjC )}(hhh]h}(h]h ]h"]h$]h&]colwidthK2uh1jB hjubjY )}(hhh](j^ )}(hhh](jc )}(hhh]h)}(h0x2304h]h0x2304}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM$hjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h*System is waking up from suspend to undockh]h*System is waking up from suspend to undock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM$hjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x2305h]h0x2305}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM%hj2ubah}(h]h ]h"]h$]h&]uh1jb hj/ubjc )}(hhh]h)}(h-System is waking up from suspend to eject bayh]h-System is waking up from suspend to eject bay}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM%hjIubah}(h]h ]h"]h$]h&]uh1jb hj/ubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x2404h]h0x2404}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hjiubah}(h]h ]h"]h$]h&]uh1jb hjfubjc )}(hhh]h)}(h.System is waking up from hibernation to undockh]h.System is waking up from hibernation to undock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hjubah}(h]h ]h"]h$]h&]uh1jb hjfubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x2405h]h0x2405}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM'hjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h1System is waking up from hibernation to eject bayh]h1System is waking up from hibernation to eject bay}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM'hjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x5001h]h0x5001}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM(hjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h Lid closedh]h Lid closed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM(hjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x5002h]h0x5002}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM)hjubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(h Lid openedh]h Lid opened}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM)hj%ubah}(h]h ]h"]h$]h&]uh1jb hj ubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x5009h]h0x5009}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM*hjEubah}(h]h ]h"]h$]h&]uh1jb hjBubjc )}(hhh]h)}(h&Tablet swivel: switched to tablet modeh]h&Tablet swivel: switched to tablet mode}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM*hj\ubah}(h]h ]h"]h$]h&]uh1jb hjBubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x500Ah]h0x500A}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM+hj|ubah}(h]h ]h"]h$]h&]uh1jb hjyubjc )}(hhh]h)}(h&Tablet swivel: switched to normal modeh]h&Tablet swivel: switched to normal mode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM+hjubah}(h]h ]h"]h$]h&]uh1jb hjyubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x5010h]h0x5010}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM,hjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h&Brightness level changed/control eventh]h&Brightness level changed/control event}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM,hjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x6000h]h0x6000}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM-hjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hKEYBOARD: Numlock key pressedh]hKEYBOARD: Numlock key pressed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM-hjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x6005h]h0x6005}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM.hj!ubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h)KEYBOARD: Fn key pressed (TO BE VERIFIED)h]h)KEYBOARD: Fn key pressed (TO BE VERIFIED)}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM.hj8ubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x7000h]h0x7000}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM/hjXubah}(h]h ]h"]h$]h&]uh1jb hjUubjc )}(hhh]h)}(h#Radio Switch may have changed stateh]h#Radio Switch may have changed state}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM/hjoubah}(h]h ]h"]h$]h&]uh1jb hjUubeh}(h]h ]h"]h$]h&]uh1j] hjubeh}(h]h ]h"]h$]h&]uh1jX hjubeh}(h]h ]h"]h$]h&]colsKuh1j= hjubah}(h]h ]h"]h$]h&]uh1j8 hjhhhhhNubh)}(h6Events that are propagated by the driver to userspace:h]h6Events that are propagated by the driver to userspace:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM3hjhhubj9 )}(hhh]j> )}(hhh](jC )}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jB hjubjC )}(hhh]h}(h]h ]h"]h$]h&]colwidthK7uh1jB hjubjY )}(hhh](j^ )}(hhh](jc )}(hhh]h)}(h0x2313h]h0x2313}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM6hjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hKALARM: System is waking up from suspend because the battery is nearly emptyh]hKALARM: System is waking up from suspend because the battery is nearly empty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM6hjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x2413h]h0x2413}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM8hjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hOALARM: System is waking up from hibernation because the battery is nearly emptyh]hOALARM: System is waking up from hibernation because the battery is nearly empty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM8hjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x3003h]h0x3003}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM:hj;ubah}(h]h ]h"]h$]h&]uh1jb hj8ubjc )}(hhh]h)}(h3Bay ejection (see 0x2x05) complete, can sleep againh]h3Bay ejection (see 0x2x05) complete, can sleep again}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM:hjRubah}(h]h ]h"]h$]h&]uh1jb hj8ubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x3006h]h0x3006}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM;hjrubah}(h]h ]h"]h$]h&]uh1jb hjoubjc )}(hhh]h)}(hWBay hotplug request (hint to power up SATA link when the optical drive tray is ejected)h]hWBay hotplug request (hint to power up SATA link when the optical drive tray is ejected)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM;hjubah}(h]h ]h"]h$]h&]uh1jb hjoubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x4003h]h0x4003}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM=hjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h&Undocked (see 0x2x04), can sleep againh]h&Undocked (see 0x2x04), can sleep again}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM=hjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x4010h]h0x4010}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM>hjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h3Docked into hotplug port replicator (non-ACPI dock)h]h3Docked into hotplug port replicator (non-ACPI dock)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM>hjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x4011h]h0x4011}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM?hjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h5Undocked from hotplug port replicator (non-ACPI dock)h]h5Undocked from hotplug port replicator (non-ACPI dock)}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM?hj.ubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x500Bh]h0x500B}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM@hjNubah}(h]h ]h"]h$]h&]uh1jb hjKubjc )}(hhh]h)}(h(Tablet pen inserted into its storage bayh]h(Tablet pen inserted into its storage bay}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM@hjeubah}(h]h ]h"]h$]h&]uh1jb hjKubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x500Ch]h0x500C}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMAhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h'Tablet pen removed from its storage bayh]h'Tablet pen removed from its storage bay}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMAhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x6011h]h0x6011}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMBhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hALARM: battery is too hoth]hALARM: battery is too hot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMBhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x6012h]h0x6012}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMChjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hALARM: battery is extremely hoth]hALARM: battery is extremely hot}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMChj ubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x6021h]h0x6021}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMDhj*ubah}(h]h ]h"]h$]h&]uh1jb hj'ubjc )}(hhh]h)}(hALARM: a sensor is too hoth]hALARM: a sensor is too hot}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMDhjAubah}(h]h ]h"]h$]h&]uh1jb hj'ubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x6022h]h0x6022}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMEhjaubah}(h]h ]h"]h$]h&]uh1jb hj^ubjc )}(hhh]h)}(h ALARM: a sensor is extremely hoth]h ALARM: a sensor is extremely hot}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMEhjxubah}(h]h ]h"]h$]h&]uh1jb hj^ubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x6030h]h0x6030}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMFhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(hSystem thermal table changedh]hSystem thermal table changed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMFhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x6032h]h0x6032}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMGhjubah}(h]h ]h"]h$]h&]uh1jb hjubjc )}(hhh]h)}(h7Thermal Control command set completion (DYTC, Windows)h]h7Thermal Control command set completion (DYTC, Windows)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMGhjubah}(h]h ]h"]h$]h&]uh1jb hjubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x6040h]h0x6040}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMHhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubjc )}(hhh]h)}(h2Nvidia Optimus/AC adapter related (TO BE VERIFIED)h]h2Nvidia Optimus/AC adapter related (TO BE VERIFIED)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMHhj ubah}(h]h ]h"]h$]h&]uh1jb hj ubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x60C0h]h0x60C0}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMIhj= ubah}(h]h ]h"]h$]h&]uh1jb hj: ubjc )}(hhh]h)}(h(X1 Yoga 2016, Tablet mode status changedh]h(X1 Yoga 2016, Tablet mode status changed}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMIhjT ubah}(h]h ]h"]h$]h&]uh1jb hj: ubeh}(h]h ]h"]h$]h&]uh1j] hjubj^ )}(hhh](jc )}(hhh]h)}(h0x60F0h]h0x60F0}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMJhjt ubah}(h]h ]h"]h$]h&]uh1jb hjq ubjc )}(hhh]h)}(h.Thermal Transformation changed (GMTS, Windows)h]h.Thermal Transformation changed (GMTS, Windows)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMJhj ubah}(h]h ]h"]h$]h&]uh1jb hjq ubeh}(h]h ]h"]h$]h&]uh1j] hjubeh}(h]h ]h"]h$]h&]uh1jX hjubeh}(h]h ]h"]h$]h&]colsKuh1j= hjubah}(h]h ]h"]h$]h&]uh1j8 hjhhhhhNubh)}(hXBattery nearly empty alarms are a last resort attempt to get the operating system to hibernate or shutdown cleanly (0x2313), or shutdown cleanly (0x2413) before power is lost. They must be acted upon, as the wake up caused by the firmware will have negated most safety nets...h]hXBattery nearly empty alarms are a last resort attempt to get the operating system to hibernate or shutdown cleanly (0x2313), or shutdown cleanly (0x2413) before power is lost. They must be acted upon, as the wake up caused by the firmware will have negated most safety nets...}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMMhjhhubh)}(hX&When any of the "too hot" alarms happen, according to Lenovo the user should suspend or hibernate the laptop (and in the case of battery alarms, unplug the AC adapter) to let it cool down. These alarms do signal that something is wrong, they should never happen on normal operating conditions.h]hX*When any of the “too hot” alarms happen, according to Lenovo the user should suspend or hibernate the laptop (and in the case of battery alarms, unplug the AC adapter) to let it cool down. These alarms do signal that something is wrong, they should never happen on normal operating conditions.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMRhjhhubh)}(hThe "extremely hot" alarms are emergencies. According to Lenovo, the operating system is to force either an immediate suspend or hibernate cycle, or a system shutdown. Obviously, something is very wrong if this happens.h]hThe “extremely hot” alarms are emergencies. According to Lenovo, the operating system is to force either an immediate suspend or hibernate cycle, or a system shutdown. Obviously, something is very wrong if this happens.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMXhjhhubh)}(hhh](h)}(hBrightness hotkey notesh]hBrightness hotkey notes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhM_ubh)}(hDon't mess with the brightness hotkeys in a Thinkpad. If you want notifications for OSD, use the sysfs backlight class event support.h]hDon’t mess with the brightness hotkeys in a Thinkpad. If you want notifications for OSD, use the sysfs backlight class event support.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMahj hhubh)}(hXThe driver will issue KEY_BRIGHTNESS_UP and KEY_BRIGHTNESS_DOWN events automatically for the cases were userspace has to do something to implement brightness changes. When you override these events, you will either fail to handle properly the ThinkPads that require explicit action to change backlight brightness, or the ThinkPads that require that no action be taken to work properly.h]hXThe driver will issue KEY_BRIGHTNESS_UP and KEY_BRIGHTNESS_DOWN events automatically for the cases were userspace has to do something to implement brightness changes. When you override these events, you will either fail to handle properly the ThinkPads that require explicit action to change backlight brightness, or the ThinkPads that require that no action be taken to work properly.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMdhj hhubeh}(h]brightness-hotkey-notesah ]h"]brightness hotkey notesah$]h&]uh1hhjhhhhhM_ubeh}(h]non-hotkey-acpi-hkey-event-mapah ]h"]non hotkey acpi hkey event mapah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(h Bluetoothh]h Bluetooth}(hj%!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"!hhhhhMmubh)}(h procfs: /proc/acpi/ibm/bluetoothh]h procfs: /proc/acpi/ibm/bluetooth}(hj3!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMohj"!hhubh)}(h5sysfs device attribute: bluetooth_enable (deprecated)h]h5sysfs device attribute: bluetooth_enable (deprecated)}(hjA!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMqhj"!hhubh)}(h0sysfs rfkill class: switch "tpacpi_bluetooth_sw"h]h4sysfs rfkill class: switch “tpacpi_bluetooth_sw”}(hjO!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMshj"!hhubh)}(hsThis feature shows the presence and current state of a ThinkPad Bluetooth device in the internal ThinkPad CDC slot.h]hsThis feature shows the presence and current state of a ThinkPad Bluetooth device in the internal ThinkPad CDC slot.}(hj]!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMuhj"!hhubh)}(hpIf the ThinkPad supports it, the Bluetooth state is stored in NVRAM, so it is kept across reboots and power-off.h]hpIf the ThinkPad supports it, the Bluetooth state is stored in NVRAM, so it is kept across reboots and power-off.}(hjk!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMxhj"!hhubh)}(hhh](h)}(h Procfs notesh]h Procfs notes}(hj|!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjy!hhhhhM|ubh)}(h?If Bluetooth is installed, the following commands can be used::h]h>If Bluetooth is installed, the following commands can be used:}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM~hjy!hhubj)}(hNecho enable > /proc/acpi/ibm/bluetooth echo disable > /proc/acpi/ibm/bluetoothh]hNecho enable > /proc/acpi/ibm/bluetooth echo disable > /proc/acpi/ibm/bluetooth}hj!sbah}(h]h ]h"]h$]h&]jjuh1jhhhMhjy!hhubeh}(h]id1ah ]h"]h$]jah&]uh1hhj"!hhhhhM|jKubh)}(hhh](h)}(h Sysfs notesh]h Sysfs notes}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hhhhhMubj)}(hXIf the Bluetooth CDC card is installed, it can be enabled / disabled through the "bluetooth_enable" thinkpad-acpi device attribute, and its current status can also be queried. enable: - 0: disables Bluetooth / Bluetooth is disabled - 1: enables Bluetooth / Bluetooth is enabled. Note: this interface has been superseded by the generic rfkill class. It has been deprecated, and it will be removed in year 2010. rfkill controller switch "tpacpi_bluetooth_sw": refer to Documentation/driver-api/rfkill.rst for details. h](h)}(hIf the Bluetooth CDC card is installed, it can be enabled / disabled through the "bluetooth_enable" thinkpad-acpi device attribute, and its current status can also be queried.h]hIf the Bluetooth CDC card is installed, it can be enabled / disabled through the “bluetooth_enable” thinkpad-acpi device attribute, and its current status can also be queried.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj!ubh)}(henable:h]henable:}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj!ubj)}(h_- 0: disables Bluetooth / Bluetooth is disabled - 1: enables Bluetooth / Bluetooth is enabled. h]h)}(hhh](h)}(h-0: disables Bluetooth / Bluetooth is disabledh]h)}(hj!h]h-0: disables Bluetooth / Bluetooth is disabled}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj!ubah}(h]h ]h"]h$]h&]uh1hhj!ubh)}(h-1: enables Bluetooth / Bluetooth is enabled. h]h)}(h,1: enables Bluetooth / Bluetooth is enabled.h]h,1: enables Bluetooth / Bluetooth is enabled.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj!ubah}(h]h ]h"]h$]h&]uh1hhj!ubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhMhj!ubah}(h]h ]h"]h$]h&]uh1jhhhMhj!ubh)}(hNote: this interface has been superseded by the generic rfkill class. It has been deprecated, and it will be removed in year 2010.h]hNote: this interface has been superseded by the generic rfkill class. It has been deprecated, and it will be removed in year 2010.}(hj "hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj!ubh)}(hirfkill controller switch "tpacpi_bluetooth_sw": refer to Documentation/driver-api/rfkill.rst for details.h]hmrfkill controller switch “tpacpi_bluetooth_sw”: refer to Documentation/driver-api/rfkill.rst for details.}(hj."hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj!ubeh}(h]h ]h"]h$]h&]uh1jhhhMhj!hhubeh}(h]id2ah ]h"]h$]j ah&]uh1hhj"!hhhhhMjKubeh}(h] bluetoothah ]h"] bluetoothah$]h&]uh1hhhhhhhhMmubh)}(hhh](h)}(h,Video output control -- /proc/acpi/ibm/videoh]h,Video output control -- /proc/acpi/ibm/video}(hjT"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQ"hhhhhMubh)}(hThis feature allows control over the devices used for video output - LCD, CRT or DVI (if available). The following commands are available::h]hThis feature allows control over the devices used for video output - LCD, CRT or DVI (if available). The following commands are available:}(hjb"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubj)}(hXecho lcd_enable > /proc/acpi/ibm/video echo lcd_disable > /proc/acpi/ibm/video echo crt_enable > /proc/acpi/ibm/video echo crt_disable > /proc/acpi/ibm/video echo dvi_enable > /proc/acpi/ibm/video echo dvi_disable > /proc/acpi/ibm/video echo auto_enable > /proc/acpi/ibm/video echo auto_disable > /proc/acpi/ibm/video echo expand_toggle > /proc/acpi/ibm/video echo video_switch > /proc/acpi/ibm/videoh]hXecho lcd_enable > /proc/acpi/ibm/video echo lcd_disable > /proc/acpi/ibm/video echo crt_enable > /proc/acpi/ibm/video echo crt_disable > /proc/acpi/ibm/video echo dvi_enable > /proc/acpi/ibm/video echo dvi_disable > /proc/acpi/ibm/video echo auto_enable > /proc/acpi/ibm/video echo auto_disable > /proc/acpi/ibm/video echo expand_toggle > /proc/acpi/ibm/video echo video_switch > /proc/acpi/ibm/video}hjp"sbah}(h]h ]h"]h$]h&]jjuh1jhhhMhjQ"hhubj)}(hhh]j)}(hNOTE: Access to this feature is restricted to processes owning the CAP_SYS_ADMIN capability for safety reasons, as it can interact badly enough with some versions of X.org to crash it. h](j)}(hNOTE:h]hNOTE:}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhj"ubj)}(hhh]h)}(hAccess to this feature is restricted to processes owning the CAP_SYS_ADMIN capability for safety reasons, as it can interact badly enough with some versions of X.org to crash it.h]hAccess to this feature is restricted to processes owning the CAP_SYS_ADMIN capability for safety reasons, as it can interact badly enough with some versions of X.org to crash it.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhhhMhj~"ubah}(h]h ]h"]h$]h&]uh1jhjQ"hhhhhNubh)}(hEach video output device can be enabled or disabled individually. Reading /proc/acpi/ibm/video shows the status of each device.h]hEach video output device can be enabled or disabled individually. Reading /proc/acpi/ibm/video shows the status of each device.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubh)}(hXAutomatic video switching can be enabled or disabled. When automatic video switching is enabled, certain events (e.g. opening the lid, docking or undocking) cause the video output device to change automatically. While this can be useful, it also causes flickering and, on the X40, video corruption. By disabling automatic switching, the flickering or video corruption can be avoided.h]hXAutomatic video switching can be enabled or disabled. When automatic video switching is enabled, certain events (e.g. opening the lid, docking or undocking) cause the video output device to change automatically. While this can be useful, it also causes flickering and, on the X40, video corruption. By disabling automatic switching, the flickering or video corruption can be avoided.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubh)}(hiThe video_switch command cycles through the available video outputs (it simulates the behavior of Fn-F7).h]hiThe video_switch command cycles through the available video outputs (it simulates the behavior of Fn-F7).}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubh)}(hX Video expansion can be toggled through this feature. This controls whether the display is expanded to fill the entire LCD screen when a mode with less than full resolution is used. Note that the current video expansion status cannot be determined through this feature.h]hX Video expansion can be toggled through this feature. This controls whether the display is expanded to fill the entire LCD screen when a mode with less than full resolution is used. Note that the current video expansion status cannot be determined through this feature.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubh)}(hX@Note that on many models (particularly those using Radeon graphics chips) the X driver configures the video card in a way which prevents Fn-F7 from working. This also disables the video output switching features of this driver, as it uses the same ACPI methods as Fn-F7. Video switching on the console should still work.h]hX@Note that on many models (particularly those using Radeon graphics chips) the X driver configures the video card in a way which prevents Fn-F7 from working. This also disables the video output switching features of this driver, as it uses the same ACPI methods as Fn-F7. Video switching on the console should still work.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubh)}(hBUPDATE: refer to https://bugs.freedesktop.org/show_bug.cgi?id=2000h](hUPDATE: refer to }(hj"hhhNhNubh)}(h1https://bugs.freedesktop.org/show_bug.cgi?id=2000h]h1https://bugs.freedesktop.org/show_bug.cgi?id=2000}(hj#hhhNhNubah}(h]h ]h"]h$]h&]refurij#uh1hhj"ubeh}(h]h ]h"]h$]h&]uh1hhhhMhjQ"hhubeh}(h](video-output-control-proc-acpi-ibm-videoah ]h"],video output control -- /proc/acpi/ibm/videoah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hThinkLight controlh]hThinkLight control}(hj$#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!#hhhhhMubh)}(hprocfs: /proc/acpi/ibm/lighth]hprocfs: /proc/acpi/ibm/light}(hj2#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj!#hhubh)}(hDsysfs attributes: as per LED class, for the "tpacpi::thinklight" LEDh]hHsysfs attributes: as per LED class, for the “tpacpi::thinklight” LED}(hj@#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj!#hhubh)}(hhh](h)}(h procfs notesh]h procfs notes}(hjQ#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjN#hhhhhMubh)}(hThe ThinkLight status can be read and set through the procfs interface. A few models which do not make the status available will show the ThinkLight status as "unknown". The available commands are::h]hThe ThinkLight status can be read and set through the procfs interface. A few models which do not make the status available will show the ThinkLight status as “unknown”. The available commands are:}(hj_#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjN#hhubj)}(h?echo on > /proc/acpi/ibm/light echo off > /proc/acpi/ibm/lighth]h?echo on > /proc/acpi/ibm/light echo off > /proc/acpi/ibm/light}hjm#sbah}(h]h ]h"]h$]h&]jjuh1jhhhMhjN#hhubeh}(h]id3ah ]h"]h$] procfs notesah&]uh1hhj!#hhhhhMjKubh)}(hhh](h)}(h sysfs notesh]h sysfs notes}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hhhhhMubh)}(hThe ThinkLight sysfs interface is documented by the LED class documentation, in Documentation/leds/leds-class.rst. The ThinkLight LED name is "tpacpi::thinklight".h]hThe ThinkLight sysfs interface is documented by the LED class documentation, in Documentation/leds/leds-class.rst. The ThinkLight LED name is “tpacpi::thinklight”.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#hhubh)}(hDue to limitations in the sysfs LED class, if the status of the ThinkLight cannot be read or if it is unknown, thinkpad-acpi will report it as "off". It is impossible to know if the status returned through sysfs is valid.h]hDue to limitations in the sysfs LED class, if the status of the ThinkLight cannot be read or if it is unknown, thinkpad-acpi will report it as “off”. It is impossible to know if the status returned through sysfs is valid.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#hhubeh}(h]id4ah ]h"]h$] sysfs notesah&]uh1hhj!#hhhhhMjKubeh}(h]thinklight-controlah ]h"]thinklight controlah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hCMOS/UCMS controlh]hCMOS/UCMS control}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hhhhhMubh)}(hprocfs: /proc/acpi/ibm/cmosh]hprocfs: /proc/acpi/ibm/cmos}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#hhubh)}(h$sysfs device attribute: cmos_commandh]h$sysfs device attribute: cmos_command}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#hhubh)}(hThis feature is mostly used internally by the ACPI firmware to keep the legacy CMOS NVRAM bits in sync with the current machine state, and to record this state so that the ThinkPad will retain such settings across reboots.h]hThis feature is mostly used internally by the ACPI firmware to keep the legacy CMOS NVRAM bits in sync with the current machine state, and to record this state so that the ThinkPad will retain such settings across reboots.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#hhubh)}(hX[Some of these commands actually perform actions in some ThinkPad models, but this is expected to disappear more and more in newer models. As an example, in a T43 and in a X40, commands 12 and 13 still control the ThinkLight state for real, but commands 0 to 2 don't control the mixer anymore (they have been phased out) and just update the NVRAM.h]hX]Some of these commands actually perform actions in some ThinkPad models, but this is expected to disappear more and more in newer models. As an example, in a T43 and in a X40, commands 12 and 13 still control the ThinkLight state for real, but commands 0 to 2 don’t control the mixer anymore (they have been phased out) and just update the NVRAM.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#hhubh)}(hThe range of valid cmos command numbers is 0 to 21, but not all have an effect and the behavior varies from model to model. Here is the behavior on the X40 (tpb is the ThinkPad Buttons utility):h]hThe range of valid cmos command numbers is 0 to 21, but not all have an effect and the behavior varies from model to model. Here is the behavior on the X40 (tpb is the ThinkPad Buttons utility):}(hj $hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#hhubj)}(hX- 0 - Related to "Volume down" key press - 1 - Related to "Volume up" key press - 2 - Related to "Mute on" key press - 3 - Related to "Access IBM" key press - 4 - Related to "LCD brightness up" key press - 5 - Related to "LCD brightness down" key press - 11 - Related to "toggle screen expansion" key press/function - 12 - Related to "ThinkLight on" - 13 - Related to "ThinkLight off" - 14 - Related to "ThinkLight" key press (toggle ThinkLight) h]h)}(hhh](h)}(h&0 - Related to "Volume down" key pressh]h)}(hj $h]h*0 - Related to “Volume down” key press}(hj"$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj$ubah}(h]h ]h"]h$]h&]uh1hhj$ubh)}(h$1 - Related to "Volume up" key pressh]h)}(hj7$h]h(1 - Related to “Volume up” key press}(hj9$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj5$ubah}(h]h ]h"]h$]h&]uh1hhj$ubh)}(h"2 - Related to "Mute on" key pressh]h)}(hjN$h]h&2 - Related to “Mute on” key press}(hjP$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjL$ubah}(h]h ]h"]h$]h&]uh1hhj$ubh)}(h%3 - Related to "Access IBM" key pressh]h)}(hje$h]h)3 - Related to “Access IBM” key press}(hjg$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjc$ubah}(h]h ]h"]h$]h&]uh1hhj$ubh)}(h,4 - Related to "LCD brightness up" key pressh]h)}(hj|$h]h04 - Related to “LCD brightness up” key press}(hj~$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjz$ubah}(h]h ]h"]h$]h&]uh1hhj$ubh)}(h.5 - Related to "LCD brightness down" key pressh]h)}(hj$h]h25 - Related to “LCD brightness down” key press}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj$ubah}(h]h ]h"]h$]h&]uh1hhj$ubh)}(h<11 - Related to "toggle screen expansion" key press/functionh]h)}(hj$h]h@11 - Related to “toggle screen expansion” key press/function}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj$ubah}(h]h ]h"]h$]h&]uh1hhj$ubh)}(h12 - Related to "ThinkLight on"h]h)}(hj$h]h#12 - Related to “ThinkLight on”}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj$ubah}(h]h ]h"]h$]h&]uh1hhj$ubh)}(h 13 - Related to "ThinkLight off"h]h)}(hj$h]h$13 - Related to “ThinkLight off”}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj$ubah}(h]h ]h"]h$]h&]uh1hhj$ubh)}(h;14 - Related to "ThinkLight" key press (toggle ThinkLight) h]h)}(h:14 - Related to "ThinkLight" key press (toggle ThinkLight)h]h>14 - Related to “ThinkLight” key press (toggle ThinkLight)}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj$ubah}(h]h ]h"]h$]h&]uh1hhj$ubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhMhj$ubah}(h]h ]h"]h$]h&]uh1jhhhMhj#hhubh)}(hThe cmos command interface is prone to firmware split-brain problems, as in newer ThinkPads it is just a compatibility layer. Do not use it, it is exported just as a debug tool.h]hThe cmos command interface is prone to firmware split-brain problems, as in newer ThinkPads it is just a compatibility layer. Do not use it, it is exported just as a debug tool.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj#hhubeh}(h]cmos-ucms-controlah ]h"]cmos/ucms controlah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(h LED controlh]h LED control}(hj*%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'%hhhhhM ubh)}(hRprocfs: /proc/acpi/ibm/led sysfs attributes: as per LED class, see below for namesh]hRprocfs: /proc/acpi/ibm/led sysfs attributes: as per LED class, see below for names}(hj8%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj'%hhubh)}(hSome of the LED indicators can be controlled through this feature. On some older ThinkPad models, it is possible to query the status of the LED indicators as well. Newer ThinkPads cannot query the real status of the LED indicators.h]hSome of the LED indicators can be controlled through this feature. On some older ThinkPad models, it is possible to query the status of the LED indicators as well. Newer ThinkPads cannot query the real status of the LED indicators.}(hjF%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj'%hhubh)}(hXBecause misuse of the LEDs could induce an unaware user to perform dangerous actions (like undocking or ejecting a bay device while the buses are still active), or mask an important alarm (such as a nearly empty battery, or a broken battery), access to most LEDs is restricted.h]hXBecause misuse of the LEDs could induce an unaware user to perform dangerous actions (like undocking or ejecting a bay device while the buses are still active), or mask an important alarm (such as a nearly empty battery, or a broken battery), access to most LEDs is restricted.}(hjT%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj'%hhubh)}(hUnrestricted access to all LEDs requires that thinkpad-acpi be compiled with the CONFIG_THINKPAD_ACPI_UNSAFE_LEDS option enabled. Distributions must never enable this option. Individual users that are aware of the consequences are welcome to enabling it.h]hUnrestricted access to all LEDs requires that thinkpad-acpi be compiled with the CONFIG_THINKPAD_ACPI_UNSAFE_LEDS option enabled. Distributions must never enable this option. Individual users that are aware of the consequences are welcome to enabling it.}(hjb%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj'%hhubh)}(hAudio mute and microphone mute LEDs are supported, but currently not visible to userspace. They are used by the snd-hda-intel audio driver.h]hAudio mute and microphone mute LEDs are supported, but currently not visible to userspace. They are used by the snd-hda-intel audio driver.}(hjp%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj'%hhubh)}(hhh](h)}(h procfs notesh]h procfs notes}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~%hhhhhM$ubh)}(hThe available commands are::h]hThe available commands are:}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hj~%hhubj)}(hecho ' on' >/proc/acpi/ibm/led echo ' off' >/proc/acpi/ibm/led echo ' blink' >/proc/acpi/ibm/ledh]hecho ' on' >/proc/acpi/ibm/led echo ' off' >/proc/acpi/ibm/led echo ' blink' >/proc/acpi/ibm/led}hj%sbah}(h]h ]h"]h$]h&]jjuh1jhhhM(hj~%hhubh)}(hThe range is 0 to 15. The set of LEDs that can be controlled varies from model to model. Here is the common ThinkPad mapping:h]hThe range is 0 to 15. The set of LEDs that can be controlled varies from model to model. Here is the common ThinkPad mapping:}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM,hj~%hhubj)}(hX- 0 - power - 1 - battery (orange) - 2 - battery (green) - 3 - UltraBase/dock - 4 - UltraBay - 5 - UltraBase battery slot - 6 - (unknown) - 7 - standby - 8 - dock status 1 - 9 - dock status 2 - 10, 11 - (unknown) - 12 - thinkvantage - 13, 14, 15 - (unknown) h]h)}(hhh](h)}(h 0 - powerh]h)}(hj%h]h 0 - power}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM0hj%ubah}(h]h ]h"]h$]h&]uh1hhj%ubh)}(h1 - battery (orange)h]h)}(hj%h]h1 - battery (orange)}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM1hj%ubah}(h]h ]h"]h$]h&]uh1hhj%ubh)}(h2 - battery (green)h]h)}(hj%h]h2 - battery (green)}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM2hj%ubah}(h]h ]h"]h$]h&]uh1hhj%ubh)}(h3 - UltraBase/dockh]h)}(hj&h]h3 - UltraBase/dock}(hj &hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM3hj&ubah}(h]h ]h"]h$]h&]uh1hhj%ubh)}(h 4 - UltraBayh]h)}(hj&h]h 4 - UltraBay}(hj &hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM4hj&ubah}(h]h ]h"]h$]h&]uh1hhj%ubh)}(h5 - UltraBase battery sloth]h)}(hj5&h]h5 - UltraBase battery slot}(hj7&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM5hj3&ubah}(h]h ]h"]h$]h&]uh1hhj%ubh)}(h 6 - (unknown)h]h)}(hjL&h]h 6 - (unknown)}(hjN&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM6hjJ&ubah}(h]h ]h"]h$]h&]uh1hhj%ubh)}(h 7 - standbyh]h)}(hjc&h]h 7 - standby}(hje&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM7hja&ubah}(h]h ]h"]h$]h&]uh1hhj%ubh)}(h8 - dock status 1h]h)}(hjz&h]h8 - dock status 1}(hj|&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM8hjx&ubah}(h]h ]h"]h$]h&]uh1hhj%ubh)}(h9 - dock status 2h]h)}(hj&h]h9 - dock status 2}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM9hj&ubah}(h]h ]h"]h$]h&]uh1hhj%ubh)}(h10, 11 - (unknown)h]h)}(hj&h]h10, 11 - (unknown)}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM:hj&ubah}(h]h ]h"]h$]h&]uh1hhj%ubh)}(h12 - thinkvantageh]h)}(hj&h]h12 - thinkvantage}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM;hj&ubah}(h]h ]h"]h$]h&]uh1hhj%ubh)}(h13, 14, 15 - (unknown) h]h)}(h13, 14, 15 - (unknown)h]h13, 14, 15 - (unknown)}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM<hj&ubah}(h]h ]h"]h$]h&]uh1hhj%ubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhM0hj%ubah}(h]h ]h"]h$]h&]uh1jhhhM0hj~%hhubh)}(hCAll of the above can be turned on and off and can be made to blink.h]hCAll of the above can be turned on and off and can be made to blink.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM>hj~%hhubeh}(h]id5ah ]h"]h$] procfs notesah&]uh1hhj'%hhhhhM$jKubh)}(hhh](h)}(h sysfs notesh]h sysfs notes}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hhhhhMAubh)}(h}The ThinkPad LED sysfs interface is described in detail by the LED class documentation, in Documentation/leds/leds-class.rst.h]h}The ThinkPad LED sysfs interface is described in detail by the LED class documentation, in Documentation/leds/leds-class.rst.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMChj'hhubh)}(hXSThe LEDs are named (in LED ID order, from 0 to 12): "tpacpi::power", "tpacpi:orange:batt", "tpacpi:green:batt", "tpacpi::dock_active", "tpacpi::bay_active", "tpacpi::dock_batt", "tpacpi::unknown_led", "tpacpi::standby", "tpacpi::dock_status1", "tpacpi::dock_status2", "tpacpi::unknown_led2", "tpacpi::unknown_led3", "tpacpi::thinkvantage".h]hXThe LEDs are named (in LED ID order, from 0 to 12): “tpacpi::power”, “tpacpi:orange:batt”, “tpacpi:green:batt”, “tpacpi::dock_active”, “tpacpi::bay_active”, “tpacpi::dock_batt”, “tpacpi::unknown_led”, “tpacpi::standby”, “tpacpi::dock_status1”, “tpacpi::dock_status2”, “tpacpi::unknown_led2”, “tpacpi::unknown_led3”, “tpacpi::thinkvantage”.}(hj-'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMFhj'hhubh)}(hDue to limitations in the sysfs LED class, if the status of the LED indicators cannot be read due to an error, thinkpad-acpi will report it as a brightness of zero (same as LED off).h]hDue to limitations in the sysfs LED class, if the status of the LED indicators cannot be read due to an error, thinkpad-acpi will report it as a brightness of zero (same as LED off).}(hj;'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMMhj'hhubh)}(hIf the thinkpad firmware doesn't support reading the current status, trying to read the current LED brightness will just return whatever brightness was last written to that attribute.h]hIf the thinkpad firmware doesn’t support reading the current status, trying to read the current LED brightness will just return whatever brightness was last written to that attribute.}(hjI'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMQhj'hhubh)}(hX These LEDs can blink using hardware acceleration. To request that a ThinkPad indicator LED should blink in hardware accelerated mode, use the "timer" trigger, and leave the delay_on and delay_off parameters set to zero (to request hardware acceleration autodetection).h]hXThese LEDs can blink using hardware acceleration. To request that a ThinkPad indicator LED should blink in hardware accelerated mode, use the “timer” trigger, and leave the delay_on and delay_off parameters set to zero (to request hardware acceleration autodetection).}(hjW'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMUhj'hhubh)}(hXULEDs that are known not to exist in a given ThinkPad model are not made available through the sysfs interface. If you have a dock and you notice there are LEDs listed for your ThinkPad that do not exist (and are not in the dock), or if you notice that there are missing LEDs, a report to ibm-acpi-devel@lists.sourceforge.net is appreciated.h](hX!LEDs that are known not to exist in a given ThinkPad model are not made available through the sysfs interface. If you have a dock and you notice there are LEDs listed for your ThinkPad that do not exist (and are not in the dock), or if you notice that there are missing LEDs, a report to }(hje'hhhNhNubh)}(h$ibm-acpi-devel@lists.sourceforge.neth]h$ibm-acpi-devel@lists.sourceforge.net}(hjm'hhhNhNubah}(h]h ]h"]h$]h&]refuri+mailto:ibm-acpi-devel@lists.sourceforge.netuh1hhje'ubh is appreciated.}(hje'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMZhj'hhubeh}(h]id6ah ]h"]h$] sysfs notesah&]uh1hhj'%hhhhhMAjKubeh}(h] led-controlah ]h"] led controlah$]h&]uh1hhhhhhhhM ubh)}(hhh](h)}(h"ACPI sounds -- /proc/acpi/ibm/beeph]h"ACPI sounds -- /proc/acpi/ibm/beep}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hhhhhMbubh)}(hThe BEEP method is used internally by the ACPI firmware to provide audible alerts in various situations. This feature allows the same sounds to be triggered manually.h]hThe BEEP method is used internally by the ACPI firmware to provide audible alerts in various situations. This feature allows the same sounds to be triggered manually.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMdhj'hhubh)}(h/The commands are non-negative integer numbers::h]h.The commands are non-negative integer numbers:}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhhj'hhubj)}(h"echo >/proc/acpi/ibm/beeph]h"echo >/proc/acpi/ibm/beep}hj'sbah}(h]h ]h"]h$]h&]jjuh1jhhhMjhj'hhubh)}(hThe valid range is 0 to 17. Not all numbers trigger sounds and the sounds vary from model to model. Here is the behavior on the X40:h]hThe valid range is 0 to 17. Not all numbers trigger sounds and the sounds vary from model to model. Here is the behavior on the X40:}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMlhj'hhubj)}(hX- 0 - stop a sound in progress (but use 17 to stop 16) - 2 - two beeps, pause, third beep ("low battery") - 3 - single beep - 4 - high, followed by low-pitched beep ("unable") - 5 - single beep - 6 - very high, followed by high-pitched beep ("AC/DC") - 7 - high-pitched beep - 9 - three short beeps - 10 - very long beep - 12 - low-pitched beep - 15 - three high-pitched beeps repeating constantly, stop with 0 - 16 - one medium-pitched beep repeating constantly, stop with 17 - 17 - stop 16 h]h)}(hhh](h)}(h40 - stop a sound in progress (but use 17 to stop 16)h]h)}(hj'h]h40 - stop a sound in progress (but use 17 to stop 16)}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMphj'ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h02 - two beeps, pause, third beep ("low battery")h]h)}(hj(h]h42 - two beeps, pause, third beep (“low battery”)}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMqhj'ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h3 - single beeph]h)}(hj(h]h3 - single beep}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMrhj(ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h14 - high, followed by low-pitched beep ("unable")h]h)}(hj.(h]h54 - high, followed by low-pitched beep (“unable”)}(hj0(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMshj,(ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h5 - single beeph]h)}(hjE(h]h5 - single beep}(hjG(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMthjC(ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h66 - very high, followed by high-pitched beep ("AC/DC")h]h)}(hj\(h]h:6 - very high, followed by high-pitched beep (“AC/DC”)}(hj^(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMuhjZ(ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h7 - high-pitched beeph]h)}(hjs(h]h7 - high-pitched beep}(hju(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMvhjq(ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h9 - three short beepsh]h)}(hj(h]h9 - three short beeps}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMwhj(ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h10 - very long beeph]h)}(hj(h]h10 - very long beep}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMxhj(ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h12 - low-pitched beeph]h)}(hj(h]h12 - low-pitched beep}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMyhj(ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h?15 - three high-pitched beeps repeating constantly, stop with 0h]h)}(hj(h]h?15 - three high-pitched beeps repeating constantly, stop with 0}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMzhj(ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h?16 - one medium-pitched beep repeating constantly, stop with 17h]h)}(hj(h]h?16 - one medium-pitched beep repeating constantly, stop with 17}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM{hj(ubah}(h]h ]h"]h$]h&]uh1hhj'ubh)}(h17 - stop 16 h]h)}(h 17 - stop 16h]h 17 - stop 16}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM|hj(ubah}(h]h ]h"]h$]h&]uh1hhj'ubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhMphj'ubah}(h]h ]h"]h$]h&]uh1jhhhMphj'hhubeh}(h]acpi-sounds-proc-acpi-ibm-beepah ]h"]"acpi sounds -- /proc/acpi/ibm/beepah$]h&]uh1hhhhhhhhMbubh)}(hhh](h)}(hTemperature sensorsh]hTemperature sensors}(hj*)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj')hhhhhMubh)}(hprocfs: /proc/acpi/ibm/thermalh]hprocfs: /proc/acpi/ibm/thermal}(hj8)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj')hhubh)}(h7sysfs device attributes: (hwmon "thinkpad") temp*_inputh]h;sysfs device attributes: (hwmon “thinkpad”) temp*_input}(hjF)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj')hhubh)}(hXMost ThinkPads include six or more separate temperature sensors but only expose the CPU temperature through the standard ACPI methods. This feature shows readings from up to eight different sensors on older ThinkPads, and up to sixteen different sensors on newer ThinkPads.h]hXMost ThinkPads include six or more separate temperature sensors but only expose the CPU temperature through the standard ACPI methods. This feature shows readings from up to eight different sensors on older ThinkPads, and up to sixteen different sensors on newer ThinkPads.}(hjT)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj')hhubh)}(h1For example, on the X40, a typical output may be:h]h1For example, on the X40, a typical output may be:}(hjb)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj')hhubj)}(hhh]j)}(h*temperatures: 42 42 45 41 36 -128 33 -128 h](j)}(h temperatures:h]h temperatures:}(hjw)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhjs)ubj)}(hhh]h)}(h42 42 45 41 36 -128 33 -128h]h42 42 45 41 36 -128 33 -128}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj)ubah}(h]h ]h"]h$]h&]uh1jhjs)ubeh}(h]h ]h"]h$]h&]uh1jhhhMhjp)ubah}(h]h ]h"]h$]h&]uh1jhj')hhhhhNubh)}(h&On the T43/p, a typical output may be:h]h&On the T43/p, a typical output may be:}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj')hhubj)}(hhh]j)}(hLtemperatures: 48 48 36 52 38 -128 31 -128 48 52 48 -128 -128 -128 -128 -128 h](j)}(h temperatures:h]h temperatures:}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhj)ubj)}(hhh]h)}(h=48 48 36 52 38 -128 31 -128 48 52 48 -128 -128 -128 -128 -128h]h=48 48 36 52 38 -128 31 -128 48 52 48 -128 -128 -128 -128 -128}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhhhMhj)ubah}(h]h ]h"]h$]h&]uh1jhj')hhhhhNubh)}(hzThe mapping of thermal sensors to physical locations varies depending on system-board model (and thus, on ThinkPad model).h]hzThe mapping of thermal sensors to physical locations varies depending on system-board model (and thus, on ThinkPad model).}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj')hhubh)}(h}https://thinkwiki.org/wiki/Thermal_Sensors is a public wiki page that tries to track down these locations for various models.h](h)}(h*https://thinkwiki.org/wiki/Thermal_Sensorsh]h*https://thinkwiki.org/wiki/Thermal_Sensors}(hj*hhhNhNubah}(h]h ]h"]h$]h&]refurij*uh1hhj)ubhS is a public wiki page that tries to track down these locations for various models.}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj')hhubh)}(h1Most (newer?) models seem to follow this pattern:h]h1Most (newer?) models seem to follow this pattern:}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj')hhubh)}(hhh](h)}(h1: CPUh]h)}(hj,*h]h1: CPU}(hj.*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj**ubah}(h]h ]h"]h$]h&]uh1hhj'*hhhhhNubh)}(h2: (depends on model)h]h)}(hjC*h]h2: (depends on model)}(hjE*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjA*ubah}(h]h ]h"]h$]h&]uh1hhj'*hhhhhNubh)}(h3: (depends on model)h]h)}(hjZ*h]h3: (depends on model)}(hj\*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjX*ubah}(h]h ]h"]h$]h&]uh1hhj'*hhhhhNubh)}(h4: GPUh]h)}(hjq*h]h4: GPU}(hjs*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjo*ubah}(h]h ]h"]h$]h&]uh1hhj'*hhhhhNubh)}(h5: Main battery: main sensorh]h)}(hj*h]h5: Main battery: main sensor}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj*ubah}(h]h ]h"]h$]h&]uh1hhj'*hhhhhNubh)}(h6: Bay battery: main sensorh]h)}(hj*h]h6: Bay battery: main sensor}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj*ubah}(h]h ]h"]h$]h&]uh1hhj'*hhhhhNubh)}(h"7: Main battery: secondary sensorh]h)}(hj*h]h"7: Main battery: secondary sensor}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj*ubah}(h]h ]h"]h$]h&]uh1hhj'*hhhhhNubh)}(h!8: Bay battery: secondary sensorh]h)}(hj*h]h!8: Bay battery: secondary sensor}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj*ubah}(h]h ]h"]h$]h&]uh1hhj'*hhhhhNubh)}(h9-15: (depends on model) h]h)}(h9-15: (depends on model)h]h9-15: (depends on model)}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj*ubah}(h]h ]h"]h$]h&]uh1hhj'*hhhhhNubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhMhj')hhubh)}(h$For the R51 (source: Thomas Gruber):h]h$For the R51 (source: Thomas Gruber):}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj')hhubh)}(hhh](h)}(h 2: Mini-PCIh]h)}(hj+h]h 2: Mini-PCI}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj+ubah}(h]h ]h"]h$]h&]uh1hhj+hhhhhNubh)}(h3: Internal HDD h]h)}(h3: Internal HDDh]h3: Internal HDD}(hj,+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj(+ubah}(h]h ]h"]h$]h&]uh1hhj+hhhhhNubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhMhj')hhubh)}(hsFor the T43, T43/p (source: Shmidoax/Thinkwiki.org) https://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_T43.2C_T43ph](h4For the T43, T43/p (source: Shmidoax/Thinkwiki.org) }(hjF+hhhNhNubh)}(h?https://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_T43.2C_T43ph]h?https://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_T43.2C_T43p}(hjN+hhhNhNubah}(h]h ]h"]h$]h&]refurijP+uh1hhjF+ubeh}(h]h ]h"]h$]h&]uh1hhhhMhj')hhubh)}(hhh](h)}(hF2: System board, left side (near PCMCIA slot), reported as HDAPS temph]h)}(hjh+h]hF2: System board, left side (near PCMCIA slot), reported as HDAPS temp}(hjj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjf+ubah}(h]h ]h"]h$]h&]uh1hhjc+hhhhhNubh)}(h3: PCMCIA sloth]h)}(hj+h]h3: PCMCIA slot}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj}+ubah}(h]h ]h"]h$]h&]uh1hhjc+hhhhhNubh)}(h!9: MCH (northbridge) to DRAM Bush]h)}(hj+h]h!9: MCH (northbridge) to DRAM Bus}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj+ubah}(h]h ]h"]h$]h&]uh1hhjc+hhhhhNubh)}(ha10: Clock-generator, mini-pci card and ICH (southbridge), under Mini-PCI card, under touchpadh]j)}(hhh]j)}(h]10: Clock-generator, mini-pci card and ICH (southbridge), under Mini-PCI card, under touchpadh](j)}(hH10: Clock-generator, mini-pci card and ICH (southbridge), under Mini-PCIh]hH10: Clock-generator, mini-pci card and ICH (southbridge), under Mini-PCI}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhj+ubj)}(hhh]h)}(hcard, under touchpadh]hcard, under touchpad}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhhhMhj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1hhjc+hhhNhNubh)}(h=11: Power regulator, underside of system board, below F2 key h]h)}(h<11: Power regulator, underside of system board, below F2 keyh]h<11: Power regulator, underside of system board, below F2 key}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj+ubah}(h]h ]h"]h$]h&]uh1hhjc+hhhhhNubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhMhj')hhubh)}(hThe A31 has a very atypical layout for the thermal sensors (source: Milos Popovic, https://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_A31)h](hSThe A31 has a very atypical layout for the thermal sensors (source: Milos Popovic, }(hj ,hhhNhNubh)}(h7https://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_A31h]h7https://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_A31}(hj,hhhNhNubah}(h]h ]h"]h$]h&]refurij,uh1hhj ,ubh)}(hj ,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj')hhubh)}(hhh](h)}(h1: CPUh]h)}(hj1,h]h1: CPU}(hj3,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj/,ubah}(h]h ]h"]h$]h&]uh1hhj,,hhhhhNubh)}(h2: Main Battery: main sensorh]h)}(hjH,h]h2: Main Battery: main sensor}(hjJ,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjF,ubah}(h]h ]h"]h$]h&]uh1hhj,,hhhhhNubh)}(h3: Power Converterh]h)}(hj_,h]h3: Power Converter}(hja,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj],ubah}(h]h ]h"]h$]h&]uh1hhj,,hhhhhNubh)}(h4: Bay Battery: main sensorh]h)}(hjv,h]h4: Bay Battery: main sensor}(hjx,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjt,ubah}(h]h ]h"]h$]h&]uh1hhj,,hhhhhNubh)}(h5: MCH (northbridge)h]h)}(hj,h]h5: MCH (northbridge)}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj,ubah}(h]h ]h"]h$]h&]uh1hhj,,hhhhhNubh)}(h6: PCMCIA/ambienth]h)}(hj,h]h6: PCMCIA/ambient}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj,ubah}(h]h ]h"]h$]h&]uh1hhj,,hhhhhNubh)}(h"7: Main Battery: secondary sensorh]h)}(hj,h]h"7: Main Battery: secondary sensor}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj,ubah}(h]h ]h"]h$]h&]uh1hhj,,hhhhhNubh)}(h#8: Bay Battery: secondary sensor h]h)}(h!8: Bay Battery: secondary sensorh]h!8: Bay Battery: secondary sensor}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj,ubah}(h]h ]h"]h$]h&]uh1hhj,,hhhhhNubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhMhj')hhubh)}(hhh](h)}(h Procfs notesh]h Procfs notes}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hhhhhMubj)}(hcReadings from sensors that are not available return -128. No commands can be written to this file. h]h)}(hbReadings from sensors that are not available return -128. No commands can be written to this file.h]hbReadings from sensors that are not available return -128. No commands can be written to this file.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj,ubah}(h]h ]h"]h$]h&]uh1jhhhMhj,hhubeh}(h]id7ah ]h"]h$] procfs notesah&]uh1hhj')hhhhhMjKubh)}(hhh](h)}(h Sysfs notesh]h Sysfs notes}(hj"-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hhhhhMubj)}(hX4Sensors that are not available return the ENXIO error. This status may change at runtime, as there are hotplug thermal sensors, like those inside the batteries and docks. thinkpad-acpi thermal sensors are reported through the hwmon subsystem, and follow all of the hwmon guidelines at Documentation/hwmon. h](h)}(hSensors that are not available return the ENXIO error. This status may change at runtime, as there are hotplug thermal sensors, like those inside the batteries and docks.h]hSensors that are not available return the ENXIO error. This status may change at runtime, as there are hotplug thermal sensors, like those inside the batteries and docks.}(hj4-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj0-ubh)}(hthinkpad-acpi thermal sensors are reported through the hwmon subsystem, and follow all of the hwmon guidelines at Documentation/hwmon.h]hthinkpad-acpi thermal sensors are reported through the hwmon subsystem, and follow all of the hwmon guidelines at Documentation/hwmon.}(hjB-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj0-ubeh}(h]h ]h"]h$]h&]uh1jhhhMhj-hhubeh}(h]id8ah ]h"]h$] sysfs notesah&]uh1hhj')hhhhhMjKubeh}(h]temperature-sensorsah ]h"]temperature sensorsah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(h/EXPERIMENTAL: Embedded controller register dumph]h/EXPERIMENTAL: Embedded controller register dump}(hji-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjf-hhhhhMubh)}(hThis feature is not included in the thinkpad driver anymore. Instead the EC can be accessed through /sys/kernel/debug/ec with a userspace tool which can be found here: ftp://ftp.suse.com/pub/people/trenn/sources/ech](hThis feature is not included in the thinkpad driver anymore. Instead the EC can be accessed through /sys/kernel/debug/ec with a userspace tool which can be found here: }(hjw-hhhNhNubh)}(h.ftp://ftp.suse.com/pub/people/trenn/sources/ech]h.ftp://ftp.suse.com/pub/people/trenn/sources/ec}(hj-hhhNhNubah}(h]h ]h"]h$]h&]refurij-uh1hhjw-ubeh}(h]h ]h"]h$]h&]uh1hhhhMhjf-hhubh)}(hdUse it to determine the register holding the fan speed on some models. To do that, do the following:h]hdUse it to determine the register holding the fan speed on some models. To do that, do the following:}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjf-hhubj)}(hv- make sure the battery is fully charged - make sure the fan is running - use above mentioned tool to read out the EC h]h)}(hhh](h)}(h&make sure the battery is fully chargedh]h)}(hj-h]h&make sure the battery is fully charged}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj-ubah}(h]h ]h"]h$]h&]uh1hhj-ubh)}(hmake sure the fan is runningh]h)}(hj-h]hmake sure the fan is running}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj-ubah}(h]h ]h"]h$]h&]uh1hhj-ubh)}(h,use above mentioned tool to read out the EC h]h)}(h+use above mentioned tool to read out the ECh]h+use above mentioned tool to read out the EC}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj-ubah}(h]h ]h"]h$]h&]uh1hhj-ubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhMhj-ubah}(h]h ]h"]h$]h&]uh1jhhhMhjf-hhubh)}(hOften fan and temperature values vary between readings. Since temperatures don't change vary fast, you can take several quick dumps to eliminate them.h]hOften fan and temperature values vary between readings. Since temperatures don’t change vary fast, you can take several quick dumps to eliminate them.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjf-hhubh)}(hXYou can use a similar method to figure out the meaning of other embedded controller registers - e.g. make sure nothing else changes except the charging or discharging battery to determine which registers contain the current battery capacity, etc. If you experiment with this, do send me your results (including some complete dumps with a description of the conditions when they were taken.)h]hXYou can use a similar method to figure out the meaning of other embedded controller registers - e.g. make sure nothing else changes except the charging or discharging battery to determine which registers contain the current battery capacity, etc. If you experiment with this, do send me your results (including some complete dumps with a description of the conditions when they were taken.)}(hj .hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjf-hhubeh}(h].experimental-embedded-controller-register-dumpah ]h"]/experimental: embedded controller register dumpah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hLCD brightness controlh]hLCD brightness control}(hj".hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hhhhhMubh)}(h!procfs: /proc/acpi/ibm/brightnessh]h!procfs: /proc/acpi/ibm/brightness}(hj0.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(h(sysfs backlight device "thinkpad_screen"h]h,sysfs backlight device “thinkpad_screen”}(hj>.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(h|This feature allows software control of the LCD brightness on ThinkPad models which don't have a hardware brightness slider.h]h~This feature allows software control of the LCD brightness on ThinkPad models which don’t have a hardware brightness slider.}(hjL.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(hIt has some limitations: the LCD backlight cannot be actually turned on or off by this interface, it just controls the backlight brightness level.h]hIt has some limitations: the LCD backlight cannot be actually turned on or off by this interface, it just controls the backlight brightness level.}(hjZ.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(hX#On IBM (and some of the earlier Lenovo) ThinkPads, the backlight control has eight brightness levels, ranging from 0 to 7. Some of the levels may not be distinct. Later Lenovo models that implement the ACPI display backlight brightness control methods have 16 levels, ranging from 0 to 15.h]hX#On IBM (and some of the earlier Lenovo) ThinkPads, the backlight control has eight brightness levels, ranging from 0 to 7. Some of the levels may not be distinct. Later Lenovo models that implement the ACPI display backlight brightness control methods have 16 levels, ranging from 0 to 15.}(hjh.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(hXFor IBM ThinkPads, there are two interfaces to the firmware for direct brightness control, EC and UCMS (or CMOS). To select which one should be used, use the brightness_mode module parameter: brightness_mode=1 selects EC mode, brightness_mode=2 selects UCMS mode, brightness_mode=3 selects EC mode with NVRAM backing (so that brightness changes are remembered across shutdown/reboot).h]hXFor IBM ThinkPads, there are two interfaces to the firmware for direct brightness control, EC and UCMS (or CMOS). To select which one should be used, use the brightness_mode module parameter: brightness_mode=1 selects EC mode, brightness_mode=2 selects UCMS mode, brightness_mode=3 selects EC mode with NVRAM backing (so that brightness changes are remembered across shutdown/reboot).}(hjv.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(hThe driver tries to select which interface to use from a table of defaults for each ThinkPad model. If it makes a wrong choice, please report this as a bug, so that we can fix it.h]hThe driver tries to select which interface to use from a table of defaults for each ThinkPad model. If it makes a wrong choice, please report this as a bug, so that we can fix it.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj.hhubh)}(h7Lenovo ThinkPads only support brightness_mode=2 (UCMS).h]h7Lenovo ThinkPads only support brightness_mode=2 (UCMS).}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(hX>When display backlight brightness controls are available through the standard ACPI interface, it is best to use it instead of this direct ThinkPad-specific interface. The driver will disable its native backlight brightness control interface if it detects that the standard ACPI interface is available in the ThinkPad.h]hX>When display backlight brightness controls are available through the standard ACPI interface, it is best to use it instead of this direct ThinkPad-specific interface. The driver will disable its native backlight brightness control interface if it detects that the standard ACPI interface is available in the ThinkPad.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(hIf you want to use the thinkpad-acpi backlight brightness control instead of the generic ACPI video backlight brightness control for some reason, you should use the acpi_backlight=vendor kernel parameter.h]hIf you want to use the thinkpad-acpi backlight brightness control instead of the generic ACPI video backlight brightness control for some reason, you should use the acpi_backlight=vendor kernel parameter.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(hX*The brightness_enable module parameter can be used to control whether the LCD brightness control feature will be enabled when available. brightness_enable=0 forces it to be disabled. brightness_enable=1 forces it to be enabled when available, even if the standard ACPI interface is also available.h]hX*The brightness_enable module parameter can be used to control whether the LCD brightness control feature will be enabled when available. brightness_enable=0 forces it to be disabled. brightness_enable=1 forces it to be enabled when available, even if the standard ACPI interface is also available.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.hhubh)}(hhh](h)}(h Procfs notesh]h Procfs notes}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hhhhhM!ubh)}(hThe available commands are::h]hThe available commands are:}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM#hj.hhubj)}(hyecho up >/proc/acpi/ibm/brightness echo down >/proc/acpi/ibm/brightness echo 'level ' >/proc/acpi/ibm/brightnessh]hyecho up >/proc/acpi/ibm/brightness echo down >/proc/acpi/ibm/brightness echo 'level ' >/proc/acpi/ibm/brightness}hj.sbah}(h]h ]h"]h$]h&]jjuh1jhhhM%hj.hhubeh}(h]id9ah ]h"]h$] procfs notesah&]uh1hhj.hhhhhM!jKubh)}(hhh](h)}(h Sysfs notesh]h Sysfs notes}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hhhhhM*ubh)}(hhThe interface is implemented through the backlight sysfs class, which is poorly documented at this time.h]hhThe interface is implemented through the backlight sysfs class, which is poorly documented at this time.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM,hj.hhubh)}(hsLocate the thinkpad_screen device under /sys/class/backlight, and inside it there will be the following attributes:h]hsLocate the thinkpad_screen device under /sys/class/backlight, and inside it there will be the following attributes:}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM/hj.hhubj)}(hXZmax_brightness: Reads the maximum brightness the hardware can be set to. The minimum is always zero. actual_brightness: Reads what brightness the screen is set to at this instant. brightness: Writes request the driver to change brightness to the given value. Reads will tell you what brightness the driver is trying to set the display to when "power" is set to zero and the display has not been dimmed by a kernel power management event. power: power management mode, where 0 is "display on", and 1 to 3 will dim the display backlight to brightness level 0 because thinkpad-acpi cannot really turn the backlight off. Kernel power management events can temporarily increase the current power management level, i.e. they can dim the display. h]j)}(hhh](j)}(hemax_brightness: Reads the maximum brightness the hardware can be set to. The minimum is always zero. h](j)}(hmax_brightness:h]hmax_brightness:}(hj7/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM4hj3/ubj)}(hhh]h)}(hTReads the maximum brightness the hardware can be set to. The minimum is always zero.h]hTReads the maximum brightness the hardware can be set to. The minimum is always zero.}(hjH/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM3hjE/ubah}(h]h ]h"]h$]h&]uh1jhj3/ubeh}(h]h ]h"]h$]h&]uh1jhhhM4hj0/ubj)}(hOactual_brightness: Reads what brightness the screen is set to at this instant. h](j)}(hactual_brightness:h]hactual_brightness:}(hjf/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM7hjb/ubj)}(hhh]h)}(h;Reads what brightness the screen is set to at this instant.h]h;Reads what brightness the screen is set to at this instant.}(hjw/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM7hjt/ubah}(h]h ]h"]h$]h&]uh1jhjb/ubeh}(h]h ]h"]h$]h&]uh1jhhhM7hj0/ubj)}(hXbrightness: Writes request the driver to change brightness to the given value. Reads will tell you what brightness the driver is trying to set the display to when "power" is set to zero and the display has not been dimmed by a kernel power management event. h](j)}(h brightness:h]h brightness:}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM>hj/ubj)}(hhh]h)}(hWrites request the driver to change brightness to the given value. Reads will tell you what brightness the driver is trying to set the display to when "power" is set to zero and the display has not been dimmed by a kernel power management event.h]hWrites request the driver to change brightness to the given value. Reads will tell you what brightness the driver is trying to set the display to when “power” is set to zero and the display has not been dimmed by a kernel power management event.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM:hj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhhhM>hj0/ubj)}(hX0power: power management mode, where 0 is "display on", and 1 to 3 will dim the display backlight to brightness level 0 because thinkpad-acpi cannot really turn the backlight off. Kernel power management events can temporarily increase the current power management level, i.e. they can dim the display. h](j)}(hpower:h]hpower:}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMGhj/ubj)}(hhh]h)}(hX'power management mode, where 0 is "display on", and 1 to 3 will dim the display backlight to brightness level 0 because thinkpad-acpi cannot really turn the backlight off. Kernel power management events can temporarily increase the current power management level, i.e. they can dim the display.h]hX+power management mode, where 0 is “display on”, and 1 to 3 will dim the display backlight to brightness level 0 because thinkpad-acpi cannot really turn the backlight off. Kernel power management events can temporarily increase the current power management level, i.e. they can dim the display.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMAhj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhhhMGhj0/ubeh}(h]h ]h"]h$]h&]uh1jhj,/ubah}(h]h ]h"]h$]h&]uh1jhhhM2hj.hhubh)}(hWARNING:h]hWARNING:}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMIhj.hhubj)}(hXWhatever you do, do NOT ever call thinkpad-acpi backlight-level change interface and the ACPI-based backlight level change interface (available on newer BIOSes, and driven by the Linux ACPI video driver) at the same time. The two will interact in bad ways, do funny things, and maybe reduce the life of the backlight lamps by needlessly kicking its level up and down at every change. h]h)}(hXWhatever you do, do NOT ever call thinkpad-acpi backlight-level change interface and the ACPI-based backlight level change interface (available on newer BIOSes, and driven by the Linux ACPI video driver) at the same time. The two will interact in bad ways, do funny things, and maybe reduce the life of the backlight lamps by needlessly kicking its level up and down at every change.h]hXWhatever you do, do NOT ever call thinkpad-acpi backlight-level change interface and the ACPI-based backlight level change interface (available on newer BIOSes, and driven by the Linux ACPI video driver) at the same time. The two will interact in bad ways, do funny things, and maybe reduce the life of the backlight lamps by needlessly kicking its level up and down at every change.}(hj 0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMKhj 0ubah}(h]h ]h"]h$]h&]uh1jhhhMKhj.hhubeh}(h]id10ah ]h"]h$] sysfs notesah&]uh1hhj.hhhhhM*jKubeh}(h]lcd-brightness-controlah ]h"]lcd brightness controlah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(h&Volume control (Console Audio control)h]h&Volume control (Console Audio control)}(hj40hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj10hhhhhMTubh)}(hprocfs: /proc/acpi/ibm/volumeh]hprocfs: /proc/acpi/ibm/volume}(hjB0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMVhj10hhubh)}(h@ALSA: "ThinkPad Console Audio Control", default ID: "ThinkPadEC"h]hHALSA: “ThinkPad Console Audio Control”, default ID: “ThinkPadEC”}(hjP0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMXhj10hhubh)}(hNOTE: by default, the volume control interface operates in read-only mode, as it is supposed to be used for on-screen-display purposes. The read/write mode can be enabled through the use of the "volume_control=1" module parameter.h]hNOTE: by default, the volume control interface operates in read-only mode, as it is supposed to be used for on-screen-display purposes. The read/write mode can be enabled through the use of the “volume_control=1” module parameter.}(hj^0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMZhj10hhubh)}(hX\NOTE: distros are urged to not enable volume_control by default, this should be done by the local admin only. The ThinkPad UI is for the console audio control to be done through the volume keys only, and for the desktop environment to just provide on-screen-display feedback. Software volume control should be done only in the main AC97/HDA mixer.h]hX\NOTE: distros are urged to not enable volume_control by default, this should be done by the local admin only. The ThinkPad UI is for the console audio control to be done through the volume keys only, and for the desktop environment to just provide on-screen-display feedback. Software volume control should be done only in the main AC97/HDA mixer.}(hjl0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM_hj10hhubh)}(hhh](h)}(h(About the ThinkPad Console Audio controlh]h(About the ThinkPad Console Audio control}(hj}0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjz0hhhhhMhubh)}(hThinkPads have a built-in amplifier and muting circuit that drives the console headphone and speakers. This circuit is after the main AC97 or HDA mixer in the audio path, and under exclusive control of the firmware.h]hThinkPads have a built-in amplifier and muting circuit that drives the console headphone and speakers. This circuit is after the main AC97 or HDA mixer in the audio path, and under exclusive control of the firmware.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMjhjz0hhubh)}(hqThinkPads have three special hotkeys to interact with the console audio control: volume up, volume down and mute.h]hqThinkPads have three special hotkeys to interact with the console audio control: volume up, volume down and mute.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMohjz0hhubh)}(hoIt is worth noting that the normal way the mute function works (on ThinkPads that do not have a "mute LED") is:h]hsIt is worth noting that the normal way the mute function works (on ThinkPads that do not have a “mute LED”) is:}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMrhjz0hhubhenumerated_list)}(hhh](h)}(hxPress mute to mute. It will *always* mute, you can press it as many times as you want, and the sound will remain mute. h]h)}(hwPress mute to mute. It will *always* mute, you can press it as many times as you want, and the sound will remain mute.h](hPress mute to mute. It will }(hj0hhhNhNubj)}(h*always*h]halways}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubhR mute, you can press it as many times as you want, and the sound will remain mute.}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMuhj0ubah}(h]h ]h"]h$]h&]uh1hhj0hhhhhNubh)}(hgPress either volume key to unmute the ThinkPad (it will _not_ change the volume, it will just unmute). h]h)}(hfPress either volume key to unmute the ThinkPad (it will _not_ change the volume, it will just unmute).h]hfPress either volume key to unmute the ThinkPad (it will _not_ change the volume, it will just unmute).}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMxhj0ubah}(h]h ]h"]h$]h&]uh1hhj0hhhhhNubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix.uh1j0hjz0hhhhhMuubh)}(hThis is a very superior design when compared to the cheap software-only mute-toggle solution found on normal consumer laptops: you can be absolutely sure the ThinkPad will not make noise if you press the mute button, no matter the previous state.h]hThis is a very superior design when compared to the cheap software-only mute-toggle solution found on normal consumer laptops: you can be absolutely sure the ThinkPad will not make noise if you press the mute button, no matter the previous state.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM{hjz0hhubh)}(hX]The IBM ThinkPads, and the earlier Lenovo ThinkPads have variable-gain amplifiers driving the speakers and headphone output, and the firmware also handles volume control for the headphone and speakers on these ThinkPads without any help from the operating system (this volume control stage exists after the main AC97 or HDA mixer in the audio path).h]hX]The IBM ThinkPads, and the earlier Lenovo ThinkPads have variable-gain amplifiers driving the speakers and headphone output, and the firmware also handles volume control for the headphone and speakers on these ThinkPads without any help from the operating system (this volume control stage exists after the main AC97 or HDA mixer in the audio path).}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjz0hhubh)}(hXeThe newer Lenovo models only have firmware mute control, and depend on the main HDA mixer to do volume control (which is done by the operating system). In this case, the volume keys are filtered out for unmute key press (there are some firmware bugs in this area) and delivered as normal key presses to the operating system (thinkpad-acpi is not involved).h]hXeThe newer Lenovo models only have firmware mute control, and depend on the main HDA mixer to do volume control (which is done by the operating system). In this case, the volume keys are filtered out for unmute key press (there are some firmware bugs in this area) and delivered as normal key presses to the operating system (thinkpad-acpi is not involved).}(hj#1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjz0hhubeh}(h](about-the-thinkpad-console-audio-controlah ]h"](about the thinkpad console audio controlah$]h&]uh1hhj10hhhhhMhubh)}(hhh](h)}(h The ThinkPad-ACPI volume controlh]h The ThinkPad-ACPI volume control}(hj<1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj91hhhhhMubh)}(hSThe preferred way to interact with the Console Audio control is the ALSA interface.h]hSThe preferred way to interact with the Console Audio control is the ALSA interface.}(hjJ1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj91hhubh)}(hThe legacy procfs interface allows one to read the current state, and if volume control is enabled, accepts the following commands::h]hThe legacy procfs interface allows one to read the current state, and if volume control is enabled, accepts the following commands:}(hjX1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj91hhubj)}(hecho up >/proc/acpi/ibm/volume echo down >/proc/acpi/ibm/volume echo mute >/proc/acpi/ibm/volume echo unmute >/proc/acpi/ibm/volume echo 'level ' >/proc/acpi/ibm/volumeh]hecho up >/proc/acpi/ibm/volume echo down >/proc/acpi/ibm/volume echo mute >/proc/acpi/ibm/volume echo unmute >/proc/acpi/ibm/volume echo 'level ' >/proc/acpi/ibm/volume}hjf1sbah}(h]h ]h"]h$]h&]jjuh1jhhhMhj91hhubh)}(hThe number range is 0 to 14 although not all of them may be distinct. To unmute the volume after the mute command, use either the up or down command (the level command will not unmute the volume), or the unmute command.h]hThe number range is 0 to 14 although not all of them may be distinct. To unmute the volume after the mute command, use either the up or down command (the level command will not unmute the volume), or the unmute command.}(hjt1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj91hhubh)}(hYou can use the volume_capabilities parameter to tell the driver whether your thinkpad has volume control or mute-only control: volume_capabilities=1 for mixers with mute and volume control, volume_capabilities=2 for mixers with only mute control.h]hYou can use the volume_capabilities parameter to tell the driver whether your thinkpad has volume control or mute-only control: volume_capabilities=1 for mixers with mute and volume control, volume_capabilities=2 for mixers with only mute control.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj91hhubh)}(hIf the driver misdetects the capabilities for your ThinkPad model, please report this to ibm-acpi-devel@lists.sourceforge.net, so that we can update the driver.h](hYIf the driver misdetects the capabilities for your ThinkPad model, please report this to }(hj1hhhNhNubh)}(h$ibm-acpi-devel@lists.sourceforge.neth]h$ibm-acpi-devel@lists.sourceforge.net}(hj1hhhNhNubah}(h]h ]h"]h$]h&]refuri+mailto:ibm-acpi-devel@lists.sourceforge.netuh1hhj1ubh#, so that we can update the driver.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj91hhubh)}(hXThere are two strategies for volume control. To select which one should be used, use the volume_mode module parameter: volume_mode=1 selects EC mode, and volume_mode=3 selects EC mode with NVRAM backing (so that volume/mute changes are remembered across shutdown/reboot).h]hXThere are two strategies for volume control. To select which one should be used, use the volume_mode module parameter: volume_mode=1 selects EC mode, and volume_mode=3 selects EC mode with NVRAM backing (so that volume/mute changes are remembered across shutdown/reboot).}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj91hhubh)}(hThe driver will operate in volume_mode=3 by default. If that does not work well on your ThinkPad model, please report this to ibm-acpi-devel@lists.sourceforge.net.h](h~The driver will operate in volume_mode=3 by default. If that does not work well on your ThinkPad model, please report this to }(hj1hhhNhNubh)}(h$ibm-acpi-devel@lists.sourceforge.neth]h$ibm-acpi-devel@lists.sourceforge.net}(hj1hhhNhNubah}(h]h ]h"]h$]h&]refuri+mailto:ibm-acpi-devel@lists.sourceforge.netuh1hhj1ubh.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj91hhubh)}(hThe driver supports the standard ALSA module parameters. If the ALSA mixer is disabled, the driver will disable all volume functionality.h]hThe driver supports the standard ALSA module parameters. If the ALSA mixer is disabled, the driver will disable all volume functionality.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj91hhubeh}(h] the-thinkpad-acpi-volume-controlah ]h"] the thinkpad-acpi volume controlah$]h&]uh1hhj10hhhhhMubeh}(h]$volume-control-console-audio-controlah ]h"]&volume control (console audio control)ah$]h&]uh1hhhhhhhhMTubh)}(hhh](h)}(h9Fan control and monitoring: fan speed, fan enable/disableh]h9Fan control and monitoring: fan speed, fan enable/disable}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hhhhhMubh)}(hprocfs: /proc/acpi/ibm/fanh]hprocfs: /proc/acpi/ibm/fan}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(hUsysfs device attributes: (hwmon "thinkpad") fan1_input, pwm1, pwm1_enable, fan2_inputh]hYsysfs device attributes: (hwmon “thinkpad”) fan1_input, pwm1, pwm1_enable, fan2_input}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(h+sysfs hwmon driver attributes: fan_watchdogh]h+sysfs hwmon driver attributes: fan_watchdog}(hj-2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubj)}(hhh]j)}(hNOTE NOTE NOTE: fan control operations are disabled by default for safety reasons. To enable them, the module parameter "fan_control=1" must be given to thinkpad-acpi. h](j)}(hNOTE NOTE NOTE:h]hNOTE NOTE NOTE:}(hjB2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhj>2ubj)}(hhh]h)}(hfan control operations are disabled by default for safety reasons. To enable them, the module parameter "fan_control=1" must be given to thinkpad-acpi.h]hfan control operations are disabled by default for safety reasons. To enable them, the module parameter “fan_control=1” must be given to thinkpad-acpi.}(hjS2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjP2ubah}(h]h ]h"]h$]h&]uh1jhj>2ubeh}(h]h ]h"]h$]h&]uh1jhhhMhj;2ubah}(h]h ]h"]h$]h&]uh1jhj2hhhhhNubh)}(hX,This feature attempts to show the current fan speed, control mode and other fan data that might be available. The speed is read directly from the hardware registers of the embedded controller. This is known to work on later R, T, X and Z series ThinkPads but may show a bogus value on other models.h]hX,This feature attempts to show the current fan speed, control mode and other fan data that might be available. The speed is read directly from the hardware registers of the embedded controller. This is known to work on later R, T, X and Z series ThinkPads but may show a bogus value on other models.}(hjs2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(hySome Lenovo ThinkPads support a secondary fan. This fan cannot be controlled separately, it shares the main fan control.h]hySome Lenovo ThinkPads support a secondary fan. This fan cannot be controlled separately, it shares the main fan control.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(hhh](h)}(h Fan levelsh]h Fan levels}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hhhhhMubh)}(hXMost ThinkPad fans work in "levels" at the firmware interface. Level 0 stops the fan. The higher the level, the higher the fan speed, although adjacent levels often map to the same fan speed. 7 is the highest level, where the fan reaches the maximum recommended speed.h]hXMost ThinkPad fans work in “levels” at the firmware interface. Level 0 stops the fan. The higher the level, the higher the fan speed, although adjacent levels often map to the same fan speed. 7 is the highest level, where the fan reaches the maximum recommended speed.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(hLevel "auto" means the EC changes the fan level according to some internal algorithm, usually based on readings from the thermal sensors.h]hLevel “auto” means the EC changes the fan level according to some internal algorithm, usually based on readings from the thermal sensors.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(hThere is also a "full-speed" level, also known as "disengaged" level. In this level, the EC disables the speed-locked closed-loop fan control, and drives the fan as fast as it can go, which might exceed hardware limits, so use this level with caution.h]hXThere is also a “full-speed” level, also known as “disengaged” level. In this level, the EC disables the speed-locked closed-loop fan control, and drives the fan as fast as it can go, which might exceed hardware limits, so use this level with caution.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(hXMThe fan usually ramps up or down slowly from one speed to another, and it is normal for the EC to take several seconds to react to fan commands. The full-speed level may take up to two minutes to ramp up to maximum speed, and in some ThinkPads, the tachometer readings go stale while the EC is transitioning to the full-speed level.h]hXMThe fan usually ramps up or down slowly from one speed to another, and it is normal for the EC to take several seconds to react to fan commands. The full-speed level may take up to two minutes to ramp up to maximum speed, and in some ThinkPads, the tachometer readings go stale while the EC is transitioning to the full-speed level.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(hWARNING WARNING WARNING: do not leave the fan disabled unless you are monitoring all of the temperature sensor readings and you are ready to enable it if necessary to avoid overheating.h]hWARNING WARNING WARNING: do not leave the fan disabled unless you are monitoring all of the temperature sensor readings and you are ready to enable it if necessary to avoid overheating.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(hAn enabled fan in level "auto" may stop spinning if the EC decides the ThinkPad is cool enough and doesn't need the extra airflow. This is normal, and the EC will spin the fan up if the various thermal readings rise too much.h]hAn enabled fan in level “auto” may stop spinning if the EC decides the ThinkPad is cool enough and doesn’t need the extra airflow. This is normal, and the EC will spin the fan up if the various thermal readings rise too much.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(hXiOn the X40, this seems to depend on the CPU and HDD temperatures. Specifically, the fan is turned on when either the CPU temperature climbs to 56 degrees or the HDD temperature climbs to 46 degrees. The fan is turned off when the CPU temperature drops to 49 degrees and the HDD temperature drops to 41 degrees. These thresholds cannot currently be controlled.h]hXiOn the X40, this seems to depend on the CPU and HDD temperatures. Specifically, the fan is turned on when either the CPU temperature climbs to 56 degrees or the HDD temperature climbs to 46 degrees. The fan is turned off when the CPU temperature drops to 49 degrees and the HDD temperature drops to 41 degrees. These thresholds cannot currently be controlled.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(hThe ThinkPad's ACPI DSDT code will reprogram the fan on its own when certain conditions are met. It will override any fan programming done through thinkpad-acpi.h]hThe ThinkPad’s ACPI DSDT code will reprogram the fan on its own when certain conditions are met. It will override any fan programming done through thinkpad-acpi.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(hXThe thinkpad-acpi kernel driver can be programmed to revert the fan level to a safe setting if userspace does not issue one of the procfs fan commands: "enable", "disable", "level" or "watchdog", or if there are no writes to pwm1_enable (or to pwm1 *if and only if* pwm1_enable is set to 1, manual mode) within a configurable amount of time of up to 120 seconds. This functionality is called fan safety watchdog.h](hX The thinkpad-acpi kernel driver can be programmed to revert the fan level to a safe setting if userspace does not issue one of the procfs fan commands: “enable”, “disable”, “level” or “watchdog”, or if there are no writes to pwm1_enable (or to pwm1 }(hj3hhhNhNubj)}(h*if and only if*h]hif and only if}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubh pwm1_enable is set to 1, manual mode) within a configurable amount of time of up to 120 seconds. This functionality is called fan safety watchdog.}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubh)}(hXNote that the watchdog timer stops after it enables the fan. It will be rearmed again automatically (using the same interval) when one of the above mentioned fan commands is received. The fan watchdog is, therefore, not suitable to protect against fan mode changes made through means other than the "enable", "disable", and "level" procfs fan commands, or the hwmon fan control sysfs interface.h]hXNote that the watchdog timer stops after it enables the fan. It will be rearmed again automatically (using the same interval) when one of the above mentioned fan commands is received. The fan watchdog is, therefore, not suitable to protect against fan mode changes made through means other than the “enable”, “disable”, and “level” procfs fan commands, or the hwmon fan control sysfs interface.}(hj03hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj2hhubeh}(h] fan-levelsah ]h"] fan levelsah$]h&]uh1hhj2hhhhhMubh)}(hhh](h)}(h Procfs notesh]h Procfs notes}(hjI3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjF3hhhhhM ubh)}(h@The fan may be enabled or disabled with the following commands::h]h?The fan may be enabled or disabled with the following commands:}(hjW3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjF3hhubj)}(hAecho enable >/proc/acpi/ibm/fan echo disable >/proc/acpi/ibm/fanh]hAecho enable >/proc/acpi/ibm/fan echo disable >/proc/acpi/ibm/fan}hje3sbah}(h]h ]h"]h$]h&]jjuh1jhhhM hjF3hhubh)}(hPlacing a fan on level 0 is the same as disabling it. Enabling a fan will try to place it in a safe level if it is too slow or disabled.h]hPlacing a fan on level 0 is the same as disabling it. Enabling a fan will try to place it in a safe level if it is too slow or disabled.}(hjs3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjF3hhubh)}(h2The fan level can be controlled with the command::h]h1The fan level can be controlled with the command:}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjF3hhubj)}(h)echo 'level ' > /proc/acpi/ibm/fanh]h)echo 'level ' > /proc/acpi/ibm/fan}hj3sbah}(h]h ]h"]h$]h&]jjuh1jhhhMhjF3hhubh)}(hX#Where is an integer from 0 to 7, or one of the words "auto" or "full-speed" (without the quotes). Not all ThinkPads support the "auto" and "full-speed" levels. The driver accepts "disengaged" as an alias for "full-speed", and reports it as "disengaged" for backwards compatibility.h]hX?Where is an integer from 0 to 7, or one of the words “auto” or “full-speed” (without the quotes). Not all ThinkPads support the “auto” and “full-speed” levels. The driver accepts “disengaged” as an alias for “full-speed”, and reports it as “disengaged” for backwards compatibility.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjF3hhubh)}(hOn the X31 and X40 (and ONLY on those models), the fan speed can be controlled to a certain degree. Once the fan is running, it can be forced to run faster or slower with the following command::h]hOn the X31 and X40 (and ONLY on those models), the fan speed can be controlled to a certain degree. Once the fan is running, it can be forced to run faster or slower with the following command:}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjF3hhubj)}(h)echo 'speed ' > /proc/acpi/ibm/fanh]h)echo 'speed ' > /proc/acpi/ibm/fan}hj3sbah}(h]h ]h"]h$]h&]jjuh1jhhhM!hjF3hhubh)}(hX[The sustainable range of fan speeds on the X40 appears to be from about 3700 to about 7350. Values outside this range either do not have any effect or the fan speed eventually settles somewhere in that range. The fan cannot be stopped or started with this command. This functionality is incomplete, and not available through the sysfs interface.h]hX[The sustainable range of fan speeds on the X40 appears to be from about 3700 to about 7350. Values outside this range either do not have any effect or the fan speed eventually settles somewhere in that range. The fan cannot be stopped or started with this command. This functionality is incomplete, and not available through the sysfs interface.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM#hjF3hhubh)}(h' > /proc/acpi/ibm/fanh]h:echo 'watchdog ' > /proc/acpi/ibm/fan}hj3sbah}(h]h ]h"]h$]h&]jjuh1jhhhM+hjF3hhubh)}(h;If you want to disable the watchdog, use 0 as the interval.h]h;If you want to disable the watchdog, use 0 as the interval.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM-hjF3hhubeh}(h]id11ah ]h"]h$] procfs notesah&]uh1hhj2hhhhhM jKubh)}(hhh](h)}(h Sysfs notesh]h Sysfs notes}(hj 4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hhhhhM0ubh)}(h{The sysfs interface follows the hwmon subsystem guidelines for the most part, and the exception is the fan safety watchdog.h]h{The sysfs interface follows the hwmon subsystem guidelines for the most part, and the exception is the fan safety watchdog.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM2hj4hhubh)}(hX-Writes to any of the sysfs attributes may return the EINVAL error if that operation is not supported in a given ThinkPad or if the parameter is out-of-bounds, and EPERM if it is forbidden. They may also return EINTR (interrupted system call), and EIO (I/O error while trying to talk to the firmware).h]hX-Writes to any of the sysfs attributes may return the EINVAL error if that operation is not supported in a given ThinkPad or if the parameter is out-of-bounds, and EPERM if it is forbidden. They may also return EINTR (interrupted system call), and EIO (I/O error while trying to talk to the firmware).}(hj&4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM5hj4hhubh)}(h9Features not yet implemented by the driver return ENOSYS.h]h9Features not yet implemented by the driver return ENOSYS.}(hj44hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM;hj4hhubj)}(hhh](j)}(hXhwmon device attribute pwm1_enable: - 0: PWM offline (fan is set to full-speed mode) - 1: Manual PWM control (use pwm1 to set fan level) - 2: Hardware PWM control (EC "auto" mode) - 3: reserved (Software PWM control, not implemented yet) Modes 0 and 2 are not supported by all ThinkPads, and the driver is not always able to detect this. If it does know a mode is unsupported, it will return -EINVAL. h](j)}(h#hwmon device attribute pwm1_enable:h]h#hwmon device attribute pwm1_enable:}(hjI4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMEhjE4ubj)}(hhh](h)}(hhh](h)}(h.0: PWM offline (fan is set to full-speed mode)h]h)}(hj_4h]h.0: PWM offline (fan is set to full-speed mode)}(hja4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM>hj]4ubah}(h]h ]h"]h$]h&]uh1hhjZ4ubh)}(h11: Manual PWM control (use pwm1 to set fan level)h]h)}(hjv4h]h11: Manual PWM control (use pwm1 to set fan level)}(hjx4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM?hjt4ubah}(h]h ]h"]h$]h&]uh1hhjZ4ubh)}(h(2: Hardware PWM control (EC "auto" mode)h]h)}(hj4h]h,2: Hardware PWM control (EC “auto” mode)}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM@hj4ubah}(h]h ]h"]h$]h&]uh1hhjZ4ubh)}(h83: reserved (Software PWM control, not implemented yet) h]h)}(h73: reserved (Software PWM control, not implemented yet)h]h73: reserved (Software PWM control, not implemented yet)}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMAhj4ubah}(h]h ]h"]h$]h&]uh1hhjZ4ubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhM>hjW4ubh)}(hModes 0 and 2 are not supported by all ThinkPads, and the driver is not always able to detect this. If it does know a mode is unsupported, it will return -EINVAL.h]hModes 0 and 2 are not supported by all ThinkPads, and the driver is not always able to detect this. If it does know a mode is unsupported, it will return -EINVAL.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMChjW4ubeh}(h]h ]h"]h$]h&]uh1jhjE4ubeh}(h]h ]h"]h$]h&]uh1jhhhMEhjB4ubj)}(hXhwmon device attribute pwm1: Fan level, scaled from the firmware values of 0-7 to the hwmon scale of 0-255. 0 means fan stopped, 255 means highest normal speed (level 7). This attribute only commands the fan if pmw1_enable is set to 1 (manual PWM control). h](j)}(hhwmon device attribute pwm1:h]hhwmon device attribute pwm1:}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMMhj4ubj)}(hhh](h)}(hFan level, scaled from the firmware values of 0-7 to the hwmon scale of 0-255. 0 means fan stopped, 255 means highest normal speed (level 7).h]hFan level, scaled from the firmware values of 0-7 to the hwmon scale of 0-255. 0 means fan stopped, 255 means highest normal speed (level 7).}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMHhj4ubh)}(hUThis attribute only commands the fan if pmw1_enable is set to 1 (manual PWM control).h]hUThis attribute only commands the fan if pmw1_enable is set to 1 (manual PWM control).}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMLhj4ubeh}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhhhMMhjB4hhubj)}(hhwmon device attribute fan1_input: Fan tachometer reading, in RPM. May go stale on certain ThinkPads while the EC transitions the PWM to offline mode, which can take up to two minutes. May return rubbish on older ThinkPads. h](j)}(h"hwmon device attribute fan1_input:h]h"hwmon device attribute fan1_input:}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMShj5ubj)}(hhh]h)}(hFan tachometer reading, in RPM. May go stale on certain ThinkPads while the EC transitions the PWM to offline mode, which can take up to two minutes. May return rubbish on older ThinkPads.h]hFan tachometer reading, in RPM. May go stale on certain ThinkPads while the EC transitions the PWM to offline mode, which can take up to two minutes. May return rubbish on older ThinkPads.}(hj,5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMPhj)5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhhhMShjB4hhubj)}(hhwmon device attribute fan2_input: Fan tachometer reading, in RPM, for the secondary fan. Available only on some ThinkPads. If the secondary fan is not installed, will always read 0. h](j)}(h"hwmon device attribute fan2_input:h]h"hwmon device attribute fan2_input:}(hjJ5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMXhjF5ubj)}(hhh]h)}(hFan tachometer reading, in RPM, for the secondary fan. Available only on some ThinkPads. If the secondary fan is not installed, will always read 0.h]hFan tachometer reading, in RPM, for the secondary fan. Available only on some ThinkPads. If the secondary fan is not installed, will always read 0.}(hj[5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMVhjX5ubah}(h]h ]h"]h$]h&]uh1jhjF5ubeh}(h]h ]h"]h$]h&]uh1jhhhMXhjB4hhubj)}(hhwmon driver attribute fan_watchdog: Fan safety watchdog timer interval, in seconds. Minimum is 1 second, maximum is 120 seconds. 0 disables the watchdog. h](j)}(h$hwmon driver attribute fan_watchdog:h]h$hwmon driver attribute fan_watchdog:}(hjy5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM\hju5ubj)}(hhh]h)}(hwFan safety watchdog timer interval, in seconds. Minimum is 1 second, maximum is 120 seconds. 0 disables the watchdog.h]hwFan safety watchdog timer interval, in seconds. Minimum is 1 second, maximum is 120 seconds. 0 disables the watchdog.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM[hj5ubah}(h]h ]h"]h$]h&]uh1jhju5ubeh}(h]h ]h"]h$]h&]uh1jhhhM\hjB4hhubeh}(h]h ]h"]h$]h&]uh1jhj4hhhhhNubh)}(h8To stop the fan: set pwm1 to zero, and pwm1_enable to 1.h]h8To stop the fan: set pwm1 to zero, and pwm1_enable to 1.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM^hj4hhubh)}(hTo start the fan in a safe mode: set pwm1_enable to 2. If that fails with EINVAL, try to set pwm1_enable to 1 and pwm1 to at least 128 (255 would be the safest choice, though).h]hTo start the fan in a safe mode: set pwm1_enable to 2. If that fails with EINVAL, try to set pwm1_enable to 1 and pwm1 to at least 128 (255 would be the safest choice, though).}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM`hj4hhubeh}(h]id12ah ]h"]h$] sysfs notesah&]uh1hhj2hhhhhM0jKubeh}(h]7fan-control-and-monitoring-fan-speed-fan-enable-disableah ]h"]9fan control and monitoring: fan speed, fan enable/disableah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hWANh]hWAN}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hhhhhMfubh)}(hprocfs: /proc/acpi/ibm/wanh]hprocfs: /proc/acpi/ibm/wan}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhhj5hhubh)}(h0sysfs device attribute: wwan_enable (deprecated)h]h0sysfs device attribute: wwan_enable (deprecated)}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMjhj5hhubh)}(h+sysfs rfkill class: switch "tpacpi_wwan_sw"h]h/sysfs rfkill class: switch “tpacpi_wwan_sw”}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMlhj5hhubh)}(hVThis feature shows the presence and current state of the built-in Wireless WAN device.h]hVThis feature shows the presence and current state of the built-in Wireless WAN device.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMnhj5hhubh)}(hkIf the ThinkPad supports it, the WWAN state is stored in NVRAM, so it is kept across reboots and power-off.h]hkIf the ThinkPad supports it, the WWAN state is stored in NVRAM, so it is kept across reboots and power-off.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMqhj5hhubh)}(hIt was tested on a Lenovo ThinkPad X60. It should probably work on other ThinkPad models which come with this module installed.h]hIt was tested on a Lenovo ThinkPad X60. It should probably work on other ThinkPad models which come with this module installed.}(hj-6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMthj5hhubh)}(hhh](h)}(h Procfs notesh]h Procfs notes}(hj>6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;6hhhhhMxubh)}(hDIf the W-WAN card is installed, the following commands can be used::h]hCIf the W-WAN card is installed, the following commands can be used:}(hjL6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMzhj;6hhubj)}(hBecho enable > /proc/acpi/ibm/wan echo disable > /proc/acpi/ibm/wanh]hBecho enable > /proc/acpi/ibm/wan echo disable > /proc/acpi/ibm/wan}hjZ6sbah}(h]h ]h"]h$]h&]jjuh1jhhhM|hj;6hhubeh}(h]id13ah ]h"]h$] procfs notesah&]uh1hhj5hhhhhMxjKubh)}(hhh](h)}(h Sysfs notesh]h Sysfs notes}(hjs6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjp6hhhhhMubj)}(hXIf the W-WAN card is installed, it can be enabled / disabled through the "wwan_enable" thinkpad-acpi device attribute, and its current status can also be queried. enable: - 0: disables WWAN card / WWAN card is disabled - 1: enables WWAN card / WWAN card is enabled. Note: this interface has been superseded by the generic rfkill class. It has been deprecated, and it will be removed in year 2010. rfkill controller switch "tpacpi_wwan_sw": refer to Documentation/driver-api/rfkill.rst for details. h](h)}(hIf the W-WAN card is installed, it can be enabled / disabled through the "wwan_enable" thinkpad-acpi device attribute, and its current status can also be queried.h]hIf the W-WAN card is installed, it can be enabled / disabled through the “wwan_enable” thinkpad-acpi device attribute, and its current status can also be queried.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj6ubj)}(hhh]j)}(hgenable: - 0: disables WWAN card / WWAN card is disabled - 1: enables WWAN card / WWAN card is enabled. h](j)}(henable:h]henable:}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhj6ubj)}(hhh]h)}(hhh](h)}(h-0: disables WWAN card / WWAN card is disabledh]h)}(hj6h]h-0: disables WWAN card / WWAN card is disabled}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj6ubah}(h]h ]h"]h$]h&]uh1hhj6ubh)}(h-1: enables WWAN card / WWAN card is enabled. h]h)}(h,1: enables WWAN card / WWAN card is enabled.h]h,1: enables WWAN card / WWAN card is enabled.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj6ubah}(h]h ]h"]h$]h&]uh1hhj6ubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhMhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhhhMhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubh)}(hNote: this interface has been superseded by the generic rfkill class. It has been deprecated, and it will be removed in year 2010.h]hNote: this interface has been superseded by the generic rfkill class. It has been deprecated, and it will be removed in year 2010.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj6ubh)}(hdrfkill controller switch "tpacpi_wwan_sw": refer to Documentation/driver-api/rfkill.rst for details.h]hhrfkill controller switch “tpacpi_wwan_sw”: refer to Documentation/driver-api/rfkill.rst for details.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj6ubeh}(h]h ]h"]h$]h&]uh1jhhhMhjp6hhubeh}(h]id14ah ]h"]h$] sysfs notesah&]uh1hhj5hhhhhMjKubeh}(h]wanah ]h"]wanah$]h&]uh1hhhhhhhhMfubh)}(hhh](h)}(hLCD Shadow controlh]hLCD Shadow control}(hj*7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'7hhhhhMubh)}(h procfs: /proc/acpi/ibm/lcdshadowh]h procfs: /proc/acpi/ibm/lcdshadow}(hj87hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj'7hhubh)}(hSome newer T480s and T490s ThinkPads provide a feature called PrivacyGuard. By turning this feature on, the usable vertical and horizontal viewing angles of the LCD can be limited (as if some privacy screen was applied manually in front of the display).h]hSome newer T480s and T490s ThinkPads provide a feature called PrivacyGuard. By turning this feature on, the usable vertical and horizontal viewing angles of the LCD can be limited (as if some privacy screen was applied manually in front of the display).}(hjF7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj'7hhubh)}(hhh](h)}(h procfs notesh]h procfs notes}(hjW7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjT7hhhhhMubh)}(hThe available commands are::h]hThe available commands are:}(hje7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjT7hhubj)}(hEecho '0' >/proc/acpi/ibm/lcdshadow echo '1' >/proc/acpi/ibm/lcdshadowh]hEecho '0' >/proc/acpi/ibm/lcdshadow echo '1' >/proc/acpi/ibm/lcdshadow}hjs7sbah}(h]h ]h"]h$]h&]jjuh1jhhhMhjT7hhubh)}(hyThe first command ensures the best viewing angle and the latter one turns on the feature, restricting the viewing angles.h]hyThe first command ensures the best viewing angle and the latter one turns on the feature, restricting the viewing angles.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjT7hhubeh}(h]id15ah ]h"]h$] procfs notesah&]uh1hhj'7hhhhhMjKubeh}(h]lcd-shadow-controlah ]h"]lcd shadow controlah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hDYTC Lapmode sensorh]hDYTC Lapmode sensor}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hhhhhMubh)}(hsysfs: dytc_lapmodeh]hsysfs: dytc_lapmode}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj7hhubh)}(hXGNewer thinkpads and mobile workstations have the ability to determine if the device is in deskmode or lapmode. This feature is used by user space to decide if WWAN transmission can be increased to maximum power and is also useful for understanding the different thermal modes available as they differ between desk and lap mode.h]hXGNewer thinkpads and mobile workstations have the ability to determine if the device is in deskmode or lapmode. This feature is used by user space to decide if WWAN transmission can be increased to maximum power and is also useful for understanding the different thermal modes available as they differ between desk and lap mode.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj7hhubh)}(h_The property is read-only. If the platform doesn't have support the sysfs class is not created.h]haThe property is read-only. If the platform doesn’t have support the sysfs class is not created.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj7hhubeh}(h]dytc-lapmode-sensorah ]h"]dytc lapmode sensorah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hEXPERIMENTAL: UWBh]hEXPERIMENTAL: UWB}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hhhhhMubh)}(hXThis feature is considered EXPERIMENTAL because it has not been extensively tested and validated in various ThinkPad models yet. The feature may not work as expected. USE WITH CAUTION! To use this feature, you need to supply the experimental=1 parameter when loading the module.h]hXThis feature is considered EXPERIMENTAL because it has not been extensively tested and validated in various ThinkPad models yet. The feature may not work as expected. USE WITH CAUTION! To use this feature, you need to supply the experimental=1 parameter when loading the module.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj7hhubh)}(h*sysfs rfkill class: switch "tpacpi_uwb_sw"h]h.sysfs rfkill class: switch “tpacpi_uwb_sw”}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj7hhubh)}(hhThis feature exports an rfkill controller for the UWB device, if one is present and enabled in the BIOS.h]hhThis feature exports an rfkill controller for the UWB device, if one is present and enabled in the BIOS.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj7hhubh)}(hhh](h)}(h Sysfs notesh]h Sysfs notes}(hj 8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hhhhhMubj)}(herfkill controller switch "tpacpi_uwb_sw": refer to Documentation/driver-api/rfkill.rst for details. h]h)}(hcrfkill controller switch "tpacpi_uwb_sw": refer to Documentation/driver-api/rfkill.rst for details.h]hgrfkill controller switch “tpacpi_uwb_sw”: refer to Documentation/driver-api/rfkill.rst for details.}(hj28hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj.8ubah}(h]h ]h"]h$]h&]uh1jhhhMhj8hhubeh}(h]id16ah ]h"]h$] sysfs notesah&]uh1hhj7hhhhhMjKubeh}(h]experimental-uwbah ]h"]experimental: uwbah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hSetting keyboard languageh]hSetting keyboard language}(hjY8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjV8hhhhhMubh)}(hsysfs: keyboard_langh]hsysfs: keyboard_lang}(hjg8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjV8hhubh)}(hXThis feature is used to set keyboard language to ECFW using ASL interface. Fewer thinkpads models like T580 , T590 , T15 Gen 1 etc.. has "=", "(', ")" numeric keys, which are not displaying correctly, when keyboard language is other than "english". This is because the default keyboard language in ECFW is set as "english". Hence using this sysfs, user can set the correct keyboard language to ECFW and then these key's will work correctly.h]hXThis feature is used to set keyboard language to ECFW using ASL interface. Fewer thinkpads models like T580 , T590 , T15 Gen 1 etc.. has “=”, “(‘, “)” numeric keys, which are not displaying correctly, when keyboard language is other than “english”. This is because the default keyboard language in ECFW is set as “english”. Hence using this sysfs, user can set the correct keyboard language to ECFW and then these key’s will work correctly.}(hju8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjV8hhubh)}(h@Example of command to set keyboard language is mentioned below::h]h?Example of command to set keyboard language is mentioned below:}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjV8hhubj)}(h;echo jp > /sys/devices/platform/thinkpad_acpi/keyboard_langh]h;echo jp > /sys/devices/platform/thinkpad_acpi/keyboard_lang}hj8sbah}(h]h ]h"]h$]h&]jjuh1jhhhMhjV8hhubh)}(hX:Text corresponding to keyboard layout to be set in sysfs are: be(Belgian), cz(Czech), da(Danish), de(German), en(English), es(Spain), et(Estonian), fr(French), fr-ch(French(Switzerland)), hu(Hungarian), it(Italy), jp (Japan), nl(Dutch), nn(Norway), pl(Polish), pt(portuguese), sl(Slovenian), sv(Sweden), tr(Turkey)h]hX:Text corresponding to keyboard layout to be set in sysfs are: be(Belgian), cz(Czech), da(Danish), de(German), en(English), es(Spain), et(Estonian), fr(French), fr-ch(French(Switzerland)), hu(Hungarian), it(Italy), jp (Japan), nl(Dutch), nn(Norway), pl(Polish), pt(portuguese), sl(Slovenian), sv(Sweden), tr(Turkey)}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjV8hhubeh}(h]setting-keyboard-languageah ]h"]setting keyboard languageah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hWWAN Antenna typeh]hWWAN Antenna type}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hhhhhMubh)}(hsysfs: wwan_antenna_typeh]hsysfs: wwan_antenna_type}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj8hhubh)}(hOn some newer Thinkpads we need to set SAR value based on the antenna type. This interface will be used by userspace to get the antenna type and set the corresponding SAR value, as is required for FCC certification.h]hOn some newer Thinkpads we need to set SAR value based on the antenna type. This interface will be used by userspace to get the antenna type and set the corresponding SAR value, as is required for FCC certification.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj8hhubh)}(hThe available commands are::h]hThe available commands are:}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj8hhubj)}(h9cat /sys/devices/platform/thinkpad_acpi/wwan_antenna_typeh]h9cat /sys/devices/platform/thinkpad_acpi/wwan_antenna_type}hj8sbah}(h]h ]h"]h$]h&]jjuh1jhhhMhj8hhubh)}(hMCurrently 2 antenna types are supported as mentioned below: - type a - type bh]hMCurrently 2 antenna types are supported as mentioned below: - type a - type b}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj8hhubh)}(h_The property is read-only. If the platform doesn't have support the sysfs class is not created.h]haThe property is read-only. If the platform doesn’t have support the sysfs class is not created.}(hj 9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj8hhubeh}(h]wwan-antenna-typeah ]h"]wwan antenna typeah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hAuxmach]hAuxmac}(hj%9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"9hhhhhMubh)}(h sysfs: auxmach]h sysfs: auxmac}(hj39hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"9hhubh)}(hXISome newer Thinkpads have a feature called MAC Address Pass-through. This feature is implemented by the system firmware to provide a system unique MAC, that can override a dock or USB ethernet dongle MAC, when connected to a network. This property enables user-space to easily determine the MAC address if the feature is enabled.h]hXISome newer Thinkpads have a feature called MAC Address Pass-through. This feature is implemented by the system firmware to provide a system unique MAC, that can override a dock or USB ethernet dongle MAC, when connected to a network. This property enables user-space to easily determine the MAC address if the feature is enabled.}(hjA9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"9hhubh)}(h%The values of this auxiliary MAC are:h]h%The values of this auxiliary MAC are:}(hjO9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"9hhubj)}(h/cat /sys/devices/platform/thinkpad_acpi/auxmac h]h)}(h.cat /sys/devices/platform/thinkpad_acpi/auxmach]h.cat /sys/devices/platform/thinkpad_acpi/auxmac}(hja9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj]9ubah}(h]h ]h"]h$]h&]uh1jhhhMhj"9hhubh)}(h9If the feature is disabled, the value will be 'disabled'.h]h=If the feature is disabled, the value will be ‘disabled’.}(hju9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"9hhubh)}(hThis property is read-only.h]hThis property is read-only.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj"9hhubeh}(h]auxmacah ]h"]auxmacah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hAdaptive keyboardh]hAdaptive keyboard}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hhhhhMubh)}(h)sysfs device attribute: adaptive_kbd_modeh]h)sysfs device attribute: adaptive_kbd_mode}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj9hhubh)}(hThis sysfs attribute controls the keyboard "face" that will be shown on the Lenovo X1 Carbon 2nd gen (2014)'s adaptive keyboard. The value can be read and set.h]hThis sysfs attribute controls the keyboard “face” that will be shown on the Lenovo X1 Carbon 2nd gen (2014)’s adaptive keyboard. The value can be read and set.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj9hhubh)}(hhh](h)}(h 0 = Home modeh]h)}(hj9h]h 0 = Home mode}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj9ubah}(h]h ]h"]h$]h&]uh1hhj9hhhhhNubh)}(h1 = Web-browser modeh]h)}(hj9h]h1 = Web-browser mode}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj9ubah}(h]h ]h"]h$]h&]uh1hhj9hhhhhNubh)}(h2 = Web-conference modeh]h)}(hj9h]h2 = Web-conference mode}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj9ubah}(h]h ]h"]h$]h&]uh1hhj9hhhhhNubh)}(h3 = Function modeh]h)}(hj:h]h3 = Function mode}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj:ubah}(h]h ]h"]h$]h&]uh1hhj9hhhhhNubh)}(h4 = Layflat mode h]h)}(h4 = Layflat modeh]h4 = Layflat mode}(hj):hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj%:ubah}(h]h ]h"]h$]h&]uh1hhj9hhhhhNubeh}(h]h ]h"]h$]h&]j;j<uh1hhhhMhj9hhubh)}(hFor more details about which buttons will appear depending on the mode, please review the laptop's user guide: https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles_pdf/x1carbon_2_ug_en.pdfh](hqFor more details about which buttons will appear depending on the mode, please review the laptop’s user guide: }(hjC:hhhNhNubh)}(hPhttps://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles_pdf/x1carbon_2_ug_en.pdfh]hPhttps://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles_pdf/x1carbon_2_ug_en.pdf}(hjK:hhhNhNubah}(h]h ]h"]h$]h&]refurijM:uh1hhjC:ubeh}(h]h ]h"]h$]h&]uh1hhhhMhj9hhubeh}(h]adaptive-keyboardah ]h"]adaptive keyboardah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hBattery charge controlh]hBattery charge control}(hjk:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjh:hhhhhMubh)}(hSsysfs attributes: /sys/class/power_supply/BAT*/charge_control_{start,end}_thresholdh]hSsysfs attributes: /sys/class/power_supply/BAT*/charge_control_{start,end}_threshold}(hjy:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjh:hhubh)}(hXThese two attributes are created for those batteries that are supported by the driver. They enable the user to control the battery charge thresholds of the given battery. Both values may be read and set. `charge_control_start_threshold` accepts an integer between 0 and 99 (inclusive); this value represents a battery percentage level, below which charging will begin. `charge_control_end_threshold` accepts an integer between 1 and 100 (inclusive); this value represents a battery percentage level, above which charging will stop.h](hThese two attributes are created for those batteries that are supported by the driver. They enable the user to control the battery charge thresholds of the given battery. Both values may be read and set. }(hj:hhhNhNubhtitle_reference)}(h `charge_control_start_threshold`h]hcharge_control_start_threshold}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj:ubh accepts an integer between 0 and 99 (inclusive); this value represents a battery percentage level, below which charging will begin. }(hj:hhhNhNubj:)}(h`charge_control_end_threshold`h]hcharge_control_end_threshold}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj:ubh accepts an integer between 1 and 100 (inclusive); this value represents a battery percentage level, above which charging will stop.}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM hjh:hhubh)}(hbThe exact semantics of the attributes may be found in Documentation/ABI/testing/sysfs-class-power.h]hbThe exact semantics of the attributes may be found in Documentation/ABI/testing/sysfs-class-power.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM(hjh:hhubeh}(h]battery-charge-controlah ]h"]battery charge controlah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(h$Multiple Commands, Module Parametersh]h$Multiple Commands, Module Parameters}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hhhhhM,ubh)}(hlMultiple commands can be written to the proc files in one shot by separating them with commas, for example::h]hkMultiple commands can be written to the proc files in one shot by separating them with commas, for example:}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM.hj:hhubj)}(h]echo enable,0xffff > /proc/acpi/ibm/hotkey echo lcd_disable,crt_enable > /proc/acpi/ibm/videoh]h]echo enable,0xffff > /proc/acpi/ibm/hotkey echo lcd_disable,crt_enable > /proc/acpi/ibm/video}hj:sbah}(h]h ]h"]h$]h&]jjuh1jhhhM1hj:hhubh)}(hSCommands can also be specified when loading the thinkpad-acpi module, for example::h]hRCommands can also be specified when loading the thinkpad-acpi module, for example:}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM4hj:hhubj)}(h>modprobe thinkpad_acpi hotkey=enable,0xffff video=auto_disableh]h>modprobe thinkpad_acpi hotkey=enable,0xffff video=auto_disable}hj ;sbah}(h]h ]h"]h$]h&]jjuh1jhhhM7hj:hhubeh}(h]#multiple-commands-module-parametersah ]h"]$multiple commands, module parametersah$]h&]uh1hhhhhhhhM,ubh)}(hhh](h)}(hEnabling debugging outputh]hEnabling debugging output}(hj%;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj";hhhhhM;ubh)}(h}The module takes a debug parameter which can be used to selectively enable various classes of debugging output, for example::h]h|The module takes a debug parameter which can be used to selectively enable various classes of debugging output, for example:}(hj3;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM=hj";hhubj)}(h#modprobe thinkpad_acpi debug=0xffffh]h#modprobe thinkpad_acpi debug=0xffff}hjA;sbah}(h]h ]h"]h$]h&]jjuh1jhhhM@hj";hhubh)}(h~will enable all debugging output classes. It takes a bitmask, so to enable more than one output class, just add their values.h]h~will enable all debugging output classes. It takes a bitmask, so to enable more than one output class, just add their values.}(hjO;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMBhj";hhubj)}(hX============= ====================================== Debug bitmask Description ============= ====================================== 0x8000 Disclose PID of userspace programs accessing some functions of the driver 0x0001 Initialization and probing 0x0002 Removal 0x0004 RF Transmitter control (RFKILL) (bluetooth, WWAN, UWB...) 0x0008 HKEY event interface, hotkeys 0x0010 Fan control 0x0020 Backlight brightness 0x0040 Audio mixer/volume control ============= ====================================== h]j9 )}(hhh]j> )}(hhh](jC )}(hhh]h}(h]h ]h"]h$]h&]colwidthK uh1jB hjd;ubjC )}(hhh]h}(h]h ]h"]h$]h&]colwidthK&uh1jB hjd;ubj )}(hhh]j^ )}(hhh](jc )}(hhh]h)}(h Debug bitmaskh]h Debug bitmask}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMFhj;ubah}(h]h ]h"]h$]h&]uh1jb hj~;ubjc )}(hhh]h)}(h Descriptionh]h Description}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMFhj;ubah}(h]h ]h"]h$]h&]uh1jb hj~;ubeh}(h]h ]h"]h$]h&]uh1j] hj{;ubah}(h]h ]h"]h$]h&]uh1j hjd;ubjY )}(hhh](j^ )}(hhh](jc )}(hhh]h)}(h0x8000h]h0x8000}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMHhj;ubah}(h]h ]h"]h$]h&]uh1jb hj;ubjc )}(hhh]h)}(hIDisclose PID of userspace programs accessing some functions of the driverh]hIDisclose PID of userspace programs accessing some functions of the driver}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMHhj;ubah}(h]h ]h"]h$]h&]uh1jb hj;ubeh}(h]h ]h"]h$]h&]uh1j] hj;ubj^ )}(hhh](jc )}(hhh]h)}(h0x0001h]h0x0001}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMJhj;ubah}(h]h ]h"]h$]h&]uh1jb hj;ubjc )}(hhh]h)}(hInitialization and probingh]hInitialization and probing}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMJhj<ubah}(h]h ]h"]h$]h&]uh1jb hj;ubeh}(h]h ]h"]h$]h&]uh1j] hj;ubj^ )}(hhh](jc )}(hhh]h)}(h0x0002h]h0x0002}(hj2<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMKhj/<ubah}(h]h ]h"]h$]h&]uh1jb hj,<ubjc )}(hhh]h)}(hRemovalh]hRemoval}(hjI<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMKhjF<ubah}(h]h ]h"]h$]h&]uh1jb hj,<ubeh}(h]h ]h"]h$]h&]uh1j] hj;ubj^ )}(hhh](jc )}(hhh]h)}(h0x0004h]h0x0004}(hji<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMLhjf<ubah}(h]h ]h"]h$]h&]uh1jb hjc<ubjc )}(hhh]h)}(h9RF Transmitter control (RFKILL) (bluetooth, WWAN, UWB...)h]h9RF Transmitter control (RFKILL) (bluetooth, WWAN, UWB...)}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMLhj}<ubah}(h]h ]h"]h$]h&]uh1jb hjc<ubeh}(h]h ]h"]h$]h&]uh1j] hj;ubj^ )}(hhh](jc )}(hhh]h)}(h0x0008h]h0x0008}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMNhj<ubah}(h]h ]h"]h$]h&]uh1jb hj<ubjc )}(hhh]h)}(hHKEY event interface, hotkeysh]hHKEY event interface, hotkeys}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMNhj<ubah}(h]h ]h"]h$]h&]uh1jb hj<ubeh}(h]h ]h"]h$]h&]uh1j] hj;ubj^ )}(hhh](jc )}(hhh]h)}(h0x0010h]h0x0010}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMOhj<ubah}(h]h ]h"]h$]h&]uh1jb hj<ubjc )}(hhh]h)}(h Fan controlh]h Fan control}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMOhj<ubah}(h]h ]h"]h$]h&]uh1jb hj<ubeh}(h]h ]h"]h$]h&]uh1j] hj;ubj^ )}(hhh](jc )}(hhh]h)}(h0x0020h]h0x0020}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMPhj =ubah}(h]h ]h"]h$]h&]uh1jb hj=ubjc )}(hhh]h)}(hBacklight brightnessh]hBacklight brightness}(hj%=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMPhj"=ubah}(h]h ]h"]h$]h&]uh1jb hj=ubeh}(h]h ]h"]h$]h&]uh1j] hj;ubj^ )}(hhh](jc )}(hhh]h)}(h0x0040h]h0x0040}(hjE=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMQhjB=ubah}(h]h ]h"]h$]h&]uh1jb hj?=ubjc )}(hhh]h)}(hAudio mixer/volume controlh]hAudio mixer/volume control}(hj\=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMQhjY=ubah}(h]h ]h"]h$]h&]uh1jb hj?=ubeh}(h]h ]h"]h$]h&]uh1j] hj;ubeh}(h]h ]h"]h$]h&]uh1jX hjd;ubeh}(h]h ]h"]h$]h&]colsKuh1j= hja;ubah}(h]h ]h"]h$]h&]uh1j8 hj];ubah}(h]h ]h"]h$]h&]uh1jhhhMEhj";hhubh)}(hzThere is also a kernel build option to enable more debugging information, which may be necessary to debug driver problems.h]hzThere is also a kernel build option to enable more debugging information, which may be necessary to debug driver problems.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMThj";hhubh)}(hThe level of debugging information output by the driver can be changed at runtime through sysfs, using the driver attribute debug_level. The attribute takes the same bitmask as the debug module parameter above.h]hThe level of debugging information output by the driver can be changed at runtime through sysfs, using the driver attribute debug_level. The attribute takes the same bitmask as the debug module parameter above.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMWhj";hhubeh}(h]enabling-debugging-outputah ]h"]enabling debugging outputah$]h&]uh1hhhhhhhhM;ubh)}(hhh](h)}(hForce loading of moduleh]hForce loading of module}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hhhhhM]ubh)}(hIf thinkpad-acpi refuses to detect your ThinkPad, you can try to specify the module parameter force_load=1. Regardless of whether this works or not, please contact ibm-acpi-devel@lists.sourceforge.net with a report.h](hIf thinkpad-acpi refuses to detect your ThinkPad, you can try to specify the module parameter force_load=1. Regardless of whether this works or not, please contact }(hj=hhhNhNubh)}(h$ibm-acpi-devel@lists.sourceforge.neth]h$ibm-acpi-devel@lists.sourceforge.net}(hj=hhhNhNubah}(h]h ]h"]h$]h&]refuri+mailto:ibm-acpi-devel@lists.sourceforge.netuh1hhj=ubh with a report.}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM_hj=hhubh)}(hhh](h)}(hSysfs interface changelogh]hSysfs interface changelog}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hhhhhMeubj9 )}(hhh]j> )}(hhh](jC )}(hhh]h}(h]h ]h"]h$]h&]colwidthK uh1jB hj=ubjC )}(hhh]h}(h]h ]h"]h$]h&]colwidthK?uh1jB hj=ubjY )}(hhh](j^ )}(hhh](jc )}(hhh]h)}(h 0x000100:h]h 0x000100:}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhhj>ubah}(h]h ]h"]h$]h&]uh1jb hj>ubjc )}(hhh]h)}(h>Initial sysfs support, as a single platform driver and device.h]h>Initial sysfs support, as a single platform driver and device.}(hj1>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhhj.>ubah}(h]h ]h"]h$]h&]uh1jb hj>ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubj^ )}(hhh](jc )}(hhh]h)}(h 0x000200:h]h 0x000200:}(hjQ>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMjhjN>ubah}(h]h ]h"]h$]h&]uh1jb hjK>ubjc )}(hhh]h)}(hAHot key support for 32 hot keys, and radio slider switch support.h]hAHot key support for 32 hot keys, and radio slider switch support.}(hjh>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMjhje>ubah}(h]h ]h"]h$]h&]uh1jb hjK>ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubj^ )}(hhh](jc )}(hhh]h)}(h 0x010000:h]h 0x010000:}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMlhj>ubah}(h]h ]h"]h$]h&]uh1jb hj>ubjc )}(hhh]h)}(hHot keys are now handled by default over the input layer, the radio switch generates input event EV_RADIO, and the driver enables hot key handling by default in the firmware.h]hHot keys are now handled by default over the input layer, the radio switch generates input event EV_RADIO, and the driver enables hot key handling by default in the firmware.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMlhj>ubah}(h]h ]h"]h$]h&]uh1jb hj>ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubj^ )}(hhh](jc )}(hhh]h)}(h 0x020000:h]h 0x020000:}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMqhj>ubah}(h]h ]h"]h$]h&]uh1jb hj>ubjc )}(hhh]h)}(hABI fix: added a separate hwmon platform device and driver, which must be located by name (thinkpad) and the hwmon class for libsensors4 (lm-sensors 3) compatibility. Moved all hwmon attributes to this new platform device.h]hABI fix: added a separate hwmon platform device and driver, which must be located by name (thinkpad) and the hwmon class for libsensors4 (lm-sensors 3) compatibility. Moved all hwmon attributes to this new platform device.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMqhj>ubah}(h]h ]h"]h$]h&]uh1jb hj>ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubj^ )}(hhh](jc )}(hhh]h)}(h 0x020100:h]h 0x020100:}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMwhj>ubah}(h]h ]h"]h$]h&]uh1jb hj>ubjc )}(hhh]h)}(hMarker for thinkpad-acpi with hot key NVRAM polling support. If you must, use it to know you should not start a userspace NVRAM poller (allows to detect when NVRAM is compiled out by the user because it is unneeded/undesired in the first place).h]hMarker for thinkpad-acpi with hot key NVRAM polling support. If you must, use it to know you should not start a userspace NVRAM poller (allows to detect when NVRAM is compiled out by the user because it is unneeded/undesired in the first place).}(hj ?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMwhj ?ubah}(h]h ]h"]h$]h&]uh1jb hj>ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubj^ )}(hhh](jc )}(hhh]h)}(h 0x020101:h]h 0x020101:}(hj-?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM|hj*?ubah}(h]h ]h"]h$]h&]uh1jb hj'?ubjc )}(hhh]h)}(hMarker for thinkpad-acpi with hot key NVRAM polling and proper hotkey_mask semantics (version 8 of the NVRAM polling patch). Some development snapshots of 0.18 had an earlier version that did strange things to hotkey_mask.h]hMarker for thinkpad-acpi with hot key NVRAM polling and proper hotkey_mask semantics (version 8 of the NVRAM polling patch). Some development snapshots of 0.18 had an earlier version that did strange things to hotkey_mask.}(hjD?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM|hjA?ubah}(h]h ]h"]h$]h&]uh1jb hj'?ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubj^ )}(hhh](jc )}(hhh]h)}(h 0x020200:h]h 0x020200:}(hjd?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhja?ubah}(h]h ]h"]h$]h&]uh1jb hj^?ubjc )}(hhh]h)}(hrAdd poll()/select() support to the following attributes: hotkey_radio_sw, wakeup_hotunplug_complete, wakeup_reasonh]hrAdd poll()/select() support to the following attributes: hotkey_radio_sw, wakeup_hotunplug_complete, wakeup_reason}(hj{?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjx?ubah}(h]h ]h"]h$]h&]uh1jb hj^?ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubj^ )}(hhh](jc )}(hhh]h)}(h 0x020300:h]h 0x020300:}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj?ubah}(h]h ]h"]h$]h&]uh1jb hj?ubjc )}(hhh]h)}(hzhotkey enable/disable support removed, attributes hotkey_bios_enabled and hotkey_enable deprecated and marked for removal.h]hzhotkey enable/disable support removed, attributes hotkey_bios_enabled and hotkey_enable deprecated and marked for removal.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj?ubah}(h]h ]h"]h$]h&]uh1jb hj?ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubj^ )}(hhh](jc )}(hhh]h)}(h 0x020400:h]h 0x020400:}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj?ubah}(h]h ]h"]h$]h&]uh1jb hj?ubjc )}(hhh]h)}(hMarker for 16 LEDs support. Also, LEDs that are known to not exist in a given model are not registered with the LED sysfs class anymore.h]hMarker for 16 LEDs support. Also, LEDs that are known to not exist in a given model are not registered with the LED sysfs class anymore.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj?ubah}(h]h ]h"]h$]h&]uh1jb hj?ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubj^ )}(hhh](jc )}(hhh]h)}(h 0x020500:h]h 0x020500:}(hj @hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj@ubah}(h]h ]h"]h$]h&]uh1jb hj@ubjc )}(hhh]h)}(hUpdated hotkey driver, hotkey_mask is always available and it is always able to disable hot keys. Very old thinkpads are properly supported. hotkey_bios_mask is deprecated and marked for removal.h]hUpdated hotkey driver, hotkey_mask is always available and it is always able to disable hot keys. Very old thinkpads are properly supported. hotkey_bios_mask is deprecated and marked for removal.}(hj @hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj@ubah}(h]h ]h"]h$]h&]uh1jb hj@ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubj^ )}(hhh](jc )}(hhh]h)}(h 0x020600:h]h 0x020600:}(hj@@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj=@ubah}(h]h ]h"]h$]h&]uh1jb hj:@ubjc )}(hhh]h)}(h*Marker for backlight change event support.h]h*Marker for backlight change event support.}(hjW@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjT@ubah}(h]h ]h"]h$]h&]uh1jb hj:@ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubj^ )}(hhh](jc )}(hhh]h)}(h 0x020700:h]h 0x020700:}(hjw@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjt@ubah}(h]h ]h"]h$]h&]uh1jb hjq@ubjc )}(hhh]h)}(hiSupport for mute-only mixers. Volume control in read-only mode by default. Marker for ALSA mixer support.h]hiSupport for mute-only mixers. Volume control in read-only mode by default. Marker for ALSA mixer support.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj@ubah}(h]h ]h"]h$]h&]uh1jb hjq@ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubj^ )}(hhh](jc )}(hhh]h)}(h 0x030000:h]h 0x030000:}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj@ubah}(h]h ]h"]h$]h&]uh1jb hj@ubjc )}(hhh]h)}(hyThermal and fan sysfs attributes were moved to the hwmon device instead of being attached to the backing platform device.h]hyThermal and fan sysfs attributes were moved to the hwmon device instead of being attached to the backing platform device.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj@ubah}(h]h ]h"]h$]h&]uh1jb hj@ubeh}(h]h ]h"]h$]h&]uh1j] hj>ubeh}(h]h ]h"]h$]h&]uh1jX hj=ubeh}(h]h ]h"]h$]h&]colsKuh1j= hj=ubah}(h]h ]h"]h$]h&]uh1j8 hj=hhhhhNubeh}(h]sysfs-interface-changelogah ]h"]sysfs interface changelogah$]h&]uh1hhj=hhhhhMeubeh}(h]force-loading-of-moduleah ]h"]force loading of moduleah$]h&]uh1hhhhhhhhM]ubeh}(h]thinkpad-acpi-extras-driverah ]h"]thinkpad acpi extras driverah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjb footnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj,Aerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jAjAj3j0jZjWjjjj j[jXjjjj procfs notesN sysfs notesNjjj!j!j!j!jN"jK"j#j#j#j#j$%j!%j'j'j$)j!)jc-j`-j.j.j.0j+0j1j1j61j31j1j1j5j5jC3j@3j$7j!7j7j7j7j7jS8jP8j8j8j9j9j9j9je:jb:j:j:j;j;j=j=j@j@j@j@u nametypes}(jAj3jZjjj[jjjpAjqAjj!j!jN"j#j#j$%j'j$)jc-j.j.0j1j61j1j5jC3j$7j7j7jS8j8j9j9je:j:j;j=j@j@uh}(jAhj0jjWj6jj]j jjXjjj^jjjj{j jjj j!jj!j jK"j"!j!jy!jD"j!j#jQ"j#j!#j}#jN#j#j#j!%j#j'j'%j'j~%j'j'j!)j'j`-j')j-j,jX-j-j.jf-j+0j.j.j.j#0j.j1j10j31jz0j1j91j5j2j@3j2j4jF3j5j4j!7j5jj6j;6j7jp6j7j'7j7jT7j7j7jP8j7jH8j8j8jV8j9j8j9j"9jb:j9j:jh:j;j:j=j";j@j=j@j=u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j:AKsRparse_messages](hsystem_message)}(hhh]h)}(heUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h]hgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAubah}(h]h ]h"]h$]h&]levelKtypeINFOlineMsourcehuh1jAhjubjA)}(hhh]h)}(heUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h]hgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAubah}(h]h ]h"]h$]h&]levelKtypejAlineMsourcehuh1jAhjubjA)}(hhh]h)}(heUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h]hgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAubah}(h]h ]h"]h$]h&]levelKtypejAlineMsourcehuh1jAhj4ubjA)}(hhh]h)}(heUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h]hgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAubah}(h]h ]h"]h$]h&]levelKtypejAlineMsourcehuh1jAhjKubjA)}(hhh]h)}(heUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h]hgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAubah}(h]h ]h"]h$]h&]levelKtypejAlineMsourcehuh1jAhjsubjA)}(hhh]h)}(heUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h]hgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBubah}(h]h ]h"]h$]h&]levelKtypejAlineMsourcehuh1jAhjubjA)}(hhh]h)}(heUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h]hgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.}(hj8BhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5Bubah}(h]h ]h"]h$]h&]levelKtypejAlineMsourcehuh1jAhj&ubjA)}(hhh]h)}(heUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h]hgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.}(hjSBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPBubah}(h]h ]h"]h$]h&]levelKtypejAlineMsourcehuh1jAhj=ubjA)}(hhh]h)}(heUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.h]hgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.}(hjnBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkBubah}(h]h ]h"]h$]h&]levelKtypejAlineMsourcehuh1jAhjTubjA)}(hhh]h)}(h/Duplicate implicit target name: "procfs notes".h]h3Duplicate implicit target name: “procfs notes”.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBubah}(h]h ]h"]h$]h&]j!alevelKtypejAsourcehlineM|uh1jAhjy!hhhhhM|ubjA)}(hhh]h)}(h.Duplicate implicit target name: "sysfs notes".h]h2Duplicate implicit target name: “sysfs notes”.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBubah}(h]h ]h"]h$]h&]jD"alevelKtypejAsourcehlineMuh1jAhj!hhhhhMubjA)}(hhh]h)}(h/Duplicate implicit target name: "procfs notes".h]h3Duplicate implicit target name: “procfs notes”.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBubah}(h]h ]h"]h$]h&]j}#alevelKtypejAsourcehlineMuh1jAhjN#hhhhhMubjA)}(hhh]h)}(h.Duplicate implicit target name: "sysfs notes".h]h2Duplicate implicit target name: “sysfs notes”.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBubah}(h]h ]h"]h$]h&]j#alevelKtypejAsourcehlineMuh1jAhj#hhhhhMubjA)}(hhh]h)}(h/Duplicate implicit target name: "procfs notes".h]h3Duplicate implicit target name: “procfs notes”.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBubah}(h]h ]h"]h$]h&]j'alevelKtypejAsourcehlineM$uh1jAhj~%hhhhhM$ubjA)}(hhh]h)}(h.Duplicate implicit target name: "sysfs notes".h]h2Duplicate implicit target name: “sysfs notes”.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj Cubah}(h]h ]h"]h$]h&]j'alevelKtypejAsourcehlineMAuh1jAhj'hhhhhMAubjA)}(hhh]h)}(h/Duplicate implicit target name: "procfs notes".h]h3Duplicate implicit target name: “procfs notes”.}(hj+ChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(Cubah}(h]h ]h"]h$]h&]j-alevelKtypejAsourcehlineMuh1jAhj,hhhhhMubjA)}(hhh]h)}(h.Duplicate implicit target name: "sysfs notes".h]h2Duplicate implicit target name: “sysfs notes”.}(hjFChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCCubah}(h]h ]h"]h$]h&]jX-alevelKtypejAsourcehlineMuh1jAhj-hhhhhMubjA)}(hhh]h)}(h/Duplicate implicit target name: "procfs notes".h]h3Duplicate implicit target name: “procfs notes”.}(hjaChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^Cubah}(h]h ]h"]h$]h&]j.alevelKtypejAsourcehlineM!uh1jAhj.hhhhhM!ubjA)}(hhh]h)}(h.Duplicate implicit target name: "sysfs notes".h]h2Duplicate implicit target name: “sysfs notes”.}(hj|ChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyCubah}(h]h ]h"]h$]h&]j#0alevelKtypejAsourcehlineM*uh1jAhj.hhhhhM*ubjA)}(hhh]h)}(h/Duplicate implicit target name: "procfs notes".h]h3Duplicate implicit target name: “procfs notes”.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCubah}(h]h ]h"]h$]h&]j4alevelKtypejAsourcehlineM uh1jAhjF3hhhhhM ubjA)}(hhh]h)}(h.Duplicate implicit target name: "sysfs notes".h]h2Duplicate implicit target name: “sysfs notes”.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCubah}(h]h ]h"]h$]h&]j5alevelKtypejAsourcehlineM0uh1jAhj4hhhhhM0ubjA)}(hhh]h)}(h/Duplicate implicit target name: "procfs notes".h]h3Duplicate implicit target name: “procfs notes”.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCubah}(h]h ]h"]h$]h&]jj6alevelKtypejAsourcehlineMxuh1jAhj;6hhhhhMxubjA)}(hhh]h)}(h.Duplicate implicit target name: "sysfs notes".h]h2Duplicate implicit target name: “sysfs notes”.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCubah}(h]h ]h"]h$]h&]j7alevelKtypejAsourcehlineMuh1jAhjp6hhhhhMubjA)}(hhh]h)}(h/Duplicate implicit target name: "procfs notes".h]h3Duplicate implicit target name: “procfs notes”.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDubah}(h]h ]h"]h$]h&]j7alevelKtypejAsourcehlineMuh1jAhjT7hhhhhMubjA)}(hhh]h)}(h.Duplicate implicit target name: "sysfs notes".h]h2Duplicate implicit target name: “sysfs notes”.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDubah}(h]h ]h"]h$]h&]jH8alevelKtypejAsourcehlineMuh1jAhj8hhhhhMubetransform_messages] transformerN include_log] decorationNhhub.