<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.thinkwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gervase</id>
	<title>ThinkWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.thinkwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gervase"/>
	<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/wiki/Special:Contributions/Gervase"/>
	<updated>2026-04-27T16:31:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=List_of_DMI_IDs&amp;diff=53090</id>
		<title>List of DMI IDs</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=List_of_DMI_IDs&amp;diff=53090"/>
		<updated>2011-10-30T18:18:09Z</updated>

		<summary type="html">&lt;p&gt;Gervase: /* X series */  - add X220&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
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.&lt;br /&gt;
{{HELP|We need more information about older models, especially those released before 2004. Please [[#Adding_entries|add your model]] to the database.}}&lt;br /&gt;
{{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.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==DMI ID database==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 80%&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Model&lt;br /&gt;
! &amp;lt;tt&amp;gt;system-&amp;lt;br /&amp;gt;manufa&amp;lt;br /&amp;gt;cturer&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;system-&amp;lt;br /&amp;gt;product-&amp;lt;br /&amp;gt;name&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;system-&amp;lt;br /&amp;gt;version&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;baseboard-&amp;lt;br /&amp;gt;manufa&amp;lt;br /&amp;gt;cturer&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;baseboard-&amp;lt;br /&amp;gt;product-&amp;lt;br /&amp;gt;name&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;base&amp;lt;br /&amp;gt;board-&amp;lt;br /&amp;gt;version&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;chassis-&amp;lt;br /&amp;gt;manufa&amp;lt;br /&amp;gt;cturer&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;chassis-&amp;lt;br /&amp;gt;version&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;bios-&amp;lt;br /&amp;gt;vendor&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;bios-&amp;lt;br /&amp;gt;version&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;bios-&amp;lt;br /&amp;gt;release-&amp;lt;br /&amp;gt;date&amp;lt;/tt&amp;gt;&lt;br /&gt;
! Embedded controller&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
====Numbered series====&lt;br /&gt;
|-&lt;br /&gt;
| {{240X}} 2609-61U&lt;br /&gt;
|| IBM || 260961U || Not Available || IBM || 2609BS1 || Not Available || IBM || Not Available || IBM || 1.03.09  || 12/21/1999 &lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{570}} 2644-1AU&lt;br /&gt;
|| IBM || 26441AU || Not Available || IBM || 26441AU || Not Available || IBM || Not Available || IBM || IMET65WW  || 11/11/99&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{570E}} 2644-5AU&lt;br /&gt;
|| IBM || 26445AU || Not Available || IBM || 26445AU || Not Available || IBM || Not Available || IBM || IUET25WW || 12/11/1999&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{600E}} 2645-5AU&lt;br /&gt;
|| IBM || 26455AU || Not Available || IBM || 26455AU || Not Available || IBM || Not Available || IBM || INET36WW || 11/20/1999&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{600X}} 2645-5FU&lt;br /&gt;
|| IBM || 26455FU || Not Available || IBM || 26455FU || Not Available || IBM || Not Available || IBM || INET55WW || 11/30/1999&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{600X}} 2645-8EU&lt;br /&gt;
|| IBM || 26458EU || Not Available || IBM || 26458EU || Not Available || IBM || Not Available || IBM || ITET54WW || 11/30/1999 &lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{600X}} 2645-8EU&lt;br /&gt;
|| IBM || 26458EU || Not Available || IBM || 26458EU || Not Available || IBM || Not Available || IBM || ITET48WW || 11/30/1999 &lt;br /&gt;
||&lt;br /&gt;
||POST/BIOS Version 1.13 old prior to upgrade &lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====A series====&lt;br /&gt;
|-&lt;br /&gt;
| {{A21m}} 2628-FSG&lt;br /&gt;
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET24WW (1.02b) || 12/19/2000 &lt;br /&gt;
|| &lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{A21m}} 2628-FSG&lt;br /&gt;
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET36WW (1.09 ) || 05/08/2003 &lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{A21m}} 2628-GTU&lt;br /&gt;
|| IBM || 2628GTU || Not Available || IBM || 2628GTU || Not Available || IBM || Not Available || IBM || KXET29WW (1.03d) || 03/21/2001 &lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{A22e}} 2655-KG1&lt;br /&gt;
|| IBM || 2655KG1 || Not Available || IBM || 2655KG1 || Not Available || IBM || Not Available || IBM || 10ET23WW (1.04 ) || 09/05/2001 &lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{A22e}} 2655-KG1&lt;br /&gt;
|| IBM || 2655KG1 || Not Available || IBM || 2655KG1 || Not Available || IBM || Not Available || IBM || 10ET26WW (1.07 ) || 06/13/2003 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{A22p}} 2629-USG&lt;br /&gt;
|| IBM || 2629USG || Not Available || IBM || 2629USG || Not Available || IBM || Not Available || IBM || KYET36WW (1.09a) || 10/17/2002 &lt;br /&gt;
||&lt;br /&gt;
|| {{T-WARN|Outdated BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{A22p}} 2629-A2G&lt;br /&gt;
|| IBM || 2629A2G || Not Available || IBM || 2629A2G || Not Available || IBM || Not Available || IBM || KYET38WW (1.11 ) || 05/20/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{A31}} 2652-PBU&lt;br /&gt;
|| IBM || 2652PBU || Not Available || IBM || 2652PBU || Not Available || IBM || Not Available || IBM || 1NET15WW (1.09 ) || 04/06/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1NHT04WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{A31p}} 2653-RNG&lt;br /&gt;
|| IBM || 2653RNG || Not Available || IBM || 2653RNG || Not Available || IBM || Not Available || IBM || 1NET16WW (1.10 ) || 10/19/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1NHT08WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{A31p}} 2653-H6U&lt;br /&gt;
|| IBM || 2653H6U || Not Available || IBM || 2653H6U || Not Available || IBM || Not Available || IBM || 1GET31WW (1.03 ) || 07/23/2002&lt;br /&gt;
||&lt;br /&gt;
|| {{T-WARN|Missing EC string, extremely outdated BIOS}}{{HELP|We need a report to know if the latest BIOS fixes the missing EC string}}&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====G series====&lt;br /&gt;
|-&lt;br /&gt;
| {{G41}} 2881-75M&lt;br /&gt;
|| IBM || 288175M || ThinkPad G41 || IBM || 288175M || Not Available || IBM || Not Available || IBM || 1XET47WW (1.06 ) || 01/14/2005&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
====R series====&lt;br /&gt;
|-&lt;br /&gt;
| {{R40}} 2681-5UU&lt;br /&gt;
|| IBM || 26815UU || Not Available || IBM || 26815UU || Not Available || IBM || Not Available || IBM || 1OET57WW (1.23 ) || 03/23/2005 &lt;br /&gt;
||&lt;br /&gt;
|| {{T-WARN|Outdated BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{R40}} 2681-HSG&lt;br /&gt;
|| IBM || 2681HSG || Not Available || IBM || 2681HSG || Not Available || IBM || Not Available || IBM || 1OET61WW (1.27 ) || 06/29/2006&lt;br /&gt;
||&lt;br /&gt;
|| {{T-WARN|Outdated BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{R40}} 2722-B3G&lt;br /&gt;
|| IBM || 2722B3G || Not Available || IBM || 2722B3G || Not Available || IBM || Not Available || IBM || 1PET62WW (1.30 ) || 09/29/2005&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R40}} 2722-BDG&lt;br /&gt;
|| IBM || 2722BDG || Not Available || IBM || 2722BDG || Not Available || IBM || Not Available || IBM || 1PET65WW (1.33 ) || 06/29/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R40}} 2722-C4U &lt;br /&gt;
|| IBM || 2722CU4 || Not Available || IBM || 2722CU4 || Not Available || IBM || Not Available || IBM || 1PET46WW (1.14 ) || 07/15/2003&lt;br /&gt;
|| 1OHT37WW (1.09) 05/26/03&lt;br /&gt;
|| {{T-WARN|Outdated BIOS}}&lt;br /&gt;
|- &lt;br /&gt;
| {{R40}} 2722-C4U &lt;br /&gt;
|| IBM || 2722CU4 || Not Available || IBM || 2722CU4 || Not Available || IBM || Not Available || IBM || 1PET65WW (1.33 ) || 06/29/2006 &lt;br /&gt;
|| 1OHT42WW (1.14) 05/23/05&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{R40}} 2897-B4U&lt;br /&gt;
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1PET52WW (1.20 ) || 03/03/2004&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-    &lt;br /&gt;
| {{R40e}} 2684-L8G&lt;br /&gt;
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1SET62WW (1.30 ) || 07/09/2004&lt;br /&gt;
||&lt;br /&gt;
|| {{T-WARN|Outdated BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{R40e}} 2684-L8G&lt;br /&gt;
|| IBM || 2684L8G || Not Available || IBM || 2684L8G || Not Available || IBM || Not Available || IBM || 1SET70WW (1.38 ) || 11/15/2005&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R50}} 1829-7QG&lt;br /&gt;
|| IBM || 0123456 || ThinkPad R50  || IBM || 0123456 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|{{R50e}} 1834-JAG&lt;br /&gt;
|| IBM || 1834JAG || ThinkPad R50e || IBM || 1834JAG || Not Available || IBM || Not Available || IBM || 1WET82WW (2.02 ) || 02/21/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0022, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|{{R50e}}&lt;br /&gt;
|| IBM || 1834S5G || ThinkPad R50e || IBM || 1834S5G || Not Available || IBM || Not Available || IBM || 1WET86WW (2.06 ) || 11/15/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0022, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| {{T-WARN|Outdated BIOS}}&lt;br /&gt;
|- &lt;br /&gt;
|{{R50e}}&lt;br /&gt;
|| IBM || 1834S5G || ThinkPad R50e || IBM || 1834S5G || Not Available || IBM || Not Available || IBM || 1WET90WW (2.10 ) || 12/08/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0022, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
|{{R50p}} 1832-2AG&lt;br /&gt;
|| IBM || 18322AG || ThinkPad R50p || IBM || 18322AG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} 1829-DRG&lt;br /&gt;
|| IBM || 1829DRG || ThinkPad R51 || IBM || 1829DRG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a   ]-&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} 1829-9MG&lt;br /&gt;
|| IBM || 18299MG || ThinkPad R51 || IBM || 18299MG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} 1829-L7G&lt;br /&gt;
|| IBM || 1829L7G || ThinkPad R51 || IBM || 1829L7G || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT70WW-3.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{R51}} [[1830-DG4]]&lt;br /&gt;
|| IBM || 1830DG4 || ThinkPad R51 || IBM || 1830DG4 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} [[1830-DG4]]&lt;br /&gt;
|| IBM || 1830DG4 || ThinkPad R51 || IBM || 1830DG4 || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} 1836-GEU&lt;br /&gt;
|| IBM || 1836GEU || ThinkPad R51 || IBM || 1836GEU || Not Available || IBM || Not Available || IBM || 1RETDLWW  (3.17 ) || 07/27/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes. String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} 2883-ELU&lt;br /&gt;
|| IBM || 2883ELU || ThinkPad R51 || IBM || 2883ELU || Not Available || IBM || Not Available || IBM || 1VET69WW (1.27 ) || 03/03/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} 2883-8QU&lt;br /&gt;
|| IBM || 28838QU || ThinkPad R51 || IBM || 28838QU || Not Available || IBM || Not Available || IBM || 1VET61WW (1.19 ) || 12/20/2004&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1VHT27WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1846-AQG&lt;br /&gt;
|| IBM || 1846AQG || ThinkPad H || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes	String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| Weird system version, this bug is known fixed in latest BIOS&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1846-AQG&lt;br /&gt;
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET68WW (1.28 ) || 11/15/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1846-AQG&lt;br /&gt;
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET69WW (1.29 ) || 12/06/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1847-CTO&lt;br /&gt;
|| IBM || 1847W15 || ThinkPad R52 || IBM || 1847W15 || Not Available || IBM || Not Available || IBM || 76ET69WW (1.29 ) || 12/06/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1847-W62&lt;br /&gt;
|| IBM || 1847W62 || ThinkPad .    || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| Weird system version, this bug is known fixed in latest BIOS&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1847-W62&lt;br /&gt;
|| IBM || 1847W62 || ThinkPad R52  || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1858-6MM&lt;br /&gt;
|| IBM || 18586MM || ThinkPad R52 || IBM || 18586MM || Not Available || IBM || Not Available || IBM || 70ET40WW (1.04 ) || 06/02/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1858-6SM&lt;br /&gt;
|| IBM || 18586SM || ThinkPad R52 || IBM || 18586SM || Not Available || IBM || Not Available || IBM || 70ET57WW (1.17 ) || 07/15/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1846-4CG&lt;br /&gt;
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[76HT15WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1846-4CG&lt;br /&gt;
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1846-B5G&lt;br /&gt;
|| IBM || 1846B5G || ThinkPad H    || IBM || 1846B5G || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60e}} 0657-4TG&lt;br /&gt;
|| LENOVO || 06574TG || ThinkPad R60e || LENOVO || 06574TG || Not Available || LENOVO || Not Available || LENOVO || 7EET18WW (1.04 ) || 07/28/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[7EHT13WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9456-6FG&lt;br /&gt;
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9456-6FG&lt;br /&gt;
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CETB7WW (2.07 ) || 11/13/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9461-54G&lt;br /&gt;
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9461-54G&lt;br /&gt;
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CETC1WW (2.11 ) || 01/09/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| With this bios version the brightness control buttons don't work for kernel &amp;lt; 2.6.20&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9461-54G&lt;br /&gt;
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CET49WW (1.04 ) || 05/11/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7CHT16WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9460MR2&lt;br /&gt;
|| LENOVO || 9460MR2 || ThinkPad R60 || LENOVO || 9460MR2 || Not Available || LENOVO || Not Available || LENOVO || 7CETC6WW (2.16 ) || 04/18/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9461-DXG&lt;br /&gt;
|| LENOVO || 9461DXG || ThinkPad R60 || LENOVO || 9461DXG || Not Available || LENOVO || Not Available || LENOVO || 7CETB6WW (2.06 ) || 10/16/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9461-DXG&lt;br /&gt;
|| LENOVO || 9461DXG || ThinkPad R60 || LENOVO || 9461DXG || Not Available || LENOVO || Not Available || LENOVO || 7CETD2WW (2.22 ) || 05/28/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7CHT22WW-1.10    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9462-GAG&lt;br /&gt;
|| LENOVO || 9462GAG || ThinkPad R60 || LENOVO || 9462GAG || Not Available || LENOVO || Not Available || LENOVO || 7CETB5WW (2.05 ) || 10/13/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 8918-5QG&lt;br /&gt;
|| LENOVO || 89185QG || ThinkPad R61 || LENOVO || 89185QG || Not Available || LENOVO || Not Available || LENOVO || 7KETA7WW (2.07 ) || 12/06/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 8919-W4P&lt;br /&gt;
|| LENOVO || 8919W4P || ThinkPad R61 || LENOVO || 8919W4P || Not Available || LENOVO || Not Available || LENOVO || 7KET76WW (1.26 ) || 10/18/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| According to the sticker on the bottom of the notebook as well as according to Lenovo web it is 8919-CTO subtype&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 8919-W6X&lt;br /&gt;
|| LENOVO || 8919W6X || ThinkPad R61 || LENOVO || 8919W6X || Not Available || LENOVO || Not Available || LENOVO || 7KET71WW (1.21 ) || 08/22/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 8919-W6X&lt;br /&gt;
|| LENOVO || 8919W6X || ThinkPad R61 || LENOVO || 8919W6X || Not Available || LENOVO || Not Available || LENOVO || 7KETB9WW (2.19 ) || 06/05/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 8919-DFG&lt;br /&gt;
|| LENOVO || 8918DFG || ThinkPad R61 || LENOVO || 8918DFG || Not Available || LENOVO || Not Available || LENOVO || 7KETA9WW (2.09 ) || 12/27/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 8943-DMG&lt;br /&gt;
|| LENOVO || 8943DMG || ThinkPad R61 || LENOVO || 8943DMG || Not Available || LENOVO || Not Available || LENOVO || 7QET34WW (1.16 ) || 03/24/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7QHT15WW-1.00    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 7732-4TG&lt;br /&gt;
|| LENOVO || 77324TG || ThinkPad R61 || LENOVO || 77324TG || Not Available || LENOVO || Not Available || LENOVO || 7LET51WW (1.21 ) || 08/22/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 7732-4TG&lt;br /&gt;
|| LENOVO || 77324TG || ThinkPad R61 || LENOVO || 77324TG || Not Available || LENOVO || Not Available || LENOVO || 7LETC5WW (2.25 ) || 11/14/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 7732-NEG&lt;br /&gt;
|| LENOVO || 7732NEG || ThinkPad R61 || LENOVO || 7732NEG || Not Available || LENOVO || Not Available || LENOVO || 7LETB6WW (2.16 ) || 04/16/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 7732-NEG&lt;br /&gt;
|| LENOVO || 7732NEG || ThinkPad R61 || LENOVO || 7732NEG || Not Available || LENOVO || Not Available || LENOVO || 7LETC5WW (2.25 ) || 11/14/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 7732-NEG&lt;br /&gt;
|| LENOVO || 7732NEG || ThinkPad R61 || LENOVO || 7732NEG || Not Available || LENOVO || Not Available || LENOVO || 7LETC6WW (2.26 ) || 05/11/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 7733-1ES&lt;br /&gt;
|| LENOVO || 77331ES || ThinkPad R61 || LENOVO || 77331ES || Not Available || LENOVO || Not Available || LENOVO || 7LETB0WW (2.10 ) || 01/21/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 7733-1ES&lt;br /&gt;
|| LENOVO || 77331ES || ThinkPad R61 || LENOVO || 77331ES || Not Available || LENOVO || Not Available || LENOVO || 7LETB4WW (2.14 ) || 03/24/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61}} 7733-A82 &lt;br /&gt;
|| LENOVO || 7733A82 || ThinkPad R61/R61i || LENOVO || 7733A82 || Not Available || LENOVO || Not Available || LENOVO || 7LETC5WW (2.25 ) || 11/14/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| Intel graphics, 14.1&amp;quot; WXGA, Atheros wireless&lt;br /&gt;
|-&lt;br /&gt;
| {{R61i}} 7732-A12&lt;br /&gt;
|| LENOVO || 7732A12 || ThinkPad R61i || LENOVO || 7732A12 || Not Available || LENOVO || Not Available || LENOVO || 7KET76WW (1.26 ) || 10/18/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| Prior to Flashing&lt;br /&gt;
|-&lt;br /&gt;
| {{R61i}} 7732-A12&lt;br /&gt;
|| LENOVO || 7732A12 || ThinkPad R61i || LENOVO || 7732A12 || Not Available || LENOVO || Not Available || LENOVO || 7KETC8WW (2.28) || 05/26/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| Post Flashing&lt;br /&gt;
|-&lt;br /&gt;
| {{R61i}} 7650-D7G&lt;br /&gt;
|| LENOVO || 7650D7G || ThinkPad R61e || LENOVO || 7650D7G || Not Available || LENOVO || Not Available || LENOVO || 7PETB0WW (2.10 ) || 01/21/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R61e}} 7650-E6G&lt;br /&gt;
|| LENOVO || 7650E6G || ThinkPad R61e || LENOVO || 7650E6G || Not Available || LENOVO || Not Available || LENOVO || 7PETB2WW (2.12 ) || 02/20/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R400}} 7439-A85&lt;br /&gt;
|| LENOVO || 7439A85 || ThinkPad R400 || LENOVO || 7439A85 || Not Available || LENOVO || Not Available || LENOVO || 7UET45WW (1.15 ) || 09/08/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R400}} 7443-TPA&lt;br /&gt;
|| LENOVO || 7443TPA || ThinkPad R400 || LENOVO || 7443TPA || Not Available || LENOVO || Not Available || LENOVO || 7UET49WW (1.19 ) || 10/17/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R400}} 7443-TPA&lt;br /&gt;
|| LENOVO || 7443TPA || ThinkPad R400 || LENOVO || 7443TPA || Not Available || LENOVO || Not Available || LENOVO || 7UET50WW (1.20 ) || 10/30/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====S series====&lt;br /&gt;
|-&lt;br /&gt;
| {{s30}} 2639-4WJ&lt;br /&gt;
|| IBM || 26394WJ || Not Available || IBM || 2609BS1 || Not Available || IBM || Not Available || IBM || 18ET45WW (1.45) || 07/10/2001&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====SL series====&lt;br /&gt;
|-&lt;br /&gt;
| {SL410} 2842-7PU || LENOVO || 28427PU || ThinkPad SL410 || LENOVO || 28427PU || Not Available || LENOVO || Not Available || LENOVO || 6JET69WW (1.27 ) || 11/30/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6JHT54WW-1.174000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{SL410}} 2842-XF2 || LENOVO || 28427PU || ThinkPad SL410 || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6JET58WW (1.16 ) || 09/17/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6JHT48WW-1.168000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{SL500}} 2746-3ZG || LENOVO || 27463ZG || ThinkPad SL500 || LENOVO || BOXSTER || 6AET&amp;lt;br /&amp;gt;42WW || LENOVO || 6AET&amp;lt;br /&amp;gt;42WW || LENOVO || 6AET42WW || 08/04/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| {{T-WARN|IdeaPad EC and BIOS.  This is an IdeaPad in disguise.}}&lt;br /&gt;
|-&lt;br /&gt;
| {{SL500}} 2746-4CG || LENOVO || 27464CG || ThinkPad SL500 || LENOVO || BOXSTER    || 6AET&amp;lt;br /&amp;gt;41WW || LENOVO || 6AET&amp;lt;br /&amp;gt;41WW || LENOVO || 6AET41WW || 07/10/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| {{T-WARN|IdeaPad EC and BIOS.  This is an IdeaPad in disguise.}}&lt;br /&gt;
|-&lt;br /&gt;
| {{SL500}} 2764-EAG || LENOVO || 2746EAG || ThinkPad SL || LENOVO  || 2746EAG || 6AET&amp;lt;br /&amp;gt;58WW || LENOVO || 6AET&amp;lt;br /&amp;gt;58WW || LENOVO || 6AET58WW || 05/29/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{SL510}} 2847-7MG&lt;br /&gt;
|| LENOVO || 28477MG || ThinkPad SL510 || LENOVO || ? || not available || LENOVO || not available || LENOVO || 6JET72WW (1.30 ) || 01/26/2010 &lt;br /&gt;
|| Handle 0x0018, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[6JHT57WW-1.177000]-&lt;br /&gt;
|| {{T-WARN|IdeaPad EC and BIOS.}}&lt;br /&gt;
|-&lt;br /&gt;
| {{SL400}} 2743-Rk3&lt;br /&gt;
|| LENOVO                         || 2743RK3 || ThinkPad SL || LENOVO                        || 2743RK3    || LENOVO 6AET59WW || LENOVO                        || LENOVO 6AET59WW || LENOVO || 6AET59WW || 08/26/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====T series====&lt;br /&gt;
|-&lt;br /&gt;
| {{T20}} 2647-UC2&lt;br /&gt;
|| IBM || 2647UC2 || Not Available || IBM || 2647UC2 || Not Available || IBM || Not Available || IBM || IYET45WW (1.08a) || 12/21/1999&lt;br /&gt;
||&lt;br /&gt;
|| {{T-WARN|Very outdated BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{T21}} 2647-8AG &lt;br /&gt;
|| IBM || 26478AG || Not Available || IBM || 26478AG || Not Available || IBM || Not Available || IBM || KZET22WW (1.04a) || 01/19/2001 &lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T21}} 2647-9AU&lt;br /&gt;
|| IBM || 26479AU || Not Available || IBM || 26479AU || Not Available || IBM || Not Available || IBM || KZET33WW (1.15 ) || 03/28/2003&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T21}} 2647-8AG &lt;br /&gt;
|| IBM || 26478AG || Not Available || IBM || 26478AG || Not Available || IBM || Not Available || IBM || KZET34WW (1.16 ) || 04/28/2004 &lt;br /&gt;
||&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{T21}} 2647-8AU&lt;br /&gt;
|| IBM || 26478AU || Not Available || IBM || 26478AU || Not Available || IBM || Not Available || IBM || KZET34WW (1.16 ) || 04/28/2004&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T21}} 2647-8GG&lt;br /&gt;
|| IBM || 26478GG || Not Available || IBM || 26478GG || Not Available || IBM || Not Available || IBM || 16ET29WW (1.09 ) || 02/28/2002 &lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T22}} 2647-4EG&lt;br /&gt;
|| IBM || 26474EG || Not Available || IBM || 26474EG || Not Available || IBM || Not Available || IBM || 16ET31WW (1.11 ) || 03/20/2003 &lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T22}} 2647-8EU&lt;br /&gt;
|| IBM || 26478EU || Not Available || IBM || 26478EU || Not Available || IBM || Not Available || IBM || 16ET32WW (1.12 ) || 04/27/2004&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{T23}} 2647&lt;br /&gt;
|| IBM || 2647 || Not Available || IBM || 2647 || Not Available || IBM || Not Available || IBM || 1AET56WW (1.13) || 07/23/2002 &lt;br /&gt;
|| &lt;br /&gt;
|| Manufactured in Greenock, Scotland&lt;br /&gt;
|- &lt;br /&gt;
| {{T23}} 2647&lt;br /&gt;
|| IBM || 2647 || Not Available || IBM || 2647 || Not Available || IBM || Not Available || IBM || 1AET64WW (1.20) || 07/23/2002 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;As above. Handle 0x0024, DMI type 11, 5 bytes OEM Strings String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a]-&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{T23}} 2647-4MG&lt;br /&gt;
|| IBM || 26474MG || Not Available || IBM || 26474MG || Not Available || IBM || Not Available || IBM || 1AET58WW (1.14a) || 09/11/2002 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{T23}} 2647-4MG&lt;br /&gt;
|| IBM || 26474MG || Not Available || IBM || 26474MG || Not Available || IBM || Not Available || IBM || 1AET64WW (1.20 ) || 10/18/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{T23}} 2647-4NU&lt;br /&gt;
|| IBM || 26474NU || Not Available || IBM || 26474NU || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T23}} 2647-8MG&lt;br /&gt;
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET56WW (1.13 ) || 07/02/2002&lt;br /&gt;
||&lt;br /&gt;
|| Missing EC string, this bug is known to be fixed in latest BIOS&lt;br /&gt;
|-&lt;br /&gt;
| {{T23}} 2647-8MG&lt;br /&gt;
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T23}} 2648-DG1&lt;br /&gt;
|| IBM || 2648DG1 || Not Available || IBM || 2648DG1 || Not Available || IBM || Not Available || IBM || 1AET61WW (1.17 ) || 05/29/2003 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T23}} 2648-DG1&lt;br /&gt;
|| IBM || 2648DG1 || Not Available || IBM || 2648DG1 || Not Available || IBM || Not Available || IBM || 1AET64WW (1.20 ) || 10/18/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T30}} 2366-21U&lt;br /&gt;
|| IBM || 236621U || Not Available || IBM || 236621U || Not Available || IBM || Not Available || IBM || 1IET71WW (2.10 ) || 06/16/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1IHT20WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T30}} 2366-82U&lt;br /&gt;
|| IBM || 236682U || Not Available || IBM || 236682U || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1IHT19WW-1.06]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T30}} 2366-85G&lt;br /&gt;
|| IBM || 236685G || Not Available || IBM || 236685G || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1IHT18WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T30}} 2366-GU1&lt;br /&gt;
|| IBM || 2366GU1 || Not Available || IBM || 2366GU1 || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1IHT19WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T30}} 2366-JBU&lt;br /&gt;
|| IBM || 2366JBU || Not Available || IBM || 2366JBU || Not Available || IBM || Not Available || IBM || 1IET71WW (2.10 ) || 06/16/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1IHT20WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T40}} 2378-D2U&lt;br /&gt;
|| IBM || 2378D2U || ThinkPad T40 || IBM || 2378D2U || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004&lt;br /&gt;
|| &lt;br /&gt;
|| Missing EC string, this bug is known to be fixed in latest BIOS&lt;br /&gt;
|-&lt;br /&gt;
| {{T40}} 2373-42G&lt;br /&gt;
|| IBM || 237342G || ThinkPad T40  || IBM || 237342G || Not Available || IBM || Not Available || IBM || 1RET84WW (2.11 ) || 10/30/2003&lt;br /&gt;
|| [[ATI Mobility Radeon 7500]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T40}} 2373-NG5&lt;br /&gt;
|| IBM || 2373NG5 || ThinkPad T40  || IBM || 2373NG5 || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T40}} 2373-NG5&lt;br /&gt;
|| IBM || 2373NG5 || ThinkPad T40  || IBM || 2373NG5 || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T40}} 2374-2G9&lt;br /&gt;
|| IBM || 23742G9 || ThinkPad T40  || IBM || 23742G9 || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| After upgrade from Bios v. 3.16 and ecp 3.02&lt;br /&gt;
|-&lt;br /&gt;
| {{T40p}} 2373-G1G&lt;br /&gt;
|| IBM || 2373G1G || ThinkPad T40p || IBM || 2373G1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T40p}} 2373-5U5&lt;br /&gt;
|| IBM || 23735U5 || ThinkPad T40p || IBM || 23735U5 || Not Available || IBM || Not Available || IBM || 1RETDGWW (3.12 ) || 10/18/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT70WW-3.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{T40p}} 2373-5U5&lt;br /&gt;
|| IBM || 23735U5 || ThinkPad T40p || IBM || 23735U5 || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{T41}} 2373-9FG&lt;br /&gt;
|| IBM || 23739FG || ThinkPad T41  || IBM || 23739FG || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{T41}} 2373-W63&lt;br /&gt;
|| IBM || 2373W63 || ThinkPad T41  || IBM || 2373W63 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41}} 2373-XNX&lt;br /&gt;
|| IBM || 2373XNX || ThinkPad T41  || IBM || 2373XNX || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41}} 2373-2FG&lt;br /&gt;
|| IBM || 23732FG || ThinkPad T41 || IBM || 23732FG || Not Available || IBM || Not Available || IBM || 1RET84WW (2.11 ) || 10/30/2003&lt;br /&gt;
||&lt;br /&gt;
|| Missing EC string, this bug is known to be fixed in latest BIOS&lt;br /&gt;
|-&lt;br /&gt;
| {{T41}} 2373-7FG&lt;br /&gt;
|| IBM || 23737FG || ThinkPad T41  || IBM || 23737FG || Not Available || IBM || Not Available || IBM || 1RET87WW (2.14 ) || 01/26/2004&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41}} 2373-7FG&lt;br /&gt;
|| IBM || 23737FG || ThinkPad T41  || IBM || 23737FG || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| After upgrade from BIOS v. 2.14&lt;br /&gt;
|-&lt;br /&gt;
| {{T41}} 2373-TG5&lt;br /&gt;
|| IBM || 2373TG5 || ThinkPad T41  || IBM || 2373TG5 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41}} 2374-312&lt;br /&gt;
|| IBM || 2374312 || ThinkPad T41  || IBM || 2374312 || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41}} 2379-DJU&lt;br /&gt;
|| IBM || 2379DJU || ThinkPad T41  || IBM || 2379DJU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41}} 2373-A10&lt;br /&gt;
|| IBM || 2373A10 || ThinkPad T41  || IBM || 2373A10 || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41}} 2373-A10&lt;br /&gt;
|| IBM || 2373A10 || ThinkPad T41  || IBM || 2373A10 || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| After upgrade from BIOS v. 3.20&lt;br /&gt;
|-&lt;br /&gt;
| {{T41p}} 2373-GHG &lt;br /&gt;
|| IBM || 2373GHG || ThinkPad T41p || IBM || 2373GHG || Not Available || IBM || Not Available || IBM || 1RETDIWW (3.14 ) || 01/20/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41p}} 2373-GEG&lt;br /&gt;
|| IBM || 2373GEG || ThinkPad T41p || IBM || 2373GEG || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt; Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41p}} 2373-GJJ&lt;br /&gt;
|| IBM || 2373GJJ || ThinkPad T41p || IBM || 2373GJJ || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42}} 2373-FWG&lt;br /&gt;
|| IBM || 2373FWG || ThinkPad T42 || IBM || 2373FWG || Not Available || IBM || Not Available || IBM || 1RETDHWW (3.13 ) || 10/29/2004&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42}} 2373-JTU&lt;br /&gt;
|| IBM || 2373JTU || ThinkPad T42 || IBM || 2373JTU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42}} 2373-M1G&lt;br /&gt;
|| IBM || 2373M1G || ThinkPad T42 || IBM || 2373M1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42}} 2373-VJA&lt;br /&gt;
|| IBM || 2373VJA || ThinkPad T42 || IBM || 2373VJA || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42}} 2373-F2G&lt;br /&gt;
|| IBM || 2373F2G || ThinkPad T42 || IBM || 2373F2G || Not Available || IBM || Not Available || IBM || 1RETDIWW (3.14 ) || 01/20/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42}} [[2373-CTO]]&lt;br /&gt;
|| IBM || 2373YPL || ThinkPad T42 || IBM || 2373YPL || Not Available || IBM || Not Available || IBM || 1RETDLWW (3.17 ) || 07/27/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| {{T-WARN|Outdated BIOS}} before BIOS Update&lt;br /&gt;
|-&lt;br /&gt;
| {{T42}} [[2373-CTO]]&lt;br /&gt;
|| IBM || 2373YPL || ThinkPad T42 || IBM || 2373YPL || Not Available || IBM || Not Available || IBM || 1RETDRWW (3.23 ) || 06/18/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| after BIOS Update / current BIOS+EC&lt;br /&gt;
|-&lt;br /&gt;
| {{T42}} 2374-4WU&lt;br /&gt;
|| IBM || 23744WU || ThinkPad T42 || IBM || 23744WU || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{T42}} 2374-WEH&lt;br /&gt;
|| IBM || 2374WEH || ThinkPad T42 || IBM || 2374WEH || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42}} 2378-FVU&lt;br /&gt;
|| IBM || 2378FVU || ThinkPad T42 || IBM || 2378FVU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2373-A64&lt;br /&gt;
|| IBM || 2373A64 || ThinkPad T42p || IBM || 2373A64 || Not Available || IBM || Not Available || IBM || 1RETDIWW (3.14 ) || 01/20/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byteString 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2373-KXU&lt;br /&gt;
|| IBM || 2373KXU || ThinkPad T42p || IBM || 2373KXU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2373-KUU&lt;br /&gt;
|| IBM || 2373KUU || ThinkPad T42p || IBM || 2373KUU || Not Available || IBM || Not Available || IBM || 1RETDMWW (3.18 ) || 09/15/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2373-GYG&lt;br /&gt;
|| IBM || 2373GYG || ThinkPad T42p || IBM || 2373GYG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2374-CP5&lt;br /&gt;
|| IBM || 2374CP5 || ThinkPad T42p || IBM || 2374CP5 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2379-DYU&lt;br /&gt;
|| IBM || 2379DYU || ThinkPad T42p || IBM || 2379DYU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2372-Q2G&lt;br /&gt;
|| IBM || 2373Q2G || ThinkPad T42p || IBM || 2373Q2G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 1871-4AG&lt;br /&gt;
|| IBM || 18714AG || ThinkPad T43 || IBM || 18714AG || Not Available || IBM || Not Available || IBM || 70ET64WW (1.24 ) || 02/13/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[70HT27WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 1871-4AG&lt;br /&gt;
|| IBM || 18714AG || ThinkPad T43 || IBM || 18714AG || Not Available || IBM || Not Available || IBM || 70ET62WW (1.22 ) || 05/29/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 1871-4AG&lt;br /&gt;
|| IBM || 18714AG || ThinkPad T43 || IBM || 18714AG || Not Available || IBM || Not Available || IBM || 70ET69WW (1.29 ) || 05/29/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[70HT28WW-1.05]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{T43}} 1871-F1G&lt;br /&gt;
|| IBM || 1871F1G || ThinkPad T43 || IBM || 1871F1G || Not Available || IBM || Not Available || IBM || 70ET61WW (1.21 ) || 11/01/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 2686-DGU&lt;br /&gt;
|| IBM || 2686DGU || ThinkPad T43 || IBM || 2686DGU || Not Available || IBM || Not Available || IBM || 1YET62WW (1.27 ) || 05/18/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1YHT29WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 2669-WE5&lt;br /&gt;
|| IBM || 2669WE5 || ThinkPad T43 || IBM || 2669WE5 || Not Available || IBM || Not Available || IBM || 1YET56WW (1.21 ) || 07/06/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| User reports this is really a 2669-CEU with 1GB RAM + BlueTooth, and not a 2669-WE5 (unverified if this makes sense)&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 2668-WEW&lt;br /&gt;
|| IBM || 2668WEW || ThinkPad T43 || IBM || 2668WEW || Not Available || IBM || Not Available || IBM || 1YET56WW (1.21 ) || 07/06/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 2668-WSY&lt;br /&gt;
|| IBM || 2668WSY || ThinkPad T43 || IBM || 2668WSY || Not Available || IBM || Not Available || IBM || 1YET62WW (1.27 ) || 05/18/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1YHT29WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 2668-74G&lt;br /&gt;
|| IBM || 266874G || ThinkPad T43 || IBM || 266874G || Not Available || IBM || Not Available || IBM || 1YET57WW (1.22 ) || 07/20/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 2668-CTO &lt;br /&gt;
|| IBM || 2668Y82 || ThinkPad T43p || IBM || 2668Y82 || Not Available || IBM || Not Available || IBM || 1YET65WW (1.29 ) || 08/21/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1YHT29WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{T43p}} 2668-G2G&lt;br /&gt;
|| IBM || 2668G2G || ThinkPad T43p || IBM || 2668G2G || Not Available || IBM || Not Available || IBM || 1YET47WW (1.08 ) || 06/09/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43p}} 2668-H1G&lt;br /&gt;
|| IBM || 2668H1G || ThinkPad T43p || IBM || 2668H1G || Not Available || IBM || Not Available || IBM || 1YET45WW (1.06a) || 06/02/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43p}} 2687-D5U&lt;br /&gt;
|| IBM || 2687D5U || ThinkPad T43p || IBM || 2687D5U || Not Available || IBM || Not Available || IBM || 1YET59WW (1.24 ) || 11/07/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43p}} 2668-F8G&lt;br /&gt;
|| IBM || 2668F8G || ThinkPad T43p || IBM || 2668F8G || Not Available || IBM || Not Available || IBM || 1YET57WW (1.22 ) || 07/20/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 1951-24G&lt;br /&gt;
|| LENOVO || 195124G || ThinkPad T60 || LENOVO || 195124G || Not Available || LENOVO || Not Available || LENOVO || 79ET65WW (1.09a) || 07/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 1952-W5R&lt;br /&gt;
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ET61WW (1.06 ) || 05/24/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 1952-W5R&lt;br /&gt;
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ETD2WW (2.12 ) || 04/12/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 2007-49G&lt;br /&gt;
|| LENOVO || 200749G || ThinkPad T60 || LENOVO || 200749G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 2007-77G&lt;br /&gt;
|| LENOVO || 200777G || ThinkPad T60 || LENOVO || 200777G || Not Available || LENOVO || Not Available || LENOVO || 79ETD1WW (2.11 ) || 03/15/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 2007-FSG&lt;br /&gt;
|| LENOVO || 2007FSG || ThinkPad T60 || LENOVO || 2007FSG || Not Available || LENOVO || Not Available || LENOVO || 79ET66WW (1.10 ) || 08/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 1951-CA2&lt;br /&gt;
|| LENOVO || 1951CA2 || ThinkPad T60 || LENOVO || 1951CA2 || Not Available || LENOVO || Not Available || LENOVO || 79ETD9WW (2.19 ) || 09/19/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 2623-D6U&lt;br /&gt;
|| LENOVO || 2623D6U || ThinkPad T60 || LENOVO || 2623D6U || Not Available || LENOVO || Not Available || LENOVO || 79ET56WW (1.02 ) || 02/28/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[79HT42WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 2007-63G&lt;br /&gt;
|| LENOVO || 200763G || ThinkPad T60 || LENOVO || 200763G || Not Available || LENOVO || Not Available || LENOVO || 79ET65WW (1.09a) || 07/27/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 2007-63G&lt;br /&gt;
|| LENOVO || 200763G || ThinkPad T60 || LENOVO || 200763G || Not Available || LENOVO || Not Available || LENOVO || 79ETE5WW (2.25 ) || 08/27/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 2007-BF3&lt;br /&gt;
|| LENOVO || 2007BF3 || ThinkPad T60 || LENOVO || 2007BF3 || Not Available || LENOVO || Not Available || LENOVO || 79ETD7WW (2.17 ) || 08/23/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 8744-HCG&lt;br /&gt;
|| LENOVO || 8744HCG || ThinkPad T60 || LENOVO || 8744HCG || Not Available || LENOVO || Not Available || LENOVO || 7IET25WW (1.06 ) || 03/15/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 8744-HCG&lt;br /&gt;
|| LENOVO || 8744HCG || ThinkPad T60 || LENOVO || 8744HCG || Not Available || LENOVO || Not Available || LENOVO || 7IET37WW (1.18 ) || 04/01/2010&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 1951-CZ1&lt;br /&gt;
|| LENOVO || 1951CZ1 || ThinkPad T60 || LENOVO || 1951CZ1 || Not Available || LENOVO || Not Available || LENOVO || 79ETE3WW (2.23 ) || 09/12/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2007-83U&lt;br /&gt;
|| LENOVO || 200783U || ThinkPad T60p || LENOVO || 200783U || Not Available || LENOVO || Not Available || LENOVO || 79ET60WW (1.05a) || 04/18/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[79HT43WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2007-93G&lt;br /&gt;
|| LENOVO || 200793G || ThinkPad T60p || LENOVO || 200793G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2007-93U&lt;br /&gt;
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET66WW (1.10 ) || 08/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2007-93U&lt;br /&gt;
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2007-93U&lt;br /&gt;
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2007-ZK4&lt;br /&gt;
|| LENOVO || 2007ZK4 || ThinkPad T60p || LENOVO || 2007ZK4 || Not Available || LENOVO || Not Available || LENOVO || 79ETD3WW (2.13 ) || 04/30/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2613-ESU&lt;br /&gt;
|| LENOVO || 2613ESU || ThinkPad T60p || LENOVO || 2613ESU || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2623-DDU&lt;br /&gt;
|| LENOVO || 2623DDU || ThinkPad T60p || LENOVO || 2623DDU || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 6457-W2C&lt;br /&gt;
|| LENOVO || 6457W2C || ThinkPad T61 || LENOVO || 6457W2C || Not Available || LENOVO || Not Available || LENOVO || 7LETB0WW (2.10 ) || 01/21/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 6460-EBG&lt;br /&gt;
|| LENOVO || 6460EBG || ThinkPad T61 || LENOVO || 6460EBG || Not Available || LENOVO || Not Available || LENOVO || 7LETB7WW (2.17 ) || 04/25/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 6460-EBG&lt;br /&gt;
| LENOVO || 6460EBG || ThinkPad T61 || LENOVO || 6460EBG || Not Available || LENOVO || Not Available || LENOVO || 7LETC4WW (2.24 ) || 08/15/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 6465-CTO&lt;br /&gt;
|| LENOVO || 6465CTO || ThinkPad T61 || LENOVO || 6465CTO || Not Available || LENOVO || Not Available || LENOVO || 7LETB2WW (2.12 ) || 02/20/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 6466-9MG&lt;br /&gt;
|| LENOVO || 64669MG || ThinkPad T61 || LENOVO || 64669MG || Not Available || LENOVO || Not Available || LENOVO || 7LETC7WW (2.27 ) || 04/08/2010&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 7659-W13&lt;br /&gt;
|| LENOVO || 7659W13 || ThinkPad T61 || LENOVO || 7659W13 || Not Available || LENOVO || Not Available || LENOVO || 7LET44WW (1.14 ) || 06/27/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 7659-W13&lt;br /&gt;
|| LENOVO || 7659W13 || ThinkPad T61 || LENOVO || 7659W13 || Not Available || LENOVO || Not Available || LENOVO || 7LETC6WW (2.26 ) || 05/11/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 7662-XDU&lt;br /&gt;
|| LENOVO || 7662XDU || ThinkPad T61 || LENOVO || 7662XDU || 7662XDU|| LENOVO || Not Available || LENOVO || 7LET37WW (1.07 ) || 04/17/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 bytes   String 1: IBM ThinkPad Embedded Controller -[7KHT19WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| {{T-WARN|BIOS and EC firmware have different IDs}}&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 7661-A56&lt;br /&gt;
|| LENOVO || 7661A56 || ThinkPad T61 || LENOVO || 7661A56 || Not Available || LENOVO || Not Available || LENOVO || 7LET39WW (1.09 ) || 05/14/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT21WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 8895-WFD&lt;br /&gt;
|| LENOVO || 8895WFD || ThinkPad T61 || LENOVO || 8895WFJ || Not Available || LENOVO || Not Available || LENOVO || 7LETC5WW (2.25 ) || 11/14/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 bytes        String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 8897-CTO&lt;br /&gt;
|| LENOVO || 8897CTO || ThinkPad T61 || LENOVO || 8897CTO || Not Available || LENOVO || Not Available || LENOVO || 7LET52WW (1.22 ) || 08/27/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 8897-CTO&lt;br /&gt;
|| LENOVO || 8897CTO || ThinkPad T61 || LENOVO || 8897CTO || Not Available || LENOVO || Not Available || LENOVO || 7LET56WW (1.26 ) || 10/18/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| {{T61p}} 6457-B64&lt;br /&gt;
|| LENOVO || 6457B64 || ThinkPad T61p || LENOVO || 6457B64 || Not Available || LENOVO || Not Available || LENOVO || 7LETC1WW (2.21 ) || 07/01/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{T61p}} 6459-A12&lt;br /&gt;
|| LENOVO || 6459A12 || ThinkPad T61p || LENOVO || 6459A12 || Not Available || LENOVO || Not Available || LENOVO || 7LET56WW (1.26 ) || 10/18/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61p}} 6459-CTO&lt;br /&gt;
|| LENOVO || 6459CTO || ThinkPad T61p || LENOVO || 6459CTO || Not Available || LENOVO || Not Available || LENOVO || 7LETC6WW (2.26 )  || 05/11/2009&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7KHT24WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| {{T400}} 6474-1EG&lt;br /&gt;
|| LENOVO || 64741EG || ThinkPad T400 || LENOVO || 64741EG || Not Available || LENOVO || Not Available || LENOVO || 7UET48WW (1.18 ) || 10/09/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01    &lt;br /&gt;
]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T400}} 6474-19G&lt;br /&gt;
|| LENOVO || 647419G || ThinkPad T400 || LENOVO || 647419G || Not Available || LENOVO || Not Available || LENOVO || 7UET61WW (2.07 ) || 02/13/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{T400}} 6475-FM4 &lt;br /&gt;
|| LENOVO || 6475FM4 || ThinkPad T400 || LENOVO || 6475FM4 || Not Available || LENOVO || Not Available || LENOVO || 7UET43WW (1.13 ) || 08/19/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| Before BIOS update&lt;br /&gt;
|-&lt;br /&gt;
| {{T400}} 6475-FM4 &lt;br /&gt;
|| LENOVO || 6475FM4 || ThinkPad T400 || LENOVO || 6475FM4 || Not Available || LENOVO || Not Available || LENOVO || 7UET64WW (2.12 ) || 03/13/2009&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| After BIOS update&lt;br /&gt;
|-&lt;br /&gt;
| {{T400}} 2765-22G&lt;br /&gt;
|| LENOVO || 276522G || ThinkPad T400 || LENOVO || 276522G || Not Available || LENOVO || Not Available || LENOVO || 7UET88WW (3.18 ) || 05/27/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7VHT16WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T400s}} 2801-CTO&lt;br /&gt;
|| LENOVO || 2801CTO || ThinkPad T400s || LENOVO || 2801CTO || Not Available || LENOVO || Not Available || LENOVO || 6HET21WW (1.06 ) || 07/27/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6HHT13WW-1.01]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T400s}} 2815-2SG&lt;br /&gt;
|| LENOVO || 28152SG || ThinkPad T400s || LENOVO || 28152SG || Not Available || LENOVO || Not Available || LENOVO || 6HET17WW (1.02 ) || 05/18/2009 No code specified for -e.&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T410}} 2522-AT6&lt;br /&gt;
|| LENOVO || 2522AT6 || ThinkPad T410 || LENOVO || 2522AT6 || Not Available || LENOVO || Not Available || LENOVO || 6IET65WW (1.25 ) || 06/07/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6IHT35WW-1.10    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T410}} 2522-2PG&lt;br /&gt;
|| LENOVO || 25222PG || ThinkPad T410 || LENOVO || 25222PG || Not Available || LENOVO || Not Available || LENOVO || 6IET55WW (1.15 ) || 03/24/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6IHT32WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| Before BIOS Update&lt;br /&gt;
|-&lt;br /&gt;
| {{T410}} 2522-2PG&lt;br /&gt;
|| LENOVO || 25222PG || ThinkPad T410 || LENOVO || 25222PG || Not Available || LENOVO || Not Available || LENOVO || 6IET75WW (1.35 ) || 02/01/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6IHT39WW-1.14    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| After BIOS Update&lt;br /&gt;
|-&lt;br /&gt;
| {{T410s}} 2912-39G&lt;br /&gt;
|| LENOVO || 291239G || ThinkPad T410s || LENOVO || 291239G || Not Available || LENOVO || Not Available || LENOVO || 6UET27WW (1.05 ) || 01/14/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6UHT24WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{T410s}} 2912-W69&lt;br /&gt;
|| LENOVO || 2912W69 || ThinkPad T410s || LENOVO || 2912W69 || Not Available || LENOVO || Not Available || LENOVO || 6UET61WW (1.41 ) || 10/27/2010&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6UHT31WW-1.12    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{T420}} 4180W1H&lt;br /&gt;
|| LENOVO || 4180W1H || ThinkPad T420 || LENOVO || 4180W1H || Not Available || LENOVO || Not Available || LENOVO || 83ET56WW (1.26 ) || 05/13/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| After BIOS Update&lt;br /&gt;
|-&lt;br /&gt;
| {{T420s}} 4171-6SG&lt;br /&gt;
|| LENOVO || 41716SG || ThinkPad T420s || LENOVO || 41716SG || Not Available || LENOVO || Not Available || LENOVO || 8CET44WW (1.24 ) || 05/23/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| Old BIOS&lt;br /&gt;
|-&lt;br /&gt;
| {{T420s}} 4171-6SG&lt;br /&gt;
|| LENOVO || 41716SG || ThinkPad T420s || LENOVO || 41716SG || Not Available || LENOVO || Not Available || LENOVO || 8CET48WW (1.28 ) || 08/15/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| After BIOS Upgrade&lt;br /&gt;
|-&lt;br /&gt;
| {{T500}} 2055-A81&lt;br /&gt;
|| LENOVO || 2055A81 || ThinkPad T500 || LENOVO || 2055A81 || Not Available || LENOVO || Not Available || LENOVO || 6FET46WW (1.16 ) || 09/24/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T500}} 2055-A81&lt;br /&gt;
|| LENOVO || 2055A81 || ThinkPad T500 || LENOVO || 2055A81 || Not Available || LENOVO || Not Available || LENOVO || 6FET50WW (1.20 ) || 10/30/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T500}} 2055-45G&lt;br /&gt;
|| LENOVO || 205545G || ThinkPad T500 || LENOVO || 205545G || Not Available || LENOVO || Not Available || LENOVO || 6FET49WW (1.19 ) || 10/17/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{T500}} 2089-AZG&lt;br /&gt;
|| LENOVO || 2089AZ9 || ThinkPad T500 || LENOVO || 2089AZ9 || Not Available || LENOVO || Not Available || LENOVO || 6FET79WW (3.09 ) || 10/02/2009&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte    String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| {{T-WARN|Outdated BIOS}} before BIOS Update&lt;br /&gt;
|-&lt;br /&gt;
| {{T500}} 2089-AZG&lt;br /&gt;
|| LENOVO || 2089AZ9 || ThinkPad T500 || LENOVO || 2089AZ9 || Not Available || LENOVO || Not Available || LENOVO || 6FET87WW (3.17 ) || 12/03/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7VHT16WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| after BIOS Update / current BIOS+EC&lt;br /&gt;
|-&lt;br /&gt;
| {{T500}} 2242-CTO&lt;br /&gt;
|| LENOVO || 2242CTO || ThinkPad T500 || LENOVO || 2242CTO || Not Available || LENOVO || Not Available || LENOVO || 6FET66WW (2.16 ) || 04/22/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7VHT12WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{T510}} 4313-CTO&lt;br /&gt;
|| LENOVO || 4313CTO || ThinkPad T510 || LENOVO || 4313CTO || Not Available || LENOVO || Not Available || LENOVO || 6MET42WW (1.05 ) || 12/22/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6MHT32WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{T510}} 4313-CTO&lt;br /&gt;
|| LENOVO || 4313CTO || ThinkPad T510 || LENOVO || 4313CTO || Not Available || LENOVO || Not Available || LENOVO || 6MET49WW (1.12 ) || 02/22/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6MHT33WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{T520}}&lt;br /&gt;
|| LENOVO || 42433ZG || ThinkPad T520 || LENOVO || 42433ZG || Not Available || LENOVO || Not Available || LENOVO || 8AET46WW (1.26 ) || 05/18/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====W series====&lt;br /&gt;
|-&lt;br /&gt;
| {{W500}} 4061-AW9 &lt;br /&gt;
|| LENOVO || 4061AW9 || ThinkPad W500 || LENOVO || 4061AW9 || Not Available || LENOVO || Not Available || LENOVO || 6FET79WW (3.09 ) || 10/02/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7VHT14WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{W510}} 4318-CTO&lt;br /&gt;
|| LENOVO || 4318CTO || ThinkPad W510 || LENOVO || 4318CTO || Not Available || LENOVO || Not Available || LENOVO || 6NET74WW (1.34 ) || 10/27/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6MHT43WW-1.18    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{W510}} 4319-4CU&lt;br /&gt;
|| LENOVO || 43194CU || ThinkPad W510 || LENOVO || 43194CU || Not Available || LENOVO || Not Available || LENOVO || 6NET61WW (1.24 ) || 06/07/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6MHT38WW-1.13    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{W510}} 4319-3CG &lt;br /&gt;
|| LENOVO || 43193CG || ThinkPad W510 || LENOVO || 43193CG || Not Available || LENOVO || Not Available || LENOVO || 6NET46WW (1.09 ) || 01/20/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6MHT31WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{W510}} 4389-W1B &lt;br /&gt;
|| LENOVO || 4389W1B || ThinkPad W510 || LENOVO || 4389W1B || Not Available || LENOVO || Not Available || LENOVO || 6NET76WW (1.37 ) || 02/24/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6MHT44WW-1.19    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{W700}} 2757-CTO&lt;br /&gt;
|| LENOVO || 2757CTO || ThinkPad W700 || LENOVO || 2757CTO || Not Available || LENOVO || Not Available || LENOVO || 7ZETA8WW (2.08 ) || 09/24/2009&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7ZHT22WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{W700}} 2757-CTO&lt;br /&gt;
|| LENOVO || 2757CTO || ThinkPad W700 || LENOVO || 2757CTO || Not Available || LENOVO || Not Available || LENOVO || 7ZETB1WW (2.11 ) || 03/12/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7ZHT24WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====X series====&lt;br /&gt;
|-&lt;br /&gt;
| {{X20}} 2662-31G&lt;br /&gt;
|| IBM || 266231G || Not Available || IBM || 266231G || Not Available || IBM || Not Available || IBM || IZET9DWW (2.25 ) || 04/17/2003&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X20}} 2662-32G&lt;br /&gt;
|| IBM || 266232G || Not Available || IBM || 266232G || Not Available || IBM || Not Available || IBM || IZET9AWW (2.22 ) || 09/11/2002&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X22}} 2662-95U&lt;br /&gt;
|| IBM || 266295U || Not Available || IBM || 266295U || Not Available || IBM || Not Available || IBM || 1DET70WW (1.32 ) || 06/10/2003&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X23}} 2662-EBG&lt;br /&gt;
|| IBM || 2662EBG || Not Available || IBM || 2662EBG || Not Available || IBM || Not Available || IBM || 1DET70WW (1.32 ) || 06/10/2003&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X24}} 2662-MPU&lt;br /&gt;
|| IBM || 62MPUFX || Not Available || IBM || 62MPUFX || Not Available || IBM || Not Available || IBM || 1DET67WW (1.29 ) || 12/18/2002&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X30}} 2672-42G&lt;br /&gt;
|| IBM || 267242G || Not Available || IBM || 267242G || Not Available || IBM || Not Available || IBM || 1KET42WW (1.03 ) || 12/02/2002 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X30}} 2672-42G&lt;br /&gt;
|| IBM || 267242G || Not Available || IBM || 267242G || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|| {{X30}} 2672-4BU&lt;br /&gt;
|| IBM || 26724BU || Not Available || IBM || 26724BU || Not Available || IBM || Not Available || IBM || 1KET44WW (1.05 ) || 05/30/2003 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{X30}} 2672-4HU&lt;br /&gt;
|| IBM || 26724HU || Not Available || IBM || 26724HU || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X30}} 2672-PG3&lt;br /&gt;
|| IBM || 2672PG3 || Not Available || IBM || 2672PG3 || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06    ]-&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X31}} 2672-C2G&lt;br /&gt;
|| IBM || 2672C2G || Not Available || IBM || 2672C2G || Not Available || IBM || Not Available || IBM || 1QET36WW (1.04a) || 06/30/2003 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X31}} 2672-C2G&lt;br /&gt;
|| IBM || 2672C2G || ThinkPad X31 || IBM || 2672C2G || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{X31}} 2672-CEG&lt;br /&gt;
|| IBM || 2672CEG || Not Available || IBM || 2672CEG || Not Available || IBM || Not Available || IBM || 1QET36WW (1.04a) || 06/30/2003 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X31}} 2672-CEG&lt;br /&gt;
|| IBM || 2672CEG || ThinkPad X31 || IBM || 2672CEG || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X31}} 2672-JXU&lt;br /&gt;
|| IBM || 2672JXU || ThinkPad X31 || IBM || 2672JXU || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X31}} 2672-FG2&lt;br /&gt;
|| IBM || 2672FG2 || ThinkPad X31 || IBM || 2672FG2 || Not Available || IBM || Not Available || IBM || 1QET73WW (2.11 ) || 02/13/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1QHT16WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X31}} 2672-FG2&lt;br /&gt;
|| IBM || 2672FG2 || ThinkPad X31 || IBM || 2672FG2 || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X31}} 2672-PG9 (before update) &lt;br /&gt;
|| IBM || 2672PG9 || ThinkPad X31 || IBM || 2672PG9 || Not Available || IBM || Not Available || IBM || 1QET73WW (2.11 ) || 02/13/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1QHT16WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{X31}} 2672-PG9 (after update) &lt;br /&gt;
|| IBM || 2672PG9 || ThinkPad X31 || IBM || 2672PG9 || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{X31}} 2673-C2G&lt;br /&gt;
|| IBM || 2673C2G || ThinkPad X31 || IBM || 2673C2G || Not Available || IBM || Not Available || IBM || 1QET65WW (2.03 ) || 10/10/2003 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{X31}} 2673-C2G&lt;br /&gt;
|| IBM || 2673C2G || ThinkPad X31 || IBM || 2673C2G || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X32}} 2884-A3U&lt;br /&gt;
|| IBM || 2884A3U || ThinkPad X32 || IBM || 2884A3U || Not Available || IBM || Not Available || IBM || 1QET94WW (3.00d) || 01/23/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1QHT22WW-1.07b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X32}} 2672-M3G&lt;br /&gt;
|| IBM || 2672M3G || ThinkPad X32 || IBM || 2672M3G || Not Available || IBM || Not Available || IBM || 1QET94WW (3.00d) || 01/23/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1QHT22WW-1.07b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X32}} 2673-M4U&lt;br /&gt;
|| IBM || 2673M4U || ThinkPad X32 || IBM || 2673M4U || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X40}} 2386-7JG&lt;br /&gt;
|| IBM || 23717JG || ThinkPad X40 || IBM || 23717JG || Not Available || IBM || Not Available || IBM || 1UETD1WW (2.06 ) || 03/01/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1UHTB2WW-1.62    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X40}} 2386-H4G&lt;br /&gt;
|| IBM || 2386H4G || ThinkPad X40 || IBM || 2386H4G || Not Available || IBM || Not Available || IBM || 1UET92WW (1.42 ) || 09/16/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1UHT82WW-1.32    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X40}} 2371-8NG&lt;br /&gt;
|| IBM || 23718NG || ThinkPad X40 || IBM || 23718NG || Not Available || IBM || Not Available || IBM || 1UETB7WW (1.67 ) || 07/15/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1UHT58WW-1.12    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X40}} 2371-Y29&lt;br /&gt;
|| IBM || 2371Y29 || ThinkPad X40 || IBM || 2371Y29 || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1UHTA6WW-1.56    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X40}} 2371-W9F&lt;br /&gt;
|| IBM || 2371W9F || ThinkPad X40 || IBM || 2371W9F || Not Available || IBM || Not Available || IBM || 1UETC8WW (2.03 ) || 09/28/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1UHTB2WW-1.62    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X40}} 2371-W9F&lt;br /&gt;
|| IBM || 2371W9F || ThinkPad X40 || IBM || 2371W9F || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1UHTB2WW-1.62    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X40}} 2371-Y1Y&lt;br /&gt;
|| IBM || 2371Y1Y || ThinkPad X40 || IBM || 2371Y1Y || Not Available || IBM || Not Available || IBM || 1UET93WW (1.43 ) || 10/13/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1UHT82WW-1.32    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X40}} 2371-Y1Y&lt;br /&gt;
|| IBM || 2371Y1Y || ThinkPad X40 || IBM || 2371Y1Y || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1UHTB2WW-1.62    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X40}} 2371-Y2A &lt;br /&gt;
|| IBM || 2371Y2A || ThinkPad X40 || IBM || 2371Y2A || Not Available || IBM || Not Available || IBM || 1UET93WW (1.43 ) || 10/13/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1UHT82WW-1.32    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{X40}} 2371-Y2A&lt;br /&gt;
|| IBM || 2371Y2A || ThinkPad X40 || IBM || 2371Y2A || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1UHTB2WW-1.62    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| {{X41}} 2525-65G&lt;br /&gt;
|| IBM || 252565G || ThinkPad X41 || IBM || 252565G || Not Available || IBM || Not Available || IBM || 74ET63WW (2.08 ) || 10/17/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0025, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[74HT25WW-1.00    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X41}} 2525-FAG&lt;br /&gt;
|| IBM || 2525FAG || ThinkPad X41 || IBM || 2525FAG || Not Available || IBM || Not Available || IBM || 74ET61WW (2.06 ) || 03/14/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0025, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[74HT26WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X41}} 2525-FAG&lt;br /&gt;
|| IBM || 2525FAG || ThinkPad X41 || IBM || 2525FAG || Not Available || IBM || Not Available || IBM || 74ET64WW (2.09 ) || 12/14/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0025, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[74HT27WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X41}} 2525-HU1&lt;br /&gt;
|| IBM || 2525HU1 || ThinkPad X41 || IBM || 2525HU1 || Not Available || IBM || Not Available || IBM || 74ET48WW (1.17a) || 06/07/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0025, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[74HT25WW-1.00    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X41t}} 1866-CRG&lt;br /&gt;
|| IBM || 1866CRG || ThinkPad X41 Tablet || IBM || 1866CRG || Not Available || IBM || Not Available || IBM || 75ET60WW (2.06 ) || 12/19/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0025, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[75HT19WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X41t}} 1866-CTO&lt;br /&gt;
|| IBM || 1866CTO || ThinkPad X41 Tablet || IBM || 1866CTO || Not Available || IBM || Not Available || IBM || 75ET60WW (2.06 ) || 12/19/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0025, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[75HT20WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X41t}} 1866-WSF&lt;br /&gt;
|| IBM || 1866WSF || ThinkPad X41 Tablet || IBM || 1866WSF || Not Available || IBM || Not Available || IBM || 75ET57WW (2.03 ) || 06/14/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0025, DMI type 11, 5 bytes   String 1: IBM ThinkPad Embedded Controller -[75HT20WW-1.02  ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X41t}} 1869-CLG&lt;br /&gt;
|| IBM || 1869CLG || ThinkPad X41 Tablet || IBM || 1869CLG || Not Available || IBM || Not Available || IBM || 75ET56WW (2.02 ) || 03/14/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0025, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[75HT19WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60}} 1709-47U&lt;br /&gt;
|| LENOVO || 170947U || ThinkPad X60 || LENOVO || 170947U || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60}} 1709-GDJ&lt;br /&gt;
|| LENOVO || 1709GDJ || ThinkPad X60 || LENOVO || 1709GDJ || Not Available || LENOVO || Not Available || LENOVO || 7BETC2WW (2.03 ) || 10/16/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7BHT36WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60}} 1706-B69&lt;br /&gt;
|| LENOVO || 1706B69 || ThinkPad X60 || LENOVO || 1706B69 || Not Available || LENOVO || Not Available || LENOVO || 7BETC8WW (2.09 ) || 03/14/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7BHT37WW-1.10    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60}} 1706-GMG&lt;br /&gt;
|| LENOVO || 1706GMG || ThinkPad X60 || LENOVO || 1706GMG || Not Available || LENOVO || Not Available || LENOVO || 7BETC4WW (2.05 ) || 11/17/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7BHT37WW-1.10    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60}} 1706-GMG&lt;br /&gt;
|| LENOVO || 1706GMG || ThinkPad X60 || LENOVO || 1706GMG || Not Available || LENOVO || Not Available || LENOVO || 7BETD7WW (2.18 ) || 11/20/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7BHT40WW-1.13    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60s}} 1702-55G&lt;br /&gt;
|| LENOVO || 170255G || ThinkPad X60s || LENOVO || 170255G || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60s}} 1702-5FG&lt;br /&gt;
|| LENOVO || 17025FG || ThinkPad X60s || LENOVO || 17025FG || Not Available || LENOVO || Not Available || LENOVO || 7BET49WW (1.09 ) || 07/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7BHT34WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60s}} 1704-56G&lt;br /&gt;
|| LENOVO || 170456G || ThinkPad X60s || LENOVO || 170456G || Not Available || LENOVO || Not Available || LENOVO || 7BET43WW (1.03 ) || 02/13/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[7BHT28WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60s}} 1704-56G&lt;br /&gt;
|| LENOVO || 1704-56G || ThinkPad X60s || LENOVO || 170456G || Not Available || LENOVO || Not Available || LENOVO || 7BETD5WW (2.16 ) || 03/31/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7BHT40WW-1.13    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60s}} 1704-5UG&lt;br /&gt;
|| LENOVO || 17045UG || ThinkPad X60s || LENOVO || 17045UG || Not Available || LENOVO || Not Available || LENOVO || 7BETD2WW (2.13 ) || 08/10/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7BHT40WW-1.13    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60s}} 1704-5UG&lt;br /&gt;
|| LENOVO || 17045UG || ThinkPad X60s || LENOVO || 17045UG || Not Available || LENOVO || Not Available || LENOVO || 7BETD3WW (2.14 ) || 10/04/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7BHT40WW-1.13    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60s}} 1704-5UG&lt;br /&gt;
|| LENOVO || 17045UG || ThinkPad X60s || LENOVO || 17045UG || Not Available || LENOVO || Not Available || LENOVO || 7BETD7WW (2.18 ) || 11/20/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7BHT40WW-1.13    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60t}} 6365-CTO&lt;br /&gt;
|| LENOVO || 6365CTO || ThinkPad X60 Tablet || LENOVO || 6365CTO || Not Available || LENOVO || Not Available || LENOVO || 7JET25WW (1.10 ) || 08/17/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0023, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7JHT13WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60t}} 6363-J3G&lt;br /&gt;
|| LENOVO || 6363J3G || ThinkPad X60 Tablet || LENOVO || 6363J3G || Not Available || LENOVO || Not Available || LENOVO || 7JET28WW (1.13 ) || 03/31/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0023, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7JHT13WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| A mean bitch to set up, nothing really worked out of the box :(&lt;br /&gt;
|-&lt;br /&gt;
| {{X60t}} 6363A7G&lt;br /&gt;
|| LENOVO || 6363A7G || ThinkPad X60 Tablet || LENOVO || 6363A7G || Not Available || LENOVO || Not Available || LENOVO || 7JET19WW (1.04 ) || 12/14/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0023, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7JHT12WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X61}} 7675-4KU&lt;br /&gt;
|| LENOVO || 76754KU || ThinkPad X61 || LENOVO || 76754KU || Not Available || LENOVO || Not Available || LENOVO || 7NET30WW (1.11 ) || 11/15/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7MHT24WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X61}} 7675-7KU&lt;br /&gt;
|| LENOVO || 76757KU || ThinkPad X61 || LENOVO || 76757KU || Not Available || LENOVO || Not Available || LENOVO || 7NETB1WW (2.11 ) || 03/24/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 bytes   IBM ThinkPad Embedded Controller -[7MHT25WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X61s}} 7668-CTO&lt;br /&gt;
|| LENOVO || 7668CTO || ThinkPad X61s || LENOVO || 7668CTO || Not Available || LENOVO || Not Available || LENOVO || 7NET25WW (1.06 ) || 07/02/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7MHT24WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X61s}} 7669-29G&lt;br /&gt;
|| LENOVO || 766929G || ThinkPad X61s || LENOVO || 766929G || Not Available || LENOVO || Not Available || LENOVO || 7NET21WW (1.02 ) || 04/23/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7MHT23WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X61s}} 7669-29G&lt;br /&gt;
|| LENOVO || 766929G || ThinkPad X61s || LENOVO || 766929G || Not Available || LENOVO || Not Available || LENOVO || 7NETB9WW (2.19 ) || 11/27/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7MHT25WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X61s}} 7667-34G&lt;br /&gt;
|| LENOVO || 766734G || ThinkPad X61s || LENOVO || 766734G || Not Available || LENOVO || Not Available || LENOVO || 7NETB9WW (2.19 ) || 11/27/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7MHT25WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X61t}} 7762-94G&lt;br /&gt;
|| LENOVO || 776294G || ThinkPad X61 Tablet || LENOVO || 776294G || Not Available || LENOVO || Not Available || LENOVO || 7SET38WW (1.24 ) || 10/12/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{X61t}} 7762-95G&lt;br /&gt;
|| LENOVO || 776295G || ThinkPad X61 Tablet || LENOVO || 776295G || Not Available || LENOVO || Not Available || LENOVO || 7SET22WW (1.08 ) || 11/15/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X61t}} 7762-95G&lt;br /&gt;
|| LENOVO || 776295G || ThinkPad X61 Tablet || LENOVO || 776295G || Not Available || LENOVO || Not Available || LENOVO || 7SET36WW (1.22 ) || 11/27/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X61t}} 7762-98U&lt;br /&gt;
|| LENOVO || 776298U || ThinkPad X61 Tablet || LENOVO || 776298U || Not Available || LENOVO || Not Available || LENOVO || 7SET34WW (1.20 ) || 07/29/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X61t}} 7764-CTO&lt;br /&gt;
|| LENOVO || 7764CTO || ThinkPad X61 Tablet || LENOVO || 7764CTO || Not Available || LENOVO || Not Available || LENOVO || 7SET18WW (1.04 ) || 07/03/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X61t}} 7764-CTO&lt;br /&gt;
|| LENOVO || 7764CTO || ThinkPad X61 Tablet || LENOVO || 7764CTO || Not Available || LENOVO || Not Available || LENOVO || 7SET23WW (1.09 ) || 12/28/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X61t}} 7764-CTO&lt;br /&gt;
|| LENOVO || 7764CTO || ThinkPad X61 Tablet || LENOVO || 7764CTO || Not Available || LENOVO || Not Available || LENOVO || 7SET39WW (1.25 ) || 03/22/2011&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001F, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7RHT16WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X100e}} 2876-27G&lt;br /&gt;
|| LENOVO || 287627G || ThinkPad X100e || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6XET21WW (1.04 ) || 12/18/2009&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6XHT20WW-1.165000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X100e}} 2876-27G&lt;br /&gt;
|| LENOVO || 287627G || ThinkPad X100e || LENOVO || 287627G || Not Available || LENOVO || Not Available || LENOVO || 6XET47WW (1.30 ) || 12/30/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6XHT43WW-1.183000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X100e}} 3508-4UG&lt;br /&gt;
|| LENOVO || 35084UG || ThinkPad X100e || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6XET36WW (1.20a) || 03/12/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6XHT36WW-1.176000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| {{X100e}} 2876-W1U&lt;br /&gt;
|| LENOVO || 2876W1U || ThinkPad X100e || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6XET36WW (1.20a) || 03/12/2010&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6XHT36WW-1.176000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X100e}} 2876-W1U&lt;br /&gt;
|| LENOVO || 2876W1U || ThinkPad X100e || LENOVO || 2876W1U || Not Available || LENOVO || Not Available || LENOVO || 6XET44WW (1.27 ) || 07/21/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6XHT42WW-1.182000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X100e}} 2876-W1U&lt;br /&gt;
|| LENOVO || 2876W1U || ThinkPad X100e || LENOVO || 2876W1U || Not Available || LENOVO || Not Available || LENOVO || 6XET48WW (1.31 ) || 02/17/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6XHT44WW-1.184000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{X100e}} 2876-55G&lt;br /&gt;
|| LENOVO || 287655G || ThinkPad X100e || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6XET33WW (1.12 ) || 02/11/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6XHT31WW-1.171000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X100e}} 2876-55G&lt;br /&gt;
|| LENOVO || 287655G || ThinkPad X100e || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6XET36WW (1.20a) || 03/12/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6XHT36WW-1.176000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{X100e}} L625 (Dual-Core) 3508-5EG&lt;br /&gt;
|| LENOVO || 35085EG || ThinkPad X100e || LENOVO || 35085EG || Not Available || LENOVO || Not Available || LENOVO || 6XET38WW (1.22 ) || 04/09/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6XHT38WW-1.178000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{X100e}} L625 (Dual-Core) 3508-5EG&lt;br /&gt;
|| LENOVO || 35085EG || ThinkPad X100e || LENOVO || 35085EG || Not Available || LENOVO || Not Available || LENOVO || 6XET39WW (1.23 ) || 04/30/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6XHT39WW-1.179000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X100e}} L625 (Dual-Core) 3508-5EG&lt;br /&gt;
|| LENOVO || 35085EG || ThinkPad X100e || LENOVO || 35085EG || Not Available || LENOVO || Not Available || LENOVO || 6XET41WW (1.25 ) || 06/02/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6XHT40WW-1.180000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X200}} 7454-CTO&lt;br /&gt;
|| LENOVO || 7454CTO || ThinkPad X200 || LENOVO || 7454CTO || Not Available || LENOVO || Not Available || LENOVO || 6DET38WW (2.02 ) || 12/19/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001D, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7XHT21WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X200}} 7454-CTO&lt;br /&gt;
|| LENOVO || 7454CTO || ThinkPad X200 || LENOVO || 7454CTO || Not Available || LENOVO || Not Available || LENOVO || 6DET40WW (2.04 ) || 02/13/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001D, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7XHT22WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X200}} 7458-E46&lt;br /&gt;
|| LENOVO || 7458E46 || ThinkPad X200 || LENOVO || 7458E46 || Not Available || LENOVO || Not Available || LENOVO || 7XET57WW (3.07 ) || 08/13/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001D, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7XHT22WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X200s}} 7466-3SG&lt;br /&gt;
|| LENOVO || 74663SG || ThinkPad X200s || LENOVO || 74663SG || Not Available || LENOVO || Not Available || LENOVO || 6DET64WW (3.14 ) || 06/23/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001D, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7XHT24WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{X200s}}&lt;br /&gt;
|| LENOVO || 74695HG || ThinkPad X200s || LENOVO || 74695HG || Not Available || LENOVO || Not Available || LENOVO || 6DET33WW (1.10 ) || 10/27/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001D, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7XHT21WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X200s}} &lt;br /&gt;
|| LENOVO || 7469WDR || ThinkPad X200s || LENOVO || 7469WDR || Not Available || LENOVO || Not Available || LENOVO || 6DET44WW (2.08 ) || 04/22/2009 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001D, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7XHT22WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| {{X200s}} 7469-88G&lt;br /&gt;
|| LENOVO || 746988G || ThinkPad X200s || LENOVO || 746988G || Not Available || LENOVO || Not Available || LENOVO || 6DET64WW (3.14 ) || 06/23/2010&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001D, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7XHT24WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X200 Tablet}} 7449-F9U&lt;br /&gt;
|| LENOVO || 7449F9U || ThinkPad X200 Tablet || LENOVO || 7449F9U || Not Available || LENOVO || Not Available || LENOVO || 7WET24WW (1.02 ) || 09/09/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x001D, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7WHT14WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X201}} 3626-W7V&lt;br /&gt;
|| LENOVO || 3626W7V || ThinkPad X201 || LENOVO || 3626W7V || Not Available || LENOVO || Not Available || LENOVO || 6QET44WW (1.14 ) || 04/20/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6QHT28WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X201}} 3626-PN2&lt;br /&gt;
|| LENOVO || 3626PN3 || ThinkPad X201 || LENOVO || 3626PN3 || Not Available || LENOVO || Not Available || LENOVO || 6QET53WW (1.23 ) || 09/15/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6QHT30WW-1.11    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X201s}} 5129-CTO&lt;br /&gt;
|| LENOVO || 5129CTO || ThinkPad X201s || LENOVO || 5129CTO || Not Available || LENOVO || Not Available || LENOVO || 6QET44WW (1.14 ) || 04/20/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6QHT28WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{X201 Tablet}} 3093-3YG&lt;br /&gt;
|| LENOVO || 30933YG || ThinkPad X201 Tablet || LENOVO || 30933YG || Not Available || LENOVO || Not Available || LENOVO || 6QET45WW (1.15 ) || 04/26/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6SHT28WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X201 Tablet}} 3093-W11&lt;br /&gt;
|| LENOVO || 3093W11 || ThinkPad X201 Tablet || LENOVO || 3093W11 || Not Available || LENOVO || Not Available || LENOVO || 6QET46WW (1.16 ) || 06/07/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6SHT28WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X201 Tablet}} 0831-CTO&lt;br /&gt;
|| LENOVO || 0831CTO || ThinkPad X201 Tablet || LENOVO || 0831CTO || Not Available || LENOVO || Not Available || LENOVO || 6QET61WW (1.31 ) || 10/26/2010&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6SHT31WW-1.12    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| Before BIOS update&lt;br /&gt;
|- &lt;br /&gt;
| {{X201 Tablet}} 0831-CTO&lt;br /&gt;
|| LENOVO || 0831CTO || ThinkPad X201 Tablet || LENOVO || 0831CTO || Not Available || LENOVO || Not Available || LENOVO || 6QET67WW (1.37 ) || 06/29/2011&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6SHT33WW-1.14    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| After BIOS update from 1.31&lt;br /&gt;
|-&lt;br /&gt;
| {{X201i}} 3249-CTO &lt;br /&gt;
|| LENOVO || 3249CTO || ThinkPad X201 || LENOVO || 3249CTO || Not Available || LENOVO || Not Available || LENOVO || 6QET45WW (1.15 ) || 04/26/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0027, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6QHT28WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X220}}&lt;br /&gt;
|| LENOVO || 4287CTO || ThinkPad X220 || LENOVO || 4287CTO || Not Available || LENOVO || Not Available || LENOVO || 8DET41WW (1.11 ) || 03/28/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{X220 Tablet}}&lt;br /&gt;
|| LENOVO || 42992PG || ThinkPad X220 Tablet || LENOVO || 42992PG || Not Available || LENOVO || Not Available || LENOVO || 8DET47WW (1.17 ) || 05/31/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{X220 Tablet}}&lt;br /&gt;
|| LENOVO || 4299AS6 || ThinkPad X220 Tablet || LENOVO || 4299AS6 || Not Available || LENOVO || Not Available || LENOVO || 8DET49WW (1.19 ) || 07/01/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{X300}} 6478-14G&lt;br /&gt;
|| LENOVO || 647814G || ThinkPad X300 || LENOVO || 647814G || Not Available || LENOVO || Not Available || LENOVO || 7TET23WW (1.00d) || 01/17/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0022, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7THT15WW-1.00c   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X300}} 6478-18M&lt;br /&gt;
|| LENOVO || 647818M || ThinkPad X300 || LENOVO || 647818M || Not Available || LENOVO || Not Available || LENOVO || 7TET26WW (1.02a) || 02/27/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0022, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7THT15WW-1.00c   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X300}} 6477-17G&lt;br /&gt;
|| LENOVO || 647717G || ThinkPad X300 || LENOVO || 647717G || Not Available || LENOVO || Not Available || LENOVO || 7TET33WW (1.07 ) || &lt;br /&gt;
07/02/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0022, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7THT15WW-1.00c  ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X300}} 6477-17G&lt;br /&gt;
|| LENOVO || 647717G || ThinkPad X300 || LENOVO || 647717G || Not Available || LENOVO || Not Available || LENOVO || 7TET35WW (1.09 ) || 01/20/2009&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0022, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7THT16WW-1.01 ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X301}} 2777-CTO&lt;br /&gt;
|| LENOVO || 2777CTO || ThinkPad X301 || LENOVO || 2777CTO || Not Available || LENOVO || Not Available || LENOVO || 6EET19WW (1.00g) || 07/30/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6EHT07WW-1.00b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X301}} 2777-CTO&lt;br /&gt;
|| LENOVO || 2777CTO || ThinkPad X301 || LENOVO || 2777CTO || Not Available || LENOVO || Not Available || LENOVO || 6EET21WW (1.02 ) || 10/09/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6EHT09WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| {{X1}} 1294-2NG&lt;br /&gt;
|| LENOVO || 12942NG || ThinkPad X1 || LENOVO || 12942NG || Not Available || LENOVO || Not Available || LENOVO || 8MET18WW (1.06 ) || 05/19/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====Z series====&lt;br /&gt;
|-&lt;br /&gt;
| {{Z60t}} 2511-FEU&lt;br /&gt;
|| IBM || 2511FEU || ThinkPad Z60t || IBM || 2511FEU || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z60t}} 2511-FFG&lt;br /&gt;
|| IBM || 2511FFG || ThinkPad Z60t || IBM || 2511FFG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[77HT57WW-1.17    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{Z60m}} 2529-ETG&lt;br /&gt;
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET59WW (1.19 ) || 04/24/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[77HT54WW-1.14    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z60m}} 2529-ETG&lt;br /&gt;
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z60m}} 2529-FBG&lt;br /&gt;
|| IBM || 2529FBG || ThinkPad Z60m || IBM || 2529FBG || Not Available || IBM || Not Available || IBM || 77ET62WW (1.22 ) || 11/21/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{Z60m}} 2529-FKG&lt;br /&gt;
|| IBM || 2529FKG || ThinkPad Z60m || IBM || 2529FKG || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61m}} 9453-A11&lt;br /&gt;
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET48WW (1.08 ) || 05/26/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;String 1: IBM ThinkPad Embedded Controller -[7FHT21WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61m}} 9452-8QG&lt;br /&gt;
|| LENOVO || 94528QG || ThinkPad Z61m || LENOVO || 94528QG || Not Available || LENOVO || Not Available || LENOVO || 7FETA4WW (2.22 ) || 10/19/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61m}} 9450-H9G&lt;br /&gt;
|| LENOVO || 9450H9G || ThinkPad Z61m || LENOVO || 9450H9G || Not Available || LENOVO || Not Available || LENOVO || 7FETA7WW (2.25 ) || 06/03/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{Z61m}} 9452-W5Q&lt;br /&gt;
|| LENOVO || 9452W5Q || ThinkPad Z61m || LENOVO || 9452W5Q || Not Available || LENOVO || Not Available || LENOVO || 7FETA6WW (2.24 ) || 03/13/2008&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61m}} 9543-A11&lt;br /&gt;
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61m}} 9543-A11&lt;br /&gt;
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET93WW (2.11 ) || 11/10/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61m}} 9453-A11&lt;br /&gt;
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61p}} 9453-A12&lt;br /&gt;
|| LENOVO || 9453A12 || ThinkPad Z61p || LENOVO || 9453A12 || Not Available || LENOVO || Not Available || LENOVO || 7FET45WW (1.05 ) || 04/20/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[7FHT19WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61p}} 9450-3AU&lt;br /&gt;
|| LENOVO || 94503AU || ThinkPad Z61p || LENOVO || 94503AU || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61t}} 9440-2CU&lt;br /&gt;
|| LENOVO || 94402CU || ThinkPad Z61t || LENOVO || 94402CU || Not Available || LENOVO || Not Available || LENOVO || 7FET50WW (1.10 ) || 06/20/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT22WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61t}} 9443-4GG&lt;br /&gt;
|| LENOVO || 94434GG || ThinkPad Z61t || LENOVO || 94434GG || Not Available || LENOVO || Not Available || LENOVO || 7FET96WW (2.14 ) || 12/25/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61t}} 9440-CTO&lt;br /&gt;
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FET91WW (2.09 ) || 11/01/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| {{Z61t}} 9440-CTO&lt;br /&gt;
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FET99WW (2.17 ) || 04/17/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61t}} 9440-CTO&lt;br /&gt;
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FETA0WW (2.18 ) || 05/17/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61t}} 9440-CTO&lt;br /&gt;
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FETA7WW (2.25 ) || 06/03/2008 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61t}} 9440-CTO&lt;br /&gt;
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FETA9WW (2.27 ) || 08/26/2009&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====Lenovo 3000 series====&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:Lenovo 3000| Lenovo 3000]] N200 TY2BAFR&lt;br /&gt;
|| LENOVO || 0769BAG || 3000 N200 || LENOVO || IEL10 || Reference || No Enclosure || N/A || LENOVO || 68ET24WW || 08/15/2007 &lt;br /&gt;
|| &amp;lt;pre&amp;gt;                                                  &amp;lt;/pre&amp;gt; &amp;lt;!--Hack to force column wider--&amp;gt;&lt;br /&gt;
|| {{T-WARN|Non-ThinkPad EC firmware and BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====Edge series====&lt;br /&gt;
|-&lt;br /&gt;
| ThinkPad Edge 13 AMD L325&lt;br /&gt;
|| LENOVO || 01976GG || ThinkPad Edge 13&amp;quot;IAL#          || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET25WW (1.12 ) || 01/15/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x000D, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6ZHT19WW-1.164000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Thinkpad Edge 13 AMD L325&lt;br /&gt;
|| LENOVO || 01972MG || ThinkPad Edge || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET32WW (1.19 ) || 07/23/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x000D, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6ZHT26WW-1.171000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Thinkpad Edge 13 AMD L625&lt;br /&gt;
|| LENOVO || 019734Q || ThinkPad Edge 13&amp;quot;IAL#          || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET24WW (1.11 ) || 01/14/2010&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x000D, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6ZHT19WW-1.164000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Thinkpad Edge 13 AMD L625&lt;br /&gt;
|| LENOVO || 019734Q || ThinkPad Edge 13&amp;quot;IAL#          || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET31WW (1.18 ) || 05/25/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x000D, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6ZHT24WW-1.169000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Thinkpad Edge 13 AMD L625&lt;br /&gt;
|| LENOVO || 019734Q || ThinkPad Edge 13&amp;quot;IAL#          || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET34WW (1.21 ) || 01/07/2011&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x000D, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6ZHT27WW-1.172000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|| Thinkpad Edge 13&amp;quot; AMD&lt;br /&gt;
|| LENOVO || 0197RW3 || ThinkPad Edge || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET32WW (1.19 ) || 07/23/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x000D, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6ZHT26WW-1.171000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ThinkPad Edge 13,3&amp;quot; AMD &lt;br /&gt;
|| LENOVO || 01976WG || ThinkPad Edge || LENOVO || INVALID || Not Available || LENOVO || Not Available || LENOVO || 6ZET30WW (1.17 ) || 04/29/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x000D, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6ZHT23WW-1.168000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| ThinkPad Edge 13,3&amp;quot; NUD2EGE&lt;br /&gt;
|| LENOVO || 01962EG || ThinkPad Edge 13&amp;quot;IAL#          || LENOVO || 01962EG || Not Available || LENOVO || Not Available || LENOVO || 6YET25WW (1.10 ) || 01/15/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6YHT19WW-1.164000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| ThinkPad Edge 13,3&amp;quot; NUD2EGE&lt;br /&gt;
|| LENOVO || 01962EG || ThinkPad Edge || LENOVO || 01962EG || Not Available || LENOVO || Not Available || LENOVO || 6YET33WW (1.16 ) || 09/10/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6YHT26WW-1.171000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|| ThinkPad Edge 13,3&amp;quot; NUD2EGE&lt;br /&gt;
|| LENOVO || 01962EG || ThinkPad Edge                  || LENOVO || 01962EG || Not Available || LENOVO || Not Available || LENOVO || 6YET29WW (1.12 ) || 03/05/2010&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6YHT21WW-1.166000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
|| ThinkPad Edge 13,3&amp;quot; Intel&lt;br /&gt;
|| LENOVO || 0196CTO || ThinkPad Edge                  || LENOVO || 0196CTO || Not Available || LENOVO || Not Available || LENOVO || 6YET30WW (1.13 ) || 04/29/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6YHT23WW-1.168000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|| ThinkPad Edge 13,3&amp;quot; Intel NUD5MMH&lt;br /&gt;
|| LENOVO || 01965MG || ThinkPad Edge || LENOVO || 01965MG || Not Available || LENOVO || Not Available || LENOVO || 6YET30WW (1.13 ) || 04/29/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[6YHT23WW-1.168000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|| ThinkPad Edge 13,3&amp;quot; Intel NUD5PGE&lt;br /&gt;
|| LENOVO || 01965PG || ThinkPad Edge || LENOVO || 01965PG || Not Available || LENOVO || Not Available || LENOVO || 6YET29WW (1.12 ) || 03/05/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6YHT21WW-1.166000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|| ThinkPad Edge 13,3&amp;quot; Intel NUD5PGE&lt;br /&gt;
|| LENOVO || 01965PG || ThinkPad Edge || LENOVO || 01965PG || Not Available || LENOVO || Not Available || LENOVO || 6YET33WW (1.16 ) || 09/10/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0018, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[6YHT26WW-1.171000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| ThinkPad Edge 14&amp;quot; NVP3YRT&lt;br /&gt;
|| LENOVO || 05783YG || ThinkPad Edge || LENOVO || 05783YG || Not Available || LENOVO || Not Available || LENOVO || 80ET29WW (1.06 ) || 03/24/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0019, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[80HT22WW-1.166000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| ThinkPad Edge 14&amp;quot; 639D640&lt;br /&gt;
|| LENOVO || 0578A19 || ThinkPad Edge || LENOVO || 0578A19 || Not Available || LENOVO || Not Available || LENOVO || 80ET29WW (1.06 ) || 03/24/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0019, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[80HT22WW-1.166000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- &lt;br /&gt;
| ThinkPad Edge 14&amp;quot; Intel i5 M430&lt;br /&gt;
|| LENOVO || 0578BHA || ThinkPad Edge || LENOVO || 0578BHA || Not Available || LENOVO || Not Available || LENOVO || 80ET31WW (1.08 ) || 04/28/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0019, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[80HT23WW-1.167000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| ThinkPad Edge 14&amp;quot; Intel i3 M370&lt;br /&gt;
|| LENOVO || 0578JHG || ThinkPad Edge || LENOVO || 0578JHG || Not Available || LENOVO || Not Available || LENOVO || 80ET43WW (1.20 ) || 11/17/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0019, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[80HT33WW-1.177000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
|| ThinkPad Edge 15&amp;quot; NVL7VGE&lt;br /&gt;
|| LENOVO || 03017VG || ThinkPad Edge || LENOVO || 03017VG || Not Available || LENOVO || Not Available || LENOVO || 80ET36WW (1.13 ) || 06/04/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0019, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[80HT29WW-1.173000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|| ThinkPad Edge 15&amp;quot; 0301RJ7&lt;br /&gt;
|| LENOVO || 0301RJ7 || ThinkPad Edge || LENOVO || 0301RJ7 || Not Available || LENOVO || Not Available || LENOVO || 80ET43WW (1.20 ) || 11/17/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0019, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[80HT33WW-1.177000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|| ThinkPad Edge 15&amp;quot; AMD&lt;br /&gt;
|| LENOVO || 0302CTO || ThinkPad Edge || LENOVO || 0302CTO || Not Available || LENOVO || Not Available || LENOVO || 82ET63WW (2.04 ) || 01/07/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0015, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[82HT28WW-1.174000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|| ThinkPad Edge 15&amp;quot; AMD&lt;br /&gt;
|| LENOVO || 0302CTO || ThinkPad Edge || LENOVO || 0302CTO || Not Available || LENOVO || Not Available || LENOVO || 82ET75WW (2.15 ) || 01/28/2011 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0015, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[82HT28WW-1.174000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| ThinkPad Edge E420s&lt;br /&gt;
|| LENOVO || 440128U || ThinkPad Edge E420s || LENOVO || 440128U || Not Available || LENOVO || Not Available || LENOVO || 8JET26WW (1.08 ) || 03/24/2011&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| ThinkPad Edge E420s&lt;br /&gt;
|| LENOVO || 440128U || ThinkPad Edge E420s || LENOVO || 440128U || Not Available || LENOVO || Not Available || LENOVO || 8JET29WW (1.11 ) || 05/10/2011&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====L series====&lt;br /&gt;
|-&lt;br /&gt;
| L512&lt;br /&gt;
|| LENOVO || 4444CTO || ThinkPad L512 || LENOVO || 4444CTO || Not Available || LENOVO || Not Available || LENOVO || 81ET40WW (1.16 ) || 06/22/2010 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0019, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[81HT25WW-1.168000]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Adding entries==&lt;br /&gt;
&lt;br /&gt;
Click the &amp;quot;Edit&amp;quot; link on the appropriate series above and add an entry of the following form:&lt;br /&gt;
:&amp;lt;tt&amp;gt;| &amp;lt;/tt&amp;gt;&amp;lt;i&amp;gt;description of your model&amp;lt;/i&amp;gt;&lt;br /&gt;
:&amp;lt;i&amp;gt;data line 1&amp;lt;/i&amp;gt;&lt;br /&gt;
:&amp;lt;i&amp;gt;data line 2&amp;lt;/i&amp;gt;&lt;br /&gt;
:&amp;lt;tt&amp;gt;||&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&amp;lt;tt&amp;gt;|-&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the two data lines are generated by the following &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for X in system-{manufacturer,product-name,version} \&lt;br /&gt;
  baseboard-{manufacturer,product-name,version} \&lt;br /&gt;
  chassis-{manufacturer,version} bios-{vendor,version,release-date}; do \&lt;br /&gt;
  echo -n &amp;quot;|| `sudo /usr/sbin/dmidecode -s $X` &amp;quot; \&lt;br /&gt;
  | perl -pe 's/\n/\\n/' ; done; \&lt;br /&gt;
  sudo /usr/sbin/dmidecode | perl -0777 -ne \&lt;br /&gt;
  'm/\n(.*).\n.*\n(.*Embedded Cont.*)\n/i; print &amp;quot;\n|| &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;nowiki&amp;gt;$1$2&amp;lt;/nowiki&amp;gt;\n&amp;quot;'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you can, please also test [[tp_smapi]] and update its [[tp_smapi#Model-specific_status|model-specific status table]].&lt;br /&gt;
&lt;br /&gt;
==Software using ThinkPad DMI IDs==&lt;br /&gt;
* [[HDAPS]] driver whitelist&lt;br /&gt;
* [[tp_smapi]] driver whitelist&lt;br /&gt;
* [[thinkpad-acpi]] driver quirk list&lt;/div&gt;</summary>
		<author><name>Gervase</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Code/tp-fancontrol&amp;diff=51739</id>
		<title>Code/tp-fancontrol</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Code/tp-fancontrol&amp;diff=51739"/>
		<updated>2011-06-07T14:50:06Z</updated>

		<summary type="html">&lt;p&gt;Gervase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# tp-fancontrol 0.3.02 (http://thinkwiki.org/wiki/ACPI_fan_control_script)&lt;br /&gt;
# Provided under the GNU General Public License version 2 or later or&lt;br /&gt;
# the GNU Free Documentation License version 1.2 or later, at your option.&lt;br /&gt;
# See http://www.gnu.org/copyleft/gpl.html for the Warranty Disclaimer.&lt;br /&gt;
&lt;br /&gt;
# This script dynamically controls fan speed on some ThinkPad models&lt;br /&gt;
# according to user-defined temperature thresholds.  It implements its&lt;br /&gt;
# own decision algorithm, overriding the ThinkPad embedded&lt;br /&gt;
# controller. It also implements a workaround for the fan noise pulse&lt;br /&gt;
# experienced every few seconds on some ThinkPads.&lt;br /&gt;
#&lt;br /&gt;
# Run 'tp-fancontrol --help' for options.&lt;br /&gt;
#&lt;br /&gt;
# For optimal fan behavior during suspend and resume, invoke &lt;br /&gt;
# &amp;quot;tp-fancontrol -u&amp;quot; during the suspend process.&lt;br /&gt;
# &lt;br /&gt;
# WARNING: This script relies on undocumented hardware features and&lt;br /&gt;
# overrides nominal hardware behavior. It may thus cause arbitrary&lt;br /&gt;
# damage to your laptop or data. Watch your temperatures!&lt;br /&gt;
#&lt;br /&gt;
# WARNING: The list of temperature ranges used below is much more liberal&lt;br /&gt;
# than the rules used by the embedded controller firmware, and is&lt;br /&gt;
# derived mostly from anecdotal evidence, hunches and wishful thinking.&lt;br /&gt;
# It is also model-specific (see http://thinkwiki.org/wiki/Thermal_sensors).&lt;br /&gt;
&lt;br /&gt;
# Temperature ranges, per sensor:&lt;br /&gt;
# (min temperature: when to step up from 0-th fan level,&lt;br /&gt;
#  max temperature: when to step up to maximum fan level)&lt;br /&gt;
THRESHOLDS=( #  Sensor     ThinkPad model&lt;br /&gt;
             #             R51     T41/2  Z60t   T43-26xx&lt;br /&gt;
# min  max   #  ---------- ------- -----  -----  ---------------------------&lt;br /&gt;
  50   70    #  EC 0x78    CPU     CPU    ?      CPU&lt;br /&gt;
  47   60    #  EC 0x79    miniPCI ?      ?      Between CPU and PCMCIA slot&lt;br /&gt;
  43   55    #  EC 0x7A    HDD     ?      ?      PCMCIA slot&lt;br /&gt;
  49   68    #  EC 0x7B    GPU     GPU    ?      GPU&lt;br /&gt;
  40   50    #  EC 0x7C    BAT     BAT    BAT    Sys BAT (front left of battery)&lt;br /&gt;
  40   50    #  EC 0x7D    n/a     n/a    n/a    UltraBay BAT&lt;br /&gt;
  37   47    #  EC 0x7E    BAT     BAT    BAT    Sys BAT (rear right of battery)&lt;br /&gt;
  37   47    #  EC 0x7F    n/a     n/a    n/a    UltraBay BAT&lt;br /&gt;
&lt;br /&gt;
  45   60    #  EC 0xC0    ?       n/a    ?      Between northbridge and DRAM&lt;br /&gt;
  48   62    #  EC 0xC1    ?       n/a    ?      Southbridge (under miniPCI)&lt;br /&gt;
  50   65    #  EC 0xC2    ?       n/a    ?      Power circuitry (under CDC)&lt;br /&gt;
&lt;br /&gt;
  47   58    #  HDD        -&amp;gt;      -&amp;gt;     -&amp;gt;     Hard disk internal sensor&lt;br /&gt;
  47   60    #  HDAPS      -&amp;gt;      -&amp;gt;     -&amp;gt;     HDAPS readout (same as EC 0x79)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LEVELS=(    0      2      4      7)  # Fan speed levels&lt;br /&gt;
ANTIPULSE=( 0      1      1      0)  # Prevent fan pulsing noise at this level&lt;br /&gt;
                                     # (reduces frequency of fan RPM updates)&lt;br /&gt;
&lt;br /&gt;
OFF_THRESH_DELTA=3 # when gets this much cooler than 'min' above, may turn off fan&lt;br /&gt;
MIN_THRESH_SHIFT=0 # increase min thresholds by this much&lt;br /&gt;
MAX_THRESH_SHIFT=0 # increase max thresholds by this much&lt;br /&gt;
MIN_WAIT=180 # minimum time (seconds) to spend in a given level before stepping down&lt;br /&gt;
&lt;br /&gt;
IBM_ACPI=/proc/acpi/ibm&lt;br /&gt;
HDAPS_TEMP=/sys/bus/platform/drivers/hdaps/hdaps/temp1&lt;br /&gt;
PID_FILE=/var/run/tp-fancontrol.pid&lt;br /&gt;
LOGGER=/usr/bin/logger&lt;br /&gt;
INTERVAL=3        # sample+refresh interval&lt;br /&gt;
SETTLE_TIME=6     # wait this many seconds long before applying anti-pulsing&lt;br /&gt;
RESETTLE_TIME=600 # briefly disable anti-pulsing at every N seconds&lt;br /&gt;
SUSPEND_TIME=5    # seconds to sleep when receiving SIGUSR1&lt;br /&gt;
DISK_POLL_PERIOD=15 # poll period in seconds for disk sensors (it changes slowly and is expensive to read)&lt;br /&gt;
HITACHI_MODELS=&amp;quot;^(HTS4212..H9AT00|HTS726060M9AT00|HTS5410..G9AT00|IC25[NT]0..ATCS0[45]|HTE541040G9AT00|HTS5416..J9(AT|SA)00)&amp;quot;&lt;br /&gt;
SEP=','           # Separator char for display&lt;br /&gt;
&lt;br /&gt;
WATCHDOG_DELAY=$(( 3 * INTERVAL ))&lt;br /&gt;
HAVE_WATCHDOG=`grep -q watchdog $IBM_ACPI/fan &amp;amp;&amp;amp; echo true || echo false`&lt;br /&gt;
HAVE_LEVELCMD=`grep -q disengaged $IBM_ACPI/fan &amp;amp;&amp;amp; echo true || echo false`&lt;br /&gt;
&lt;br /&gt;
QUIET=false&lt;br /&gt;
DRY_RUN=false&lt;br /&gt;
DAEMONIZE=false&lt;br /&gt;
AM_DAEMON=false&lt;br /&gt;
KILL_DAEMON=false&lt;br /&gt;
SUSPEND_DAEMON=false&lt;br /&gt;
SYSLOG=false&lt;br /&gt;
DISK_POLL_TIME=-$DISK_POLL_PERIOD&lt;br /&gt;
&lt;br /&gt;
usage() {&lt;br /&gt;
    echo &amp;quot;&lt;br /&gt;
Usage: $0 [OPTION]...&lt;br /&gt;
&lt;br /&gt;
Available options:&lt;br /&gt;
   -s N   Shift up the min temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler).&lt;br /&gt;
          Max temperature thresholds are not affected.&lt;br /&gt;
   -S N   Shift up the max temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler). DANGEROUS.&lt;br /&gt;
   -t     Test mode&lt;br /&gt;
   -q     Quiet mode&lt;br /&gt;
   -d     Daemon mode, go into background (implies -q)&lt;br /&gt;
   -l     Log to syslog&lt;br /&gt;
   -k     Kill already-running daemon&lt;br /&gt;
   -u     Tell already-running daemon that the system is being suspended&lt;br /&gt;
   -p     Pid file location for daemon mode, default: $PID_FILE&lt;br /&gt;
&amp;quot;&lt;br /&gt;
    exit 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
while getopts 's:S:qtdlp:kuh' OPT; do&lt;br /&gt;
    case &amp;quot;$OPT&amp;quot; in&lt;br /&gt;
        s) # shift thresholds&lt;br /&gt;
            MIN_THRESH_SHIFT=&amp;quot;$OPTARG&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        S) # shift thresholds&lt;br /&gt;
            MAX_THRESH_SHIFT=&amp;quot;$OPTARG&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        t) # test mode&lt;br /&gt;
            DRY_RUN=true&lt;br /&gt;
            ;;&lt;br /&gt;
        q) # quiet mode&lt;br /&gt;
            QUIET=true&lt;br /&gt;
            ;;&lt;br /&gt;
        d) # go into background and daemonize&lt;br /&gt;
            DAEMONIZE=true&lt;br /&gt;
            ;;&lt;br /&gt;
        l) # log to syslog&lt;br /&gt;
            SYSLOG=true&lt;br /&gt;
            ;;&lt;br /&gt;
        p) # different pidfile&lt;br /&gt;
            PID_FILE=&amp;quot;$OPTARG&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        k) # kill daemon&lt;br /&gt;
            KILL_DAEMON=true&lt;br /&gt;
            ;;&lt;br /&gt;
        u) # suspend daemon&lt;br /&gt;
            SUSPEND_DAEMON=true&lt;br /&gt;
            ;;&lt;br /&gt;
        h) # short help&lt;br /&gt;
            usage&lt;br /&gt;
            ;;&lt;br /&gt;
        \?) # error&lt;br /&gt;
            usage&lt;br /&gt;
            ;;&lt;br /&gt;
    esac&lt;br /&gt;
done&lt;br /&gt;
[ $OPTIND -gt $# ] || usage  # no non-option args&lt;br /&gt;
&lt;br /&gt;
# no logger found, no syslog capabilities&lt;br /&gt;
$SYSLOG &amp;amp;&amp;amp; [ ! -x $LOGGER ] &amp;amp;&amp;amp; SYSLOG=false || :&lt;br /&gt;
&lt;br /&gt;
if $DRY_RUN; then&lt;br /&gt;
    echo &amp;quot;$0: Dry run, will not change fan state.&amp;quot;&lt;br /&gt;
    QUIET=false&lt;br /&gt;
    DAEMONIZE=false&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Read the temperature sensor on new Hitachi drivers without spinning up the&lt;br /&gt;
# disk or unloading its head (this cannot be done using standard SMART).&lt;br /&gt;
# Works only with drivers/ide or new libata. Equivalent to hdparm -H in &amp;gt;=6.7.&lt;br /&gt;
read_hitachi_temp() { perl - &amp;quot;$@&amp;quot; &amp;lt;&amp;lt;'EOPERL'    # do it in Perl&lt;br /&gt;
    #!/usr/bin/perl&lt;br /&gt;
    $dev=&amp;quot;$ARGV[0]&amp;quot; or die &amp;quot;No device given.\n&amp;quot;;&lt;br /&gt;
    $HDIO_DRIVE_CMD=0x031f;&lt;br /&gt;
    $args=pack(&amp;quot;cccc&amp;quot;,0xf0,0,0x01,0);   # Sense Condition command&lt;br /&gt;
    open(DEV,&amp;quot;&amp;lt;&amp;quot;,$dev) or die &amp;quot;open(\&amp;quot;$dev\&amp;quot;): $!\n&amp;quot;;&lt;br /&gt;
    if (ioctl(DEV,$HDIO_DRIVE_CMD,$args)) {&lt;br /&gt;
       $nsect=(unpack(&amp;quot;cccc&amp;quot;,$args))[2];&lt;br /&gt;
       if ($nsect==0 || $nsect==0xff) {&lt;br /&gt;
           die &amp;quot;Temperature over/underflow.\n&amp;quot;;&lt;br /&gt;
       } elsif ($nsect==0x01) {  # Linux&amp;lt;=2.6.18 doesn't return ATA registers&lt;br /&gt;
           die &amp;quot;Old Linux kernel, readout not supported.\n&amp;quot;;&lt;br /&gt;
       } else {&lt;br /&gt;
           printf &amp;quot;%d\n&amp;quot;, $nsect/2-20;&lt;br /&gt;
       }&lt;br /&gt;
    } else {&lt;br /&gt;
        die &amp;quot;ioctl(\&amp;quot;$dev\&amp;quot;,HDIO_DRIVE_CMD,SENSE_CONDITION): $!\n&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
EOPERL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
update_disk_temp() {&lt;br /&gt;
    if (( SECONDS &amp;gt;= DISK_POLL_TIME + DISK_POLL_PERIOD )); then&lt;br /&gt;
        LAST_DISK_TEMP=&amp;quot;-128&amp;quot;&lt;br /&gt;
        for DEV in {sda,hda}; do&lt;br /&gt;
            if [[ -b &amp;quot;/dev/$DEV&amp;quot; ]]; then&lt;br /&gt;
                local MODEL=`cat /sys/block/$DEV/device/model`&lt;br /&gt;
                if [[ &amp;quot;$MODEL&amp;quot; =~ &amp;quot;$HITACHI_MODELS&amp;quot; ]]; then&lt;br /&gt;
                    if HTEMP=`read_hitachi_temp &amp;quot;/dev/$DEV&amp;quot; 2&amp;gt;/dev/null`; then&lt;br /&gt;
                        LAST_DISK_TEMP=&amp;quot;$HTEMP&amp;quot;&lt;br /&gt;
                        break&lt;br /&gt;
                    fi&lt;br /&gt;
                fi&lt;br /&gt;
            fi&lt;br /&gt;
        done&lt;br /&gt;
        DISK_POLL_TIME=$SECONDS&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
thermometer() { # output list of temperatures&lt;br /&gt;
    # 8 basic temperatures from ibm-acpi:&lt;br /&gt;
    [[ -r $IBM_ACPI/thermal ]] || { echo &amp;quot;$0: Cannot read $IBM_ACPI/thermal&amp;quot; 2&amp;gt;&amp;amp;1 ; exit 1; }&lt;br /&gt;
    read THERMAL &amp;lt; $IBM_ACPI/thermal&lt;br /&gt;
    read X Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Z1 Z2 Z3 JNK &amp;lt; &amp;lt;(echo &amp;quot;$THERMAL&amp;quot;) &lt;br /&gt;
    [[ &amp;quot;$X&amp;quot; == &amp;quot;temperatures:&amp;quot; ]] || { echo &amp;quot;$0: Bad readout: \&amp;quot;$THERMAL\&amp;quot;&amp;quot; &amp;gt;&amp;amp;2;  exit 1; }&lt;br /&gt;
    echo -n &amp;quot;$Y1 $Y2 $Y3 $Y4 $Y5 $Y6 $Y7 $Y8 &amp;quot;;&lt;br /&gt;
    # 3 extra temperatures from ibm_acpi:&lt;br /&gt;
    if [[ -n &amp;quot;$Z1&amp;quot; &amp;amp;&amp;amp; -n &amp;quot;$Z2&amp;quot; &amp;amp;&amp;amp; -n &amp;quot;$Z3&amp;quot; ]]; then &lt;br /&gt;
        # ibm_acpi provided extra sensors from at EC offsets 0xC0 to 0xC2?&lt;br /&gt;
        echo -n &amp;quot;$SEP $Z1 $Z2 $Z3 &amp;quot;&lt;br /&gt;
    else &lt;br /&gt;
        [ -r $IBM_ACPI/ecdump ] || { echo &amp;quot;$0: Cannot read $IBM_ACPI/ecdump&amp;quot; 2&amp;gt;&amp;amp;1; exit 1; }&lt;br /&gt;
        perl -e 'm/^EC 0xc0: .(..) .(..) .(..) / and print hex($1).&amp;quot; &amp;quot;.hex($2).&amp;quot; &amp;quot;.hex($3).&amp;quot; &amp;quot; and exit 0 while &amp;lt;&amp;gt;; exit 1' &amp;lt; $IBM_ACPI/ecdump&lt;br /&gt;
    fi&lt;br /&gt;
    # 1 Disk drive temperatures:&lt;br /&gt;
    echo -n &amp;quot;$SEP $LAST_DISK_TEMP &amp;quot;&lt;br /&gt;
    # 1 HDAPS temperature (optional):&lt;br /&gt;
    if [ -r $HDAPS_TEMP ]; then&lt;br /&gt;
        Y=&amp;quot;`cat $HDAPS_TEMP`&amp;quot;&lt;br /&gt;
        (( &amp;quot;$Y&amp;quot; &amp;gt; 100 )) || echo -n &amp;quot;$Y &amp;quot;  # the HDAPS readouts are nonsensical right after resume&lt;br /&gt;
    fi&lt;br /&gt;
    return 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
speedometer() { # output fan speed RPM&lt;br /&gt;
    sed -n 's/^speed:[ \t]*//p' $IBM_ACPI/fan&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
setlevel() { # set fan speed level&lt;br /&gt;
    local LEVEL=$1&lt;br /&gt;
    if ! $DRY_RUN; then&lt;br /&gt;
        if $HAVE_LEVELCMD; then&lt;br /&gt;
        	echo &amp;quot;level $LEVEL&amp;quot; &amp;gt; $IBM_ACPI/fan&lt;br /&gt;
	else&lt;br /&gt;
		case &amp;quot;$LEVEL&amp;quot; in&lt;br /&gt;
		(auto)        LEVEL=0x80 ;;&lt;br /&gt;
		(disengaged)  LEVEL=0x40 ;;&lt;br /&gt;
		esac&lt;br /&gt;
        	echo 0x2F $LEVEL &amp;gt; $IBM_ACPI/ecdump&lt;br /&gt;
	fi&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
getlevel() { # get fan speed level&lt;br /&gt;
    perl -e 'm/^EC 0x20: .* .(..)$/ and print $1 and exit 0 while &amp;lt;&amp;gt;; exit 1' &amp;lt; $IBM_ACPI/ecdump&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
log() {&lt;br /&gt;
	$QUIET || echo &amp;quot;&amp;gt; $*&amp;quot;&lt;br /&gt;
	! $SYSLOG || $LOGGER -t &amp;quot;`basename $0`[$$]&amp;quot; &amp;quot;$*&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
cleanup() { # clean up after work&lt;br /&gt;
    $AM_DAEMON &amp;amp;&amp;amp; rm -f &amp;quot;$PID_FILE&amp;quot; 2&amp;gt; /dev/null&lt;br /&gt;
    log &amp;quot;Shutting down, switching to automatic fan control&amp;quot;&lt;br /&gt;
    if ! $DRY_RUN; then&lt;br /&gt;
        if $HAVE_LEVELCMD; then&lt;br /&gt;
            echo enable &amp;gt; $IBM_ACPI/fan&lt;br /&gt;
        else&lt;br /&gt;
            echo 0x2F 0x80 &amp;gt; $IBM_ACPI/ecdump&lt;br /&gt;
        fi&lt;br /&gt;
        if $HAVE_WATCHDOG; then&lt;br /&gt;
            echo watchdog 0 &amp;gt; $IBM_ACPI/fan  # disable watchdog&lt;br /&gt;
        fi&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
floor_div() {&lt;br /&gt;
    echo $(( (($1)+1000*($2))/($2) - 1000 ))&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
set_priority() {&lt;br /&gt;
    ! $DRY_RUN &amp;amp;&amp;amp; renice -10 -p $$&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
init_state() {&lt;br /&gt;
    IDX=0&lt;br /&gt;
    NEW_IDX=0&lt;br /&gt;
    START_TIME=0&lt;br /&gt;
    MAX_IDX=$(( ${#LEVELS[@]} - 1 ))&lt;br /&gt;
    SETTLE_LEFT=0&lt;br /&gt;
    RESETTLE_LEFT=0&lt;br /&gt;
    FIRST=true&lt;br /&gt;
    RESTART=false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
control_fan() {&lt;br /&gt;
    # Enable the fan in default mode if anything goes wrong:&lt;br /&gt;
    set -e -E -u&lt;br /&gt;
    trap &amp;quot;cleanup; exit 2&amp;quot; HUP INT ABRT QUIT SEGV TERM&lt;br /&gt;
    trap &amp;quot;cleanup&amp;quot; EXIT&lt;br /&gt;
    trap &amp;quot;log 'Got SIGUSR1'; setlevel 0; RESTART=true; sleep $SUSPEND_TIME&amp;quot; USR1&lt;br /&gt;
    if ! $DRY_RUN &amp;amp;&amp;amp; $HAVE_WATCHDOG; then&lt;br /&gt;
        log &amp;quot;Activating watchdog with delay $WATCHDOG_DELAY sec&amp;quot;&lt;br /&gt;
        echo &amp;quot;watchdog $WATCHDOG_DELAY&amp;quot; &amp;gt; $IBM_ACPI/fan&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    init_state&lt;br /&gt;
    log &amp;quot;Starting dynamic fan control&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Control loop:&lt;br /&gt;
    while true; do&lt;br /&gt;
        # Get readouts&lt;br /&gt;
        update_disk_temp  # don't do this in a subshell, it's stateful&lt;br /&gt;
        TEMPS=`thermometer`&lt;br /&gt;
        $QUIET || SPEED=`speedometer`&lt;br /&gt;
        $QUIET || ECLEVEL=`getlevel`&lt;br /&gt;
        NOW=`date +%s`&lt;br /&gt;
        if echo &amp;quot;$TEMPS&amp;quot; | grep -q &amp;quot;[^ 0-9$SEP\n-]&amp;quot;; then&lt;br /&gt;
            echo &amp;quot;Invalid character in temperatures: $TEMPS&amp;quot; &amp;gt;&amp;amp;2; exit 1;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        # Calculate new level index by placing temperatures into regions of &amp;quot;Z&amp;quot; values:&lt;br /&gt;
        # Z &amp;gt;= 2*I means &amp;quot;must be at index I or higher&amp;quot;&lt;br /&gt;
        # Z  = 2*I+1 is hysteresis: &amp;quot;don't step down if currently at I+1&amp;quot;&lt;br /&gt;
        # The set of temperatures for each Z value are as follows, denoting d=(MAX-MIN)/(2*(MAX_IDX-1)) :&lt;br /&gt;
        #   Z=0:         {-infty..MIN-OFF_THRESH_DELTA)     Z=1:   {MIN-OFF_THRESH_DELTA..MIN}&lt;br /&gt;
        #   Z=2:         {MIN..MIN+d}         Z=3:   {MIN+d..MIN+2d}&lt;br /&gt;
        #   Z=4:         {MIN+2d..MIN+3d}     Z=5:   {MIN+3d..MIN+4d}   ...&lt;br /&gt;
        #   Z=2*MAX_IDX: {MAX..infty}&lt;br /&gt;
&lt;br /&gt;
        # Enforce minimum time in this level before stepping down:&lt;br /&gt;
        MAX_Z=$(( IDX&amp;gt;0 ? ( NOW&amp;gt;START_TIME+MIN_WAIT ? 2*(IDX-1) : 2*IDX ) : 0 ))&lt;br /&gt;
&lt;br /&gt;
        # Go over all sensors and compute the Z value; compute the maximum Z and a pretty-printed string:&lt;br /&gt;
        SENSOR=0&lt;br /&gt;
        Z_STR=&amp;quot;$MAX_Z+&amp;quot;&lt;br /&gt;
        TEMP_STR=&amp;quot;&amp;quot;;&lt;br /&gt;
        for TEMP in $TEMPS; do&lt;br /&gt;
            if [[ &amp;quot;$TEMP&amp;quot; == &amp;quot;$SEP&amp;quot; ]]; then   # ignore this (a separator for visual aid)&lt;br /&gt;
                Z_STR=&amp;quot;${Z_STR}$SEP&amp;quot;&lt;br /&gt;
                TEMP_STR=&amp;quot;${TEMP_STR}$SEP &amp;quot;&lt;br /&gt;
                continue&lt;br /&gt;
            fi&lt;br /&gt;
            [ $((2*SENSOR+2)) -le ${#THRESHOLDS[@]} ] ||&lt;br /&gt;
                { echo &amp;quot;Too many sensors, not enough values in THRESHOLDS&amp;quot; 2&amp;gt;&amp;amp;1; exit 1; }&lt;br /&gt;
            if [[ $TEMP == -128 || $TEMP == 128 ]]; then&lt;br /&gt;
                Z='_'; TEMP='_' # inactive sensor&lt;br /&gt;
            else&lt;br /&gt;
                MIN=$((THRESHOLDS[SENSOR*2] + MIN_THRESH_SHIFT))&lt;br /&gt;
                MAX=$((THRESHOLDS[SENSOR*2+1] + MAX_THRESH_SHIFT ))&lt;br /&gt;
                [[ $MAX -le $MIN ]] &amp;amp;&amp;amp; \&lt;br /&gt;
                    { echo 'Reversed temperature thresholds (shifted too much?)' 2&amp;gt;&amp;amp;1; exit 1; }&lt;br /&gt;
                if (( TEMP &amp;lt; MIN - OFF_THRESH_DELTA )); then&lt;br /&gt;
                    Z=0&lt;br /&gt;
                else  # compute Z value for this sensor (see above):&lt;br /&gt;
                    Z=$(( `floor_div $(( 2*(TEMP-MIN)*(MAX_IDX-1) )) $((MAX-MIN))` + 2 ))&lt;br /&gt;
                    [ $Z -ge 1 ] || Z=1&lt;br /&gt;
                    [ $Z -le $((2*MAX_IDX)) ] || Z=$((2*MAX_IDX))&lt;br /&gt;
                fi&lt;br /&gt;
                [ $MAX_Z -gt $Z ] || MAX_Z=$Z&lt;br /&gt;
            fi&lt;br /&gt;
            Z_STR=&amp;quot;${Z_STR}${Z}&amp;quot;&lt;br /&gt;
            TEMP_STR=&amp;quot;${TEMP_STR}${TEMP} &amp;quot;&lt;br /&gt;
            (( ++SENSOR ))&lt;br /&gt;
        done&lt;br /&gt;
        [ $SENSOR -gt 0 ] || { echo &amp;quot;No temperatures read&amp;quot; &amp;gt;&amp;amp;2; exit 1; }&lt;br /&gt;
&lt;br /&gt;
        HYS=$(( (MAX_Z == 2*IDX-1) &amp;amp;&amp;amp; ++MAX_Z )) # hysteresis&lt;br /&gt;
        NEW_IDX=$(( MAX_Z/2 ))&lt;br /&gt;
&lt;br /&gt;
        # Interrupted by a signal?&lt;br /&gt;
        if $RESTART; then&lt;br /&gt;
            init_state&lt;br /&gt;
            log &amp;quot;Resetting state&amp;quot;&lt;br /&gt;
            continue&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        # Transition&lt;br /&gt;
        $FIRST &amp;amp;&amp;amp; OLDLEVEL='?' || OLDLEVEL=${LEVELS[$IDX]}&lt;br /&gt;
        NEWLEVEL=${LEVELS[$NEW_IDX]}&lt;br /&gt;
        $QUIET || echo &amp;quot;L=$OLDLEVEL-&amp;gt;$NEWLEVEL EC=$ECLEVEL RPM=`printf %4s $SPEED` T=($TEMP_STR) Z=$Z_STR&amp;quot;&lt;br /&gt;
        if [ &amp;quot;$OLDLEVEL&amp;quot; != &amp;quot;$NEWLEVEL&amp;quot; ]; then&lt;br /&gt;
            START_TIME=$NOW&lt;br /&gt;
            log &amp;quot;Changing fan level: $OLDLEVEL-&amp;gt;$NEWLEVEL  (temps: $TEMP_STR)&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        setlevel $NEWLEVEL&lt;br /&gt;
&lt;br /&gt;
        sleep $INTERVAL&lt;br /&gt;
&lt;br /&gt;
        # If needed, apply anti-pulsing hack after a settle-down period (and occasionally re-settle):&lt;br /&gt;
        if [ ${ANTIPULSE[${NEW_IDX}]} == 1 ]; then &lt;br /&gt;
            if [ $NEWLEVEL != $OLDLEVEL -o $RESETTLE_LEFT -le 0 ]; then # start settling?&lt;br /&gt;
                SETTLE_LEFT=$SETTLE_TIME&lt;br /&gt;
                RESETTLE_LEFT=$RESETTLE_TIME&lt;br /&gt;
            fi&lt;br /&gt;
            if [ $SETTLE_LEFT -ge 0 ]; then&lt;br /&gt;
                SETTLE_LEFT=$((SETTLE_LEFT-INTERVAL))&lt;br /&gt;
            else&lt;br /&gt;
                setlevel disengaged # disengage briefly to fool embedded controller&lt;br /&gt;
                sleep 0.5&lt;br /&gt;
                RESETTLE_LEFT=$((RESETTLE_LEFT-INTERVAL))&lt;br /&gt;
            fi&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        IDX=$NEW_IDX&lt;br /&gt;
        FIRST=false&lt;br /&gt;
    done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if $KILL_DAEMON || $SUSPEND_DAEMON; then &lt;br /&gt;
    if [ -f &amp;quot;$PID_FILE&amp;quot; ]; then&lt;br /&gt;
	set -e&lt;br /&gt;
	DPID=&amp;quot;`cat \&amp;quot;$PID_FILE\&amp;quot;`&amp;quot; &lt;br /&gt;
	if $KILL_DAEMON; then&lt;br /&gt;
        	kill &amp;quot;$DPID&amp;quot;&lt;br /&gt;
		rm &amp;quot;$PID_FILE&amp;quot;&lt;br /&gt;
		$QUIET || echo &amp;quot;Killed process $DPID&amp;quot;&lt;br /&gt;
	else # SUSPEND_DAEMON&lt;br /&gt;
		kill -USR1 &amp;quot;$DPID&amp;quot;&lt;br /&gt;
		$QUIET || echo &amp;quot;Sent SIGUSR1 to $DPID&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
    else&lt;br /&gt;
        $QUIET || echo &amp;quot;Daemon not running.&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
    fi&lt;br /&gt;
elif $DAEMONIZE ; then&lt;br /&gt;
    if [ -e &amp;quot;$PID_FILE&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;$0: File $PID_FILE already exists, refusing to run.&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
    else&lt;br /&gt;
        set_priority&lt;br /&gt;
        AM_DAEMON=true QUIET=true control_fan 0&amp;lt;&amp;amp;- 1&amp;gt;&amp;amp;- 2&amp;gt;&amp;amp;- &amp;amp;&lt;br /&gt;
        echo $! &amp;gt; &amp;quot;$PID_FILE&amp;quot;&lt;br /&gt;
        exit 0&lt;br /&gt;
    fi&lt;br /&gt;
else&lt;br /&gt;
    [ -e &amp;quot;$PID_FILE&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;WARNING: daemon already running&amp;quot;&lt;br /&gt;
    set_priority&lt;br /&gt;
    control_fan&lt;br /&gt;
fi&lt;/div&gt;</summary>
		<author><name>Gervase</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Code/tp-fancontrol&amp;diff=51738</id>
		<title>Code/tp-fancontrol</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Code/tp-fancontrol&amp;diff=51738"/>
		<updated>2011-06-07T14:47:08Z</updated>

		<summary type="html">&lt;p&gt;Gervase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# tp-fancontrol 0.3.02 (http://thinkwiki.org/wiki/ACPI_fan_control_script)&lt;br /&gt;
# Provided under the GNU General Public License version 2 or later or&lt;br /&gt;
# the GNU Free Documentation License version 1.2 or later, at your option.&lt;br /&gt;
# See http://www.gnu.org/copyleft/gpl.html for the Warranty Disclaimer.&lt;br /&gt;
&lt;br /&gt;
# This script dynamically controls fan speed on some ThinkPad models&lt;br /&gt;
# according to user-defined temperature thresholds.  It implements its&lt;br /&gt;
# own decision algorithm, overriding the ThinkPad embedded&lt;br /&gt;
# controller. It also implements a workaround for the fan noise pulse&lt;br /&gt;
# experienced every few seconds on some ThinkPads.&lt;br /&gt;
#&lt;br /&gt;
# Run 'tp-fancontrol --help' for options.&lt;br /&gt;
#&lt;br /&gt;
# For optimal fan behavior during suspend and resume, invoke &lt;br /&gt;
# &amp;quot;tp-fancontrol -u&amp;quot; during the suspend process.&lt;br /&gt;
# &lt;br /&gt;
# WARNING: This script relies on undocumented hardware features and&lt;br /&gt;
# overrides nominal hardware behavior. It may thus cause arbitrary&lt;br /&gt;
# damage to your laptop or data. Watch your temperatures!&lt;br /&gt;
#&lt;br /&gt;
# WARNING: The list of temperature ranges used below is much more liberal&lt;br /&gt;
# than the rules used by the embedded controller firmware, and is&lt;br /&gt;
# derived mostly from anecdotal evidence, hunches and wishful thinking.&lt;br /&gt;
# It is also model-specific (see http://thinkwiki.org/wiki/Thermal_sensors).&lt;br /&gt;
&lt;br /&gt;
# Temperature ranges, per sensor:&lt;br /&gt;
# (min temperature: when to step up from 0-th fan level,&lt;br /&gt;
#  max temperature: when to step up to maximum fan level)&lt;br /&gt;
THRESHOLDS=( #  Sensor     ThinkPad model&lt;br /&gt;
             #             R51     T41/2  Z60t   T43-26xx&lt;br /&gt;
# min  max   #  ---------- ------- -----  -----  ---------------------------&lt;br /&gt;
  50   70    #  EC 0x78    CPU     CPU    ?      CPU&lt;br /&gt;
  47   60    #  EC 0x79    miniPCI ?      ?      Between CPU and PCMCIA slot&lt;br /&gt;
  43   55    #  EC 0x7A    HDD     ?      ?      PCMCIA slot&lt;br /&gt;
  49   68    #  EC 0x7B    GPU     GPU    ?      GPU&lt;br /&gt;
  40   50    #  EC 0x7C    BAT     BAT    BAT    Sys BAT (front left of battery)&lt;br /&gt;
  40   50    #  EC 0x7D    n/a     n/a    n/a    UltraBay BAT&lt;br /&gt;
  37   47    #  EC 0x7E    BAT     BAT    BAT    Sys BAT (rear right of battery)&lt;br /&gt;
  37   47    #  EC 0x7F    n/a     n/a    n/a    UltraBay BAT&lt;br /&gt;
&lt;br /&gt;
  45   60    #  EC 0xC0    ?       n/a    ?      Between northbridge and DRAM&lt;br /&gt;
  48   62    #  EC 0xC1    ?       n/a    ?      Southbridge (under miniPCI)&lt;br /&gt;
  50   65    #  EC 0xC2    ?       n/a    ?      Power circuitry (under CDC)&lt;br /&gt;
&lt;br /&gt;
  47   58    #  HDD        -&amp;gt;      -&amp;gt;     -&amp;gt;     Hard disk internal sensor&lt;br /&gt;
  47   60    #  HDAPS      -&amp;gt;      -&amp;gt;     -&amp;gt;     HDAPS readout (same as EC 0x79)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LEVELS=(    0      2      4      7)  # Fan speed levels&lt;br /&gt;
ANTIPULSE=( 0      1      1      0)  # Prevent fan pulsing noise at this level&lt;br /&gt;
                                     # (reduces frequency of fan RPM updates)&lt;br /&gt;
&lt;br /&gt;
OFF_THRESH_DELTA=3 # when gets this much cooler than 'min' above, may turn off fan&lt;br /&gt;
MIN_THRESH_SHIFT=0 # increase min thresholds by this much&lt;br /&gt;
MAX_THRESH_SHIFT=0 # increase max thresholds by this much&lt;br /&gt;
MIN_WAIT=180 # minimum time (seconds) to spend in a given level before stepping down&lt;br /&gt;
&lt;br /&gt;
IBM_ACPI=/proc/acpi/ibm&lt;br /&gt;
HDAPS_TEMP=/sys/bus/platform/drivers/hdaps/hdaps/temp1&lt;br /&gt;
PID_FILE=/var/run/tp-fancontrol.pid&lt;br /&gt;
LOGGER=/usr/bin/logger&lt;br /&gt;
INTERVAL=3        # sample+refresh interval&lt;br /&gt;
SETTLE_TIME=6     # wait this many seconds long before applying anti-pulsing&lt;br /&gt;
RESETTLE_TIME=600 # briefly disable anti-pulsing at every N seconds&lt;br /&gt;
SUSPEND_TIME=5    # seconds to sleep when receiving SIGUSR1&lt;br /&gt;
DISK_POLL_PERIOD=15 # poll period in seconds for disk sensors (it changes slowly and is expensive to read)&lt;br /&gt;
HITACHI_MODELS=&amp;quot;^(HTS4212..H9AT00|HTS726060M9AT00|HTS5410..G9AT00|IC25[NT]0..ATCS0[45]|HTE541040G9AT00|HTS5416..J9(AT|SA)00)&amp;quot;&lt;br /&gt;
SEP=','           # Separator char for display&lt;br /&gt;
&lt;br /&gt;
WATCHDOG_DELAY=$(( 3 * INTERVAL ))&lt;br /&gt;
HAVE_WATCHDOG=`grep -q watchdog $IBM_ACPI/fan &amp;amp;&amp;amp; echo true || echo false`&lt;br /&gt;
HAVE_LEVELCMD=`grep -q disengaged $IBM_ACPI/fan &amp;amp;&amp;amp; echo true || echo false`&lt;br /&gt;
&lt;br /&gt;
QUIET=false&lt;br /&gt;
DRY_RUN=false&lt;br /&gt;
DAEMONIZE=false&lt;br /&gt;
AM_DAEMON=false&lt;br /&gt;
KILL_DAEMON=false&lt;br /&gt;
SUSPEND_DAEMON=false&lt;br /&gt;
SYSLOG=false&lt;br /&gt;
DISK_POLL_TIME=-$DISK_POLL_PERIOD&lt;br /&gt;
&lt;br /&gt;
usage() {&lt;br /&gt;
    echo &amp;quot;&lt;br /&gt;
Usage: $0 [OPTION]...&lt;br /&gt;
&lt;br /&gt;
Available options:&lt;br /&gt;
   -s N   Shift up the min temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler).&lt;br /&gt;
          Max temperature thresholds are not affected.&lt;br /&gt;
   -S N   Shift up the max temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler). DANGEROUS.&lt;br /&gt;
   -t     Test mode&lt;br /&gt;
   -q     Quiet mode&lt;br /&gt;
   -d     Daemon mode, go into background (implies -q)&lt;br /&gt;
   -l     Log to syslog&lt;br /&gt;
   -k     Kill already-running daemon&lt;br /&gt;
   -u     Tell already-running daemon that the system is being suspended&lt;br /&gt;
   -p     Pid file location for daemon mode, default: $PID_FILE&lt;br /&gt;
&amp;quot;&lt;br /&gt;
    exit 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
while getopts 's:S:qtdlp:kuh' OPT; do&lt;br /&gt;
    case &amp;quot;$OPT&amp;quot; in&lt;br /&gt;
        s) # shift thresholds&lt;br /&gt;
            MIN_THRESH_SHIFT=&amp;quot;$OPTARG&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        S) # shift thresholds&lt;br /&gt;
            MAX_THRESH_SHIFT=&amp;quot;$OPTARG&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        t) # test mode&lt;br /&gt;
            DRY_RUN=true&lt;br /&gt;
            ;;&lt;br /&gt;
        q) # quiet mode&lt;br /&gt;
            QUIET=true&lt;br /&gt;
            ;;&lt;br /&gt;
        d) # go into background and daemonize&lt;br /&gt;
            DAEMONIZE=true&lt;br /&gt;
            ;;&lt;br /&gt;
        l) # log to syslog&lt;br /&gt;
            SYSLOG=true&lt;br /&gt;
            ;;&lt;br /&gt;
        p) # different pidfile&lt;br /&gt;
            PID_FILE=&amp;quot;$OPTARG&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        k) # kill daemon&lt;br /&gt;
            KILL_DAEMON=true&lt;br /&gt;
            ;;&lt;br /&gt;
        u) # suspend daemon&lt;br /&gt;
            SUSPEND_DAEMON=true&lt;br /&gt;
            ;;&lt;br /&gt;
        h) # short help&lt;br /&gt;
            usage&lt;br /&gt;
            ;;&lt;br /&gt;
        \?) # error&lt;br /&gt;
            usage&lt;br /&gt;
            ;;&lt;br /&gt;
    esac&lt;br /&gt;
done&lt;br /&gt;
[ $OPTIND -gt $# ] || usage  # no non-option args&lt;br /&gt;
&lt;br /&gt;
# no logger found, no syslog capabilities&lt;br /&gt;
$SYSLOG &amp;amp;&amp;amp; [ ! -x $LOGGER ] &amp;amp;&amp;amp; SYSLOG=false || :&lt;br /&gt;
&lt;br /&gt;
if $DRY_RUN; then&lt;br /&gt;
    echo &amp;quot;$0: Dry run, will not change fan state.&amp;quot;&lt;br /&gt;
    QUIET=false&lt;br /&gt;
    DAEMONIZE=false&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Read the temperature sensor on new Hitachi drivers without spinning up the&lt;br /&gt;
# disk or unloading its head (this cannot be done using standard SMART).&lt;br /&gt;
# Works only with drivers/ide or new libata. Equivalent to hdparm -H in &amp;gt;=6.7.&lt;br /&gt;
read_hitachi_temp() { perl - &amp;quot;$@&amp;quot; &amp;lt;&amp;lt;'EOPERL'    # do it in Perl&lt;br /&gt;
    #!/usr/bin/perl&lt;br /&gt;
    $dev=&amp;quot;$ARGV[0]&amp;quot; or die &amp;quot;No device given.\n&amp;quot;;&lt;br /&gt;
    $HDIO_DRIVE_CMD=0x031f;&lt;br /&gt;
    $args=pack(&amp;quot;cccc&amp;quot;,0xf0,0,0x01,0);   # Sense Condition command&lt;br /&gt;
    open(DEV,&amp;quot;&amp;lt;&amp;quot;,$dev) or die &amp;quot;open(\&amp;quot;$dev\&amp;quot;): $!\n&amp;quot;;&lt;br /&gt;
    if (ioctl(DEV,$HDIO_DRIVE_CMD,$args)) {&lt;br /&gt;
       $nsect=(unpack(&amp;quot;cccc&amp;quot;,$args))[2];&lt;br /&gt;
       if ($nsect==0 || $nsect==0xff) {&lt;br /&gt;
           die &amp;quot;Temperature over/underflow.\n&amp;quot;;&lt;br /&gt;
       } elsif ($nsect==0x01) {  # Linux&amp;lt;=2.6.18 doesn't return ATA registers&lt;br /&gt;
           die &amp;quot;Old Linux kernel, readout not supported.\n&amp;quot;;&lt;br /&gt;
       } else {&lt;br /&gt;
           printf &amp;quot;%d\n&amp;quot;, $nsect/2-20;&lt;br /&gt;
       }&lt;br /&gt;
    } else {&lt;br /&gt;
        die &amp;quot;ioctl(\&amp;quot;$dev\&amp;quot;,HDIO_DRIVE_CMD,SENSE_CONDITION): $!\n&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
EOPERL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
update_disk_temp() {&lt;br /&gt;
    if (( SECONDS &amp;gt;= DISK_POLL_TIME + DISK_POLL_PERIOD )); then&lt;br /&gt;
        LAST_DISK_TEMP=&amp;quot;-128&amp;quot;&lt;br /&gt;
        for DEV in {sda,hda}; do&lt;br /&gt;
            if [[ -b &amp;quot;/dev/$DEV&amp;quot; ]]; then&lt;br /&gt;
                local MODEL=`cat /sys/block/$DEV/device/model`&lt;br /&gt;
                if [[ &amp;quot;$MODEL&amp;quot; =~ &amp;quot;$HITACHI_MODELS&amp;quot; ]]; then&lt;br /&gt;
                    if HTEMP=`read_hitachi_temp &amp;quot;/dev/$DEV&amp;quot; 2&amp;gt;/dev/null`; then&lt;br /&gt;
                        LAST_DISK_TEMP=&amp;quot;$HTEMP&amp;quot;&lt;br /&gt;
                        break&lt;br /&gt;
                    fi&lt;br /&gt;
                fi&lt;br /&gt;
            fi&lt;br /&gt;
        done&lt;br /&gt;
        DISK_POLL_TIME=$SECONDS&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
thermometer() { # output list of temperatures&lt;br /&gt;
    # 8 basic temperatures from ibm-acpi:&lt;br /&gt;
    [[ -r $IBM_ACPI/thermal ]] || { echo &amp;quot;$0: Cannot read $IBM_ACPI/thermal&amp;quot; 2&amp;gt;&amp;amp;1 ; exit 1; }&lt;br /&gt;
    read THERMAL &amp;lt; $IBM_ACPI/thermal&lt;br /&gt;
    read X Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Z1 Z2 Z3 JNK &amp;lt; &amp;lt;(echo &amp;quot;$THERMAL&amp;quot;) &lt;br /&gt;
    [[ &amp;quot;$X&amp;quot; == &amp;quot;temperatures:&amp;quot; ]] || { echo &amp;quot;$0: Bad readout: \&amp;quot;$THERMAL\&amp;quot;&amp;quot; &amp;gt;&amp;amp;2;  exit 1; }&lt;br /&gt;
    echo -n &amp;quot;$Y1 $Y2 $Y3 $Y4 $Y5 $Y6 $Y7 $Y8 &amp;quot;;&lt;br /&gt;
    # 3 extra temperatures from ibm_acpi:&lt;br /&gt;
    if [[ -n &amp;quot;$Z1&amp;quot; &amp;amp;&amp;amp; -n &amp;quot;$Z2&amp;quot; &amp;amp;&amp;amp; -n &amp;quot;$Z3&amp;quot; ]]; then &lt;br /&gt;
        # ibm_acpi provided extra sensors from at EC offsets 0xC0 to 0xC2?&lt;br /&gt;
        echo -n &amp;quot;$SEP $Z1 $Z2 $Z3 &amp;quot;&lt;br /&gt;
    else &lt;br /&gt;
        [ -r $IBM_ACPI/ecdump ] || { echo &amp;quot;$0: Cannot read $IBM_ACPI/ecdump&amp;quot; 2&amp;gt;&amp;amp;1; exit 1; }&lt;br /&gt;
        perl -e 'm/^EC 0xc0: .(..) .(..) .(..) / and print hex($1).&amp;quot; &amp;quot;.hex($2).&amp;quot; &amp;quot;.hex($3).&amp;quot; &amp;quot; and exit 0 while &amp;lt;&amp;gt;; exit 1' &amp;lt; $IBM_ACPI/ecdump&lt;br /&gt;
    fi&lt;br /&gt;
    # 1 Disk drive temperatures:&lt;br /&gt;
    echo -n &amp;quot;$SEP $LAST_DISK_TEMP &amp;quot;&lt;br /&gt;
    # 1 HDAPS temperature (optional):&lt;br /&gt;
    if [ -r $HDAPS_TEMP ]; then&lt;br /&gt;
        Y=&amp;quot;`cat $HDAPS_TEMP`&amp;quot;&lt;br /&gt;
        (( &amp;quot;$Y&amp;quot; &amp;gt; 100 )) || echo -n &amp;quot;$Y &amp;quot;  # the HDAPS readouts are nonsensical right after resume&lt;br /&gt;
    fi&lt;br /&gt;
    return 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
speedometer() { # output fan speed RPM&lt;br /&gt;
    sed -n 's/^speed:[ \t]*//p' $IBM_ACPI/fan&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
setlevel() { # set fan speed level&lt;br /&gt;
    local LEVEL=$1&lt;br /&gt;
    if ! $DRY_RUN; then&lt;br /&gt;
        if $HAVE_LEVELCMD; then&lt;br /&gt;
        	echo &amp;quot;level $LEVEL&amp;quot; &amp;gt; $IBM_ACPI/fan&lt;br /&gt;
	else&lt;br /&gt;
		case &amp;quot;$LEVEL&amp;quot; in&lt;br /&gt;
		(auto)        LEVEL=0x80 ;;&lt;br /&gt;
		(disengaged)  LEVEL=0x40 ;;&lt;br /&gt;
		esac&lt;br /&gt;
        	echo 0x2F $LEVEL &amp;gt; $IBM_ACPI/ecdump&lt;br /&gt;
	fi&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
getlevel() { # get fan speed level&lt;br /&gt;
    perl -e 'm/^EC 0x20: .* .(..)$/ and print $1 and exit 0 while &amp;lt;&amp;gt;; exit 1' &amp;lt; $IBM_ACPI/ecdump&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
log() {&lt;br /&gt;
	$QUIET || echo &amp;quot;&amp;gt; $*&amp;quot;&lt;br /&gt;
	! $SYSLOG || $LOGGER -t &amp;quot;`basename $0`[$$]&amp;quot; &amp;quot;$*&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
cleanup() { # clean up after work&lt;br /&gt;
    $AM_DAEMON &amp;amp;&amp;amp; rm -f &amp;quot;$PID_FILE&amp;quot; 2&amp;gt; /dev/null&lt;br /&gt;
    log &amp;quot;Shutting down, switching to automatic fan control&amp;quot;&lt;br /&gt;
    if ! $DRY_RUN; then&lt;br /&gt;
        if $HAVE_LEVELCMD; then&lt;br /&gt;
            echo enable &amp;gt; $IBM_ACPI/fan&lt;br /&gt;
        else&lt;br /&gt;
            echo 0x2F 0x80 &amp;gt; $IBM_ACPI/ecdump&lt;br /&gt;
        fi&lt;br /&gt;
        if $HAVE_WATCHDOG; then&lt;br /&gt;
            echo watchdog 0 &amp;gt; $IBM_ACPI/fan  # disable watchdog&lt;br /&gt;
        fi&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
floor_div() {&lt;br /&gt;
    echo $(( (($1)+1000*($2))/($2) - 1000 ))&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
set_priority() {&lt;br /&gt;
    ! $DRY_RUN &amp;amp;&amp;amp; renice -10 -p $$&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
init_state() {&lt;br /&gt;
    IDX=0&lt;br /&gt;
    NEW_IDX=0&lt;br /&gt;
    START_TIME=0&lt;br /&gt;
    MAX_IDX=$(( ${#LEVELS[@]} - 1 ))&lt;br /&gt;
    SETTLE_LEFT=0&lt;br /&gt;
    RESETTLE_LEFT=0&lt;br /&gt;
    FIRST=true&lt;br /&gt;
    RESTART=false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
control_fan() {&lt;br /&gt;
    # Enable the fan in default mode if anything goes wrong:&lt;br /&gt;
    set -e -E -u&lt;br /&gt;
    trap &amp;quot;cleanup; exit 2&amp;quot; HUP INT ABRT QUIT SEGV TERM&lt;br /&gt;
    trap &amp;quot;cleanup&amp;quot; EXIT&lt;br /&gt;
    trap &amp;quot;log 'Got SIGUSR1'; setlevel 0; RESTART=true; sleep $SUSPEND_TIME&amp;quot; USR1&lt;br /&gt;
    if ! $DRY_RUN &amp;amp;&amp;amp; $HAVE_WATCHDOG; then&lt;br /&gt;
        log &amp;quot;Activating watchdog with delay $WATCHDOG_DELAY sec&amp;quot;&lt;br /&gt;
        echo &amp;quot;watchdog $WATCHDOG_DELAY&amp;quot; &amp;gt; $IBM_ACPI/fan&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    init_state&lt;br /&gt;
    log &amp;quot;Starting dynamic fan control&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Control loop:&lt;br /&gt;
    while true; do&lt;br /&gt;
        # Get readouts&lt;br /&gt;
        update_disk_temp  # don't do this in a subshell, it's stateful&lt;br /&gt;
        TEMPS=`thermometer`&lt;br /&gt;
        $QUIET || SPEED=`speedometer`&lt;br /&gt;
        $QUIET || ECLEVEL=`getlevel`&lt;br /&gt;
        NOW=`date +%s`&lt;br /&gt;
        if echo &amp;quot;$TEMPS&amp;quot; | grep -q &amp;quot;[^ 0-9$SEP\n-]&amp;quot;; then&lt;br /&gt;
            echo &amp;quot;Invalid character in temperatures: $TEMPS&amp;quot; &amp;gt;&amp;amp;2; exit 1;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        # Calculate new level index by placing temperatures into regions of &amp;quot;Z&amp;quot; values:&lt;br /&gt;
        # Z &amp;gt;= 2*I means &amp;quot;must be at index I or higher&amp;quot;&lt;br /&gt;
        # Z  = 2*I+1 is hysteresis: &amp;quot;don't step down if currently at I+1&amp;quot;&lt;br /&gt;
        # The set of temperatures for each Z value are as follows, denoting d=(MAX-MIN)/(2*(MAX_IDX-1)) :&lt;br /&gt;
        #   Z=0:         {-infty..MIN-OFF_THRESH_DELTA)     Z=1:   {MIN-OFF_THRESH_DELTA..MIN}&lt;br /&gt;
        #   Z=2:         {MIN..MIN+d}         Z=3:   {MIN+d..MIN+2d}&lt;br /&gt;
        #   Z=4:         {MIN+2d..MIN+3d}     Z=5:   {MIN+3d..MIN+4d}   ...&lt;br /&gt;
        #   Z=2*MAX_IDX: {MAX..infty}&lt;br /&gt;
&lt;br /&gt;
        # Enforce minimum time in this level before stepping down:&lt;br /&gt;
        MAX_Z=$(( IDX&amp;gt;0 ? ( NOW&amp;gt;START_TIME+MIN_WAIT ? 2*(IDX-1) : 2*IDX ) : 0 ))&lt;br /&gt;
&lt;br /&gt;
        # Go over all sensors and compute the Z value; compute the maximum Z and a pretty-printed string:&lt;br /&gt;
        SENSOR=0&lt;br /&gt;
        Z_STR=&amp;quot;$MAX_Z+&amp;quot;&lt;br /&gt;
        TEMP_STR=&amp;quot;&amp;quot;;&lt;br /&gt;
        for TEMP in $TEMPS; do&lt;br /&gt;
            if [[ &amp;quot;$TEMP&amp;quot; == &amp;quot;$SEP&amp;quot; ]]; then   # ignore this (a separator for visual aid)&lt;br /&gt;
                Z_STR=&amp;quot;${Z_STR}$SEP&amp;quot;&lt;br /&gt;
                TEMP_STR=&amp;quot;${TEMP_STR}$SEP &amp;quot;&lt;br /&gt;
                continue&lt;br /&gt;
            fi&lt;br /&gt;
            [ $((2*SENSOR+2)) -le ${#THRESHOLDS[@]} ] ||&lt;br /&gt;
                { echo &amp;quot;Too many sensors, not enough values in THRESHOLDS&amp;quot; 2&amp;gt;&amp;amp;1; exit 1; }&lt;br /&gt;
            if [[ $TEMP == -128 || $TEMP == 128 ]]; then&lt;br /&gt;
                Z='_'; TEMP='_' # inactive sensor&lt;br /&gt;
            else&lt;br /&gt;
                MIN=$((THRESHOLDS[SENSOR*2] + MIN_THRESH_SHIFT))&lt;br /&gt;
                MAX=$((THRESHOLDS[SENSOR*2+1] + MAX_THRESH_SHIFT ))&lt;br /&gt;
                [[ $MAX -le $MIN ]] &amp;amp;&amp;amp; \&lt;br /&gt;
                    { echo 'Reversed temperature thresholds (shifted too much?)' 2&amp;gt;&amp;amp;1; exit 1; }&lt;br /&gt;
                if (( TEMP &amp;lt; MIN - OFF_THRESH_DELTA )); then&lt;br /&gt;
                    Z=0&lt;br /&gt;
                else  # compute Z value for this sensor (see above):&lt;br /&gt;
                    Z=$(( `floor_div $(( 2*(TEMP-MIN)*(MAX_IDX-1) )) $((MAX-MIN))` + 2 ))&lt;br /&gt;
                    [ $Z -ge 1 ] || Z=1&lt;br /&gt;
                    [ $Z -le $((2*MAX_IDX)) ] || Z=$((2*MAX_IDX))&lt;br /&gt;
                fi&lt;br /&gt;
                [ $MAX_Z -gt $Z ] || MAX_Z=$Z&lt;br /&gt;
            fi&lt;br /&gt;
            Z_STR=&amp;quot;${Z_STR}${Z}&amp;quot;&lt;br /&gt;
            TEMP_STR=&amp;quot;${TEMP_STR}${TEMP} &amp;quot;&lt;br /&gt;
            (( ++SENSOR ))&lt;br /&gt;
        done&lt;br /&gt;
        [ $SENSOR -gt 0 ] || { echo &amp;quot;No temperatures read&amp;quot; &amp;gt;&amp;amp;2; exit 1; }&lt;br /&gt;
&lt;br /&gt;
        HYS=$(( (MAX_Z == 2*IDX-1) &amp;amp;&amp;amp; ++MAX_Z )) # hysteresis&lt;br /&gt;
        NEW_IDX=$(( MAX_Z/2 ))&lt;br /&gt;
&lt;br /&gt;
        # Interrupted by a signal?&lt;br /&gt;
        if $RESTART; then&lt;br /&gt;
            init_state&lt;br /&gt;
            log &amp;quot;Resetting state&amp;quot;&lt;br /&gt;
            continue&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        # Transition&lt;br /&gt;
        $FIRST &amp;amp;&amp;amp; OLDLEVEL='?' || OLDLEVEL=${LEVELS[$IDX]}&lt;br /&gt;
        NEWLEVEL=${LEVELS[$NEW_IDX]}&lt;br /&gt;
        $QUIET || echo &amp;quot;L=$OLDLEVEL-&amp;gt;$NEWLEVEL EC=$ECLEVEL RPM=`printf %4s $SPEED` T=($TEMP_STR) Z=$Z_STR&amp;quot;&lt;br /&gt;
        if [ &amp;quot;$OLDLEVEL&amp;quot; != &amp;quot;$NEWLEVEL&amp;quot; ]; then&lt;br /&gt;
            START_TIME=$NOW&lt;br /&gt;
            log &amp;quot;Changing fan level: $OLDLEVEL-&amp;gt;$NEWLEVEL  (temps: $TEMP_STR)&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        setlevel $NEWLEVEL&lt;br /&gt;
&lt;br /&gt;
        sleep $INTERVAL&lt;br /&gt;
&lt;br /&gt;
        # If needed, apply anti-pulsing hack after a settle-down period (and occasionally re-settle):&lt;br /&gt;
        if [ ${ANTIPULSE[${NEW_IDX}]} == 1 ]; then &lt;br /&gt;
            if [ $NEWLEVEL != $OLDLEVEL -o $RESETTLE_LEFT -le 0 ]; then # start settling?&lt;br /&gt;
                SETTLE_LEFT=$SETTLE_TIME&lt;br /&gt;
                RESETTLE_LEFT=$RESETTLE_TIME&lt;br /&gt;
            fi&lt;br /&gt;
            if [ $SETTLE_LEFT -ge 0 ]; then&lt;br /&gt;
                SETTLE_LEFT=$((SETTLE_LEFT-INTERVAL))&lt;br /&gt;
            else&lt;br /&gt;
                setlevel disengaged # disengage briefly to fool embedded controller&lt;br /&gt;
                sleep 0.5&lt;br /&gt;
                RESETTLE_LEFT=$((RESETTLE_LEFT-INTERVAL))&lt;br /&gt;
            fi&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        IDX=$NEW_IDX&lt;br /&gt;
        FIRST=false&lt;br /&gt;
    done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if $KILL_DAEMON || $SUSPEND_DAEMON; then &lt;br /&gt;
    if [ -f &amp;quot;$PID_FILE&amp;quot; ]; then&lt;br /&gt;
	set -e&lt;br /&gt;
	DPID=&amp;quot;`cat \&amp;quot;$PID_FILE\&amp;quot;`&amp;quot; &lt;br /&gt;
	if $KILL_DAEMON; then&lt;br /&gt;
        	kill &amp;quot;$DPID&amp;quot;&lt;br /&gt;
		rm &amp;quot;$PID_FILE&amp;quot;&lt;br /&gt;
		$QUIET || echo &amp;quot;Killed process $DPID&amp;quot;&lt;br /&gt;
	else # SUSPEND_DAEMON&lt;br /&gt;
		kill -USR1 &amp;quot;$DPID&amp;quot;&lt;br /&gt;
		$QUIET || echo &amp;quot;Sent SIGUSR1 to $DPID&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
    else&lt;br /&gt;
        $QUIET || echo &amp;quot;Daemon not running.&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
    fi&lt;br /&gt;
elif $DAEMONIZE ; then&lt;br /&gt;
    if [ -e &amp;quot;$PID_FILE&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;$0: File $PID_FILE already exists, refusing to run.&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
    else&lt;br /&gt;
        set_priority&lt;br /&gt;
        AM_DAEMON=true QUIET=true control_fan 0&amp;lt;&amp;amp;- 1&amp;gt;&amp;amp;- 2&amp;gt;&amp;amp;- &amp;amp;&lt;br /&gt;
        echo $! &amp;gt; &amp;quot;$PID_FILE&amp;quot;&lt;br /&gt;
        exit 0&lt;br /&gt;
    fi&lt;br /&gt;
else&lt;br /&gt;
    [ -e &amp;quot;$PID_FILE&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;WARNING: daemon already running&amp;quot;&lt;br /&gt;
    set_priority&lt;br /&gt;
    control_fan&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gervase</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Ubuntu_10.10_(Maverick_Meerkat)_on_a_ThinkPad_X220&amp;diff=51656</id>
		<title>Installing Ubuntu 10.10 (Maverick Meerkat) on a ThinkPad X220</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Ubuntu_10.10_(Maverick_Meerkat)_on_a_ThinkPad_X220&amp;diff=51656"/>
		<updated>2011-05-29T15:15:22Z</updated>

		<summary type="html">&lt;p&gt;Gervase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Many of the special keys won't work out of the box on the {{X220}} because [[thinkpad-acpi]] doesn't load automatically on Ubuntu 10.10. It requires [http://sourceforge.net/mailarchive/forum.php?thread_name=8d66d95c39ba6e68e2acb53ddafabcb3e401635e.1304890969.git.luto%40mit.edu&amp;amp;forum_name=ibm-acpi-devel this patch] which (I think) did make it into 11.04. To get it to load on boot, add &amp;quot;thinkpad_acpi&amp;quot; (using underscore) on its own line to the file /etc/modules.&lt;br /&gt;
&lt;br /&gt;
* Suspend won't work out of the box on the i7 model because the USB3 driver shipped with 10.10 doesn't support suspend, and so blocks it. The fix is to [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/522998 blacklist the driver], but this means your USB3 port won't work. To blacklist, create a file /etc/modprobe.d/blacklist-xhci_hcd.conf containing only the text &amp;quot;blacklist xhci_hcd&amp;quot; (note underscore). Then suspend will work. There may also be a fix which unloads the module before suspend and reloads it after; if you have got this working, update the wiki.&lt;br /&gt;
&lt;br /&gt;
* The Mic hardware mute button doesn't work, and I haven't worked out how to make it do so. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/408903 Seems like this has been a problem since the first Thinkpad came out with one, a couple of years ago]. It produces keycode 248 in xev, so I guess that needs translating into a keysym and then binding to mute. One for the thinkpad_acpi team? The program &amp;quot;amixer&amp;quot; can change microphone levels and the Gnome Keyboard Settings can bind an arbitrary command to a key, so it just takes someone with a little more time than me to write a script and put the pieces together to make the button work (even if not the LED).&lt;br /&gt;
&lt;br /&gt;
* The fan spends more time on than it should; there are various pages around the net commenting on this. It could be a hardware problem; one thread on some forums had an official Lenovo rep saying they are looking into it. (Sorry I can't be more specific.)&lt;br /&gt;
&lt;br /&gt;
* The hardware specs claim dual microphones, but Ubuntu only sees one. I don't know if this is because they are combined at a hardware level. The Windows system can switch between using them for noise cancelling and using them for wider coverage but again, I don't know if that's software or hardware-driven.&lt;br /&gt;
&lt;br /&gt;
* I got X lockups regularly - Xorg.log talked about an EQ infinite loop, with a stack going through evdrv.so. Also, the Sandybridge GPU is blacklisted for 3D, Compiz and desktop effects. The fix for this is more involved. It requires installing an updated X, Compiz and kernel. Fortunately, Ubuntu's PPAs make this much easier. The original instructions I followed are [http://phoronix.com/forums/showthread.php?29110-Intel-s-Linux-Sandy-Bridge-Graphics-Still-Troubling&amp;amp;p=168137#post168137 here] (you can install both PPAs before doing the upgrade/update), but it turns out (after consulting Jools Wills, the author of those instructions and keeper of the PPA) you also need a newer kernel, which I have got from [http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.37-natty/ here]. You need to download the two i386 files and the all file and install them using &amp;quot;sudo dpkg -i&amp;quot;. That all worked for me without a hitch, which was very painless. One reboot, and I could enable desktop effects and my X now appears to be rock solid.&lt;br /&gt;
&lt;br /&gt;
* I have problems with some SD cards, but not others. This needs further investigation. The problem could perhaps be fixed in Natty.&lt;br /&gt;
&lt;br /&gt;
* Speaking of Natty, I haven't upgraded because it couldn't drive my large external monitor. Test with a USB boot before you take the plunge :-)&lt;br /&gt;
&lt;br /&gt;
* If you have fixes for some of this, I'd love to hear - gerv at gerv dot net. -- Gerv&lt;br /&gt;
&lt;br /&gt;
[[Category:Ubuntu 10.10]]&lt;/div&gt;</summary>
		<author><name>Gervase</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Ubuntu_10.10_(Maverick_Meerkat)_on_a_ThinkPad_X220&amp;diff=51652</id>
		<title>Installing Ubuntu 10.10 (Maverick Meerkat) on a ThinkPad X220</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Ubuntu_10.10_(Maverick_Meerkat)_on_a_ThinkPad_X220&amp;diff=51652"/>
		<updated>2011-05-28T09:13:25Z</updated>

		<summary type="html">&lt;p&gt;Gervase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Many of the special keys won't work out of the box on the {{X220}} because [[thinkpad-acpi]] doesn't load automatically on Ubuntu 10.10. It requires [http://sourceforge.net/mailarchive/forum.php?thread_name=8d66d95c39ba6e68e2acb53ddafabcb3e401635e.1304890969.git.luto%40mit.edu&amp;amp;forum_name=ibm-acpi-devel this patch] which (I think) did make it into 11.04. To get it to load on boot, add &amp;quot;thinkpad_acpi&amp;quot; (using underscore) on its own line to the file /etc/modules.&lt;br /&gt;
&lt;br /&gt;
* Suspend won't work out of the box on the i7 model because the USB3 driver shipped with 10.10 doesn't support suspend, and so blocks it. The fix is to [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/522998 blacklist the driver], but this means your USB3 port won't work. To blacklist, create a file /etc/modprobe.d/blacklist-xhci_hcd.conf containing only the text &amp;quot;blacklist xhci_hcd&amp;quot; (note underscore). Then suspend will work. There may also be a fix which unloads the module before suspend and reloads it after; if you have got this working, update the wiki.&lt;br /&gt;
&lt;br /&gt;
* The Mic hardware mute button doesn't work, and I haven't worked out how to make it do so. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/408903 Seems like this has been a problem since the first Thinkpad came out with one, a couple of years ago]. It produces keycode 248 in xev, so I guess that needs translating into a keysym and then binding to mute. One for the thinkpad_acpi team? The program &amp;quot;amixer&amp;quot; can change microphone levels and the Gnome Keyboard Settings can bind an arbitrary command to a key, so it just takes someone with a little more time than me to write a script and put the pieces together to make the button work (even if not the LED).&lt;br /&gt;
&lt;br /&gt;
* The fan spends more time on than it should; there are various pages around the net commenting on this. It could be a hardware problem; one thread on some forums had an official Lenovo rep saying they are looking into it. (Sorry I can't be more specific.)&lt;br /&gt;
&lt;br /&gt;
* The hardware specs claim dual microphones, but Ubuntu only sees one. I don't know if this is because they are combined at a hardware level. The Windows system can switch between using them for noise cancelling and using them for wider coverage but again, I don't know if that's software or hardware-driven.&lt;br /&gt;
&lt;br /&gt;
* I got X lockups regularly - Xorg.log talked about an EQ infinite loop, with a stack going through evdrv.so. Also, the Sandybridge GPU is blacklisted for 3D, Compiz and desktop effects. The fix for this is more involved. It requires installing an updated X, Compiz and kernel. Fortunately, Ubuntu's PPAs make this much easier. The original instructions I followed are [http://phoronix.com/forums/showthread.php?29110-Intel-s-Linux-Sandy-Bridge-Graphics-Still-Troubling&amp;amp;p=168137#post168137 here] (you can install both PPAs before doing the upgrade/update), but it turns out (after consulting Jools Wills, the author of those instructions and keeper of the PPA) you also need a newer kernel, which I have got from [http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.38-natty/ here]. You need to download the two i386 files and the all file and install them using &amp;quot;sudo dpkg -i&amp;quot;. That all worked for me without a hitch, which was very painless. One reboot, and I could enable desktop effects and my X now appears to be rock solid.&lt;br /&gt;
&lt;br /&gt;
* I have problems with some SD cards, but not others. This needs further investigation. The problem could perhaps be fixed in Natty.&lt;br /&gt;
&lt;br /&gt;
* Speaking of Natty, I haven't upgraded because it couldn't drive my large external monitor. Test with a USB boot before you take the plunge :-)&lt;br /&gt;
&lt;br /&gt;
* If you have fixes for some of this, I'd love to hear - gerv at gerv dot net. -- Gerv&lt;br /&gt;
&lt;br /&gt;
[[Category:Ubuntu 10.10]]&lt;/div&gt;</summary>
		<author><name>Gervase</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Ubuntu_10.10_(Maverick_Meerkat)_on_a_ThinkPad_X220&amp;diff=51651</id>
		<title>Installing Ubuntu 10.10 (Maverick Meerkat) on a ThinkPad X220</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Ubuntu_10.10_(Maverick_Meerkat)_on_a_ThinkPad_X220&amp;diff=51651"/>
		<updated>2011-05-28T09:12:26Z</updated>

		<summary type="html">&lt;p&gt;Gervase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Many of the special keys won't work out of the box on the {{X220}} because [[thinkpad-acpi]] doesn't load automatically on Ubuntu 10.10. It requires [http://sourceforge.net/mailarchive/forum.php?thread_name=8d66d95c39ba6e68e2acb53ddafabcb3e401635e.1304890969.git.luto%40mit.edu&amp;amp;forum_name=ibm-acpi-devel this patch] which (I think) did make it into 11.04. To get it to load on boot, add &amp;quot;thinkpad_acpi&amp;quot; (using underscore) on its own line to the file /etc/modules.&lt;br /&gt;
&lt;br /&gt;
* Suspend won't work out of the box on the i7 model because the USB3 driver shipped with 10.10 doesn't support suspend, and so blocks it. The fix is to [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/522998 blacklist the driver], but this means your USB3 port won't work. To blacklist, create a file /etc/modprobe.d/blacklist-xhci_hcd.conf containing only the text &amp;quot;blacklist xhci_hcd&amp;quot; (note underscore). Then suspend will work. There may also be a fix which unloads the module before suspend and reloads it after; if you have got this working, update the wiki.&lt;br /&gt;
&lt;br /&gt;
* The Mic hardware mute button doesn't work, and I haven't worked out how to make it do so. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/408903 Seems like this has been a problem since the first Thinkpad came out with one, a couple of years ago]. It produces keycode 248 in xev, so I guess that needs translating into a keysym and then binding to mute. One for the thinkpad_acpi team? The program &amp;quot;amixer&amp;quot; can change microphone levels and the Gnome Keyboard Settings can bind an arbitrary command to a key, so it just takes someone with a little more time than me to write a script and put the pieces together to make the button work (even if not the LED).&lt;br /&gt;
&lt;br /&gt;
* The fan spends more time on than it should; there are various pages around the net commenting on this. It could be a hardware problem; one thread on some forums had an official Lenovo rep saying they are looking into it. (Sorry I can't be more specific.)&lt;br /&gt;
&lt;br /&gt;
* The hardware specs claim dual microphones, but Ubuntu only sees one. I don't know if this is because they are combined at a hardware level. The Windows system can switch between using them for noise cancelling and using them for wider coverage but again, I don't know if that's software or hardware-driven.&lt;br /&gt;
&lt;br /&gt;
* I got X lockups regularly - Xorg.log talked about an EQ infinite loop, with a stack going through evdrv.so. Also, the Sandybridge GPU is blacklisted for 3D, Compiz and desktop effects. The fix for this is more involved. It requires installing an updated X, Compiz and kernel. Fortunately, Ubuntu's PPAs make this much easier. The original instructions I followed are [http://phoronix.com/forums/showthread.php?29110-Intel-s-Linux-Sandy-Bridge-Graphics-Still-Troubling&amp;amp;p=168137#post168137 here] (you can install both PPAs before doing the upgrade/update), but it turns out (after consulting Jools Wills, the author of those instructions and keeper of the PPA) you also need a newer kernel, which I have got from [http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.38-natty/ here]. You need to download the two i386 files and the all file and install them using &amp;quot;sudo dpkg -i&amp;quot;. That all worked for me without a hitch, which was very painless. One reboot, and I could enable desktop effects and my X now appears to be rock solid.&lt;br /&gt;
&lt;br /&gt;
* If you have fixes for some of this, I'd love to hear - gerv at gerv dot net. -- Gerv&lt;br /&gt;
&lt;br /&gt;
[[Category:Ubuntu 10.10]]&lt;/div&gt;</summary>
		<author><name>Gervase</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Category:X220&amp;diff=51594</id>
		<title>Category:X220</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Category:X220&amp;diff=51594"/>
		<updated>2011-05-19T20:07:03Z</updated>

		<summary type="html">&lt;p&gt;Gervase: /* Ubuntu 10:10 Installation Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
=== ThinkPad X220 ===&lt;br /&gt;
This page gives an overview of all ThinkPad X220 related topics.&lt;br /&gt;
&lt;br /&gt;
==== Machine Type ====&lt;br /&gt;
* 4287, 4290, 4291&lt;br /&gt;
&lt;br /&gt;
==== Standard Features ====&lt;br /&gt;
*One of the following [[Intel Core i5]] or [[Intel Core i7]] processors:&lt;br /&gt;
** Intel® Core™ i3-2310M (2.1GHz, 3MB L3 cache)&lt;br /&gt;
** Intel® Core™ i5-2410M (2.3GHz, 3MB L3 cache)&lt;br /&gt;
** Intel® Core™ i5-2520M (2.5GHz, 3MB L3 cache)&lt;br /&gt;
** Intel® Core™ i5-2540M (2.5GHz, 3MB L3 cache)&lt;br /&gt;
** Intel® Core™ i7-2620M (2.7GHz, 4MB L3 cache)&lt;br /&gt;
* [[Intel HD Graphics]] 3000&lt;br /&gt;
* [[Intel Mobile QM67 Express Chipset]]&lt;br /&gt;
* One of the following [[TFT display|TFT displays]]:&lt;br /&gt;
** 12.5&amp;quot; TFT display with 1366x768 resolution with LED backlight&lt;br /&gt;
** 12.5&amp;quot; extra bright IPS TFT display with 1366x768 resolution with LED backlight&lt;br /&gt;
* up to 8GB [[PC3-10600]] memory&lt;br /&gt;
* One of the following hard drives (the bay is 2.5&amp;quot; but probably max. 7mm high):&lt;br /&gt;
** 4GB SSD SATA&lt;br /&gt;
** Intel 80GB Micro SSD SATA&lt;br /&gt;
** 128GB SSD SATA&lt;br /&gt;
** Intel 160GB SSD SATA&lt;br /&gt;
** 160GB 7200RPM SATA&lt;br /&gt;
** 250GB 5400RPM SATA&lt;br /&gt;
** 250GB 7200RPM SATA (with limited OPAL FDE technology)&lt;br /&gt;
** 320GB 5400RPM SATA&lt;br /&gt;
* [[3-in-1 Multicard Reader]] (SD, SDHC, SDXC)&lt;br /&gt;
* [[MiniPCI Express slot]] 1 with one of the following:&lt;br /&gt;
** [[Intel Centrino Ultimate-N 6300]]&lt;br /&gt;
** [[Intel Centrino Advanced-N 6205]]&lt;br /&gt;
** [[Intel Centrino Advanced-N + WiMAX 6250]]&lt;br /&gt;
* [[MiniPCI Express slot]] 2 with one of the following:&lt;br /&gt;
** [[Qualcomm Gobi 3000]] WWAN&lt;br /&gt;
** [[LeadCore TD-SCDMA (LC5730D)]] WWAN&lt;br /&gt;
** [[Ericsson HSPA + (F5521gw)]] WWAN&lt;br /&gt;
** [[Huawei EV-DO (EM660)]] WWAN&lt;br /&gt;
* [[ExpressCard 34/54 slot|ExpressCard/54 slot]]&lt;br /&gt;
* [[USB 3.0]] on i7 model only&lt;br /&gt;
* 720p HD [[Integrated camera]]&lt;br /&gt;
* [[Integrated Fingerprint Reader]] (UPEK)&lt;br /&gt;
* comes with 65W AC Adapter&lt;br /&gt;
* supports [[ThinkPad Ultrabase Series 3]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
[[Image:ThinkPadX220.png|ThinkPad X220|300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Resources ====&lt;br /&gt;
* [http://shop.lenovo.com/ISS_Static/ww/wci/us/ww/pdf/x220_datasheet.pdf Datasheet]&lt;br /&gt;
&lt;br /&gt;
==== Ubuntu 10:10 Installation Notes ====&lt;br /&gt;
&lt;br /&gt;
* Many of the special keys won't work out of the box, because [[thinkpad-acpi]] doesn't load automatically on Ubuntu 10.10. It requires [http://sourceforge.net/mailarchive/forum.php?thread_name=8d66d95c39ba6e68e2acb53ddafabcb3e401635e.1304890969.git.luto%40mit.edu&amp;amp;forum_name=ibm-acpi-devel this patch] which (I think) did make it into 11.04. To get it to load on boot, add &amp;quot;thinkpad_acpi&amp;quot; (using underscore) on its own line to the file /etc/modules.&lt;br /&gt;
&lt;br /&gt;
* Suspend won't work out of the box on the i7 model because the USB3 driver shipped with 10.10 doesn't support suspend, and so blocks it. The fix is to [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/522998 blacklist the driver], but this means your USB3 port won't work. To blacklist, create a file /etc/modprobe.d/blacklist-xhci_hcd.conf containing only the text &amp;quot;blacklist xhci_hcd&amp;quot; (note underscore). Then suspend will work. There may also be a fix which unloads the module before suspend and reloads it after; if you have got this working, update the wiki.&lt;br /&gt;
&lt;br /&gt;
* The Mic hardware mute button doesn't work, and I haven't worked out how to make it do so. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/408903 Seems like this has been a problem since the first Thinkpad came out with one, a couple of years ago]. It produces keycode 248 in xev, so I guess that needs translating into a keysym and then binding to mute. One for the thinkpad_acpi team? The program &amp;quot;amixer&amp;quot; can change microphone levels and the Gnome Keyboard Settings can bind an arbitrary command to a key, so it just takes someone with a little more time than me to write a script and put the pieces together to make the button work (even if not the LED).&lt;br /&gt;
&lt;br /&gt;
* The fan spends more time on than it should; there are various pages around the net commenting on this. It could be a hardware problem; one thread on some forums had an official Lenovo rep saying they are looking into it. (Sorry I can't be more specific.)&lt;br /&gt;
&lt;br /&gt;
* The hardware specs claim dual microphones, but Ubuntu only sees one. I don't know if this is because they are combined at a hardware level. The Windows system can switch between using them for noise cancelling and using them for wider coverage but again, I don't know if that's software or hardware-driven.&lt;br /&gt;
&lt;br /&gt;
* If you have fixes for some of this, I'd love to hear - gerv at gerv dot net. -- Gerv&lt;br /&gt;
&lt;br /&gt;
[[Category:X Series]]&lt;/div&gt;</summary>
		<author><name>Gervase</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Category:X220&amp;diff=51593</id>
		<title>Category:X220</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Category:X220&amp;diff=51593"/>
		<updated>2011-05-19T19:29:22Z</updated>

		<summary type="html">&lt;p&gt;Gervase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
=== ThinkPad X220 ===&lt;br /&gt;
This page gives an overview of all ThinkPad X220 related topics.&lt;br /&gt;
&lt;br /&gt;
==== Machine Type ====&lt;br /&gt;
* 4287, 4290, 4291&lt;br /&gt;
&lt;br /&gt;
==== Standard Features ====&lt;br /&gt;
*One of the following [[Intel Core i5]] or [[Intel Core i7]] processors:&lt;br /&gt;
** Intel® Core™ i3-2310M (2.1GHz, 3MB L3 cache)&lt;br /&gt;
** Intel® Core™ i5-2410M (2.3GHz, 3MB L3 cache)&lt;br /&gt;
** Intel® Core™ i5-2520M (2.5GHz, 3MB L3 cache)&lt;br /&gt;
** Intel® Core™ i5-2540M (2.5GHz, 3MB L3 cache)&lt;br /&gt;
** Intel® Core™ i7-2620M (2.7GHz, 4MB L3 cache)&lt;br /&gt;
* [[Intel HD Graphics]] 3000&lt;br /&gt;
* [[Intel Mobile QM67 Express Chipset]]&lt;br /&gt;
* One of the following [[TFT display|TFT displays]]:&lt;br /&gt;
** 12.5&amp;quot; TFT display with 1366x768 resolution with LED backlight&lt;br /&gt;
** 12.5&amp;quot; extra bright IPS TFT display with 1366x768 resolution with LED backlight&lt;br /&gt;
* up to 8GB [[PC3-10600]] memory&lt;br /&gt;
* One of the following hard drives (the bay is 2.5&amp;quot; but probably max. 7mm high):&lt;br /&gt;
** 4GB SSD SATA&lt;br /&gt;
** Intel 80GB Micro SSD SATA&lt;br /&gt;
** 128GB SSD SATA&lt;br /&gt;
** Intel 160GB SSD SATA&lt;br /&gt;
** 160GB 7200RPM SATA&lt;br /&gt;
** 250GB 5400RPM SATA&lt;br /&gt;
** 250GB 7200RPM SATA (with limited OPAL FDE technology)&lt;br /&gt;
** 320GB 5400RPM SATA&lt;br /&gt;
* [[3-in-1 Multicard Reader]] (SD, SDHC, SDXC)&lt;br /&gt;
* [[MiniPCI Express slot]] 1 with one of the following:&lt;br /&gt;
** [[Intel Centrino Ultimate-N 6300]]&lt;br /&gt;
** [[Intel Centrino Advanced-N 6205]]&lt;br /&gt;
** [[Intel Centrino Advanced-N + WiMAX 6250]]&lt;br /&gt;
* [[MiniPCI Express slot]] 2 with one of the following:&lt;br /&gt;
** [[Qualcomm Gobi 3000]] WWAN&lt;br /&gt;
** [[LeadCore TD-SCDMA (LC5730D)]] WWAN&lt;br /&gt;
** [[Ericsson HSPA + (F5521gw)]] WWAN&lt;br /&gt;
** [[Huawei EV-DO (EM660)]] WWAN&lt;br /&gt;
* [[ExpressCard 34/54 slot|ExpressCard/54 slot]]&lt;br /&gt;
* [[USB 3.0]] on i7 model only&lt;br /&gt;
* 720p HD [[Integrated camera]]&lt;br /&gt;
* [[Integrated Fingerprint Reader]] (UPEK)&lt;br /&gt;
* comes with 65W AC Adapter&lt;br /&gt;
* supports [[ThinkPad Ultrabase Series 3]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
[[Image:ThinkPadX220.png|ThinkPad X220|300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Resources ====&lt;br /&gt;
* [http://shop.lenovo.com/ISS_Static/ww/wci/us/ww/pdf/x220_datasheet.pdf Datasheet]&lt;br /&gt;
&lt;br /&gt;
==== Ubuntu 10:10 Installation Notes ====&lt;br /&gt;
&lt;br /&gt;
* Many of the special keys won't work out of the box, because [[thinkpad-acpi]] doesn't load automatically on Ubuntu 10.10. It requires [http://sourceforge.net/mailarchive/forum.php?thread_name=8d66d95c39ba6e68e2acb53ddafabcb3e401635e.1304890969.git.luto%40mit.edu&amp;amp;forum_name=ibm-acpi-devel this patch] which (I think) did make it into 11.04. To get it to load on boot, add &amp;quot;thinkpad_acpi&amp;quot; (using underscore) on its own line to the file /etc/modules.&lt;br /&gt;
&lt;br /&gt;
* Suspend won't work out of the box on the i7 model because the USB3 driver shipped with 10.10 doesn't support suspend, and so blocks it. The fix is to [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/522998 blacklist the driver], but this means your USB3 port won't work. To blacklist, create a file /etc/modprobe.d/blacklist-xhci_hcd.conf containing only the text &amp;quot;blacklist xhci_hcd&amp;quot; (note underscore). Then suspend will work. There may also be a fix which unloads the module before suspend and reloads it after; if you have got this working, update the wiki.&lt;br /&gt;
&lt;br /&gt;
* The Mic hardware mute button doesn't work, and I haven't worked out how to make it do so. It produces keycode 248 in xev, so I guess that needs translating into a keysym and then binding to mute. One for the thinkpad_acpi team?&lt;br /&gt;
&lt;br /&gt;
* The fan spends more time on than it should; there are various pages around the net commenting on this. It could be a hardware problem; one thread on some forums had an official Lenovo rep saying they are looking into it. (Sorry I can't be more specific.)&lt;br /&gt;
&lt;br /&gt;
* The hardware specs claim dual microphones, but Ubuntu only sees one. I don't know if this is because they are combined at a hardware level. The Windows system can switch between using them for noise cancelling and using them for wider coverage but again, I don't know if that's software or hardware-driven.&lt;br /&gt;
&lt;br /&gt;
* If you have fixes for some of this, I'd love to hear - gerv at gerv dot net. -- Gerv&lt;br /&gt;
&lt;br /&gt;
[[Category:X Series]]&lt;/div&gt;</summary>
		<author><name>Gervase</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Intel_HD_Graphics&amp;diff=51592</id>
		<title>Intel HD Graphics</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Intel_HD_Graphics&amp;diff=51592"/>
		<updated>2011-05-19T19:17:56Z</updated>

		<summary type="html">&lt;p&gt;Gervase: /* Linux support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''Intel HD Graphics''' (sometimes also called GMA HD) is the Graphics Memory Accelerator (GMA) integrated in the [[Intel Core i3]], [[Intel Core i5]] and selected [[Intel Core i7]] processors.&lt;br /&gt;
== Features ==&lt;br /&gt;
* Chipset:  Arrandale (GMCH Ironlake)&lt;br /&gt;
* PCI ID: 8086:0046&lt;br /&gt;
* PCI-E&lt;br /&gt;
{{NOTE|While almost all new ThinkPads have integrated '''Intel HD Graphics''', on those ThinkPads with a ''Descrete'' NVIDIA GPU, the Intel GPU is disabled and cannot be enabled. There is no support for ''Switchable Graphics''.}}&lt;br /&gt;
{{NOTE|Contrary to the statement above, you can select the GPU in the BIOS of recent models with Nvidia Optimus, e.g. the T510 4384GEG. Windows seems to be able to switch between the GPUs, too. }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Linux support ==&lt;br /&gt;
A very recent Linux distribution with kernel 2.6.33 and Intel Xorg driver 2.11 or newer is recommended.&lt;br /&gt;
&lt;br /&gt;
Note that XVideo (Xv) playback at certain frame sizes does not work properly unless you have at least version 2.12 of the Intel Xorg driver.&lt;br /&gt;
&lt;br /&gt;
Desktop Effects do not work in Ubuntu 10.10 (at least, on an X220).&lt;br /&gt;
&lt;br /&gt;
== Models featuring this Technology  ==&lt;br /&gt;
* ThinkPad {{Edge 11&amp;quot;}}, {{Edge 14&amp;quot;}}, {{Edge 15&amp;quot;}}&lt;br /&gt;
* ThinkPad {{L412}}, {{L512}}&lt;br /&gt;
* ThinkPad {{T410}}, {{T410i}}, {{T410s}}, {{T410si}}, {{T510}}, {{T510i}}&lt;br /&gt;
* ThinkPad {{X201}}, {{X201i}}, {{X201s}}, {{X201 Tablet}}, {{X220}}&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* http://software.intel.com/en-us/articles/quick-reference-guide-to-intel-integrated-graphics/&lt;br /&gt;
* http://intellinuxgraphics.org/&lt;/div&gt;</summary>
		<author><name>Gervase</name></author>
		
	</entry>
</feed>