https://www.thinkwiki.org/w/api.php?action=feedcontributions&user=Blueyed&feedformat=atomThinkWiki - User contributions [en]2024-03-29T14:22:25ZUser contributionsMediaWiki 1.31.12https://www.thinkwiki.org/w/index.php?title=Thermal_Sensors&diff=55548Thermal Sensors2014-04-21T15:30:45Z<p>Blueyed: /* ThinkPad {{X220}} */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
This page summarizes known information about the locations and properties of thermal sensors on ThinkPad laptops. <br />
|}<br />
<br />
==Accessing the sensors==<br />
<br />
===Basic ACPI system temperature sensors===<br />
The primary means of accessing the thermal sensors is through the [[thinkpad-acpi]] module, up to 16 sensors are supported. When the module is loaded, the sensors (some of which may be inactive) are shown through the standard sysfs hwmon interface used by the lm-sensors utilities, and also in {{path|/proc/acpi/ibm/thermal}} (which is deprecated and has been removed from the latest versions of the module).<br />
<br />
lm-sensors/libsensors uses the hwmon interface exposed through {{path|/sys/bus/platform/devices/thinkpad_hwmon/}} to read the temperatures, note that the sysfs interface returns normal open errors instead of weird values for sensors that are not active (which the simplistic '''sensors''' command ignore). lm-sensors/libsensors can be configured to give proper names to each sensor, which will be used by any properly written sensor applet.<br />
<br />
{{cmdroot|sensors}}<br />
{{cmdresult|thinkpad-isa-0000<br />
Adapter: ISA adapter<br />
fan1: 3914 RPM<br />
CPU: +45.0°C<br />
LAN/Heatsink/HDAPS: +44.0°C<br />
PC-CARD slot: +35.0°C<br />
GPU: +48.0°C<br />
Main battery charger: +35.0°C<br />
ERROR: Can't get value of subfeature temp6_input: Can't read<br />
Bay battery charger: +0.0°C<br />
Main battery cells: +30.0°C<br />
ERROR: Can't get value of subfeature temp8_input: Can't read<br />
Bay battery cells: +0.0°C<br />
MCH: +42.0°C<br />
PLL clock/ICH/WLAN: +50.0°C<br />
Voltage regulator: +43.0°C}}<br />
<br />
To have 'sensors' use describing labels like above, you can add the following section to /etc/sensors3.conf, if not already there. This is an example for the T43. Similar technique apply for the other models. Use the sensor location findings below.<br />
<br />
chip "thinkpad-isa-0000"<br />
label fan1 "Fan"<br />
label temp1 "CPU"<br />
label temp2 "HDAPS"<br />
label temp3 "PCMCIA"<br />
label temp4 "GPU"<br />
label temp5 "System battery (front left, charging circuit)"<br />
label temp7 "System battery (rear right)"<br />
label temp9 "Bus between Northbridge and DRAM; Ethernet chip"<br />
label temp10 "Southbridge, WLAN and clock generator"<br />
label temp11 "Power circuitry"<br />
<br />
The old method to access the thermal readings is through the {{path|/proc}} interface:<br />
<br />
:{{cmdroot|cat /proc/acpi/ibm/thermal}}<br />
:{{cmdresult|temperatures: 44 41 33 42 33 -128 30 -128}}<br />
<br />
A value of -128 (i.e., 0x80 hex) means the sensor is not connected. For example, above the two -128 values belong to the UltraBay battery, which is not plugged in.<br />
<br />
If the ThinkPad supports the extended sensor set, eight more values will be displayed:<br />
<br />
:{{cmdroot|cat /proc/acpi/ibm/thermal}}<br />
:{{cmdresult|temperatures: 44 41 33 42 33 -128 30 -128 48 50 49 -128 -128 -128 -128 -128}}<br />
<br />
===HDAPS temperature sensor===<br />
The [[Active Protection System]] firmware also reports a temperature, which is identical to one of the ACPI sensors. The corresponding sensor is actually not inside the HDAPS chip, and sometimes not even close to it.<br />
:{{cmdroot|cat /sys/bus/platform/drivers/hdaps/hdaps/temp1}}<br />
:{{cmdresult|41}}<br />
<br />
===Harddisks SMART temperature sensor===<br />
The system hard disk temperature can be read through the disk's SMART interface:<br />
:{{cmdroot|<nowiki>smartctl -A /dev/hda | grep Temperature</nowiki>}}<br />
:{{cmdresult|194 Temperature_Celsius 0x0022 145 097 000 Old_age Always - 31}}<br />
<br />
Or, for SATA-equipped models running a recent Linux kernel (see [[Problems with SATA and Linux]]):<br />
<br />
:{{cmdroot|<nowiki>smartctl -A -d ata /dev/sda | grep Temperature</nowiki>}}<br />
:{{cmdresult|194 Temperature_Celsius 0x0022 145 097 000 Old_age Always - 31}}<br />
<br />
When the [[UltraBay Slim HDD Adapter]] or [[UltraBay Slim SATA HDD Adapter]] are used, the second hard disk will typically provide another temperature readout via its SMART interface, analogously to the above.<br />
<br />
Reading this sensor will typically cause a drive spin-up and head unload.<br />
<br />
===Hitachi harddisks <tt>SENSE CONDITION</tt> temperature sensor===<br />
<br />
Recent Hitachi disks provide a non-standard <tt>SENSE CONDITION</tt> command which reads the disk temperature without causing a spin-up or head load. The reported value is the same as when using SMART. This can be invoked, e.g., using {{cmdroot|hdparm -H}}, or the relevant code in {{CodeRef|tp-fancontrol}}. When using the <tt>libata</tt> driver, this requires kernel >= 2.6.19-rc1.<br />
<br />
==Utilities for viewing temperatures==<br />
<br />
The following utilities display the ThinkPad-specific thermal sensor readouts:<br />
* The above shell commands.<br />
* The "Sensors" builtin of [[GKrellM]] can show 6 specific ACPI sensors (out of up to 11).<br />
* [http://kima.sourceforge.net/ Kima] is a KDE applet that can display the 8 first ACPI sensors as well as the HDAPS sensor.<br />
* [http://www.kraus.tk/projects/IBMDoK/ IBMDoK], another KDE applet. Shows 4 specific sensors (out of up to 11). So far only tested at the {{T60}}.<br />
* There is an [http://munin.projects.linpro.no/wiki/plugin-ibm_acpi ibm_acpi plugin] for [http://munin.projects.linpro.no/ Munin].<br />
* [http://sensors-applet.sourceforge.net/ GNOME Sensors Applet] supports ibm_acpi.<br />
<br />
==Sensor locations==<br />
This information is model specific.<br />
<br />
===ThinkPad {{A31}}===<br />
Found by Milos Popovic using cooling spray to cool down components on a completely removed, running motherboard, to locate the sensors. Also reported [http://forum.thinkpads.com/viewtopic.php?t=31837 here].<br />
EC offset Index in "thermal" Location (estimated)<br />
0x78 1 CPU<br />
0x79 2 Battery (this one heats up when on battery power)<br />
0x7A 3 Power (sensor near power diodes and CPU; heats up <br />
when high power consumption, has crosstalk<br />
from CPU)<br />
0x7B 4 Ultrabay 2000 battery?<br />
0x7C 5 Northbridge (sensor next to Northbridge, also somewhat<br />
near GPU)<br />
0x7D 6 PCMCIA/ambient (sensor is a National Semiconductor LM75 <br />
Digital Temperature Sensor/Thermal Watchdog<br />
chip next to the 9-pin VGA connector; sits <br />
right under PCMCIA slots but doesn't touch)<br />
0x7E 7 Battery (this one stays near ambient temperature, <br />
even when on battery power)<br />
0x7F 8 Ultrabay 2000 battery?<br />
0xC0 none zero<br />
0xC1 none zero<br />
0xC2 none zero<br />
The following photos (resolution reduced for server space) show the locations found for the listed temperature sensors.<br />
{{gallery_start}}<br />
{{thumb|A31_2652M3U_systemboardtop_DSCN6105_tempsensors_lores.jpg|ThinkPad A31 sensor locations on top of motherboard.}}<br />
{{thumb|A31_2652M3U_systemboardbottom_DSCN6105_tempsensors_lores.jpg|ThinkPad A31 sensor locations on bottom of motherboard.}}<br />
{{gallery_end}}<br />
On this A31 systemboard (FRU 26P8398), there is a [http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2313 Maxim MAX1668] 5-channel remote/local temperature sensor (4 remote + 1 self temperature) on top of the systemboard, and a [http://www.national.com/pf/LM/LM75.html National Semiconductor LM75] single-channel "digital temperature sensor and thermal watchdog" chip. It would appear that the LM75 has the ability to hard shutdown the processor (without software intervention) if its temperature exceeds a given threshold. I'm not sure if it is wired for this, nor whether the Thinkpad changes the threshold temperature from the chip's power-up default of 80°C. A software application with drivers on the LM75 webpage is available that claims to allow direct access to the thermal sensor chip (this hasn't been tried, but could be useful in other models to determine if this sensor is somewhere on the MB, and which register it corresponds to). The MAX1668's self-temperature reading does not appear anywhere in the above temperature registers; it's not clear whether it is read at all, and whether it is to be found elsewhere in the EC memory. These two chips (LM75 and MAX1668) account for some of the sensors.<br />
<br />
===ThinkPad {{R51}}===<br />
The [[thinkpad-acpi]] documentation includes the report by Thomas Gruber:<br />
EC offset Index in "thermal" Location (estimated)<br />
0x78 1 CPU<br />
0x79 2 Mini-PCI<br />
0x7A 3 HDD<br />
0x7B 4 GPU<br />
0x7C 5 System battery<br />
0x7D 6 UltraBay battery<br />
0x7E 7 System battery<br />
0x7F 8 UltraBay battery<br />
0xC0 none ?<br />
0xC1 none ?<br />
0xC2 none ?<br />
<br />
===ThinkPad {{T40}}===<br />
The location of one of the sensors is identified [http://forum.thinkpads.com/viewtopic.php?t=11574 here].<br />
EC offset Index in "thermal" Location (estimated)<br />
0x78 1 CPU<br />
0x79 2 System board under rear left corner of Mini-PCI module<br />
0x7A 3 ?<br />
0x7B 4 GPU<br />
0x7C 5 Battery<br />
0x7D 6 n/a<br />
0x7E 7 Battery<br />
0x7F 8 n/a<br />
0xC0 none n/a<br />
0xC1 none n/a<br />
0xC2 none n/a<br />
<br />
===ThinkPad {{T43}}, {{T43p}}===<br />
Found by Shmidoax using cooling spray to cool down components and observe the effect on the sensors.<br />
EC offset Index in "thermal" Location (estimated)<br />
0x78 1 CPU<br />
0x79 2 Between PCMCIA slot and CPU (same as HDAPS module)<br />
0x7A 3 PCMCIA slot<br />
0x7B 4 GPU<br />
0x7C 5 System battery (front left = charging circuit)<br />
0x7D 6 UltraBay battery<br />
0x7E 7 System battery (rear right)<br />
0x7F 8 UltraBay battery<br />
0xC0 9 Bus between Northbridge and DRAM; Ethernet chip<br />
0xC1 10 Southbridge, WLAN and clock generator (under Mini-PCI card,<br />
under touchpad)<br />
0xC2 11 Power circuitry, on underside of system board under F2 key<br />
{{gallery_start}}<br />
{{thumb|T43-thermal-sensors.jpg|ThinkPad T43 sensor locations}}<br />
{{thumb|T43-2668-thermal-sensors-zoom.jpg|ThinkPad T43 sensor locations detail}}<br />
{{thumb|T43p-H8S2161.jpg|ThinkPad T43/p 26xx Embedded Controller Renesas H8S/2161BV}}<br />
{{gallery_end}}<br />
<br />
===ThinkPad {{T60}}===<br />
Found by Marco Kraus for use in [http://www.kraus.tk/projects/IBMDoK/ IBMDok].<br />
EC offset Index in "thermal" Location (estimated)<br />
0x78 1 CPU<br />
0x79 2 APS<br />
0x7A 3 PCM<br />
0x7B 4 GPU<br />
0x7C 5 BAT<br />
0x7D 6 n/a<br />
0x7E 7 BAT<br />
0x7F 8 n/a<br />
0xC0 9 n/a<br />
0xC1 10 n/a<br />
0xC2 11 n/a<br />
0xC3 12 n/a<br />
0xC4 13 n/a<br />
0xC5 14 n/a<br />
0xC6 15 n/a<br />
0xC7 16 n/a<br />
<br />
/etc/sensors.d/tpsensors<br />
chip "acpitz-virtual-0"<br />
label temp1 "CPU_0"<br />
label temp2 "CPU_1"<br />
chip "thinkpad-isa-0000"<br />
label fan1 "FAN"<br />
label temp1 "CPU"<br />
label temp2 "APS"<br />
label temp3 "PCM"<br />
label temp4 "GPU"<br />
label temp5 "BAT"<br />
ignore temp6 "n/a"<br />
label temp7 "BAT"<br />
ignore temp8 "n/a"<br />
label temp9 "BUS"<br />
label temp10 "PCI"<br />
label temp11 "PWR"<br />
ignore temp12 "n/a"<br />
ignore temp13 "n/a"<br />
ignore temp14 "n/a"<br />
ignore temp15 "n/a"<br />
ignore temp16 "n/a"<br />
<br />
The CPU thermal sensors seem to be exposed in both {{path|/proc/acpi/thermal_zone/THM0/temperature}} and {{path|/proc/acpi/thermal_zone/THM1/temperature}}, though the latter curiously seems to exist only in this file and nowhere in {{path|/proc/acpi/ibm/ecdump}}.<br />
<br />
===ThinkPad {{T61}}===<br />
<br />
'''Sensor numbering correlated with {{path|/sys/devices/platform/thinkpad_hwmon/temp*_input}}'''<br />
<br />
{| border="1" cellspacing="0" cellpadding="2"<br />
! Thermal ID !! Location/Related Hardware !! Confirmed !! Notes<br />
|-<br />
| 1 || CPU || {{Cyes}} || <br />
|-<br />
| 2 || North-bridge || {{Cpart}} || <br />
|-<br />
| 3 || Cardbus/ExpressCard Bay || {{Cyes}} || <br />
|-<br />
| 4 || GPU || {{Cyes}} || seperate from GPU's integrated sensor<br />
|-<br />
| 5 || 9-Cell Battery - Secondary || {{Cyes}} || static @ 50C on 6-cell<br />
|-<br />
| 6 || Ultrabay - Secondary || {{Cyes}} || Available only when device present<br />
|-<br />
| 7 || 6/9-Cell Battery - Primary || {{Cyes}} ||<br />
|-<br />
| 8 || UltraBay - Primary || {{Cyes}} || Available only when device present<br />
|-<br />
| 9 || RAM || {{Cyes}} ||<br />
|-<br />
| 10 || Right of RAM, Under Touchpad || {{Cyes}} ||<br />
|-<br />
| 11 || Mini-PCI Area || {{Cpart}} ||<br />
|}<br />
{{Todo|determine sensor 6 and 8 relavence for other UltraBay accessories}}<br />
{{Todo|confirm sensor 11}}<br />
<br />
'''Contributors:''' ''Daniel Castro, [[User:Lunatico|Lunatico]], [[User:andrewcbates|Andrew C Bates]]''<br />
<br />
===ThinkPad {{T61p}}===<br />
<br />
'''Sensor numbering correlated with {{path|/sys/devices/platform/thinkpad_hwmon/temp*_input}}'''<br />
<br />
{| border="1" cellspacing="0" cellpadding="2"<br />
! Thermal ID !! Location/Related Hardware !! Confirmed !! Notes<br />
|-<br />
| 1 || CPU || {{Cyes}} || <br />
|-<br />
| 2 || North-bridge || {{Cpart}} || <br />
|-<br />
| 3 || Cardbus/ExpressCard Bay || {{Cyes}} || <br />
|-<br />
| 4 || GPU || {{Cyes}} || seperate from GPU's integrated sensor<br />
|-<br />
| 5 || 9-Cell Battery - Secondary || {{Cyes}} || static @ 50C on 6-cell<br />
|-<br />
| 6 || Ultrabay - Secondary || {{Cyes}} || Available only when device present<br />
|-<br />
| 7 || 6/9-Cell Battery - Primary || {{Cyes}} ||<br />
|-<br />
| 8 || UltraBay - Primary || {{Cyes}} || Available only when device present<br />
|-<br />
| 9 || RAM || {{Cyes}} ||<br />
|-<br />
| 10 || Right of RAM, Under Touchpad || {{Cyes}} ||<br />
|-<br />
| 11 || Mini-PCI Area || {{Cpart}} ||<br />
|}<br />
{{Todo|determine sensor 6 and 8 relavence for other UltraBay accessories}}<br />
{{Todo|confirm sensor 11}}<br />
<br />
'''Contributors:''' ''[[User:andrewcbates|Andrew C Bates]]''<br />
<br />
===ThinkPad {{T400}}===<br />
Experimenting with a hair dryer, fgl_glxgears, grep and tools like that I ([[User:Dummyaccount|Dummyaccount]]) came to the following conclusions for the sensor-index mapping. More comments are provided at [http://www.cosy.sbg.ac.at/~shuber/misc-t400.php#temp_sensors].<br />
<br />
Index in "thermal" Location<br />
1 CPU neighbourhood (also via ACPI THM0)<br />
2 Ultrabay<br />
3 Express card<br />
4 ATI graphics module<br />
5 Main battery (always around 50°C)<br />
6 n/a (probably ultrabay battery)<br />
7 Main Battery (fits about the value reported by smapi)<br />
8 n/a (probably ultrabay battery)<br />
9 Hard disc<br />
10 Intel graphics module<br />
11 Heatsink?<br />
12 n/a<br />
13 n/a<br />
14 n/a<br />
15 n/a<br />
16 n/a<br />
<br />
'''sensors3.conf''' ready sniplet:<br />
<code><br />
chip "thinkpad-isa-0000"<br />
label fan1 "Fan"<br />
label temp1 "CPU neighbourhood (also via ACPI THM0)"<br />
label temp2 "Ultrabay"<br />
label temp3 "Express card"<br />
label temp4 "ATI graphics module"<br />
label temp5 "Main battery (always around 50°C)"<br />
label temp6 "n/a (probably ultrabay battery)"<br />
label temp7 "Main Battery (fits about the value reported by smapi)"<br />
label temp8 "n/a (probably ultrabay battery)"<br />
label temp9 "Hard disc"<br />
label temp10 "Intel graphics module"<br />
label temp11 "Heatsink?"<br />
label temp12 "n/a"<br />
label temp13 "n/a"<br />
label temp14 "n/a"<br />
label temp15 "n/a"<br />
label temp16 "n/a"<br />
</code><br />
<br />
===ThinkPad {{T400s}}===<br />
<br />
Index in "thermal" Location<br />
1 CPU neighbourhood (same as ACPI THM0)<br />
2 ?<br />
3 ?<br />
4 n/a<br />
5 Main battery<br />
6 Ultrabay battery<br />
7 Main Battery<br />
8 Ultrabay battery<br />
9 ?<br />
10 n/a<br />
11 ?<br />
12 n/a<br />
13 n/a<br />
14 n/a<br />
15 n/a<br />
16 n/a<br />
<br />
None of the these matches ACPI THM1, which (judging by the dramatic response to CPU load) is probably the CPU's on-die thermal sensor.<br />
<br />
===ThinkPad {{T500}}===<br />
According to [http://forum.thinkpads.com/viewtopic.php?f=45&t=75032], the sensors in the T500 "may be identical to those reported for the [[#ThinkPad T61|T61]]", with the possibility that #11 may be the CPU heatsink. "It is very closely correlated to cpu load but shows a lot more inertia than sensor 1 which changes almost instantaneously with cpu load."<br />
<br />
I ([[User:Nandhp]]) experimented with running glxgears, this produces a spike in #9, which does not occur under regular CPU load. #5 and #7 both belong to the main battery, for they disappear when it is removed. [http://www.kernel.org/doc/Documentation/laptops/thinkpad-acpi.txt] suggests #6 and #8 should be for the UltraBay battery. It also implies that #4 should be for the GPU, however, my model (which has an integrated GPU) does not have a #4 sensor. --[[User:Nandhp|Nandhp]] 19:27, 17 June 2009 (UTC)<br />
<br />
I ([[User:jal2]]) had a look into the schematics of the T500/W500 mainboard. There are thermal sensors at the CPU (internal diode), GbE (Q21), under dem SO-DIMM slots (Q31), graphics chip (discrete only, internal diode), at the WLAN slot (Q104) and at the bottom side below the ICH (Q93). All Qxx are small, three pin transistors marked in the silk screen. These sensors are connected to a MAX6693 (U4), which also measures its own temperature. U4 in turn is connected via SMB to the EC. No idea about the mapping of the sensors to the indices in thermal, maybe someone wants to determine it using cooling spray?<br />
<br />
Index in "thermal" Location<br />
1 CPU (also via ACPI THM0)<br />
2 ? (very similar to HDD smart temp)<br />
3 ? (also via ACPI THM1)<br />
4 n/a<br />
5 Main Battery A<br />
6 n/a (probably Second Battery A)<br />
7 Main Battery B<br />
8 n/a (probably Second Battery B)<br />
9 ? (possibly (integrated) GPU)<br />
10 ?<br />
11 ? (possibly heatsink)<br />
12 n/a<br />
13 n/a<br />
14 n/a<br />
15 n/a<br />
16 n/a<br />
<br />
===ThinkPad {{X22}} {{X23}} {{X24}}===<br />
There is a chip very close to the CPU, which monitors the processor and its own temperature, reports as temperatures 1 and 2 respectively. In X22, this sensor is ADM1023ARQ. In X24, the chip is NE1618. I think the sensor for temperature 3 is on the underside. Temperature 3 is high while charging battery.<br />
<br />
EC offset Index in "thermal" Location<br />
0x78 1 CPU<br />
0x79 2 just in front of CPU<br />
0x7A 3 ? gets hot when charging battery<br />
<br />
{{gallery_start}}<br />
{{thumb|X22_heatsink.JPG|location of CPU thermal monitor}}<br />
{{thumb|X22_planar_charge_volt_regulate_chips.JPG|temperature 3 is somewhere near battery prongs}}<br />
{{gallery_end}}<br />
<br />
===ThinkPad {{X31}}===<br />
I figured these out by myself ([[User:BDKMPSS|BDKMPSS]]), as there are just a few available, this wasn't a huge problem. I verified my presumptions with a contactless thermometer.<br />
EC offset Index in "thermal" Location (estimated)<br />
0x78 1 CPU<br />
0x79 2 n/a<br />
0x7A 3 GPU?<br />
0x7B 4 near or the ICH4M Southbrige, on the back of the Motherboard<br />
0x7C 5 Battery<br />
0x7D 6 Extended-Life-Battery; may also UltraBay battery<br />
0x7E 7 Battery<br />
0x7F 8 Extended-Life-Battery; may also UltraBay battery<br />
0xC0 none n/a<br />
0xC1 none n/a<br />
0xC2 none n/a<br />
<br />
0x7A "GPU?" is pretty hot and seems like the GPU, but as the Chipset and the GPU are cooled with the same heatsink it is difficult to separate them without roasting the machine. However the left and GPU side of the heatsink is much closer to the shown value than the right Chipset side.<br />
<br />
===ThinkPad {{X60}}===<br />
These sensors were found on my X60:<br />
Index Location Sensor* Idle** Idle*** Comments<br />
1 CPU CPU (0x78) 62 C 39 C<br />
3 Card? Crd (0x7A) -- --<br />
2 ?? APS (0x97) 43 C 46 C<br />
4 GPU GPU (0x7B) 59 C 39 C<br />
5 Battery No5 (0x7c) Disappears when battery removed<br />
7 Battery Bat (0x7E) Disappears when battery removed<br />
9 ?? Bus (0xC0) 44 C 41 C<br />
10 ?? PCI (0xC1) 50 C 35 C<br />
11 ?? Pwr (0xC2) -- --<br />
<br />
Unused/-known sensor numbers:<br />
6 -- Value N/A<br />
8 -- Value N/A<br />
12-16 -- Value N/A<br />
<br />
* Sensor names taken from "TPFanControl V0.62 by troubadix" for Windows<br />
** Idle values when running under TPFanControl's "Smart" mode; fan never engages if the machine just sits idle<br />
*** Mostly idle values when running in Linux Mint with the machine's firmware-based fan control<br />
<br />
===ThinkPad {{X61}}===<br />
[[User:Jdthood|I]] have started to figure out which sensors are which.<br />
<br />
Index Location How known?<br />
1 CPU Increases immediately on computationally intensive task<br />
2 HDAPS Always the same value as /sys/bus/platform/drivers/hdaps/hdaps/temp1<br />
3<br />
4<br />
5 Battery Disappears if battery removed<br />
7 Battery Disappears if battery removed<br />
9<br />
10<br />
<br />
===ThinkPad {{X200 Tablet}}===<br />
That's what [[User:Jdthood|I]] found out so far. Hope the guys in the german tp-forum have some more details. [http://thinkpad-forum.de/threads/143790-Temperatursensoren-im-X200-Tablet thread]<br />
<br />
Sensors Location How known?<br />
temp1 CPU Increases immediately on computationally intensive task<br />
temp5 Battery Disappears if battery removed <br />
temp7 Battery Disappears if battery removed<br />
<br />
===ThinkPad {{X220}}===<br />
On [[User:Jdthood|my]] X220 there is only one sensor, named <tt>fan1</tt>.<br />
<br />
<pre><br />
$ sensors<br />
acpitz-virtual-0<br />
Adapter: Virtual device<br />
temp1: +49.0°C (crit = +99.0°C) <br />
<br />
thinkpad-isa-0000<br />
Adapter: ISA adapter<br />
fan1: 1954 RPM<br />
<br />
$ lsmod | grep '^t[hp]'<br />
thinkpad_acpi 81587 0 <br />
tpm_tis 18537 1 <br />
tpm 22267 1 tpm_tis<br />
tpm_bios 13684 1 tpm<br />
tp_smapi 28471 0 <br />
thinkpad_ec 14450 2 hdaps,tp_smapi<br />
<br />
$ modinfo thinkpad-acpi|grep vers<br />
filename: /lib/modules/2.6.38-11-generic/kernel/drivers/platform/x86/thinkpad_acpi.ko<br />
version: 0.24<br />
srcversion: 0B6457473BB90551EE1D20F<br />
vermagic: 2.6.38-11-generic SMP mod_unload modversions <br />
</pre><br />
<br />
<br />
I am seeing more sensors on a '''X220 Tablet''':<br />
<pre><br />
$ sensors<br />
acpitz-virtual-0<br />
Adapter: Virtual device<br />
temp1: +52.0°C (crit = +99.0°C)<br />
<br />
coretemp-isa-0000<br />
Adapter: ISA adapter<br />
Physical id 0: +60.0°C (high = +86.0°C, crit = +100.0°C)<br />
Core 0: +55.0°C (high = +86.0°C, crit = +100.0°C)<br />
Core 1: +60.0°C (high = +86.0°C, crit = +100.0°C)<br />
<br />
thinkpad-isa-0000<br />
Adapter: ISA adapter<br />
fan1: 1853 RPM<br />
<br />
pkg-temp-0-virtual-0<br />
Adapter: Virtual device<br />
temp1: +55.0°C <br />
<br />
$ modinfo thinkpad_acpi|grep vers<br />
filename: /lib/modules/3.11.0-19-generic/kernel/drivers/platform/x86/thinkpad_acpi.ko<br />
version: 0.25<br />
srcversion: 61CA19938CD5679D7FEE38B<br />
vermagic: 3.11.0-19-generic SMP mod_unload modversions<br />
</pre></div>Blueyedhttps://www.thinkwiki.org/w/index.php?title=Thermal_Sensors&diff=55547Thermal Sensors2014-04-21T15:30:09Z<p>Blueyed: /* ThinkPad {{X220}} */ add another x220 sensors</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
This page summarizes known information about the locations and properties of thermal sensors on ThinkPad laptops. <br />
|}<br />
<br />
==Accessing the sensors==<br />
<br />
===Basic ACPI system temperature sensors===<br />
The primary means of accessing the thermal sensors is through the [[thinkpad-acpi]] module, up to 16 sensors are supported. When the module is loaded, the sensors (some of which may be inactive) are shown through the standard sysfs hwmon interface used by the lm-sensors utilities, and also in {{path|/proc/acpi/ibm/thermal}} (which is deprecated and has been removed from the latest versions of the module).<br />
<br />
lm-sensors/libsensors uses the hwmon interface exposed through {{path|/sys/bus/platform/devices/thinkpad_hwmon/}} to read the temperatures, note that the sysfs interface returns normal open errors instead of weird values for sensors that are not active (which the simplistic '''sensors''' command ignore). lm-sensors/libsensors can be configured to give proper names to each sensor, which will be used by any properly written sensor applet.<br />
<br />
{{cmdroot|sensors}}<br />
{{cmdresult|thinkpad-isa-0000<br />
Adapter: ISA adapter<br />
fan1: 3914 RPM<br />
CPU: +45.0°C<br />
LAN/Heatsink/HDAPS: +44.0°C<br />
PC-CARD slot: +35.0°C<br />
GPU: +48.0°C<br />
Main battery charger: +35.0°C<br />
ERROR: Can't get value of subfeature temp6_input: Can't read<br />
Bay battery charger: +0.0°C<br />
Main battery cells: +30.0°C<br />
ERROR: Can't get value of subfeature temp8_input: Can't read<br />
Bay battery cells: +0.0°C<br />
MCH: +42.0°C<br />
PLL clock/ICH/WLAN: +50.0°C<br />
Voltage regulator: +43.0°C}}<br />
<br />
To have 'sensors' use describing labels like above, you can add the following section to /etc/sensors3.conf, if not already there. This is an example for the T43. Similar technique apply for the other models. Use the sensor location findings below.<br />
<br />
chip "thinkpad-isa-0000"<br />
label fan1 "Fan"<br />
label temp1 "CPU"<br />
label temp2 "HDAPS"<br />
label temp3 "PCMCIA"<br />
label temp4 "GPU"<br />
label temp5 "System battery (front left, charging circuit)"<br />
label temp7 "System battery (rear right)"<br />
label temp9 "Bus between Northbridge and DRAM; Ethernet chip"<br />
label temp10 "Southbridge, WLAN and clock generator"<br />
label temp11 "Power circuitry"<br />
<br />
The old method to access the thermal readings is through the {{path|/proc}} interface:<br />
<br />
:{{cmdroot|cat /proc/acpi/ibm/thermal}}<br />
:{{cmdresult|temperatures: 44 41 33 42 33 -128 30 -128}}<br />
<br />
A value of -128 (i.e., 0x80 hex) means the sensor is not connected. For example, above the two -128 values belong to the UltraBay battery, which is not plugged in.<br />
<br />
If the ThinkPad supports the extended sensor set, eight more values will be displayed:<br />
<br />
:{{cmdroot|cat /proc/acpi/ibm/thermal}}<br />
:{{cmdresult|temperatures: 44 41 33 42 33 -128 30 -128 48 50 49 -128 -128 -128 -128 -128}}<br />
<br />
===HDAPS temperature sensor===<br />
The [[Active Protection System]] firmware also reports a temperature, which is identical to one of the ACPI sensors. The corresponding sensor is actually not inside the HDAPS chip, and sometimes not even close to it.<br />
:{{cmdroot|cat /sys/bus/platform/drivers/hdaps/hdaps/temp1}}<br />
:{{cmdresult|41}}<br />
<br />
===Harddisks SMART temperature sensor===<br />
The system hard disk temperature can be read through the disk's SMART interface:<br />
:{{cmdroot|<nowiki>smartctl -A /dev/hda | grep Temperature</nowiki>}}<br />
:{{cmdresult|194 Temperature_Celsius 0x0022 145 097 000 Old_age Always - 31}}<br />
<br />
Or, for SATA-equipped models running a recent Linux kernel (see [[Problems with SATA and Linux]]):<br />
<br />
:{{cmdroot|<nowiki>smartctl -A -d ata /dev/sda | grep Temperature</nowiki>}}<br />
:{{cmdresult|194 Temperature_Celsius 0x0022 145 097 000 Old_age Always - 31}}<br />
<br />
When the [[UltraBay Slim HDD Adapter]] or [[UltraBay Slim SATA HDD Adapter]] are used, the second hard disk will typically provide another temperature readout via its SMART interface, analogously to the above.<br />
<br />
Reading this sensor will typically cause a drive spin-up and head unload.<br />
<br />
===Hitachi harddisks <tt>SENSE CONDITION</tt> temperature sensor===<br />
<br />
Recent Hitachi disks provide a non-standard <tt>SENSE CONDITION</tt> command which reads the disk temperature without causing a spin-up or head load. The reported value is the same as when using SMART. This can be invoked, e.g., using {{cmdroot|hdparm -H}}, or the relevant code in {{CodeRef|tp-fancontrol}}. When using the <tt>libata</tt> driver, this requires kernel >= 2.6.19-rc1.<br />
<br />
==Utilities for viewing temperatures==<br />
<br />
The following utilities display the ThinkPad-specific thermal sensor readouts:<br />
* The above shell commands.<br />
* The "Sensors" builtin of [[GKrellM]] can show 6 specific ACPI sensors (out of up to 11).<br />
* [http://kima.sourceforge.net/ Kima] is a KDE applet that can display the 8 first ACPI sensors as well as the HDAPS sensor.<br />
* [http://www.kraus.tk/projects/IBMDoK/ IBMDoK], another KDE applet. Shows 4 specific sensors (out of up to 11). So far only tested at the {{T60}}.<br />
* There is an [http://munin.projects.linpro.no/wiki/plugin-ibm_acpi ibm_acpi plugin] for [http://munin.projects.linpro.no/ Munin].<br />
* [http://sensors-applet.sourceforge.net/ GNOME Sensors Applet] supports ibm_acpi.<br />
<br />
==Sensor locations==<br />
This information is model specific.<br />
<br />
===ThinkPad {{A31}}===<br />
Found by Milos Popovic using cooling spray to cool down components on a completely removed, running motherboard, to locate the sensors. Also reported [http://forum.thinkpads.com/viewtopic.php?t=31837 here].<br />
EC offset Index in "thermal" Location (estimated)<br />
0x78 1 CPU<br />
0x79 2 Battery (this one heats up when on battery power)<br />
0x7A 3 Power (sensor near power diodes and CPU; heats up <br />
when high power consumption, has crosstalk<br />
from CPU)<br />
0x7B 4 Ultrabay 2000 battery?<br />
0x7C 5 Northbridge (sensor next to Northbridge, also somewhat<br />
near GPU)<br />
0x7D 6 PCMCIA/ambient (sensor is a National Semiconductor LM75 <br />
Digital Temperature Sensor/Thermal Watchdog<br />
chip next to the 9-pin VGA connector; sits <br />
right under PCMCIA slots but doesn't touch)<br />
0x7E 7 Battery (this one stays near ambient temperature, <br />
even when on battery power)<br />
0x7F 8 Ultrabay 2000 battery?<br />
0xC0 none zero<br />
0xC1 none zero<br />
0xC2 none zero<br />
The following photos (resolution reduced for server space) show the locations found for the listed temperature sensors.<br />
{{gallery_start}}<br />
{{thumb|A31_2652M3U_systemboardtop_DSCN6105_tempsensors_lores.jpg|ThinkPad A31 sensor locations on top of motherboard.}}<br />
{{thumb|A31_2652M3U_systemboardbottom_DSCN6105_tempsensors_lores.jpg|ThinkPad A31 sensor locations on bottom of motherboard.}}<br />
{{gallery_end}}<br />
On this A31 systemboard (FRU 26P8398), there is a [http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2313 Maxim MAX1668] 5-channel remote/local temperature sensor (4 remote + 1 self temperature) on top of the systemboard, and a [http://www.national.com/pf/LM/LM75.html National Semiconductor LM75] single-channel "digital temperature sensor and thermal watchdog" chip. It would appear that the LM75 has the ability to hard shutdown the processor (without software intervention) if its temperature exceeds a given threshold. I'm not sure if it is wired for this, nor whether the Thinkpad changes the threshold temperature from the chip's power-up default of 80°C. A software application with drivers on the LM75 webpage is available that claims to allow direct access to the thermal sensor chip (this hasn't been tried, but could be useful in other models to determine if this sensor is somewhere on the MB, and which register it corresponds to). The MAX1668's self-temperature reading does not appear anywhere in the above temperature registers; it's not clear whether it is read at all, and whether it is to be found elsewhere in the EC memory. These two chips (LM75 and MAX1668) account for some of the sensors.<br />
<br />
===ThinkPad {{R51}}===<br />
The [[thinkpad-acpi]] documentation includes the report by Thomas Gruber:<br />
EC offset Index in "thermal" Location (estimated)<br />
0x78 1 CPU<br />
0x79 2 Mini-PCI<br />
0x7A 3 HDD<br />
0x7B 4 GPU<br />
0x7C 5 System battery<br />
0x7D 6 UltraBay battery<br />
0x7E 7 System battery<br />
0x7F 8 UltraBay battery<br />
0xC0 none ?<br />
0xC1 none ?<br />
0xC2 none ?<br />
<br />
===ThinkPad {{T40}}===<br />
The location of one of the sensors is identified [http://forum.thinkpads.com/viewtopic.php?t=11574 here].<br />
EC offset Index in "thermal" Location (estimated)<br />
0x78 1 CPU<br />
0x79 2 System board under rear left corner of Mini-PCI module<br />
0x7A 3 ?<br />
0x7B 4 GPU<br />
0x7C 5 Battery<br />
0x7D 6 n/a<br />
0x7E 7 Battery<br />
0x7F 8 n/a<br />
0xC0 none n/a<br />
0xC1 none n/a<br />
0xC2 none n/a<br />
<br />
===ThinkPad {{T43}}, {{T43p}}===<br />
Found by Shmidoax using cooling spray to cool down components and observe the effect on the sensors.<br />
EC offset Index in "thermal" Location (estimated)<br />
0x78 1 CPU<br />
0x79 2 Between PCMCIA slot and CPU (same as HDAPS module)<br />
0x7A 3 PCMCIA slot<br />
0x7B 4 GPU<br />
0x7C 5 System battery (front left = charging circuit)<br />
0x7D 6 UltraBay battery<br />
0x7E 7 System battery (rear right)<br />
0x7F 8 UltraBay battery<br />
0xC0 9 Bus between Northbridge and DRAM; Ethernet chip<br />
0xC1 10 Southbridge, WLAN and clock generator (under Mini-PCI card,<br />
under touchpad)<br />
0xC2 11 Power circuitry, on underside of system board under F2 key<br />
{{gallery_start}}<br />
{{thumb|T43-thermal-sensors.jpg|ThinkPad T43 sensor locations}}<br />
{{thumb|T43-2668-thermal-sensors-zoom.jpg|ThinkPad T43 sensor locations detail}}<br />
{{thumb|T43p-H8S2161.jpg|ThinkPad T43/p 26xx Embedded Controller Renesas H8S/2161BV}}<br />
{{gallery_end}}<br />
<br />
===ThinkPad {{T60}}===<br />
Found by Marco Kraus for use in [http://www.kraus.tk/projects/IBMDoK/ IBMDok].<br />
EC offset Index in "thermal" Location (estimated)<br />
0x78 1 CPU<br />
0x79 2 APS<br />
0x7A 3 PCM<br />
0x7B 4 GPU<br />
0x7C 5 BAT<br />
0x7D 6 n/a<br />
0x7E 7 BAT<br />
0x7F 8 n/a<br />
0xC0 9 n/a<br />
0xC1 10 n/a<br />
0xC2 11 n/a<br />
0xC3 12 n/a<br />
0xC4 13 n/a<br />
0xC5 14 n/a<br />
0xC6 15 n/a<br />
0xC7 16 n/a<br />
<br />
/etc/sensors.d/tpsensors<br />
chip "acpitz-virtual-0"<br />
label temp1 "CPU_0"<br />
label temp2 "CPU_1"<br />
chip "thinkpad-isa-0000"<br />
label fan1 "FAN"<br />
label temp1 "CPU"<br />
label temp2 "APS"<br />
label temp3 "PCM"<br />
label temp4 "GPU"<br />
label temp5 "BAT"<br />
ignore temp6 "n/a"<br />
label temp7 "BAT"<br />
ignore temp8 "n/a"<br />
label temp9 "BUS"<br />
label temp10 "PCI"<br />
label temp11 "PWR"<br />
ignore temp12 "n/a"<br />
ignore temp13 "n/a"<br />
ignore temp14 "n/a"<br />
ignore temp15 "n/a"<br />
ignore temp16 "n/a"<br />
<br />
The CPU thermal sensors seem to be exposed in both {{path|/proc/acpi/thermal_zone/THM0/temperature}} and {{path|/proc/acpi/thermal_zone/THM1/temperature}}, though the latter curiously seems to exist only in this file and nowhere in {{path|/proc/acpi/ibm/ecdump}}.<br />
<br />
===ThinkPad {{T61}}===<br />
<br />
'''Sensor numbering correlated with {{path|/sys/devices/platform/thinkpad_hwmon/temp*_input}}'''<br />
<br />
{| border="1" cellspacing="0" cellpadding="2"<br />
! Thermal ID !! Location/Related Hardware !! Confirmed !! Notes<br />
|-<br />
| 1 || CPU || {{Cyes}} || <br />
|-<br />
| 2 || North-bridge || {{Cpart}} || <br />
|-<br />
| 3 || Cardbus/ExpressCard Bay || {{Cyes}} || <br />
|-<br />
| 4 || GPU || {{Cyes}} || seperate from GPU's integrated sensor<br />
|-<br />
| 5 || 9-Cell Battery - Secondary || {{Cyes}} || static @ 50C on 6-cell<br />
|-<br />
| 6 || Ultrabay - Secondary || {{Cyes}} || Available only when device present<br />
|-<br />
| 7 || 6/9-Cell Battery - Primary || {{Cyes}} ||<br />
|-<br />
| 8 || UltraBay - Primary || {{Cyes}} || Available only when device present<br />
|-<br />
| 9 || RAM || {{Cyes}} ||<br />
|-<br />
| 10 || Right of RAM, Under Touchpad || {{Cyes}} ||<br />
|-<br />
| 11 || Mini-PCI Area || {{Cpart}} ||<br />
|}<br />
{{Todo|determine sensor 6 and 8 relavence for other UltraBay accessories}}<br />
{{Todo|confirm sensor 11}}<br />
<br />
'''Contributors:''' ''Daniel Castro, [[User:Lunatico|Lunatico]], [[User:andrewcbates|Andrew C Bates]]''<br />
<br />
===ThinkPad {{T61p}}===<br />
<br />
'''Sensor numbering correlated with {{path|/sys/devices/platform/thinkpad_hwmon/temp*_input}}'''<br />
<br />
{| border="1" cellspacing="0" cellpadding="2"<br />
! Thermal ID !! Location/Related Hardware !! Confirmed !! Notes<br />
|-<br />
| 1 || CPU || {{Cyes}} || <br />
|-<br />
| 2 || North-bridge || {{Cpart}} || <br />
|-<br />
| 3 || Cardbus/ExpressCard Bay || {{Cyes}} || <br />
|-<br />
| 4 || GPU || {{Cyes}} || seperate from GPU's integrated sensor<br />
|-<br />
| 5 || 9-Cell Battery - Secondary || {{Cyes}} || static @ 50C on 6-cell<br />
|-<br />
| 6 || Ultrabay - Secondary || {{Cyes}} || Available only when device present<br />
|-<br />
| 7 || 6/9-Cell Battery - Primary || {{Cyes}} ||<br />
|-<br />
| 8 || UltraBay - Primary || {{Cyes}} || Available only when device present<br />
|-<br />
| 9 || RAM || {{Cyes}} ||<br />
|-<br />
| 10 || Right of RAM, Under Touchpad || {{Cyes}} ||<br />
|-<br />
| 11 || Mini-PCI Area || {{Cpart}} ||<br />
|}<br />
{{Todo|determine sensor 6 and 8 relavence for other UltraBay accessories}}<br />
{{Todo|confirm sensor 11}}<br />
<br />
'''Contributors:''' ''[[User:andrewcbates|Andrew C Bates]]''<br />
<br />
===ThinkPad {{T400}}===<br />
Experimenting with a hair dryer, fgl_glxgears, grep and tools like that I ([[User:Dummyaccount|Dummyaccount]]) came to the following conclusions for the sensor-index mapping. More comments are provided at [http://www.cosy.sbg.ac.at/~shuber/misc-t400.php#temp_sensors].<br />
<br />
Index in "thermal" Location<br />
1 CPU neighbourhood (also via ACPI THM0)<br />
2 Ultrabay<br />
3 Express card<br />
4 ATI graphics module<br />
5 Main battery (always around 50°C)<br />
6 n/a (probably ultrabay battery)<br />
7 Main Battery (fits about the value reported by smapi)<br />
8 n/a (probably ultrabay battery)<br />
9 Hard disc<br />
10 Intel graphics module<br />
11 Heatsink?<br />
12 n/a<br />
13 n/a<br />
14 n/a<br />
15 n/a<br />
16 n/a<br />
<br />
'''sensors3.conf''' ready sniplet:<br />
<code><br />
chip "thinkpad-isa-0000"<br />
label fan1 "Fan"<br />
label temp1 "CPU neighbourhood (also via ACPI THM0)"<br />
label temp2 "Ultrabay"<br />
label temp3 "Express card"<br />
label temp4 "ATI graphics module"<br />
label temp5 "Main battery (always around 50°C)"<br />
label temp6 "n/a (probably ultrabay battery)"<br />
label temp7 "Main Battery (fits about the value reported by smapi)"<br />
label temp8 "n/a (probably ultrabay battery)"<br />
label temp9 "Hard disc"<br />
label temp10 "Intel graphics module"<br />
label temp11 "Heatsink?"<br />
label temp12 "n/a"<br />
label temp13 "n/a"<br />
label temp14 "n/a"<br />
label temp15 "n/a"<br />
label temp16 "n/a"<br />
</code><br />
<br />
===ThinkPad {{T400s}}===<br />
<br />
Index in "thermal" Location<br />
1 CPU neighbourhood (same as ACPI THM0)<br />
2 ?<br />
3 ?<br />
4 n/a<br />
5 Main battery<br />
6 Ultrabay battery<br />
7 Main Battery<br />
8 Ultrabay battery<br />
9 ?<br />
10 n/a<br />
11 ?<br />
12 n/a<br />
13 n/a<br />
14 n/a<br />
15 n/a<br />
16 n/a<br />
<br />
None of the these matches ACPI THM1, which (judging by the dramatic response to CPU load) is probably the CPU's on-die thermal sensor.<br />
<br />
===ThinkPad {{T500}}===<br />
According to [http://forum.thinkpads.com/viewtopic.php?f=45&t=75032], the sensors in the T500 "may be identical to those reported for the [[#ThinkPad T61|T61]]", with the possibility that #11 may be the CPU heatsink. "It is very closely correlated to cpu load but shows a lot more inertia than sensor 1 which changes almost instantaneously with cpu load."<br />
<br />
I ([[User:Nandhp]]) experimented with running glxgears, this produces a spike in #9, which does not occur under regular CPU load. #5 and #7 both belong to the main battery, for they disappear when it is removed. [http://www.kernel.org/doc/Documentation/laptops/thinkpad-acpi.txt] suggests #6 and #8 should be for the UltraBay battery. It also implies that #4 should be for the GPU, however, my model (which has an integrated GPU) does not have a #4 sensor. --[[User:Nandhp|Nandhp]] 19:27, 17 June 2009 (UTC)<br />
<br />
I ([[User:jal2]]) had a look into the schematics of the T500/W500 mainboard. There are thermal sensors at the CPU (internal diode), GbE (Q21), under dem SO-DIMM slots (Q31), graphics chip (discrete only, internal diode), at the WLAN slot (Q104) and at the bottom side below the ICH (Q93). All Qxx are small, three pin transistors marked in the silk screen. These sensors are connected to a MAX6693 (U4), which also measures its own temperature. U4 in turn is connected via SMB to the EC. No idea about the mapping of the sensors to the indices in thermal, maybe someone wants to determine it using cooling spray?<br />
<br />
Index in "thermal" Location<br />
1 CPU (also via ACPI THM0)<br />
2 ? (very similar to HDD smart temp)<br />
3 ? (also via ACPI THM1)<br />
4 n/a<br />
5 Main Battery A<br />
6 n/a (probably Second Battery A)<br />
7 Main Battery B<br />
8 n/a (probably Second Battery B)<br />
9 ? (possibly (integrated) GPU)<br />
10 ?<br />
11 ? (possibly heatsink)<br />
12 n/a<br />
13 n/a<br />
14 n/a<br />
15 n/a<br />
16 n/a<br />
<br />
===ThinkPad {{X22}} {{X23}} {{X24}}===<br />
There is a chip very close to the CPU, which monitors the processor and its own temperature, reports as temperatures 1 and 2 respectively. In X22, this sensor is ADM1023ARQ. In X24, the chip is NE1618. I think the sensor for temperature 3 is on the underside. Temperature 3 is high while charging battery.<br />
<br />
EC offset Index in "thermal" Location<br />
0x78 1 CPU<br />
0x79 2 just in front of CPU<br />
0x7A 3 ? gets hot when charging battery<br />
<br />
{{gallery_start}}<br />
{{thumb|X22_heatsink.JPG|location of CPU thermal monitor}}<br />
{{thumb|X22_planar_charge_volt_regulate_chips.JPG|temperature 3 is somewhere near battery prongs}}<br />
{{gallery_end}}<br />
<br />
===ThinkPad {{X31}}===<br />
I figured these out by myself ([[User:BDKMPSS|BDKMPSS]]), as there are just a few available, this wasn't a huge problem. I verified my presumptions with a contactless thermometer.<br />
EC offset Index in "thermal" Location (estimated)<br />
0x78 1 CPU<br />
0x79 2 n/a<br />
0x7A 3 GPU?<br />
0x7B 4 near or the ICH4M Southbrige, on the back of the Motherboard<br />
0x7C 5 Battery<br />
0x7D 6 Extended-Life-Battery; may also UltraBay battery<br />
0x7E 7 Battery<br />
0x7F 8 Extended-Life-Battery; may also UltraBay battery<br />
0xC0 none n/a<br />
0xC1 none n/a<br />
0xC2 none n/a<br />
<br />
0x7A "GPU?" is pretty hot and seems like the GPU, but as the Chipset and the GPU are cooled with the same heatsink it is difficult to separate them without roasting the machine. However the left and GPU side of the heatsink is much closer to the shown value than the right Chipset side.<br />
<br />
===ThinkPad {{X60}}===<br />
These sensors were found on my X60:<br />
Index Location Sensor* Idle** Idle*** Comments<br />
1 CPU CPU (0x78) 62 C 39 C<br />
3 Card? Crd (0x7A) -- --<br />
2 ?? APS (0x97) 43 C 46 C<br />
4 GPU GPU (0x7B) 59 C 39 C<br />
5 Battery No5 (0x7c) Disappears when battery removed<br />
7 Battery Bat (0x7E) Disappears when battery removed<br />
9 ?? Bus (0xC0) 44 C 41 C<br />
10 ?? PCI (0xC1) 50 C 35 C<br />
11 ?? Pwr (0xC2) -- --<br />
<br />
Unused/-known sensor numbers:<br />
6 -- Value N/A<br />
8 -- Value N/A<br />
12-16 -- Value N/A<br />
<br />
* Sensor names taken from "TPFanControl V0.62 by troubadix" for Windows<br />
** Idle values when running under TPFanControl's "Smart" mode; fan never engages if the machine just sits idle<br />
*** Mostly idle values when running in Linux Mint with the machine's firmware-based fan control<br />
<br />
===ThinkPad {{X61}}===<br />
[[User:Jdthood|I]] have started to figure out which sensors are which.<br />
<br />
Index Location How known?<br />
1 CPU Increases immediately on computationally intensive task<br />
2 HDAPS Always the same value as /sys/bus/platform/drivers/hdaps/hdaps/temp1<br />
3<br />
4<br />
5 Battery Disappears if battery removed<br />
7 Battery Disappears if battery removed<br />
9<br />
10<br />
<br />
===ThinkPad {{X200 Tablet}}===<br />
That's what [[User:Jdthood|I]] found out so far. Hope the guys in the german tp-forum have some more details. [http://thinkpad-forum.de/threads/143790-Temperatursensoren-im-X200-Tablet thread]<br />
<br />
Sensors Location How known?<br />
temp1 CPU Increases immediately on computationally intensive task<br />
temp5 Battery Disappears if battery removed <br />
temp7 Battery Disappears if battery removed<br />
<br />
===ThinkPad {{X220}}===<br />
On [[User:Jdthood|my]] X220 there is only one sensor, named <tt>fan1</tt>.<br />
<br />
<pre><br />
$ sensors<br />
acpitz-virtual-0<br />
Adapter: Virtual device<br />
temp1: +49.0°C (crit = +99.0°C) <br />
<br />
thinkpad-isa-0000<br />
Adapter: ISA adapter<br />
fan1: 1954 RPM<br />
<br />
$ lsmod | grep '^t[hp]'<br />
thinkpad_acpi 81587 0 <br />
tpm_tis 18537 1 <br />
tpm 22267 1 tpm_tis<br />
tpm_bios 13684 1 tpm<br />
tp_smapi 28471 0 <br />
thinkpad_ec 14450 2 hdaps,tp_smapi<br />
<br />
$ modinfo thinkpad-acpi|grep vers<br />
filename: /lib/modules/2.6.38-11-generic/kernel/drivers/platform/x86/thinkpad_acpi.ko<br />
version: 0.24<br />
srcversion: 0B6457473BB90551EE1D20F<br />
vermagic: 2.6.38-11-generic SMP mod_unload modversions <br />
</pre><br />
<br />
<br />
I am seeing more sensors:<br />
<pre><br />
$ sensors<br />
acpitz-virtual-0<br />
Adapter: Virtual device<br />
temp1: +52.0°C (crit = +99.0°C)<br />
<br />
coretemp-isa-0000<br />
Adapter: ISA adapter<br />
Physical id 0: +60.0°C (high = +86.0°C, crit = +100.0°C)<br />
Core 0: +55.0°C (high = +86.0°C, crit = +100.0°C)<br />
Core 1: +60.0°C (high = +86.0°C, crit = +100.0°C)<br />
<br />
thinkpad-isa-0000<br />
Adapter: ISA adapter<br />
fan1: 1853 RPM<br />
<br />
pkg-temp-0-virtual-0<br />
Adapter: Virtual device<br />
temp1: +55.0°C <br />
<br />
$ modinfo thinkpad_acpi|grep vers<br />
filename: /lib/modules/3.11.0-19-generic/kernel/drivers/platform/x86/thinkpad_acpi.ko<br />
version: 0.25<br />
srcversion: 61CA19938CD5679D7FEE38B<br />
vermagic: 3.11.0-19-generic SMP mod_unload modversions<br />
</pre></div>Blueyedhttps://www.thinkwiki.org/w/index.php?title=How_to_get_special_keys_to_work&diff=52879How to get special keys to work2011-09-03T19:50:17Z<p>Blueyed: /* Firefox 3.0 */ fix template usage</p>
<hr />
<div>==Overview==<br />
The following table gives an overview over the special keys found on ThinkPads and what is needed to make them work.<br />
{| {{prettytable}}<br />
! key !! standard function{{footnote|1}} !! tools supporting key{{footnote|2}} !! configurability{{footnote|3}} !! remarks<br />
|-<br />
| {{key|Fn}} || - || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || on release without completed key combination<br />
|-<br />
| {{key|Fn}}{{key|F1}} || - || [[thinkpad-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|F2}} || lock screen || [[thinkpad-acpi]] || full || in models from T/X/Z 60 onwards<br />
|-<br />
| {{key|Fn}}{{key|F3}} || blank screen || [[thinkpad-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|F4}} || suspend to ram || [[thinkpad-acpi]] || full || may generate ACPI event when not enabled in the thinkpad-acpi hotkey mask<br />
|-<br />
| {{key|Fn}}{{key|F5}} || switch bluetooth || [[thinkpad-acpi]] || full || in models starting from 2002<br />
|-<br />
| {{key|Fn}}{{key|F6}} || Video conference || || || Starting with the T400s (icon of a camera and a headset)<br />
|-<br />
| {{key|Fn}}{{key|F7}} || toggle display || [[thinkpad-acpi]], [[#tpb configuration|tpb]] || additional actions || [[Sample Fn-F7 script]]<br />
|-<br />
| {{key|Fn}}{{key|F8}} || toggle trackpoint/touchpad || [[thinkpad-acpi]], [[#tpb configuration|tpb]] || additional actions ||<br />
|-<br />
| {{key|Fn}}{{key|F9}} || eject from dock || [[thinkpad-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|F10}} || - || [[thinkpad-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|F11}} || - || [[thinkpad-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|F12}} || hibernate || [[thinkpad-acpi]] || full || may generate ACPI event when not enabled in the thinkpad-acpi hotkey mask<br />
|-<br />
| {{key|Fn}}{{key|Home}} / {{key|Fn}}{{key|Pos1}} || brightness up || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||<br />
|-<br />
| {{key|Fn}}{{key|End}} || brightness down || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||<br />
|-<br />
| {{key|Fn}}{{key|PageUp}} || toggle thinklight || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||<br />
|-<br />
| {{key|Fn}}{{key|Space}} || toggle zoom || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|Ins}} || - || [[thinkpad-acpi]]|| full ||<br />
|-<br />
| {{key|Fn}}{{key|Del}} || - || [[thinkpad-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|Backspace}} || - || [[thinkpad-acpi]] || full ||<br />
|-<br />
| {{key|NumLock}} || - || [[#xmodmap configuration|xmodmap]] || make working ||<br />
|-<br />
| {{key|Windows}} || - || [[#xmodmap configuration|xmodmap]] || remapping ||<br />
|-<br />
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} or {{ibmkey|ThinkVantage|#495988}} || help application || [[thinkpad-acpi]],[[#tpb configuration|tpb]], [[KMilo]] || full ||<br />
|-<br />
| {{ibmkey|Home|#494949}} || open web browser || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards<br />
|-<br />
| {{ibmkey|Search|#494949}} || open search application || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards<br />
|-<br />
| {{ibmkey|Mail|#494949}} || open mail application || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards<br />
|-<br />
| {{ibmkey|Favorites|#494949}} || open favorites || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards<br />
|-<br />
| {{ibmkey|Reload|#494949}} || reload web page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards<br />
|-<br />
| {{ibmkey|Abort|#494949}} || abort loading page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards<br />
|-<br />
| {{ibmkey|Backward|#494949}} || previous page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || ext. keyboards and ThinkPads starting from 2002<br />
|-<br />
| {{ibmkey|Forward|#494949}} || next page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || ext. keyboards and ThinkPads starting from 2002<br />
|-<br />
| {{ibmkey|Volume up|#494949}} || volume up || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||<br />
|-<br />
| {{ibmkey|Volume down|#494949}} || volume down || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||<br />
|-<br />
| {{ibmkey|Volume mute|#494949}} || mute volume || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||<br />
|-<br />
| {{ibmkey|Microphone mute|#494949}} || Microphone volume || || || Starting with the T400s<br />
|-<br />
| {{ibmkey|Play/Pause|#494949}} || start/pause playback || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Down)<br />
|-<br />
| {{ibmkey|Stop|#494949}} || stop playback || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Up)<br />
|-<br />
| {{ibmkey|Next|#494949}} || play next || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Right)<br />
|-<br />
| {{ibmkey|Previous|#494949}} || play previous || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Left)<br />
|-<br />
| {{ibmkey|Power|#494949}} || shutdown || [[thinkpad-acpi]] || full || triggered on pressing 3secs, but notebook goes off on 5sec press<br />
|-<br />
| Display lid || blank screen || acpi video || full ||<br />
|-<br />
| Ultrabay eject || announce ultrabay change || acpi bay || full ||<br />
|-<br />
| Dock eject || eject from dock || acpi dock || full ||<br />
|-<br />
| {{ibmkey|Tablet power|#494949}} || shutdown || [[thinkpad-acpi]] || full || triggered on pressing 3secs, but notebook goes off on 5sec press<br />
|-<br />
| {{ibmkey|Tablet orientation|#494949}} || rotates screen || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|-<br />
| {{ibmkey|Tablet shortcut|#494949}} || shortcut menu || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|-<br />
| {{ibmkey|Tablet Esc|#494949}} || esc key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|-<br />
| {{ibmkey|Tablet Enter|#494949}} || enter key || [[#mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|-<br />
| {{ibmkey|Tablet Up|#494949}} || up key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|-<br />
| {{ibmkey|Tablet Down|#494949}} || down key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|-<br />
| {{ibmkey|Tablet (unlabeled)|#494949}} || down key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|}<br />
<br />
For completeness, note that the WiFi enable/disable switch is located (on the X61 and other models that have it) just under the front edge of the base of the machine. You should see a small horizontal slider switch. Enable by sliding it rightwards, disable by sliding it leftwards.<br />
<br />
Tablet buttons vary with model. See [[Tablet Hardware Buttons]].<br />
<br />
==Triggering key events==<br />
<br />
===thinkpad_acpi events===<br />
The thinkpad_acpi driver should automatically select an appropriate mask for your machine.<br />
But on a rare occasions you might need to change the hotkey mask for key events to happen. In that case,<br />
read the recommended hotkey_mask from hotkey_recommended_mask, set the extra bits you need, and write<br />
the result to hotkey_mask. These files (actually, "sysfs attributes") can be found on {{path|sys/devices/platform/thinkpad_acpi}}<br />
<br />
These events can be used to configure HAL or [[How to configure acpid|acpid]].<br />
<br />
{| {{prettytable}}<br />
|+ events triggered by [[thinkpad-acpi]]. May vary on different models.<br />
! key !! acpi event || IBM ThinkPad hal event || Lenovo ThinkPad hal event<br />
|-<br />
| {{key|Fn}}{{key|F1}} || ibm/hotkey HKEY 00000080 00001001 || ||<br />
|-<br />
| {{key|Fn}}{{key|F2}} || ibm/hotkey HKEY 00000080 00001002 || 0x01:battery || 0x01:screenlock<br />
|-<br />
| {{key|Fn}}{{key|F3}} || ibm/hotkey HKEY 00000080 00001003 || 0x02:screenlock || 0x02:battery<br />
|-<br />
| {{key|Fn}}{{key|F4}} || ibm/hotkey HKEY 00000080 00001004 || 0x03:sleep || 0x03:sleep<br />
|-<br />
| {{key|Fn}}{{key|F5}} || ibm/hotkey HKEY 00000080 00001005 || 0x04:radio || 0x04:radio<br />
|- <br />
| {{key|Fn}}{{key|F6}} || ibm/hotkey HKEY 00000080 00001006 || ||<br />
|-<br />
| {{key|Fn}}{{key|F7}} || ibm/hotkey HKEY 00000080 00001007 || 0x06:switchvideomode || 0x06:switchvideomode<br />
|-<br />
| {{key|Fn}}{{key|F8}} || ibm/hotkey HKEY 00000080 00001008 || 0x07:zoom || 0x07:f22<br />
|- <br />
| {{key|Fn}}{{key|F9}} || ibm/hotkey HKEY 00000080 00001009 || 0x08:f24 || 0x08:f24<br />
|-<br />
| {{key|Fn}}{{key|F10}} || ibm/hotkey HKEY 00000080 0000100a || ||<br />
|-<br />
| {{key|Fn}}{{key|F11}} || ibm/hotkey HKEY 00000080 0000100b || ||<br />
|-<br />
| {{key|Fn}}{{key|F12}} || ibm/hotkey HKEY 00000080 0000100c || 0x0b:suspend || 0x0b:suspend<br />
|-<br />
| {{key|Fn}}{{key|Backspace}} || ibm/hotkey HKEY 00000080 0000100d || ||<br />
|-<br />
| {{key|Fn}}{{key|Ins}} || ibm/hotkey HKEY 00000080 0000100e || ||<br />
|-<br />
| {{key|Fn}}{{key|Del}} || ibm/hotkey HKEY 00000080 0000100f || ||<br />
|-<br />
| {{key|Fn}}{{key|Home}}/{{key|Fn}}{{key|Pos1}} || ibm/hotkey HKEY 00000080 00001010 || 0x0f:brightnessup || 0x0f:brightnessup<br />
|-<br />
| {{key|Fn}}{{key|End}} || ibm/hotkey HKEY 00000080 00001011 || 0x10:brightnessdown || 0x10:brightnessdown<br />
|-<br />
| {{key|Fn}}{{key|PgUp}} || ibm/hotkey HKEY 00000080 00001012 || 0x11:kbdillumtoggle || 0x11:kbdillumtoggle<br />
|-<br />
| {{key|Fn}}{{key|Space}} || ibm/hotkey HKEY 00000080 00001014 || 0x13:zoom || 0x13:zoom<br />
|-<br />
| {{ibmkey|Volume up|#494949}}|| ibm/hotkey HKEY 00000080 00001015 || 0x14:volumeup || 0x14:volumeup<br />
|-<br />
| {{ibmkey|Volume down|#494949}} || ibm/hotkey HKEY 00000080 00001016 || 0x15:volumedown || 0x15:volumedown<br />
|-<br />
| {{ibmkey|Volume mute|#494949}} || ibm/hotkey HKEY 00000080 00001017 || 0x16:mute || 0x16:mute<br />
|-<br />
| {{ibmkey|Microphone mute|#494949}} || ibm/hotkey HKEY 00000080 0000101b || ||<br />
|-<br />
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} or {{ibmkey|ThinkVantage|#495988}} || ibm/hotkey HKEY 00000080 00001018 || 0x17:prog1 || 0x17:prog1<br />
|-<br />
| Ultrabay eject || ibm/bay MSTR 00000003 00000000 || ||<br />
|-<br />
| Ultrabay inserted || ibm/bay MSTR 00000001 00000000 || ||<br />
|-<br />
| Dock eject || ibm/dock GDCK 00000003 00000001 || ||<br />
|-<br />
| Wireless switch || ibm/hotkey HKEY 00000080 00007000 || ||<br />
|}<br />
<br />
By disassembling and editing the DSDT, more events can be added. HKEY events are triggered by calls to the MKHQ function, e.g. <tt>\_SB.PCI0.LPC.EC.HKEY.MHKQ(0×1007)</tt> will trigger "ibm/hotkey HKEY 00000080 00001007". Most of these can be found in <tt>_Qxx</tt> methods within the DSDT, which are executed on embedded controller events, e.g. _Q10 is triggered by pressing Fn-F7. You can add a call to MKHQ into an existing <tt>_Qxx</tt> method to get it recognized by thinkpad-acpi as well as creating new <tt>_Qxx</tt> methods, which if you're lucky will correspond to an EC event that IBM never used (e.g. A 770 will send Fn-Home/End/PgUp/PgDn to thinkpad-acpi if hacked in this fashion). For example, [http://www.wormnet.eu/ibm-g40/morebuttons.dsl this is a modified block of DSDT for a G40].<br />
<br />
=== ACPI events from the <tt>button</tt> module===<br />
<br />
A few keys can generate ACPI events that result from the <tt>button</tt> kernel module, as long as they are masked off in the <tt>thinkpad-acpi</tt> hotkey's mask or the hotkey function of the latter module is disabled.<br />
<br />
If you want the ThinkPad's BIOS and ACPI methods to know about these keys being pressed, you probably want to leave them masked out from thinkpad-acpi, and use their non-HKEY events listed below, instead.<br />
<br />
{| {{prettytable}}<br />
|+ events triggered by ACPI when hotkey is masked out or disabled. <br />
! key !! event !! T60 event<br />
|-<br />
| {{ibmkey|Power|#494949}} || button/power PWRF 00000080 xxxxxxxx || button/power PWRF 00000080 00000001<br />
|-<br />
| {{key|Fn}}{{key|F4}} || button/sleep SLPB 00000080 00000001 || button/sleep SLPB 00000080 00000001<br />
|-<br />
| Display lid || button/lid LID 00000080 xxxxxxxx || button/lid LID 00000080 00000001<br />
|}<br />
<br />
===Configuration using HAL===<br />
<br />
Modern distributions like Ubuntu 8.10 and Fedora 10 use HAL to configure the kernel input devices. Xorg in turn gets these key events through the evdev driver and will no longer try to take control of the input devices away from the kernel.<br />
<br />
But before you get started on this you should make sure you have all the updates applied from your distro vendor as both Ubuntu 8.10 and Fedora 10 require some additional fixes that you might need.<br />
====Xorg problems====<br />
You may find that by default some buttons will work in Xorg and others will not (e.g. Fn-Space). The reason for this is that Xorg is limited to 255 different key codes, and some keys are mapped to key codes that are out of range for Xorg. The Xorg developers are aware of this issue and plan to fix it in XKB2. Unfortunately support for XKB2 has slipped and is now planned for Xorg 1.8, sometime in 2010.<br />
<br />
{{HINT|You can get Fn-Space working via ACPI events. Here is a practical [http://www.thinkwiki.org/wiki/Installing_Ubuntu_10.04_(Lucid_Lynx)_on_a_ThinkPad_Z61m#Make_Fn-Space_.28Screen_Magnify.29_work HOWTO] for Ubuntu 10.04 Lucid}} <br />
<br />
Default HAL config files are located in {{path|/usr/share/hal/fdi}}. If you create any custom files you should instead place them in {{path|/etc/hal/fdi}} to prevent them from getting overwritten by the next hal-info package update of your distribution.<br />
<br />
You can see for instance the mapping between {{path|/usr/share/hal/fdi/information/10freedesktop/30-keymap-module-thinkpad-acpi.fdi}} and that of the kernel [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=include/linux/input.h;hb=HEAD input.h] header file.<br />
<br />
keyboard events defined in input.h in the 0x100 range and above will be ignored by current Xorg. If you want to work around this you can change the hal config file such that for instance the Fn-F5 key no longer maps to '''radio''' (0x181) but to '''wlan''' (238) or '''bluetooth''' (237).<br />
<br />
Have a look at the HAL documentation for samples on how to configure your own events [http://hal.freedesktop.org/quirk/quirk-keymap-index.html].<br />
<br />
To check if a key is being handled by Xorg, start xev and press the key. If you do not see any output from the keypress it is not handled. If it is handled you can configure the key in Gnome with gnome-keybinding-properties (kde??).<br />
<br />
====bypassing Xorg====<br />
Since the keys are handled by the kernel and passed through hal, we can bypass Xorg and have a key run a specific task.<br />
This is useful if Xorg cannot handle the key (out of range, or X doesn't<br />
matter this input key), or if your not running X. This can be done with the<br />
'''halevt''' program (located at [http://www.nongnu.org/halevt|http://www.nongnu.org/halevt] ; for Debian systems, use a version >= 0.1.5-1). This program can react to some events detected by HAL such a special key press. For example, to run a custom script when Fn-F5 (Radio toggle) is pressed, you could put a stanza in halevt's configuration file ('''/etc/halevt/halevt.xml''', in XML format) :<br />
<br />
<nowiki><br />
<halevt:Device match="hal.info.category = input"><br />
<!-- Warning: /etc/sudoers must be configured to let 'halevt' user<br />
runs the given command ! --><br />
<halevt:Condition name="ButtonPressed" value="wlan" exec="sudo /usr/local/sbin/toggle_wlan"/><br />
</halevt:Device><br />
</nowiki><br />
<br />
Here, '''sudo''' is used as the halevt daemon runs with its own user, which don't have required rights to do the work in the custom script ''/usr/local/sbin/toggle_wlan'', so in ''/etc/sudoers'', we have :<br />
<br />
halevt ALL = NOPASSWD: /usr/local/sbin/toggle_wlan<br />
<br />
Be careful when writing halevt configuration, as the daemon isn't very verbose about what it does or not : you don't get error messages when command run fails…<br />
<br />
===inputlirc configuration===<br />
<br />
An alternative to halevt is inputlirc [http://ajoute.org/wiki/doc/linux/inputlirc]. After installation of the packages inputlirc [http://packages.debian.org/search?keywords=inputlirc] and lirc, you can test it with the irw command. To run custom scripts you need a configuration for the irexec daemon ('''/etc/lirc/lircrc''') :<br />
<br />
<nowiki><br />
begin<br />
prog = irexec<br />
button = KEY_RADIO<br />
config = /etc/acpi/wireless.sh<br />
end<br />
<br />
begin<br />
prog = irexec<br />
button = KEY_SCREENLOCK<br />
config = /etc/acpi/thinkpad-lockorbattery.sh<br />
end<br />
</nowiki><br />
<br />
===tpb configuration===<br />
{| {{prettytable}}<br />
|+ configuration keywords for [[tpb]] (to put in {{path|/etc/tpbrc}})<br />
! key !! config keyword<br />
|-<br />
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || THINKPAD<br />
|-<br />
| {{ibmkey|Home|#494949}} || HOME<br />
|-<br />
| {{ibmkey|Search|#494949}} || SEARCH<br />
|-<br />
| {{ibmkey|Mail|#494949}} || MAIL<br />
|-<br />
| {{ibmkey|Favorites|#494949}} || FAVORITES<br />
|-<br />
| {{ibmkey|Reload|#494949}} || RELOAD<br />
|-<br />
| {{ibmkey|Abort|#494949}} || ABORT<br />
|-<br />
| {{ibmkey|Backward|#494949}} || BACKWARD<br />
|-<br />
| {{ibmkey|Forward|#494949}} || FORWARD<br />
|-<br />
| {{key|Fn}} || FN<br />
|-<br />
| {{key|Fn}}{{key|Space}} || CALLBACK (zoom on/off)<br />
|-<br />
| {{key|Fn}}{{key|PageUp}} || CALLBACK (thinklight on/off)<br />
|-<br />
| {{key|Fn}}{{key|F7}} || CALLBACK (display lcd/crt/both)<br />
|-<br />
| {{key|Fn}}{{key|F8}} || CALLBACK (expand on/off)<br />
|-<br />
| {{key|Fn}}{{key|Home}} / {{key|Fn}}{{key|Pos1}} || CALLBACK (brightness <percent>)<br />
|-<br />
| {{key|Fn}}{{key|End}} || CALLBACK (brightness <percent>)<br />
|-<br />
| {{ibmkey|Volume up|#494949}} || CALLBACK (volume <percent>)<br />
|-<br />
| {{ibmkey|Volume down|#494949}} || CALLBACK (volume <percent>)<br />
|-<br />
| {{ibmkey|Volume mute|#494949}} || CALLBACK (mute on/off)<br />
|}<br />
<br />
To all parameter keywords should be assigned the full path to the executables supposed to be started on key press.<br />
The exectable provided for the CALLBACK keyword should take the parameters given in parentheses and act according to them.<br />
If you want to use xmodmap for the HOME, SEARCH, MAIL, FAVORITES, RELOAD, ABORT, BACKWARD, FORWARD and FN keys you should<br />
provide a <tt>XEVENTS OFF</tt> in your {{path|/etc/tpbrc}}. <br />
You can use an appropriate executable to [[How to inject fake keystrokes|inject fake keystrokes]].<br />
<br />
For Debian users, tpb is started from {{path|/etc/X11/Xsession.d/90tpb}}.<br />
<br />
'''Sound Button configuration'''<br />
<br />
''Note: Tested on T60p with Ubuntu 6.06 LTS''<br />
<br />
Most Thinkpads have a hardware sound mixer, thus the volumes buttons should work without configuration. However, this change is not reflected in the software mixer. tpb has a switch to enable software mixer support via OSS. The manual recommends this only for devices without a hardware mixer, but it also works for other hadware mixer enabled devices, even with the ALSA system. Just put MIXER ON in your {{path|/etc/tpbrc}} file and you can see the effect immediately in any ALSA mixer (e.g. kmix). For this to work you need write permissions to {{path|/dev/nvram}}.<br />
<br />
''Note: Tested on X21 with Ubuntu 6.06 LTS''<br />
<br />
On the ThinkPad X21 (and maybe some other older models) ACPI causes problems with tpb. On an X21 using acpi the volume buttons would work occasionally, and the OSD for tpb functions would rarely work. If a volume buttons was pressed too often, sometimes the computer would enter a low power (unplugged state) and would require a reboot. The solution is to use APM instead of ACPI. Instructions can be found in [[How_to_make_APM_work]].<br />
<br />
===KMilo configuration===<br />
The programs to be executed by [[KMilo]] are configured via the KDE Control Center (<tt>kcontrol</tt>), under <tt>System Administration --> IBM Thinkpad Laptop</tt>. Note that you can use appropriate commands to [[How to inject fake keystrokes|inject fake keystrokes]].<br />
<br />
===xmodmap configuration===<br />
xmodmap enables you to edit the modifier map and keymap tables that are used to translate keycodes into keysyms.<br />
Understood? Well, basically it allows you to give the X server a dictionary for the translation of keycodes like "97" into more human readable synonyms like "Home". This way xmodmap allows you to make the special keys of your keyboard known to X applications.<br />
<br />
To discover the keycode that a certain keypress produces, use the tool {{cmduser|xev}} <br />
<br />
Usually you should write your keycode-keysym associations into the file {{path|~/.Xmodmap}}. This file is usually read by the X session startup scripts of your system, so that the mappings automatically get included everytime you run the X server.<br />
<br />
The {{path|~/.Xmodmap}} lines for our purpose are in the form of<br />
keycode <keycode> = <keysym><br />
<br />
Load the assocation using the command<br />
<br />
{{cmduser|xmodmap ~/.Xmodmap}} <br />
<br />
(some configurations do this automatically upon X startup). <br />
<br />
The following table shows the keycodes generated by the ThinkPad special keys and sensible keysyms to assign them to.<br />
{| {{prettytable}}<br />
|+ keycodes and recommended keysyms<br />
! key !! keycode !! keysym<br />
|-<br />
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || 159 || XF86LaunchA<br />
|-<br />
| {{ibmkey|Backward|#494949}} || 234 || XF86Back or F19<br />
|-<br />
| {{ibmkey|Forward|#494949}} || 233 || XF86Forward or F20<br />
|-<br />
| {{ibmkey|Play/Pause|#494949}} || 162 || XF86AudioPlay<br />
|-<br />
| {{ibmkey|Stop|#494949}} || 164 || XF86AudioStop<br />
|-<br />
| {{ibmkey|Next|#494949}} || 153 || XF86AudioNext<br />
|-<br />
| {{ibmkey|Previous|#494949}} || 144 || XF86AudioPrev<br />
|-<br />
<br />
<br />
| {{ibmkey|Home|#494949}} || 178 || XF86HomePage<br />
|-<br />
| {{ibmkey|Search|#494949}} || 229 || XF86Search<br />
|-<br />
| {{ibmkey|Mail|#494949}} || 236 || XF86Mail<br />
|-<br />
| {{ibmkey|Favorites|#494949}} || 230 || XF86AddFavorite or XF86Favorites<br />
|-<br />
| {{ibmkey|Reload|#494949}} || 231 || XF86Reload<br />
|-<br />
| {{ibmkey|Abort|#494949}} || 232 || XF86Stop<br />
|-<br />
| {{key|Fn}} || 227 || F35<br />
|}<br />
<br />
Note: You can also use xkeycaps (an X tool to display and edit the X keyboard mapping) to generate proper .Xmodmap.<br />
<br />
Note: if you are running [[tpb]] you might need to add the line <tt>XEVENTS=off</tt> into your tpbrc to stop it from grabbing the key events and allow them to get through to X instead. See [[http://www.thinkwiki.org/wiki/Tpb]] for more detailed instruction on how to use tpb and xmodmap.<br />
<br />
Note: XF86Forward and XF86Back do not work correctly in Firefox. You may want to map them to F19 and F20 instead if you use Firefox.<br />
<br />
Note: The "XF86AudioPlay" etc. just works with a few programs. To make it work with more multimedia programs you have map the key to use something like [http://www.kde-apps.org/content/show.php/ReMoot?content=63140 ReMoot]. ReMoot is a command line wrapper that control 18 of the most common multimedia applications. <br />
<br />
=====Enabling the Windows and Menu Keys=====<br />
On some systems the Windows and Menu keys may not be recognized. You can enable then by<br />
making the following changes:<br />
<br />
keycode 115 = F13<br />
keycode 227 = F35<br />
<br />
F13 and F35 are used for the Windows and and Menu keys respectively. Labelling keycpode 227 as "Menu" may conflict with the right-mouse-click event.<br />
<br />
=====Using Caps Lock as Super L (Windows key)=====<br />
You can easily use Caps Lock as Win key by adding the following in your ~/.Xmodmap:<br />
! No Caps Lock<br />
clear lock<br />
! Caps Lock as Win key<br />
add mod4 = Caps_Lock<br />
=====NumLock=====<br />
On the ThinkPad {{600}}, {{T20}}, {{T21}}, {{T22}}, {{T30}}, {{X20}}, {{X21}}, {{X31}}, {{X40}}, {{T42p}}, {{T43}}, {{R51}}, {{R52}} and possibly other models, X does not recognize the keycode for {{key|NumLk}} = {{key|Shift}}+{{key|ScrLk}}. To fix this, add the following to {{path|~/.Xmodmap}} in your home directory or {{path|/etc/X11/Xmodmap}} and run <tt>xmodmap</tt>, ex: <tt>xmodmap ~/.Xmodmap</tt>:<br />
keycode 77 = Num_Lock<br />
<br />
The following might work better for you:<br />
keycode 77 = Num_Lock Num_Lock<br />
because you will only get keycode 77 together with Shift (at least on the {{T43}})<br />
<br />
This configuration also enables the respective LED.<br />
<br />
Please note, pressing the {{key|Shift}}+{{key|ScrLk}} key combination, without first following the above configuration, will start an accessibility feature, which will allow the numeric keypad to maneuver the mouse pointer. Starting this accessibility feature and subsequently running xmodmap, as described above, results in the accessibility feature and the numeric lock LED functioning simultaneously. As such, the above configuration should be completed before the accessibility feature is started in order to produce numbers.<br />
======T60 (and possibly others)======<br />
It seems that on the T60, PrtSc, ScrLk and Pause all generate the correct keycodes, however Fn-PrtSc (labelled as SysRq) generates keycode 64 (Alt_L) followed by the expected 111 (Sys_Req) on down and the same thing in the opposite order on release. Fn-ScrLk (labelled as NmLk) does indeed toggle the Numlock, but only seems to register as an X event the first time it is engaged. The above solution does not appear to work. This is perhaps because the Numlock toggle is built into the firmware rather than controlled by the kernel. Finally, Fn-Pause (labelled as Break) generates keycode 37 (Control_L) followed by the expected keycode 110 (Break) on down and the same thing in reverse order on release.<br />
<br />
=====NumPad (KeyPad) keys access by a key combination=====<br />
The current state is that you have to switch NumLock '''on''' via {{key|Fn}}+{{key|ScrLk}} and then e.g. type {{key|u}} to get a {{key|KP_4}} (NumPad 4). To get back to normal keyboard, you have to type {{key|Fn}}+{{key|ScrLk}} again.<br />
<br />
Some people (including me) are missing on recent Thinkpads the option to have Fn as a modifier key to access the NumPad instead, i.e. and e.g. {{key|Fn}}+{{key|u}} gives you {{key|KP_4}}.<br />
<br />
There is currently no way to make this work in a simple way (pleeeease correct me if I am wrong!), though there is a work-around. Instead of using {{key|Fn}} for accessing the NumPad, {{key|CapsLock}} can get this function by being mapped as Mode_switch (the {{key|AltGr}} on international keyboards). The {{key|Fn}} can be remapped to be Caps_Lock - while at the same time retaining its function to access the special laptop functions (e.g. {{key|Fn}}+{{key|F4}} for sleep}}, by using .Xmodmap.<br />
<br />
So on my {{R60}} running fvwm@{{Slackware}} 12.1 the .Xmodmap would look like this:<br />
<br />
! Make the forward and back buttons work<br />
keycode 233 = XF86Forward<br />
keycode 234 = XF86Back<br />
! Make the WIN key to Super modifier<br />
keycode 115 = Super_L<br />
! Set the Caps_Lock physical key to Mode_switch (like AltGr on intl. keyboards)<br />
keycode 66 = Mode_switch<br />
! Set the Fn key to work as Caps_Lock now. The special key combos like Fn-F4 for "sleep" still work then<br />
keycode 227 = Caps_Lock<br />
clear lock<br />
add lock = Caps_Lock<br />
! Now we activate those new keys. Find some free mod slots (xmodmap) and put them there.<br />
clear mod4<br />
clear mod5<br />
add mod4 = Super_L<br />
add mod3 = Mode_switch<br />
! It's time to add the keypad keys to the third position of the key definition (pure shift mode_switch shift+mode_switch)<br />
keycode 16 = 7 ampersand KP_7<br />
keycode 17 = 8 asterisk KP_8<br />
keycode 18 = 9 parenleft KP_9<br />
keycode 19 = 0 parenright KP_Divide<br />
keycode 30 = u U KP_4<br />
keycode 31 = i I KP_5<br />
keycode 32 = o O KP_6<br />
keycode 33 = p P KP_Multiply<br />
keycode 44 = j J KP_1<br />
keycode 45 = k K KP_2<br />
keycode 46 = l L KP_3<br />
keycode 47 = semicolon colon KP_Subtract<br />
keycode 58 = m M KP_0<br />
! ... I have to use the coma key, too, on the keypad...so I set it to be F20 (which is not existing on normal keyboards and thus is free... check for side effects in programmes accepting F12+ keys!)<br />
keycode 59 = comma less F20 <br />
keycode 60 = period greater KP_Decimal <br />
keycode 61 = slash question KP_Add<br />
<br />
{{WARN|Your keycodes might be different as well as your '''mod''#''''' settings.}}<br />
Use {{cmduser|xmodmap}} and {{cmduser|xmodmap -pke}} to check your ModMap, and the tool {{cmduser|xev}} to obtain your exact key codes.<br />
<br />
===Mapping keys with setkeycodes===<br />
You can use the setkeycodes command to remap certain keys. I.e. you can use {{cmdroot|setkeycodes 6e 109 6d 104 69 28 6b 1}} to map the Tablets Up and Down keys to the standard PageUp and PageDown keys and Tablet Escape and Enter to their respective keys.<br />
<br />
The following table shows the scancodes generated by the ThinkPad keys. They vary with model - see [[Tablet Hardware Buttons]].<br />
{| {{prettytable}}<br />
|+ scancodes<br />
! key !! scancode<br />
|-<br />
| {{ibmkey|Tablet orientation|#494949}} || 0x6c<br />
|-<br />
| {{ibmkey|Tablet Shortcut|#494949}} || 0x68<br />
|-<br />
| {{ibmkey|Tablet Esc|#494949}} || 0x6b<br />
|-<br />
| {{ibmkey|Tablet Enter|#494949}} || 0x69<br />
|-<br />
| {{ibmkey|Tablet Up|#494949}} || 0x6d<br />
|-<br />
| {{ibmkey|Tablet Down|#494949}} || 0x6e<br />
|-<br />
| {{ibmkey|Tablet (unlabeled)|#494949}} || 0x67<br />
|}<br />
<br />
===acpi_fakekey===<br />
You can turn acpi events into user-level xevents by putting <tt>acpi_fakekey</tt> commands into the acpi action scripts. There are several layers involved in using acpi keys in this way, so I'll go through the example of using the ThinkVantage button to open xmms.<br />
<br />
My ThinkVantage button generates an '''acpi event''' "ibm/hotkey HKEY 00000080 00001018", so we have the event file <tt>/etc/acpi/events/ThinkVantage</tt> for it which executes the script <tt>/etc/acpi/actions/fakekey-macro.sh</tt>. <br />
<pre><br />
event=ibm/hotkey HKEY 00000080 00001018<br />
action=/etc/acpi/actions/fakekey-macro.sh<br />
</pre><br />
In turn, the executable <tt>/etc/acpi/actions/fakekey-macro.sh</tt> script calls acpi_fakekey with the '''key number''' defined in <tt>/usr/share/acpi-support/key-constants</tt> as $KEY_MACRO which is 112 (you could just as well choose an other key number, just make sure that it doesn't belong to something else like the "j" key or something). <br />
<pre><br />
#!/bin/sh<br />
. /usr/share/acpi-support/key-constants<br />
acpi_fakekey $KEY_MACRO <br />
</pre><br />
I have no idea how this actually corresponds to which xevent is generated, so I can find out out by running the program <tt>xev</tt> and hitting the ThinkVantage button while the mouse is in the <tt>xev</tt> window (remember to <tt>/etc/init.d/acpid restart</tt> first if you just created the <tt>/etc/acpi/events/ThinkVantage</tt> file). I get something popping up in the terminal where I ran xev that looks like this:<br />
<pre><br />
KeyPress event, serial 30, synthetic NO, window 0x2800001,<br />
root 0x6a, subw 0x0, time 2000522842, (138,83), root:(781,500),<br />
state 0x0, keycode 239 (keysym 0x0, NoSymbol), same_screen YES,<br />
XLookupString gives 0 bytes: <br />
XmbLookupString gives 0 bytes: <br />
XFilterEvent returns: False<br />
<br />
KeyRelease event, serial 30, synthetic NO, window 0x2800001,<br />
root 0x6a, subw 0x0, time 2000522842, (138,83), root:(781,500),<br />
state 0x0, keycode 239 (keysym 0x0, NoSymbol), same_screen YES,<br />
XLookupString gives 0 bytes: <br />
XFilterEvent returns: False<br />
</pre><br />
This tells me that the <tt>acpi_fakekey 112</tt> as executed by hitting the ThinkVantage button generates KeyPress event followed by a KeyRelease event with '''keycode''' 239 and that this keycode has been assigned no corresponding '''keysym'''. Thus, I am free to assign the keycode to any keysym I want. You can find a list of available keysyms in <tt>/usr/share/X11/XKeysymDB</tt>. Again try and pick one that is not likely to have already been taken by something, such as <tt>XF86LaunchA</tt>. To assign this keysym to keycode 239, you can either edit ~/.Xmodmap on an individual user basis, or edit the systemwide <tt>/etc/X11/Xmodmap</tt> file to contain the line<br />
<pre><br />
keycode 239 = XF86LaunchA<br />
</pre><br />
If you choose to go with the former, you may need to run <tt>xmodmap ~/.Xmodmap</tt> for every login session in order to read in your ~/.Xmodmap file if your window manager does not do it for you. Regardless of which option you choose, you can run <tt>xmodmap <file></tt> to read in the updated Xmodmap file without logging out and logging back in.<br />
<br />
You should now find that hitting the ThinkVantage button creates the following output from <tt>xev</tt>:<br />
<pre><br />
KeyPress event, serial 55, synthetic NO, window 0x2800001,<br />
root 0x6a, subw 0x0, time 2001286078, (0,106), root:(643,523),<br />
state 0x0, keycode 239 (keysym 0x1008ff4a, XF86LaunchA), same_screen YES,<br />
XLookupString gives 0 bytes: <br />
XmbLookupString gives 0 bytes: <br />
XFilterEvent returns: False<br />
<br />
KeyRelease event, serial 55, synthetic NO, window 0x2800001,<br />
root 0x6a, subw 0x0, time 2001286078, (0,106), root:(643,523),<br />
state 0x0, keycode 239 (keysym 0x1008ff4a, XF86LaunchA), same_screen YES,<br />
XLookupString gives 0 bytes: <br />
XFilterEvent returns: False<br />
</pre><br />
Note the change of <tt>(keysym 0x0, NoSymbol)</tt> to <tt>(keysym 0x1008ff4a, XF86LaunchA)</tt>.<br />
<br />
You're now ready to map <tt>XF86LaunchA</tt> to executing xmms. This is highly dependent on what keygrabber you decide to use. For openbox, I edit my <tt>~/.config/openbox/rc.xml</tt> file and add the following entry in the <keyboard> section:<br />
<pre><br />
<keybind key="XF86LaunchA"><br />
<action name="Execute"><br />
<startupnotify><br />
<enabled>true</enabled><br />
</startupnotify><br />
<command><br />
xmms<br />
</command><br />
</action><br />
</keybind><br />
</pre><br />
After, right clicking on the desktop and selecting the "Reconfigure" menu option, you should then have xmms pop up when you hit the ThinkVantage key.<br />
<br />
==Example Applications==<br />
===Web Browsers===<br />
====Firefox (<3.0)====<br />
<br />
There are various ways to assign actions to the browser keys. The easiest way is to install [http://mozilla.dorando.at/keyconfig.xpi keyconfig.xpi] from http://mozilla.dorando.at, which adds a menu entry Tools->Keyconfig. Then you can assign any action you want to the F19/F20 keys (you still need to create {{path|~/.Xmodmap}} as explained above).<br />
<br />
<br />
The remaining discussion gives you various more complicated ways to achieve the same thing. <br />
To have firefox make use of the browser keys you need to modify one of its files{{footnote|4}}.<br />
To do this you will first need to extract it from the {{path|browser.jar}} archive. Do...<br />
<br />
Step 1: Edit .Xmodmap and add entries for F19 and F20 as explained above.<br />
<br />
Step 2:<br />
<br />
Note: <firefox-directory> is probably /usr/lib/firefox. Use your version so, if you have 3.0.1 or 3.0.2 use /usr/lib/firefox-3.0.1<br />
<br />
:{{cmdroot|cd <firefox-directory>/chrome}}<br /><br />
:{{cmdroot|unzip browser.jar}}<br />
<br />
The file of interest is {{path|content/browser/browser.xul}}. Edit it {and don't forget to make a backup copy first}...<br />
:{{cmdroot|vi content/browser/browser.xul}}<br />
<br />
Look for the '''<keyset id="mainKeyset">''' section and add the following lines within...<br />
<key id="goBackKb" keycode="VK_F19" command="Browser:Back" /><br />
<key id="goForwardKb" keycode="VK_F20" command="Browser:Forward" /><br />
<br />
The Command you need for Next Tab <br />
<key id="goBackTabKb" keycode="VK_F19" oncommand="gBrowser.mTabContainer.advanceSelectedTab(-1)" /><br />
For the Previous Tab <br />
<key id="goForwardTabKb" keycode="VK_F20" oncommand="gBrowser.mTabContainer.advanceSelectedTab(1)" /><br />
<br />
Now save the file and repackage the {{path|browser.jar}} archive...<br />
:{{cmdroot|zip -rD0 browser.jar content/browser/}}<br />
<br />
That's it.<br />
<br />
Step 3: Restart Firefox.<br />
<br />
{{HINT|Outdated: Another interesting Page on Firefox is http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/ It uses different key mappings (F19 resp. F20) but a ready [http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/dqdnavkeys-1.2.xpi .xpi] is provided which is pretty comfortable. However, this xpi file does not install on Firefox 1.5. or later.}}<br />
<br />
{{HINT| You can also use the [http://extensionroom.mozdev.org/more-info/keyconfig keyconfig] extension to configure custom keys. This extension works with Firefox 1.5 and also with Firefox 2.0. The Command you need for Next Tab is gBrowser.mTabContainer.advanceSelectedTab(1,true); For Previous Tab its gBrowser.mTabContainer.advanceSelectedTab(-1,true); You can alternatively install the [http://www.pqrs.org/~tekezo/firefox/extensions/functions_for_keyconfig/index.html functions for keyconfig] and set the variable f4kc_NextTab to F20 and f4kc_PrevTab to F19.}}.<br />
<br />
====Firefox 3.0====<br />
Thankfully the people at Mozilla decided to include the expected functionality for the XF86Back and XF86Forward keysyms in the new release so all you need to do is<br />
<br><code># printf 'keycode 234 = XF86Back\nkeycode 233 = XF86Forward' >> /etc/X11/Xmodmap</code><br><br />
And to make this take effect immediately (i.e., without having to log out and log in again), as a regular user run:<br />
<br>{{cmduser|Xmodmap /etc/X11/Xmodmap}}<br />
<br />
For Hardy Heron, the xmodmap command is all lowercase. Also, the /etc/X11/Xmodmap file is not being read on boot. I've added the command to my .bashrc to have it called on startup.<br />
<br />
====Konqueror====<br />
KDE allows you set key mappings for KDE applications (Go to KMenu > System > Control Center > Regional & Accessibility > Keyboard Shortcuts). By default (at least in KDE 3.5), XF86Back and XF86Forward are set as alternatives to Alt-Left and Alt-Right, and are mapped to KDE Back and Forward navigation actions. <br />
<br />
If you use Konqueror as your only browser, you only need to set up {{path|~/.Xmodmap}} as described [[#xmodmap configuration|above]] to assign ThinkPad back/forward keys to the symbols XF86Back/XF86Forward. This also make these keys work for other KDE applications such as Quanta Plus, KPackage and so on (not all KDE applications honor this setting, e.g. KDE help system doesn't).<br />
<br />
If you want to use Firefox, however, the above settings do not work. You will have to map ThinkPad back/forward keys to F19/F20 as described [[#Firefox|above]], and change KDE navigation key settings to use F19/F20 instead of the default.<br />
<br />
====Opera====<br />
However this isn't a simple configration file, you can set your browser manually.<br /><br />
Go to <i>Tool > Settings > Mouse and keyboard > Keyboard settings > Edit > Browser Window</i>. There add F19 - Back and F20 - Forward. Now you can surf using your TP keys ;-)<br />
<br />
====Epiphany====<br />
By default, the back/forward keys, when bound to XF86Back/XF86Forward, successfully navigate through the history.<br />
<br />
To get them switch through your tabs, you could use the extension from [http://crashman.homelinux.org/~andre/public/epiphany%20extensions/thinkpad%20browserkeys/ here]<br />
You just need to edit your Xmodmap like described for Firefox < 3.0 (bind the keys on F19 and F20)<br />
<br />
====W3M (under Emacs)====<br />
I'm not sure that I want to use the back and forward keys all the time in Emacs, but while browsing the web it is useful to have them.<br />
<br />
On my X61s running Fedora 13, I've found that by adding the following lines to my .emacs, I'm able to do just that:<br />
<br />
<code>(eval-after-load "w3m"<br>'(progn<br>(define-key w3m-mode-map [XF86Back] 'w3m-view-previous-page)<br> (define-key w3m-mode-map [XF86Forward] 'w3m-view-next-page)))</code><br />
<br />
===Open an application===<br />
<br />
To configure the ThinkVantage button to open a terminal window in Gnome:<br />
<br />
Step 1:<br />
Use xev to find the keycode generated by the button on your machine. In my case is is 159.<br />
<br />
Step 2:<br />
Create an entry in .Xmodmap like so<br />
<br />
keycode 159 = XF86LaunchA<br />
<br />
replacing 159 by the keycode found in step 1. Load the map using<br />
<br />
:{{cmd|xmodmap ~/.Xmodmap}}<br />
<br />
Step 3:<br />
Configure the required function (e.g. open terminal window) in System->Preferences->Keyboard shortcuts<br />
<br />
===Window Managers===<br />
====fvwm====<br />
To get the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys to cycle through pages in the virtual desktop, add this to your {{path|~/.fvwmrc}}:<br />
Key XF86Back A A Scroll -100000 0<br />
Key XF86Forward A A Scroll +100000 0<br />
If you use multiple virtual desktops, you could instead use the keys to flip between them by using GotoDesk.<br />
<br />
====fluxbox====<br />
To get the keys to cycle through pages in the virtual desktop, add this to your {{path|~/.fluxbox/keys}}:<br />
None F19 :PrevWorkspace<br />
None F20 :NextWorkspace<br />
<br />
====pekwm configuration====<br />
You can make the two browser keys switch workspaces in pekwm, by adding the following two lines to the {{path|~/.pekwm/keys}} file:<br />
KeyPress = "Mod1 XF86Back" { Actions = "GoToWorkspace prev" }<br />
KeyPress = "Mod1 XF86Forward" { Actions = "GoToWorkspace next" }<br />
<br />
====pwm====<br />
Another example how to use these two keys to switch between pwm tabs. These two lines should be added to {{path|~/.pwm/keys-default.conf}} or {{path|/etc/pwm/keys-default.conf}}:<br />
kbind "Back", "switch_rot", -1<br />
kbind "Forward", "switch_rot", 1<br />
<br />
====IceWM====<br />
To make IceWM cycle workspaces using the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys, change these two options in {{path|~/.icewm/preferences}} (Provided you assigned keysyms F19 and F20 with xmodmap):<br />
# "Previous workspace" shortcut<br />
KeySysWorkspacePrev="F19"<br />
# "Next workspace" shortcut<br />
KeySysWorkspaceNext="F20"<br />
<br />
==== Gnome/metacity ====<br />
<br />
On {{Debian}} Lenny, using Gnome 2.22.2, once the acpid and acpi-support packages are installed, most Fn keys do the right thing out of the box.<br />
<br />
For more advanced configuration, follow the [https://wiki.ubuntu.com/Keybindings Ubuntu guide].<br />
<br />
===Other Uses===<br />
====Console tools configuraton====<br />
To make the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys useful in console, add this to your keymap ({{path|/etc/console/boottime.kmap.gz}} in {{Debian}}):<br />
keycode 158 = Decr_Console<br />
keycode 159 = Incr_Console<br />
<br />
Alternatively you can load this script (perhaps on system startup) to enable Backward/Forward button console (VT) switch:<br />
<br />
#!/bin/sh<br />
echo keycode 158 = Decr_Console | loadkeys<br />
echo keycode 159 = Incr_Console | loadkeys<br />
<br />
It should work with any distro.<br />
<br />
====Cycling through tabs====<br />
In Gnome and Xfce4, Ctrl-PageUp/Ctrl-PageDown move to the previous/following open tab in all applications that have tabbed user interfaces (terminal emulator, web browser, ...). To make use of the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys for this task, there're two possibilities.<br />
<br />
For both ways, you should map the keycodes 233 and 234 to XF86Back and XF86Forward as described in [[#xmodmap_configuration|xmodmap configuration]].<br />
<br />
=====Using xautomation=====<br />
xautomation can be found [http://hoopajoo.net/projects/xautomation.html here].<br />
<br />
Create two files with permissions 755:<br />
<br />
{{path|/usr/local/bin/tp_back}}:<br />
<bash><br />
#!/bin/bash<br />
/usr/bin/xte 'keydown Control_L' 'keydown Page_Up' 'keyup Page_Up' 'keyup Control_L'<br />
</bash><br />
<br />
{{path|/usr/local/bin/tp_forward}}:<br />
<bash><br />
#!/bin/bash<br />
/usr/bin/xte 'keydown Control_L' 'keydown Page_Down' 'keyup Page_Down' 'keyup Control_L'<br />
</bash><br />
<br />
Use your desktop's keyboard shortcut editor to assign XF86Back as a shortcut for tp_back and XF86Forward as a shortcut for tp_forward.<br />
<br />
This should work in all distros and with all window managers (you might have to use other key combinations than Ctrl-PageUp and Ctrl-PageDown).<br />
<br />
=====Redirecting XF86Back/XF86Forward=====<br />
Create {{path|/etc/X11/xkb/compat/thinkpad}}:<br />
<pre><br />
// $XFree86$<br />
// XFree86 special keysyms<br />
default partial xkb_compatibility "basic" {<br />
interpret.repeat= True;<br />
<br />
interpret XF86Back {<br />
action = Redirect(Key=<PGUP>, modifiers=Control);<br />
};<br />
interpret XF86Forward {<br />
action = Redirect(Key=<PGDN>, modifiers=Control);<br />
};<br />
};<br />
</pre><br />
<br />
Edit {{path|/etc/X11/xkb/compat/complete}} and add <tt>'''augment "thinkpad"'''</tt> so that it looks similar to the following:<br />
<pre><br />
// $XKeyboardConfig: xkbdesc/compat/complete,v 1.3 2005/10/17 00:42:11 svu Exp $<br />
// $Xorg: complete,v 1.3 2000/08/17 19:54:34 cpqbld Exp $<br />
default xkb_compatibility "complete" {<br />
include "basic"<br />
augment "iso9995"<br />
augment "mousekeys"<br />
augment "accessx(full)"<br />
augment "misc"<br />
augment "xfree86"<br />
augment "level5"<br />
augment "thinkpad"<br />
};<br />
</pre><br />
<br />
==External Sources==<br />
*[http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-51537 IBMs page on configuring the ThinkPad buttons (ThinkPad, Access IBM, Mail, Search, and Home buttons) under Linux]<br />
*[http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/ Rob Mayoffs page on using IBM Keyboard Navigation Keys in Linux Mozilla and Firefox]<br />
*[http://snarfed.org/space/thinkpad+keys+in+firefox Ryan Barretts blog article about using the browser keys in Firefox]<br />
*[http://chaotika.org/~bluesceada/?page=soft&sub=thinkpad#acpibutn DennisG's help to get the ibm-acpi buttons do useful things] on a {{Z61e}} and possibly {{Z61m}}, {{Z61t}} and {{Z61p}}<br />
*[https://help.ubuntu.com/community/KeyboardShortcuts/#Replacing%20keys%20with%20other%20keys using xbindkeys and xmacro to override key bindings]<br />
{{footnotes|<br />
#Note that the associated functionality for Fn-F* key combinations is not consistent amongst all ThinkPads. We are maintaining [[Default meanings of special keys|a table of associated meanings]].<br />
#if there are more than one tool listed, one is sufficient<br />
#'full' means you can completely reassign any action to be triggered by the key, 'additional actions' means you can trigger actions in addition to the standard function of the key, which can not be changed.<br />
#Thanks go to Ryan Barrett for writing the [http://snarfed.org/space/thinkpad+keys+in+firefox little howto] on [http://snarfed.org/space/start his blog].<br />
}}<br />
<br />
== Weblinks ==<br />
* http://www.freedesktop.org/wiki/Software/XKeyboardConfig</div>Blueyedhttps://www.thinkwiki.org/w/index.php?title=List_of_DMI_IDs&diff=52878List of DMI IDs2011-09-03T19:17:45Z<p>Blueyed: /* X series */ Add X220 Tablet</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
This page maintains a database of [http://en.wikipedia.org/wiki/Desktop_Management_Interface DMI] information which can be used to identify ThinkPad models. It is intended as an aid for driver development.<br />
{{HELP|We need more information about older models, especially those released before 2004. Please [[#Adding_entries|add your model]] to the database.}}<br />
{{NOTE|If your ThinkPad is not using the [[BIOS Upgrade Downloads|latest BIOS]], and you would be willing to [[BIOS Upgrade|upgrade your BIOS]], please add your ThinkPad to this table twice: '''before''' and '''after''' the BIOS upgrade. This information helps us a great deal, so your contribution would be very appreciated.}}<br />
|}<br />
<br />
==DMI ID database==<br />
<br />
<div style="font-size: 80%"><br />
{| border="1" cellspacing="0" cellpadding="2" style="text-align:center"<br />
|-<br />
! Model<br />
! <tt>system-<br />manufa<br />cturer</tt><br />
! <tt>system-<br />product-<br />name</tt><br />
! <tt>system-<br />version</tt><br />
! <tt>baseboard-<br />manufa<br />cturer</tt><br />
! <tt>baseboard-<br />product-<br />name</tt><br />
! <tt>base<br />board-<br />version</tt><br />
! <tt>chassis-<br />manufa<br />cturer</tt><br />
! <tt>chassis-<br />version</tt><br />
! <tt>bios-<br />vendor</tt><br />
! <tt>bios-<br />version</tt><br />
! <tt>bios-<br />release-<br />date</tt><br />
! Embedded controller<br />
! Notes<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
====Numbered series====<br />
|-<br />
| {{240X}} 2609-61U<br />
|| IBM || 260961U || Not Available || IBM || 2609BS1 || Not Available || IBM || Not Available || IBM || 1.03.09 || 12/21/1999 <br />
||<br />
||<br />
|-<br />
| {{570}} 2644-1AU<br />
|| IBM || 26441AU || Not Available || IBM || 26441AU || Not Available || IBM || Not Available || IBM || IMET65WW || 11/11/99<br />
||<br />
||<br />
|-<br />
| {{570E}} 2644-5AU<br />
|| IBM || 26445AU || Not Available || IBM || 26445AU || Not Available || IBM || Not Available || IBM || IUET25WW || 12/11/1999<br />
||<br />
||<br />
|-<br />
| {{600E}} 2645-5AU<br />
|| IBM || 26455AU || Not Available || IBM || 26455AU || Not Available || IBM || Not Available || IBM || INET36WW || 11/20/1999<br />
||<br />
||<br />
|-<br />
| {{600X}} 2645-5FU<br />
|| IBM || 26455FU || Not Available || IBM || 26455FU || Not Available || IBM || Not Available || IBM || INET55WW || 11/30/1999<br />
||<br />
||<br />
|-<br />
| {{600X}} 2645-8EU<br />
|| IBM || 26458EU || Not Available || IBM || 26458EU || Not Available || IBM || Not Available || IBM || ITET54WW || 11/30/1999 <br />
||<br />
||<br />
|-<br />
| {{600X}} 2645-8EU<br />
|| IBM || 26458EU || Not Available || IBM || 26458EU || Not Available || IBM || Not Available || IBM || ITET48WW || 11/30/1999 <br />
||<br />
||POST/BIOS Version 1.13 old prior to upgrade <br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====A series====<br />
|-<br />
| {{A21m}} 2628-FSG<br />
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET24WW (1.02b) || 12/19/2000 <br />
|| <br />
||<br />
|-<br />
| {{A21m}} 2628-FSG<br />
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET36WW (1.09 ) || 05/08/2003 <br />
||<br />
||<br />
|-<br />
| {{A21m}} 2628-GTU<br />
|| IBM || 2628GTU || Not Available || IBM || 2628GTU || Not Available || IBM || Not Available || IBM || KXET29WW (1.03d) || 03/21/2001 <br />
||<br />
||<br />
|-<br />
| {{A22e}} 2655-KG1<br />
|| IBM || 2655KG1 || Not Available || IBM || 2655KG1 || Not Available || IBM || Not Available || IBM || 10ET23WW (1.04 ) || 09/05/2001 <br />
||<br />
||<br />
|-<br />
| {{A22e}} 2655-KG1<br />
|| IBM || 2655KG1 || Not Available || IBM || 2655KG1 || Not Available || IBM || Not Available || IBM || 10ET26WW (1.07 ) || 06/13/2003 <br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
| {{A22p}} 2629-USG<br />
|| IBM || 2629USG || Not Available || IBM || 2629USG || Not Available || IBM || Not Available || IBM || KYET36WW (1.09a) || 10/17/2002 <br />
||<br />
|| {{T-WARN|Outdated BIOS}}<br />
|-<br />
| {{A22p}} 2629-A2G<br />
|| IBM || 2629A2G || Not Available || IBM || 2629A2G || Not Available || IBM || Not Available || IBM || KYET38WW (1.11 ) || 05/20/2004 <br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
| {{A31}} 2652-PBU<br />
|| IBM || 2652PBU || Not Available || IBM || 2652PBU || Not Available || IBM || Not Available || IBM || 1NET15WW (1.09 ) || 04/06/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1NHT04WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{A31p}} 2653-RNG<br />
|| IBM || 2653RNG || Not Available || IBM || 2653RNG || Not Available || IBM || Not Available || IBM || 1NET16WW (1.10 ) || 10/19/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1NHT08WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{A31p}} 2653-H6U<br />
|| IBM || 2653H6U || Not Available || IBM || 2653H6U || Not Available || IBM || Not Available || IBM || 1GET31WW (1.03 ) || 07/23/2002<br />
||<br />
|| {{T-WARN|Missing EC string, extremely outdated BIOS}}{{HELP|We need a report to know if the latest BIOS fixes the missing EC string}}<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====G series====<br />
|-<br />
| {{G41}} 2881-75M<br />
|| IBM || 288175M || ThinkPad G41 || IBM || 288175M || Not Available || IBM || Not Available || IBM || 1XET47WW (1.06 ) || 01/14/2005<br />
||<br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
====R series====<br />
|-<br />
| {{R40}} 2681-5UU<br />
|| IBM || 26815UU || Not Available || IBM || 26815UU || Not Available || IBM || Not Available || IBM || 1OET57WW (1.23 ) || 03/23/2005 <br />
||<br />
|| {{T-WARN|Outdated BIOS}}<br />
|-<br />
| {{R40}} 2681-HSG<br />
|| IBM || 2681HSG || Not Available || IBM || 2681HSG || Not Available || IBM || Not Available || IBM || 1OET61WW (1.27 ) || 06/29/2006<br />
||<br />
|| {{T-WARN|Outdated BIOS}}<br />
|-<br />
| {{R40}} 2722-B3G<br />
|| IBM || 2722B3G || Not Available || IBM || 2722B3G || Not Available || IBM || Not Available || IBM || 1PET62WW (1.30 ) || 09/29/2005<br />
||<br />
||<br />
|-<br />
| {{R40}} 2722-BDG<br />
|| IBM || 2722BDG || Not Available || IBM || 2722BDG || Not Available || IBM || Not Available || IBM || 1PET65WW (1.33 ) || 06/29/2006 <br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
| {{R40}} 2722-C4U <br />
|| IBM || 2722CU4 || Not Available || IBM || 2722CU4 || Not Available || IBM || Not Available || IBM || 1PET46WW (1.14 ) || 07/15/2003<br />
|| 1OHT37WW (1.09) 05/26/03<br />
|| {{T-WARN|Outdated BIOS}}<br />
|- <br />
| {{R40}} 2722-C4U <br />
|| IBM || 2722CU4 || Not Available || IBM || 2722CU4 || Not Available || IBM || Not Available || IBM || 1PET65WW (1.33 ) || 06/29/2006 <br />
|| 1OHT42WW (1.14) 05/23/05<br />
||<br />
|- <br />
| {{R40}} 2897-B4U<br />
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1PET52WW (1.20 ) || 03/03/2004<br />
||<br />
||<br />
|- <br />
| {{R40e}} 2684-L8G<br />
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1SET62WW (1.30 ) || 07/09/2004<br />
||<br />
|| {{T-WARN|Outdated BIOS}}<br />
|-<br />
| {{R40e}} 2684-L8G<br />
|| IBM || 2684L8G || Not Available || IBM || 2684L8G || Not Available || IBM || Not Available || IBM || 1SET70WW (1.38 ) || 11/15/2005<br />
||<br />
||<br />
|-<br />
| {{R50}} 1829-7QG<br />
|| IBM || 0123456 || ThinkPad R50 || IBM || 0123456 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
|{{R50e}} 1834-JAG<br />
|| IBM || 1834JAG || ThinkPad R50e || IBM || 1834JAG || Not Available || IBM || Not Available || IBM || 1WET82WW (2.02 ) || 02/21/2005<br />
|| <nowiki>Handle 0x0022, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
|{{R50e}}<br />
|| IBM || 1834S5G || ThinkPad R50e || IBM || 1834S5G || Not Available || IBM || Not Available || IBM || 1WET86WW (2.06 ) || 11/15/2005 <br />
|| <nowiki>Handle 0x0022, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04 ]-</nowiki><br />
|| {{T-WARN|Outdated BIOS}}<br />
|- <br />
|{{R50e}}<br />
|| IBM || 1834S5G || ThinkPad R50e || IBM || 1834S5G || Not Available || IBM || Not Available || IBM || 1WET90WW (2.10 ) || 12/08/2006 <br />
|| <nowiki>Handle 0x0022, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04 ]-</nowiki><br />
||<br />
|- <br />
|{{R50p}} 1832-2AG<br />
|| IBM || 18322AG || ThinkPad R50p || IBM || 18322AG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 1829-DRG<br />
|| IBM || 1829DRG || ThinkPad R51 || IBM || 1829DRG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a ]-</nowiki> <br />
||<br />
|-<br />
| {{R51}} 1829-9MG<br />
|| IBM || 18299MG || ThinkPad R51 || IBM || 18299MG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 1829-L7G<br />
|| IBM || 1829L7G || ThinkPad R51 || IBM || 1829L7G || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT70WW-3.03 ]-</nowiki><br />
||<br />
|- <br />
| {{R51}} [[1830-DG4]]<br />
|| IBM || 1830DG4 || ThinkPad R51 || IBM || 1830DG4 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} [[1830-DG4]]<br />
|| IBM || 1830DG4 || ThinkPad R51 || IBM || 1830DG4 || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 1836-GEU<br />
|| IBM || 1836GEU || ThinkPad R51 || IBM || 1836GEU || Not Available || IBM || Not Available || IBM || 1RETDLWW (3.17 ) || 07/27/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes. String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 2883-ELU<br />
|| IBM || 2883ELU || ThinkPad R51 || IBM || 2883ELU || Not Available || IBM || Not Available || IBM || 1VET69WW (1.27 ) || 03/03/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 2883-8QU<br />
|| IBM || 28838QU || ThinkPad R51 || IBM || 28838QU || Not Available || IBM || Not Available || IBM || 1VET61WW (1.19 ) || 12/20/2004<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1VHT27WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad H || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
|| Weird system version, this bug is known fixed in latest BIOS<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET68WW (1.28 ) || 11/15/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET69WW (1.29 ) || 12/06/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1847-CTO<br />
|| IBM || 1847W15 || ThinkPad R52 || IBM || 1847W15 || Not Available || IBM || Not Available || IBM || 76ET69WW (1.29 ) || 12/06/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1847-W62<br />
|| IBM || 1847W62 || ThinkPad . || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
|| Weird system version, this bug is known fixed in latest BIOS<br />
|-<br />
| {{R52}} 1847-W62<br />
|| IBM || 1847W62 || ThinkPad R52 || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1858-6MM<br />
|| IBM || 18586MM || ThinkPad R52 || IBM || 18586MM || Not Available || IBM || Not Available || IBM || 70ET40WW (1.04 ) || 06/02/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1858-6SM<br />
|| IBM || 18586SM || ThinkPad R52 || IBM || 18586SM || Not Available || IBM || Not Available || IBM || 70ET57WW (1.17 ) || 07/15/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-4CG<br />
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT15WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-4CG<br />
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-B5G<br />
|| IBM || 1846B5G || ThinkPad H || IBM || 1846B5G || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R60e}} 0657-4TG<br />
|| LENOVO || 06574TG || ThinkPad R60e || LENOVO || 06574TG || Not Available || LENOVO || Not Available || LENOVO || 7EET18WW (1.04 ) || 07/28/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7EHT13WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9456-6FG<br />
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9456-6FG<br />
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CETB7WW (2.07 ) || 11/13/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9461-54G<br />
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9461-54G<br />
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CETC1WW (2.11 ) || 01/09/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
|| With this bios version the brightness control buttons don't work for kernel < 2.6.20<br />
|-<br />
| {{R60}} 9461-54G<br />
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CET49WW (1.04 ) || 05/11/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT16WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9460MR2<br />
|| LENOVO || 9460MR2 || ThinkPad R60 || LENOVO || 9460MR2 || Not Available || LENOVO || Not Available || LENOVO || 7CETC6WW (2.16 ) || 04/18/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9461-DXG<br />
|| LENOVO || 9461DXG || ThinkPad R60 || LENOVO || 9461DXG || Not Available || LENOVO || Not Available || LENOVO || 7CETB6WW (2.06 ) || 10/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9461-DXG<br />
|| LENOVO || 9461DXG || ThinkPad R60 || LENOVO || 9461DXG || Not Available || LENOVO || Not Available || LENOVO || 7CETD2WW (2.22 ) || 05/28/2008<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT22WW-1.10 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9462-GAG<br />
|| LENOVO || 9462GAG || ThinkPad R60 || LENOVO || 9462GAG || Not Available || LENOVO || Not Available || LENOVO || 7CETB5WW (2.05 ) || 10/13/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{R61}} 8918-5QG<br />
|| LENOVO || 89185QG || ThinkPad R61 || LENOVO || 89185QG || Not Available || LENOVO || Not Available || LENOVO || 7KETA7WW (2.07 ) || 12/06/2007<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{R61}} 8919-W4P<br />
|| LENOVO || 8919W4P || ThinkPad R61 || LENOVO || 8919W4P || Not Available || LENOVO || Not Available || LENOVO || 7KET76WW (1.26 ) || 10/18/2007<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
|| According to the sticker on the bottom of the notebook as well as according to Lenovo web it is 8919-CTO subtype<br />
|-<br />
| {{R61}} 8919-W6X<br />
|| LENOVO || 8919W6X || ThinkPad R61 || LENOVO || 8919W6X || Not Available || LENOVO || Not Available || LENOVO || 7KET71WW (1.21 ) || 08/22/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R61}} 8919-W6X<br />
|| LENOVO || 8919W6X || ThinkPad R61 || LENOVO || 8919W6X || Not Available || LENOVO || Not Available || LENOVO || 7KETB9WW (2.19 ) || 06/05/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{R61}} 8919-DFG<br />
|| LENOVO || 8918DFG || ThinkPad R61 || LENOVO || 8918DFG || Not Available || LENOVO || Not Available || LENOVO || 7KETA9WW (2.09 ) || 12/27/2007<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
|| <br />
|-<br />
| {{R61}} 8943-DMG<br />
|| LENOVO || 8943DMG || ThinkPad R61 || LENOVO || 8943DMG || Not Available || LENOVO || Not Available || LENOVO || 7QET34WW (1.16 ) || 03/24/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7QHT15WW-1.00 ]-</nowiki><br />
||<br />
|-<br />
| {{R61}} 7732-4TG<br />
|| LENOVO || 77324TG || ThinkPad R61 || LENOVO || 77324TG || Not Available || LENOVO || Not Available || LENOVO || 7LET51WW (1.21 ) || 08/22/2007<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R61}} 7732-4TG<br />
|| LENOVO || 77324TG || ThinkPad R61 || LENOVO || 77324TG || Not Available || LENOVO || Not Available || LENOVO || 7LETC5WW (2.25 ) || 11/14/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{R61}} 7732-NEG<br />
|| LENOVO || 7732NEG || ThinkPad R61 || LENOVO || 7732NEG || Not Available || LENOVO || Not Available || LENOVO || 7LETB6WW (2.16 ) || 04/16/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{R61}} 7732-NEG<br />
|| LENOVO || 7732NEG || ThinkPad R61 || LENOVO || 7732NEG || Not Available || LENOVO || Not Available || LENOVO || 7LETC5WW (2.25 ) || 11/14/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{R61}} 7732-NEG<br />
|| LENOVO || 7732NEG || ThinkPad R61 || LENOVO || 7732NEG || Not Available || LENOVO || Not Available || LENOVO || 7LETC6WW (2.26 ) || 05/11/2009 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{R61}} 7733-1ES<br />
|| LENOVO || 77331ES || ThinkPad R61 || LENOVO || 77331ES || Not Available || LENOVO || Not Available || LENOVO || 7LETB0WW (2.10 ) || 01/21/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{R61}} 7733-1ES<br />
|| LENOVO || 77331ES || ThinkPad R61 || LENOVO || 77331ES || Not Available || LENOVO || Not Available || LENOVO || 7LETB4WW (2.14 ) || 03/24/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{R61}} 7733-A82 <br />
|| LENOVO || 7733A82 || ThinkPad R61/R61i || LENOVO || 7733A82 || Not Available || LENOVO || Not Available || LENOVO || 7LETC5WW (2.25 ) || 11/14/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
|| Intel graphics, 14.1" WXGA, Atheros wireless<br />
|-<br />
| {{R61i}} 7732-A12<br />
|| LENOVO || 7732A12 || ThinkPad R61i || LENOVO || 7732A12 || Not Available || LENOVO || Not Available || LENOVO || 7KET76WW (1.26 ) || 10/18/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
|| Prior to Flashing<br />
|-<br />
| {{R61i}} 7732-A12<br />
|| LENOVO || 7732A12 || ThinkPad R61i || LENOVO || 7732A12 || Not Available || LENOVO || Not Available || LENOVO || 7KETC8WW (2.28) || 05/26/2009 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
|| Post Flashing<br />
|-<br />
| {{R61i}} 7650-D7G<br />
|| LENOVO || 7650D7G || ThinkPad R61e || LENOVO || 7650D7G || Not Available || LENOVO || Not Available || LENOVO || 7PETB0WW (2.10 ) || 01/21/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{R61e}} 7650-E6G<br />
|| LENOVO || 7650E6G || ThinkPad R61e || LENOVO || 7650E6G || Not Available || LENOVO || Not Available || LENOVO || 7PETB2WW (2.12 ) || 02/20/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{R400}} 7439-A85<br />
|| LENOVO || 7439A85 || ThinkPad R400 || LENOVO || 7439A85 || Not Available || LENOVO || Not Available || LENOVO || 7UET45WW (1.15 ) || 09/08/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{R400}} 7443-TPA<br />
|| LENOVO || 7443TPA || ThinkPad R400 || LENOVO || 7443TPA || Not Available || LENOVO || Not Available || LENOVO || 7UET49WW (1.19 ) || 10/17/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{R400}} 7443-TPA<br />
|| LENOVO || 7443TPA || ThinkPad R400 || LENOVO || 7443TPA || Not Available || LENOVO || Not Available || LENOVO || 7UET50WW (1.20 ) || 10/30/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====S series====<br />
|-<br />
| {{s30}} 2639-4WJ<br />
|| IBM || 26394WJ || Not Available || IBM || 2609BS1 || Not Available || IBM || Not Available || IBM || 18ET45WW (1.45) || 07/10/2001<br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====SL series====<br />
|-<br />
| {SL410} 2842-7PU || LENOVO || 28427PU || ThinkPad SL410 || LENOVO || 28427PU || Not Available || LENOVO || Not Available || LENOVO || 6JET69WW (1.27 ) || 11/30/2009 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6JHT54WW-1.174000]-</nowiki><br />
||<br />
|-<br />
| {{SL410}} 2842-XF2 || LENOVO || 28427PU || ThinkPad SL410 || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6JET58WW (1.16 ) || 09/17/2009 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6JHT48WW-1.168000]-</nowiki><br />
|-<br />
| {{SL500}} 2746-3ZG || LENOVO || 27463ZG || ThinkPad SL500 || LENOVO || BOXSTER || 6AET<br />42WW || LENOVO || 6AET<br />42WW || LENOVO || 6AET42WW || 08/04/2008 <br />
|| <nowiki></nowiki><br />
|| {{T-WARN|IdeaPad EC and BIOS. This is an IdeaPad in disguise.}}<br />
|-<br />
| {{SL500}} 2746-4CG || LENOVO || 27464CG || ThinkPad SL500 || LENOVO || BOXSTER || 6AET<br />41WW || LENOVO || 6AET<br />41WW || LENOVO || 6AET41WW || 07/10/2008 <br />
|| <nowiki></nowiki><br />
|| {{T-WARN|IdeaPad EC and BIOS. This is an IdeaPad in disguise.}}<br />
|-<br />
| {{SL500}} 2764-EAG || LENOVO || 2746EAG || ThinkPad SL || LENOVO || 2746EAG || 6AET<br />58WW || LENOVO || 6AET<br />58WW || LENOVO || 6AET58WW || 05/29/2009 <br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
| {{SL510}} 2847-7MG<br />
|| LENOVO || 28477MG || ThinkPad SL510 || LENOVO || ? || not available || LENOVO || not available || LENOVO || 6JET72WW (1.30 ) || 01/26/2010 <br />
|| Handle 0x0018, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[6JHT57WW-1.177000]-<br />
|| {{T-WARN|IdeaPad EC and BIOS.}}<br />
|-<br />
| {{SL400}} 2743-Rk3<br />
|| LENOVO || 2743RK3 || ThinkPad SL || LENOVO || 2743RK3 || LENOVO 6AET59WW || LENOVO || LENOVO 6AET59WW || LENOVO || 6AET59WW || 08/26/2009 <br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====T series====<br />
|-<br />
| {{T20}} 2647-UC2<br />
|| IBM || 2647UC2 || Not Available || IBM || 2647UC2 || Not Available || IBM || Not Available || IBM || IYET45WW (1.08a) || 12/21/1999<br />
||<br />
|| {{T-WARN|Very outdated BIOS}}<br />
|-<br />
| {{T21}} 2647-8AG <br />
|| IBM || 26478AG || Not Available || IBM || 26478AG || Not Available || IBM || Not Available || IBM || KZET22WW (1.04a) || 01/19/2001 <br />
||<br />
||<br />
|-<br />
| {{T21}} 2647-9AU<br />
|| IBM || 26479AU || Not Available || IBM || 26479AU || Not Available || IBM || Not Available || IBM || KZET33WW (1.15 ) || 03/28/2003<br />
||<br />
||<br />
|-<br />
| {{T21}} 2647-8AG <br />
|| IBM || 26478AG || Not Available || IBM || 26478AG || Not Available || IBM || Not Available || IBM || KZET34WW (1.16 ) || 04/28/2004 <br />
||<br />
|| <br />
|- <br />
| {{T21}} 2647-8AU<br />
|| IBM || 26478AU || Not Available || IBM || 26478AU || Not Available || IBM || Not Available || IBM || KZET34WW (1.16 ) || 04/28/2004<br />
||<br />
||<br />
|-<br />
| {{T21}} 2647-8GG<br />
|| IBM || 26478GG || Not Available || IBM || 26478GG || Not Available || IBM || Not Available || IBM || 16ET29WW (1.09 ) || 02/28/2002 <br />
||<br />
||<br />
|-<br />
| {{T22}} 2647-4EG<br />
|| IBM || 26474EG || Not Available || IBM || 26474EG || Not Available || IBM || Not Available || IBM || 16ET31WW (1.11 ) || 03/20/2003 <br />
||<br />
||<br />
|-<br />
| {{T22}} 2647-8EU<br />
|| IBM || 26478EU || Not Available || IBM || 26478EU || Not Available || IBM || Not Available || IBM || 16ET32WW (1.12 ) || 04/27/2004<br />
||<br />
||<br />
|- <br />
| {{T23}} 2647<br />
|| IBM || 2647 || Not Available || IBM || 2647 || Not Available || IBM || Not Available || IBM || 1AET56WW (1.13) || 07/23/2002 <br />
|| <br />
|| Manufactured in Greenock, Scotland<br />
|- <br />
| {{T23}} 2647<br />
|| IBM || 2647 || Not Available || IBM || 2647 || Not Available || IBM || Not Available || IBM || 1AET64WW (1.20) || 07/23/2002 <br />
|| <nowiki>As above. Handle 0x0024, DMI type 11, 5 bytes OEM Strings String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a]-<br />
</nowiki><br />
||<br />
|- <br />
| {{T23}} 2647-4MG<br />
|| IBM || 26474MG || Not Available || IBM || 26474MG || Not Available || IBM || Not Available || IBM || 1AET58WW (1.14a) || 09/11/2002 <br />
|| <nowiki></nowiki><br />
||<br />
|- <br />
| {{T23}} 2647-4MG<br />
|| IBM || 26474MG || Not Available || IBM || 26474MG || Not Available || IBM || Not Available || IBM || 1AET64WW (1.20 ) || 10/18/2006 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a ]-</nowiki><br />
||<br />
|- <br />
| {{T23}} 2647-4NU<br />
|| IBM || 26474NU || Not Available || IBM || 26474NU || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a ]-</nowiki><br />
||<br />
|-<br />
| {{T23}} 2647-8MG<br />
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET56WW (1.13 ) || 07/02/2002<br />
||<br />
|| Missing EC string, this bug is known to be fixed in latest BIOS<br />
|-<br />
| {{T23}} 2647-8MG<br />
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a]-</nowiki><br />
||<br />
|-<br />
| {{T23}} 2648-DG1<br />
|| IBM || 2648DG1 || Not Available || IBM || 2648DG1 || Not Available || IBM || Not Available || IBM || 1AET61WW (1.17 ) || 05/29/2003 <br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
| {{T23}} 2648-DG1<br />
|| IBM || 2648DG1 || Not Available || IBM || 2648DG1 || Not Available || IBM || Not Available || IBM || 1AET64WW (1.20 ) || 10/18/2006 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a ]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-21U<br />
|| IBM || 236621U || Not Available || IBM || 236621U || Not Available || IBM || Not Available || IBM || 1IET71WW (2.10 ) || 06/16/2006 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1IHT20WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-82U<br />
|| IBM || 236682U || Not Available || IBM || 236682U || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1IHT19WW-1.06]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-85G<br />
|| IBM || 236685G || Not Available || IBM || 236685G || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1IHT18WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-GU1<br />
|| IBM || 2366GU1 || Not Available || IBM || 2366GU1 || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1IHT19WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-JBU<br />
|| IBM || 2366JBU || Not Available || IBM || 2366JBU || Not Available || IBM || Not Available || IBM || 1IET71WW (2.10 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1IHT20WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T40}} 2378-D2U<br />
|| IBM || 2378D2U || ThinkPad T40 || IBM || 2378D2U || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004<br />
|| <br />
|| Missing EC string, this bug is known to be fixed in latest BIOS<br />
|-<br />
| {{T40}} 2373-42G<br />
|| IBM || 237342G || ThinkPad T40 || IBM || 237342G || Not Available || IBM || Not Available || IBM || 1RET84WW (2.11 ) || 10/30/2003<br />
|| [[ATI Mobility Radeon 7500]]<br />
||<br />
|-<br />
| {{T40}} 2373-NG5<br />
|| IBM || 2373NG5 || ThinkPad T40 || IBM || 2373NG5 || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T40}} 2373-NG5<br />
|| IBM || 2373NG5 || ThinkPad T40 || IBM || 2373NG5 || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T40}} 2374-2G9<br />
|| IBM || 23742G9 || ThinkPad T40 || IBM || 23742G9 || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
|| After upgrade from Bios v. 3.16 and ecp 3.02<br />
|-<br />
| {{T40p}} 2373-G1G<br />
|| IBM || 2373G1G || ThinkPad T40p || IBM || 2373G1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T40p}} 2373-5U5<br />
|| IBM || 23735U5 || ThinkPad T40p || IBM || 23735U5 || Not Available || IBM || Not Available || IBM || 1RETDGWW (3.12 ) || 10/18/2004 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT70WW-3.03 ]-</nowiki><br />
|| <br />
|- <br />
| {{T40p}} 2373-5U5<br />
|| IBM || 23735U5 || ThinkPad T40p || IBM || 23735U5 || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
|| <br />
|- <br />
| {{T41}} 2373-9FG<br />
|| IBM || 23739FG || ThinkPad T41 || IBM || 23739FG || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
|| <br />
|- <br />
| {{T41}} 2373-W63<br />
|| IBM || 2373W63 || ThinkPad T41 || IBM || 2373W63 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> <br />
||<br />
|-<br />
| {{T41}} 2373-XNX<br />
|| IBM || 2373XNX || ThinkPad T41 || IBM || 2373XNX || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2373-2FG<br />
|| IBM || 23732FG || ThinkPad T41 || IBM || 23732FG || Not Available || IBM || Not Available || IBM || 1RET84WW (2.11 ) || 10/30/2003<br />
||<br />
|| Missing EC string, this bug is known to be fixed in latest BIOS<br />
|-<br />
| {{T41}} 2373-7FG<br />
|| IBM || 23737FG || ThinkPad T41 || IBM || 23737FG || Not Available || IBM || Not Available || IBM || 1RET87WW (2.14 ) || 01/26/2004<br />
||<br />
||<br />
|-<br />
| {{T41}} 2373-7FG<br />
|| IBM || 23737FG || ThinkPad T41 || IBM || 23737FG || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
|| After upgrade from BIOS v. 2.14<br />
|-<br />
| {{T41}} 2373-TG5<br />
|| IBM || 2373TG5 || ThinkPad T41 || IBM || 2373TG5 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2374-312<br />
|| IBM || 2374312 || ThinkPad T41 || IBM || 2374312 || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2379-DJU<br />
|| IBM || 2379DJU || ThinkPad T41 || IBM || 2379DJU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2373-A10<br />
|| IBM || 2373A10 || ThinkPad T41 || IBM || 2373A10 || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2373-A10<br />
|| IBM || 2373A10 || ThinkPad T41 || IBM || 2373A10 || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
|| After upgrade from BIOS v. 3.20<br />
|-<br />
| {{T41p}} 2373-GHG <br />
|| IBM || 2373GHG || ThinkPad T41p || IBM || 2373GHG || Not Available || IBM || Not Available || IBM || 1RETDIWW (3.14 ) || 01/20/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41p}} 2373-GEG<br />
|| IBM || 2373GEG || ThinkPad T41p || IBM || 2373GEG || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005<br />
|| <nowiki> Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41p}} 2373-GJJ<br />
|| IBM || 2373GJJ || ThinkPad T41p || IBM || 2373GJJ || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-FWG<br />
|| IBM || 2373FWG || ThinkPad T42 || IBM || 2373FWG || Not Available || IBM || Not Available || IBM || 1RETDHWW (3.13 ) || 10/29/2004<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-JTU<br />
|| IBM || 2373JTU || ThinkPad T42 || IBM || 2373JTU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-M1G<br />
|| IBM || 2373M1G || ThinkPad T42 || IBM || 2373M1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-VJA<br />
|| IBM || 2373VJA || ThinkPad T42 || IBM || 2373VJA || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-F2G<br />
|| IBM || 2373F2G || ThinkPad T42 || IBM || 2373F2G || Not Available || IBM || Not Available || IBM || 1RETDIWW (3.14 ) || 01/20/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} [[2373-CTO]]<br />
|| IBM || 2373YPL || ThinkPad T42 || IBM || 2373YPL || Not Available || IBM || Not Available || IBM || 1RETDLWW (3.17 ) || 07/27/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
|| {{T-WARN|Outdated BIOS}} before BIOS Update<br />
|-<br />
| {{T42}} [[2373-CTO]]<br />
|| IBM || 2373YPL || ThinkPad T42 || IBM || 2373YPL || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
|| after BIOS Update / current BIOS+EC<br />
|-<br />
| {{T42}} 2374-4WU<br />
|| IBM || 23744WU || ThinkPad T42 || IBM || 23744WU || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|- <br />
| {{T42}} 2374-WEH<br />
|| IBM || 2374WEH || ThinkPad T42 || IBM || 2374WEH || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> <br />
||<br />
|-<br />
| {{T42}} 2378-FVU<br />
|| IBM || 2378FVU || ThinkPad T42 || IBM || 2378FVU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-A64<br />
|| IBM || 2373A64 || ThinkPad T42p || IBM || 2373A64 || Not Available || IBM || Not Available || IBM || 1RETDIWW (3.14 ) || 01/20/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byteString 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-KXU<br />
|| IBM || 2373KXU || ThinkPad T42p || IBM || 2373KXU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-KUU<br />
|| IBM || 2373KUU || ThinkPad T42p || IBM || 2373KUU || Not Available || IBM || Not Available || IBM || 1RETDMWW (3.18 ) || 09/15/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-GYG<br />
|| IBM || 2373GYG || ThinkPad T42p || IBM || 2373GYG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2374-CP5<br />
|| IBM || 2374CP5 || ThinkPad T42p || IBM || 2374CP5 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2379-DYU<br />
|| IBM || 2379DYU || ThinkPad T42p || IBM || 2379DYU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2372-Q2G<br />
|| IBM || 2373Q2G || ThinkPad T42p || IBM || 2373Q2G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 1871-4AG<br />
|| IBM || 18714AG || ThinkPad T43 || IBM || 18714AG || Not Available || IBM || Not Available || IBM || 70ET64WW (1.24 ) || 02/13/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT27WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 1871-4AG<br />
|| IBM || 18714AG || ThinkPad T43 || IBM || 18714AG || Not Available || IBM || Not Available || IBM || 70ET62WW (1.22 ) || 05/29/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03]-</nowiki><br />
|| <br />
|-<br />
| {{T43}} 1871-4AG<br />
|| IBM || 18714AG || ThinkPad T43 || IBM || 18714AG || Not Available || IBM || Not Available || IBM || 70ET69WW (1.29 ) || 05/29/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT28WW-1.05]-</nowiki><br />
|| <br />
|- <br />
| {{T43}} 1871-F1G<br />
|| IBM || 1871F1G || ThinkPad T43 || IBM || 1871F1G || Not Available || IBM || Not Available || IBM || 70ET61WW (1.21 ) || 11/01/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2686-DGU<br />
|| IBM || 2686DGU || ThinkPad T43 || IBM || 2686DGU || Not Available || IBM || Not Available || IBM || 1YET62WW (1.27 ) || 05/18/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1YHT29WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2669-WE5<br />
|| IBM || 2669WE5 || ThinkPad T43 || IBM || 2669WE5 || Not Available || IBM || Not Available || IBM || 1YET56WW (1.21 ) || 07/06/2005 <br />
|| <nowiki>String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
|| User reports this is really a 2669-CEU with 1GB RAM + BlueTooth, and not a 2669-WE5 (unverified if this makes sense)<br />
|-<br />
| {{T43}} 2668-WEW<br />
|| IBM || 2668WEW || ThinkPad T43 || IBM || 2668WEW || Not Available || IBM || Not Available || IBM || 1YET56WW (1.21 ) || 07/06/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2668-WSY<br />
|| IBM || 2668WSY || ThinkPad T43 || IBM || 2668WSY || Not Available || IBM || Not Available || IBM || 1YET62WW (1.27 ) || 05/18/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1YHT29WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2668-74G<br />
|| IBM || 266874G || ThinkPad T43 || IBM || 266874G || Not Available || IBM || Not Available || IBM || 1YET57WW (1.22 ) || 07/20/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2668-CTO <br />
|| IBM || 2668Y82 || ThinkPad T43p || IBM || 2668Y82 || Not Available || IBM || Not Available || IBM || 1YET65WW (1.29 ) || 08/21/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1YHT29WW-1.06 ]-</nowiki><br />
|| <br />
|- <br />
| {{T43p}} 2668-G2G<br />
|| IBM || 2668G2G || ThinkPad T43p || IBM || 2668G2G || Not Available || IBM || Not Available || IBM || 1YET47WW (1.08 ) || 06/09/2005 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43p}} 2668-H1G<br />
|| IBM || 2668H1G || ThinkPad T43p || IBM || 2668H1G || Not Available || IBM || Not Available || IBM || 1YET45WW (1.06a) || 06/02/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43p}} 2687-D5U<br />
|| IBM || 2687D5U || ThinkPad T43p || IBM || 2687D5U || Not Available || IBM || Not Available || IBM || 1YET59WW (1.24 ) || 11/07/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43p}} 2668-F8G<br />
|| IBM || 2668F8G || ThinkPad T43p || IBM || 2668F8G || Not Available || IBM || Not Available || IBM || 1YET57WW (1.22 ) || 07/20/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1951-24G<br />
|| LENOVO || 195124G || ThinkPad T60 || LENOVO || 195124G || Not Available || LENOVO || Not Available || LENOVO || 79ET65WW (1.09a) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1952-W5R<br />
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ET61WW (1.06 ) || 05/24/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1952-W5R<br />
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ETD2WW (2.12 ) || 04/12/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 2007-49G<br />
|| LENOVO || 200749G || ThinkPad T60 || LENOVO || 200749G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 2007-77G<br />
|| LENOVO || 200777G || ThinkPad T60 || LENOVO || 200777G || Not Available || LENOVO || Not Available || LENOVO || 79ETD1WW (2.11 ) || 03/15/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 2007-FSG<br />
|| LENOVO || 2007FSG || ThinkPad T60 || LENOVO || 2007FSG || Not Available || LENOVO || Not Available || LENOVO || 79ET66WW (1.10 ) || 08/02/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1951-CA2<br />
|| LENOVO || 1951CA2 || ThinkPad T60 || LENOVO || 1951CA2 || Not Available || LENOVO || Not Available || LENOVO || 79ETD9WW (2.19 ) || 09/19/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 2623-D6U<br />
|| LENOVO || 2623D6U || ThinkPad T60 || LENOVO || 2623D6U || Not Available || LENOVO || Not Available || LENOVO || 79ET56WW (1.02 ) || 02/28/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT42WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 2007-63G<br />
|| LENOVO || 200763G || ThinkPad T60 || LENOVO || 200763G || Not Available || LENOVO || Not Available || LENOVO || 79ET65WW (1.09a) || 07/27/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 2007-63G<br />
|| LENOVO || 200763G || ThinkPad T60 || LENOVO || 200763G || Not Available || LENOVO || Not Available || LENOVO || 79ETE5WW (2.25 ) || 08/27/2009 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 2007-BF3<br />
|| LENOVO || 2007BF3 || ThinkPad T60 || LENOVO || 2007BF3 || Not Available || LENOVO || Not Available || LENOVO || 79ETD7WW (2.17 ) || 08/23/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 8744-HCG<br />
|| LENOVO || 8744HCG || ThinkPad T60 || LENOVO || 8744HCG || Not Available || LENOVO || Not Available || LENOVO || 7IET25WW (1.06 ) || 03/15/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 8744-HCG<br />
|| LENOVO || 8744HCG || ThinkPad T60 || LENOVO || 8744HCG || Not Available || LENOVO || Not Available || LENOVO || 7IET37WW (1.18 ) || 04/01/2010<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1951-CZ1<br />
|| LENOVO || 1951CZ1 || ThinkPad T60 || LENOVO || 1951CZ1 || Not Available || LENOVO || Not Available || LENOVO || 79ETE3WW (2.23 ) || 09/12/2008 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-83U<br />
|| LENOVO || 200783U || ThinkPad T60p || LENOVO || 200783U || Not Available || LENOVO || Not Available || LENOVO || 79ET60WW (1.05a) || 04/18/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[79HT43WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93G<br />
|| LENOVO || 200793G || ThinkPad T60p || LENOVO || 200793G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET66WW (1.10 ) || 08/02/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-ZK4<br />
|| LENOVO || 2007ZK4 || ThinkPad T60p || LENOVO || 2007ZK4 || Not Available || LENOVO || Not Available || LENOVO || 79ETD3WW (2.13 ) || 04/30/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2613-ESU<br />
|| LENOVO || 2613ESU || ThinkPad T60p || LENOVO || 2613ESU || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2623-DDU<br />
|| LENOVO || 2623DDU || ThinkPad T60p || LENOVO || 2623DDU || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 6457-W2C<br />
|| LENOVO || 6457W2C || ThinkPad T61 || LENOVO || 6457W2C || Not Available || LENOVO || Not Available || LENOVO || 7LETB0WW (2.10 ) || 01/21/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 6460-EBG<br />
|| LENOVO || 6460EBG || ThinkPad T61 || LENOVO || 6460EBG || Not Available || LENOVO || Not Available || LENOVO || 7LETB7WW (2.17 ) || 04/25/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 6460-EBG<br />
| LENOVO || 6460EBG || ThinkPad T61 || LENOVO || 6460EBG || Not Available || LENOVO || Not Available || LENOVO || 7LETC4WW (2.24 ) || 08/15/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 6465-CTO<br />
|| LENOVO || 6465CTO || ThinkPad T61 || LENOVO || 6465CTO || Not Available || LENOVO || Not Available || LENOVO || 7LETB2WW (2.12 ) || 02/20/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 6466-9MG<br />
|| LENOVO || 64669MG || ThinkPad T61 || LENOVO || 64669MG || Not Available || LENOVO || Not Available || LENOVO || 7LETC7WW (2.27 ) || 04/08/2010<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 7659-W13<br />
|| LENOVO || 7659W13 || ThinkPad T61 || LENOVO || 7659W13 || Not Available || LENOVO || Not Available || LENOVO || 7LET44WW (1.14 ) || 06/27/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 7659-W13<br />
|| LENOVO || 7659W13 || ThinkPad T61 || LENOVO || 7659W13 || Not Available || LENOVO || Not Available || LENOVO || 7LETC6WW (2.26 ) || 05/11/2009 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 7662-XDU<br />
|| LENOVO || 7662XDU || ThinkPad T61 || LENOVO || 7662XDU || 7662XDU|| LENOVO || Not Available || LENOVO || 7LET37WW (1.07 ) || 04/17/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7KHT19WW-1.03 ]-</nowiki><br />
|| {{T-WARN|BIOS and EC firmware have different IDs}}<br />
|-<br />
| {{T61}} 7661-A56<br />
|| LENOVO || 7661A56 || ThinkPad T61 || LENOVO || 7661A56 || Not Available || LENOVO || Not Available || LENOVO || 7LET39WW (1.09 ) || 05/14/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT21WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 8895-WFD<br />
|| LENOVO || 8895WFD || ThinkPad T61 || LENOVO || 8895WFJ || Not Available || LENOVO || Not Available || LENOVO || 7LETC5WW (2.25 ) || 11/14/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 8897-CTO<br />
|| LENOVO || 8897CTO || ThinkPad T61 || LENOVO || 8897CTO || Not Available || LENOVO || Not Available || LENOVO || 7LET52WW (1.22 ) || 08/27/2007<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 8897-CTO<br />
|| LENOVO || 8897CTO || ThinkPad T61 || LENOVO || 8897CTO || Not Available || LENOVO || Not Available || LENOVO || 7LET56WW (1.26 ) || 10/18/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
|| <br />
|-<br />
| {{T61p}} 6457-B64<br />
|| LENOVO || 6457B64 || ThinkPad T61p || LENOVO || 6457B64 || Not Available || LENOVO || Not Available || LENOVO || 7LETC1WW (2.21 ) || 07/01/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
||<br />
|- <br />
| {{T61p}} 6459-A12<br />
|| LENOVO || 6459A12 || ThinkPad T61p || LENOVO || 6459A12 || Not Available || LENOVO || Not Available || LENOVO || 7LET56WW (1.26 ) || 10/18/2007<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T61p}} 6459-CTO<br />
|| LENOVO || 6459CTO || ThinkPad T61p || LENOVO || 6459CTO || Not Available || LENOVO || Not Available || LENOVO || 7LETC6WW (2.26 ) || 05/11/2009<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08 ]-</nowiki><br />
|| <br />
|-<br />
| {{T400}} 6474-1EG<br />
|| LENOVO || 64741EG || ThinkPad T400 || LENOVO || 64741EG || Not Available || LENOVO || Not Available || LENOVO || 7UET48WW (1.18 ) || 10/09/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01 <br />
]-</nowiki><br />
||<br />
|-<br />
| {{T400}} 6474-19G<br />
|| LENOVO || 647419G || ThinkPad T400 || LENOVO || 647419G || Not Available || LENOVO || Not Available || LENOVO || 7UET61WW (2.07 ) || 02/13/2009 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01 ]-</nowiki><br />
|| <br />
|- <br />
| {{T400}} 6475-FM4 <br />
|| LENOVO || 6475FM4 || ThinkPad T400 || LENOVO || 6475FM4 || Not Available || LENOVO || Not Available || LENOVO || 7UET43WW (1.13 ) || 08/19/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01 ]-</nowiki><br />
|| Before BIOS update<br />
|-<br />
| {{T400}} 6475-FM4 <br />
|| LENOVO || 6475FM4 || ThinkPad T400 || LENOVO || 6475FM4 || Not Available || LENOVO || Not Available || LENOVO || 7UET64WW (2.12 ) || 03/13/2009<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01 ]-</nowiki><br />
|| After BIOS update<br />
|-<br />
| {{T400}} 2765-22G<br />
|| LENOVO || 276522G || ThinkPad T400 || LENOVO || 276522G || Not Available || LENOVO || Not Available || LENOVO || 7UET88WW (3.18 ) || 05/27/2010 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T400s}} 2801-CTO<br />
|| LENOVO || 2801CTO || ThinkPad T400s || LENOVO || 2801CTO || Not Available || LENOVO || Not Available || LENOVO || 6HET21WW (1.06 ) || 07/27/2009 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6HHT13WW-1.01]-</nowiki><br />
||<br />
|-<br />
| {{T400s}} 2815-2SG<br />
|| LENOVO || 28152SG || ThinkPad T400s || LENOVO || 28152SG || Not Available || LENOVO || Not Available || LENOVO || 6HET17WW (1.02 ) || 05/18/2009 No code specified for -e.<br />
||<br />
||<br />
|-<br />
| {{T410}} 2522-AT6<br />
|| LENOVO || 2522AT6 || ThinkPad T410 || LENOVO || 2522AT6 || Not Available || LENOVO || Not Available || LENOVO || 6IET65WW (1.25 ) || 06/07/2010 <br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6IHT35WW-1.10 ]-</nowiki><br />
||<br />
|-<br />
| {{T410}} 2522-2PG<br />
|| LENOVO || 25222PG || ThinkPad T410 || LENOVO || 25222PG || Not Available || LENOVO || Not Available || LENOVO || 6IET55WW (1.15 ) || 03/24/2010 <br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6IHT32WW-1.06 ]-</nowiki><br />
|| Before BIOS Update<br />
|-<br />
| {{T410}} 2522-2PG<br />
|| LENOVO || 25222PG || ThinkPad T410 || LENOVO || 25222PG || Not Available || LENOVO || Not Available || LENOVO || 6IET75WW (1.35 ) || 02/01/2011 <br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6IHT39WW-1.14 ]-</nowiki><br />
|| After BIOS Update<br />
|-<br />
| {{T410s}} 2912-39G<br />
|| LENOVO || 291239G || ThinkPad T410s || LENOVO || 291239G || Not Available || LENOVO || Not Available || LENOVO || 6UET27WW (1.05 ) || 01/14/2010 <br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6UHT24WW-1.05 ]-</nowiki><br />
||<br />
|- <br />
| {{T410s}} 2912-W69<br />
|| LENOVO || 2912W69 || ThinkPad T410s || LENOVO || 2912W69 || Not Available || LENOVO || Not Available || LENOVO || 6UET61WW (1.41 ) || 10/27/2010<br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6UHT31WW-1.12 ]-</nowiki><br />
||<br />
|- <br />
| {{T420}} 4180W1H<br />
|| LENOVO || 4180W1H || ThinkPad T420 || LENOVO || 4180W1H || Not Available || LENOVO || Not Available || LENOVO || 83ET56WW (1.26 ) || 05/13/2011 <br />
|| <nowiki></nowiki><br />
|| After BIOS Update<br />
|-<br />
| {{T500}} 2055-A81<br />
|| LENOVO || 2055A81 || ThinkPad T500 || LENOVO || 2055A81 || Not Available || LENOVO || Not Available || LENOVO || 6FET46WW (1.16 ) || 09/24/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{T500}} 2055-A81<br />
|| LENOVO || 2055A81 || ThinkPad T500 || LENOVO || 2055A81 || Not Available || LENOVO || Not Available || LENOVO || 6FET50WW (1.20 ) || 10/30/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{T500}} 2055-45G<br />
|| LENOVO || 205545G || ThinkPad T500 || LENOVO || 205545G || Not Available || LENOVO || Not Available || LENOVO || 6FET49WW (1.19 ) || 10/17/2008<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01 ]-</nowiki><br />
|| <br />
|- <br />
| {{T500}} 2089-AZG<br />
|| LENOVO || 2089AZ9 || ThinkPad T500 || LENOVO || 2089AZ9 || Not Available || LENOVO || Not Available || LENOVO || 6FET79WW (3.09 ) || 10/02/2009<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01 ]-</nowiki><br />
|| {{T-WARN|Outdated BIOS}} before BIOS Update<br />
|-<br />
| {{T500}} 2089-AZG<br />
|| LENOVO || 2089AZ9 || ThinkPad T500 || LENOVO || 2089AZ9 || Not Available || LENOVO || Not Available || LENOVO || 6FET87WW (3.17 ) || 12/03/2010 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT16WW-1.06 ]-</nowiki><br />
|| after BIOS Update / current BIOS+EC<br />
|-<br />
| {{T500}} 2242-CTO<br />
|| LENOVO || 2242CTO || ThinkPad T500 || LENOVO || 2242CTO || Not Available || LENOVO || Not Available || LENOVO || 6FET66WW (2.16 ) || 04/22/2009 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01 ]-</nowiki><br />
|| <br />
|- <br />
| {{T510}} 4313-CTO<br />
|| LENOVO || 4313CTO || ThinkPad T510 || LENOVO || 4313CTO || Not Available || LENOVO || Not Available || LENOVO || 6MET42WW (1.05 ) || 12/22/2009 <br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6MHT32WW-1.07 ]-</nowiki><br />
||<br />
|- <br />
| {{T510}} 4313-CTO<br />
|| LENOVO || 4313CTO || ThinkPad T510 || LENOVO || 4313CTO || Not Available || LENOVO || Not Available || LENOVO || 6MET49WW (1.12 ) || 02/22/2010 <br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6MHT33WW-1.08 ]-</nowiki><br />
||<br />
|- <br />
| {{T520}}<br />
|| LENOVO || 42433ZG || ThinkPad T520 || LENOVO || 42433ZG || Not Available || LENOVO || Not Available || LENOVO || 8AET46WW (1.26 ) || 05/18/2011 <br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====W series====<br />
|-<br />
| {{W500}} 4061-AW9 <br />
|| LENOVO || 4061AW9 || ThinkPad W500 || LENOVO || 4061AW9 || Not Available || LENOVO || Not Available || LENOVO || 6FET79WW (3.09 ) || 10/02/2009 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7VHT14WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{W510}} 4318-CTO<br />
|| LENOVO || 4318CTO || ThinkPad W510 || LENOVO || 4318CTO || Not Available || LENOVO || Not Available || LENOVO || 6NET74WW (1.34 ) || 10/27/2010 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6MHT43WW-1.18 ]-</nowiki><br />
||<br />
|-<br />
| {{W510}} 4319-4CU<br />
|| LENOVO || 43194CU || ThinkPad W510 || LENOVO || 43194CU || Not Available || LENOVO || Not Available || LENOVO || 6NET61WW (1.24 ) || 06/07/2010 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6MHT38WW-1.13 ]-</nowiki><br />
||<br />
|-<br />
| {{W510}} 4319-3CG <br />
|| LENOVO || 43193CG || ThinkPad W510 || LENOVO || 43193CG || Not Available || LENOVO || Not Available || LENOVO || 6NET46WW (1.09 ) || 01/20/2010 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6MHT31WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{W510}} 4389-W1B <br />
|| LENOVO || 4389W1B || ThinkPad W510 || LENOVO || 4389W1B || Not Available || LENOVO || Not Available || LENOVO || 6NET76WW (1.37 ) || 02/24/2011 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6MHT44WW-1.19 ]-</nowiki><br />
||<br />
|-<br />
| {{W700}} 2757-CTO<br />
|| LENOVO || 2757CTO || ThinkPad W700 || LENOVO || 2757CTO || Not Available || LENOVO || Not Available || LENOVO || 7ZETA8WW (2.08 ) || 09/24/2009<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7ZHT22WW-1.05 ]-</nowiki><br />
||<br />
|- <br />
| {{W700}} 2757-CTO<br />
|| LENOVO || 2757CTO || ThinkPad W700 || LENOVO || 2757CTO || Not Available || LENOVO || Not Available || LENOVO || 7ZETB1WW (2.11 ) || 03/12/2010 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7ZHT24WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====X series====<br />
|-<br />
| {{X20}} 2662-31G<br />
|| IBM || 266231G || Not Available || IBM || 266231G || Not Available || IBM || Not Available || IBM || IZET9DWW (2.25 ) || 04/17/2003<br />
||<br />
||<br />
|-<br />
| {{X20}} 2662-32G<br />
|| IBM || 266232G || Not Available || IBM || 266232G || Not Available || IBM || Not Available || IBM || IZET9AWW (2.22 ) || 09/11/2002<br />
||<br />
||<br />
|-<br />
| {{X22}} 2662-95U<br />
|| IBM || 266295U || Not Available || IBM || 266295U || Not Available || IBM || Not Available || IBM || 1DET70WW (1.32 ) || 06/10/2003<br />
||<br />
||<br />
|-<br />
| {{X23}} 2662-EBG<br />
|| IBM || 2662EBG || Not Available || IBM || 2662EBG || Not Available || IBM || Not Available || IBM || 1DET70WW (1.32 ) || 06/10/2003<br />
||<br />
||<br />
|-<br />
| {{X24}} 2662-MPU<br />
|| IBM || 62MPUFX || Not Available || IBM || 62MPUFX || Not Available || IBM || Not Available || IBM || 1DET67WW (1.29 ) || 12/18/2002<br />
||<br />
||<br />
|-<br />
| {{X30}} 2672-42G<br />
|| IBM || 267242G || Not Available || IBM || 267242G || Not Available || IBM || Not Available || IBM || 1KET42WW (1.03 ) || 12/02/2002 <br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
| {{X30}} 2672-42G<br />
|| IBM || 267242G || Not Available || IBM || 267242G || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
|| {{X30}} 2672-4BU<br />
|| IBM || 26724BU || Not Available || IBM || 26724BU || Not Available || IBM || Not Available || IBM || 1KET44WW (1.05 ) || 05/30/2003 <br />
|| <nowiki></nowiki><br />
||<br />
|- <br />
| {{X30}} 2672-4HU<br />
|| IBM || 26724HU || Not Available || IBM || 26724HU || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{X30}} 2672-PG3<br />
|| IBM || 2672PG3 || Not Available || IBM || 2672PG3 || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06 ]-</nowiki> <br />
||<br />
|-<br />
| {{X31}} 2672-C2G<br />
|| IBM || 2672C2G || Not Available || IBM || 2672C2G || Not Available || IBM || Not Available || IBM || 1QET36WW (1.04a) || 06/30/2003 <br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
| {{X31}} 2672-C2G<br />
|| IBM || 2672C2G || ThinkPad X31 || IBM || 2672C2G || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08 ]-</nowiki><br />
|| <br />
|- <br />
| {{X31}} 2672-CEG<br />
|| IBM || 2672CEG || Not Available || IBM || 2672CEG || Not Available || IBM || Not Available || IBM || 1QET36WW (1.04a) || 06/30/2003 <br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
| {{X31}} 2672-CEG<br />
|| IBM || 2672CEG || ThinkPad X31 || IBM || 2672CEG || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{X31}} 2672-JXU<br />
|| IBM || 2672JXU || ThinkPad X31 || IBM || 2672JXU || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{X31}} 2672-FG2<br />
|| IBM || 2672FG2 || ThinkPad X31 || IBM || 2672FG2 || Not Available || IBM || Not Available || IBM || 1QET73WW (2.11 ) || 02/13/2004 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT16WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{X31}} 2672-FG2<br />
|| IBM || 2672FG2 || ThinkPad X31 || IBM || 2672FG2 || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{X31}} 2672-PG9 (before update) <br />
|| IBM || 2672PG9 || ThinkPad X31 || IBM || 2672PG9 || Not Available || IBM || Not Available || IBM || 1QET73WW (2.11 ) || 02/13/2004 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT16WW-1.03 ]-</nowiki><br />
||<br />
|- <br />
| {{X31}} 2672-PG9 (after update) <br />
|| IBM || 2672PG9 || ThinkPad X31 || IBM || 2672PG9 || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08 ]-</nowiki><br />
||<br />
|- <br />
| {{X31}} 2673-C2G<br />
|| IBM || 2673C2G || ThinkPad X31 || IBM || 2673C2G || Not Available || IBM || Not Available || IBM || 1QET65WW (2.03 ) || 10/10/2003 <br />
|| <nowiki></nowiki><br />
||<br />
|- <br />
| {{X31}} 2673-C2G<br />
|| IBM || 2673C2G || ThinkPad X31 || IBM || 2673C2G || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{X32}} 2884-A3U<br />
|| IBM || 2884A3U || ThinkPad X32 || IBM || 2884A3U || Not Available || IBM || Not Available || IBM || 1QET94WW (3.00d) || 01/23/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT22WW-1.07b ]-</nowiki><br />
||<br />
|-<br />
| {{X32}} 2672-M3G<br />
|| IBM || 2672M3G || ThinkPad X32 || IBM || 2672M3G || Not Available || IBM || Not Available || IBM || 1QET94WW (3.00d) || 01/23/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT22WW-1.07b ]-</nowiki><br />
||<br />
|-<br />
| {{X32}} 2673-M4U<br />
|| IBM || 2673M4U || ThinkPad X32 || IBM || 2673M4U || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2386-7JG<br />
|| IBM || 23717JG || ThinkPad X40 || IBM || 23717JG || Not Available || IBM || Not Available || IBM || 1UETD1WW (2.06 ) || 03/01/2006 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHTB2WW-1.62 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2386-H4G<br />
|| IBM || 2386H4G || ThinkPad X40 || IBM || 2386H4G || Not Available || IBM || Not Available || IBM || 1UET92WW (1.42 ) || 09/16/2004 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1UHT82WW-1.32 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2371-8NG<br />
|| IBM || 23718NG || ThinkPad X40 || IBM || 23718NG || Not Available || IBM || Not Available || IBM || 1UETB7WW (1.67 ) || 07/15/2005 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHT58WW-1.12 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2371-Y29<br />
|| IBM || 2371Y29 || ThinkPad X40 || IBM || 2371Y29 || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHTA6WW-1.56 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2371-W9F<br />
|| IBM || 2371W9F || ThinkPad X40 || IBM || 2371W9F || Not Available || IBM || Not Available || IBM || 1UETC8WW (2.03 ) || 09/28/2005 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHTB2WW-1.62 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2371-W9F<br />
|| IBM || 2371W9F || ThinkPad X40 || IBM || 2371W9F || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHTB2WW-1.62 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2371-Y1Y<br />
|| IBM || 2371Y1Y || ThinkPad X40 || IBM || 2371Y1Y || Not Available || IBM || Not Available || IBM || 1UET93WW (1.43 ) || 10/13/2004 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHT82WW-1.32 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2371-Y1Y<br />
|| IBM || 2371Y1Y || ThinkPad X40 || IBM || 2371Y1Y || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHTB2WW-1.62 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2371-Y2A <br />
|| IBM || 2371Y2A || ThinkPad X40 || IBM || 2371Y2A || Not Available || IBM || Not Available || IBM || 1UET93WW (1.43 ) || 10/13/2004 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHT82WW-1.32 ]-</nowiki><br />
|| <br />
|- <br />
| {{X40}} 2371-Y2A<br />
|| IBM || 2371Y2A || ThinkPad X40 || IBM || 2371Y2A || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHTB2WW-1.62 ]-</nowiki><br />
|| <br />
|-<br />
| {{X41}} 2525-65G<br />
|| IBM || 252565G || ThinkPad X41 || IBM || 252565G || Not Available || IBM || Not Available || IBM || 74ET63WW (2.08 ) || 10/17/2006 <br />
|| <nowiki>Handle 0x0025, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[74HT25WW-1.00 ]-</nowiki><br />
||<br />
|-<br />
| {{X41}} 2525-FAG<br />
|| IBM || 2525FAG || ThinkPad X41 || IBM || 2525FAG || Not Available || IBM || Not Available || IBM || 74ET61WW (2.06 ) || 03/14/2006 <br />
|| <nowiki>Handle 0x0025, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[74HT26WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{X41}} 2525-FAG<br />
|| IBM || 2525FAG || ThinkPad X41 || IBM || 2525FAG || Not Available || IBM || Not Available || IBM || 74ET64WW (2.09 ) || 12/14/2006 <br />
|| <nowiki>Handle 0x0025, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[74HT27WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X41}} 2525-HU1<br />
|| IBM || 2525HU1 || ThinkPad X41 || IBM || 2525HU1 || Not Available || IBM || Not Available || IBM || 74ET48WW (1.17a) || 06/07/2005<br />
|| <nowiki>Handle 0x0025, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[74HT25WW-1.00 ]-</nowiki><br />
||<br />
|-<br />
| {{X41t}} 1866-CRG<br />
|| IBM || 1866CRG || ThinkPad X41 Tablet || IBM || 1866CRG || Not Available || IBM || Not Available || IBM || 75ET60WW (2.06 ) || 12/19/2006 <br />
|| <nowiki>Handle 0x0025, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[75HT19WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{X41t}} 1866-CTO<br />
|| IBM || 1866CTO || ThinkPad X41 Tablet || IBM || 1866CTO || Not Available || IBM || Not Available || IBM || 75ET60WW (2.06 ) || 12/19/2006 <br />
|| <nowiki>Handle 0x0025, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[75HT20WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X41t}} 1866-WSF<br />
|| IBM || 1866WSF || ThinkPad X41 Tablet || IBM || 1866WSF || Not Available || IBM || Not Available || IBM || 75ET57WW (2.03 ) || 06/14/2006<br />
|| <nowiki>Handle 0x0025, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[75HT20WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X41t}} 1869-CLG<br />
|| IBM || 1869CLG || ThinkPad X41 Tablet || IBM || 1869CLG || Not Available || IBM || Not Available || IBM || 75ET56WW (2.02 ) || 03/14/2006<br />
|| <nowiki>Handle 0x0025, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[75HT19WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1709-47U<br />
|| LENOVO || 170947U || ThinkPad X60 || LENOVO || 170947U || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1709-GDJ<br />
|| LENOVO || 1709GDJ || ThinkPad X60 || LENOVO || 1709GDJ || Not Available || LENOVO || Not Available || LENOVO || 7BETC2WW (2.03 ) || 10/16/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT36WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1706-B69<br />
|| LENOVO || 1706B69 || ThinkPad X60 || LENOVO || 1706B69 || Not Available || LENOVO || Not Available || LENOVO || 7BETC8WW (2.09 ) || 03/14/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT37WW-1.10 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1706-GMG<br />
|| LENOVO || 1706GMG || ThinkPad X60 || LENOVO || 1706GMG || Not Available || LENOVO || Not Available || LENOVO || 7BETC4WW (2.05 ) || 11/17/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT37WW-1.10 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1706-GMG<br />
|| LENOVO || 1706GMG || ThinkPad X60 || LENOVO || 1706GMG || Not Available || LENOVO || Not Available || LENOVO || 7BETD7WW (2.18 ) || 11/20/2008<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT40WW-1.13 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1702-55G<br />
|| LENOVO || 170255G || ThinkPad X60s || LENOVO || 170255G || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1702-5FG<br />
|| LENOVO || 17025FG || ThinkPad X60s || LENOVO || 17025FG || Not Available || LENOVO || Not Available || LENOVO || 7BET49WW (1.09 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT34WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1704-56G<br />
|| LENOVO || 170456G || ThinkPad X60s || LENOVO || 170456G || Not Available || LENOVO || Not Available || LENOVO || 7BET43WW (1.03 ) || 02/13/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7BHT28WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1704-56G<br />
|| LENOVO || 1704-56G || ThinkPad X60s || LENOVO || 170456G || Not Available || LENOVO || Not Available || LENOVO || 7BETD5WW (2.16 ) || 03/31/2008<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT40WW-1.13 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1704-5UG<br />
|| LENOVO || 17045UG || ThinkPad X60s || LENOVO || 17045UG || Not Available || LENOVO || Not Available || LENOVO || 7BETD2WW (2.13 ) || 08/10/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT40WW-1.13 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1704-5UG<br />
|| LENOVO || 17045UG || ThinkPad X60s || LENOVO || 17045UG || Not Available || LENOVO || Not Available || LENOVO || 7BETD3WW (2.14 ) || 10/04/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT40WW-1.13 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1704-5UG<br />
|| LENOVO || 17045UG || ThinkPad X60s || LENOVO || 17045UG || Not Available || LENOVO || Not Available || LENOVO || 7BETD7WW (2.18 ) || 11/20/2008 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT40WW-1.13 ]-</nowiki><br />
||<br />
|-<br />
| {{X60t}} 6365-CTO<br />
|| LENOVO || 6365CTO || ThinkPad X60 Tablet || LENOVO || 6365CTO || Not Available || LENOVO || Not Available || LENOVO || 7JET25WW (1.10 ) || 08/17/2007 <br />
|| <nowiki>Handle 0x0023, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7JHT13WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{X60t}} 6363-J3G<br />
|| LENOVO || 6363J3G || ThinkPad X60 Tablet || LENOVO || 6363J3G || Not Available || LENOVO || Not Available || LENOVO || 7JET28WW (1.13 ) || 03/31/2008<br />
|| <nowiki>Handle 0x0023, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7JHT13WW-1.04 ]-</nowiki><br />
|| A mean bitch to set up, nothing really worked out of the box :(<br />
|-<br />
| {{X60t}} 6363A7G<br />
|| LENOVO || 6363A7G || ThinkPad X60 Tablet || LENOVO || 6363A7G || Not Available || LENOVO || Not Available || LENOVO || 7JET19WW (1.04 ) || 12/14/2006 <br />
|| <nowiki>Handle 0x0023, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7JHT12WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{X61}} 7675-4KU<br />
|| LENOVO || 76754KU || ThinkPad X61 || LENOVO || 76754KU || Not Available || LENOVO || Not Available || LENOVO || 7NET30WW (1.11 ) || 11/15/2007<br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7MHT24WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X61}} 7675-7KU<br />
|| LENOVO || 76757KU || ThinkPad X61 || LENOVO || 76757KU || Not Available || LENOVO || Not Available || LENOVO || 7NETB1WW (2.11 ) || 03/24/2008<br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 bytes IBM ThinkPad Embedded Controller -[7MHT25WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{X61s}} 7668-CTO<br />
|| LENOVO || 7668CTO || ThinkPad X61s || LENOVO || 7668CTO || Not Available || LENOVO || Not Available || LENOVO || 7NET25WW (1.06 ) || 07/02/2007<br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7MHT24WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X61s}} 7669-29G<br />
|| LENOVO || 766929G || ThinkPad X61s || LENOVO || 766929G || Not Available || LENOVO || Not Available || LENOVO || 7NET21WW (1.02 ) || 04/23/2007 <br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7MHT23WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{X61s}} 7669-29G<br />
|| LENOVO || 766929G || ThinkPad X61s || LENOVO || 766929G || Not Available || LENOVO || Not Available || LENOVO || 7NETB9WW (2.19 ) || 11/27/2008 <br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7MHT25WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{X61s}} 7667-34G<br />
|| LENOVO || 766734G || ThinkPad X61s || LENOVO || 766734G || Not Available || LENOVO || Not Available || LENOVO || 7NETB9WW (2.19 ) || 11/27/2008 <br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7MHT25WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{X61t}} 7762-94G<br />
|| LENOVO || 776294G || ThinkPad X61 Tablet || LENOVO || 776294G || Not Available || LENOVO || Not Available || LENOVO || 7SET38WW (1.24 ) || 10/12/2009 <br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02 ]-</nowiki><br />
|-<br />
| {{X61t}} 7762-95G<br />
|| LENOVO || 776295G || ThinkPad X61 Tablet || LENOVO || 776295G || Not Available || LENOVO || Not Available || LENOVO || 7SET22WW (1.08 ) || 11/15/2007 <br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X61t}} 7762-95G<br />
|| LENOVO || 776295G || ThinkPad X61 Tablet || LENOVO || 776295G || Not Available || LENOVO || Not Available || LENOVO || 7SET36WW (1.22 ) || 11/27/2008 <br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X61t}} 7762-98U<br />
|| LENOVO || 776298U || ThinkPad X61 Tablet || LENOVO || 776298U || Not Available || LENOVO || Not Available || LENOVO || 7SET34WW (1.20 ) || 07/29/2008 <br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X61t}} 7764-CTO<br />
|| LENOVO || 7764CTO || ThinkPad X61 Tablet || LENOVO || 7764CTO || Not Available || LENOVO || Not Available || LENOVO || 7SET18WW (1.04 ) || 07/03/2007<br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X61t}} 7764-CTO<br />
|| LENOVO || 7764CTO || ThinkPad X61 Tablet || LENOVO || 7764CTO || Not Available || LENOVO || Not Available || LENOVO || 7SET23WW (1.09 ) || 12/28/2007<br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X61t}} 7764-CTO<br />
|| LENOVO || 7764CTO || ThinkPad X61 Tablet || LENOVO || 7764CTO || Not Available || LENOVO || Not Available || LENOVO || 7SET39WW (1.25 ) || 03/22/2011<br />
|| <nowiki>Handle 0x001F, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X100e}} 2876-27G<br />
|| LENOVO || 287627G || ThinkPad X100e || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6XET21WW (1.04 ) || 12/18/2009<br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6XHT20WW-1.165000]-</nowiki><br />
||<br />
|-<br />
| {{X100e}} 2876-27G<br />
|| LENOVO || 287627G || ThinkPad X100e || LENOVO || 287627G || Not Available || LENOVO || Not Available || LENOVO || 6XET47WW (1.30 ) || 12/30/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6XHT43WW-1.183000]-</nowiki><br />
||<br />
|-<br />
| {{X100e}} 3508-4UG<br />
|| LENOVO || 35084UG || ThinkPad X100e || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6XET36WW (1.20a) || 03/12/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6XHT36WW-1.176000]-</nowiki><br />
|| <br />
|-<br />
| {{X100e}} 2876-W1U<br />
|| LENOVO || 2876W1U || ThinkPad X100e || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6XET36WW (1.20a) || 03/12/2010<br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6XHT36WW-1.176000]-</nowiki><br />
||<br />
|-<br />
| {{X100e}} 2876-W1U<br />
|| LENOVO || 2876W1U || ThinkPad X100e || LENOVO || 2876W1U || Not Available || LENOVO || Not Available || LENOVO || 6XET44WW (1.27 ) || 07/21/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6XHT42WW-1.182000]-</nowiki><br />
||<br />
|-<br />
| {{X100e}} 2876-W1U<br />
|| LENOVO || 2876W1U || ThinkPad X100e || LENOVO || 2876W1U || Not Available || LENOVO || Not Available || LENOVO || 6XET48WW (1.31 ) || 02/17/2011 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6XHT44WW-1.184000]-</nowiki><br />
|-<br />
| {{X100e}} 2876-55G<br />
|| LENOVO || 287655G || ThinkPad X100e || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6XET33WW (1.12 ) || 02/11/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6XHT31WW-1.171000]-</nowiki><br />
||<br />
|-<br />
| {{X100e}} 2876-55G<br />
|| LENOVO || 287655G || ThinkPad X100e || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6XET36WW (1.20a) || 03/12/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6XHT36WW-1.176000]-</nowiki><br />
||<br />
|- <br />
| {{X100e}} L625 (Dual-Core) 3508-5EG<br />
|| LENOVO || 35085EG || ThinkPad X100e || LENOVO || 35085EG || Not Available || LENOVO || Not Available || LENOVO || 6XET38WW (1.22 ) || 04/09/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6XHT38WW-1.178000]-</nowiki><br />
||<br />
|- <br />
| {{X100e}} L625 (Dual-Core) 3508-5EG<br />
|| LENOVO || 35085EG || ThinkPad X100e || LENOVO || 35085EG || Not Available || LENOVO || Not Available || LENOVO || 6XET39WW (1.23 ) || 04/30/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6XHT39WW-1.179000]-</nowiki><br />
||<br />
|-<br />
| {{X100e}} L625 (Dual-Core) 3508-5EG<br />
|| LENOVO || 35085EG || ThinkPad X100e || LENOVO || 35085EG || Not Available || LENOVO || Not Available || LENOVO || 6XET41WW (1.25 ) || 06/02/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6XHT40WW-1.180000]-</nowiki><br />
||<br />
|-<br />
| {{X200}} 7454-CTO<br />
|| LENOVO || 7454CTO || ThinkPad X200 || LENOVO || 7454CTO || Not Available || LENOVO || Not Available || LENOVO || 6DET38WW (2.02 ) || 12/19/2008 <br />
|| <nowiki>Handle 0x001D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7XHT21WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{X200}} 7454-CTO<br />
|| LENOVO || 7454CTO || ThinkPad X200 || LENOVO || 7454CTO || Not Available || LENOVO || Not Available || LENOVO || 6DET40WW (2.04 ) || 02/13/2009 <br />
|| <nowiki>Handle 0x001D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7XHT22WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{X200}} 7458-E46<br />
|| LENOVO || 7458E46 || ThinkPad X200 || LENOVO || 7458E46 || Not Available || LENOVO || Not Available || LENOVO || 7XET57WW (3.07 ) || 08/13/2009 <br />
|| <nowiki>Handle 0x001D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7XHT22WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{X200s}} 7466-3SG<br />
|| LENOVO || 74663SG || ThinkPad X200s || LENOVO || 74663SG || Not Available || LENOVO || Not Available || LENOVO || 6DET64WW (3.14 ) || 06/23/2010 <br />
|| <nowiki>Handle 0x001D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7XHT24WW-1.06 ]-</nowiki><br />
|-<br />
| {{X200s}}<br />
|| LENOVO || 74695HG || ThinkPad X200s || LENOVO || 74695HG || Not Available || LENOVO || Not Available || LENOVO || 6DET33WW (1.10 ) || 10/27/2008 <br />
|| <nowiki>Handle 0x001D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7XHT21WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{X200s}} <br />
|| LENOVO || 7469WDR || ThinkPad X200s || LENOVO || 7469WDR || Not Available || LENOVO || Not Available || LENOVO || 6DET44WW (2.08 ) || 04/22/2009 <br />
|| <nowiki>Handle 0x001D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7XHT22WW-1.04 ]-</nowiki><br />
|| <br />
|-<br />
| {{X200s}} 7469-88G<br />
|| LENOVO || 746988G || ThinkPad X200s || LENOVO || 746988G || Not Available || LENOVO || Not Available || LENOVO || 6DET64WW (3.14 ) || 06/23/2010<br />
|| <nowiki>Handle 0x001D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7XHT24WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{X200 Tablet}} 7449-F9U<br />
|| LENOVO || 7449F9U || ThinkPad X200 Tablet || LENOVO || 7449F9U || Not Available || LENOVO || Not Available || LENOVO || 7WET24WW (1.02 ) || 09/09/2008 <br />
|| <nowiki>Handle 0x001D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7WHT14WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{X201}} 3626-W7V<br />
|| LENOVO || 3626W7V || ThinkPad X201 || LENOVO || 3626W7V || Not Available || LENOVO || Not Available || LENOVO || 6QET44WW (1.14 ) || 04/20/2010 <br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6QHT28WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{X201}} 3626-PN2<br />
|| LENOVO || 3626PN3 || ThinkPad X201 || LENOVO || 3626PN3 || Not Available || LENOVO || Not Available || LENOVO || 6QET53WW (1.23 ) || 09/15/2010 <br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6QHT30WW-1.11 ]-</nowiki><br />
||<br />
|-<br />
| {{X201s}} 5129-CTO<br />
|| LENOVO || 5129CTO || ThinkPad X201s || LENOVO || 5129CTO || Not Available || LENOVO || Not Available || LENOVO || 6QET44WW (1.14 ) || 04/20/2010 <br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6QHT28WW-1.09 ]-</nowiki><br />
|| <br />
|- <br />
| {{X201 Tablet}} 3093-3YG<br />
|| LENOVO || 30933YG || ThinkPad X201 Tablet || LENOVO || 30933YG || Not Available || LENOVO || Not Available || LENOVO || 6QET45WW (1.15 ) || 04/26/2010 <br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6SHT28WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{X201 Tablet}} 3093-W11<br />
|| LENOVO || 3093W11 || ThinkPad X201 Tablet || LENOVO || 3093W11 || Not Available || LENOVO || Not Available || LENOVO || 6QET46WW (1.16 ) || 06/07/2010 <br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6SHT28WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{X201i}} 3249-CTO <br />
|| LENOVO || 3249CTO || ThinkPad X201 || LENOVO || 3249CTO || Not Available || LENOVO || Not Available || LENOVO || 6QET45WW (1.15 ) || 04/26/2010 <br />
|| <nowiki>Handle 0x0027, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6QHT28WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{X220 Tablet}}<br />
|| LENOVO || 42992PG || ThinkPad X220 Tablet || LENOVO || 42992PG || Not Available || LENOVO || Not Available || LENOVO || 8DET47WW (1.17 ) || 05/31/2011 <br />
|| <nowiki></nowiki><br />
|-<br />
| {{X300}} 6478-14G<br />
|| LENOVO || 647814G || ThinkPad X300 || LENOVO || 647814G || Not Available || LENOVO || Not Available || LENOVO || 7TET23WW (1.00d) || 01/17/2008 <br />
|| <nowiki>Handle 0x0022, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7THT15WW-1.00c ]-</nowiki><br />
||<br />
|-<br />
| {{X300}} 6478-18M<br />
|| LENOVO || 647818M || ThinkPad X300 || LENOVO || 647818M || Not Available || LENOVO || Not Available || LENOVO || 7TET26WW (1.02a) || 02/27/2008 <br />
|| <nowiki>Handle 0x0022, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7THT15WW-1.00c ]-</nowiki><br />
||<br />
|-<br />
| {{X300}} 6477-17G<br />
|| LENOVO || 647717G || ThinkPad X300 || LENOVO || 647717G || Not Available || LENOVO || Not Available || LENOVO || 7TET33WW (1.07 ) || <br />
07/02/2008 <br />
|| <nowiki>Handle 0x0022, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7THT15WW-1.00c ]-</nowiki><br />
||<br />
|-<br />
| {{X300}} 6477-17G<br />
|| LENOVO || 647717G || ThinkPad X300 || LENOVO || 647717G || Not Available || LENOVO || Not Available || LENOVO || 7TET35WW (1.09 ) || 01/20/2009<br />
|| <nowiki>Handle 0x0022, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7THT16WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{X301}} 2777-CTO<br />
|| LENOVO || 2777CTO || ThinkPad X301 || LENOVO || 2777CTO || Not Available || LENOVO || Not Available || LENOVO || 6EET19WW (1.00g) || 07/30/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6EHT07WW-1.00b ]-</nowiki><br />
||<br />
|-<br />
| {{X301}} 2777-CTO<br />
|| LENOVO || 2777CTO || ThinkPad X301 || LENOVO || 2777CTO || Not Available || LENOVO || Not Available || LENOVO || 6EET21WW (1.02 ) || 10/09/2008 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6EHT09WW-1.02 ]-</nowiki><br />
|| <br />
|-<br />
| {{X1}} 1294-2NG<br />
|| LENOVO || 12942NG || ThinkPad X1 || LENOVO || 12942NG || Not Available || LENOVO || Not Available || LENOVO || 8MET18WW (1.06 ) || 05/19/2011 <br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====Z series====<br />
|-<br />
| {{Z60t}} 2511-FEU<br />
|| IBM || 2511FEU || ThinkPad Z60t || IBM || 2511FEU || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{Z60t}} 2511-FFG<br />
|| IBM || 2511FFG || ThinkPad Z60t || IBM || 2511FFG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT57WW-1.17 ]-</nowiki><br />
||<br />
|- <br />
| {{Z60m}} 2529-ETG<br />
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET59WW (1.19 ) || 04/24/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[77HT54WW-1.14 ]-</nowiki><br />
||<br />
|-<br />
| {{Z60m}} 2529-ETG<br />
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18 ]-</nowiki><br />
||<br />
|-<br />
| {{Z60m}} 2529-FBG<br />
|| IBM || 2529FBG || ThinkPad Z60m || IBM || 2529FBG || Not Available || IBM || Not Available || IBM || 77ET62WW (1.22 ) || 11/21/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18 ]-</nowiki><br />
||<br />
|- <br />
| {{Z60m}} 2529-FKG<br />
|| IBM || 2529FKG || ThinkPad Z60m || IBM || 2529FKG || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005<br />
|| <nowiki>String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61m}} 9453-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET48WW (1.08 ) || 05/26/2006<br />
|| <nowiki>String 1: IBM ThinkPad Embedded Controller -[7FHT21WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61m}} 9452-8QG<br />
|| LENOVO || 94528QG || ThinkPad Z61m || LENOVO || 94528QG || Not Available || LENOVO || Not Available || LENOVO || 7FETA4WW (2.22 ) || 10/19/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61m}} 9450-H9G<br />
|| LENOVO || 9450H9G || ThinkPad Z61m || LENOVO || 9450H9G || Not Available || LENOVO || Not Available || LENOVO || 7FETA7WW (2.25 ) || 06/03/2008 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki><br />
|| <br />
|- <br />
| {{Z61m}} 9452-W5Q<br />
|| LENOVO || 9452W5Q || ThinkPad Z61m || LENOVO || 9452W5Q || Not Available || LENOVO || Not Available || LENOVO || 7FETA6WW (2.24 ) || 03/13/2008<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61m}} 9543-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61m}} 9543-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET93WW (2.11 ) || 11/10/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61m}} 9453-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61p}} 9453-A12<br />
|| LENOVO || 9453A12 || ThinkPad Z61p || LENOVO || 9453A12 || Not Available || LENOVO || Not Available || LENOVO || 7FET45WW (1.05 ) || 04/20/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7FHT19WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61p}} 9450-3AU<br />
|| LENOVO || 94503AU || ThinkPad Z61p || LENOVO || 94503AU || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61t}} 9440-2CU<br />
|| LENOVO || 94402CU || ThinkPad Z61t || LENOVO || 94402CU || Not Available || LENOVO || Not Available || LENOVO || 7FET50WW (1.10 ) || 06/20/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT22WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61t}} 9443-4GG<br />
|| LENOVO || 94434GG || ThinkPad Z61t || LENOVO || 94434GG || Not Available || LENOVO || Not Available || LENOVO || 7FET96WW (2.14 ) || 12/25/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61t}} 9440-CTO<br />
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FET91WW (2.09 ) || 11/01/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki><br />
|| <br />
|- <br />
| {{Z61t}} 9440-CTO<br />
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FET99WW (2.17 ) || 04/17/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61t}} 9440-CTO<br />
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FETA0WW (2.18 ) || 05/17/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61t}} 9440-CTO<br />
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FETA7WW (2.25 ) || 06/03/2008 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61t}} 9440-CTO<br />
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FETA9WW (2.27 ) || 08/26/2009<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====Lenovo 3000 series====<br />
|-<br />
| [[:Category:Lenovo 3000| Lenovo 3000]] N200 TY2BAFR<br />
|| LENOVO || 0769BAG || 3000 N200 || LENOVO || IEL10 || Reference || No Enclosure || N/A || LENOVO || 68ET24WW || 08/15/2007 <br />
|| <pre> </pre> <!--Hack to force column wider--><br />
|| {{T-WARN|Non-ThinkPad EC firmware and BIOS}}<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====Edge series====<br />
|-<br />
| ThinkPad Edge 13 AMD L325<br />
|| LENOVO || 01976GG || ThinkPad Edge 13"IAL# || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET25WW (1.12 ) || 01/15/2010 <br />
|| <nowiki>Handle 0x000D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6ZHT19WW-1.164000]-</nowiki><br />
|| <br />
|-<br />
| Thinkpad Edge 13 AMD L625<br />
|| LENOVO || 019734Q || ThinkPad Edge 13"IAL# || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET24WW (1.11 ) || 01/14/2010<br />
|| <nowiki>Handle 0x000D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6ZHT19WW-1.164000]-</nowiki><br />
||<br />
|-<br />
| Thinkpad Edge 13 AMD L625<br />
|| LENOVO || 019734Q || ThinkPad Edge 13"IAL# || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET31WW (1.18 ) || 05/25/2010 <br />
|| <nowiki>Handle 0x000D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6ZHT24WW-1.169000]-</nowiki><br />
||<br />
|-<br />
| Thinkpad Edge 13 AMD L625<br />
|| LENOVO || 019734Q || ThinkPad Edge 13"IAL# || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET34WW (1.21 ) || 01/07/2011<br />
|| <nowiki>Handle 0x000D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6ZHT27WW-1.172000]-</nowiki><br />
||<br />
|-<br />
|| Thinkpad Edge 13" AMD<br />
|| LENOVO || 0197RW3 || ThinkPad Edge || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET32WW (1.19 ) || 07/23/2010 <br />
|| <nowiki>Handle 0x000D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6ZHT26WW-1.171000]-</nowiki><br />
|-<br />
| ThinkPad Edge 13,3" AMD <br />
|| LENOVO || 01976WG || ThinkPad Edge || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET30WW (1.17 ) || 04/29/2010 <br />
|| <nowiki>Handle 0x000D, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6ZHT23WW-1.168000]-</nowiki><br />
||<br />
|-<br />
| ThinkPad Edge 13,3" NUD2EGE<br />
|| LENOVO || 01962EG || ThinkPad Edge 13"IAL# || LENOVO || 01962EG || Not Available || LENOVO || Not Available || LENOVO || 6YET25WW (1.10 ) || 01/15/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6YHT19WW-1.164000]-</nowiki><br />
||<br />
|-<br />
| ThinkPad Edge 13,3" NUD2EGE<br />
|| LENOVO || 01962EG || ThinkPad Edge || LENOVO || 01962EG || Not Available || LENOVO || Not Available || LENOVO || 6YET33WW (1.16 ) || 09/10/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6YHT26WW-1.171000]-</nowiki><br />
||<br />
|-<br />
|| ThinkPad Edge 13,3" NUD2EGE<br />
|| LENOVO || 01962EG || ThinkPad Edge || LENOVO || 01962EG || Not Available || LENOVO || Not Available || LENOVO || 6YET29WW (1.12 ) || 03/05/2010<br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6YHT21WW-1.166000]-</nowiki><br />
||<br />
|- <br />
|| ThinkPad Edge 13,3" Intel<br />
|| LENOVO || 0196CTO || ThinkPad Edge || LENOVO || 0196CTO || Not Available || LENOVO || Not Available || LENOVO || 6YET30WW (1.13 ) || 04/29/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6YHT23WW-1.168000]-</nowiki><br />
||<br />
|-<br />
|| ThinkPad Edge 13,3" Intel NUD5MMH<br />
|| LENOVO || 01965MG || ThinkPad Edge || LENOVO || 01965MG || Not Available || LENOVO || Not Available || LENOVO || 6YET30WW (1.13 ) || 04/29/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6YHT23WW-1.168000]-</nowiki><br />
||<br />
|-<br />
|| ThinkPad Edge 13,3" Intel NUD5PGE<br />
|| LENOVO || 01965PG || ThinkPad Edge || LENOVO || 01965PG || Not Available || LENOVO || Not Available || LENOVO || 6YET29WW (1.12 ) || 03/05/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6YHT21WW-1.166000]-</nowiki><br />
||<br />
|-<br />
|| ThinkPad Edge 13,3" Intel NUD5PGE<br />
|| LENOVO || 01965PG || ThinkPad Edge || LENOVO || 01965PG || Not Available || LENOVO || Not Available || LENOVO || 6YET33WW (1.16 ) || 09/10/2010 <br />
|| <nowiki>Handle 0x0018, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[6YHT26WW-1.171000]-</nowiki><br />
|-<br />
|| ThinkPad Edge 14" NVP3YRT<br />
|| LENOVO || 05783YG || ThinkPad Edge || LENOVO || 05783YG || Not Available || LENOVO || Not Available || LENOVO || 80ET29WW (1.06 ) || 03/24/2010 <br />
|| <nowiki>Handle 0x0019, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[80HT22WW-1.166000]-</nowiki><br />
||<br />
|-<br />
| ThinkPad Edge 14" 639D640<br />
|| LENOVO || 0578A19 || ThinkPad Edge || LENOVO || 0578A19 || Not Available || LENOVO || Not Available || LENOVO || 80ET29WW (1.06 ) || 03/24/2010 <br />
|| <nowiki>Handle 0x0019, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[80HT22WW-1.166000]-</nowiki><br />
|| <br />
|- <br />
| ThinkPad Edge 14" Intel i5 M430<br />
|| LENOVO || 0578BHA || ThinkPad Edge || LENOVO || 0578BHA || Not Available || LENOVO || Not Available || LENOVO || 80ET31WW (1.08 ) || 04/28/2010 <br />
|| <nowiki>Handle 0x0019, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[80HT23WW-1.167000]-</nowiki><br />
||<br />
|-<br />
| ThinkPad Edge 14" Intel i3 M370<br />
|| LENOVO || 0578JHG || ThinkPad Edge || LENOVO || 0578JHG || Not Available || LENOVO || Not Available || LENOVO || 80ET43WW (1.20 ) || 11/17/2010 <br />
|| <nowiki>Handle 0x0019, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[80HT33WW-1.177000]-</nowiki><br />
||<br />
|- <br />
|| ThinkPad Edge 15" NVL7VGE<br />
|| LENOVO || 03017VG || ThinkPad Edge || LENOVO || 03017VG || Not Available || LENOVO || Not Available || LENOVO || 80ET36WW (1.13 ) || 06/04/2010 <br />
|| <nowiki>Handle 0x0019, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[80HT29WW-1.173000]-</nowiki><br />
||<br />
|-<br />
|| ThinkPad Edge 15" 0301RJ7<br />
|| LENOVO || 0301RJ7 || ThinkPad Edge || LENOVO || 0301RJ7 || Not Available || LENOVO || Not Available || LENOVO || 80ET43WW (1.20 ) || 11/17/2010 <br />
|| <nowiki>Handle 0x0019, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[80HT33WW-1.177000]-</nowiki><br />
||<br />
|-<br />
|| ThinkPad Edge 15" AMD<br />
|| LENOVO || 0302CTO || ThinkPad Edge || LENOVO || 0302CTO || Not Available || LENOVO || Not Available || LENOVO || 82ET63WW (2.04 ) || 01/07/2011 <br />
|| <nowiki>Handle 0x0015, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[82HT28WW-1.174000]-</nowiki><br />
||<br />
|-<br />
|| ThinkPad Edge 15" AMD<br />
|| LENOVO || 0302CTO || ThinkPad Edge || LENOVO || 0302CTO || Not Available || LENOVO || Not Available || LENOVO || 82ET75WW (2.15 ) || 01/28/2011 <br />
|| <nowiki>Handle 0x0015, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[82HT28WW-1.174000]-</nowiki><br />
||<br />
|- <br />
| ThinkPad Edge E420s<br />
|| LENOVO || 440128U || ThinkPad Edge E420s || LENOVO || 440128U || Not Available || LENOVO || Not Available || LENOVO || 8JET26WW (1.08 ) || 03/24/2011<br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
| ThinkPad Edge E420s<br />
|| LENOVO || 440128U || ThinkPad Edge E420s || LENOVO || 440128U || Not Available || LENOVO || Not Available || LENOVO || 8JET29WW (1.11 ) || 05/10/2011<br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====L series====<br />
|-<br />
| L512<br />
|| LENOVO || 4444CTO || ThinkPad L512 || LENOVO || 4444CTO || Not Available || LENOVO || Not Available || LENOVO || 81ET40WW (1.16 ) || 06/22/2010 <br />
|| <nowiki>Handle 0x0019, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[81HT25WW-1.168000]-</nowiki><br />
||<br />
|-<br />
|}<br />
</div><br />
<br />
==Adding entries==<br />
<br />
Click the "Edit" link on the appropriate series above and add an entry of the following form:<br />
:<tt>| </tt><i>description of your model</i><br />
:<i>data line 1</i><br />
:<i>data line 2</i><br />
:<tt>||</tt><br />
:<tt>|-</tt><br />
<br />
where the two data lines are generated by the following <tt>bash</tt> command:<br />
<br />
<pre><br />
for X in system-{manufacturer,product-name,version} \<br />
baseboard-{manufacturer,product-name,version} \<br />
chassis-{manufacturer,version} bios-{vendor,version,release-date}; do \<br />
echo -n "|| `sudo /usr/sbin/dmidecode -s $X` " \<br />
| perl -pe 's/\n/\\n/' ; done; \<br />
sudo /usr/sbin/dmidecode | perl -0777 -ne \<br />
'm/\n(.*).\n.*\n(.*Embedded Cont.*)\n/i; print "\n|| <nowiki><</nowiki>nowiki>$1$2</nowiki>\n"'<br />
</pre><br />
<br />
If you can, please also test [[tp_smapi]] and update its [[tp_smapi#Model-specific_status|model-specific status table]].<br />
<br />
==Software using ThinkPad DMI IDs==<br />
* [[HDAPS]] driver whitelist<br />
* [[tp_smapi]] driver whitelist<br />
* [[thinkpad-acpi]] driver quirk list</div>Blueyed