https://www.thinkwiki.org/w/api.php?action=feedcontributions&user=Owenh&feedformat=atomThinkWiki - User contributions [en]2024-03-29T01:52:45ZUser contributionsMediaWiki 1.31.12https://www.thinkwiki.org/w/index.php?title=Switching_keycaps_to_DVORAK&diff=49919Switching keycaps to DVORAK2010-11-02T04:26:20Z<p>Owenh: Initial</p>
<hr />
<div>T61 8897-CTO keyboard undergoing switch to the Dvorak layout.<br />
[[File:T61-8897_keyboard_1.jpg|thumb]]<br />
[[File:T61-8897_keyboard_2.jpg|thumb]]<br />
[[File:T61-8897_keyboard_3.jpg|thumb]]<br />
[[File:T61-8897_keyboard_4.jpg|thumb]]<br />
[[File:T61-8897_keyboard_5.jpg|thumb]]<br />
<br />
6 keycaps needed to be relabeled because of the trackstick. More pictures later when time permits.<br />
<br />
[[Category:T61]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=File:T61-8897_keyboard_5.jpg&diff=49918File:T61-8897 keyboard 5.jpg2010-11-02T04:18:33Z<p>Owenh: Picture of T61 keyboard keys (under keycaps) for purpose of switch to Dvorak layout.</p>
<hr />
<div>Picture of T61 keyboard keys (under keycaps) for purpose of switch to Dvorak layout.</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=File:T61-8897_keyboard_4.jpg&diff=49917File:T61-8897 keyboard 4.jpg2010-11-02T04:17:54Z<p>Owenh: Picture of T61 keyboard keys (under keycaps) for purpose of switch to Dvorak layout.</p>
<hr />
<div>Picture of T61 keyboard keys (under keycaps) for purpose of switch to Dvorak layout.</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=File:T61-8897_keyboard_2.jpg&diff=49916File:T61-8897 keyboard 2.jpg2010-11-02T04:16:46Z<p>Owenh: Picture of T61 keyboard keys (under keycaps) for purpose of switch to Dvorak layout.</p>
<hr />
<div>Picture of T61 keyboard keys (under keycaps) for purpose of switch to Dvorak layout.</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=File:T61-8897_keyboard_3.jpg&diff=49915File:T61-8897 keyboard 3.jpg2010-11-02T04:16:29Z<p>Owenh: Picture of T61 keyboard keys (under keycaps) for purpose of switch to Dvorak layout.</p>
<hr />
<div>Picture of T61 keyboard keys (under keycaps) for purpose of switch to Dvorak layout.</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=File:T61-8897_keyboard_1.jpg&diff=49914File:T61-8897 keyboard 1.jpg2010-11-02T04:14:00Z<p>Owenh: Picture of T61 keyboard keys (under keycaps) for purpose of switch to Dvorak layout.</p>
<hr />
<div>Picture of T61 keyboard keys (under keycaps) for purpose of switch to Dvorak layout.</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Memory&diff=45332Memory2010-01-07T14:43:15Z<p>Owenh: Add 'see also' link for unofficial maximum memory</p>
<hr />
<div>=General information=<br />
A variety of memory (RAM) types have been used.<br />
<br />
IBM provides [http://www-306.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-53166 instructions] for memory removal and installation.<br />
<br />
For more information on RAM, have a look at the [[:WikiPedia:Random access memory|WikiPedia RAM article]].<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="width:100%;vertical-align:top;"<br />
|- style="vertical-align:top;"<br />
| style="vertical-align:top;width:50%;padding-right:20px;" |<br />
==DRAM==<br />
* IC DRAM Card Non-Parity<br />
* IC DRAM Card Parity<br />
'''JEDEC 72-pin SO-DIMM'''<br />
* 70ns Non-Parity<br />
* 70ns Parity<br />
'''JEDEC 144-pin EDO SO-DIMM'''<br />
* [[EDO 70ns]]<br />
* [[EDO 60ns]]<br />
| style="padding-left:10px;white-space:nowrap;" |<br />
==SDRAM==<br />
* [[PC-66]]<br />
* [[PC-100]]<br />
* [[PC-133]]<br />
|- style="vertical-align:top;"<br />
| style="padding-right:10px;white-space:nowrap;" |<br />
==DDR==<br />
* [[PC2100]]<br />
* [[PC2700]]<br />
| style="padding-left:10px;white-space:nowrap;" |<br />
==DDR2==<br />
* [[PC2-4200]]<br />
* [[PC2-5300]]<br />
|- style="vertical-align:top;"<br />
| style="padding-right:10px;white-space:nowrap;" |<br />
==DDR3==<br />
* [[PC3-8500]]<br />
| style="padding-left:10px;white-space:nowrap;" |<br />
|}<br />
<br />
=See also=<br />
[[Unofficial_maximum_memory_specs]]<br />
<br />
[[Category:Components]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Thinkpad-acpi&diff=40251Thinkpad-acpi2008-12-15T17:54:00Z<p>Owenh: /* Development */ grammar fix</p>
<hr />
<div>==Thinkpad-specific ACPI driver==<br />
This is a Linux ACPI driver for the IBM ThinkPad laptops written by Borislav Deianov and Henrique de Moraes Holschuh. The driver replaces [[ibm-acpi]] in Linux mainline as of 2.6.22 (March 2007). To confuse matters further, it appears that there was also an older (now abandoned) driver of the same name written by Erik Rigtorp which never made it into the mainline kernel. The current thinkpad-acpi contains essentially the same functionality as [[ibm-acpi]] with some added features. Among which are registering of acpi events to the "thinkvantage" and volume/mute buttons which could previously only be accessed through the use of the [[tpb]] utility.<br />
<br />
==Hotkeys==<br />
To view which hotkeys are active you can use "acpi_listen", but that is deprecated. A better way is to use "lsinput" and "input-events" commands to look at the output of the thinkpad-acpi input device(s).<br />
<br />
One important difference from ibm-acpi for those who wish to enable all possible hot keys, is that thinkpad-acpi automatically enables them. One should not need to do anything to get the best possible thinkpad-acpi configuration for his ThinkPad (as long as he is using the latest thinkpad-acpi).<br />
<br />
In particular, old documentation that tells you to "echo enable,0xffffffff >/proc/acpi/ibm/hotkey", or to give thinkpad-acpi any hotkey= module parameters to enable hot keys by default, is likely incorrect.<br />
<br />
The thinkpad-acpi driver has detailed documentation, which is shipped inside the Linux kernel sources, as "Documentation/thinkpad-acpi.txt" or as "Documentation/laptops/thinkpad-acpi.txt". If you feel a need to change the hot key mask manually, it is probably best to look at that documentation first to understand the full side effects of any changes.<br />
<br />
==Development==<br />
To help with development and maintenance of the thinkpad-acpi driver, please add your model to the [[List of DMI IDs]].<br />
<br />
==Further documentation==<br />
More comprehensive documentation can be found in the kernel source tree under <tt>Documentation/thinkpad-acpi.txt</tt> or <tt>Documentation/laptops/thinkpad-acpi.txt</tt>.<br />
<br />
For now, please refer to the [[ibm-acpi]] page, or ask on the linux-thinkpad mailinglist for any other information on the new thinkpad-acpi driver.<br />
<br />
=== External links related to thinkpad-acpi ===<br />
* [http://ibm-acpi.sf.net ibm-acpi/thinkpad-acpi main page in Sourceforge]<br />
* [http://acpi.sourceforge.net Linux ACPI main page in Sourceforge], includes DSDT repository<br />
* [http://www.kernel.org kernel.org main archives]<br />
* [http://repo.or.cz/w/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git thinkpad-acpi development git tree]<br />
<br />
[[Category:Drivers]]<br />
[[Category:X61]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Thinkpad-acpi&diff=40250Thinkpad-acpi2008-12-15T17:53:11Z<p>Owenh: Added DMI ID database update suggestion</p>
<hr />
<div>==Thinkpad-specific ACPI driver==<br />
This is a Linux ACPI driver for the IBM ThinkPad laptops written by Borislav Deianov and Henrique de Moraes Holschuh. The driver replaces [[ibm-acpi]] in Linux mainline as of 2.6.22 (March 2007). To confuse matters further, it appears that there was also an older (now abandoned) driver of the same name written by Erik Rigtorp which never made it into the mainline kernel. The current thinkpad-acpi contains essentially the same functionality as [[ibm-acpi]] with some added features. Among which are registering of acpi events to the "thinkvantage" and volume/mute buttons which could previously only be accessed through the use of the [[tpb]] utility.<br />
<br />
==Hotkeys==<br />
To view which hotkeys are active you can use "acpi_listen", but that is deprecated. A better way is to use "lsinput" and "input-events" commands to look at the output of the thinkpad-acpi input device(s).<br />
<br />
One important difference from ibm-acpi for those who wish to enable all possible hot keys, is that thinkpad-acpi automatically enables them. One should not need to do anything to get the best possible thinkpad-acpi configuration for his ThinkPad (as long as he is using the latest thinkpad-acpi).<br />
<br />
In particular, old documentation that tells you to "echo enable,0xffffffff >/proc/acpi/ibm/hotkey", or to give thinkpad-acpi any hotkey= module parameters to enable hot keys by default, is likely incorrect.<br />
<br />
The thinkpad-acpi driver has detailed documentation, which is shipped inside the Linux kernel sources, as "Documentation/thinkpad-acpi.txt" or as "Documentation/laptops/thinkpad-acpi.txt". If you feel a need to change the hot key mask manually, it is probably best to look at that documentation first to understand the full side effects of any changes.<br />
<br />
==Development==<br />
To help with development and maintenance of the thinkpad-acpi driver, please add your model to the [[List of DMI IDs]] database.<br />
<br />
==Further documentation==<br />
More comprehensive documentation can be found in the kernel source tree under <tt>Documentation/thinkpad-acpi.txt</tt> or <tt>Documentation/laptops/thinkpad-acpi.txt</tt>.<br />
<br />
For now, please refer to the [[ibm-acpi]] page, or ask on the linux-thinkpad mailinglist for any other information on the new thinkpad-acpi driver.<br />
<br />
=== External links related to thinkpad-acpi ===<br />
* [http://ibm-acpi.sf.net ibm-acpi/thinkpad-acpi main page in Sourceforge]<br />
* [http://acpi.sourceforge.net Linux ACPI main page in Sourceforge], includes DSDT repository<br />
* [http://www.kernel.org kernel.org main archives]<br />
* [http://repo.or.cz/w/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git thinkpad-acpi development git tree]<br />
<br />
[[Category:Drivers]]<br />
[[Category:X61]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=BIOS_Upgrade&diff=40249BIOS Upgrade2008-12-15T17:48:01Z<p>Owenh: Added 2 DMI ID database update suggestions (before/after)</p>
<hr />
<div>__TOC__<br />
<br />
This page is meant to describe ways to update the BIOS on a ThinkPad that only runs Linux for users that don't have ready access to Windows. If you have Windows on your ThinkPad you can just boot into it and follow instructions on the IBM website.<br />
<br />
{{NOTE| In one case ([[APM setup on a type 2379 ThinkPad T40]]) it was not possible to upgrade the BIOS from Windows XP; a downgrade to Windows 98 was required to successfully run the BIOS upgrade app. The symptoms in this case were that, once the files had been extracted to the hard disk, and the machine was to reboot into the upgrade app, it would beep and hang just before reboot, requiring a power cycle. Once the power was cycled, it would simply reboot back into XP without performing any BIOS upgrade actions. So even if you have Windows, you may still need to use the info on this page.}}<br />
<br />
----<br />
==Before You Begin==<br />
Updating the BIOS in Linux (with few exceptions) '''is not officially supported''' by IBM/Lenovo. However there are work arounds.<br />
<br />
{{WARN|By following any of the instructions here you are accepting the '''very real risk''' of turning your thinkpad into a big expensive paper weight, as a firmware update gone wrong can create unfixable problems.<br />
<br />
'''Proceed at your own risk!'''<br />
<br />
It is also important to understand that Thinkpads from IBM have two separate firmwares: the BIOS, and the Embedded Controller program. A given BIOS version will require a certain version of the Embedded Controller program.<br />
<br />
The IBM documentation is sometimes unclear about the order in which these two firmwares should be updated. On most, but not all Thinkpads, '''the correct update order is Embedded Controller program first, and then the BIOS'''. Make sure to do the two updates immediately one after the other. Newer models from Lenovo update both the Embedded Controller program and the BIOS at the same time, so you don't have to worry about it.}}<br />
<br />
===DMI IDs===<br />
Please consider updating the [[List of DMI IDs]] before (and after) updating your BIOS.<br />
<br />
==BIOS Upgrade Paths==<br />
<br />
For every firmware (either BIOS or Embedded Controller program) update on the IBM web site there used to be two different firmware update programs provided. The Diskette Updater and the Non Diskette Updater. For newer Lenovo Models the Diskette Updater is replaced with a bootable CD-Image and the Non Diskette Updater is renamed BIOS Update Utility, both of which update the BIOS and the Embedded Controller program at the same time. A list of links to firmware downloads can be found at [[BIOS Upgrade Downloads]] for nearly all Thinkpad Models.<br />
<br />
===The Diskette Updater===<br />
<br />
The Diskette updater appears to be a 16 bit DOS program which asks you to accept a license agreement. It will run in Windows, DOS, OS/2, or [http://dosemu.sf.net Dosemu] perfectly, but requires a real floppy disk attached via a real floppy controller. A USB Floppy Drive will not work.<br />
<br />
===The Bootable CD Image===<br />
<br />
Newer models from Lenovo can be updated using the Bootable CD Image. This should be the easiest way for non-Windows users and also maybe a more secure way for Windows users, as well. As the image is provided as a plain ISO-file without any Windows enclosure, you can simply burn it to a CD-R/RW with any modern operating system, as long as you have a CD/DVD-RW Drive and are then able to boot from it.<br />
<br />
===Extracting a Bootable CD-ROM Image from the Non Diskette Updater===<br />
{{WARN|Though this process was successfully tested on one version of .exe files found on IBMs website this doesn't mean it will work for all of them. Proceed at your own risk. Consult the list at the bottom of this page to see other users' experience with your model Thinkpad.}}<br />
<br />
This installer appears to be a 32bit windows .exe which is designed for updating the BIOS directly from a running Windows OS. It turns out that this .exe is really a wrapper license program around Windows .cab files (see [[How_to_change_the_BIOS_bootsplash_screen|BIOS-Bootsplash]]). If you install the Linux program [http://freshmeat.net/projects/cabextract/ '''cabextract'''] you can expand these .cab files directly. Run the following:<br />
<br />
:{{cmduser|cabextract FILENAME.exe}}<br />
<br />
This will extract 8 files in the current directory. One of them will be FILENAME.img. In this discussion, "FILENAME" represents the name of the Non Diskette file that you downloaded, such as "1NHJ04US".<br />
<br />
The non Diskette download was not extractable for at least the version 3.23 (T41p), but the diskette version worked perfectly - cabextract delivered a .img file to continue here...<br />
<br />
You can test that this is really a floppy image by running:<br />
<br />
:{{cmdroot|mkdir mntfloppy}}<br />
:{{cmdroot|mount -o loop FILENAME.img mntfloppy}}<br />
:{{cmdroot|ls -la mntfloppy}}<br />
<br />
If the results of {{cmdroot|ls -la mntfloppy}} look like a dos floppy, and no read errors were displayed, you have a pretty good chance that the floppy image is usable.<br />
<br />
Unmount the image after you are done:<br />
<br />
:{{cmdroot|umount mntfloppy}}<br />
<br />
Now, you can proceed to [[BIOS_Upgrade:Creating a Bootable CD from a Floppy Image]], below.<br />
<br />
== Updating Thinkpad X Series ==<br />
<br />
The special update instructions for X series Thinkpads are quite long. You can find them at the page [[BIOS_Upgrade/X_Series]].<br />
<br />
==Updating via CD/DVD Drive==<br />
<br />
The whole thing gets more complicated if you neither have Windows nor a floppy drive installed. This is what this page is intended to describe.<br />
<br />
Another possibility which works even without a CD-drive or network is to boot the disk image via the grub initrd mechanism.<br />
<br />
Be aware that IBM officially does '''not''' support this! The official statement to my support request was:<br />
<br />
<blockquote style="background: white; border: 1px solid black; padding: 1em;"><br />
<pre><nowiki><br />
I'm afraid we only support the options listed on our web page and no you<br />
can't burn a CD/DVD, however you can try to use an external USB FDD<br />
(floppy) drive. The experts recommend a IBM USB FDD, however they have also<br />
tested it with a Sony USB FDD drive.<br />
<br />
In order to make sure the drive is recognised you can boot up the FDD with<br />
a bootable dos diskette for w98<br />
</nowiki></pre><br />
</blockquote><br />
<br />
But it seems to be possible as Mathias Dalheimer describes this [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/1998-January/009743.html here].<br />
<br />
Another indication that it should work is that IBM uses PHLASH16.EXE (at least on T4x/p systems) to flash the BIOS into the chip. The same tool is used by [http://www.samsungpc.com/gb/support/p35/bios/bios-instructions.html other vendors] to flash the BIOS from bootable CD-ROMs.<br />
{{WARN|Do '''not''' use the [http://syslinux.zytor.com/ SYSLINUX] image-loader [http://syslinux.zytor.com/memdisk.php MEMDISK] to boot the images! Some flash tools crash in that situation!}}<br />
<br />
Some interesting but very technical information about the used flash tool can be found [http://www.paul.sladen.org/thinkpad-r31/wifi-card-pci-ids.html here].<br />
<br />
===Creating a Floppy Image===<br />
If you have created a boot floppy on another machine, you need to create an image file of that floppy. This can be easily done in linux by running a command line:<br />
<br />
:{{cmdroot|1=dd bs=2x80x18b if=/dev/fd0 of=/tmp/floppy.img}}<br />
<br />
You can also create a floppy image by using Ken Kato's [http://chitchat.at.infoseek.co.jp/vmware/vfd.html VMware's back]. It is a free Windoze tool that creates a virtual floppy drive and allows you to produce an image file ready to be ISO'ed. Note: you might have to 'manually' (through application's interface) assign the virtual drive a volume letter in order to be seen by IBM's application (as, by default, it seems not to do it).<br />
<br />
You should verify this {{path|floppy.img}} as explained above.<br />
<br />
===Creating a Bootable CD from a Floppy Image===<br />
Once you have your floppy image, either from imaging a real floppy, or from extracting them via the cabextract method above, you need to make a boot CD out of it.<br />
<br />
The eltorito bootable CD standard is a wonderful thing. What this means is that a bootable CD can be made with a bootable floppy in such as way that the CD believes that it is a 2.88 MB floppy drive. This allows you to replace a boot floppy by a boot CD in nearly all situations.<br />
<br />
It is very easy to create such a bootable CD ISO image in Linux using the mkisofs tool. To do this run a command as follows:<br />
<br />
:{{cmdroot|mkisofs -b bootfloppy.img -o bootcd.iso bootfloppy.img}}<br />
<br />
where bootfloppy.img is the name of the .img floppy image file, for example 1NUJ10US.IMG.<br />
<br />
Note: This creates a CD with one file on it and marks that file as the boot image. For more info on this read {{cmduser|man mkisofs}}.<br />
<br />
You can now burn the {{path|bootcd.iso}} in your favorite CD burning program.<br />
<br />
To get an overview which models have been tested with this version, here is a list:<br />
<br />
===Does work:===<br />
{| border="1" cellspacing="0" cellpadding="2"<br />
| '''Model''' || '''Tested by'''<br />
|-<br />
| style="vertical-align:top;" | {{600E}} (2645-4AU) ||<br />
*George Tellalov <gtellalov_dontspamme@bigfoot.com>. BIOS 1.16 from spsdin36.exe worked perfectly with the method bootable cd from floppy image. I highly recommend this upgrade because it made my ibm-acpi module load (it wouldn't load before) and fixed some suspend to ram problems. Here's the [http://george.tellalov.info/bios_upgrade_600e_spsdin36.iso cd image] I used. Use at your own risk. You can send me a chocolate if it works for you ;)<br />
|-<br />
| style="vertical-align:top;" | {{600E}} (2645-5bU) ||<br />
*Mike Vincent<matchstc-putobvioushere.com>. Bios 1.16 from spsdin36.exe and then to the boot cd worked great for me. Thought I had bricked it three separate times using a "real" floppy! Each from different diskettes .The updater would start, give me the "going to take30 seconds" speech...and then access the HD for 10 minutes. Each time it would reboot fine. Did the cd as described above...worked great first time. Perhaps 10 year old seldom used floppy disc drives have some challenges?<br />
|-<br />
| style="vertical-align:top;" | {{600X}} (2645) ||<br />
*Jonathan Byrne <jonathan@RemoveThisToMailMe.yamame.org>. BIOS 1.11 from spsuit55.exe worked perfectly using cabextract/CD method.<br />
|-<br />
| style="vertical-align:top;" | {{600X}} (2645) ||<br />
*Andy Barnes <andy@RemoveThisToMailMe.itchypaws.co.uk>. As per Jonathan above, extracted BIOS 1.11 from spsuit55.exe using cabextract, created a CD boot image and burnt to CD. Worked flawlessly - thanks to everyone who contributed to this article!<br />
|-<br />
| style="vertical-align:top;" | {{A20p}} (2629-6VU) ||<br />
*Chris Pickett http://www.sable.mcgill.ca/~cpicke/. BIOS 1.11 flashed fine with cabextract/CD method.<br />
|-<br />
| style="vertical-align:top;" | {{A21e}} (2628-JXU) ||<br />
*Amit Gurdasani <gurdasani at yahoo dot com>. BIOS 1.13 flashed fine with cabextract/CD method. Alarmingly, after the BIOS update, the laptop beeped but did not shut down as was indicated onscreen -- that was frozen on the "do not shut down the laptop" screen. On power down and up again, the BIOS setup showed the newer BIOS image running, and Linux booted up fine. Linux ACPI didn't complain about the BIOS being too old either.<br />
|-<br />
| style="vertical-align:top;" | {{A31p}} (2653) ||<br />
*Matthias Meinke largeeddy@gmx.at, BIOS 1.09 1NET15WW flashed fine with cabextract/CD method.<br />
|-<br />
| style="vertical-align:top;" | {{A31}} (2652) ||<br />
*[[User:Wnoise|Aaron Denney]], BIOS 1.13 flashed fine with cabextract/CD method. The cabextract/CD method also worked for BIOS 1.10.<br />
|-<br />
| style="vertical-align:top;" | {{R30}} ||<br />
*Jarrod, 30 August 2007, Thinkpad R30 Type 2656-E0M. BIOS updated to 1.40 (1CETF0WW) using floppy disk/mkisofs/cdrecord. Worked fine, no problems. <br />
|-<br />
| style="vertical-align:top;" | {{R31}} ||<br />
*[http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/1998-January/009743.html Mathias Dalheimer]<br />
*Sebastian Sauer (with cabextract/CD method)<br />
|-<br />
| style="vertical-align:top;" | {{R40}} ||<br />
*Matthew Lambie, http://lambie.org<br />
|-<br />
| style="vertical-align:top;" | {{R50}} (1836-3SU) ||<br />
*jlbartos <jlbartos at hotmail dot com><br />
|-<br />
| style="vertical-align:top;" | {{R50e}} (1834-PTG) ||<br />
*item <item at freemail dot hu> : successfully finished with cabextract/CD method for "1wuj25us.exe" (BIOS version 1WET90WW (2.10), Release Date: 2006/12/22)<br />
*Christos Nouskas <nouskas at gmail dot com>: upgraded to BIOS version 1WET90WW (2.10) and EC version 1VHT28WW (1.04) using GRUB (BIOS first / EC second)<br />
|-<br />
| style="vertical-align:top;" | {{R51}} (1829) ||<br />
*Robert Uhl <rob dot uhl at gmx dot de>, Jellby <jellby at yahoo dot com><br />
|-<br />
| style="vertical-align:top;" | {{R51}} (1830-RM7) ||<br />
*Will Parker <stardotstar at sourcepoint dot com dot au> successfully flashed 3.20 using existing 3.04 ECP and retained custom boot splash.<br />
|-<br />
| style="vertical-align:top;" | {{R51}} (2887) ||<br />
*Ingo van Lil <inguin at gmx dot de><br />
|-<br />
| style="vertical-align:top;" | {{R52}} (1858) ||<br />
*Stuart McCord <stuart dot mccord at gmail dot com> flashed both BIOS and ECP using cabextract, BIOS flashed first as on IBM website<br />
|-<br />
| style="vertical-align:top;" | {{T20}} ||<br />
*Franz Hassels <fhassel at suse dot com><br />
|-<br />
| style="vertical-align:top;" | {{T22}} ||<br />
*Daniel Maier <nusse teamidiot de><br />
*Mathias Behrle (with cabextract/CD method, Version 1.07 => 1.12) --[[User:Mathiasb|Mathiasb]] 11:58, 14 December 2006 (CET)<br />
*Bob Skaroff (cabextract/CD), 1.06 => 1.12<br />
*Leo Butler (cabextract/CD), 1.11 => 1.12 <br />
|-<br />
| style="vertical-align:top;" | {{T23}} ||<br />
*Bart Snapp <snapp at uiuc dot edu> Note: I followed IBM's instructions to flash the BIOS *first* and the Embedded Controller *second*.<br />
*Moy Easwaran: BIOS 1.18 / EC 1.06a via cabextract and CD-boot. The BIOS-update exe generated errors in Windows 2000.<br />
*Joe Renes: BIOS 1.18 / EC 1.06a on 2006-03-20 via cabextract and CD-boot. Piece of cake.<br />
*Raphael Errani: BIOS 1.20 / EC 1.06a on 2006-11-06 via cabextract and CD-boot (using mkisofs). Worked without errors. 1st Bios, 2nd EC<br />
*Myron Getman: BIOS 1.20 / EC 1.06a on 9/10/08 via cabextract --> k3b --> CD-boot. Worked like a charm. First BIOS update with Linux!<br />
|-<br />
| style="vertical-align:top;" | {{T30}} ||<br />
*Martin Gühring <guehring at gmail.com> BIOS 2.10 via cabextract the Non-Diskette BIOS -> mkisofs '''in the directory the exe was extracted''' to generate the iso -> burn the iso -> boot the CD<br />
|-<br />
| style="vertical-align:top;" | {{T40}} ||<br />
*Sean Dague, http://dague.net<br />
*Justin Mason, http://jmason.org<br />
*Ivanhoe (Bios 3.19)<br />
*Alessandro Raulino (roger_2) EC 3.04 & BIOS 3.23 flashed with cabextract/CD method<br />
*Nick Jenkins, using BIOS 3.23 with the [[#The_Non_Diskette_Updater|Non-diskette updater + cabextract method]], then [[#Creating_a_Bootable_CD_from_a_Floppy_Image|created a bootable CD from the cabextracted .IMG file]], then boot that ISO, and it worked great!<br />
|-<br />
| style="vertical-align:top;" | {{T40p}} ||<br />
*Lukas Krähenbühl, ismo at pop dot agri dot ch<br />
*Thomas Achtemichuk, tom at tomchuk dot com. BIOS 3.15 flashed fine with cabextract/CD method<br />
|-<br />
| style="vertical-align:top;" | {{T41}} ||<br />
*Lev Givon (Bios 3.15 / EC 3.04) <lev at columbia dot edu><br />
*Ernesto Hernández-Novich (Bios 3.19 / CP 3.04) < emhn at usb dot ve ><br />
*[http://maebmij.org James Ballantine] (Bios 3.21 / CP 3.04) using nondisk/cabextract/CDRW<br />
|-<br />
| style="vertical-align:top;" | {{T41p}} ||<br />
*Nils Newman, work great. (Version: Bios 3.14 / Embedded Controller 3.04)<br />
|-<br />
| style="vertical-align:top;" | {{T42}} ||<br />
*Dan (BIOS 3.20 / EC 3.04, cabextract/CD method) <tronic171 at evilphb.org><br />
*Hirosh Dabui <hirosh@dabui.de><br />
|-<br />
| style="vertical-align:top;" | {{T42p}} ||<br />
*Robert Schiele <rschiele@uni-mannheim.de>, Joern Heissler <joern@heissler.de>, Hirosh Dabui <hirosh@dabui.de><br />
|-<br />
| style="vertical-align:top;" | {{T43}} ||<br />
*Conrad Rentsch <Conrad dot Rentsch at t-online dot de> (Version: Bios 1.29 / Embedded Controller 1.06)<br />
*Tom Heady <tom-thinkwiki.org@punch.net><br />
*Florian Boucault <florian at boucault dot ath dot cx> (Model : 1871-W34 & Version: Bios 1.23 / Embedded Controller 1.03)<br />
*Till Heikamp <t dot heikamp at geniusbytes dot com> (Model 2886, Bios 1.22 to 1.29, Embedded Controller 1.03 to 1.06)<br />
|-<br />
| style="vertical-align:top;" | {{T60}} ||<br />
*Roman Komkov <roman at komkov dot org dot ru> (Model 1951, Bios 1.07 to 2.13) Successfully upgraded from CD Image<br />
|-<br />
| style="vertical-align:top;" | {{T61}} ||<br />
*Kai Weber <kai.weber at glorybox dot org> (Bios 1.06 to 1.26) Successfully upgraded from CD Image<br />
|-<br />
| style="vertical-align:top;" | {{X20}} ||<br />
*Neil Caunt <retardis at gmail dot com><br />
|-<br />
| style="vertical-align:top;" | {{X21}} ||<br />
*Patrick Leickner <ranma at web dot de>, (BIOS 2.21->2.25 / EC 1.31->1.36) via non-disk/cabextract/mkisofs/cdrecord<br />
|-<br />
| style="vertical-align:top;" | {{X22}} ||<br />
*David Emery <dave at skiddlydee dot com>, (EC 1.30, BIOS 1.32 using non-disk/cabextract/CD method)<br />
|-<br />
| style="vertical-align:top;" | {{X23}} ||<br />
*Nils Faerber <nils dot faerber at kernelconcepts dot de> (Embedded Controller 1.30, BIOS 1.32 with cabextract/CD method)<br />
|-<br />
| style="vertical-align:top;" | {{X30}} ||<br />
*Hella Breitkopf, [http://www.unixwitch.de/ www] (Embedded Controller 1.04, BIOS 1.07 with cabextract/CD method)<br />
*William Roe <willroe at gmail dot com> (Embedded Controller 1.06, BIOS 1.09 - cabextract/mkisofs/wodim)<br />
|-<br />
| style="vertical-align:top;" | {{X31}} ||<br />
*Grzegorz Kuśnierz <koniu at sheket dot org> (Embedded Controller 1.08, BIOS 3.01 with cabextract/CD method)<br />
|-<br />
| style="vertical-align:top;" | {{X40}} ||<br />
*Robbie Stone <robbie@serendipity.cx><br />
|-<br />
| style="vertical-align:top;" | {{Z60m}} ||<br />
*[[User:Morle|Morle]] 01:09, 17 Nov 2007 (CEST), (Embedded Controller 1.18 and Bios 1.24 with cabextract/CD method)<br />
|}<br />
<br />
===Does not work:===<br />
{|<br />
| '''Model''' || '''Tested by'''<br />
|}<br />
<br />
Please note that testing this is '''at your own risk'''!!!<br />
<br />
<br />
<br />
==Updating via Grub and a Floppy Image==<br />
<br />
{{WARN|Many have warned '''not''' to use the [http://syslinux.zytor.com/ SYSLINUX] image-loader [http://syslinux.zytor.com/memdisk.php MEMDISK] to boot the images! Some flash tools may crash in that situation! Proceed at your own risk!}}<br />
<br />
Floppy images may be booted from Grub via a utility called [http://syslinux.zytor.com/memdisk.php MEMDISK], which may be compiled from the [http://www.kernel.org/pub/linux/utils/boot/syslinux/ '''SYSLINUX source''']. Copy the compiled memdisk image and the floppy image to your boot directory and configure grub as follows:<br />
<br />
<blockquote style="background: white; border: 1px solid black; padding: 1em;"><br />
<pre><nowiki><br />
title Bios Flash<br />
kernel /boot/memdisk<br />
initrd /boot/FILENAME.img<br />
</nowiki></pre></blockquote><br />
<br />
Again, proceed at your own risk. This was tested on an R51 type 2888.<br />
<br />
This also worked for me on a T41p type 2373. -- [[User:MrStaticVoid|James Lee]] 20:55, 8 May 2006 (CEST)<br />
<br />
And it worked for me on a X31 type 2673-CBU. -- [[User:JanTopinski|Jan Topinski]], 18 September 2006 <br />
<br />
And it worked for me too on a X31 type 2672-CXU, very useful. -- [[User:TheAnarcat|TheAnarcat]] 16:21, 7 March 2007 (CET)<br />
<br />
Same here (worked) on a X31 type 2673-58G --[[User:FaUl|FaUl]] 15:53, 20 June 2007 (UTC)FaUl<br />
<br />
Works well on a X31 type 2672-PG9, but with a big moment between starting update and the updating window -- [[User:Starox|Starox]] 22 Jul 2007<br />
<br />
And it worked for me on two X40 type 2371 -- [[User:Antialize|Jakob Truelsen]], 19 Jan 2007 -- BIOS: 2.07 1uuj21us.exe -- ECP: 1.62 1uhj10us.exe<br />
<br />
Worked on X40 type 2386 -- [[User:Antialize|Galen Seitz]], 15 Feb 2008 -- BIOS: 2.08 1uuj22us.exe -- ECP: 1.62 1uhj10us.exe -- memdisk from syslinux 3.61<br />
<br />
Not working for me on T43 type 2668-F7G -- [[User:Maus3273|Maus3273]] 20:48, 30 January 2007 (CET) -- BIOS: 1.29 1YUJ18US.IMG -- I got into the bios program, but the machine never restarts after initiating the upgrade.<br />
<br />
X41 type 2525-F8G -- [[User:ladoga|Lauri Koponen]], 11:08 16 Apr 2007<br> <br />
BIOS: 2.09 (74UJ15US.IMG), is no go. (hangs while initialising the actual flashing process) I tried with 2.07 (74UJ13US.IMG) and 2.06 (74UJ12US.IMG) aswell and they all failed in the very same fashion.<br><br />
ECP: 1.02 74HJ03US.IMG, works.<br />
<br />
It works fine on R30 type 2656-64g, BIOS v.1.40 -- [[User:english.voodoo|Yuri Spirin]], 10 May 2007.<br />
<br />
Workes fine on T40 type 2373 with cabextracted 1RUJ37US.IMG / 1RHJ10U2.IMG and memdisk from syslinux 1:3.31-4 (Debian package version) -- [[User:Euphoria|Euphoria]] 00:10, 29 May 2008 (CEST)<br />
<br />
Works fine on R40 type 2723 with cabextracted 1OHJ11WW.IMG/1PUJ25US.IMG, memdisk from syslinux 3.70 (slackware 12.1) -- [[User:qunying|Qunying]] 21:28, 23 Jul 2008 (PST)<br />
<br />
Worked perfectly on a T40 type 2373 with 1RHJ10U2.IMG (3.04, 2004-11-15) and 1RUJ37US.IMG (3.23, 2007-07-03) using cabextract and memdisk from syslinux 3:1.36-4ubuntu5. [[User:Morphics|Morphics]] 10:58, 20 Aug 2008 (BST)<br />
<br />
Worked perfectly on a T41p type 2373 with 1RUJ37US.IMG (3.23, 2007-07-03) using cabextract and memdisk from syslinux 3.71 on gentoo linux. --[[User:Deggel|Deggel]] 21:03, 22 September 2008 (CEST)<br />
<br />
==Updating with Network Boot Image==<br />
<br />
BIOS, Embedded Controller (EC), CD/DVD and Harddisk firmware disks can be booted<br />
over the network with [http://syslinux.zytor.com/pxe.php PXELINUX] as part of the [http://syslinux.zytor.com/ SYSLINUX] package.<br />
<br />
This requires that you have a DHCP and tftp server configured and setup properly on<br />
your network, and is probably not for the faint of heart.<br />
<br />
Make sure the firmware bootdisk is in linux 'dd' format, as the self-extracting .exe disks<br />
from the IBM website cannot be booted directly as such.<br />
<br />
This worked on the {{R31}}, {{X22}}, {{T21}}, {{T30}} and {{T41p}} with various firmware updates.<br />
<br />
<br />
On {{X22}}, works with EC 1.30 but NOT with BIOS 1.32<br />
<br />
==Updating via "IBM Predesktop area", suitable for model X (not have CDROM and floppy)==<br />
It's so difficult to update BIOS and ECP without cdrom, floppy disk.<br />
Don't know the reason why I couldn't update BIOS and ECP(1QHJ08US and 1QUJ19US) for my IBM Thinkpad X31.Hmm, may be cause of the dividing partition on my hard disk, that is: <br />
<blockquote style="background: white; border: 1px solid black; padding: 1em;"><br />
<pre><nowiki><br />
Primary: ext3, ext3, ntfs<br />
Extended: Ntsf, fat32<br />
Bootloader: GRUB<br />
</nowiki></pre></blockquote><br />
<br />
No problem, you can use this way to do it:<br />
* First, config in BIOS<br />
In Security part:<br />
# Remove all password of Subpervisor and Power on password<br />
# Set Access IBM Predesktop Area to Normal<br />
# Choose Enable "Flash BIOS updating by End User" in BIOS update Option.<br />
<br />
In Config part:<br />
# Choose Enable for Network flash over Lan<br />
<br />
* Second, download the newest version of BIOS update and ECP update <br />
Running: The program extract all files to the folder. There is a .img file (1QUJ19US.IMG, 1QUJ08US.IMG) in each folder.<br />
Copy the imformation content in that img file and paste it to one FAT partition(using winimage or TotalCmd to extract) <br />
<br />
<br />
as seen All files in 1QUJ19US.IMG is extracted to D:\BIOS<br />
<blockquote style="background: white; border: 1px solid black; padding: 1em;"><br />
<pre><nowiki><br />
695,764 $018E000.FL1<br />
163 0691.HSH<br />
2,049 0691.PAT<br />
163 0694.HSH<br />
2,049 0694.PAT<br />
163 0695.HSH<br />
2,049 0695.PAT<br />
2,049 06D0.PAT<br />
163 06D1.HSH<br />
2,049 06D1.PAT<br />
163 06D2.HSH<br />
2,049 06D2.PAT<br />
163 06D6.HSH<br />
2,049 06D6.PAT<br />
2,049 06D8.PAT<br />
697 CHKBMP.EXE<br />
8,128 COMMAND.COM<br />
26 CONFIG.SYS<br />
24,860 FLASH2.EXE<br />
26 LCREFLSH.BAT<br />
170 LOGO.BAT<br />
330 LOGO.SCR<br />
111,925 PHLASH16.EXE<br />
91,648 PREPARE.EXE<br />
45 PROD.DAT<br />
22,252 QKFLASH.EXE<br />
9,923 README.TXT<br />
4,260 TPCHKS.EXE<br />
39,666 UPDTFLSH.EXE<br />
6,958 UPDTMN.EXE<br />
12,501 USERINT.EXE<br />
15,254 UTILINFO.EXE<br />
</nowiki></pre></blockquote><br />
<br />
And all files in 1QUJ08US.IMG are: D:\ECP<br />
<blockquote style="background: white; border: 1px solid black; padding: 1em;"><br />
<pre><nowiki><br />
315,404 $018E000.FL2<br />
8,000 COMMAND.COM<br />
36 CONFIG.SYS<br />
16,910 ECFLASH2.EXE<br />
45 PROD.DAT<br />
17,812 QKFLASH.EXE<br />
990 README.TXT<br />
4,260 TPCHKS.EXE<br />
89,738 UPDTEC.EXE<br />
31,134 UPDTFLSH.EXE<br />
12,501 USERINT.EXE<br />
15,226 UTILINFO.EXE<br />
</nowiki></pre></blockquote><br />
<br />
* Okie, now plug AC Adapter, charge full battery to your laptop and continue third step:<br />
<br />
** '''Flash BIOS first,'''<br />
1. Power On, press blue button on keyboard: '''Access IBM'''<br />
<br />
2. On "Utilities", double click " Diagnostic disk"<br />
<br />
3. Your laptop will start PC-DOS, wait when this message appear:<br />
<blockquote style="background: white; border: 1px solid black; padding: 1em;"><br />
<pre><nowiki><br />
Please insert the first floppy diskette and<br />
Press any key to continue<br />
</nowiki></pre></blockquote><br />
<br />
4. Press Ctrl + Break, you will see :<br />
<blockquote style="background: white; border: 1px solid black; padding: 1em;"><pre><nowiki>Terminate batch job (Y/N) ?</nowiki></pre></blockquote><br />
<br />
5. Okie, press Y, you will get DOS prompt like D:\<br />
{{NOTE|D:\ is my RAMDISK, C:\ is my disk format as FAT.!}}<br />
<br />
6. Enter to c:\BIOS<br />
<blockquote style="background: white; border: 1px solid black; padding: 1em;"><br />
<pre><nowiki><br />
c:<br />
cd c:\BIOS<br />
</nowiki></pre></blockquote><br />
<br />
7. Run FLASH2.EXE /u $018E000.FL1<br />
<br />
8. Wait flash progress compelete and reboot.<br />
** '''Flash ECP'''<br />
Follow above instruction from step 1 to 5<br />
<br />
6. Enter to c:\ECP<br />
<blockquote style="background: white; border: 1px solid black; padding: 1em;"><br />
<pre><nowiki><br />
c:<br />
cd c:\ECP<br />
</nowiki></pre></blockquote><br />
<br />
7. run UPDTFLSH.EXE $018E000.FL2<br />
<br />
8. Follow UPDTFLSH's instructions<br />
<br />
9. Wait flash complete and auto turn off computer.<br />
<br />
I done it on my IBM Thinkpad X31.<br />
<br />
Enjoy,<br />
<br />
Tested by nm.<br />
<br />
==After updating==<br />
===DMI IDs===<br />
Please consider updating the [[List of DMI IDs]] after (and before) updating your BIOS.<br />
<br />
==Check List==<br />
<br />
The following is important to remember:<br />
# You must update '''both''' the Control Program and the BIOS at the same time if your current Control Program is not compatible with the new BIOS (see below)<br />
# You must find versions of the Control Program and BIOS that are compatible. Not all of them are, so follow the readmes on the IBM website carefully to determine which are.<br />
# You must update the Control Program '''before''' you update the BIOS<br />
<br />
When the Control Program '''and''' the BIOS need updating, have both update disks or CDs ready. Update the Control Program first and the system should switch itself off when finished. Insert the BIOS update disk and proceed to update the BIOS. When it's all finished, enter setup, reset the settings to their defaults and reboot. Enter setup again and tweak the settings as necessary.</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=List_of_DMI_IDs&diff=34706List of DMI IDs2007-11-18T17:45:59Z<p>Owenh: /* T series */ Add T61 entry with BIOS 1.26</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
This page maintains a database of [http://en.wikipedia.org/wiki/Desktop_Management_Interface DMI] information which can be used to identify ThinkPad models. It is intended as an aid for driver development.<br />
{{HELP|We need more information about older models, especially those released before 2004. Please [[#Adding_entries|add your model]] to the database.}}<br />
{{NOTE|If your ThinkPad is not using the [[BIOS Upgrade Downloads|latest BIOS]], and you would be willing to [[BIOS Upgrade|upgrade your BIOS]], please add your ThinkPad to this table twice: '''before''' and '''after''' the BIOS upgrade. This information helps us a great deal, so your contribution would be very appreciated.}}<br />
|}<br />
<br />
==DMI ID database==<br />
<br />
<div style="font-size: 80%"><br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|-<br />
! Model<br />
! <tt>system-<br />manufa<br />cturer</tt><br />
! <tt>system-<br />product-<br />name</tt><br />
! <tt>system-<br />version</tt><br />
! <tt>baseboard-<br />manufa<br />cturer</tt><br />
! <tt>baseboard-<br />product-<br />name</tt><br />
! <tt>baseboard-<br />version</tt><br />
! <tt>chassis-<br />manufa<br />cturer</tt><br />
! <tt>chassis-<br />version</tt><br />
! <tt>bios-<br />vendor</tt><br />
! <tt>bios-<br />version</tt><br />
! <tt>bios-<br />release-<br />date</tt><br />
! Embedded controller<br />
! Notes<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
====Numbered series====<br />
|-<br />
| {{600E}} 2645-5AU<br />
|| IBM || 26455AU || Not Available || IBM || 26455AU || Not Available || IBM || Not Available || IBM || INET36WW || 11/20/1999<br />
||<br />
||<br />
|-<br />
| {{600X}} 2645-5FU<br />
|| IBM || 26455FU || Not Available || IBM || 26455FU || Not Available || IBM || Not Available || IBM || INET55WW || 11/30/1999<br />
||<br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====A series====<br />
|-<br />
| {{A21m}} 2628-FSG<br />
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET24WW (1.02b) || 12/19/2000 <br />
|| <br />
||<br />
|-<br />
| {{A21m}} 2628-FSG<br />
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET36WW (1.09 ) || 05/08/2003 <br />
||<br />
||<br />
|-<br />
| {{A21m}} 2628-GTU<br />
|| IBM || 2628GTU || Not Available || IBM || 2628GTU || Not Available || IBM || Not Available || IBM || KXET29WW (1.03d) || 03/21/2001 <br />
||<br />
||<br />
|-<br />
| {{A22p}} 2629-USG<br />
|| IBM || 2629USG || Not Available || IBM || 2629USG || Not Available || IBM || Not Available || IBM || KYET36WW (1.09a) || 10/17/2002 <br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{A31}} 2652-PBU<br />
|| IBM || 2652PBU || Not Available || IBM || 2652PBU || Not Available || IBM || Not Available || IBM || 1NET15WW (1.09 ) || 04/06/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1NHT04WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{A31p}} 2653H6U<br />
|| IBM || 2653H6U || Not Available || IBM || 2653H6U || Not Available || IBM || Not Available || IBM || 1GET31WW (1.03 ) || 07/23/2002<br />
||<br />
|| {{WARN|Missing EC string, extremely outdated BIOS}}{{HELP|We need a report to know if the latest BIOS fixes the missing EC string}}<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====G series====<br />
|-<br />
| {{G41}} 2881-75M<br />
|| IBM || 288175M || ThinkPad G41 || IBM || 288175M || Not Available || IBM || Not Available || IBM || 1XET47WW (1.06 ) || 01/14/2005<br />
||<br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
====R series====<br />
|-<br />
| {{R40}} 2681-5UU<br />
|| IBM || 26815UU || Not Available || IBM || 26815UU || Not Available || IBM || Not Available || IBM || 1OET57WW (1.23 ) || 03/23/2005 <br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{R40}} 2681-HSG<br />
|| IBM || 2681HSG || Not Available || IBM || 2681HSG || Not Available || IBM || Not Available || IBM || 1OET61WW (1.27 ) || 06/29/2006<br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{R40}} 2722-B3G<br />
|| IBM || 2722B3G || Not Available || IBM || 2722B3G || Not Available || IBM || Not Available || IBM || 1PET62WW (1.30 ) || 09/29/2005<br />
||<br />
||<br />
|-<br />
| {{R40}} 2897-B4U<br />
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1PET52WW (1.20 ) || 03/03/2004<br />
||<br />
||<br />
|-<br />
| {{R40e}} 2684-L8G<br />
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1SET62WW (1.30 ) || 07/09/2004<br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{R50}} 1829-7QG<br />
|| IBM || 0123456 || ThinkPad R50 || IBM || 0123456 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
||<br />
|-<br />
|{{R50e}} 1834-JAG<br />
|| IBM || 1834JAG || ThinkPad R50e || IBM || 1834JAG || Not Available || IBM || Not Available || IBM || 1WET82WW (2.02 ) || 02/21/2005<br />
|| <nowiki>Handle 0x0022, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
|{{R50p}} 1832-2AG<br />
|| IBM || 18322AG || ThinkPad R50p || IBM || 18322AG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 1829-DRG<br />
|| IBM || 1829DRG || ThinkPad R51 || IBM || 1829DRG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a ]-</nowiki> <br />
||<br />
|-<br />
| {{R51}} 1829-9MG<br />
|| IBM || 18299MG || ThinkPad R51 || IBM || 18299MG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 1829-L7G<br />
|| IBM || 1829L7G || ThinkPad R51 || IBM || 1829L7G || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT70WW-3.03 ]-</nowiki><br />
||<br />
|- <br />
| {{R51}} [[1830-DG4]]<br />
|| IBM || 1830DG4 || ThinkPad R51 || IBM || 1830DG4 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> ||<br />
|-<br />
| {{R51}} 1836-GEU<br />
|| IBM || 1836GEU || ThinkPad R51 || IBM || 1836GEU || Not Available || IBM || Not Available || IBM || 1RETDLWW (3.17 ) || 07/27/2005 || <nowiki>Handle 0x0029, DMI type 11, 5 bytes. String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 2883-ELU<br />
|| IBM || 2883ELU || ThinkPad R51 || IBM || 2883ELU || Not Available || IBM || Not Available || IBM || 1VET69WW (1.27 ) || 03/03/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad H || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
|| {{NOTE|Weird system version, this bug is known fixed in latest BIOS}}<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET68WW (1.28 ) || 11/15/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET69WW (1.29 ) || 12/06/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1847-W62<br />
|| IBM || 1847W62 || ThinkPad . || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
|| {{NOTE|Weird system version, this bug is known fixed in latest BIOS}}<br />
|-<br />
| {{R52}} 1847-W62<br />
|| IBM || 1847W62 || ThinkPad R52 || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1858-6MM<br />
|| IBM || 18586MM || ThinkPad R52 || IBM || 18586MM || Not Available || IBM || Not Available || IBM || 70ET40WW (1.04 ) || 06/02/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1858-6SM<br />
|| IBM || 18586SM || ThinkPad R52 || IBM || 18586SM || Not Available || IBM || Not Available || IBM || 70ET57WW (1.17 ) || 07/15/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki> ||<br />
|-<br />
| {{R52}} 1846-4CG<br />
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT15WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-4CG<br />
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{R52}} 1846-B5G<br />
|| IBM || 1846B5G || ThinkPad H || IBM || 1846B5G || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R60e}} 0657-4TG<br />
|| LENOVO || 06574TG || ThinkPad R60e || LENOVO || 06574TG || Not Available || LENOVO || Not Available || LENOVO || 7EET18WW (1.04 ) || 07/28/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7EHT13WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9456-6FG<br />
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9456-6FG<br />
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CETB7WW (2.07 ) || 11/13/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9461-54G<br />
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9461-54G<br />
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CETC1WW (2.11 ) || 01/09/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
|| {{NOTE|With this bios version the brightness control buttons don't work for kernel < 2.6.20}}<br />
|-<br />
| {{R60}} 9461-DXG<br />
|| LENOVO || 9461DXG || ThinkPad R60 || LENOVO || 9461DXG || Not Available || LENOVO || Not Available || LENOVO || 7CETB6WW (2.06 ) || 10/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
|-<br />
| {{R60}} 9462-GAG<br />
|| LENOVO || 9462GAG || ThinkPad R60 || LENOVO || 9462GAG || Not Available || LENOVO || Not Available || LENOVO || 7CETB5WW (2.05 ) || 10/13/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki> ||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====S series====<br />
|-<br />
| {{s30}} 2639-4WJ<br />
|| IBM || 26394WJ || Not Available || IBM || 2609BS1 || Not Available || IBM || Not Available || IBM || 18ET45WW (1.45) || 07/10/2001<br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====T series====<br />
|-<br />
| {{T20}} 2647-UC2<br />
|| IBM || 2647UC2 || Not Available || IBM || 2647UC2 || Not Available || IBM || Not Available || IBM || IYET45WW (1.08a) || 12/21/1999<br />
||<br />
|| {{WARN|Very outdated BIOS}}<br />
|-<br />
| {{T21}} 2647-8AU<br />
|| IBM || 26478AU || Not Available || IBM || 26478AU || Not Available || IBM || Not Available || IBM || KZET34WW (1.16 ) || 04/28/2004<br />
||<br />
||<br />
|-<br />
| {{T22}} 2647-4EG<br />
|| IBM || 26474EG || Not Available || IBM || 26474EG || Not Available || IBM || Not Available || IBM || 16ET31WW (1.11 ) || 03/20/2003 <br />
||<br />
||<br />
|-<br />
| {{T22}} 2647-8EU<br />
|| IBM || 26478EU || Not Available || IBM || 26478EU || Not Available || IBM || Not Available || IBM || 16ET32WW (1.12 ) || 04/27/2004<br />
||<br />
||<br />
|- <br />
| {{T23}} 2647-4NU<br />
|| IBM || 26474NU || Not Available || IBM || 26474NU || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a ]-</nowiki><br />
||<br />
|-<br />
| {{T23}} 2647-8MG<br />
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET56WW (1.13 ) || 07/02/2002<br />
||<br />
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}<br />
|-<br />
| {{T23}} 2647-8MG<br />
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-85G<br />
|| IBM || 236685G || Not Available || IBM || 236685G || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1IHT18WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-GU1<br />
|| IBM || 2366GU1 || Not Available || IBM || 2366GU1 || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1IHT19WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-JBU<br />
|| IBM || 2366JBU || Not Available || IBM || 2366JBU || Not Available || IBM || Not Available || IBM || 1IET71WW (2.10 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1IHT20WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T40}} 2378-D2U<br />
|| IBM || 2378D2U || ThinkPad T40 || IBM || 2378D2U || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004<br />
|| <br />
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}<br />
|-<br />
| {{T40p}} 2373-G1G<br />
|| IBM || 2373G1G || ThinkPad T40p || IBM || 2373G1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2373-W63<br />
|| IBM || 2373W63 || ThinkPad T41 || IBM || 2373W63 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> <br />
||<br />
|-<br />
| {{T41}} 2373-XNX<br />
|| IBM || 2373XNX || ThinkPad T41 || IBM || 2373XNX || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2373-2FG<br />
|| IBM || 23732FG || ThinkPad T41 || IBM || 23732FG || Not Available || IBM || Not Available || IBM || 1RET84WW (2.11 ) || 10/30/2003<br />
||<br />
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}<br />
|-<br />
| {{T41}} 2379-DJU<br />
|| IBM || 2379DJU || ThinkPad T41 || IBM || 2379DJU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> ||<br />
|-<br />
| {{T41p}} 2373-GHG <br />
|| IBM || 2373GHG || ThinkPad T41p || IBM || 2373GHG || Not Available || IBM || Not Available || IBM || 1RETDIWW (3.14 ) || 01/20/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41p}} 2373-GEG<br />
|| IBM || 2373GEG || ThinkPad T41p || IBM || 2373GEG || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005<br />
|| <nowiki> Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41p}} 2373-GJJ<br />
|| IBM || 2373GJJ || ThinkPad T41p || IBM || 2373GJJ || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-FWG<br />
|| IBM || 2373FWG || ThinkPad T42 || IBM || 2373FWG || Not Available || IBM || Not Available || IBM || 1RETDHWW (3.13 ) || 10/29/2004<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-M1G<br />
|| IBM || 2373M1G || ThinkPad T42 || IBM || 2373M1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|- <br />
| {{T42}} 2374-WEH<br />
|| IBM || 2374WEH || ThinkPad T42 || IBM || 2374WEH || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> <br />
||<br />
|-<br />
| {{T42}} 2378-FVU<br />
|| IBM || 2378FVU || ThinkPad T42 || IBM || 2378FVU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-KXU<br />
|| IBM || 2373KXU || ThinkPad T42p || IBM || 2373KXU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-KUU<br />
|| IBM || 2373KUU || ThinkPad T42p || IBM || 2373KUU || Not Available || IBM || Not Available || IBM || 1RETDMWW (3.18 ) || 09/15/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-GYG<br />
|| IBM || 2373GYG || ThinkPad T42p || IBM || 2373GYG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2374-CP5<br />
|| IBM || 2374CP5 || ThinkPad T42p || IBM || 2374CP5 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2379-DYU<br />
|| IBM || 2379DYU || ThinkPad T42p || IBM || 2379DYU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2372-Q2G<br />
|| IBM || 2373Q2G || ThinkPad T42p || IBM || 2373Q2G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 1871-4AG<br />
|| IBM || 18714AG || ThinkPad T43 || IBM || 18714AG || Not Available || IBM || Not Available || IBM || 70ET64WW (1.24 ) || 02/13/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT27WW-1.04 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{T43}} 1871-F1G<br />
|| IBM || 1871F1G || ThinkPad T43 || IBM || 1871F1G || Not Available || IBM || Not Available || IBM || 70ET61WW (1.21 ) || 11/01/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2686-DGU<br />
|| IBM || 2686DGU || ThinkPad T43 || IBM || 2686DGU || Not Available || IBM || Not Available || IBM || 1YET62WW (1.27 ) || 05/18/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1YHT29WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2669-WE5<br />
|| IBM || 2669WE5 || ThinkPad T43 || IBM || 2669WE5 || Not Available || IBM || Not Available || IBM || 1YET56WW (1.21 ) || 07/06/2005 <br />
|| <nowiki>String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
|| {{NOTE|User reports this is really a 2669-CEU with 1GB RAM + BlueTooth, and not a 2669-WE5 (unverified if this makes sense)}}<br />
|-<br />
| {{T43p}} 2668-G2G<br />
|| IBM || 2668G2G || ThinkPad T43p || IBM || 2668G2G || Not Available || IBM || Not Available || IBM || 1YET47WW (1.08 ) || 06/09/2005 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43p}} 2687-D5U<br />
|| IBM || 2687D5U || ThinkPad T43p || IBM || 2687D5U || Not Available || IBM || Not Available || IBM || 1YET59WW (1.24 ) || 11/07/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1952-W5R<br />
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ET61WW (1.06 ) || 05/24/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1952-W5R<br />
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ETD2WW (2.12 ) || 04/12/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{T60}} 2007-49G<br />
|| LENOVO || 200749G || ThinkPad T60 || LENOVO || 200749G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 2007-77G<br />
|| LENOVO || 200777G || ThinkPad T60 || LENOVO || 200777G || Not Available || LENOVO || Not Available || LENOVO || 79ETD1WW (2.11 ) || 03/15/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-83U<br />
|| LENOVO || 200783U || ThinkPad T60p || LENOVO || 200783U || Not Available || LENOVO || Not Available || LENOVO || 79ET60WW (1.05a) || 04/18/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[79HT43WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93G<br />
|| LENOVO || 200793G || ThinkPad T60p || LENOVO || 200793G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET66WW (1.10 ) || 08/02/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-ZK4<br />
|| LENOVO || 2007ZK4 || ThinkPad T60p || LENOVO || 2007ZK4 || Not Available || LENOVO || Not Available || LENOVO || 79ETD3WW (2.13 ) || 04/30/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{T60p}} 2613-ESU<br />
|| LENOVO || 2613ESU || ThinkPad T60p || LENOVO || 2613ESU || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2623-DDU<br />
|| LENOVO || 2623DDU || ThinkPad T60p || LENOVO || 2623DDU || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 7662-XDU<br />
|| LENOVO || 7662XDU || ThinkPad T61 || LENOVO || 7662XDU || 7662XDU|| LENOVO || Not Available || LENOVO || 7LET37WW (1.07 ) || 04/17/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7KHT19WW-1.03 ]-</nowiki><br />
|| {{WARN|BIOS and EC firmware have different IDs}}<br />
|-<br />
| {{T61}} 7661-A56<br />
|| LENOVO || 7661A56 || ThinkPad T61 || LENOVO || 7661A56 || Not Available || LENOVO || Not Available || LENOVO || 7LET39WW (1.09 ) || 05/14/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT21WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 8897-CTO<br />
|| LENOVO || 8897CTO || ThinkPad T61 || LENOVO || 8897CTO || Not Available || LENOVO || Not Available || LENOVO || 7LET52WW (1.22 ) || 08/27/2007<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 8897-CTO<br />
|| LENOVO || 8897CTO || ThinkPad T61 || LENOVO || 8897CTO || Not Available || LENOVO || Not Available || LENOVO || 7LET56WW (1.26 ) || 10/18/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
|| <br />
|- <br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====X series====<br />
|-<br />
| {{X20}} 266231G<br />
|| IBM || 266231G || Not Available || IBM || 266231G || Not Available || IBM || Not Available || IBM || IZET9DWW (2.25 ) || 04/17/2003<br />
||<br />
|-<br />
|| 266232G || IBM || 266232G || Not Available || IBM || 266232G || Not Available || IBM || Not Available || IBM || IZET9AWW (2.22 ) || 09/11/2002<br />
|| <nowiki></nowiki> ||<br />
||<br />
|-<br />
| {{X23}} 2662EBG<br />
|| IBM || 2662EBG || Not Available || IBM || 2662EBG || Not Available || IBM || Not Available || IBM || 1DET70WW (1.32 ) || 06/10/2003<br />
|| <nowiki></nowiki> ||<br />
|-<br />
| {{X24}} 2662-MPU<br />
|| IBM || 62MPUFX || Not Available || IBM || 62MPUFX || Not Available || IBM || Not Available || IBM || 1DET67WW (1.29 ) || 12/18/2002<br />
||<br />
||<br />
|- <br />
| {{X30}} 2672-4HU<br />
|| IBM || 26724HU || Not Available || IBM || 26724HU || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06 ]-</nowiki> ||<br />
|-<br />
| {{X30}} 2672-PG3<br />
|| IBM || 2672PG3 || Not Available || IBM || 2672PG3 || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06 ]-</nowiki> <br />
||<br />
|-<br />
| {{X31}} 2672-JXU<br />
|| IBM || 2672JXU || ThinkPad X31 || IBM || 2672JXU || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{X32}} 2884-A3U<br />
|| IBM || 2884A3U || ThinkPad X32 || IBM || 2884A3U || Not Available || IBM || Not Available || IBM || 1QET94WW (3.00d) || 01/23/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT22WW-1.07b ]-</nowiki><br />
||<br />
|-<br />
| {{X32}} 2673-M4U<br />
|| IBM || 2673M4U || ThinkPad X32 || IBM || 2673M4U || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2386-H4G<br />
|| IBM || 2386H4G || ThinkPad X40 || IBM || 2386H4G || Not Available || IBM || Not Available || IBM || 1UET92WW (1.42 ) || 09/16/2004 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1UHT82WW-1.32 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2371-Y29<br />
|| IBM || 2371Y29 || ThinkPad X40 || IBM || 2371Y29 || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHTA6WW-1.56 ]-</nowiki> ||<br />
|-<br />
| {{X41}} 2525-HU1<br />
|| IBM || 2525HU1 || ThinkPad X41 || IBM || 2525HU1 || Not Available || IBM || Not Available || IBM || 74ET48WW (1.17a) || 06/07/2005<br />
|| <nowiki>Handle 0x0025, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[74HT25WW-1.00 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1709-47U<br />
|| LENOVO || 170947U || ThinkPad X60 || LENOVO || 170947U || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1709-GDJ<br />
|| LENOVO || 1709GDJ || ThinkPad X60 || LENOVO || 1709GDJ || Not Available || LENOVO || Not Available || LENOVO || 7BETC2WW (2.03 ) || 10/16/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT36WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1702-55G<br />
|| LENOVO || 170255G || ThinkPad X60s || LENOVO || 170255G || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1702-5FG<br />
|| LENOVO || 17025FG || ThinkPad X60s || LENOVO || 17025FG || Not Available || LENOVO || Not Available || LENOVO || 7BET49WW (1.09 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT34WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1704-56G<br />
|| LENOVO || 170456G || ThinkPad X60s || LENOVO || 170456G || Not Available || LENOVO || Not Available || LENOVO || 7BET43WW (1.03 ) || 02/13/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7BHT28WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====Z series====<br />
|-<br />
| {{Z60t}} 2511-FEU<br />
|| IBM || 2511FEU || ThinkPad Z60t || IBM || 2511FEU || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{Z60t}} 2511-FFG<br />
|| IBM || 2511FFG || ThinkPad Z60t || IBM || 2511FFG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT57WW-1.17 ]-</nowiki> ||<br />
|- <br />
| {{Z60m}} 2529-ETG<br />
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET59WW (1.19 ) || 04/24/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[77HT54WW-1.14 ]-</nowiki> ||<br />
|-<br />
| {{Z60m}} 2529-ETG<br />
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18 ]-</nowiki> ||<br />
|-<br />
| {{Z60m}} 2529-FBG<br />
|| IBM || 2529FBG || ThinkPad Z60m || IBM || 2529FBG || Not Available || IBM || Not Available || IBM || 77ET62WW (1.22 ) || 11/21/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18 ]-</nowiki> ||<br />
|- <br />
| {{Z60m}} 2529-FKG<br />
|| IBM || 2529FKG || ThinkPad Z60m || IBM || 2529FKG || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005<br />
|| String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02 ]-<br />
||<br />
|-<br />
| {{Z61m}} 9453-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET48WW (1.08 ) || 05/26/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7FHT21WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61m}} 9543-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki> ||<br />
|-<br />
| {{Z61m}} 9543-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET93WW (2.11 ) || 11/10/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{Z61m}} 9453-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki> ||<br />
|-<br />
| {{Z61p}} 9453-A12<br />
|| LENOVO || 9453A12 || ThinkPad Z61p || LENOVO || 9453A12 || Not Available || LENOVO || Not Available || LENOVO || 7FET45WW (1.05 ) || 04/20/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7FHT19WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61p}} 9450-3AU<br />
|| LENOVO || 94503AU || ThinkPad Z61p || LENOVO || 94503AU || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9440-2CU<br />
|| LENOVO || 94402CU || ThinkPad Z61t || LENOVO || 94402CU || Not Available || LENOVO || Not Available || LENOVO || 7FET50WW (1.10 ) || 06/20/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT22WW-1.04 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9443-4GG<br />
|| LENOVO || 94434GG || ThinkPad Z61t || LENOVO || 94434GG || Not Available || LENOVO || Not Available || LENOVO || 7FET96WW (2.14 ) || 12/25/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9440-CTO<br />
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FET99WW (2.17 ) || 04/17/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9440-CTO<br />
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FETA0WW (2.18 ) || 05/17/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki><br />
||<br />
|}<br />
</div><br />
<br />
==Adding entries==<br />
<br />
Click the "Edit" link on the appropriate series above and add an entry of the following form:<br />
:<tt>| </tt><i>description of your model</i><br />
:<i>data line 1</i><br />
:<i>data line 2</i><br />
:<tt>||</tt><br />
:<tt>|-</tt><br />
<br />
where the two data lines are generated by the following <tt>bash</tt> command:<br />
<br />
<pre><br />
for X in system-{manufacturer,product-name,version} \<br />
baseboard-{manufacturer,product-name,version} \<br />
chassis-{manufacturer,version} bios-{vendor,version,release-date}; do \<br />
echo -n "|| `sudo /usr/sbin/dmidecode -s $X` "; done; \<br />
sudo /usr/sbin/dmidecode | perl -0777 -ne \<br />
'm/\n(.*).\n.*\n(.*Embedded Cont.*)\n/i; print "\n|| <nowiki><</nowiki>nowiki>$1$2</nowiki>\n"'<br />
</pre><br />
<br />
While at it, you may also want to test [[tp_smapi]] and update its [[tp_smapi#Model-specific_status|model-specific status table]].<br />
<br />
==Software using ThinkPad DMI IDs==<br />
* [[HDAPS]] driver whitelist<br />
* [[tp_smapi]] driver whitelist<br />
* [[ibm-acpi]]/thinkpad-acpi driver quirk list</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=AD1984&diff=33849AD19842007-10-12T23:29:11Z<p>Owenh: /* Linux ALSA driver */</p>
<hr />
<div>__NOTOC__<br />
{| width="100%"<br />
|style="vertical-align:top" |<br />
<div style="margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;"><br />
=== AD1984 ===<br />
This is a ''Analog Devices'' High-Definition Audio controller<br />
<br />
=== Features ===<br />
* Chipset: AD1984<br />
* Interface: HD Audio <br />
</div><br />
|style="vertical-align:top" |<br />
|}<br />
<br />
=== Linux ALSA driver ===<br />
This device isn't supported by current Alsa Driver [http://www.alsa-project.org/alsa-doc/index.php?vendor=vendor-Analog_Devices#matrix] (as of May 25, 2007).<br />
<br />
However, Takashi Iwai has added support to this device in Alsa development version [http://hg.alsa-project.org/alsa-kernel/log?rev=AD1984]... Still have to wait to get it included in the Linux Kernel... Note: It is rather trivial to get this working in a standard kernel right now, It is only 3 patches on top of the stock 1.0.14 code:<br />
<br />
* [http://hg.alsa-project.org/alsa-kernel/rev/958b39f3e8dd Fix Oops with AD1984 thinkpad model]<br />
* [http://hg.alsa-project.org/alsa-kernel/rev/47ca87407c84 Fix AD1984 basic model]<br />
* [http://hg.alsa-project.org/alsa-kernel/rev/ca37aeeeb0ea Fix Thinkpad X61/T61 outputs]<br />
<br />
Alsa-Driver 1.0.14 added some support for this chip, but did not work on my T61; however, using the latest HG/Mercurial makes everything work. I created a Debian package for unstable/sid with the HG alsa that works for me, available at [http://people.debian.org/~jello/alsa-modules-2.6.21-2-686_1.0.15~hg2007070601-1+2.6.21-5_i386.deb]. --[[User:Jello|Jello]] 15:31, 6 July 2007 (UTC)<br />
<br />
amd64 debian packages here: http://www.cse.unsw.edu.au/~jdas417/alsa-modules-2.6.21-2-amd64_1.0.14-1_jda+2.6.21-10.00.Custom_amd64.deb http://www.cse.unsw.edu.au/~jdas417/alsa-modules-2.6.22-1-amd64_1.0.14-1_jda+2.6.22-3_amd64.deb --jashar<br />
<br />
Works with Kernel 2.6.22 and Alsa 1.0.14a<br />
--[[User:Schlodty|Schlodty]] 12:01, 21 July 2007 (UTC)<br />
<br />
Did not get it to work on X61s with either of the above packages. Newer HG packages do support this chip, so alsa 1.0.15 should have full support for this chip. --[[User:hjh|hjh]] 9:09, 27 July 2007 (UTC)<br />
<br />
Debian users (both Stable/Etch and Testing) can use the small [http://www.klabs.be/~fpiat/linux/debian/Lenny_on_Thinkpad_T61/#Sound script] I wrote to patch and build an alsa module package (with module-assistant). --[[User:Fpiat|Fpiat]] 11:45,04 August 2007 (UTC)<br />
<br />
Works with a patched 2.6.22.1 kernel using the 2007/07/20 patch from ftp://ftp.alsa-project.org/pub/kernel-patches/ . Just make sure that you have the PCM channel unmuted and the speaker switch checked. --[[User:Mozz|Mozz]] 17:13, 7 August 2007 (UTC)<br />
<br />
Above patches are in kernel mainline from Kernel 2.6.23-rc1 , it works on my T61 --[[User:Brain79|Brain79]] 22:01, 09 August 2007 (UTC)<br />
<br />
=== Trouble shooting ===<br />
{{WARN|It's really necessary to leave the modem enabled in the BIOS or the hda_intel driver will reutrn azx_get_response timeouts which will lead to a non-working soundchip.<br />
Got that information from a comment from: [http://crypto.riken.go.jp/archives/linux/kernel.org/kernel/people/akpm/patches/2.6/2.6.22-rc6/2.6.22-rc6-mm1/broken-out/git-alsa.patch here] --[[User:Gladiac|Gladiac]] 06:12, 24 July 2007 (UTC)}}<br />
<br />
=== This chip may be found in ===<br />
* {{R61}}<br />
* {{T61}}<br />
* [[:Category:X61|X61]], [[:Category:X61s|X61s]], [[:Category:X61_Tablet|X61 Tablet]]<br />
<br />
=== Datasheets ===<br />
* [http://www.analog.com/en/prod/0,2877,AD1984,00.html Analog Devices page for the AD1984]<br />
<br />
[[Category:Components]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Category:T61&diff=33636Category:T612007-10-02T22:12:01Z<p>Owenh: /* Standard Features */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top" |<br />
<div style="margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;"><br />
=== ThinkPad T61 ===<br />
This pages gives an overview of all ThinkPad T61 related topics.<br />
<br />
==== Standard Features ====<br />
* One of the following processors:<br />
** [[Intel Core 2 Duo (Merom)]] 1.8, 2.0, 2.2, 2.4 GHz 800MHz FSB CPU<br />
* One of the following graphics adapters:<br />
** [[Intel Graphics Media Accelerator X3100]] <br />
** [[nVidia Quadro NVS 140m]] (128MB, 256MB, or 512MB)<br />
* One of the following displays:<br />
** 14.1" TFT with 1280x800 (WXGA) resolution<br />
** 14.1" TFT with 1440x900 (WXGA+) resolution<br />
** 14.1" TFT with 1400x1050 (SXGA+) resolution<br />
** 15.4" TFT with 1280x800 (WXGA) resolution<br />
** 15.4" TFT with 1680x1050 (WSXGA+) resolution<br />
* 512 MB or 1 GB [[PC2-5300]] memory standard upgradable to 4 GB<br />
* 60, 80, 100, 120 or 160GB 5400RPM SATA HDD (100GB available in 7200RPM, 160Go available with encryption)<br />
** [[Full Disk Encryption (FDE)]] Available on some models<br />
* [[AD1984]] HD Audio controller<br />
* [[Ethernet Controllers#Intel Gigabit (10/100/1000)|Intel Gigabit Ethernet Controller]]<br />
* [[UltraBay|UltraBay Slim]] with one of the following:<br />
** [[UltraBay Slim DVD-ROM Drive]]<br />
** [[UltraBay Slim CD-RW/DVD-ROM Combo II Drive]]<br />
** [[UltraBay Slim Super Multi-Burner Drive]]<br />
* [[MiniPCI Express slot]] 1 with one of the following:<br />
** None (empty)<br />
** [[Intel PRO/Wireless 3945ABG Mini-PCI Express Adapter]]<br />
** [[Intel PRO/Wireless 4965AGN Mini-PCI Express Adapter]]<br />
** [[ThinkPad 11a/b/g Wireless LAN Mini Express Adapter]]<br />
** [[ThinkPad 11a/b/g/n Wireless LAN Mini Express Adapter]]<br />
* [[MiniPCI Express slot]] 2 with one of the following:<br />
** None (empty)<br />
** [[Verizon 1xEV-DO WWAN]] (It seems to be a Sierra Wireless MC5720 Modem)<br />
** [[Cingular HSDPA WWAN]] (Sierra Wireless MC8775)<br />
** [[Intel® Turbo Memory hard drive cache]]<br />
* 1 [[CardBus slot]] (Type 2)<br />
* 1 Slot with one of the following:<br />
** [[ExpressCard slot|ExpressCard/54 slot]] <br />
** SmartCard reader<br />
** [[Ricoh_R5C843|4-in-1 Memory reader]]<br />
* [[Embedded Security Subsystem|IBM Embedded Security Subsystem 2.0]]<br />
* [[Active Protection System|IBM Active Protection System]]<br />
* [[Integrated Fingerprint Reader]] on select models<br />
* [[ThinkPad_Bluetooth_with_Enhanced_Data_Rate_(BDC-2)|Bluetooth]] on select models<br />
* [[UltraNav]] (TrackPoint / Touchpad combo)<br />
* IEEE1394 Firewire on select models<br />
* [[Intel Active Management Technology (AMT)]] on select models<br />
* [[Centrino Pro]] on select models<br />
</div><br />
|style="vertical-align:top" |<br />
[[Image:t60-models_nov06.jpg|ThinkPad T61]]<br />
|}<br />
<br />
==== Resources ====<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67709 T61 Product Overview ]<br />
* [http://www-307.ibm.com/pc/support/site.wss/MIGR-67760.html T61 Hardware Maintenance Manual]<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-62465 T60/p Service and Troubleshooting Guide]<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-67686 T61 Setup Guide]<br />
* [http://www5.pc.ibm.com/europe/me.nsf/LenovoDetail?OpenAgent&key=Notebooks:ThinkPad:ThinkPad+T+Series:Data+Sheet:English&&cntry=EUROPE-L T61 DataSheet ]<br />
==== Reviews ====<br />
* [http://www.notebookreview.com/default.asp?newsID=3708 NotebookReview.com], 2007-04-24<br />
* [http://www.pcmag.com/article2/0,1759,2127379,00.asp PcMag.com], 2007-05-09<br />
<br />
==== Linux Installation ====<br />
For instructions on installing linux, see the [[Installation_instructions_for_the_ThinkPad_T61|distribution-specific installation instructions for the T61]].<br />
<br />
[[Category:T Series]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Category:T61&diff=33635Category:T612007-10-02T22:11:30Z<p>Owenh: /* Standard Features */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top" |<br />
<div style="margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;"><br />
=== ThinkPad T61 ===<br />
This pages gives an overview of all ThinkPad T61 related topics.<br />
<br />
==== Standard Features ====<br />
* One of the following processors:<br />
** [[Intel Core 2 Duo (Merom)]] 1.8, 2.0, 2.2, 2.4 GHz 800MHz FSB CPU<br />
* One of the following graphics adapters:<br />
** [[Intel Graphics Media Accelerator X3100]] <br />
** [[nVidia Quadro NVS 140m]] (128MB, 256MB, or 512MB)<br />
* One of the following displays:<br />
** 14.1" TFT display with 1280x800 (WXGA) resolution<br />
** 14.1" TFT display with 1440x900 (WXGA+) resolution<br />
** 14.1" TFT display with 1400x1050 (SXGA+) resolution<br />
** 15.4" TFT display with 1280x800 (WXGA) resolution<br />
** 15.4" TFT display with 1680x1050 (WSXGA+) resolution<br />
* 512 MB or 1 GB [[PC2-5300]] memory standard upgradable to 4 GB<br />
* 60, 80, 100, 120 or 160GB 5400RPM SATA HDD (100GB available in 7200RPM, 160Go available with encryption)<br />
** [[Full Disk Encryption (FDE)]] Available on some models<br />
* [[AD1984]] HD Audio controller<br />
* [[Ethernet Controllers#Intel Gigabit (10/100/1000)|Intel Gigabit Ethernet Controller]]<br />
* [[UltraBay|UltraBay Slim]] with one of the following:<br />
** [[UltraBay Slim DVD-ROM Drive]]<br />
** [[UltraBay Slim CD-RW/DVD-ROM Combo II Drive]]<br />
** [[UltraBay Slim Super Multi-Burner Drive]]<br />
* [[MiniPCI Express slot]] 1 with one of the following:<br />
** None (empty)<br />
** [[Intel PRO/Wireless 3945ABG Mini-PCI Express Adapter]]<br />
** [[Intel PRO/Wireless 4965AGN Mini-PCI Express Adapter]]<br />
** [[ThinkPad 11a/b/g Wireless LAN Mini Express Adapter]]<br />
** [[ThinkPad 11a/b/g/n Wireless LAN Mini Express Adapter]]<br />
* [[MiniPCI Express slot]] 2 with one of the following:<br />
** None (empty)<br />
** [[Verizon 1xEV-DO WWAN]] (It seems to be a Sierra Wireless MC5720 Modem)<br />
** [[Cingular HSDPA WWAN]] (Sierra Wireless MC8775)<br />
** [[Intel® Turbo Memory hard drive cache]]<br />
* 1 [[CardBus slot]] (Type 2)<br />
* 1 Slot with one of the following:<br />
** [[ExpressCard slot|ExpressCard/54 slot]] <br />
** SmartCard reader<br />
** [[Ricoh_R5C843|4-in-1 Memory reader]]<br />
* [[Embedded Security Subsystem|IBM Embedded Security Subsystem 2.0]]<br />
* [[Active Protection System|IBM Active Protection System]]<br />
* [[Integrated Fingerprint Reader]] on select models<br />
* [[ThinkPad_Bluetooth_with_Enhanced_Data_Rate_(BDC-2)|Bluetooth]] on select models<br />
* [[UltraNav]] (TrackPoint / Touchpad combo)<br />
* IEEE1394 Firewire on select models<br />
* [[Intel Active Management Technology (AMT)]] on select models<br />
* [[Centrino Pro]] on select models<br />
</div><br />
|style="vertical-align:top" |<br />
[[Image:t60-models_nov06.jpg|ThinkPad T61]]<br />
|}<br />
<br />
==== Resources ====<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67709 T61 Product Overview ]<br />
* [http://www-307.ibm.com/pc/support/site.wss/MIGR-67760.html T61 Hardware Maintenance Manual]<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-62465 T60/p Service and Troubleshooting Guide]<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-67686 T61 Setup Guide]<br />
* [http://www5.pc.ibm.com/europe/me.nsf/LenovoDetail?OpenAgent&key=Notebooks:ThinkPad:ThinkPad+T+Series:Data+Sheet:English&&cntry=EUROPE-L T61 DataSheet ]<br />
==== Reviews ====<br />
* [http://www.notebookreview.com/default.asp?newsID=3708 NotebookReview.com], 2007-04-24<br />
* [http://www.pcmag.com/article2/0,1759,2127379,00.asp PcMag.com], 2007-05-09<br />
<br />
==== Linux Installation ====<br />
For instructions on installing linux, see the [[Installation_instructions_for_the_ThinkPad_T61|distribution-specific installation instructions for the T61]].<br />
<br />
[[Category:T Series]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=List_of_DMI_IDs&diff=33562List of DMI IDs2007-09-30T03:02:44Z<p>Owenh: /* Adding entries */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
This page maintains a database of [http://en.wikipedia.org/wiki/Desktop_Management_Interface DMI] information which can be used to identify ThinkPad models. It is intended as an aid for driver development.<br />
{{HELP|We need more information about older models, especially those released before 2004. Please [[#Adding_entries|add your model]] to the database.}}<br />
{{NOTE|If your ThinkPad is not using the [[BIOS Upgrade Downloads|latest BIOS]], and you would be willing to [[BIOS Upgrade|upgrade your BIOS]], please add your ThinkPad to this table twice: '''before''' and '''after''' the BIOS upgrade. This information helps us a great deal, so your contribution would be very appreciated.}}<br />
|}<br />
<br />
==DMI ID database==<br />
<br />
<div style="font-size: 80%"><br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|-<br />
! Model<br />
! <tt>system-<br />manufa<br />cturer</tt><br />
! <tt>system-<br />product-<br />name</tt><br />
! <tt>system-<br />version</tt><br />
! <tt>baseboard-<br />manufa<br />cturer</tt><br />
! <tt>baseboard-<br />product-<br />name</tt><br />
! <tt>baseboard-<br />version</tt><br />
! <tt>chassis-<br />manufa<br />cturer</tt><br />
! <tt>chassis-<br />version</tt><br />
! <tt>bios-<br />vendor</tt><br />
! <tt>bios-<br />version</tt><br />
! <tt>bios-<br />release-<br />date</tt><br />
! Embedded controller<br />
! Notes<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
====Numbered series====<br />
|-<br />
| {{600E}} 2645-5AU<br />
|| IBM || 26455AU || Not Available || IBM || 26455AU || Not Available || IBM || Not Available || IBM || INET36WW || 11/20/1999<br />
||<br />
||<br />
|-<br />
| {{600X}} 2645-5FU<br />
|| IBM || 26455FU || Not Available || IBM || 26455FU || Not Available || IBM || Not Available || IBM || INET55WW || 11/30/1999<br />
||<br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====A series====<br />
|-<br />
| {{A21m}} 2628-FSG<br />
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET24WW (1.02b) || 12/19/2000 <br />
|| <br />
||<br />
|-<br />
| {{A21m}} 2628-FSG<br />
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET36WW (1.09 ) || 05/08/2003 <br />
||<br />
||<br />
|-<br />
| {{A22p}} 2629-USG<br />
|| IBM || 2629USG || Not Available || IBM || 2629USG || Not Available || IBM || Not Available || IBM || KYET36WW (1.09a) || 10/17/2002 <br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{A31}} 2652-PBU<br />
|| IBM || 2652PBU || Not Available || IBM || 2652PBU || Not Available || IBM || Not Available || IBM || 1NET15WW (1.09 ) || 04/06/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1NHT04WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{A31p}} 2653H6U<br />
|| IBM || 2653H6U || Not Available || IBM || 2653H6U || Not Available || IBM || Not Available || IBM || 1GET31WW (1.03 ) || 07/23/2002<br />
||<br />
|| {{WARN|Missing EC string, extremely outdated BIOS}}{{HELP|We need a report to know if the latest BIOS fixes the missing EC string}}<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====G series====<br />
|-<br />
| {{G41}} 2881-75M<br />
|| IBM || 288175M || ThinkPad G41 || IBM || 288175M || Not Available || IBM || Not Available || IBM || 1XET47WW (1.06 ) || 01/14/2005<br />
||<br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
====R series====<br />
|-<br />
| {{R40}} 2681-5UU<br />
|| IBM || 26815UU || Not Available || IBM || 26815UU || Not Available || IBM || Not Available || IBM || 1OET57WW (1.23 ) || 03/23/2005 <br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{R40}} 2681-HSG<br />
|| IBM || 2681HSG || Not Available || IBM || 2681HSG || Not Available || IBM || Not Available || IBM || 1OET61WW (1.27 ) || 06/29/2006<br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{R40}} 2722-B3G<br />
|| IBM || 2722B3G || Not Available || IBM || 2722B3G || Not Available || IBM || Not Available || IBM || 1PET62WW (1.30 ) || 09/29/2005<br />
||<br />
||<br />
|-<br />
| {{R40}} 2897-B4U<br />
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1PET52WW (1.20 ) || 03/03/2004<br />
||<br />
||<br />
|-<br />
| {{R40e}} 2684-L8G<br />
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1SET62WW (1.30 ) || 07/09/2004<br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{R50}} 1829-7QG<br />
|| IBM || 0123456 || ThinkPad R50 || IBM || 0123456 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
||<br />
|-<br />
|{{R50e}} 1834-JAG<br />
|| IBM || 1834JAG || ThinkPad R50e || IBM || 1834JAG || Not Available || IBM || Not Available || IBM || 1WET82WW (2.02 ) || 02/21/2005<br />
|| <nowiki>Handle 0x0022, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
|{{R50p}} 1832-2AG<br />
|| IBM || 18322AG || ThinkPad R50p || IBM || 18322AG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 1829-DRG<br />
|| IBM || 1829DRG || ThinkPad R51 || IBM || 1829DRG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a ]-</nowiki> <br />
||<br />
|-<br />
| {{R51}} 1829-9MG<br />
|| IBM || 18299MG || ThinkPad R51 || IBM || 18299MG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 1829-L7G<br />
|| IBM || 1829L7G || ThinkPad R51 || IBM || 1829L7G || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT70WW-3.03 ]-</nowiki><br />
||<br />
|- <br />
| {{R51}} [[1830-DG4]]<br />
|| IBM || 1830DG4 || ThinkPad R51 || IBM || 1830DG4 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> ||<br />
|-<br />
| {{R51}} 1836-GEU<br />
|| IBM || 1836GEU || ThinkPad R51 || IBM || 1836GEU || Not Available || IBM || Not Available || IBM || 1RETDLWW (3.17 ) || 07/27/2005 || <nowiki>Handle 0x0029, DMI type 11, 5 bytes. String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 2883-ELU<br />
|| IBM || 2883ELU || ThinkPad R51 || IBM || 2883ELU || Not Available || IBM || Not Available || IBM || 1VET69WW (1.27 ) || 03/03/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad H || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
|| {{NOTE|Weird system version, this bug is known fixed in latest BIOS}}<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET68WW (1.28 ) || 11/15/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET69WW (1.29 ) || 12/06/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1847-W62<br />
|| IBM || 1847W62 || ThinkPad . || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
|| {{NOTE|Weird system version, this bug is known fixed in latest BIOS}}<br />
|-<br />
| {{R52}} 1847-W62<br />
|| IBM || 1847W62 || ThinkPad R52 || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1858-6MM<br />
|| IBM || 18586MM || ThinkPad R52 || IBM || 18586MM || Not Available || IBM || Not Available || IBM || 70ET40WW (1.04 ) || 06/02/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1858-6SM<br />
|| IBM || 18586SM || ThinkPad R52 || IBM || 18586SM || Not Available || IBM || Not Available || IBM || 70ET57WW (1.17 ) || 07/15/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki> ||<br />
|-<br />
| {{R52}} 1846-4CG<br />
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT15WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-4CG<br />
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{R52}} 1846-B5G<br />
|| IBM || 1846B5G || ThinkPad H || IBM || 1846B5G || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R60e}} 0657-4TG<br />
|| LENOVO || 06574TG || ThinkPad R60e || LENOVO || 06574TG || Not Available || LENOVO || Not Available || LENOVO || 7EET18WW (1.04 ) || 07/28/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7EHT13WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9456-6FG<br />
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9456-6FG<br />
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CETB7WW (2.07 ) || 11/13/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9461-54G<br />
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9461-54G<br />
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CETC1WW (2.11 ) || 01/09/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
|| {{NOTE|With this bios version the brightness control buttons don't work for kernel < 2.6.20}}<br />
|-<br />
| {{R60}} 9461-DXG<br />
|| LENOVO || 9461DXG || ThinkPad R60 || LENOVO || 9461DXG || Not Available || LENOVO || Not Available || LENOVO || 7CETB6WW (2.06 ) || 10/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
|-<br />
| {{R60}} 9462-GAG<br />
|| LENOVO || 9462GAG || ThinkPad R60 || LENOVO || 9462GAG || Not Available || LENOVO || Not Available || LENOVO || 7CETB5WW (2.05 ) || 10/13/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki> ||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====S series====<br />
|-<br />
| {{s30}} 2639-4WJ<br />
|| IBM || 26394WJ || Not Available || IBM || 2609BS1 || Not Available || IBM || Not Available || IBM || 18ET45WW (1.45) || 07/10/2001<br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====T series====<br />
|-<br />
| {{T20}} 2647-UC2<br />
|| IBM || 2647UC2 || Not Available || IBM || 2647UC2 || Not Available || IBM || Not Available || IBM || IYET45WW (1.08a) || 12/21/1999<br />
||<br />
|| {{WARN|Very outdated BIOS}}<br />
|-<br />
| {{T21}} 2647-8AU<br />
|| IBM || 26478AU || Not Available || IBM || 26478AU || Not Available || IBM || Not Available || IBM || KZET34WW (1.16 ) || 04/28/2004<br />
||<br />
||<br />
|-<br />
| {{T22}} 2647-4EG<br />
|| IBM || 26474EG || Not Available || IBM || 26474EG || Not Available || IBM || Not Available || IBM || 16ET31WW (1.11 ) || 03/20/2003 <br />
||<br />
||<br />
|-<br />
| {{T22}} 2647-8EU<br />
|| IBM || 26478EU || Not Available || IBM || 26478EU || Not Available || IBM || Not Available || IBM || 16ET32WW (1.12 ) || 04/27/2004<br />
||<br />
||<br />
|- <br />
| {{T23}} 2647-4NU<br />
|| IBM || 26474NU || Not Available || IBM || 26474NU || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a ]-</nowiki><br />
||<br />
|-<br />
| {{T23}} 2647-8MG<br />
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET56WW (1.13 ) || 07/02/2002<br />
||<br />
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}<br />
|-<br />
| {{T23}} 2647-8MG<br />
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-85G<br />
|| IBM || 236685G || Not Available || IBM || 236685G || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1IHT18WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-GU1<br />
|| IBM || 2366GU1 || Not Available || IBM || 2366GU1 || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1IHT19WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-JBU<br />
|| IBM || 2366JBU || Not Available || IBM || 2366JBU || Not Available || IBM || Not Available || IBM || 1IET71WW (2.10 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1IHT20WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T40}} 2378-D2U<br />
|| IBM || 2378D2U || ThinkPad T40 || IBM || 2378D2U || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004<br />
|| <br />
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}<br />
|-<br />
| {{T40p}} 2373-G1G<br />
|| IBM || 2373G1G || ThinkPad T40p || IBM || 2373G1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2373-W63<br />
|| IBM || 2373W63 || ThinkPad T41 || IBM || 2373W63 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> <br />
||<br />
|-<br />
| {{T41}} 2373-XNX<br />
|| IBM || 2373XNX || ThinkPad T41 || IBM || 2373XNX || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2373-2FG<br />
|| IBM || 23732FG || ThinkPad T41 || IBM || 23732FG || Not Available || IBM || Not Available || IBM || 1RET84WW (2.11 ) || 10/30/2003<br />
||<br />
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}<br />
|-<br />
| {{T41}} 2379-DJU<br />
|| IBM || 2379DJU || ThinkPad T41 || IBM || 2379DJU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> ||<br />
|-<br />
| {{T41p}} 2373-GHG <br />
|| IBM || 2373GHG || ThinkPad T41p || IBM || 2373GHG || Not Available || IBM || Not Available || IBM || 1RETDIWW (3.14 ) || 01/20/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41p}} 2373-GEG<br />
|| IBM || 2373GEG || ThinkPad T41p || IBM || 2373GEG || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005<br />
|| <nowiki> Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41p}} 2373-GJJ<br />
|| IBM || 2373GJJ || ThinkPad T41p || IBM || 2373GJJ || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-FWG<br />
|| IBM || 2373FWG || ThinkPad T42 || IBM || 2373FWG || Not Available || IBM || Not Available || IBM || 1RETDHWW (3.13 ) || 10/29/2004<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-M1G<br />
|| IBM || 2373M1G || ThinkPad T42 || IBM || 2373M1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|- <br />
| {{T42}} 2374-WEH<br />
|| IBM || 2374WEH || ThinkPad T42 || IBM || 2374WEH || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> <br />
||<br />
|-<br />
| {{T42}} 2378-FVU<br />
|| IBM || 2378FVU || ThinkPad T42 || IBM || 2378FVU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-KXU<br />
|| IBM || 2373KXU || ThinkPad T42p || IBM || 2373KXU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-KUU<br />
|| IBM || 2373KUU || ThinkPad T42p || IBM || 2373KUU || Not Available || IBM || Not Available || IBM || 1RETDMWW (3.18 ) || 09/15/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-GYG<br />
|| IBM || 2373GYG || ThinkPad T42p || IBM || 2373GYG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2374-CP5<br />
|| IBM || 2374CP5 || ThinkPad T42p || IBM || 2374CP5 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2379-DYU<br />
|| IBM || 2379DYU || ThinkPad T42p || IBM || 2379DYU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2372-Q2G<br />
|| IBM || 2373Q2G || ThinkPad T42p || IBM || 2373Q2G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 1871-4AG<br />
|| IBM || 18714AG || ThinkPad T43 || IBM || 18714AG || Not Available || IBM || Not Available || IBM || 70ET64WW (1.24 ) || 02/13/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT27WW-1.04 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{T43}} 1871-F1G<br />
|| IBM || 1871F1G || ThinkPad T43 || IBM || 1871F1G || Not Available || IBM || Not Available || IBM || 70ET61WW (1.21 ) || 11/01/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2686-DGU<br />
|| IBM || 2686DGU || ThinkPad T43 || IBM || 2686DGU || Not Available || IBM || Not Available || IBM || 1YET62WW (1.27 ) || 05/18/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1YHT29WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2669-WE5<br />
|| IBM || 2669WE5 || ThinkPad T43 || IBM || 2669WE5 || Not Available || IBM || Not Available || IBM || 1YET56WW (1.21 ) || 07/06/2005 <br />
|| <nowiki>String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
|| {{NOTE|User reports this is really a 2669-CEU with 1GB RAM + BlueTooth, and not a 2669-WE5 (unverified if this makes sense)}}<br />
|-<br />
| {{T43p}} 2668-G2G<br />
|| IBM || 2668G2G || ThinkPad T43p || IBM || 2668G2G || Not Available || IBM || Not Available || IBM || 1YET47WW (1.08 ) || 06/09/2005 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43p}} 2687-D5U<br />
|| IBM || 2687D5U || ThinkPad T43p || IBM || 2687D5U || Not Available || IBM || Not Available || IBM || 1YET59WW (1.24 ) || 11/07/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1952-W5R<br />
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ET61WW (1.06 ) || 05/24/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1952-W5R<br />
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ETD2WW (2.12 ) || 04/12/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{T60}} 2007-49G<br />
|| LENOVO || 200749G || ThinkPad T60 || LENOVO || 200749G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 2007-77G<br />
|| LENOVO || 200777G || ThinkPad T60 || LENOVO || 200777G || Not Available || LENOVO || Not Available || LENOVO || 79ETD1WW (2.11 ) || 03/15/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-83U<br />
|| LENOVO || 200783U || ThinkPad T60p || LENOVO || 200783U || Not Available || LENOVO || Not Available || LENOVO || 79ET60WW (1.05a) || 04/18/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[79HT43WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93G<br />
|| LENOVO || 200793G || ThinkPad T60p || LENOVO || 200793G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET66WW (1.10 ) || 08/02/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-ZK4<br />
|| LENOVO || 2007ZK4 || ThinkPad T60p || LENOVO || 2007ZK4 || Not Available || LENOVO || Not Available || LENOVO || 79ETD3WW (2.13 ) || 04/30/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{T60p}} 2613-ESU<br />
|| LENOVO || 2613ESU || ThinkPad T60p || LENOVO || 2613ESU || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2623-DDU<br />
|| LENOVO || 2623DDU || ThinkPad T60p || LENOVO || 2623DDU || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 7662-XDU<br />
|| LENOVO || 7662XDU || ThinkPad T61 || LENOVO || 7662XDU || 7662XDU|| LENOVO || Not Available || LENOVO || 7LET37WW (1.07 ) || 04/17/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7KHT19WW-1.03 ]-</nowiki><br />
|| {{WARN|BIOS and EC firmware have different IDs}}<br />
|-<br />
| {{T61}} 7661-A56<br />
|| LENOVO || 7661A56 || ThinkPad T61 || LENOVO || 7661A56 || Not Available || LENOVO || Not Available || LENOVO || 7LET39WW (1.09 ) || 05/14/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT21WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 8897-CTO<br />
|| LENOVO || 8897CTO || ThinkPad T61 || LENOVO || 8897CTO || Not Available || LENOVO || Not Available || LENOVO || 7LET52WW (1.22 ) || 08/27/2007<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====X series====<br />
|-<br />
| {{X20}} 266231G<br />
|| IBM || 266231G || Not Available || IBM || 266231G || Not Available || IBM || Not Available || IBM || IZET9DWW (2.25 ) || 04/17/2003<br />
||<br />
|-<br />
|| 266232G || IBM || 266232G || Not Available || IBM || 266232G || Not Available || IBM || Not Available || IBM || IZET9AWW (2.22 ) || 09/11/2002<br />
|| <nowiki></nowiki> ||<br />
||<br />
|-<br />
| {{X23}} 2662EBG<br />
|| IBM || 2662EBG || Not Available || IBM || 2662EBG || Not Available || IBM || Not Available || IBM || 1DET70WW (1.32 ) || 06/10/2003<br />
|| <nowiki></nowiki> ||<br />
|-<br />
| {{X24}} 2662-MPU<br />
|| IBM || 62MPUFX || Not Available || IBM || 62MPUFX || Not Available || IBM || Not Available || IBM || 1DET67WW (1.29 ) || 12/18/2002<br />
||<br />
||<br />
|- <br />
| {{X30}} 2672-4HU<br />
|| IBM || 26724HU || Not Available || IBM || 26724HU || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06 ]-</nowiki> ||<br />
|-<br />
| {{X30}} 2672-PG3<br />
|| IBM || 2672PG3 || Not Available || IBM || 2672PG3 || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06 ]-</nowiki> <br />
||<br />
|-<br />
| {{X31}} 2672-JXU<br />
|| IBM || 2672JXU || ThinkPad X31 || IBM || 2672JXU || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{X32}} 2884-A3U<br />
|| IBM || 2884A3U || ThinkPad X32 || IBM || 2884A3U || Not Available || IBM || Not Available || IBM || 1QET94WW (3.00d) || 01/23/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT22WW-1.07b ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2386-H4G<br />
|| IBM || 2386H4G || ThinkPad X40 || IBM || 2386H4G || Not Available || IBM || Not Available || IBM || 1UET92WW (1.42 ) || 09/16/2004 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1UHT82WW-1.32 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2371-Y29<br />
|| IBM || 2371Y29 || ThinkPad X40 || IBM || 2371Y29 || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHTA6WW-1.56 ]-</nowiki> ||<br />
|-<br />
| {{X41}} 2525-HU1<br />
|| IBM || 2525HU1 || ThinkPad X41 || IBM || 2525HU1 || Not Available || IBM || Not Available || IBM || 74ET48WW (1.17a) || 06/07/2005<br />
|| <nowiki>Handle 0x0025, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[74HT25WW-1.00 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1709-47U<br />
|| LENOVO || 170947U || ThinkPad X60 || LENOVO || 170947U || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1709-GDJ<br />
|| LENOVO || 1709GDJ || ThinkPad X60 || LENOVO || 1709GDJ || Not Available || LENOVO || Not Available || LENOVO || 7BETC2WW (2.03 ) || 10/16/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT36WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1702-55G<br />
|| LENOVO || 170255G || ThinkPad X60s || LENOVO || 170255G || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1702-5FG<br />
|| LENOVO || 17025FG || ThinkPad X60s || LENOVO || 17025FG || Not Available || LENOVO || Not Available || LENOVO || 7BET49WW (1.09 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT34WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1704-56G<br />
|| LENOVO || 170456G || ThinkPad X60s || LENOVO || 170456G || Not Available || LENOVO || Not Available || LENOVO || 7BET43WW (1.03 ) || 02/13/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7BHT28WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====Z series====<br />
|-<br />
| {{Z60t}} 2511-FEU<br />
|| IBM || 2511FEU || ThinkPad Z60t || IBM || 2511FEU || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{Z60t}} 2511-FFG<br />
|| IBM || 2511FFG || ThinkPad Z60t || IBM || 2511FFG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT57WW-1.17 ]-</nowiki> ||<br />
|- <br />
| {{Z60m}} 2529-ETG<br />
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET59WW (1.19 ) || 04/24/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[77HT54WW-1.14 ]-</nowiki> ||<br />
|-<br />
| {{Z60m}} 2529-ETG<br />
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18 ]-</nowiki> ||<br />
|-<br />
| {{Z60m}} 2529-FBG<br />
|| IBM || 2529FBG || ThinkPad Z60m || IBM || 2529FBG || Not Available || IBM || Not Available || IBM || 77ET62WW (1.22 ) || 11/21/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18 ]-</nowiki> ||<br />
|- <br />
| {{Z60m}} 2529-FKG<br />
|| IBM || 2529FKG || ThinkPad Z60m || IBM || 2529FKG || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005<br />
|| String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02 ]-<br />
||<br />
|-<br />
| {{Z61m}} 9453-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET48WW (1.08 ) || 05/26/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7FHT21WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61m}} 9543-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki> ||<br />
|-<br />
| {{Z61m}} 9543-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET93WW (2.11 ) || 11/10/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{Z61m}} 9453-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki> ||<br />
|-<br />
| {{Z61p}} 9453-A12<br />
|| LENOVO || 9453A12 || ThinkPad Z61p || LENOVO || 9453A12 || Not Available || LENOVO || Not Available || LENOVO || 7FET45WW (1.05 ) || 04/20/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7FHT19WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61p}} 9450-3AU<br />
|| LENOVO || 94503AU || ThinkPad Z61p || LENOVO || 94503AU || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9440-2CU<br />
|| LENOVO || 94402CU || ThinkPad Z61t || LENOVO || 94402CU || Not Available || LENOVO || Not Available || LENOVO || 7FET50WW (1.10 ) || 06/20/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT22WW-1.04 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9443-4GG<br />
|| LENOVO || 94434GG || ThinkPad Z61t || LENOVO || 94434GG || Not Available || LENOVO || Not Available || LENOVO || 7FET96WW (2.14 ) || 12/25/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9440-CTO<br />
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FET99WW (2.17 ) || 04/17/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki> ||<br />
|}<br />
</div><br />
<br />
==Adding entries==<br />
<br />
Click the "Edit" link on the appropriate series above and add an entry of the following form:<br />
:<tt>| </tt><i>description of your model</i><br />
:<i>data line 1</i><br />
:<i>data line 2</i><br />
:<tt>||</tt><br />
:<tt>|-</tt><br />
<br />
where the two data lines are generated by the following <tt>bash</tt> command:<br />
<br />
<pre><br />
for X in system-{manufacturer,product-name,version} \<br />
baseboard-{manufacturer,product-name,version} \<br />
chassis-{manufacturer,version} bios-{vendor,version,release-date}; do \<br />
echo -n "|| `sudo /usr/sbin/dmidecode -s $X` "; done; \<br />
sudo /usr/sbin/dmidecode | perl -0777 -ne \<br />
'm/\n(.*).\n.*\n(.*Embedded Cont.*)\n/i; print "\n|| <nowiki><</nowiki>nowiki>$1$2</nowiki>\n"'<br />
</pre><br />
<br />
While at it, you may also want to test [[tp_smapi]] and update its [[tp_smapi#Model-specific_status|model-specific status table]].<br />
<br />
==Software using ThinkPad DMI IDs==<br />
* [[HDAPS]] driver whitelist<br />
* [[tp_smapi]] driver whitelist<br />
* [[ibm-acpi]]/thinkpad-acpi driver quirk list</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=List_of_DMI_IDs&diff=33561List of DMI IDs2007-09-30T02:58:17Z<p>Owenh: /* DMI ID database */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
This page maintains a database of [http://en.wikipedia.org/wiki/Desktop_Management_Interface DMI] information which can be used to identify ThinkPad models. It is intended as an aid for driver development.<br />
{{HELP|We need more information about older models, especially those released before 2004. Please [[#Adding_entries|add your model]] to the database.}}<br />
{{NOTE|If your ThinkPad is not using the [[BIOS Upgrade Downloads|latest BIOS]], and you would be willing to [[BIOS Upgrade|upgrade your BIOS]], please add your ThinkPad to this table twice: '''before''' and '''after''' the BIOS upgrade. This information helps us a great deal, so your contribution would be very appreciated.}}<br />
|}<br />
<br />
==DMI ID database==<br />
<br />
<div style="font-size: 80%"><br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|-<br />
! Model<br />
! <tt>system-<br />manufa<br />cturer</tt><br />
! <tt>system-<br />product-<br />name</tt><br />
! <tt>system-<br />version</tt><br />
! <tt>baseboard-<br />manufa<br />cturer</tt><br />
! <tt>baseboard-<br />product-<br />name</tt><br />
! <tt>baseboard-<br />version</tt><br />
! <tt>chassis-<br />manufa<br />cturer</tt><br />
! <tt>chassis-<br />version</tt><br />
! <tt>bios-<br />vendor</tt><br />
! <tt>bios-<br />version</tt><br />
! <tt>bios-<br />release-<br />date</tt><br />
! Embedded controller<br />
! Notes<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
====Numbered series====<br />
|-<br />
| {{600E}} 2645-5AU<br />
|| IBM || 26455AU || Not Available || IBM || 26455AU || Not Available || IBM || Not Available || IBM || INET36WW || 11/20/1999<br />
||<br />
||<br />
|-<br />
| {{600X}} 2645-5FU<br />
|| IBM || 26455FU || Not Available || IBM || 26455FU || Not Available || IBM || Not Available || IBM || INET55WW || 11/30/1999<br />
||<br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====A series====<br />
|-<br />
| {{A21m}} 2628-FSG<br />
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET24WW (1.02b) || 12/19/2000 <br />
|| <br />
||<br />
|-<br />
| {{A21m}} 2628-FSG<br />
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET36WW (1.09 ) || 05/08/2003 <br />
||<br />
||<br />
|-<br />
| {{A22p}} 2629-USG<br />
|| IBM || 2629USG || Not Available || IBM || 2629USG || Not Available || IBM || Not Available || IBM || KYET36WW (1.09a) || 10/17/2002 <br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{A31}} 2652-PBU<br />
|| IBM || 2652PBU || Not Available || IBM || 2652PBU || Not Available || IBM || Not Available || IBM || 1NET15WW (1.09 ) || 04/06/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1NHT04WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{A31p}} 2653H6U<br />
|| IBM || 2653H6U || Not Available || IBM || 2653H6U || Not Available || IBM || Not Available || IBM || 1GET31WW (1.03 ) || 07/23/2002<br />
||<br />
|| {{WARN|Missing EC string, extremely outdated BIOS}}{{HELP|We need a report to know if the latest BIOS fixes the missing EC string}}<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====G series====<br />
|-<br />
| {{G41}} 2881-75M<br />
|| IBM || 288175M || ThinkPad G41 || IBM || 288175M || Not Available || IBM || Not Available || IBM || 1XET47WW (1.06 ) || 01/14/2005<br />
||<br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
====R series====<br />
|-<br />
| {{R40}} 2681-5UU<br />
|| IBM || 26815UU || Not Available || IBM || 26815UU || Not Available || IBM || Not Available || IBM || 1OET57WW (1.23 ) || 03/23/2005 <br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{R40}} 2681-HSG<br />
|| IBM || 2681HSG || Not Available || IBM || 2681HSG || Not Available || IBM || Not Available || IBM || 1OET61WW (1.27 ) || 06/29/2006<br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{R40}} 2722-B3G<br />
|| IBM || 2722B3G || Not Available || IBM || 2722B3G || Not Available || IBM || Not Available || IBM || 1PET62WW (1.30 ) || 09/29/2005<br />
||<br />
||<br />
|-<br />
| {{R40}} 2897-B4U<br />
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1PET52WW (1.20 ) || 03/03/2004<br />
||<br />
||<br />
|-<br />
| {{R40e}} 2684-L8G<br />
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1SET62WW (1.30 ) || 07/09/2004<br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{R50}} 1829-7QG<br />
|| IBM || 0123456 || ThinkPad R50 || IBM || 0123456 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
||<br />
|-<br />
|{{R50e}} 1834-JAG<br />
|| IBM || 1834JAG || ThinkPad R50e || IBM || 1834JAG || Not Available || IBM || Not Available || IBM || 1WET82WW (2.02 ) || 02/21/2005<br />
|| <nowiki>Handle 0x0022, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
|{{R50p}} 1832-2AG<br />
|| IBM || 18322AG || ThinkPad R50p || IBM || 18322AG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 1829-DRG<br />
|| IBM || 1829DRG || ThinkPad R51 || IBM || 1829DRG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a ]-</nowiki> <br />
||<br />
|-<br />
| {{R51}} 1829-9MG<br />
|| IBM || 18299MG || ThinkPad R51 || IBM || 18299MG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 1829-L7G<br />
|| IBM || 1829L7G || ThinkPad R51 || IBM || 1829L7G || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT70WW-3.03 ]-</nowiki><br />
||<br />
|- <br />
| {{R51}} [[1830-DG4]]<br />
|| IBM || 1830DG4 || ThinkPad R51 || IBM || 1830DG4 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> ||<br />
|-<br />
| {{R51}} 1836-GEU<br />
|| IBM || 1836GEU || ThinkPad R51 || IBM || 1836GEU || Not Available || IBM || Not Available || IBM || 1RETDLWW (3.17 ) || 07/27/2005 || <nowiki>Handle 0x0029, DMI type 11, 5 bytes. String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 2883-ELU<br />
|| IBM || 2883ELU || ThinkPad R51 || IBM || 2883ELU || Not Available || IBM || Not Available || IBM || 1VET69WW (1.27 ) || 03/03/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad H || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
|| {{NOTE|Weird system version, this bug is known fixed in latest BIOS}}<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET68WW (1.28 ) || 11/15/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET69WW (1.29 ) || 12/06/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1847-W62<br />
|| IBM || 1847W62 || ThinkPad . || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
|| {{NOTE|Weird system version, this bug is known fixed in latest BIOS}}<br />
|-<br />
| {{R52}} 1847-W62<br />
|| IBM || 1847W62 || ThinkPad R52 || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1858-6MM<br />
|| IBM || 18586MM || ThinkPad R52 || IBM || 18586MM || Not Available || IBM || Not Available || IBM || 70ET40WW (1.04 ) || 06/02/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1858-6SM<br />
|| IBM || 18586SM || ThinkPad R52 || IBM || 18586SM || Not Available || IBM || Not Available || IBM || 70ET57WW (1.17 ) || 07/15/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki> ||<br />
|-<br />
| {{R52}} 1846-4CG<br />
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT15WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-4CG<br />
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{R52}} 1846-B5G<br />
|| IBM || 1846B5G || ThinkPad H || IBM || 1846B5G || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R60e}} 0657-4TG<br />
|| LENOVO || 06574TG || ThinkPad R60e || LENOVO || 06574TG || Not Available || LENOVO || Not Available || LENOVO || 7EET18WW (1.04 ) || 07/28/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7EHT13WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9456-6FG<br />
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9456-6FG<br />
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CETB7WW (2.07 ) || 11/13/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9461-54G<br />
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9461-54G<br />
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CETC1WW (2.11 ) || 01/09/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
|| {{NOTE|With this bios version the brightness control buttons don't work for kernel < 2.6.20}}<br />
|-<br />
| {{R60}} 9461-DXG<br />
|| LENOVO || 9461DXG || ThinkPad R60 || LENOVO || 9461DXG || Not Available || LENOVO || Not Available || LENOVO || 7CETB6WW (2.06 ) || 10/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
|-<br />
| {{R60}} 9462-GAG<br />
|| LENOVO || 9462GAG || ThinkPad R60 || LENOVO || 9462GAG || Not Available || LENOVO || Not Available || LENOVO || 7CETB5WW (2.05 ) || 10/13/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki> ||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====S series====<br />
|-<br />
| {{s30}} 2639-4WJ<br />
|| IBM || 26394WJ || Not Available || IBM || 2609BS1 || Not Available || IBM || Not Available || IBM || 18ET45WW (1.45) || 07/10/2001<br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====T series====<br />
|-<br />
| {{T20}} 2647-UC2<br />
|| IBM || 2647UC2 || Not Available || IBM || 2647UC2 || Not Available || IBM || Not Available || IBM || IYET45WW (1.08a) || 12/21/1999<br />
||<br />
|| {{WARN|Very outdated BIOS}}<br />
|-<br />
| {{T21}} 2647-8AU<br />
|| IBM || 26478AU || Not Available || IBM || 26478AU || Not Available || IBM || Not Available || IBM || KZET34WW (1.16 ) || 04/28/2004<br />
||<br />
||<br />
|-<br />
| {{T22}} 2647-4EG<br />
|| IBM || 26474EG || Not Available || IBM || 26474EG || Not Available || IBM || Not Available || IBM || 16ET31WW (1.11 ) || 03/20/2003 <br />
||<br />
||<br />
|-<br />
| {{T22}} 2647-8EU<br />
|| IBM || 26478EU || Not Available || IBM || 26478EU || Not Available || IBM || Not Available || IBM || 16ET32WW (1.12 ) || 04/27/2004<br />
||<br />
||<br />
|- <br />
| {{T23}} 2647-4NU<br />
|| IBM || 26474NU || Not Available || IBM || 26474NU || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a ]-</nowiki><br />
||<br />
|-<br />
| {{T23}} 2647-8MG<br />
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET56WW (1.13 ) || 07/02/2002<br />
||<br />
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}<br />
|-<br />
| {{T23}} 2647-8MG<br />
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-85G<br />
|| IBM || 236685G || Not Available || IBM || 236685G || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1IHT18WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-GU1<br />
|| IBM || 2366GU1 || Not Available || IBM || 2366GU1 || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1IHT19WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-JBU<br />
|| IBM || 2366JBU || Not Available || IBM || 2366JBU || Not Available || IBM || Not Available || IBM || 1IET71WW (2.10 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1IHT20WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T40}} 2378-D2U<br />
|| IBM || 2378D2U || ThinkPad T40 || IBM || 2378D2U || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004<br />
|| <br />
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}<br />
|-<br />
| {{T40p}} 2373-G1G<br />
|| IBM || 2373G1G || ThinkPad T40p || IBM || 2373G1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2373-W63<br />
|| IBM || 2373W63 || ThinkPad T41 || IBM || 2373W63 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> <br />
||<br />
|-<br />
| {{T41}} 2373-XNX<br />
|| IBM || 2373XNX || ThinkPad T41 || IBM || 2373XNX || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2373-2FG<br />
|| IBM || 23732FG || ThinkPad T41 || IBM || 23732FG || Not Available || IBM || Not Available || IBM || 1RET84WW (2.11 ) || 10/30/2003<br />
||<br />
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}<br />
|-<br />
| {{T41}} 2379-DJU<br />
|| IBM || 2379DJU || ThinkPad T41 || IBM || 2379DJU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> ||<br />
|-<br />
| {{T41p}} 2373-GHG <br />
|| IBM || 2373GHG || ThinkPad T41p || IBM || 2373GHG || Not Available || IBM || Not Available || IBM || 1RETDIWW (3.14 ) || 01/20/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41p}} 2373-GEG<br />
|| IBM || 2373GEG || ThinkPad T41p || IBM || 2373GEG || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005<br />
|| <nowiki> Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41p}} 2373-GJJ<br />
|| IBM || 2373GJJ || ThinkPad T41p || IBM || 2373GJJ || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-FWG<br />
|| IBM || 2373FWG || ThinkPad T42 || IBM || 2373FWG || Not Available || IBM || Not Available || IBM || 1RETDHWW (3.13 ) || 10/29/2004<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-M1G<br />
|| IBM || 2373M1G || ThinkPad T42 || IBM || 2373M1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|- <br />
| {{T42}} 2374-WEH<br />
|| IBM || 2374WEH || ThinkPad T42 || IBM || 2374WEH || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> <br />
||<br />
|-<br />
| {{T42}} 2378-FVU<br />
|| IBM || 2378FVU || ThinkPad T42 || IBM || 2378FVU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-KXU<br />
|| IBM || 2373KXU || ThinkPad T42p || IBM || 2373KXU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-KUU<br />
|| IBM || 2373KUU || ThinkPad T42p || IBM || 2373KUU || Not Available || IBM || Not Available || IBM || 1RETDMWW (3.18 ) || 09/15/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-GYG<br />
|| IBM || 2373GYG || ThinkPad T42p || IBM || 2373GYG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2374-CP5<br />
|| IBM || 2374CP5 || ThinkPad T42p || IBM || 2374CP5 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2379-DYU<br />
|| IBM || 2379DYU || ThinkPad T42p || IBM || 2379DYU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2372-Q2G<br />
|| IBM || 2373Q2G || ThinkPad T42p || IBM || 2373Q2G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 1871-4AG<br />
|| IBM || 18714AG || ThinkPad T43 || IBM || 18714AG || Not Available || IBM || Not Available || IBM || 70ET64WW (1.24 ) || 02/13/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT27WW-1.04 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{T43}} 1871-F1G<br />
|| IBM || 1871F1G || ThinkPad T43 || IBM || 1871F1G || Not Available || IBM || Not Available || IBM || 70ET61WW (1.21 ) || 11/01/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2686-DGU<br />
|| IBM || 2686DGU || ThinkPad T43 || IBM || 2686DGU || Not Available || IBM || Not Available || IBM || 1YET62WW (1.27 ) || 05/18/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1YHT29WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2669-WE5<br />
|| IBM || 2669WE5 || ThinkPad T43 || IBM || 2669WE5 || Not Available || IBM || Not Available || IBM || 1YET56WW (1.21 ) || 07/06/2005 <br />
|| <nowiki>String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
|| {{NOTE|User reports this is really a 2669-CEU with 1GB RAM + BlueTooth, and not a 2669-WE5 (unverified if this makes sense)}}<br />
|-<br />
| {{T43p}} 2668-G2G<br />
|| IBM || 2668G2G || ThinkPad T43p || IBM || 2668G2G || Not Available || IBM || Not Available || IBM || 1YET47WW (1.08 ) || 06/09/2005 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43p}} 2687-D5U<br />
|| IBM || 2687D5U || ThinkPad T43p || IBM || 2687D5U || Not Available || IBM || Not Available || IBM || 1YET59WW (1.24 ) || 11/07/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1952-W5R<br />
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ET61WW (1.06 ) || 05/24/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1952-W5R<br />
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ETD2WW (2.12 ) || 04/12/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{T60}} 2007-49G<br />
|| LENOVO || 200749G || ThinkPad T60 || LENOVO || 200749G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 2007-77G<br />
|| LENOVO || 200777G || ThinkPad T60 || LENOVO || 200777G || Not Available || LENOVO || Not Available || LENOVO || 79ETD1WW (2.11 ) || 03/15/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-83U<br />
|| LENOVO || 200783U || ThinkPad T60p || LENOVO || 200783U || Not Available || LENOVO || Not Available || LENOVO || 79ET60WW (1.05a) || 04/18/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[79HT43WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93G<br />
|| LENOVO || 200793G || ThinkPad T60p || LENOVO || 200793G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET66WW (1.10 ) || 08/02/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-ZK4<br />
|| LENOVO || 2007ZK4 || ThinkPad T60p || LENOVO || 2007ZK4 || Not Available || LENOVO || Not Available || LENOVO || 79ETD3WW (2.13 ) || 04/30/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{T60p}} 2613-ESU<br />
|| LENOVO || 2613ESU || ThinkPad T60p || LENOVO || 2613ESU || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2623-DDU<br />
|| LENOVO || 2623DDU || ThinkPad T60p || LENOVO || 2623DDU || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 7662-XDU<br />
|| LENOVO || 7662XDU || ThinkPad T61 || LENOVO || 7662XDU || 7662XDU|| LENOVO || Not Available || LENOVO || 7LET37WW (1.07 ) || 04/17/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7KHT19WW-1.03 ]-</nowiki><br />
|| {{WARN|BIOS and EC firmware have different IDs}}<br />
|-<br />
| {{T61}} 7661-A56<br />
|| LENOVO || 7661A56 || ThinkPad T61 || LENOVO || 7661A56 || Not Available || LENOVO || Not Available || LENOVO || 7LET39WW (1.09 ) || 05/14/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT21WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 8897-CTO<br />
|| LENOVO || 8897CTO || ThinkPad T61 || LENOVO || 8897CTO || Not Available || LENOVO || Not Available || LENOVO || 7LET52WW (1.22 ) || 08/27/2007<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====X series====<br />
|-<br />
| {{X20}} 266231G<br />
|| IBM || 266231G || Not Available || IBM || 266231G || Not Available || IBM || Not Available || IBM || IZET9DWW (2.25 ) || 04/17/2003<br />
||<br />
|-<br />
|| 266232G || IBM || 266232G || Not Available || IBM || 266232G || Not Available || IBM || Not Available || IBM || IZET9AWW (2.22 ) || 09/11/2002<br />
|| <nowiki></nowiki> ||<br />
||<br />
|-<br />
| {{X23}} 2662EBG<br />
|| IBM || 2662EBG || Not Available || IBM || 2662EBG || Not Available || IBM || Not Available || IBM || 1DET70WW (1.32 ) || 06/10/2003<br />
|| <nowiki></nowiki> ||<br />
|-<br />
| {{X24}} 2662-MPU<br />
|| IBM || 62MPUFX || Not Available || IBM || 62MPUFX || Not Available || IBM || Not Available || IBM || 1DET67WW (1.29 ) || 12/18/2002<br />
||<br />
||<br />
|- <br />
| {{X30}} 2672-4HU<br />
|| IBM || 26724HU || Not Available || IBM || 26724HU || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06 ]-</nowiki> ||<br />
|-<br />
| {{X30}} 2672-PG3<br />
|| IBM || 2672PG3 || Not Available || IBM || 2672PG3 || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06 ]-</nowiki> <br />
||<br />
|-<br />
| {{X31}} 2672-JXU<br />
|| IBM || 2672JXU || ThinkPad X31 || IBM || 2672JXU || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{X32}} 2884-A3U<br />
|| IBM || 2884A3U || ThinkPad X32 || IBM || 2884A3U || Not Available || IBM || Not Available || IBM || 1QET94WW (3.00d) || 01/23/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT22WW-1.07b ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2386-H4G<br />
|| IBM || 2386H4G || ThinkPad X40 || IBM || 2386H4G || Not Available || IBM || Not Available || IBM || 1UET92WW (1.42 ) || 09/16/2004 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1UHT82WW-1.32 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2371-Y29<br />
|| IBM || 2371Y29 || ThinkPad X40 || IBM || 2371Y29 || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHTA6WW-1.56 ]-</nowiki> ||<br />
|-<br />
| {{X41}} 2525-HU1<br />
|| IBM || 2525HU1 || ThinkPad X41 || IBM || 2525HU1 || Not Available || IBM || Not Available || IBM || 74ET48WW (1.17a) || 06/07/2005<br />
|| <nowiki>Handle 0x0025, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[74HT25WW-1.00 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1709-47U<br />
|| LENOVO || 170947U || ThinkPad X60 || LENOVO || 170947U || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1709-GDJ<br />
|| LENOVO || 1709GDJ || ThinkPad X60 || LENOVO || 1709GDJ || Not Available || LENOVO || Not Available || LENOVO || 7BETC2WW (2.03 ) || 10/16/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT36WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1702-55G<br />
|| LENOVO || 170255G || ThinkPad X60s || LENOVO || 170255G || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1702-5FG<br />
|| LENOVO || 17025FG || ThinkPad X60s || LENOVO || 17025FG || Not Available || LENOVO || Not Available || LENOVO || 7BET49WW (1.09 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT34WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1704-56G<br />
|| LENOVO || 170456G || ThinkPad X60s || LENOVO || 170456G || Not Available || LENOVO || Not Available || LENOVO || 7BET43WW (1.03 ) || 02/13/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7BHT28WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====Z series====<br />
|-<br />
| {{Z60t}} 2511-FEU<br />
|| IBM || 2511FEU || ThinkPad Z60t || IBM || 2511FEU || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{Z60t}} 2511-FFG<br />
|| IBM || 2511FFG || ThinkPad Z60t || IBM || 2511FFG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT57WW-1.17 ]-</nowiki> ||<br />
|- <br />
| {{Z60m}} 2529-ETG<br />
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET59WW (1.19 ) || 04/24/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[77HT54WW-1.14 ]-</nowiki> ||<br />
|-<br />
| {{Z60m}} 2529-ETG<br />
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18 ]-</nowiki> ||<br />
|-<br />
| {{Z60m}} 2529-FBG<br />
|| IBM || 2529FBG || ThinkPad Z60m || IBM || 2529FBG || Not Available || IBM || Not Available || IBM || 77ET62WW (1.22 ) || 11/21/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18 ]-</nowiki> ||<br />
|- <br />
| {{Z60m}} 2529-FKG<br />
|| IBM || 2529FKG || ThinkPad Z60m || IBM || 2529FKG || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005<br />
|| String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02 ]-<br />
||<br />
|-<br />
| {{Z61m}} 9453-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET48WW (1.08 ) || 05/26/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7FHT21WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61m}} 9543-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki> ||<br />
|-<br />
| {{Z61m}} 9543-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET93WW (2.11 ) || 11/10/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{Z61m}} 9453-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki> ||<br />
|-<br />
| {{Z61p}} 9453-A12<br />
|| LENOVO || 9453A12 || ThinkPad Z61p || LENOVO || 9453A12 || Not Available || LENOVO || Not Available || LENOVO || 7FET45WW (1.05 ) || 04/20/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7FHT19WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61p}} 9450-3AU<br />
|| LENOVO || 94503AU || ThinkPad Z61p || LENOVO || 94503AU || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9440-2CU<br />
|| LENOVO || 94402CU || ThinkPad Z61t || LENOVO || 94402CU || Not Available || LENOVO || Not Available || LENOVO || 7FET50WW (1.10 ) || 06/20/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT22WW-1.04 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9443-4GG<br />
|| LENOVO || 94434GG || ThinkPad Z61t || LENOVO || 94434GG || Not Available || LENOVO || Not Available || LENOVO || 7FET96WW (2.14 ) || 12/25/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9440-CTO<br />
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FET99WW (2.17 ) || 04/17/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki> ||<br />
|}<br />
</div><br />
<br />
==Adding entries==<br />
<br />
Click the "Edit" link on the appropriate series above and add an entry of the following form:<br />
:<tt>!-</tt><br />
:<tt>| </tt><i>description of your model</i><br />
:<i>data line 1</i><br />
:<i>data line 2</i><br />
<br />
where the two data lines are genereated by the following <tt>bash</tt> command:<br />
<br />
<pre><br />
for X in system-{manufacturer,product-name,version} \<br />
baseboard-{manufacturer,product-name,version} \<br />
chassis-{manufacturer,version} bios-{vendor,version,release-date}; do \<br />
echo -n "|| `sudo /usr/sbin/dmidecode -s $X` "; done; \<br />
sudo /usr/sbin/dmidecode | perl -0777 -ne \<br />
'm/\n(.*).\n.*\n(.*Embedded Cont.*)\n/i; print "\n|| <nowiki><</nowiki>nowiki>$1$2</nowiki> ||\n"'<br />
</pre><br />
<br />
While at it, you may also want to test [[tp_smapi]] and update its [[tp_smapi#Model-specific_status|model-specific status table]].<br />
<br />
==Software using ThinkPad DMI IDs==<br />
* [[HDAPS]] driver whitelist<br />
* [[tp_smapi]] driver whitelist<br />
* [[ibm-acpi]]/thinkpad-acpi driver quirk list</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=List_of_DMI_IDs&diff=33560List of DMI IDs2007-09-30T02:20:39Z<p>Owenh: /* T series */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
This page maintains a database of [http://en.wikipedia.org/wiki/Desktop_Management_Interface DMI] information which can be used to identify ThinkPad models. It is intended as an aid for driver development.<br />
{{HELP|We need more information about older models, especially those released before 2004. Please [[#Adding_entries|add your model]] to the database.}}<br />
{{NOTE|If your ThinkPad is not using the [[BIOS Upgrade Downloads|latest BIOS]], and you would be willing to [[BIOS Upgrade|upgrade your BIOS]], please add your ThinkPad to this table twice: '''before''' and '''after''' the BIOS upgrade. This information helps us a great deal, so your contribution would be very appreciated.}}<br />
|}<br />
<br />
==DMI ID database==<br />
<br />
<div style="font-size: 80%"><br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|-<br />
! Model<br />
! <tt>system-<br />manufa<br />cturer</tt><br />
! <tt>system-<br />product-<br />name</tt><br />
! <tt>system-<br />version</tt><br />
! <tt>baseboard-<br />manufa<br />cturer</tt><br />
! <tt>baseboard-<br />product-<br />name</tt><br />
! <tt>baseboard-<br />version</tt><br />
! <tt>chassis-<br />manufa<br />cturer</tt><br />
! <tt>chassis-<br />version</tt><br />
! <tt>bios-<br />vendor</tt><br />
! <tt>bios-<br />version</tt><br />
! <tt>bios-<br />release-<br />date</tt><br />
! Embedded controller<br />
! Notes<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
====Numbered series====<br />
|-<br />
| {{600E}} 2645-5AU<br />
|| IBM || 26455AU || Not Available || IBM || 26455AU || Not Available || IBM || Not Available || IBM || INET36WW || 11/20/1999<br />
||<br />
||<br />
|-<br />
| {{600X}} 2645-5FU<br />
|| IBM || 26455FU || Not Available || IBM || 26455FU || Not Available || IBM || Not Available || IBM || INET55WW || 11/30/1999<br />
||<br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====A series====<br />
|-<br />
| {{A21m}} 2628-FSG<br />
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET24WW (1.02b) || 12/19/2000 <br />
|| <br />
||<br />
|-<br />
| {{A21m}} 2628-FSG<br />
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET36WW (1.09 ) || 05/08/2003 <br />
||<br />
||<br />
|-<br />
| {{A22p}} 2629-USG<br />
|| IBM || 2629USG || Not Available || IBM || 2629USG || Not Available || IBM || Not Available || IBM || KYET36WW (1.09a) || 10/17/2002 <br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{A31}} 2652-PBU<br />
|| IBM || 2652PBU || Not Available || IBM || 2652PBU || Not Available || IBM || Not Available || IBM || 1NET15WW (1.09 ) || 04/06/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1NHT04WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{A31p}} 2653H6U<br />
|| IBM || 2653H6U || Not Available || IBM || 2653H6U || Not Available || IBM || Not Available || IBM || 1GET31WW (1.03 ) || 07/23/2002<br />
||<br />
|| {{WARN|Missing EC string, extremely outdated BIOS}}{{HELP|We need a report to know if the latest BIOS fixes the missing EC string}}<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====G series====<br />
|-<br />
| {{G41}} 2881-75M<br />
|| IBM || 288175M || ThinkPad G41 || IBM || 288175M || Not Available || IBM || Not Available || IBM || 1XET47WW (1.06 ) || 01/14/2005<br />
||<br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
====R series====<br />
|-<br />
| {{R40}} 2681-5UU<br />
|| IBM || 26815UU || Not Available || IBM || 26815UU || Not Available || IBM || Not Available || IBM || 1OET57WW (1.23 ) || 03/23/2005 <br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{R40}} 2681-HSG<br />
|| IBM || 2681HSG || Not Available || IBM || 2681HSG || Not Available || IBM || Not Available || IBM || 1OET61WW (1.27 ) || 06/29/2006<br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{R40}} 2722-B3G<br />
|| IBM || 2722B3G || Not Available || IBM || 2722B3G || Not Available || IBM || Not Available || IBM || 1PET62WW (1.30 ) || 09/29/2005<br />
||<br />
||<br />
|-<br />
| {{R40}} 2897-B4U<br />
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1PET52WW (1.20 ) || 03/03/2004<br />
||<br />
||<br />
|-<br />
| {{R40e}} 2684-L8G<br />
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1SET62WW (1.30 ) || 07/09/2004<br />
||<br />
|| {{WARN|Outdated BIOS}}<br />
|-<br />
| {{R50}} 1829-7QG<br />
|| IBM || 0123456 || ThinkPad R50 || IBM || 0123456 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
||<br />
|-<br />
|{{R50e}} 1834-JAG<br />
|| IBM || 1834JAG || ThinkPad R50e || IBM || 1834JAG || Not Available || IBM || Not Available || IBM || 1WET82WW (2.02 ) || 02/21/2005<br />
|| <nowiki>Handle 0x0022, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
|{{R50p}} 1832-2AG<br />
|| IBM || 18322AG || ThinkPad R50p || IBM || 18322AG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 1829-DRG<br />
|| IBM || 1829DRG || ThinkPad R51 || IBM || 1829DRG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a ]-</nowiki> <br />
||<br />
|-<br />
| {{R51}} 1829-9MG<br />
|| IBM || 18299MG || ThinkPad R51 || IBM || 18299MG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 1829-L7G<br />
|| IBM || 1829L7G || ThinkPad R51 || IBM || 1829L7G || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT70WW-3.03 ]-</nowiki><br />
||<br />
|- <br />
| {{R51}} [[1830-DG4]]<br />
|| IBM || 1830DG4 || ThinkPad R51 || IBM || 1830DG4 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> ||<br />
|-<br />
| {{R51}} 1836-GEU<br />
|| IBM || 1836GEU || ThinkPad R51 || IBM || 1836GEU || Not Available || IBM || Not Available || IBM || 1RETDLWW (3.17 ) || 07/27/2005 || <nowiki>Handle 0x0029, DMI type 11, 5 bytes. String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R51}} 2883-ELU<br />
|| IBM || 2883ELU || ThinkPad R51 || IBM || 2883ELU || Not Available || IBM || Not Available || IBM || 1VET69WW (1.27 ) || 03/03/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad H || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
|| {{NOTE|Weird system version, this bug is known fixed in latest BIOS}}<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET68WW (1.28 ) || 11/15/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-AQG<br />
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET69WW (1.29 ) || 12/06/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1847-W62<br />
|| IBM || 1847W62 || ThinkPad . || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
|| {{NOTE|Weird system version, this bug is known fixed in latest BIOS}}<br />
|-<br />
| {{R52}} 1847-W62<br />
|| IBM || 1847W62 || ThinkPad R52 || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1858-6MM<br />
|| IBM || 18586MM || ThinkPad R52 || IBM || 18586MM || Not Available || IBM || Not Available || IBM || 70ET40WW (1.04 ) || 06/02/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1858-6SM<br />
|| IBM || 18586SM || ThinkPad R52 || IBM || 18586SM || Not Available || IBM || Not Available || IBM || 70ET57WW (1.17 ) || 07/15/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki> ||<br />
|-<br />
| {{R52}} 1846-4CG<br />
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT15WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{R52}} 1846-4CG<br />
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{R52}} 1846-B5G<br />
|| IBM || 1846B5G || ThinkPad H || IBM || 1846B5G || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{R60e}} 0657-4TG<br />
|| LENOVO || 06574TG || ThinkPad R60e || LENOVO || 06574TG || Not Available || LENOVO || Not Available || LENOVO || 7EET18WW (1.04 ) || 07/28/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7EHT13WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9456-6FG<br />
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9456-6FG<br />
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CETB7WW (2.07 ) || 11/13/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9461-54G<br />
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{R60}} 9461-54G<br />
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CETC1WW (2.11 ) || 01/09/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
|| {{NOTE|With this bios version the brightness control buttons don't work for kernel < 2.6.20}}<br />
|-<br />
| {{R60}} 9461-DXG<br />
|| LENOVO || 9461DXG || ThinkPad R60 || LENOVO || 9461DXG || Not Available || LENOVO || Not Available || LENOVO || 7CETB6WW (2.06 ) || 10/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki><br />
|-<br />
| {{R60}} 9462-GAG<br />
|| LENOVO || 9462GAG || ThinkPad R60 || LENOVO || 9462GAG || Not Available || LENOVO || Not Available || LENOVO || 7CETB5WW (2.05 ) || 10/13/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09 ]-</nowiki> ||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====S series====<br />
|-<br />
| {{s30}} 2639-4WJ<br />
|| IBM || 26394WJ || Not Available || IBM || 2609BS1 || Not Available || IBM || Not Available || IBM || 18ET45WW (1.45) || 07/10/2001<br />
|| <nowiki></nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====T series====<br />
|-<br />
| {{T20}} 2647-UC2<br />
|| IBM || 2647UC2 || Not Available || IBM || 2647UC2 || Not Available || IBM || Not Available || IBM || IYET45WW (1.08a) || 12/21/1999<br />
||<br />
|| {{WARN|Very outdated BIOS}}<br />
|-<br />
| {{T21}} 2647-8AU<br />
|| IBM || 26478AU || Not Available || IBM || 26478AU || Not Available || IBM || Not Available || IBM || KZET34WW (1.16 ) || 04/28/2004<br />
||<br />
||<br />
|-<br />
| {{T22}} 2647-4EG<br />
|| IBM || 26474EG || Not Available || IBM || 26474EG || Not Available || IBM || Not Available || IBM || 16ET31WW (1.11 ) || 03/20/2003 <br />
||<br />
||<br />
|-<br />
| {{T22}} 2647-8EU<br />
|| IBM || 26478EU || Not Available || IBM || 26478EU || Not Available || IBM || Not Available || IBM || 16ET32WW (1.12 ) || 04/27/2004<br />
||<br />
||<br />
|- <br />
| {{T23}} 2647-4NU<br />
|| IBM || 26474NU || Not Available || IBM || 26474NU || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a ]-</nowiki><br />
||<br />
|-<br />
| {{T23}} 2647-8MG<br />
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET56WW (1.13 ) || 07/02/2002<br />
||<br />
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}<br />
|-<br />
| {{T23}} 2647-8MG<br />
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-85G<br />
|| IBM || 236685G || Not Available || IBM || 236685G || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1IHT18WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-GU1<br />
|| IBM || 2366GU1 || Not Available || IBM || 2366GU1 || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1IHT19WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T30}} 2366-JBU<br />
|| IBM || 2366JBU || Not Available || IBM || 2366JBU || Not Available || IBM || Not Available || IBM || 1IET71WW (2.10 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1IHT20WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T40}} 2378-D2U<br />
|| IBM || 2378D2U || ThinkPad T40 || IBM || 2378D2U || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004<br />
|| <br />
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}<br />
|-<br />
| {{T40p}} 2373-G1G<br />
|| IBM || 2373G1G || ThinkPad T40p || IBM || 2373G1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2373-W63<br />
|| IBM || 2373W63 || ThinkPad T41 || IBM || 2373W63 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> <br />
||<br />
|-<br />
|{{T41}} 2373-XNX<br />
|| IBM || 2373XNX || ThinkPad T41 || IBM || 2373XNX || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41}} 2373-2FG<br />
|| IBM || 23732FG || ThinkPad T41 || IBM || 23732FG || Not Available || IBM || Not Available || IBM || 1RET84WW (2.11 ) || 10/30/2003<br />
||<br />
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}<br />
|-<br />
| {{T41}} 2379-DJU<br />
|| IBM || 2379DJU || ThinkPad T41 || IBM || 2379DJU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> ||<br />
|-<br />
| {{T41p}} 2373-GHG <br />
|| IBM || 2373GHG || ThinkPad T41p || IBM || 2373GHG || Not Available || IBM || Not Available || IBM || 1RETDIWW (3.14 ) || 01/20/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41p}} 2373-GEG<br />
|| IBM || 2373GEG || ThinkPad T41p || IBM || 2373GEG || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005<br />
|| <nowiki> Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T41p}} 2373-GJJ<br />
|| IBM || 2373GJJ || ThinkPad T41p || IBM || 2373GJJ || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-FWG<br />
|| IBM || 2373FWG || ThinkPad T42 || IBM || 2373FWG || Not Available || IBM || Not Available || IBM || 1RETDHWW (3.13 ) || 10/29/2004<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42}} 2373-M1G<br />
|| IBM || 2373M1G || ThinkPad T42 || IBM || 2373M1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|- <br />
| {{T42}} 2374-WEH<br />
|| IBM || 2374WEH || ThinkPad T42 || IBM || 2374WEH || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki> <br />
||<br />
|-<br />
| {{T42}} 2378-FVU<br />
|| IBM || 2378FVU || ThinkPad T42 || IBM || 2378FVU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-KXU<br />
|| IBM || 2373KXU || ThinkPad T42p || IBM || 2373KXU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-KUU<br />
|| IBM || 2373KUU || ThinkPad T42p || IBM || 2373KUU || Not Available || IBM || Not Available || IBM || 1RETDMWW (3.18 ) || 09/15/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2373-GYG<br />
|| IBM || 2373GYG || ThinkPad T42p || IBM || 2373GYG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2374-CP5<br />
|| IBM || 2374CP5 || ThinkPad T42p || IBM || 2374CP5 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2379-DYU<br />
|| IBM || 2379DYU || ThinkPad T42p || IBM || 2379DYU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T42p}} 2372-Q2G<br />
|| IBM || 2373Q2G || ThinkPad T42p || IBM || 2373Q2G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 1871-4AG<br />
|| IBM || 18714AG || ThinkPad T43 || IBM || 18714AG || Not Available || IBM || Not Available || IBM || 70ET64WW (1.24 ) || 02/13/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT27WW-1.04 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{T43}} 1871-F1G<br />
|| IBM || 1871F1G || ThinkPad T43 || IBM || 1871F1G || Not Available || IBM || Not Available || IBM || 70ET61WW (1.21 ) || 11/01/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2686-DGU<br />
|| IBM || 2686DGU || ThinkPad T43 || IBM || 2686DGU || Not Available || IBM || Not Available || IBM || 1YET62WW (1.27 ) || 05/18/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1YHT29WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
| {{T43}} 2669-WE5<br />
|| IBM || 2669WE5 || ThinkPad T43 || IBM || 2669WE5 || Not Available || IBM || Not Available || IBM || 1YET56WW (1.21 ) || 07/06/2005 <br />
|| <nowiki>String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
|| {{NOTE|User reports this is really a 2669-CEU with 1GB RAM + BlueTooth, and not a 2669-WE5 (unverified if this makes sense)}}<br />
|-<br />
| {{T43p}} 2668-G2G<br />
|| IBM || 2668G2G || ThinkPad T43p || IBM || 2668G2G || Not Available || IBM || Not Available || IBM || 1YET47WW (1.08 ) || 06/09/2005 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T43p}} 2687-D5U<br />
|| IBM || 2687D5U || ThinkPad T43p || IBM || 2687D5U || Not Available || IBM || Not Available || IBM || 1YET59WW (1.24 ) || 11/07/2005<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1952-W5R<br />
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ET61WW (1.06 ) || 05/24/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 1952-W5R<br />
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ETD2WW (2.12 ) || 04/12/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{T60}} 2007-49G<br />
|| LENOVO || 200749G || ThinkPad T60 || LENOVO || 200749G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006 <br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60}} 2007-77G<br />
|| LENOVO || 200777G || ThinkPad T60 || LENOVO || 200777G || Not Available || LENOVO || Not Available || LENOVO || 79ETD1WW (2.11 ) || 03/15/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-83U<br />
|| LENOVO || 200783U || ThinkPad T60p || LENOVO || 200783U || Not Available || LENOVO || Not Available || LENOVO || 79ET60WW (1.05a) || 04/18/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[79HT43WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93G<br />
|| LENOVO || 200793G || ThinkPad T60p || LENOVO || 200793G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET66WW (1.10 ) || 08/02/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-93U<br />
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2007-ZK4<br />
|| LENOVO || 2007ZK4 || ThinkPad T60p || LENOVO || 2007ZK4 || Not Available || LENOVO || Not Available || LENOVO || 79ETD3WW (2.13 ) || 04/30/2007<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki> ||<br />
||<br />
|-<br />
| {{T60p}} 2613-ESU<br />
|| LENOVO || 2613ESU || ThinkPad T60p || LENOVO || 2613ESU || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b ]-</nowiki><br />
||<br />
|-<br />
| {{T60p}} 2623-DDU<br />
|| LENOVO || 2623DDU || ThinkPad T60p || LENOVO || 2623DDU || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 7662-XDU<br />
|| LENOVO || 7662XDU || ThinkPad T61 || LENOVO || 7662XDU || 7662XDU|| LENOVO || Not Available || LENOVO || 7LET37WW (1.07 ) || 04/17/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7KHT19WW-1.03 ]-</nowiki><br />
|| {{WARN|BIOS and EC firmware have different IDs}}<br />
|-<br />
| {{T61}} 7661-A56<br />
|| LENOVO || 7661A56 || ThinkPad T61 || LENOVO || 7661A56 || Not Available || LENOVO || Not Available || LENOVO || 7LET39WW (1.09 ) || 05/14/2007 <br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT21WW-1.05 ]-</nowiki><br />
||<br />
|-<br />
| {{T61}} 8897-CTO<br />
|| LENOVO || 8897CTO || ThinkPad T61 || LENOVO || 8897CTO || Not Available || LENOVO || Not Available || LENOVO || 7LET52WW (1.22 ) || 08/27/2007<br />
|| <nowiki>Handle 0x0028, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7KHT22WW-1.06 ]-</nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====X series====<br />
|-<br />
| {{X20}} 266231G<br />
|| IBM || 266231G || Not Available || IBM || 266231G || Not Available || IBM || Not Available || IBM || IZET9DWW (2.25 ) || 04/17/2003<br />
||<br />
|-<br />
|| 266232G || IBM || 266232G || Not Available || IBM || 266232G || Not Available || IBM || Not Available || IBM || IZET9AWW (2.22 ) || 09/11/2002<br />
|| <nowiki></nowiki> ||<br />
||<br />
|-<br />
| {{X23}} 2662EBG<br />
|| IBM || 2662EBG || Not Available || IBM || 2662EBG || Not Available || IBM || Not Available || IBM || 1DET70WW (1.32 ) || 06/10/2003<br />
|| <nowiki></nowiki> ||<br />
|-<br />
| {{X24}} 2662-MPU<br />
|| IBM || 62MPUFX || Not Available || IBM || 62MPUFX || Not Available || IBM || Not Available || IBM || 1DET67WW (1.29 ) || 12/18/2002<br />
||<br />
||<br />
|- <br />
| {{X30}} 2672-4HU<br />
|| IBM || 26724HU || Not Available || IBM || 26724HU || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06 ]-</nowiki> ||<br />
|-<br />
| {{X30}} 2672-PG3<br />
|| IBM || 2672PG3 || Not Available || IBM || 2672PG3 || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06 ]-</nowiki> <br />
||<br />
|-<br />
| {{X31}} 2672-JXU<br />
|| IBM || 2672JXU || ThinkPad X31 || IBM || 2672JXU || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{X32}} 2884-A3U<br />
|| IBM || 2884A3U || ThinkPad X32 || IBM || 2884A3U || Not Available || IBM || Not Available || IBM || 1QET94WW (3.00d) || 01/23/2005<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1QHT22WW-1.07b ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2386-H4G<br />
|| IBM || 2386H4G || ThinkPad X40 || IBM || 2386H4G || Not Available || IBM || Not Available || IBM || 1UET92WW (1.42 ) || 09/16/2004 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[1UHT82WW-1.32 ]-</nowiki><br />
||<br />
|-<br />
| {{X40}} 2371-Y29<br />
|| IBM || 2371Y29 || ThinkPad X40 || IBM || 2371Y29 || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006 <br />
|| <nowiki>Handle 0x0024, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[1UHTA6WW-1.56 ]-</nowiki> ||<br />
|-<br />
| {{X41}} 2525-HU1<br />
|| IBM || 2525HU1 || ThinkPad X41 || IBM || 2525HU1 || Not Available || IBM || Not Available || IBM || 74ET48WW (1.17a) || 06/07/2005<br />
|| <nowiki>Handle 0x0025, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[74HT25WW-1.00 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1709-47U<br />
|| LENOVO || 170947U || ThinkPad X60 || LENOVO || 170947U || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X60}} 1709-GDJ<br />
|| LENOVO || 1709GDJ || ThinkPad X60 || LENOVO || 1709GDJ || Not Available || LENOVO || Not Available || LENOVO || 7BETC2WW (2.03 ) || 10/16/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT36WW-1.09 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1702-55G<br />
|| LENOVO || 170255G || ThinkPad X60s || LENOVO || 170255G || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1702-5FG<br />
|| LENOVO || 17025FG || ThinkPad X60s || LENOVO || 17025FG || Not Available || LENOVO || Not Available || LENOVO || 7BET49WW (1.09 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7BHT34WW-1.07 ]-</nowiki><br />
||<br />
|-<br />
| {{X60s}} 1704-56G<br />
|| LENOVO || 170456G || ThinkPad X60s || LENOVO || 170456G || Not Available || LENOVO || Not Available || LENOVO || 7BET43WW (1.03 ) || 02/13/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7BHT28WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
! colspan=14 style="text-align:center;background:#efefef;" |<br />
<br />
====Z series====<br />
|-<br />
| {{Z60t}} 2511-FEU<br />
|| IBM || 2511FEU || ThinkPad Z60t || IBM || 2511FEU || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02 ]-</nowiki><br />
||<br />
|-<br />
| {{Z60t}} 2511-FFG<br />
|| IBM || 2511FFG || ThinkPad Z60t || IBM || 2511FFG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT57WW-1.17 ]-</nowiki> ||<br />
|- <br />
| {{Z60m}} 2529-ETG<br />
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET59WW (1.19 ) || 04/24/2006<br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[77HT54WW-1.14 ]-</nowiki> ||<br />
|-<br />
| {{Z60m}} 2529-ETG<br />
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18 ]-</nowiki> ||<br />
|-<br />
| {{Z60m}} 2529-FBG<br />
|| IBM || 2529FBG || ThinkPad Z60m || IBM || 2529FBG || Not Available || IBM || Not Available || IBM || 77ET62WW (1.22 ) || 11/21/2006 <br />
|| <nowiki>Handle 0x0029, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18 ]-</nowiki> ||<br />
|- <br />
| {{Z60m}} 2529-FKG<br />
|| IBM || 2529FKG || ThinkPad Z60m || IBM || 2529FKG || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005<br />
|| String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02 ]-<br />
||<br />
|-<br />
| {{Z61m}} 9453-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET48WW (1.08 ) || 05/26/2006<br />
|| <nowiki> String 1: IBM ThinkPad Embedded Controller -[7FHT21WW-1.03 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61m}} 9543-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki> ||<br />
|-<br />
| {{Z61m}} 9543-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET93WW (2.11 ) || 11/10/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{Z61m}} 9453-A11<br />
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki> ||<br />
|-<br />
| {{Z61p}} 9453-A12<br />
|| LENOVO || 9453A12 || ThinkPad Z61p || LENOVO || 9453A12 || Not Available || LENOVO || Not Available || LENOVO || 7FET45WW (1.05 ) || 04/20/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 bytes String 1: IBM ThinkPad Embedded Controller -[7FHT19WW-1.01 ]-</nowiki><br />
||<br />
|-<br />
| {{Z61p}} 9450-3AU<br />
|| LENOVO || 94503AU || ThinkPad Z61p || LENOVO || 94503AU || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006<br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9440-2CU<br />
|| LENOVO || 94402CU || ThinkPad Z61t || LENOVO || 94402CU || Not Available || LENOVO || Not Available || LENOVO || 7FET50WW (1.10 ) || 06/20/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT22WW-1.04 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9443-4GG<br />
|| LENOVO || 94434GG || ThinkPad Z61t || LENOVO || 94434GG || Not Available || LENOVO || Not Available || LENOVO || 7FET96WW (2.14 ) || 12/25/2006 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki> ||<br />
|-<br />
| {{Z61t}} 9440-CTO<br />
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FET99WW (2.17 ) || 04/17/2007 <br />
|| <nowiki>Handle 0x0026, DMI type 11, 5 byte String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08 ]-</nowiki> ||<br />
|}<br />
</div><br />
<br />
==Adding entries==<br />
<br />
Click the "Edit" link on the appropriate series above and add an entry of the following form:<br />
:<tt>!-</tt><br />
:<tt>| </tt><i>description of your model</i><br />
:<i>data line 1</i><br />
:<i>data line 2</i><br />
<br />
where the two data lines are genereated by the following <tt>bash</tt> command:<br />
<br />
<pre><br />
for X in system-{manufacturer,product-name,version} \<br />
baseboard-{manufacturer,product-name,version} \<br />
chassis-{manufacturer,version} bios-{vendor,version,release-date}; do \<br />
echo -n "|| `sudo /usr/sbin/dmidecode -s $X` "; done; \<br />
sudo /usr/sbin/dmidecode | perl -0777 -ne \<br />
'm/\n(.*).\n.*\n(.*Embedded Cont.*)\n/i; print "\n|| <nowiki><</nowiki>nowiki>$1$2</nowiki> ||\n"'<br />
</pre><br />
<br />
While at it, you may also want to test [[tp_smapi]] and update its [[tp_smapi#Model-specific_status|model-specific status table]].<br />
<br />
==Software using ThinkPad DMI IDs==<br />
* [[HDAPS]] driver whitelist<br />
* [[tp_smapi]] driver whitelist<br />
* [[ibm-acpi]]/thinkpad-acpi driver quirk list</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Tp_smapi&diff=33559Tp smapi2007-09-30T01:59:18Z<p>Owenh: /* Other features */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
The <tt>tp_smapi</tt> kernel module exposes some features of the ThinkPad hardware/firmware via a <tt>sysfs</tt> interface. Currently, the main implemented functionality is control of battery charging and extended battery status. It also includes an improved version of the [[HDAPS]] driver. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.<br />
<br />
For older ThinkPad models, see also [[tpctl]].<br />
<br />
{{WARN|This driver uses undocumented features and direct hardware access. It thus cannot be guaranteed to work and could conceivably damage your computer (though so far no incidents have been reported).}}<br />
|}<br />
<br />
===Features===<br />
*Battery charge/discharge control<br />
*Battery status information<br />
<br />
===Project Homepage / Availability===<br />
* Project page: http://tpctl.sourceforge.net/<br />
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&package_id=171579 download] only the <tt>tp_smapi</tt> package.<br />
<br />
===Installation===<br />
====Installation from source====<br />
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .<br />
<br />
:{{cmdroot|tar xzvf tp_smapi-0.32.tgz}}<br />
:{{cmdroot|cd tp_smapi-0.32}}<br />
<br />
<br />
Then, either compile and load the driver within the current working directory (for testing):<br />
:{{cmdroot|make load}}<br />
OR compile and install into the kernel's module path:<br />
:{{cmdroot|make install}}<br />
<br />
<br />
If you use the [[HDAPS]] driver, add <tt>HDAPS=1</tt> to also patch the <tt>hdaps</tt> for compatibility with <tt>tp_smapi</tt> (this requires a kernel source tree matching the current kernel).<br />
Again, either load the driver within the current working directory:<br />
:{{cmdroot|1=make load HDAPS=1}}<br />
OR install into the kernel's module path:<br />
:{{cmdroot|1=make install HDAPS=1}}<br />
<br />
<br />
To prepare a stand-alone patch against the current kernel tree (including<br />
a patch against <tt>hdaps</tt> and new <tt>Kconfig</tt> entries):<br />
:{{cmdroot|make patch}}<br />
<br />
To delete all autogenerated files:<br />
:{{cmdroot|make clean}}<br />
<br />
The original kernel tree is never modified by any these commands. <br />
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.<br />
<br />
====Installation in Gentoo====<br />
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/packages/?category=app-laptop;name=tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.<br />
<br />
If you use the [[HDAPS]] driver, do this first:<br />
<br />
* Configure <tt>hdaps</tt> as module in your kernel<br />
* Add the <tt>HDAPS</tt> use flag in {{path|/etc/make.conf}}<br />
* {{cmdroot|rmmod hdaps}}<br />
<br />
Then:<br />
<br />
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)<br />
* {{cmdroot|echo "tp_smapi" >> /etc/modules.autoload.d/kernel-2.6}}<br />
* {{cmdroot|echo "hdaps" >> /etc/modules.autoload.d/kernel-2.6}}<br />
<br />
Then reboot, or run:<br />
* {{cmdroot|modprobe tp_smapi}}<br />
* {{cmdroot|modprobe hdaps}}<br />
<br />
====Installation on Ubuntu/Debian====<br />
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:<br />
<br />
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):<br />
<pre><nowiki>apt-get install build-essential</nowiki></pre><br />
<br />
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:<br />
<pre><nowiki>uname -r</nowiki></pre><br />
This will give you the version of your current kernel. As Ubuntu adds '-generic' to the kernel-version, the following command works for Debian users only:<br />
<pre><nowiki>apt-get install linux-source-`uname -r`</nowiki></pre><br />
Ubuntu users use the kernel-version they got by the command before, e.g. 'linux-source-2.6.20'<br />
<br />
Now change to the tp_smapi dir:<br />
<pre><nowiki>cd tp_smapi-X.YY</nowiki></pre> (X.YY being the version-number of [[tp_smapi]])<br />
and make and install tp_smapi as instructed above.<br />
<br />
If you get an error that the kernel version isn't matching (or that you need to set KSRC/KBUILD), please check that there is a symlink from the modules dir to the kernel source:<br />
<pre><nowiki>root@localhost:~#ls -l /lib/modules/2.6.20-16-generic<br />
lrwxrwxrwx 1 root root 28 2007-02-02 08:39 source -> /usr/src/linux-source-2.6.20</nowiki></pre><br />
Create the link if the line above is not existent:<br />
<pre><nowiki>root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-16-generic/source</nowiki></pre><br />
<br />
Now the following will build and install the correct modules to their locations:<br />
<pre><nowiki>make install HDAPS=1</nowiki></pre><br />
To make sure your system loads the modules at boot time, do this:<br />
<pre><nowiki>echo "tp_smapi" >> /etc/modules<br />
echo "hdaps" >> /etc/modules</nowiki></pre><br />
and update your initramfs:<br />
<pre><nowiki>update-initramfs -u</nowiki></pre><br />
<br />
To get tp_smapi running now, just load the modules:<br />
<pre><nowiki>modprobe -a tp_smapi hdaps</nowiki></pre><br />
<br />
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.<br />
<br />
===Battery charge control features===<br />
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):<br />
:{{cmdroot|echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh}}<br />
:{{cmdroot|echo 70 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}<br />
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}<br />
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}<br />
To prevent charging for 17 minutes (regardless of thresholds):<br />
:{{cmdroot|echo 17 > /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}<br />
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}<br />
<br />
To cancel charging preventation:<br />
:{{cmdroot|echo 0 > /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}<br />
<br />
To force battery discharging (even if connected to AC):<br />
:{{cmdroot|echo 1 > /sys/devices/platform/smapi/BAT0/force_discharge}}<br />
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}<br />
<br />
To cancel forced discharge:<br />
:{{cmdroot|echo 0 > /sys/devices/platform/smapi/BAT0/force_discharge}}<br />
<br />
===Battery status features===<br />
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:<br />
<br />
<pre><br />
# cat /sys/devices/platform/smapi/BAT0/installed<br />
# cat /sys/devices/platform/smapi/BAT0/state # idle/charging/discharging<br />
# cat /sys/devices/platform/smapi/BAT0/cycle_count<br />
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current<br />
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average<br />
# cat /sys/devices/platform/smapi/BAT0/power_now # instantaneous power<br />
# cat /sys/devices/platform/smapi/BAT0/power_avg # last minute average<br />
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_percent<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/design_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/voltage<br />
# cat /sys/devices/platform/smapi/BAT0/design_voltage<br />
# cat /sys/devices/platform/smapi/BAT0/manufacturer<br />
# cat /sys/devices/platform/smapi/BAT0/model<br />
# cat /sys/devices/platform/smapi/BAT0/barcoding<br />
# cat /sys/devices/platform/smapi/BAT0/chemistry<br />
# cat /sys/devices/platform/smapi/BAT0/serial<br />
# cat /sys/devices/platform/smapi/BAT0/manufacture_date<br />
# cat /sys/devices/platform/smapi/BAT0/first_use_date<br />
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius<br />
# cat /sys/devices/platform/smapi/ac_connected<br />
</pre><br />
<br />
The raw status data is also available, including some fields not listed above (in case you can figure them out):<br />
<br />
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/dump}}<br />
<br />
In all of the above, replace <tt>BAT0</tt> with <tt>BAT1</tt> to address the 2nd battery.<br />
<br />
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use <tt>hdaps</tt> you will need to load <tt>tp_smapi</tt> using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).<br />
<br />
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].<br />
<br />
===Other features===<br />
<br />
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:<br />
# echo '211a 100 0 0' > /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request<br />
211a 34b b2 0 0 0 'OK'<br />
The "34b" in the 2nd value, converted to decimal, is 75: the current charge stop threshold (stop_charge_thresh).<br />
<br />
===Bundled <tt>hdaps</tt> driver===<br />
<br />
The tp_smapi package includes a modified version of the <tt>hdaps</tt> Linux kernel driver used by the [[HDAPS]] system. To use <tt>tp_smapi</tt> and <tt>hdaps</tt> concurrently, you '''must''' use the modified version.<br />
<br />
To build the modified version, simply append the <tt>HDAPS=1</tt> parameter to the <tt>make</tt> command (see [[#Installation|Installation]] above):<br />
:{{cmdroot|1=make load HDAPS=1}}<br />
or<br />
:{{cmdroot|1=make install HDAPS=1}}<br />
<br />
If you don't do that, you will not be able to load <tt>tp_smapi</tt> (and its support module <tt>thinkpad_ec</tt>) when <tt>hdaps</tt> is loaded, and vice versa. You can use <tt>rmmod</tt> to switch between these modules.<br />
<br />
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of <tt>tp_smapi</tt>.<br />
<br />
The modified <tt>hdaps</tt> has several changes:<br />
* The <tt>hdaps</tt> driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified <tt>hdaps</tt> coordinates this access through the bundled <tt>thinkpad_ec</tt> driver.<br />
* The modified <tt>hdaps</tt> driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.<br />
* Several other improvements, such as the ability to control the polling rate.<br />
<br />
===Troubleshooting===<br />
<br />
If you get <tt>thinkpad_ec: no ThinkPad embedded controller!</tt> when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.<br />
<br />
===Model-specific status===<br />
<br />
<br />
<div style="font-size: 92%"><br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|+<tt>tp_smapi</tt> feature support matrix<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" | <br />
=====A series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{A22p}} 2629-USG<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{A30}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
=====G series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{G41}}<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
=====R series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{R31}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || || No SMAPI BIOS<br />
|-<br />
! {{R40}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R50}}<br />
| {{Cunk}} || {{Cno}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R50e}} 1834-JAG<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R50p}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R51}} 18*<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 3.22 || Machine types 1829, 1830, 1831 and 1836<br />
|-<br />
! {{R51}} 28*<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || 1.29 || Machine types 2883, 2887, 2888, 2889, 2894 and 2495<br />
|-<br />
! {{R52}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 1.29 ||<br />
|-<br />
! {{R60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}} || {{Cunk}} || || ||<br />
|-<br />
<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
<br />
=====T series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{T20}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.<br />
|-<br />
! {{T22}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.<br />
|-<br />
! {{T23}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T30}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T40}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T40p}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T41}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T41p}} 2373-AM9<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || 3.20 || EC v3.04<br />
|-<br />
! {{T42}}<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T42p}} 2373-KXU<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || 3.21 || Stop charge threshold works in Windows. dmesg output:<br />
smapi smapi: smapi_request: SMAPI error: Function is not supported by SMAPI BIOS (func=211a)<br />
smapi smapi: __get_real_thresh: cannot get stop_thresh of bat=0: Function is not supported by SMAPI BIOS<br />
|-<br />
! {{T42p}} 2373-KUU<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T43}} 2686<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 1.27 ||<br />
|-<br />
! {{T43p}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=Y, Y'=-X || 0.32 || ||<br />
|-<br />
! {{T60p}} 8743-CTO<br />
| {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || ||<br />
|-<br />
! {{T61}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=-X, Y'=-Y || 0.32 || || [http://ubuntuforums.org/showthread.php?p=3146719 ref]<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
<br />
=====X series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{X20}} 2662-31G<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X24}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X31}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X32}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X40}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || 2.08 || EC v1.62<br />
|-<br />
! {{X41}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || ||<br />
|-<br />
! {{X60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=-Y, Y'=X || || 2.07 || EC v1.10, 2.6.20 issue (see discussion)<br />
|-<br />
! {{X61s}}<br />
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || || [http://www.slackwiki.org/ThinkPad_X61s ref]<br />
|-<br />
! {{X60T}}<br />
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || || || [http://luke.no-ip.org/x60tablet/ ref] [http://rad.bioinfo.ulaval.ca/hardware/x60tablet ref]<br />
|-<br />
! {{X61T}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}}X'=-Y, Y'=X || 0.32 || ||<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
<br />
=====Z series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{Z60m}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{Z60t}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{Z61m}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || ||<br />
|-<br />
! {{Z61t}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || || || [https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/45014 ref]<br />
|}<br />
</div><br />
<br />
<br />
SMAPI capabilities may depend on the BIOS version as well, so upgrading to the latest version of the BIOS might provide more SMAPI functions (especially true for long-lived BIOS with lots of releases, like the TP-1R).<br />
<br />
Please update the above and report your experience on the [[Talk:tp_smapi|discussion]] page. If the module loads but gives a "<tt>not supported</tt>" or "<tt>not implementeded</tt>" error when you try to use some specific file in {{path|/sys/devices/platform/smapi/}}, please report the <tt>dmesg</tt> output and whether the corresponding functionality is available under Windows - maybe your ThinkPad just can't do that. <br />
<br />
While at it, you may also want to add your laptop to the [[list of DMI IDs]].<br />
<br />
=====HDAPS axis orientation=====<br />
HDAPS axis orientation notation: X,Y are the hardware readouts, X',Y' are horizontal and vertical. You can use [[HDAPS#Visualisation_of_ThinkPad_orientation|hdaps visualisation]] to check for correctness.<br />
<br />
Just like the mainline hdaps driver, tp_smapi's hdaps driver supports inverting both axes together (but not separately, and no axis swapping):<br />
modprobe hdaps invert=1<br />
<br />
[[Category:Drivers]] [[Category:Patches]]<br />
<br />
===Tools using this driver===<br />
<br />
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:<br />
* [[KThinkBat]] - display battery status on the KDE <tt>kicker</tt> panel.<br />
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2<br />
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Tp_smapi&diff=33558Tp smapi2007-09-30T01:57:01Z<p>Owenh: /* Installation from source */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
The <tt>tp_smapi</tt> kernel module exposes some features of the ThinkPad hardware/firmware via a <tt>sysfs</tt> interface. Currently, the main implemented functionality is control of battery charging and extended battery status. It also includes an improved version of the [[HDAPS]] driver. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.<br />
<br />
For older ThinkPad models, see also [[tpctl]].<br />
<br />
{{WARN|This driver uses undocumented features and direct hardware access. It thus cannot be guaranteed to work and could conceivably damage your computer (though so far no incidents have been reported).}}<br />
|}<br />
<br />
===Features===<br />
*Battery charge/discharge control<br />
*Battery status information<br />
<br />
===Project Homepage / Availability===<br />
* Project page: http://tpctl.sourceforge.net/<br />
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&package_id=171579 download] only the <tt>tp_smapi</tt> package.<br />
<br />
===Installation===<br />
====Installation from source====<br />
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .<br />
<br />
:{{cmdroot|tar xzvf tp_smapi-0.32.tgz}}<br />
:{{cmdroot|cd tp_smapi-0.32}}<br />
<br />
<br />
Then, either compile and load the driver within the current working directory (for testing):<br />
:{{cmdroot|make load}}<br />
OR compile and install into the kernel's module path:<br />
:{{cmdroot|make install}}<br />
<br />
<br />
If you use the [[HDAPS]] driver, add <tt>HDAPS=1</tt> to also patch the <tt>hdaps</tt> for compatibility with <tt>tp_smapi</tt> (this requires a kernel source tree matching the current kernel).<br />
Again, either load the driver within the current working directory:<br />
:{{cmdroot|1=make load HDAPS=1}}<br />
OR install into the kernel's module path:<br />
:{{cmdroot|1=make install HDAPS=1}}<br />
<br />
<br />
To prepare a stand-alone patch against the current kernel tree (including<br />
a patch against <tt>hdaps</tt> and new <tt>Kconfig</tt> entries):<br />
:{{cmdroot|make patch}}<br />
<br />
To delete all autogenerated files:<br />
:{{cmdroot|make clean}}<br />
<br />
The original kernel tree is never modified by any these commands. <br />
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.<br />
<br />
====Installation in Gentoo====<br />
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/packages/?category=app-laptop;name=tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.<br />
<br />
If you use the [[HDAPS]] driver, do this first:<br />
<br />
* Configure <tt>hdaps</tt> as module in your kernel<br />
* Add the <tt>HDAPS</tt> use flag in {{path|/etc/make.conf}}<br />
* {{cmdroot|rmmod hdaps}}<br />
<br />
Then:<br />
<br />
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)<br />
* {{cmdroot|echo "tp_smapi" >> /etc/modules.autoload.d/kernel-2.6}}<br />
* {{cmdroot|echo "hdaps" >> /etc/modules.autoload.d/kernel-2.6}}<br />
<br />
Then reboot, or run:<br />
* {{cmdroot|modprobe tp_smapi}}<br />
* {{cmdroot|modprobe hdaps}}<br />
<br />
====Installation on Ubuntu/Debian====<br />
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:<br />
<br />
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):<br />
<pre><nowiki>apt-get install build-essential</nowiki></pre><br />
<br />
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:<br />
<pre><nowiki>uname -r</nowiki></pre><br />
This will give you the version of your current kernel. As Ubuntu adds '-generic' to the kernel-version, the following command works for Debian users only:<br />
<pre><nowiki>apt-get install linux-source-`uname -r`</nowiki></pre><br />
Ubuntu users use the kernel-version they got by the command before, e.g. 'linux-source-2.6.20'<br />
<br />
Now change to the tp_smapi dir:<br />
<pre><nowiki>cd tp_smapi-X.YY</nowiki></pre> (X.YY being the version-number of [[tp_smapi]])<br />
and make and install tp_smapi as instructed above.<br />
<br />
If you get an error that the kernel version isn't matching (or that you need to set KSRC/KBUILD), please check that there is a symlink from the modules dir to the kernel source:<br />
<pre><nowiki>root@localhost:~#ls -l /lib/modules/2.6.20-16-generic<br />
lrwxrwxrwx 1 root root 28 2007-02-02 08:39 source -> /usr/src/linux-source-2.6.20</nowiki></pre><br />
Create the link if the line above is not existent:<br />
<pre><nowiki>root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-16-generic/source</nowiki></pre><br />
<br />
Now the following will build and install the correct modules to their locations:<br />
<pre><nowiki>make install HDAPS=1</nowiki></pre><br />
To make sure your system loads the modules at boot time, do this:<br />
<pre><nowiki>echo "tp_smapi" >> /etc/modules<br />
echo "hdaps" >> /etc/modules</nowiki></pre><br />
and update your initramfs:<br />
<pre><nowiki>update-initramfs -u</nowiki></pre><br />
<br />
To get tp_smapi running now, just load the modules:<br />
<pre><nowiki>modprobe -a tp_smapi hdaps</nowiki></pre><br />
<br />
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.<br />
<br />
===Battery charge control features===<br />
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):<br />
:{{cmdroot|echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh}}<br />
:{{cmdroot|echo 70 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}<br />
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}<br />
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}<br />
To prevent charging for 17 minutes (regardless of thresholds):<br />
:{{cmdroot|echo 17 > /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}<br />
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}<br />
<br />
To cancel charging preventation:<br />
:{{cmdroot|echo 0 > /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}<br />
<br />
To force battery discharging (even if connected to AC):<br />
:{{cmdroot|echo 1 > /sys/devices/platform/smapi/BAT0/force_discharge}}<br />
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}<br />
<br />
To cancel forced discharge:<br />
:{{cmdroot|echo 0 > /sys/devices/platform/smapi/BAT0/force_discharge}}<br />
<br />
===Battery status features===<br />
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:<br />
<br />
<pre><br />
# cat /sys/devices/platform/smapi/BAT0/installed<br />
# cat /sys/devices/platform/smapi/BAT0/state # idle/charging/discharging<br />
# cat /sys/devices/platform/smapi/BAT0/cycle_count<br />
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current<br />
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average<br />
# cat /sys/devices/platform/smapi/BAT0/power_now # instantaneous power<br />
# cat /sys/devices/platform/smapi/BAT0/power_avg # last minute average<br />
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_percent<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/design_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/voltage<br />
# cat /sys/devices/platform/smapi/BAT0/design_voltage<br />
# cat /sys/devices/platform/smapi/BAT0/manufacturer<br />
# cat /sys/devices/platform/smapi/BAT0/model<br />
# cat /sys/devices/platform/smapi/BAT0/barcoding<br />
# cat /sys/devices/platform/smapi/BAT0/chemistry<br />
# cat /sys/devices/platform/smapi/BAT0/serial<br />
# cat /sys/devices/platform/smapi/BAT0/manufacture_date<br />
# cat /sys/devices/platform/smapi/BAT0/first_use_date<br />
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius<br />
# cat /sys/devices/platform/smapi/ac_connected<br />
</pre><br />
<br />
The raw status data is also available, including some fields not listed above (in case you can figure them out):<br />
<br />
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/dump}}<br />
<br />
In all of the above, replace <tt>BAT0</tt> with <tt>BAT1</tt> to address the 2nd battery.<br />
<br />
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use <tt>hdaps</tt> you will need to load <tt>tp_smapi</tt> using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).<br />
<br />
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].<br />
<br />
===Other features===<br />
<br />
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:<br />
# echo '211a 100 0 0' > /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request<br />
211a 34b b2 0 0 0 'OK'<br />
The "34b" in the 2nd value, converted to decimal is 75: the current charge stop threshold.<br />
<br />
===Bundled <tt>hdaps</tt> driver===<br />
<br />
The tp_smapi package includes a modified version of the <tt>hdaps</tt> Linux kernel driver used by the [[HDAPS]] system. To use <tt>tp_smapi</tt> and <tt>hdaps</tt> concurrently, you '''must''' use the modified version.<br />
<br />
To build the modified version, simply append the <tt>HDAPS=1</tt> parameter to the <tt>make</tt> command (see [[#Installation|Installation]] above):<br />
:{{cmdroot|1=make load HDAPS=1}}<br />
or<br />
:{{cmdroot|1=make install HDAPS=1}}<br />
<br />
If you don't do that, you will not be able to load <tt>tp_smapi</tt> (and its support module <tt>thinkpad_ec</tt>) when <tt>hdaps</tt> is loaded, and vice versa. You can use <tt>rmmod</tt> to switch between these modules.<br />
<br />
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of <tt>tp_smapi</tt>.<br />
<br />
The modified <tt>hdaps</tt> has several changes:<br />
* The <tt>hdaps</tt> driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified <tt>hdaps</tt> coordinates this access through the bundled <tt>thinkpad_ec</tt> driver.<br />
* The modified <tt>hdaps</tt> driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.<br />
* Several other improvements, such as the ability to control the polling rate.<br />
<br />
===Troubleshooting===<br />
<br />
If you get <tt>thinkpad_ec: no ThinkPad embedded controller!</tt> when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.<br />
<br />
===Model-specific status===<br />
<br />
<br />
<div style="font-size: 92%"><br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|+<tt>tp_smapi</tt> feature support matrix<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" | <br />
=====A series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{A22p}} 2629-USG<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{A30}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
=====G series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{G41}}<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
=====R series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{R31}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || || No SMAPI BIOS<br />
|-<br />
! {{R40}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R50}}<br />
| {{Cunk}} || {{Cno}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R50e}} 1834-JAG<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R50p}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R51}} 18*<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 3.22 || Machine types 1829, 1830, 1831 and 1836<br />
|-<br />
! {{R51}} 28*<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || 1.29 || Machine types 2883, 2887, 2888, 2889, 2894 and 2495<br />
|-<br />
! {{R52}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 1.29 ||<br />
|-<br />
! {{R60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}} || {{Cunk}} || || ||<br />
|-<br />
<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
<br />
=====T series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{T20}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.<br />
|-<br />
! {{T22}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.<br />
|-<br />
! {{T23}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T30}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T40}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T40p}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T41}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T41p}} 2373-AM9<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || 3.20 || EC v3.04<br />
|-<br />
! {{T42}}<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T42p}} 2373-KXU<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || 3.21 || Stop charge threshold works in Windows. dmesg output:<br />
smapi smapi: smapi_request: SMAPI error: Function is not supported by SMAPI BIOS (func=211a)<br />
smapi smapi: __get_real_thresh: cannot get stop_thresh of bat=0: Function is not supported by SMAPI BIOS<br />
|-<br />
! {{T42p}} 2373-KUU<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T43}} 2686<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 1.27 ||<br />
|-<br />
! {{T43p}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=Y, Y'=-X || 0.32 || ||<br />
|-<br />
! {{T60p}} 8743-CTO<br />
| {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || ||<br />
|-<br />
! {{T61}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=-X, Y'=-Y || 0.32 || || [http://ubuntuforums.org/showthread.php?p=3146719 ref]<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
<br />
=====X series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{X20}} 2662-31G<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X24}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X31}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X32}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X40}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || 2.08 || EC v1.62<br />
|-<br />
! {{X41}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || ||<br />
|-<br />
! {{X60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=-Y, Y'=X || || 2.07 || EC v1.10, 2.6.20 issue (see discussion)<br />
|-<br />
! {{X61s}}<br />
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || || [http://www.slackwiki.org/ThinkPad_X61s ref]<br />
|-<br />
! {{X60T}}<br />
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || || || [http://luke.no-ip.org/x60tablet/ ref] [http://rad.bioinfo.ulaval.ca/hardware/x60tablet ref]<br />
|-<br />
! {{X61T}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}}X'=-Y, Y'=X || 0.32 || ||<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
<br />
=====Z series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{Z60m}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{Z60t}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{Z61m}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || ||<br />
|-<br />
! {{Z61t}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || || || [https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/45014 ref]<br />
|}<br />
</div><br />
<br />
<br />
SMAPI capabilities may depend on the BIOS version as well, so upgrading to the latest version of the BIOS might provide more SMAPI functions (especially true for long-lived BIOS with lots of releases, like the TP-1R).<br />
<br />
Please update the above and report your experience on the [[Talk:tp_smapi|discussion]] page. If the module loads but gives a "<tt>not supported</tt>" or "<tt>not implementeded</tt>" error when you try to use some specific file in {{path|/sys/devices/platform/smapi/}}, please report the <tt>dmesg</tt> output and whether the corresponding functionality is available under Windows - maybe your ThinkPad just can't do that. <br />
<br />
While at it, you may also want to add your laptop to the [[list of DMI IDs]].<br />
<br />
=====HDAPS axis orientation=====<br />
HDAPS axis orientation notation: X,Y are the hardware readouts, X',Y' are horizontal and vertical. You can use [[HDAPS#Visualisation_of_ThinkPad_orientation|hdaps visualisation]] to check for correctness.<br />
<br />
Just like the mainline hdaps driver, tp_smapi's hdaps driver supports inverting both axes together (but not separately, and no axis swapping):<br />
modprobe hdaps invert=1<br />
<br />
[[Category:Drivers]] [[Category:Patches]]<br />
<br />
===Tools using this driver===<br />
<br />
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:<br />
* [[KThinkBat]] - display battery status on the KDE <tt>kicker</tt> panel.<br />
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2<br />
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Tp_smapi&diff=33557Tp smapi2007-09-30T01:49:48Z<p>Owenh: /* Installation on Ubuntu/Debian */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
The <tt>tp_smapi</tt> kernel module exposes some features of the ThinkPad hardware/firmware via a <tt>sysfs</tt> interface. Currently, the main implemented functionality is control of battery charging and extended battery status. It also includes an improved version of the [[HDAPS]] driver. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.<br />
<br />
For older ThinkPad models, see also [[tpctl]].<br />
<br />
{{WARN|This driver uses undocumented features and direct hardware access. It thus cannot be guaranteed to work and could conceivably damage your computer (though so far no incidents have been reported).}}<br />
|}<br />
<br />
===Features===<br />
*Battery charge/discharge control<br />
*Battery status information<br />
<br />
===Project Homepage / Availability===<br />
* Project page: http://tpctl.sourceforge.net/<br />
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&package_id=171579 download] only the <tt>tp_smapi</tt> package.<br />
<br />
===Installation===<br />
====Installation from source====<br />
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .<br />
<br />
For testing, you can simply compile and load the driver within the current<br />
working directory:<br />
:{{cmdroot|tar xzvf tp_smapi-0.32.tgz}}<br />
:{{cmdroot|cd tp_smapi-0.32}}<br />
:{{cmdroot|make load}}<br />
<br />
To compile and install into the kernel's module path:<br />
:{{cmdroot|make install}}<br />
<br />
<br />
If you use the [[HDAPS]] driver, add <tt>HDAPS=1</tt> to also patch the <tt>hdaps</tt> for compatibility with <tt>tp_smapi</tt> (this requires a kernel source tree matching the current kernel):<br />
:{{cmdroot|1=make load HDAPS=1}}<br />
or, to compile and install into the kernel's module path:<br />
:{{cmdroot|1=make install HDAPS=1}}<br />
<br />
<br />
To prepare a stand-alone patch against the current kernel tree (including<br />
a patch against <tt>hdaps</tt> and new <tt>Kconfig</tt> entries):<br />
:{{cmdroot|make patch}}<br />
<br />
To delete all autogenerated files:<br />
:{{cmdroot|make clean}}<br />
<br />
The original kernel tree is never modified by any these commands. <br />
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.<br />
<br />
====Installation in Gentoo====<br />
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/packages/?category=app-laptop;name=tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.<br />
<br />
If you use the [[HDAPS]] driver, do this first:<br />
<br />
* Configure <tt>hdaps</tt> as module in your kernel<br />
* Add the <tt>HDAPS</tt> use flag in {{path|/etc/make.conf}}<br />
* {{cmdroot|rmmod hdaps}}<br />
<br />
Then:<br />
<br />
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)<br />
* {{cmdroot|echo "tp_smapi" >> /etc/modules.autoload.d/kernel-2.6}}<br />
* {{cmdroot|echo "hdaps" >> /etc/modules.autoload.d/kernel-2.6}}<br />
<br />
Then reboot, or run:<br />
* {{cmdroot|modprobe tp_smapi}}<br />
* {{cmdroot|modprobe hdaps}}<br />
<br />
====Installation on Ubuntu/Debian====<br />
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:<br />
<br />
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):<br />
<pre><nowiki>apt-get install build-essential</nowiki></pre><br />
<br />
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:<br />
<pre><nowiki>uname -r</nowiki></pre><br />
This will give you the version of your current kernel. As Ubuntu adds '-generic' to the kernel-version, the following command works for Debian users only:<br />
<pre><nowiki>apt-get install linux-source-`uname -r`</nowiki></pre><br />
Ubuntu users use the kernel-version they got by the command before, e.g. 'linux-source-2.6.20'<br />
<br />
Now change to the tp_smapi dir:<br />
<pre><nowiki>cd tp_smapi-X.YY</nowiki></pre> (X.YY being the version-number of [[tp_smapi]])<br />
and make and install tp_smapi as instructed above.<br />
<br />
If you get an error that the kernel version isn't matching (or that you need to set KSRC/KBUILD), please check that there is a symlink from the modules dir to the kernel source:<br />
<pre><nowiki>root@localhost:~#ls -l /lib/modules/2.6.20-16-generic<br />
lrwxrwxrwx 1 root root 28 2007-02-02 08:39 source -> /usr/src/linux-source-2.6.20</nowiki></pre><br />
Create the link if the line above is not existent:<br />
<pre><nowiki>root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-16-generic/source</nowiki></pre><br />
<br />
Now the following will build and install the correct modules to their locations:<br />
<pre><nowiki>make install HDAPS=1</nowiki></pre><br />
To make sure your system loads the modules at boot time, do this:<br />
<pre><nowiki>echo "tp_smapi" >> /etc/modules<br />
echo "hdaps" >> /etc/modules</nowiki></pre><br />
and update your initramfs:<br />
<pre><nowiki>update-initramfs -u</nowiki></pre><br />
<br />
To get tp_smapi running now, just load the modules:<br />
<pre><nowiki>modprobe -a tp_smapi hdaps</nowiki></pre><br />
<br />
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.<br />
<br />
===Battery charge control features===<br />
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):<br />
:{{cmdroot|echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh}}<br />
:{{cmdroot|echo 70 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}<br />
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}<br />
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}<br />
To prevent charging for 17 minutes (regardless of thresholds):<br />
:{{cmdroot|echo 17 > /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}<br />
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}<br />
<br />
To cancel charging preventation:<br />
:{{cmdroot|echo 0 > /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}<br />
<br />
To force battery discharging (even if connected to AC):<br />
:{{cmdroot|echo 1 > /sys/devices/platform/smapi/BAT0/force_discharge}}<br />
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}<br />
<br />
To cancel forced discharge:<br />
:{{cmdroot|echo 0 > /sys/devices/platform/smapi/BAT0/force_discharge}}<br />
<br />
===Battery status features===<br />
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:<br />
<br />
<pre><br />
# cat /sys/devices/platform/smapi/BAT0/installed<br />
# cat /sys/devices/platform/smapi/BAT0/state # idle/charging/discharging<br />
# cat /sys/devices/platform/smapi/BAT0/cycle_count<br />
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current<br />
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average<br />
# cat /sys/devices/platform/smapi/BAT0/power_now # instantaneous power<br />
# cat /sys/devices/platform/smapi/BAT0/power_avg # last minute average<br />
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_percent<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/design_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/voltage<br />
# cat /sys/devices/platform/smapi/BAT0/design_voltage<br />
# cat /sys/devices/platform/smapi/BAT0/manufacturer<br />
# cat /sys/devices/platform/smapi/BAT0/model<br />
# cat /sys/devices/platform/smapi/BAT0/barcoding<br />
# cat /sys/devices/platform/smapi/BAT0/chemistry<br />
# cat /sys/devices/platform/smapi/BAT0/serial<br />
# cat /sys/devices/platform/smapi/BAT0/manufacture_date<br />
# cat /sys/devices/platform/smapi/BAT0/first_use_date<br />
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius<br />
# cat /sys/devices/platform/smapi/ac_connected<br />
</pre><br />
<br />
The raw status data is also available, including some fields not listed above (in case you can figure them out):<br />
<br />
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/dump}}<br />
<br />
In all of the above, replace <tt>BAT0</tt> with <tt>BAT1</tt> to address the 2nd battery.<br />
<br />
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use <tt>hdaps</tt> you will need to load <tt>tp_smapi</tt> using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).<br />
<br />
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].<br />
<br />
===Other features===<br />
<br />
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:<br />
# echo '211a 100 0 0' > /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request<br />
211a 34b b2 0 0 0 'OK'<br />
The "34b" in the 2nd value, converted to decimal is 75: the current charge stop threshold.<br />
<br />
===Bundled <tt>hdaps</tt> driver===<br />
<br />
The tp_smapi package includes a modified version of the <tt>hdaps</tt> Linux kernel driver used by the [[HDAPS]] system. To use <tt>tp_smapi</tt> and <tt>hdaps</tt> concurrently, you '''must''' use the modified version.<br />
<br />
To build the modified version, simply append the <tt>HDAPS=1</tt> parameter to the <tt>make</tt> command (see [[#Installation|Installation]] above):<br />
:{{cmdroot|1=make load HDAPS=1}}<br />
or<br />
:{{cmdroot|1=make install HDAPS=1}}<br />
<br />
If you don't do that, you will not be able to load <tt>tp_smapi</tt> (and its support module <tt>thinkpad_ec</tt>) when <tt>hdaps</tt> is loaded, and vice versa. You can use <tt>rmmod</tt> to switch between these modules.<br />
<br />
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of <tt>tp_smapi</tt>.<br />
<br />
The modified <tt>hdaps</tt> has several changes:<br />
* The <tt>hdaps</tt> driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified <tt>hdaps</tt> coordinates this access through the bundled <tt>thinkpad_ec</tt> driver.<br />
* The modified <tt>hdaps</tt> driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.<br />
* Several other improvements, such as the ability to control the polling rate.<br />
<br />
===Troubleshooting===<br />
<br />
If you get <tt>thinkpad_ec: no ThinkPad embedded controller!</tt> when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.<br />
<br />
===Model-specific status===<br />
<br />
<br />
<div style="font-size: 92%"><br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|+<tt>tp_smapi</tt> feature support matrix<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" | <br />
=====A series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{A22p}} 2629-USG<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{A30}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
=====G series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{G41}}<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
=====R series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{R31}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || || No SMAPI BIOS<br />
|-<br />
! {{R40}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R50}}<br />
| {{Cunk}} || {{Cno}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R50e}} 1834-JAG<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R50p}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R51}} 18*<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 3.22 || Machine types 1829, 1830, 1831 and 1836<br />
|-<br />
! {{R51}} 28*<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || 1.29 || Machine types 2883, 2887, 2888, 2889, 2894 and 2495<br />
|-<br />
! {{R52}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 1.29 ||<br />
|-<br />
! {{R60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}} || {{Cunk}} || || ||<br />
|-<br />
<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
<br />
=====T series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{T20}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.<br />
|-<br />
! {{T22}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.<br />
|-<br />
! {{T23}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T30}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T40}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T40p}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T41}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T41p}} 2373-AM9<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || 3.20 || EC v3.04<br />
|-<br />
! {{T42}}<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T42p}} 2373-KXU<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || 3.21 || Stop charge threshold works in Windows. dmesg output:<br />
smapi smapi: smapi_request: SMAPI error: Function is not supported by SMAPI BIOS (func=211a)<br />
smapi smapi: __get_real_thresh: cannot get stop_thresh of bat=0: Function is not supported by SMAPI BIOS<br />
|-<br />
! {{T42p}} 2373-KUU<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T43}} 2686<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 1.27 ||<br />
|-<br />
! {{T43p}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=Y, Y'=-X || 0.32 || ||<br />
|-<br />
! {{T60p}} 8743-CTO<br />
| {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || ||<br />
|-<br />
! {{T61}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=-X, Y'=-Y || 0.32 || || [http://ubuntuforums.org/showthread.php?p=3146719 ref]<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
<br />
=====X series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{X20}} 2662-31G<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X24}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X31}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X32}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X40}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || 2.08 || EC v1.62<br />
|-<br />
! {{X41}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || ||<br />
|-<br />
! {{X60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=-Y, Y'=X || || 2.07 || EC v1.10, 2.6.20 issue (see discussion)<br />
|-<br />
! {{X61s}}<br />
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || || [http://www.slackwiki.org/ThinkPad_X61s ref]<br />
|-<br />
! {{X60T}}<br />
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || || || [http://luke.no-ip.org/x60tablet/ ref] [http://rad.bioinfo.ulaval.ca/hardware/x60tablet ref]<br />
|-<br />
! {{X61T}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}}X'=-Y, Y'=X || 0.32 || ||<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
<br />
=====Z series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{Z60m}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{Z60t}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{Z61m}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || ||<br />
|-<br />
! {{Z61t}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || || || [https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/45014 ref]<br />
|}<br />
</div><br />
<br />
<br />
SMAPI capabilities may depend on the BIOS version as well, so upgrading to the latest version of the BIOS might provide more SMAPI functions (especially true for long-lived BIOS with lots of releases, like the TP-1R).<br />
<br />
Please update the above and report your experience on the [[Talk:tp_smapi|discussion]] page. If the module loads but gives a "<tt>not supported</tt>" or "<tt>not implementeded</tt>" error when you try to use some specific file in {{path|/sys/devices/platform/smapi/}}, please report the <tt>dmesg</tt> output and whether the corresponding functionality is available under Windows - maybe your ThinkPad just can't do that. <br />
<br />
While at it, you may also want to add your laptop to the [[list of DMI IDs]].<br />
<br />
=====HDAPS axis orientation=====<br />
HDAPS axis orientation notation: X,Y are the hardware readouts, X',Y' are horizontal and vertical. You can use [[HDAPS#Visualisation_of_ThinkPad_orientation|hdaps visualisation]] to check for correctness.<br />
<br />
Just like the mainline hdaps driver, tp_smapi's hdaps driver supports inverting both axes together (but not separately, and no axis swapping):<br />
modprobe hdaps invert=1<br />
<br />
[[Category:Drivers]] [[Category:Patches]]<br />
<br />
===Tools using this driver===<br />
<br />
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:<br />
* [[KThinkBat]] - display battery status on the KDE <tt>kicker</tt> panel.<br />
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2<br />
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Tp_smapi&diff=33556Tp smapi2007-09-30T01:48:22Z<p>Owenh: /* Other features */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
The <tt>tp_smapi</tt> kernel module exposes some features of the ThinkPad hardware/firmware via a <tt>sysfs</tt> interface. Currently, the main implemented functionality is control of battery charging and extended battery status. It also includes an improved version of the [[HDAPS]] driver. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.<br />
<br />
For older ThinkPad models, see also [[tpctl]].<br />
<br />
{{WARN|This driver uses undocumented features and direct hardware access. It thus cannot be guaranteed to work and could conceivably damage your computer (though so far no incidents have been reported).}}<br />
|}<br />
<br />
===Features===<br />
*Battery charge/discharge control<br />
*Battery status information<br />
<br />
===Project Homepage / Availability===<br />
* Project page: http://tpctl.sourceforge.net/<br />
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&package_id=171579 download] only the <tt>tp_smapi</tt> package.<br />
<br />
===Installation===<br />
====Installation from source====<br />
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .<br />
<br />
For testing, you can simply compile and load the driver within the current<br />
working directory:<br />
:{{cmdroot|tar xzvf tp_smapi-0.32.tgz}}<br />
:{{cmdroot|cd tp_smapi-0.32}}<br />
:{{cmdroot|make load}}<br />
<br />
To compile and install into the kernel's module path:<br />
:{{cmdroot|make install}}<br />
<br />
<br />
If you use the [[HDAPS]] driver, add <tt>HDAPS=1</tt> to also patch the <tt>hdaps</tt> for compatibility with <tt>tp_smapi</tt> (this requires a kernel source tree matching the current kernel):<br />
:{{cmdroot|1=make load HDAPS=1}}<br />
or, to compile and install into the kernel's module path:<br />
:{{cmdroot|1=make install HDAPS=1}}<br />
<br />
<br />
To prepare a stand-alone patch against the current kernel tree (including<br />
a patch against <tt>hdaps</tt> and new <tt>Kconfig</tt> entries):<br />
:{{cmdroot|make patch}}<br />
<br />
To delete all autogenerated files:<br />
:{{cmdroot|make clean}}<br />
<br />
The original kernel tree is never modified by any these commands. <br />
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.<br />
<br />
====Installation in Gentoo====<br />
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/packages/?category=app-laptop;name=tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.<br />
<br />
If you use the [[HDAPS]] driver, do this first:<br />
<br />
* Configure <tt>hdaps</tt> as module in your kernel<br />
* Add the <tt>HDAPS</tt> use flag in {{path|/etc/make.conf}}<br />
* {{cmdroot|rmmod hdaps}}<br />
<br />
Then:<br />
<br />
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)<br />
* {{cmdroot|echo "tp_smapi" >> /etc/modules.autoload.d/kernel-2.6}}<br />
* {{cmdroot|echo "hdaps" >> /etc/modules.autoload.d/kernel-2.6}}<br />
<br />
Then reboot, or run:<br />
* {{cmdroot|modprobe tp_smapi}}<br />
* {{cmdroot|modprobe hdaps}}<br />
<br />
====Installation on Ubuntu/Debian====<br />
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:<br />
<br />
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):<br />
<pre><nowiki>apt-get install build-essential</nowiki></pre><br />
<br />
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:<br />
<pre><nowiki>uname -r</nowiki></pre><br />
This will give you the version of your current kernel. As Ubuntu adds '-generic' to the kernel-version, the following command works for Debian users only:<br />
<pre><nowiki>apt-get install linux-source-`uname -r`</nowiki></pre><br />
Ubuntu users use the kernel-version they got by the command before, e.g. 'linux-source-2.6.20'<br />
<br />
Now change to the tp_smapi dir:<br />
<pre><nowiki>cd tp_smapi-X.YY</nowiki></pre> (X.YY being the version-number of [[tp_smapi]])<br />
and make and install tp_smapi as instructed above.<br />
<br />
If you get an error that the kernel version isn't matching, please check that there is a symlink from the modules dir to the kernel source:<br />
<pre><nowiki>root@localhost:~#ls -l /lib/modules/2.6.20-16-generic<br />
lrwxrwxrwx 1 root root 28 2007-02-02 08:39 source -> /usr/src/linux-source-2.6.20</nowiki></pre><br />
Create the link if the line above is not existent:<br />
<pre><nowiki>root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-16-generic/source</nowiki></pre><br />
<br />
Now the following will build and install the correct modules to their locations:<br />
<pre><nowiki>make install HDAPS=1</nowiki></pre><br />
To make sure your system loads the modules at boot time, do this:<br />
<pre><nowiki>echo "tp_smapi" >> /etc/modules<br />
echo "hdaps" >> /etc/modules</nowiki></pre><br />
and update your initramfs:<br />
<pre><nowiki>update-initramfs -u</nowiki></pre><br />
<br />
To get tp_smapi running now, just load the modules:<br />
<pre><nowiki>modprobe -a tp_smapi hdaps</nowiki></pre><br />
<br />
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.<br />
<br />
===Battery charge control features===<br />
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):<br />
:{{cmdroot|echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh}}<br />
:{{cmdroot|echo 70 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}<br />
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}<br />
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}<br />
To prevent charging for 17 minutes (regardless of thresholds):<br />
:{{cmdroot|echo 17 > /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}<br />
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}<br />
<br />
To cancel charging preventation:<br />
:{{cmdroot|echo 0 > /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}<br />
<br />
To force battery discharging (even if connected to AC):<br />
:{{cmdroot|echo 1 > /sys/devices/platform/smapi/BAT0/force_discharge}}<br />
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}<br />
<br />
To cancel forced discharge:<br />
:{{cmdroot|echo 0 > /sys/devices/platform/smapi/BAT0/force_discharge}}<br />
<br />
===Battery status features===<br />
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:<br />
<br />
<pre><br />
# cat /sys/devices/platform/smapi/BAT0/installed<br />
# cat /sys/devices/platform/smapi/BAT0/state # idle/charging/discharging<br />
# cat /sys/devices/platform/smapi/BAT0/cycle_count<br />
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current<br />
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average<br />
# cat /sys/devices/platform/smapi/BAT0/power_now # instantaneous power<br />
# cat /sys/devices/platform/smapi/BAT0/power_avg # last minute average<br />
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_percent<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/design_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/voltage<br />
# cat /sys/devices/platform/smapi/BAT0/design_voltage<br />
# cat /sys/devices/platform/smapi/BAT0/manufacturer<br />
# cat /sys/devices/platform/smapi/BAT0/model<br />
# cat /sys/devices/platform/smapi/BAT0/barcoding<br />
# cat /sys/devices/platform/smapi/BAT0/chemistry<br />
# cat /sys/devices/platform/smapi/BAT0/serial<br />
# cat /sys/devices/platform/smapi/BAT0/manufacture_date<br />
# cat /sys/devices/platform/smapi/BAT0/first_use_date<br />
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius<br />
# cat /sys/devices/platform/smapi/ac_connected<br />
</pre><br />
<br />
The raw status data is also available, including some fields not listed above (in case you can figure them out):<br />
<br />
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/dump}}<br />
<br />
In all of the above, replace <tt>BAT0</tt> with <tt>BAT1</tt> to address the 2nd battery.<br />
<br />
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use <tt>hdaps</tt> you will need to load <tt>tp_smapi</tt> using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).<br />
<br />
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].<br />
<br />
===Other features===<br />
<br />
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:<br />
# echo '211a 100 0 0' > /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request<br />
211a 34b b2 0 0 0 'OK'<br />
The "34b" in the 2nd value, converted to decimal is 75: the current charge stop threshold.<br />
<br />
===Bundled <tt>hdaps</tt> driver===<br />
<br />
The tp_smapi package includes a modified version of the <tt>hdaps</tt> Linux kernel driver used by the [[HDAPS]] system. To use <tt>tp_smapi</tt> and <tt>hdaps</tt> concurrently, you '''must''' use the modified version.<br />
<br />
To build the modified version, simply append the <tt>HDAPS=1</tt> parameter to the <tt>make</tt> command (see [[#Installation|Installation]] above):<br />
:{{cmdroot|1=make load HDAPS=1}}<br />
or<br />
:{{cmdroot|1=make install HDAPS=1}}<br />
<br />
If you don't do that, you will not be able to load <tt>tp_smapi</tt> (and its support module <tt>thinkpad_ec</tt>) when <tt>hdaps</tt> is loaded, and vice versa. You can use <tt>rmmod</tt> to switch between these modules.<br />
<br />
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of <tt>tp_smapi</tt>.<br />
<br />
The modified <tt>hdaps</tt> has several changes:<br />
* The <tt>hdaps</tt> driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified <tt>hdaps</tt> coordinates this access through the bundled <tt>thinkpad_ec</tt> driver.<br />
* The modified <tt>hdaps</tt> driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.<br />
* Several other improvements, such as the ability to control the polling rate.<br />
<br />
===Troubleshooting===<br />
<br />
If you get <tt>thinkpad_ec: no ThinkPad embedded controller!</tt> when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.<br />
<br />
===Model-specific status===<br />
<br />
<br />
<div style="font-size: 92%"><br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|+<tt>tp_smapi</tt> feature support matrix<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" | <br />
=====A series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{A22p}} 2629-USG<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{A30}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
=====G series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{G41}}<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
=====R series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{R31}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || || No SMAPI BIOS<br />
|-<br />
! {{R40}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R50}}<br />
| {{Cunk}} || {{Cno}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R50e}} 1834-JAG<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R50p}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{R51}} 18*<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 3.22 || Machine types 1829, 1830, 1831 and 1836<br />
|-<br />
! {{R51}} 28*<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || 1.29 || Machine types 2883, 2887, 2888, 2889, 2894 and 2495<br />
|-<br />
! {{R52}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 1.29 ||<br />
|-<br />
! {{R60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}} || {{Cunk}} || || ||<br />
|-<br />
<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
<br />
=====T series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{T20}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.<br />
|-<br />
! {{T22}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.<br />
|-<br />
! {{T23}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T30}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T40}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T40p}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T41}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T41p}} 2373-AM9<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || 3.20 || EC v3.04<br />
|-<br />
! {{T42}}<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T42p}} 2373-KXU<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || 3.21 || Stop charge threshold works in Windows. dmesg output:<br />
smapi smapi: smapi_request: SMAPI error: Function is not supported by SMAPI BIOS (func=211a)<br />
smapi smapi: __get_real_thresh: cannot get stop_thresh of bat=0: Function is not supported by SMAPI BIOS<br />
|-<br />
! {{T42p}} 2373-KUU<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T43}} 2686<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 1.27 ||<br />
|-<br />
! {{T43p}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{T60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=Y, Y'=-X || 0.32 || ||<br />
|-<br />
! {{T60p}} 8743-CTO<br />
| {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || ||<br />
|-<br />
! {{T61}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=-X, Y'=-Y || 0.32 || || [http://ubuntuforums.org/showthread.php?p=3146719 ref]<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
<br />
=====X series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{X20}} 2662-31G<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X24}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X31}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X32}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{X40}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || 2.08 || EC v1.62<br />
|-<br />
! {{X41}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || ||<br />
|-<br />
! {{X60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=-Y, Y'=X || || 2.07 || EC v1.10, 2.6.20 issue (see discussion)<br />
|-<br />
! {{X61s}}<br />
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || || [http://www.slackwiki.org/ThinkPad_X61s ref]<br />
|-<br />
! {{X60T}}<br />
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || || || [http://luke.no-ip.org/x60tablet/ ref] [http://rad.bioinfo.ulaval.ca/hardware/x60tablet ref]<br />
|-<br />
! {{X61T}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}}X'=-Y, Y'=X || 0.32 || ||<br />
|-<br />
! colspan=11 style="text-align:center;background:#efefef;" |<br />
<br />
=====Z series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{Z60m}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{Z60t}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || ||<br />
|-<br />
! {{Z61m}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || ||<br />
|-<br />
! {{Z61t}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || || || [https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/45014 ref]<br />
|}<br />
</div><br />
<br />
<br />
SMAPI capabilities may depend on the BIOS version as well, so upgrading to the latest version of the BIOS might provide more SMAPI functions (especially true for long-lived BIOS with lots of releases, like the TP-1R).<br />
<br />
Please update the above and report your experience on the [[Talk:tp_smapi|discussion]] page. If the module loads but gives a "<tt>not supported</tt>" or "<tt>not implementeded</tt>" error when you try to use some specific file in {{path|/sys/devices/platform/smapi/}}, please report the <tt>dmesg</tt> output and whether the corresponding functionality is available under Windows - maybe your ThinkPad just can't do that. <br />
<br />
While at it, you may also want to add your laptop to the [[list of DMI IDs]].<br />
<br />
=====HDAPS axis orientation=====<br />
HDAPS axis orientation notation: X,Y are the hardware readouts, X',Y' are horizontal and vertical. You can use [[HDAPS#Visualisation_of_ThinkPad_orientation|hdaps visualisation]] to check for correctness.<br />
<br />
Just like the mainline hdaps driver, tp_smapi's hdaps driver supports inverting both axes together (but not separately, and no axis swapping):<br />
modprobe hdaps invert=1<br />
<br />
[[Category:Drivers]] [[Category:Patches]]<br />
<br />
===Tools using this driver===<br />
<br />
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:<br />
* [[KThinkBat]] - display battery status on the KDE <tt>kicker</tt> panel.<br />
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2<br />
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Maintenance&diff=33471Maintenance2007-09-27T16:33:55Z<p>Owenh: /* Battery treatment */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
Here you can find general hints about keeping your ThinkPad in good shape. Look at your [[:Category:Models|models category page]] for IBMs official maintenance guide for that model.<br />
|}<br />
==Battery treatment==<br />
{| border=1 cellspacing=0 cellpadding=2 style="vertical-align:top;"<br />
|+Battery life expanding guide<br />
|- style="background:#efefef;white-space:nowrap;"<br />
! style="background:#ffdead;" | Battery Type !! NiCd !! NiMH !! Lithium ion<br />
|- style="vertical-align:top;"<br />
! style="background:#ffdead;" | General<br />
|<br />
*always do complete discharge/charge cycles<br />
*avoid exposing the battery (or notebook) to excessive heat<br />
|<br />
*always do complete discharge/charge cycles<br />
*avoid exposing the battery (or notebook) to excessive heat<br />
|<br />
*avoid deep discharges except when resetting fuel gauge or reconditioning a battery; partial dis-/recharges are better for the battery lifetime (note: fuel gauge will slowly get inaccurate over time)<br />
*remove battery when on AC (due to heat)<br />
*avoid exposing the battery (or notebook) to excessive heat<br />
|- style="vertical-align:top;"<br />
! style="background:#ffdead;" | Charging<br />
|<br />
*discharge before charging<br />
|<br />
*discharge before charging<br />
|<br />
*avoid charging if battery is nearly full, unless you will need its full capacity soon; keep it on the 30%-85% charged range<br />
*keep notebook off while charging due to heat<br />
*fully discharge, then fully charge battery when needed to recalibrate fuel gauge; newer battery pack models require this less often, old ones might need it as often as every 30 cycles<br />
|- style="vertical-align:top;"<br />
! style="background:#ffdead;" | Storage<br />
| <br />
*almost discharged<br />
*cool and dry<br />
|<br />
*almost discharged<br />
*cool and dry<br />
|<br />
*never fully charged or discharged, ideally at about 40%<br />
*cool and dry, but '''do not freeze''' them: 10-15C is recommended<br />
|}<br />
<br />
===Battery health===<br />
Batteries, especially of the modern Li-Ion type, wear out quicker when they hold a large charge or are subject to higher temperatures (see above).<br />
<br />
If you use your laptop at a desk, reduce battery wear by maintaining an appropriate charge level. When possible, remove Li-ion batteries while operating from AC as the notebook gets hot enough inside for that to damage the battery in the long run, even if charging is stopped.<br />
<br />
On recent ThinkPads, charging thresholds can be configured in the bundled software. Under Linux, this is supported on recent models by the [[tp_smapi]] driver (and even without <tt>tp_smapi</tt>, if you have a dual-boot setup, you can set the thresholds under Windows and they will be remembered as long as you don't power off your machine with AC disconnected; suspend to RAM is OK). Have a look at [[How to use UltraBay batteries]].<br />
<br />
If you have spare Li-ion battery packs, store them at 40% charge in a cool place (15C being a recommended temperature, do not let the batteries freeze). If storing inside a refrigerator, beware of humidity, and be careful with cold spots that can easily freeze the battery if anything goes wrong.<br />
<br />
===The problem with 600 series batteries===<br />
ThinkPad 600 power management causes batteries to die before they should. Read more about this on the [[Problem with ThinkPad 600 batteries|associated problem page]].<br />
<br />
===Reviving batteries===<br />
Some people experience sudden drops in their batteries capacity. A way to get these batteries back to full capacity is to run the "Battery Rundown" function of IBMs "PC Doctor for DOS". The program is downloadable from IBMs support site as three floppy disk images. Make sure you get the specific version of program made for your ThinkPad model. For those who do not have a floppy, David Smith prepared a [http://www.mypchelp.com/~dsmith/ibmutil/ibm_t22_pcdiag.iso bootable CD image] (dead link, a copy is also available [http://server6.org/~marker/software/ibm_t22_pcdiag.iso here]) from the T22 floppy images. For newer ThinkPads there is an official [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-56222 bootable CD image].<br />
<br />
===See also===<br />
* [[Battery safety]]<br />
<br />
===External sources===<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=PFAN-3QNQJN IBM Support - Extending battery life]<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&lndocid=MIGR-51038 IBM Support - Battery troubleshooting]<br />
* [http://www.pc.ibm.com/ww/thinkpad/batterylife/ IBM Benchmark]<br />
* [http://batteryuniversity.com Battery University]<br />
* [http://www.batteryuniversity.com/parttwo-34.htm Battery University's info about prolonging lithium ion batteries]<br />
* [http://www.buchmann.ca/Chap10-page6.asp prolonging lithium ion batteries in Buchmanns Battery FAQ]<br />
<br />
==Cleaning the Display==<br />
If you discover markings that look like they originate from the TrackPoint or keyboard, or for information on how to avoid these, look at [[Problem with key and trackpoint markings on the display|this page]].<br />
<br />
===External Sources===<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-4A2P54 Lenovo Support - LCD care and cleaning instructions]<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&lndocid=MIGR-52190 IBM Support - System cleaning instructions]<br />
<br />
==Cleaning the Interior==<br />
{{WARN|The following instructions are not appropriate for all ThinkPad models. Please consult the hardware maintenance guide or on-line disassembly instructions for your model.}}<br />
Most ThinkPad models (particularly the A-series and the T-series) tend to accumulate a lot of interior dust which they draw from their ventilation fan. A good dusting every few months is advised. The procedure is as follows.<br />
<br />
===ThinkPad T4x series===<br />
See IBM's keyboard removal [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-46515 instructions] and [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-50227 movie].<br />
<br />
===ThinkPad T6x series===<br />
See IBM's keyboard removal<br />
[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-62800 instructions] and<br />
[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-63912 movie].<br />
<br />
===Other models (which?)===<br />
#Unplug the computer.<br />
#Remove the battery.<br />
#Turn the ThinkPad over and find two to three screws with upraised double-arrows pointing to them.<br />
#Unscrew these screws and set them aside.<br />
#Press the silver area underneath where the battery used to be. The front of the keyboard will pop up.<br />
#Turn the ThinkPad right side up and gently remove the keyboard, pulling it toward you.<br />
#There is one connector between the ThinkPad and the keyboard. Disconnect it, and set the keyboard aside.<br />
#If there is a small black plastic separator under the keyboard, remove it and set it aside.<br />
#The fan should be visible in the upper left. That entire area will likely be dusty. With a can of compressed air (and ''only'' with a can of compressed air), dust that area and the surrounding area.<br />
#Replace the small black plastic separator, then reconnect the keyboard.<br />
#Slide the keyboard back into place, then press down on the Fn and right-arrow keys until it pops into place.<br />
#Replace the keyboard screws and battery.<br />
<br />
==Dealing with spilling accidents==<br />
#Don't panic.<br />
#Don't flip or tilt the computer to prevent the liquid from spreading all over the inside of the case.<br />
#Shut down the OS and turn off the power:<br />
##Unplug the computer.<br />
##Remove the battery.<br />
#Tilt the computer so that everything that leaked into the case can flow out the same way.<br />
#Allow the computer to dry before switching it on again.<br />
#For minor accidents this might already be sufficient. For major flooding you should either bring the computer to a dealer who knows how to open and clean it from inside. Or you can read the Hardware Maintenance Manual, open, clean, and dry the computer yourself. <br />
<br />
See also [http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 Act quickly, carefully if you spill on laptops] on MoneySense.ca (link broken as of 2006-09-18, the article is still available via [http://web.archive.org/web/20050221034011/http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 web.archive.org]).<br />
<br />
==Harddisk Backup / Upgrade==<br />
*[[How to copy a Linux installation]]<br />
*[[Harddrive Upgrade|How to upgrade your Thinkpad hard drive]]<br />
*[[How to copy a Windows installation]]<br />
===External Sources===<br />
*[http://gamma.nic.fi/~point/win2copy.htm Guide on copying Windows 2000/XP to another partition]<br />
<br />
==Recovering BIOS passwords==<br />
Password recovery procedure for IBM ThinkPads<br />
using R24RF08 and IBMpass<br />
<br />
'''1. Introduction.'''<br />
<br />
The IBM ThinkPad uses a small eeprom ([[AT24RF08|ATMEL 24RF08]]) to store different OEM<br />
issues like serial number, UUID, etc. The supervisor password (SVP) is also stored in this eeprom.<br />
The 24RF08 is not an ordinary eeprom: it features read protection, which the BIOS uses to lock down<br />
access to the eeprom contents. Also, the password is written in a special scan code, which needs to<br />
be translated to ASCII to be of any use.<br />
<br />
To recover the password, one can use two different programs: R24RF08 (eeprom reader) and IBMpass<br />
(password revealer) available at [http://www.allservice.ro http://www.allservice.ro]. Diagrams are included in the reader kit.<br />
<br />
Models for which R24RF08 and IBMpass are enough to recover the password: 240, 240X, 390E, 390X, 570, 570E,<br />
600e, 600X, 770Z, A20m, A21e, A21m, a22m, A30, A30p, A31, A31p, G40, G41, R30, R31, R32, R40, R50, R51, <br />
Transnote, T20, T21, T22, T23, T30, T40, T40p, T41, T41p, T42, T42p, X20, X21, X22, X23, X24, X30, X31, X40, X41.<br />
<br />
ThinkPads featuring TPCA technology (i.e. a [[Tpm|TPM trusted platform module chip]]), especially T4x, X3x, X4x need the W24RF08 eeprom writer program to complete the password recovery procedure, if the passphrase function is enabled in BIOS setup.<br />
<br />
Other models such as the 380XD or 600 use 24C01 or 93C46 eeproms, which can be read without special tools.<br />
The method is the same like for the models based on 24RF08, only the software to dump the eeprom is different. <br />
<br />
Newer T43/T43p, R52, R60, T60/p, X60 and Z60 ThinkPads can be unlocked using PC8394 programming tools that consist in RPC8394 and WPC8394 (reader and writer for TPM chips). The software is available as well on [http://www.allservice.ro http://www.allservice.ro]. IBMpass 2.0 works for any TP model without exceptions.<br />
<br />
<br />
'''2. Locating the ATMEL 24RF08 eeprom. Soldering.'''<br />
<br />
No need to unsolder the 24RF08 eeprom, just solder 3 wires to SDA, SCL and GND pins of the<br />
eeprom. There are two eeprom layouts (see interface schematics described bellow), corresponding to 8 pin or 14 pin eeproms. Locate the eeprom first according to your model (E.g. T20-23 and T30 have the eeprom underneath TP, and can be accessed by removing the RAM modules cover, no need to dismantle the laptop.) and solder the wires using a soldering iron with a fine tip. Also, you can use 0.15 -0.20 mm enamel coated wires or similar small diameter insulated wires. These wires will be connected later to the interface.<br />
Tip: You can use clips to connect the wires or you can solder on the PCB traces leading to the<br />
eeprom pins. Once again, be careful and double, triple check the soldering if necessary till you are positively sure you have done the right job. In case of applying too much solder, use flux-impregnated copper-braid "desoldering wick" - this works exceptionally well.<br />
<br />
<br />
'''3. Choose and build the interface.'''<br />
<br />
Since version 2.0, R24RF08 and W24RF08 (eeprom writer) are compatible with a wide range of eeprom programmers. By default, both programs set the COM port signals to use direct logic level to access I2C bus. We provide here 2 schematics that are relevant for direct logic signals and for inverse logic signals (simple-i2cprog.pdf and driven-i2cprog.pdf). Also, depending of the interface you build, you can invert the logics for SDA-In, SDA-Out, and SCL COM port signals by some command line parameters described later in this document.<br />
a) The file simple-i2cprog.pdf contains the schematic diagram of a simple interface (known as SIPROG)based on 2 zeners and 2 resistors. This is a classic, easy to build circuit and works with soldered or unsoldered eeproms. The purpose of the 2 zeners is to convert RS232 levels (+/- 5V) to TTL levels, needed by the eeprom. It uses direct logic signals to I2C eeprom and is powered by the COM port. However, this interface works with in-system eeproms but is dependant on COM port current and eeprom bus impedance. R24RF08 works natively with this circuit, no need to change the lines signals with command line parameters. This circuit works pretty well with almost all ThinkPads series.<br />
b) The second interface is described in driven-i2cprog.pdf. The circuit uses MAX 232 as a RS232 to TTL driver and its main purpose is to work with soldered eeproms. The advantage of MAX232 is the TTL outputs that are more reliable and more powerful when work with soldered, in-system eeproms (dependency free from the COM port current). Due of the internal inverters of MAX232 the interface responds to an inverse signal logic level. R24RF08 needs /x, /d, /i switches to be specified in the command line.<br />
<br />
What these switches mean:<br />
/x - invert serial clock, also known as SCL;<br />
/d - invert serial data output, also known as SDA-Out;<br />
/i - invert serial data input, also known as SDA-In.<br />
All those can be used in any combination to meet any interface specification.<br />
<br />
Note that the "standard" serial port programmer probably won't work with a USB-Serial adapter, but requires the full nominal voltage of a hardware serial port. [Example: the A22p's serial port works fine here.]<br />
<br />
<br />
'''4. Dump the EEPROM:'''<br />
<br />
Prepare your technician PC by connecting the interface to the COM1 port (don’t connect the wires to eeprom yet). Turn on the ThinkPad and press F1 to enter BIOS Setup. When you are prompted for the password and there’s no other activity like HDD access or so, connect the wires (GND first!, SDA, SCL) to the corresponding wires from the interface (attached before to COM1) and execute R24RF08:<br />
<br />
-for SI-PROG interface (as described in 3.a above):<br />
r24rf08.exe <filename.ext>. where filename.ext is the file where eeprom content will be stored.<br />
Example: r24rf08 mytp.bin<br />
<br />
-for MAX232 driven I2C interface (as described in 3.b above):<br />
r24rf08.exe <filename.ext> /x /d /i. where /x /d /i are command line parameters (switches) for this kind of interface.<br />
Example: r24rf08 mytp2.bin /x /d /i<br />
<br />
Use exactly the instructed switches to avoid possible damages to your eeprom data!<br />
The file should be created in the same folder. Finally, disconnect the wires (GND last!) and turn off the ThinkPad by pressing on/off switch.<br />
<br />
Dump the EEPROM data at least twice, and do a bytewise compare with `cmp`. Both files should be identical, and 1024 bytes long. Otherwise, you probably have a serial port problem.<br />
<br />
Note: the r24rf08.exe program automatically sets the serial port parameters. It also works fine with Wine under Linux - provided that a symlink (com1) exists in the .wine/dos_devices directory, and points to the /dev/ttySX for the actual serial port.<br />
<br />
<br />
'''5. Reveal the password.'''<br />
<br />
Now, you have the .bin file but you need to dump in scan code to retrieve the password. IBMpass 2.0 Lite is a free tool that will do the job. Just open the eeprom dump you’ve created before and search for 0x330, 0x340 lines. The password is located on 0x338 (and 0x340 depending on model) in scan code. For 24C01 eeproms the password is located at 0x38, 0x40. If the password won't work for the very first time then your eeprom may use newer IBM scancodes. In this case switch to alternate scan codes to find it. For those who want quick answers the recommended version is IBMpass 1.1. Usage for IBMpass 1.1 (command line only):<br />
<br />
ibmpass mytp.bin – use “/a†switch to see in alternate scan code if needed:<br />
ibmpass mytp.bin /a<br />
<br />
For some old models like 570 or 770Z you need to execute the eeprom patcher first. This will reset the read protection on the password offset. To do that just execute patcher.exe before the reading operation, without rebooting the laptop:<br />
<br />
-for SI-PROG:<br />
patcher.exe , then immediately<br />
r24rf08.exe <filename.ext><br />
<br />
-for Driven-I2C (Max232) you must insert the switches:<br />
patcher.exe /x /d /i, then immediately<br />
r24rf08.exe <filename.ext> /x /d /i<br />
<br />
W24RF08, the writer version, has included the complete APP reset operation you don’t need to use patcher.<br />
<br />
Moreover, there are a new encrypting algos used with some new security chips (AT97SC3201, AT97SC3203) that are very secured. The password is not in scancode and in some cases not even in the eeprom. To unlock the machine, the dump should suffer some changes and the eeprom must be reprogrammed using W24RF08. This operation works for all IBM TCG/TCPA secured laptops w/o exceptions. <br />
<br />
<br />
Remember, use 3 wires from the interface and 3 wires from eeprom! Connect them after your<br />
ThinkPad is powered and disconnect them right after you read the content, before you switch off the laptop.<br />
<br />
'''6. Password format'''<br />
<br />
The thinkpad power-on/supervisor passwords are a maximum of 7 characters, and are NOT case-sensitive. The allowed characters are restricted to A-Z, 0-9, semicolon, _, - (and perhaps a few others).<br />
<br />
<br />
===External Sources===<br />
* [http://www.allservice.ro R24RF08/W24RF08, PC8394 programming tools & IBMpass author's webpage.]<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&lndocid=MIGR-59377 IBM Support - Lost or forgotten password]<br />
* [http://www.allservice.ro/forum/viewforum.php?f=12 Full Service of all ThinkPad models including free password recovery]<br />
* [http://sodoityourself.com/hacking-ibm-thinkpad-bios-password/ A tutorial on how to do this]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Maintenance&diff=33470Maintenance2007-09-27T16:32:17Z<p>Owenh: /* Battery treatment */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
Here you can find general hints about keeping your ThinkPad in good shape. Look at your [[:Category:Models|models category page]] for IBMs official maintenance guide for that model.<br />
|}<br />
==Battery treatment==<br />
{| border=1 cellspacing=0 cellpadding=2 style="vertical-align:top;"<br />
|+Battery life expanding guide<br />
|- style="background:#efefef;white-space:nowrap;"<br />
! style="background:#ffdead;" | Battery Type !! NiCd !! NiMH !! Lithium ion<br />
|- style="vertical-align:top;"<br />
! style="background:#ffdead;" | General<br />
|<br />
*always do complete discharge/charge cycles<br />
*avoid exposing the battery (or notebook) to excessive heat<br />
|<br />
*always do complete discharge/charge cycles<br />
*avoid exposing the battery (or notebook) to excessive heat<br />
|<br />
*avoid deep discharges except when resetting fuel gauge or reconditioning a battery; partial dis-/recharges are better for the battery lifetime (note: fuel gauge will slowly get inaccurate over time)<br />
*remove battery when on AC (due to heat)<br />
*avoid exposing the battery (or notebook) to excessive heat<br />
|- style="vertical-align:top;"<br />
! style="background:#ffdead;" | Charging<br />
|<br />
*discharge before charging<br />
|<br />
*discharge before charging<br />
|<br />
*avoid charging if battery is nearly full, unless you will need its full capacity soon; keep it on the 30%-85% charged range<br />
*keep notebook off while charging due to heat<br />
*fully discharge, then fully charge battery when needed to recalibrate fuel gauge; newer battery pack models require this less often, old ones might need it as often as every 30 cycles<br />
|- style="vertical-align:top;"<br />
! style="background:#ffdead;" | Storage<br />
| <br />
*almost discharged<br />
*cool and dry<br />
|<br />
*almost discharged<br />
*cool and dry<br />
|<br />
*never fully charged or discharged, ideally at about 40%<br />
*cool and dry, but '''do not freeze''' them. 10-15C is recommended<br />
|}<br />
<br />
===Battery health===<br />
Batteries, especially of the modern Li-Ion type, wear out quicker when they hold a large charge or are subject to higher temperatures (see above).<br />
<br />
If you use your laptop at a desk, reduce battery wear by maintaining an appropriate charge level. When possible, remove Li-ion batteries while operating from AC as the notebook gets hot enough inside for that to damage the battery in the long run, even if charging is stopped.<br />
<br />
On recent ThinkPads, charging thresholds can be configured in the bundled software. Under Linux, this is supported on recent models by the [[tp_smapi]] driver (and even without <tt>tp_smapi</tt>, if you have a dual-boot setup, you can set the thresholds under Windows and they will be remembered as long as you don't power off your machine with AC disconnected; suspend to RAM is OK). Have a look at [[How to use UltraBay batteries]].<br />
<br />
If you have spare Li-ion battery packs, store them at 40% charge in a cool place (15C being a recommended temperature, do not let the batteries freeze). If storing inside a refrigerator, beware of humidity, and be careful with cold spots that can easily freeze the battery if anything goes wrong.<br />
<br />
===The problem with 600 series batteries===<br />
ThinkPad 600 power management causes batteries to die before they should. Read more about this on the [[Problem with ThinkPad 600 batteries|associated problem page]].<br />
<br />
===Reviving batteries===<br />
Some people experience sudden drops in their batteries capacity. A way to get these batteries back to full capacity is to run the "Battery Rundown" function of IBMs "PC Doctor for DOS". The program is downloadable from IBMs support site as three floppy disk images. Make sure you get the specific version of program made for your ThinkPad model. For those who do not have a floppy, David Smith prepared a [http://www.mypchelp.com/~dsmith/ibmutil/ibm_t22_pcdiag.iso bootable CD image] (dead link, a copy is also available [http://server6.org/~marker/software/ibm_t22_pcdiag.iso here]) from the T22 floppy images. For newer ThinkPads there is an official [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-56222 bootable CD image].<br />
<br />
===See also===<br />
* [[Battery safety]]<br />
<br />
===External sources===<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=PFAN-3QNQJN IBM Support - Extending battery life]<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&lndocid=MIGR-51038 IBM Support - Battery troubleshooting]<br />
* [http://www.pc.ibm.com/ww/thinkpad/batterylife/ IBM Benchmark]<br />
* [http://batteryuniversity.com Battery University]<br />
* [http://www.batteryuniversity.com/parttwo-34.htm Battery University's info about prolonging lithium ion batteries]<br />
* [http://www.buchmann.ca/Chap10-page6.asp prolonging lithium ion batteries in Buchmanns Battery FAQ]<br />
<br />
==Cleaning the Display==<br />
If you discover markings that look like they originate from the TrackPoint or keyboard, or for information on how to avoid these, look at [[Problem with key and trackpoint markings on the display|this page]].<br />
<br />
===External Sources===<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-4A2P54 Lenovo Support - LCD care and cleaning instructions]<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&lndocid=MIGR-52190 IBM Support - System cleaning instructions]<br />
<br />
==Cleaning the Interior==<br />
{{WARN|The following instructions are not appropriate for all ThinkPad models. Please consult the hardware maintenance guide or on-line disassembly instructions for your model.}}<br />
Most ThinkPad models (particularly the A-series and the T-series) tend to accumulate a lot of interior dust which they draw from their ventilation fan. A good dusting every few months is advised. The procedure is as follows.<br />
<br />
===ThinkPad T4x series===<br />
See IBM's keyboard removal [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-46515 instructions] and [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-50227 movie].<br />
<br />
===ThinkPad T6x series===<br />
See IBM's keyboard removal<br />
[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-62800 instructions] and<br />
[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-63912 movie].<br />
<br />
===Other models (which?)===<br />
#Unplug the computer.<br />
#Remove the battery.<br />
#Turn the ThinkPad over and find two to three screws with upraised double-arrows pointing to them.<br />
#Unscrew these screws and set them aside.<br />
#Press the silver area underneath where the battery used to be. The front of the keyboard will pop up.<br />
#Turn the ThinkPad right side up and gently remove the keyboard, pulling it toward you.<br />
#There is one connector between the ThinkPad and the keyboard. Disconnect it, and set the keyboard aside.<br />
#If there is a small black plastic separator under the keyboard, remove it and set it aside.<br />
#The fan should be visible in the upper left. That entire area will likely be dusty. With a can of compressed air (and ''only'' with a can of compressed air), dust that area and the surrounding area.<br />
#Replace the small black plastic separator, then reconnect the keyboard.<br />
#Slide the keyboard back into place, then press down on the Fn and right-arrow keys until it pops into place.<br />
#Replace the keyboard screws and battery.<br />
<br />
==Dealing with spilling accidents==<br />
#Don't panic.<br />
#Don't flip or tilt the computer to prevent the liquid from spreading all over the inside of the case.<br />
#Shut down the OS and turn off the power:<br />
##Unplug the computer.<br />
##Remove the battery.<br />
#Tilt the computer so that everything that leaked into the case can flow out the same way.<br />
#Allow the computer to dry before switching it on again.<br />
#For minor accidents this might already be sufficient. For major flooding you should either bring the computer to a dealer who knows how to open and clean it from inside. Or you can read the Hardware Maintenance Manual, open, clean, and dry the computer yourself. <br />
<br />
See also [http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 Act quickly, carefully if you spill on laptops] on MoneySense.ca (link broken as of 2006-09-18, the article is still available via [http://web.archive.org/web/20050221034011/http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 web.archive.org]).<br />
<br />
==Harddisk Backup / Upgrade==<br />
*[[How to copy a Linux installation]]<br />
*[[Harddrive Upgrade|How to upgrade your Thinkpad hard drive]]<br />
*[[How to copy a Windows installation]]<br />
===External Sources===<br />
*[http://gamma.nic.fi/~point/win2copy.htm Guide on copying Windows 2000/XP to another partition]<br />
<br />
==Recovering BIOS passwords==<br />
Password recovery procedure for IBM ThinkPads<br />
using R24RF08 and IBMpass<br />
<br />
'''1. Introduction.'''<br />
<br />
The IBM ThinkPad uses a small eeprom ([[AT24RF08|ATMEL 24RF08]]) to store different OEM<br />
issues like serial number, UUID, etc. The supervisor password (SVP) is also stored in this eeprom.<br />
The 24RF08 is not an ordinary eeprom: it features read protection, which the BIOS uses to lock down<br />
access to the eeprom contents. Also, the password is written in a special scan code, which needs to<br />
be translated to ASCII to be of any use.<br />
<br />
To recover the password, one can use two different programs: R24RF08 (eeprom reader) and IBMpass<br />
(password revealer) available at [http://www.allservice.ro http://www.allservice.ro]. Diagrams are included in the reader kit.<br />
<br />
Models for which R24RF08 and IBMpass are enough to recover the password: 240, 240X, 390E, 390X, 570, 570E,<br />
600e, 600X, 770Z, A20m, A21e, A21m, a22m, A30, A30p, A31, A31p, G40, G41, R30, R31, R32, R40, R50, R51, <br />
Transnote, T20, T21, T22, T23, T30, T40, T40p, T41, T41p, T42, T42p, X20, X21, X22, X23, X24, X30, X31, X40, X41.<br />
<br />
ThinkPads featuring TPCA technology (i.e. a [[Tpm|TPM trusted platform module chip]]), especially T4x, X3x, X4x need the W24RF08 eeprom writer program to complete the password recovery procedure, if the passphrase function is enabled in BIOS setup.<br />
<br />
Other models such as the 380XD or 600 use 24C01 or 93C46 eeproms, which can be read without special tools.<br />
The method is the same like for the models based on 24RF08, only the software to dump the eeprom is different. <br />
<br />
Newer T43/T43p, R52, R60, T60/p, X60 and Z60 ThinkPads can be unlocked using PC8394 programming tools that consist in RPC8394 and WPC8394 (reader and writer for TPM chips). The software is available as well on [http://www.allservice.ro http://www.allservice.ro]. IBMpass 2.0 works for any TP model without exceptions.<br />
<br />
<br />
'''2. Locating the ATMEL 24RF08 eeprom. Soldering.'''<br />
<br />
No need to unsolder the 24RF08 eeprom, just solder 3 wires to SDA, SCL and GND pins of the<br />
eeprom. There are two eeprom layouts (see interface schematics described bellow), corresponding to 8 pin or 14 pin eeproms. Locate the eeprom first according to your model (E.g. T20-23 and T30 have the eeprom underneath TP, and can be accessed by removing the RAM modules cover, no need to dismantle the laptop.) and solder the wires using a soldering iron with a fine tip. Also, you can use 0.15 -0.20 mm enamel coated wires or similar small diameter insulated wires. These wires will be connected later to the interface.<br />
Tip: You can use clips to connect the wires or you can solder on the PCB traces leading to the<br />
eeprom pins. Once again, be careful and double, triple check the soldering if necessary till you are positively sure you have done the right job. In case of applying too much solder, use flux-impregnated copper-braid "desoldering wick" - this works exceptionally well.<br />
<br />
<br />
'''3. Choose and build the interface.'''<br />
<br />
Since version 2.0, R24RF08 and W24RF08 (eeprom writer) are compatible with a wide range of eeprom programmers. By default, both programs set the COM port signals to use direct logic level to access I2C bus. We provide here 2 schematics that are relevant for direct logic signals and for inverse logic signals (simple-i2cprog.pdf and driven-i2cprog.pdf). Also, depending of the interface you build, you can invert the logics for SDA-In, SDA-Out, and SCL COM port signals by some command line parameters described later in this document.<br />
a) The file simple-i2cprog.pdf contains the schematic diagram of a simple interface (known as SIPROG)based on 2 zeners and 2 resistors. This is a classic, easy to build circuit and works with soldered or unsoldered eeproms. The purpose of the 2 zeners is to convert RS232 levels (+/- 5V) to TTL levels, needed by the eeprom. It uses direct logic signals to I2C eeprom and is powered by the COM port. However, this interface works with in-system eeproms but is dependant on COM port current and eeprom bus impedance. R24RF08 works natively with this circuit, no need to change the lines signals with command line parameters. This circuit works pretty well with almost all ThinkPads series.<br />
b) The second interface is described in driven-i2cprog.pdf. The circuit uses MAX 232 as a RS232 to TTL driver and its main purpose is to work with soldered eeproms. The advantage of MAX232 is the TTL outputs that are more reliable and more powerful when work with soldered, in-system eeproms (dependency free from the COM port current). Due of the internal inverters of MAX232 the interface responds to an inverse signal logic level. R24RF08 needs /x, /d, /i switches to be specified in the command line.<br />
<br />
What these switches mean:<br />
/x - invert serial clock, also known as SCL;<br />
/d - invert serial data output, also known as SDA-Out;<br />
/i - invert serial data input, also known as SDA-In.<br />
All those can be used in any combination to meet any interface specification.<br />
<br />
Note that the "standard" serial port programmer probably won't work with a USB-Serial adapter, but requires the full nominal voltage of a hardware serial port. [Example: the A22p's serial port works fine here.]<br />
<br />
<br />
'''4. Dump the EEPROM:'''<br />
<br />
Prepare your technician PC by connecting the interface to the COM1 port (don’t connect the wires to eeprom yet). Turn on the ThinkPad and press F1 to enter BIOS Setup. When you are prompted for the password and there’s no other activity like HDD access or so, connect the wires (GND first!, SDA, SCL) to the corresponding wires from the interface (attached before to COM1) and execute R24RF08:<br />
<br />
-for SI-PROG interface (as described in 3.a above):<br />
r24rf08.exe <filename.ext>. where filename.ext is the file where eeprom content will be stored.<br />
Example: r24rf08 mytp.bin<br />
<br />
-for MAX232 driven I2C interface (as described in 3.b above):<br />
r24rf08.exe <filename.ext> /x /d /i. where /x /d /i are command line parameters (switches) for this kind of interface.<br />
Example: r24rf08 mytp2.bin /x /d /i<br />
<br />
Use exactly the instructed switches to avoid possible damages to your eeprom data!<br />
The file should be created in the same folder. Finally, disconnect the wires (GND last!) and turn off the ThinkPad by pressing on/off switch.<br />
<br />
Dump the EEPROM data at least twice, and do a bytewise compare with `cmp`. Both files should be identical, and 1024 bytes long. Otherwise, you probably have a serial port problem.<br />
<br />
Note: the r24rf08.exe program automatically sets the serial port parameters. It also works fine with Wine under Linux - provided that a symlink (com1) exists in the .wine/dos_devices directory, and points to the /dev/ttySX for the actual serial port.<br />
<br />
<br />
'''5. Reveal the password.'''<br />
<br />
Now, you have the .bin file but you need to dump in scan code to retrieve the password. IBMpass 2.0 Lite is a free tool that will do the job. Just open the eeprom dump you’ve created before and search for 0x330, 0x340 lines. The password is located on 0x338 (and 0x340 depending on model) in scan code. For 24C01 eeproms the password is located at 0x38, 0x40. If the password won't work for the very first time then your eeprom may use newer IBM scancodes. In this case switch to alternate scan codes to find it. For those who want quick answers the recommended version is IBMpass 1.1. Usage for IBMpass 1.1 (command line only):<br />
<br />
ibmpass mytp.bin – use “/a†switch to see in alternate scan code if needed:<br />
ibmpass mytp.bin /a<br />
<br />
For some old models like 570 or 770Z you need to execute the eeprom patcher first. This will reset the read protection on the password offset. To do that just execute patcher.exe before the reading operation, without rebooting the laptop:<br />
<br />
-for SI-PROG:<br />
patcher.exe , then immediately<br />
r24rf08.exe <filename.ext><br />
<br />
-for Driven-I2C (Max232) you must insert the switches:<br />
patcher.exe /x /d /i, then immediately<br />
r24rf08.exe <filename.ext> /x /d /i<br />
<br />
W24RF08, the writer version, has included the complete APP reset operation you don’t need to use patcher.<br />
<br />
Moreover, there are a new encrypting algos used with some new security chips (AT97SC3201, AT97SC3203) that are very secured. The password is not in scancode and in some cases not even in the eeprom. To unlock the machine, the dump should suffer some changes and the eeprom must be reprogrammed using W24RF08. This operation works for all IBM TCG/TCPA secured laptops w/o exceptions. <br />
<br />
<br />
Remember, use 3 wires from the interface and 3 wires from eeprom! Connect them after your<br />
ThinkPad is powered and disconnect them right after you read the content, before you switch off the laptop.<br />
<br />
'''6. Password format'''<br />
<br />
The thinkpad power-on/supervisor passwords are a maximum of 7 characters, and are NOT case-sensitive. The allowed characters are restricted to A-Z, 0-9, semicolon, _, - (and perhaps a few others).<br />
<br />
<br />
===External Sources===<br />
* [http://www.allservice.ro R24RF08/W24RF08, PC8394 programming tools & IBMpass author's webpage.]<br />
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&lndocid=MIGR-59377 IBM Support - Lost or forgotten password]<br />
* [http://www.allservice.ro/forum/viewforum.php?f=12 Full Service of all ThinkPad models including free password recovery]<br />
* [http://sodoityourself.com/hacking-ibm-thinkpad-bios-password/ A tutorial on how to do this]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=How_to_reduce_power_consumption&diff=32782How to reduce power consumption2007-08-31T01:09:11Z<p>Owenh: /* Useful sysctls */</p>
<hr />
<div>Reducing system power consumption will extend battery life, reduce system<br />
temperature and (on some models) reduce system fan noise.<br />
Power consumption can be greatly improved from a stock distribution configuration<br />
to a fine tuned system. The general rules are :<br />
* Unload drivers for unused devices (ie. USB 1.1, Yenta/PCMCIA, Wireless, IRDA, Bluetooth, ...)<br />
* Reduce polling on devices (drives, USB subsystem, nvram, ...)<br />
* Reduce hard drive activity<br />
* Reduce LCD brightness to the minimum you can stand<br />
* Reduce CPU wakeups, so it can stay longer in deep power saving c-states<br />
<br />
==Tools==<br />
Arjan van de Ven's [http://www.linuxpowertop.org/ PowerTOP] utility<br />
is a gold mine to improve energy efficiency. This tool helps to easily detect<br />
the top power offenders, both userland and kernel modules, and sometime suggest <br />
fixes accordingly.<br />
PowerTOP users collected some [http://www.linuxpowertop.org/known.php tips & tricks]<br />
and an informative [http://www.linuxpowertop.org/faq.php faq].<br />
<br />
Alternatively (or complementary) to PowerTOP, running <code>strace -p $(pidof yourapp)</code> <br />
for all your favourite or background running applications while they are expected to be <br />
idle, will show the misbehaviours.<br />
<br />
Beside CPU wakeups, disks spins are also power angry. To detect what make your disk spinning,<br />
<br />
<code><br />
sysctl vm.block_dump=1<br />
</code><br />
<br />
will list all applications causing disks wakeups on the kernel's dmesg.<br />
Other useful tools for this purpose are blktrace, iostat and lm-profiler<br />
(from laptop-mode-tools suite).<br />
<br />
==BIOS settings==<br />
Some Thinkpad BIOS (like 2.08 BIOS on {{X40}}) offer two very lame options,<br />
with a very misleading online help (saying "Usually not needed"). That's<br />
<br />
<code><br />
CPU power management: (default disabled)<br />
PCI bus power management: (default disabled)<br />
</code><br />
<br />
You should indeed enable them, else the deepest C3 and C4 ACPI C-states<br />
are disabled.<br />
<br />
==CPU==<br />
Look at:<br />
* [[How to make use of Dynamic Frequency Scaling]]<br />
* [[Pentium M undervolting and underclocking]]<br />
<br />
A good thing to keep in mind is that every CPU wakeup, even if it's for<br />
a trivial light job, reduce the time the CPU stays on a deep power<br />
saving C-state (like C3 or C4). Therefore you should ensure your applications<br />
stay really idle when they meant to be idle (track shorts select timeouts<br />
in loop, etc. with powertop).<br />
<br />
Also note that manually locking the CPU in the lowest P-state (frequency) <br />
available is '''not''' an efficient way to improve battery lifetime. This will<br />
cause the CPU to stay longer in C0 (power angry C-state) doing hard work when <br />
there is something to do, while it could have done this work faster by augmenting<br />
the CPU freq, and returned back faster to a deeper, economic, C-state and to a<br />
lower frequency (P-state).<br />
The best is to let the kernel select the appropriates CPU frequencies by itself<br />
with the help of in kernel CPU governors.<br />
Have a look at [http://www.bughost.org/pipermail/power/2007-May/000166.html this explanation]<br />
from Intel's kernel developer Arjan van de Ven.<br />
<br />
==Kernel settings and patches==<br />
<br />
===General settings===<br />
The 2.6.21 kernel brought some very effective changes (like dynticks). If<br />
it's not already on your distribution and you value power efficiency, you<br />
may think about compiling it (or a more recent one) yourself.<br />
<br />
Here are a few options (beside the ACPI and APM related one) that matter to <br />
reduce power consumption or to help diagnosing consumers:<br />
<br />
<code><br />
# From PowerTOP's FAQ:<br />
CONFIG_NO_HZ<br />
CONFIG_HIGH_RES_TIMERS<br />
CONFIG_HPET<br />
CONFIG_CPU_FREQ_GOV_ONDEMAND<br />
CONFIG_USB_SUSPEND<br />
CONFIG_SND_AC97_POWER_SAVE<br />
CONFIG_TIMER_STATS<br />
CONFIG_ACPI_BATTERY<br />
CONFIG_CPU_FREQ_STAT<br />
# Not from the PowerTOP FAQ:<br />
CONFIG_BLK_DEV_IO_TRACE<br />
CONFIG_X86_ACPI_CPUFREQ<br />
CONFIG_X86_SPEEDSTEP_CENTRINO<br />
CONFIG_X86_SPEEDSTEP_ICH<br />
CONFIG_X86_SPEEDSTEP_SMI<br />
CONFIG_X86_ACPI_CPUFREQ<br />
</code><br />
<br />
Those options are already in Fedora Core 7 and Ubuntu Gutsy (not Feisty) default i686 kernels.<br />
PowerTOP FAQ also suggest to '''disable'''<br />
CONFIG_IRQBALANCE et CONFIG_ACPI_DEBUG.<br />
<br />
Also, you need to properly set APM and ACPI. Look at:<br />
* [[Power Management]]<br />
* [[How to make use of Power Management features]]<br />
<br />
===Useful Patchs===<br />
<br />
Thomas Gleixner High Resolution Timers (hrt) patchset brings many improvements,<br />
like the cpuidle work and Udo A. Steinberg and Venki Pallipadi "force<br />
enable HPET" patches (non HPET timers causes about 20-40 CPU wakeups/second, but<br />
HPET is often hidden by the BIOS due to Windows XP deficiencies).<br />
See http://www.tglx.de/projects/hrtimers/<br />
<br />
Kristen Carlson Accardi from Intel has a patchset to turn on "Aggressive<br />
Link Power Management" (ALPM) for the AHCI driver (for SATA bus). See:<br />
http://www.kernel.org/pub/linux/kernel/people/kristen/patches/SATA/alpm/<br />
<br />
The [[HDAPS]] disk protection systems can reduce battery life. <br />
Matthew Garrett provides [http://www.linuxpowertop.org/patches/hdaps.patch a patch]<br />
that prevents hdaps kernel module to generate interrupts when<br />
this feature isn't used.<br />
<br />
===Useful sysctls===<br />
The meaning of those settings is explained case by case on the relevant <br />
sections of this document. But for convenience sake, we group them here too.<br />
<br />
Note that the "ondemand" scaling governor is recommended by Intel developers<br />
for energy efficiency: it's expected to be more efficient than the "powersave"<br />
governor, or than userspace daemons (like cpufreq-utils, cpufreqd, powernowd...).<br />
Look [http://www.bughost.org/pipermail/power/2007-May/000071.html here],<br />
[http://www.bughost.org/pipermail/power/2007-May/000073.html here], or<br />
[http://www.bughost.org/pipermail/power/2007-May/000166.html here] for a<br />
kernel developer explanation about "ondemand" being better on modern Intel CPUs.<br />
<br />
The "link_power_management_policy" tunable won't be available unless you<br />
run Kirsten patchset, have an Intel AHCI compatible chipset, and use SATA drives.<br />
<br />
<code><br />
echo 5 > /proc/sys/vm/laptop_mode<br />
echo 0 > /proc/sys/kernel/nmi_watchdog<br />
echo Y > /sys/module/snd_ac97_codec/parameters/power_save<br />
echo 1 > /sys/devices/system/cpu/sched_mc_power_savings<br />
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor<br />
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy<br />
echo min_power > /sys/class/scsi_host/host1/link_power_management_policy<br />
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs<br />
</code><br />
<br />
If you're running a kernel older than 2.6.22 do this. Not needed for kernels 2.6.22 onward:<br />
<br />
<code><br />
cd /sys/devices/system/cpu/cpu0/cpufreq<br />
cat ondemand/sampling_rate_max > ondemand/sampling_rate<br />
</code><br />
<br />
==ATA drives==<br />
Hard drives and CDRom drives spinning is very costly. To improve battery<br />
lifetime, you should reduce disks access (or devices polling) the more you<br />
can. <br />
<br />
===Hard Drives===<br />
The files access time update, while mandated by POSIX, is causing lots of<br />
disks access; even accessing files on disk cache may wake the ATA or USB<br />
bus. If you don't use this feature, disable it via:<br />
<br />
<code><br />
mount -o remount,noatime / # and so on for all mounted fs<br />
</code><br />
<br />
The laptop_mode reduce disk usage by regrouping writes. You should enable<br />
it, at least while on battery. See [[Laptop-mode]] for more details:<br />
<br />
<code><br />
echo 5 > /proc/sys/vm/laptop_mode<br />
</code><br />
<br />
The default kernel dirty page writeback frequency is very conservative. On<br />
a laptop running on battery, one might find more appropriate to reduce it:<br />
<br />
<code><br />
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs<br />
</code><br />
<br />
Some power saving hard drives features can be activated with hdparm.<br />
For more details look at [[How to make use of Power Management features]] :<br />
<br />
<code> <br />
hdparm -B 1 -S 12 /dev/sda # and/or any other disk device<br />
</code><br />
<br />
===Optical drive===<br />
The optical drive is reported to consume power even when not accessed. See <br />
<br />
* [[How to hotswap UltraBay devices|Eject the UltraBay optical drive]], or just turn off its power supply (i.e., run the appropriate eject script but leave the drive inserted).<br />
* [[How to set optical drive speed|Reduce the spinning speed of the optical drive]].<br />
<br />
The hald daemon polling tends to maintain the ATA buses out of power saving<br />
modes, and to wakeup CDROM drive. If you have a recent hald version, you<br />
can stop this polling when on battery:<br />
<br />
<code><br />
hal-disable-polling /dev/scd0 # or whatever your CD drive is<br />
</code><br />
<br />
If your hald is not recent enough, consider stopping it on battery.<br />
<br />
==LCD Backlight/Brightness==<br />
The LCD backlight is one of the very major power drain. <br />
Reducing brightness to the lowest readable<br />
level will save a lot of battery lifetime. Also, don't forget to configure<br />
your screen saver to shutdown the screen backlight (rather than displaying some<br />
eye candy), when no activity for a few minutes.<br />
<br />
You can also let the system [[automatically reduce brightness]] after a <br />
period of inactivity.<br />
<br />
If you're choosing your Thinkpad laptop model, keep in mind that the screen<br />
size affect the battery time greatly: more power needed for larger screens.<br />
<br />
==Graphic controllers==<br />
All xorg Thinkpad graphics chipsets drivers (ati, radeon, fglrx, i810) have<br />
the same bug causing very frequent CPU wakeups when DRI is activated, even<br />
when you don't use any 3D application.<br />
This problem is partly fixed on xorg git tree but not released as of xorg<br />
7.2. If you value more battery than 3D, you should disable DRI: put this on<br />
the /etc/X11/xorg.conf "Device" of you graphic controller:<br />
<br />
<code><br />
Option "NoDRI"<br />
</code><br />
<br />
Also be sure that DPMS is working: <code>grep DPMS /var/log/Xorg.0.log</code><br />
should output "DPMS enabled". If not, put <code>Option "DPMS"</code> in your config.<br />
<br />
On recent xrandr/xorg versions, you can disable the TV output when you're<br />
not using it (it's known to consume power) :<br />
<br />
<code> <br />
xrandr --output TV -off<br />
</code><br />
<br />
When you don't have an external monitor plugged, disable CRT and DVI output <br />
(for some, this can make a difference in power usage) : <br />
<code> <br />
echo crt_disable > /proc/acpi/ibm/video<br />
echo dvi_disable > /proc/acpi/ibm/video<br />
</code> <br />
<br />
Some drivers have specials power saving mode, and/or allows underclocking the GPU. See also:<br />
* [[How to make use of Graphics Chips Power Management features]], or with [[Rovclock]] on ATI.<br />
* [[Problem with high power drain in ACPI sleep]]<br />
<br />
==USB Subsystem==<br />
The kernel support an efficient USB 2.0 power saving feature if you enabled<br />
CONFIG_USB_SUSPEND. This may not trigger in when you have an USB device<br />
plugged (and beside, USB devices tends to suck power on their own), so avoid<br />
using such devices when on battery.<br />
<br />
USB 1.1 is worst. It needs polling the bus frequently, hence can't really go<br />
in a low power mode when you enabled it, even if you don't have any device<br />
plugged. You'd better remove it when you don't use a 1.1 device:<br />
<br />
<code><br />
rmmod uhci_hcd<br />
</code><br />
<br />
If you don't intend to use any USB 1.1 device (unfortunately, the built-in bluetooth and fingerprint-reader are USB 1.1 devices), the USB 1.1 support can also be totaly avoided. On Debian and derivatives, just do:<br />
<br />
<code><br />
echo "blacklist uhci_hcd" >> /etc/modprobe.d/blacklist<br />
</code><br />
<br />
==Sound==<br />
ALSA has a power saving feature that should be enabled on your kernel<br />
(CONFIG_SND_AC97_POWER_SAVE). Note that this low power mode won't trigger in<br />
unless you muted all sound inputs (micro, line in etc.). This feature has<br />
to be activated with:<br />
<br />
<code><br />
amixer set Line mute nocap<br />
amixer set Mic mute nocap<br />
echo Y > /sys/module/snd_ac97_codec/parameters/power_save<br />
</code><br />
<br />
More radical: you can unload all sound related modules when you are on <br />
battery, or mute the sound system (echo mute > /proc/acpi/ibm/volume).<br />
<br />
Seel also [[How to enable AC97 power saving]].<br />
<br />
==Wireless Interface==<br />
Wireless network consume a lot of power.<br />
To save power on ipw adapters, you can kill the Wi-Fi radio when it's not in use:<br />
<br />
<code><br />
echo 1 > /sys/bus/pci/drivers/ipw*/*/rf_kill<br />
</code><br />
<br />
If you need Wi-Fi, you can also reduce power consumption (at the price of<br />
performances) by activating the power saving modes:<br />
<br />
<code><br />
iwpriv eth1 set_power 5<br />
</code><br />
<br />
Reducing beacon intervals on your Access Point to 1 per second will also<br />
reduce network card interrupts, therefore power savings. This shouldn't have<br />
negatives side effects.<br />
<br />
See also, to activate power saving on the wireless network card:<br />
* For [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]] and [[Intel PRO/Wireless 2915ABG Mini-PCI Adapter]], see instructions for the [[ipw2200]] driver.<br />
* For [[Intel PRO/Wireless 3945ABG Mini-PCI Express Adapter]], see the [http://ipw3945.sourceforge.net/README.ipw3945 ipw3945 driver README]<br />
<br />
==Ethernet Controler==<br />
If you don't use Wake-on-LAN, you should disable it for your network card,<br />
because it sucks a lot of power:<br />
<br />
<code><br />
ethtool -s eth0 wol d<br />
</code><br />
<br />
If you can, try to reduce useless network activity on your ethernet<br />
segment, coming to your NIC (ie. uneeded broadcasts), those cause <br />
interrupts and CPU wakeups.<br />
<br />
==Bluetooth==<br />
When you don't need bluetooth, disable it. Because of it's radio, <br />
bluetooth is not power friendly.<br />
<br />
<code><br />
hciconfig hci0 down ; rmmod hci_usb<br />
echo disable > /proc/acpi/ibm/bluetooth<br />
</code><br />
<br />
==Modem==<br />
When was the last time you used your analog modem? If you can't remember, you probably just don't need it. If it is on a separate module in your laptop, simply remove it. Store it in a ESD safe place (like the bag in which your last addon card or hard drive was packed), in case you should need it again. This won't save you a lot of power and weight, but why carry something around you never use.<br />
<br />
==System Fans==<br />
Fans consumes power when running, so you may look at the [[ACPI fan control script]].<br />
<br />
==Misbehaving Userland==<br />
You should avoid using Beagle, Compiz, Beryl, XMMS, gnome-power-manager<br />
and Evolution while on battery.<br />
Look at the PowerTOP's [http://www.linuxpowertop.org/known.php known problems]<br />
list.<br />
<br />
Deactivate desktop animations (blinking cursor on the terms, animated wallpapers, ...): they cause regular X (therefore kernel and CPU) wakeups.<br />
<br />
In short, while on battery, you should stop all applications that don't really stay idle when you're not using them. This means applications that:<br />
* Wakes up the CPU too often (by polling something, because of too short select() timeouts, ...)<br />
* Access the disks at regular intervals<br />
* Access an hardware bus (USB, ATA, ...) at regular intervals<br />
To find those offenders run:<br />
* <code>strace -p $(pidof yourapp)</code> # for all your running applications<br />
* <code>powertop</code><br />
* <code>sysctl vm.block_dump=1</code> # and look at dmesg<br />
* <code>ps aux | awk '{print$10,$11}' | sort -n</code> # will list all running softs sorted by used cpu time<br />
Please, don't forget to fill a bug when you find such a misbehaving software.<br />
{{NOTE|Not all software is evil, buggy or badly written. Some produce regular activity because they have to and the purpose of the software is doing it like this. Just think twice before fill bugs like this.}}<br />
<br />
==See Also==<br />
* [[How to measure power consumption]]<br />
* [[Script for monitoring power consumption]]<br />
* Battery [[maintenance]]<br />
<br />
==External resources==<br />
* [http://www.free-it.de/archiv/talks_2005/paper-11017/paper-11017.html ''Current trends in Linux Kernel Power Management''], Dominik Brodowski, 2005<br />
* [http://www.linuxpowertop.org PowerTOP] website<br />
* [http://www.gentoo.org/doc/en/power-management-guide.xml Power Management Guide] from the Gentoo Linux documentation<br />
* [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030478.html When/where/what for low power consumption?] (thread on Linux-Thinkpad)<br />
* ''8 hours of battery life on your lap(top)'' ([http://atrey.karlin.mff.cuni.cz/~pavel/swsusp/8hours.odp ODP]/[http://atrey.karlin.mff.cuni.cz/~pavel/swsusp/8hours.pdf PDF]), a presentation by Pavel Machek<br />
<br />
<br />
[[Category:600X]] [[Category:A20m]] [[Category:A20p]] [[Category:A21e]] [[Category:A21m]] [[Category:A21p]] [[Category:A22e]] [[Category:A22m]] [[Category:A22p]] [[Category:A30]] [[Category:A30p]] [[Category:A31]] [[Category:A31p]] [[Category:i1200]] [[Category:i1300]] [[Category:i1620]] [[Category:G40]] [[Category:G41]] [[Category:R30]] [[Category:R31]] [[Category:R32]] [[Category:R40]] [[Category:R40e]] [[Category:R50]] [[Category:R50e]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[Category:R60]] [[Category:R60e]] [[Category:T20]] [[Category:T21]] [[Category:T22]] [[Category:T23]] [[Category:T30]] [[Category:T40]] [[Category:T40p]] [[Category:T41]] [[Category:T41p]] [[Category:T42]] [[Category:T42p]] [[Category:T43]] [[Category:T43p]] [[Category:T60]] [[Category:T60p]] [[Category:T61]] [[Category:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:X60]] [[Category:X60s]] [[Category:Z60m]] [[Category:Z60t]] [[Category:Z61t]] [[Category:Z61e]] [[Category:TransNote]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=How_to_reduce_power_consumption&diff=32781How to reduce power consumption2007-08-31T00:58:31Z<p>Owenh: /* Useful sysctls */</p>
<hr />
<div>Reducing system power consumption will extend battery life, reduce system<br />
temperature and (on some models) reduce system fan noise.<br />
Power consumption can be greatly improved from a stock distribution configuration<br />
to a fine tuned system. The general rules are :<br />
* Unload drivers for unused devices (ie. USB 1.1, Yenta/PCMCIA, Wireless, IRDA, Bluetooth, ...)<br />
* Reduce polling on devices (drives, USB subsystem, nvram, ...)<br />
* Reduce hard drive activity<br />
* Reduce LCD brightness to the minimum you can stand<br />
* Reduce CPU wakeups, so it can stay longer in deep power saving c-states<br />
<br />
==Tools==<br />
Arjan van de Ven's [http://www.linuxpowertop.org/ PowerTOP] utility<br />
is a gold mine to improve energy efficiency. This tool helps to easily detect<br />
the top power offenders, both userland and kernel modules, and sometime suggest <br />
fixes accordingly.<br />
PowerTOP users collected some [http://www.linuxpowertop.org/known.php tips & tricks]<br />
and an informative [http://www.linuxpowertop.org/faq.php faq].<br />
<br />
Alternatively (or complementary) to PowerTOP, running <code>strace -p $(pidof yourapp)</code> <br />
for all your favourite or background running applications while they are expected to be <br />
idle, will show the misbehaviours.<br />
<br />
Beside CPU wakeups, disks spins are also power angry. To detect what make your disk spinning,<br />
<br />
<code><br />
sysctl vm.block_dump=1<br />
</code><br />
<br />
will list all applications causing disks wakeups on the kernel's dmesg.<br />
Other useful tools for this purpose are blktrace, iostat and lm-profiler<br />
(from laptop-mode-tools suite).<br />
<br />
==BIOS settings==<br />
Some Thinkpad BIOS (like 2.08 BIOS on {{X40}}) offer two very lame options,<br />
with a very misleading online help (saying "Usually not needed"). That's<br />
<br />
<code><br />
CPU power management: (default disabled)<br />
PCI bus power management: (default disabled)<br />
</code><br />
<br />
You should indeed enable them, else the deepest C3 and C4 ACPI C-states<br />
are disabled.<br />
<br />
==CPU==<br />
Look at:<br />
* [[How to make use of Dynamic Frequency Scaling]]<br />
* [[Pentium M undervolting and underclocking]]<br />
<br />
A good thing to keep in mind is that every CPU wakeup, even if it's for<br />
a trivial light job, reduce the time the CPU stays on a deep power<br />
saving C-state (like C3 or C4). Therefore you should ensure your applications<br />
stay really idle when they meant to be idle (track shorts select timeouts<br />
in loop, etc. with powertop).<br />
<br />
Also note that manually locking the CPU in the lowest P-state (frequency) <br />
available is '''not''' an efficient way to improve battery lifetime. This will<br />
cause the CPU to stay longer in C0 (power angry C-state) doing hard work when <br />
there is something to do, while it could have done this work faster by augmenting<br />
the CPU freq, and returned back faster to a deeper, economic, C-state and to a<br />
lower frequency (P-state).<br />
The best is to let the kernel select the appropriates CPU frequencies by itself<br />
with the help of in kernel CPU governors.<br />
Have a look at [http://www.bughost.org/pipermail/power/2007-May/000166.html this explanation]<br />
from Intel's kernel developer Arjan van de Ven.<br />
<br />
==Kernel settings and patches==<br />
<br />
===General settings===<br />
The 2.6.21 kernel brought some very effective changes (like dynticks). If<br />
it's not already on your distribution and you value power efficiency, you<br />
may think about compiling it (or a more recent one) yourself.<br />
<br />
Here are a few options (beside the ACPI and APM related one) that matter to <br />
reduce power consumption or to help diagnosing consumers:<br />
<br />
<code><br />
# From PowerTOP's FAQ:<br />
CONFIG_NO_HZ<br />
CONFIG_HIGH_RES_TIMERS<br />
CONFIG_HPET<br />
CONFIG_CPU_FREQ_GOV_ONDEMAND<br />
CONFIG_USB_SUSPEND<br />
CONFIG_SND_AC97_POWER_SAVE<br />
CONFIG_TIMER_STATS<br />
CONFIG_ACPI_BATTERY<br />
CONFIG_CPU_FREQ_STAT<br />
# Not from the PowerTOP FAQ:<br />
CONFIG_BLK_DEV_IO_TRACE<br />
CONFIG_X86_ACPI_CPUFREQ<br />
CONFIG_X86_SPEEDSTEP_CENTRINO<br />
CONFIG_X86_SPEEDSTEP_ICH<br />
CONFIG_X86_SPEEDSTEP_SMI<br />
CONFIG_X86_ACPI_CPUFREQ<br />
</code><br />
<br />
Those options are already in Fedora Core 7 and Ubuntu Gutsy (not Feisty) default i686 kernels.<br />
PowerTOP FAQ also suggest to '''disable'''<br />
CONFIG_IRQBALANCE et CONFIG_ACPI_DEBUG.<br />
<br />
Also, you need to properly set APM and ACPI. Look at:<br />
* [[Power Management]]<br />
* [[How to make use of Power Management features]]<br />
<br />
===Useful Patchs===<br />
<br />
Thomas Gleixner High Resolution Timers (hrt) patchset brings many improvements,<br />
like the cpuidle work and Udo A. Steinberg and Venki Pallipadi "force<br />
enable HPET" patches (non HPET timers causes about 20-40 CPU wakeups/second, but<br />
HPET is often hidden by the BIOS due to Windows XP deficiencies).<br />
See http://www.tglx.de/projects/hrtimers/<br />
<br />
Kristen Carlson Accardi from Intel has a patchset to turn on "Aggressive<br />
Link Power Management" (ALPM) for the AHCI driver (for SATA bus). See:<br />
http://www.kernel.org/pub/linux/kernel/people/kristen/patches/SATA/alpm/<br />
<br />
The [[HDAPS]] disk protection systems can reduce battery life. <br />
Matthew Garrett provides [http://www.linuxpowertop.org/patches/hdaps.patch a patch]<br />
that prevents hdaps kernel module to generate interrupts when<br />
this feature isn't used.<br />
<br />
===Useful sysctls===<br />
The meaning of those settings is explained case by case on the relevant <br />
sections of this document. But for convenience sake, we group them here too.<br />
<br />
Note that the "ondemand" scaling governor is recommended by Intel developpers<br />
for energy efficiency: it's expected to be more efficient than the "powersave"<br />
governor, or than userspace daemons (like cpufreq-utils, cpufreqd, powernowd...).<br />
Look [http://www.bughost.org/pipermail/power/2007-May/000071.html here],<br />
[http://www.bughost.org/pipermail/power/2007-May/000073.html here], or<br />
[http://www.bughost.org/pipermail/power/2007-May/000166.html here] for a<br />
kernel developer explanation about "ondemand" being better on modern Intel CPUs.<br />
<br />
The "link_power_management_policy" tunable won't be available unless you<br />
run Kirsten patchset, have an Intel AHCI compatible chipset, and use SATA drives.<br />
<br />
<code><br />
echo 5 > /proc/sys/vm/laptop_mode<br />
echo 0 > /proc/sys/kernel/nmi_watchdog<br />
echo Y > /sys/module/snd_ac97_codec/parameters/power_save<br />
echo 1 > /sys/devices/system/cpu/sched_mc_power_savings<br />
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor<br />
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy<br />
echo min_power > /sys/class/scsi_host/host1/link_power_management_policy<br />
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs<br />
</code><br />
<br />
If you're running a kernel older than 2.6.22 do this. Not needed for kernels 2.6.22 onward:<br />
<br />
<code><br />
cd /sys/devices/system/cpu/cpu0/cpufreq<br />
cat ondemand/sampling_rate_max > ondemand/sampling_rate<br />
</code><br />
<br />
==ATA drives==<br />
Hard drives and CDRom drives spinning is very costly. To improve battery<br />
lifetime, you should reduce disks access (or devices polling) the more you<br />
can. <br />
<br />
===Hard Drives===<br />
The files access time update, while mandated by POSIX, is causing lots of<br />
disks access; even accessing files on disk cache may wake the ATA or USB<br />
bus. If you don't use this feature, disable it via:<br />
<br />
<code><br />
mount -o remount,noatime / # and so on for all mounted fs<br />
</code><br />
<br />
The laptop_mode reduce disk usage by regrouping writes. You should enable<br />
it, at least while on battery. See [[Laptop-mode]] for more details:<br />
<br />
<code><br />
echo 5 > /proc/sys/vm/laptop_mode<br />
</code><br />
<br />
The default kernel dirty page writeback frequency is very conservative. On<br />
a laptop running on battery, one might find more appropriate to reduce it:<br />
<br />
<code><br />
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs<br />
</code><br />
<br />
Some power saving hard drives features can be activated with hdparm.<br />
For more details look at [[How to make use of Power Management features]] :<br />
<br />
<code> <br />
hdparm -B 1 -S 12 /dev/sda # and/or any other disk device<br />
</code><br />
<br />
===Optical drive===<br />
The optical drive is reported to consume power even when not accessed. See <br />
<br />
* [[How to hotswap UltraBay devices|Eject the UltraBay optical drive]], or just turn off its power supply (i.e., run the appropriate eject script but leave the drive inserted).<br />
* [[How to set optical drive speed|Reduce the spinning speed of the optical drive]].<br />
<br />
The hald daemon polling tends to maintain the ATA buses out of power saving<br />
modes, and to wakeup CDROM drive. If you have a recent hald version, you<br />
can stop this polling when on battery:<br />
<br />
<code><br />
hal-disable-polling /dev/scd0 # or whatever your CD drive is<br />
</code><br />
<br />
If your hald is not recent enough, consider stopping it on battery.<br />
<br />
==LCD Backlight/Brightness==<br />
The LCD backlight is one of the very major power drain. <br />
Reducing brightness to the lowest readable<br />
level will save a lot of battery lifetime. Also, don't forget to configure<br />
your screen saver to shutdown the screen backlight (rather than displaying some<br />
eye candy), when no activity for a few minutes.<br />
<br />
You can also let the system [[automatically reduce brightness]] after a <br />
period of inactivity.<br />
<br />
If you're choosing your Thinkpad laptop model, keep in mind that the screen<br />
size affect the battery time greatly: more power needed for larger screens.<br />
<br />
==Graphic controllers==<br />
All xorg Thinkpad graphics chipsets drivers (ati, radeon, fglrx, i810) have<br />
the same bug causing very frequent CPU wakeups when DRI is activated, even<br />
when you don't use any 3D application.<br />
This problem is partly fixed on xorg git tree but not released as of xorg<br />
7.2. If you value more battery than 3D, you should disable DRI: put this on<br />
the /etc/X11/xorg.conf "Device" of you graphic controller:<br />
<br />
<code><br />
Option "NoDRI"<br />
</code><br />
<br />
Also be sure that DPMS is working: <code>grep DPMS /var/log/Xorg.0.log</code><br />
should output "DPMS enabled". If not, put <code>Option "DPMS"</code> in your config.<br />
<br />
On recent xrandr/xorg versions, you can disable the TV output when you're<br />
not using it (it's known to consume power) :<br />
<br />
<code> <br />
xrandr --output TV -off<br />
</code><br />
<br />
When you don't have an external monitor plugged, disable CRT and DVI output <br />
(for some, this can make a difference in power usage) : <br />
<code> <br />
echo crt_disable > /proc/acpi/ibm/video<br />
echo dvi_disable > /proc/acpi/ibm/video<br />
</code> <br />
<br />
Some drivers have specials power saving mode, and/or allows underclocking the GPU. See also:<br />
* [[How to make use of Graphics Chips Power Management features]], or with [[Rovclock]] on ATI.<br />
* [[Problem with high power drain in ACPI sleep]]<br />
<br />
==USB Subsystem==<br />
The kernel support an efficient USB 2.0 power saving feature if you enabled<br />
CONFIG_USB_SUSPEND. This may not trigger in when you have an USB device<br />
plugged (and beside, USB devices tends to suck power on their own), so avoid<br />
using such devices when on battery.<br />
<br />
USB 1.1 is worst. It needs polling the bus frequently, hence can't really go<br />
in a low power mode when you enabled it, even if you don't have any device<br />
plugged. You'd better remove it when you don't use a 1.1 device:<br />
<br />
<code><br />
rmmod uhci_hcd<br />
</code><br />
<br />
If you don't intend to use any USB 1.1 device (unfortunately, the built-in bluetooth and fingerprint-reader are USB 1.1 devices), the USB 1.1 support can also be totaly avoided. On Debian and derivatives, just do:<br />
<br />
<code><br />
echo "blacklist uhci_hcd" >> /etc/modprobe.d/blacklist<br />
</code><br />
<br />
==Sound==<br />
ALSA has a power saving feature that should be enabled on your kernel<br />
(CONFIG_SND_AC97_POWER_SAVE). Note that this low power mode won't trigger in<br />
unless you muted all sound inputs (micro, line in etc.). This feature has<br />
to be activated with:<br />
<br />
<code><br />
amixer set Line mute nocap<br />
amixer set Mic mute nocap<br />
echo Y > /sys/module/snd_ac97_codec/parameters/power_save<br />
</code><br />
<br />
More radical: you can unload all sound related modules when you are on <br />
battery, or mute the sound system (echo mute > /proc/acpi/ibm/volume).<br />
<br />
Seel also [[How to enable AC97 power saving]].<br />
<br />
==Wireless Interface==<br />
Wireless network consume a lot of power.<br />
To save power on ipw adapters, you can kill the Wi-Fi radio when it's not in use:<br />
<br />
<code><br />
echo 1 > /sys/bus/pci/drivers/ipw*/*/rf_kill<br />
</code><br />
<br />
If you need Wi-Fi, you can also reduce power consumption (at the price of<br />
performances) by activating the power saving modes:<br />
<br />
<code><br />
iwpriv eth1 set_power 5<br />
</code><br />
<br />
Reducing beacon intervals on your Access Point to 1 per second will also<br />
reduce network card interrupts, therefore power savings. This shouldn't have<br />
negatives side effects.<br />
<br />
See also, to activate power saving on the wireless network card:<br />
* For [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]] and [[Intel PRO/Wireless 2915ABG Mini-PCI Adapter]], see instructions for the [[ipw2200]] driver.<br />
* For [[Intel PRO/Wireless 3945ABG Mini-PCI Express Adapter]], see the [http://ipw3945.sourceforge.net/README.ipw3945 ipw3945 driver README]<br />
<br />
==Ethernet Controler==<br />
If you don't use Wake-on-LAN, you should disable it for your network card,<br />
because it sucks a lot of power:<br />
<br />
<code><br />
ethtool -s eth0 wol d<br />
</code><br />
<br />
If you can, try to reduce useless network activity on your ethernet<br />
segment, coming to your NIC (ie. uneeded broadcasts), those cause <br />
interrupts and CPU wakeups.<br />
<br />
==Bluetooth==<br />
When you don't need bluetooth, disable it. Because of it's radio, <br />
bluetooth is not power friendly.<br />
<br />
<code><br />
hciconfig hci0 down ; rmmod hci_usb<br />
echo disable > /proc/acpi/ibm/bluetooth<br />
</code><br />
<br />
==Modem==<br />
When was the last time you used your analog modem? If you can't remember, you probably just don't need it. If it is on a separate module in your laptop, simply remove it. Store it in a ESD safe place (like the bag in which your last addon card or hard drive was packed), in case you should need it again. This won't save you a lot of power and weight, but why carry something around you never use.<br />
<br />
==System Fans==<br />
Fans consumes power when running, so you may look at the [[ACPI fan control script]].<br />
<br />
==Misbehaving Userland==<br />
You should avoid using Beagle, Compiz, Beryl, XMMS, gnome-power-manager<br />
and Evolution while on battery.<br />
Look at the PowerTOP's [http://www.linuxpowertop.org/known.php known problems]<br />
list.<br />
<br />
Deactivate desktop animations (blinking cursor on the terms, animated wallpapers, ...): they cause regular X (therefore kernel and CPU) wakeups.<br />
<br />
In short, while on battery, you should stop all applications that don't really stay idle when you're not using them. This means applications that:<br />
* Wakes up the CPU too often (by polling something, because of too short select() timeouts, ...)<br />
* Access the disks at regular intervals<br />
* Access an hardware bus (USB, ATA, ...) at regular intervals<br />
To find those offenders run:<br />
* <code>strace -p $(pidof yourapp)</code> # for all your running applications<br />
* <code>powertop</code><br />
* <code>sysctl vm.block_dump=1</code> # and look at dmesg<br />
* <code>ps aux | awk '{print$10,$11}' | sort -n</code> # will list all running softs sorted by used cpu time<br />
Please, don't forget to fill a bug when you find such a misbehaving software.<br />
{{NOTE|Not all software is evil, buggy or badly written. Some produce regular activity because they have to and the purpose of the software is doing it like this. Just think twice before fill bugs like this.}}<br />
<br />
==See Also==<br />
* [[How to measure power consumption]]<br />
* [[Script for monitoring power consumption]]<br />
* Battery [[maintenance]]<br />
<br />
==External resources==<br />
* [http://www.free-it.de/archiv/talks_2005/paper-11017/paper-11017.html ''Current trends in Linux Kernel Power Management''], Dominik Brodowski, 2005<br />
* [http://www.linuxpowertop.org PowerTOP] website<br />
* [http://www.gentoo.org/doc/en/power-management-guide.xml Power Management Guide] from the Gentoo Linux documentation<br />
* [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030478.html When/where/what for low power consumption?] (thread on Linux-Thinkpad)<br />
* ''8 hours of battery life on your lap(top)'' ([http://atrey.karlin.mff.cuni.cz/~pavel/swsusp/8hours.odp ODP]/[http://atrey.karlin.mff.cuni.cz/~pavel/swsusp/8hours.pdf PDF]), a presentation by Pavel Machek<br />
<br />
<br />
[[Category:600X]] [[Category:A20m]] [[Category:A20p]] [[Category:A21e]] [[Category:A21m]] [[Category:A21p]] [[Category:A22e]] [[Category:A22m]] [[Category:A22p]] [[Category:A30]] [[Category:A30p]] [[Category:A31]] [[Category:A31p]] [[Category:i1200]] [[Category:i1300]] [[Category:i1620]] [[Category:G40]] [[Category:G41]] [[Category:R30]] [[Category:R31]] [[Category:R32]] [[Category:R40]] [[Category:R40e]] [[Category:R50]] [[Category:R50e]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[Category:R60]] [[Category:R60e]] [[Category:T20]] [[Category:T21]] [[Category:T22]] [[Category:T23]] [[Category:T30]] [[Category:T40]] [[Category:T40p]] [[Category:T41]] [[Category:T41p]] [[Category:T42]] [[Category:T42p]] [[Category:T43]] [[Category:T43p]] [[Category:T60]] [[Category:T60p]] [[Category:T61]] [[Category:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:X60]] [[Category:X60s]] [[Category:Z60m]] [[Category:Z60t]] [[Category:Z61t]] [[Category:Z61e]] [[Category:TransNote]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=How_to_get_special_keys_to_work&diff=32752How to get special keys to work2007-08-30T14:19:21Z<p>Owenh: /* xmodmap configuration */</p>
<hr />
<div>==Overview==<br />
The following table gives an overview over the special keys found on ThinkPads and what is needed to make them work.<br />
{| {{prettytable}}<br />
! key !! standard function{{footnote|1}} !! tools supporting key{{footnote|2}} !! configurability{{footnote|3}} !! remarks<br />
|-<br />
| {{key|Fn}} || - || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || on release without completed key combination<br />
|-<br />
| {{key|Fn}}{{key|F1}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|F2}} || lock screen || [[#ibm-acpi events|ibm-acpi]] || full || in models from T/X/Z 60 onwards<br />
|-<br />
| {{key|Fn}}{{key|F3}} || blank screen || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|F4}} || suspend to ram || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || may generate ACPI event when not enabled in the ibm-acpi hotkey mask<br />
|-<br />
| {{key|Fn}}{{key|F5}} || switch bluetooth || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || in models starting from 2002<br />
|-<br />
| {{key|Fn}}{{key|F6}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|F7}} || switch display || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]] || additional actions || <br />
|-<br />
| {{key|Fn}}{{key|F8}} || toggle display expansion || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]] || additional actions ||<br />
|-<br />
| {{key|Fn}}{{key|F9}} || eject from dock || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|F10}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|F11}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|F12}} || hibernate || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || may generate ACPI event when not enabled in the ibm-acpi hotkey mask<br />
|-<br />
| {{key|Fn}}{{key|Home}} / {{key|Fn}}{{key|Pos1}} || brightness up || [[#ibm-acpi events|ibm-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||<br />
|-<br />
| {{key|Fn}}{{key|End}} || brightness down || [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||<br />
|-<br />
| {{key|Fn}}{{key|PageUp}} || toggle thinklight || [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||<br />
|-<br />
| {{key|Fn}}{{key|Space}} || toggle zoom || [[#tpb configuration|tpb]], [[KMilo]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|Ins}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|Del}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||<br />
|-<br />
| {{key|Fn}}{{key|Backspace}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||<br />
|-<br />
| {{key|NumLock}} || - || [[#xmodmap configuration|xmodmap]] || make working ||<br />
|-<br />
| {{key|Windows}} || - || [[#xmodmap configuration|xmodmap]] || remapping ||<br />
|-<br />
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} or {{ibmkey|ThinkVantage|#495988}} || help application || [[#tpb configuration|tpb]], [[KMilo]] || full ||<br />
|-<br />
| {{ibmkey|Home|#494949}} || open web browser || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards<br />
|-<br />
| {{ibmkey|Search|#494949}} || open search application || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards<br />
|-<br />
| {{ibmkey|Mail|#494949}} || open mail application || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards<br />
|-<br />
| {{ibmkey|Favorites|#494949}} || open favorites || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards<br />
|-<br />
| {{ibmkey|Reload|#494949}} || reload web page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards<br />
|-<br />
| {{ibmkey|Abort|#494949}} || abort loading page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards<br />
|-<br />
| {{ibmkey|Backward|#494949}} || previous page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || ext. keyboards and ThinkPads starting from 2002<br />
|-<br />
| {{ibmkey|Forward|#494949}} || next page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || ext. keyboards and ThinkPads starting from 2002<br />
|-<br />
| {{ibmkey|Volume up|#494949}} || volume up || [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||<br />
|-<br />
| {{ibmkey|Volume down|#494949}} || volume down || [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||<br />
|-<br />
| {{ibmkey|Volume mute|#494949}} || mute volume || [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||<br />
|-<br />
| {{ibmkey|Play/Pause|#494949}} || start/pause playback || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Down)<br />
|-<br />
| {{ibmkey|Stop|#494949}} || stop playback || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Up)<br />
|-<br />
| {{ibmkey|Next|#494949}} || play next || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Right)<br />
|-<br />
| {{ibmkey|Previous|#494949}} || play previous || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Left)<br />
|-<br />
| {{ibmkey|Power|#494949}} || shutdown || [[#ibm-acpi events|ibm-acpi]] || full || triggered on pressing 3secs, but notebook goes off on 5sec press<br />
|-<br />
| Display lid || blank screen || [[#ibm-acpi events|ibm-acpi]] || full ||<br />
|-<br />
| Ultrabay lid || announce ultrabay change || [[#ibm-acpi events|ibm-acpi]] || full ||<br />
|-<br />
| Dock eject || eject from dock || [[#ibm-acpi events|ibm-acpi]] || full ||<br />
|-<br />
| {{ibmkey|Tablet power|#494949}} || shutdown || [[#ibm-acpi events|ibm-acpi]] || full || triggered on pressing 3secs, but notebook goes off on 5sec press<br />
|-<br />
| {{ibmkey|Tablet orientation|#494949}} || rotates screen || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|-<br />
| {{ibmkey|Tablet shortcut|#494949}} || shortcut menu || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|-<br />
| {{ibmkey|Tablet Esc|#494949}} || esc key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|-<br />
| {{ibmkey|Tablet Enter|#494949}} || enter key || [[#mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|-<br />
| {{ibmkey|Tablet Up|#494949}} || up key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|-<br />
| {{ibmkey|Tablet Down|#494949}} || down key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|-<br />
| {{ibmkey|Tablet (unlabeled)|#494949}} || down key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||<br />
|}<br />
<br />
==Triggering key events==<br />
===ibm-acpi events===<br />
Some of the following events require a {{cmdroot|echo enable,0xffff >/proc/acpi/ibm/hotkey}} in order to make acpi able to get information on them. These events can be used to [[How to configure acpid|configure acpid]].<br />
<br />
{| {{prettytable}}<br />
|+ events triggered by [[ibm-acpi]] for {{path|/etc/acpi/events}} files. <br />
! key !! event<br />
|-<br />
| {{key|Fn}}{{key|F1}} || ibm/hotkey HKEY 00000080 00001001<br />
|-<br />
| {{key|Fn}}{{key|F2}} || ibm/hotkey HKEY 00000080 00001002<br />
|-<br />
| {{key|Fn}}{{key|F3}} || ibm/hotkey HKEY 00000080 00001003<br />
|-<br />
| {{key|Fn}}{{key|F4}} || ibm/hotkey HKEY 00000080 00001004<br />
|-<br />
| {{key|Fn}}{{key|F5}} || ibm/hotkey HKEY 00000080 00001005<br />
|-<br />
| {{key|Fn}}{{key|F6}} || ibm/hotkey HKEY 00000080 00001006<br />
|-<br />
| {{key|Fn}}{{key|F7}} || ibm/hotkey HKEY 00000080 00001007<br />
|-<br />
| {{key|Fn}}{{key|F8}} || ibm/hotkey HKEY 00000080 00001008<br />
|-<br />
| {{key|Fn}}{{key|F9}} || ibm/hotkey HKEY 00000080 00001009<br />
|-<br />
| {{key|Fn}}{{key|F10}} || ibm/hotkey HKEY 00000080 0000100a<br />
|-<br />
| {{key|Fn}}{{key|F11}} || ibm/hotkey HKEY 00000080 0000100b<br />
|-<br />
| {{key|Fn}}{{key|F12}} || ibm/hotkey HKEY 00000080 0000100c<br />
|-<br />
| {{key|Fn}}{{key|Backspace}} || ibm/hotkey HKEY 00000080 0000100d<br />
|-<br />
| {{key|Fn}}{{key|Ins}} || ibm/hotkey HKEY 00000080 0000100e<br />
|-<br />
| {{key|Fn}}{{key|Del}} || ibm/hotkey HKEY 00000080 0000100f<br />
|-<br />
| {{key|Fn}}{{key|Home}}/{{key|Fn}}{{key|Pos1}} || ibm/hotkey HKEY 00000080 00001010<br />
|-<br />
| {{ibmkey|Power|#494949}} || button/power PWRF 00000080 xxxxxxxx<br />
|-<br />
| Display lid || button/lid LID 00000080 xxxxxxxx<br />
|-<br />
| Ultrabay eject || ibm/bay MSTR 00000003 00000000<br />
|-<br />
| Ultrabay inserted || ibm/bay MSTR 00000001 00000000<br />
|-<br />
| Dock eject || ibm/dock GDCK 00000003 00000001<br />
|-<br />
| Wireless switch || ibm/hotkey HKEY 00000080 00007000<br />
|}<br />
<br />
By disassembling and editing the DSDT, more events can be added. HKEY events are triggered by calls to the MKHQ function, e.g. <tt>\_SB.PCI0.LPC.EC.HKEY.MHKQ(0×1007)</tt> will trigger "ibm/hotkey HKEY 00000080 00001007". Most of these can be found in <tt>_Qxx</tt> methods within the DSDT, which are executed on embedded controller events, e.g. _Q10 is triggered by pressing Fn-F7. You can add a call to MKHQ into an existing <tt>_Qxx</tt> method to get it recognized by ibm-acpi as well as creating new <tt>_Qxx</tt> methods, which if you're lucky will correspond to an EC event that IBM never used (e.g. A 770 will send Fn-Home/End/PgUp/PgDn to ibm-acpi if hacked in this fashion). For example, [http://www.wormnet.eu/ibm-g40/morebuttons.dsl this is a modified block of DSDT for a G40].<br />
<br />
=== Pure ACPI events ===<br />
<br />
A few keys can generate ACPI events of their own on certain ThinkPads, as long as they are masked off in the ibm-acpi hotkey's mask (or the hotkey feature is disabled in ibm-acpi).<br />
<br />
If you want the ThinkPad's BIOS and ACPI methods to know about these keys being pressed, you probably want to leave them masked out from ibm-acpi, and use their non-HKEY events listed below, instead.<br />
<br />
{| {{prettytable}}<br />
|+ events triggered by ACPI when hotkey is masked out or disabled. <br />
! key !! event<br />
|-<br />
| {{key|Fn}}{{key|F4}} || button/sleep SLPB 00000080 00000001<br />
|-<br />
| {{key|Fn}}{{key|F12}} || ibm/hotkey HKEY 00000080 0000100c<br />
|}<br />
<br />
===tpb configuration===<br />
{| {{prettytable}}<br />
|+ configuration keywords for [[tpb]] (to put in {{path|/etc/tpbrc}})<br />
! key !! config keyword<br />
|-<br />
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || THINKPAD<br />
|-<br />
| {{ibmkey|Home|#494949}} || HOME<br />
|-<br />
| {{ibmkey|Search|#494949}} || SEARCH<br />
|-<br />
| {{ibmkey|Mail|#494949}} || MAIL<br />
|-<br />
| {{ibmkey|Favorites|#494949}} || FAVORITES<br />
|-<br />
| {{ibmkey|Reload|#494949}} || RELOAD<br />
|-<br />
| {{ibmkey|Abort|#494949}} || ABORT<br />
|-<br />
| {{ibmkey|Backward|#494949}} || BACKWARD<br />
|-<br />
| {{ibmkey|Forward|#494949}} || FORWARD<br />
|-<br />
| {{key|Fn}} || FN<br />
|-<br />
| {{key|Fn}}{{key|Space}} || CALLBACK (zoom on/off)<br />
|-<br />
| {{key|Fn}}{{key|PageUp}} || CALLBACK (thinklight on/off)<br />
|-<br />
| {{key|Fn}}{{key|F7}} || CALLBACK (display lcd/crt/both)<br />
|-<br />
| {{key|Fn}}{{key|F8}} || CALLBACK (expand on/off)<br />
|-<br />
| {{key|Fn}}{{key|Home}} / {{key|Fn}}{{key|Pos1}} || CALLBACK (brightness <percent>)<br />
|-<br />
| {{key|Fn}}{{key|End}} || CALLBACK (brightness <percent>)<br />
|-<br />
| {{ibmkey|Volume up|#494949}} || CALLBACK (volume <percent>)<br />
|-<br />
| {{ibmkey|Volume down|#494949}} || CALLBACK (volume <percent>)<br />
|-<br />
| {{ibmkey|Volume mute|#494949}} || CALLBACK (mute on/off)<br />
|}<br />
<br />
To all parameter keywords should be assigned the full path to the executables supposed to be started on key press.<br />
The exectable provided for the CALLBACK keyword should take the parameters given in parentheses and act according to them.<br />
If you want to use xmodmap for the HOME, SEARCH, MAIL, FAVORITES, RELOAD, ABORT, BACKWARD, FORWARD and FN keys you should<br />
provide a <tt>XEVENTS OFF</tt> in your {{path|/etc/tpbrc}}. <br />
You can use an appropriate executable to [[How to inject fake keystrokes|inject fake keystrokes]].<br />
<br />
For Debian users, tpb is started from {{path|/etc/X11/Xsession.d/90tpb}}.<br />
<br />
'''Sound Button configuration'''<br />
<br />
''Note: Tested on T60p with Ubuntu 6.06 LTS''<br />
<br />
Most Thinkpads have a hardware sound mixer, thus the volumes buttons should work without configuration. However, this change is not reflected in the software mixer. tpb has a switch to enable software mixer support via OSS. The manual recommends this only for devices without a hardware mixer, but it also works for other hadware mixer enabled devices, even with the ALSA system. Just put MIXER ON in your {{path|/etc/tpbrc}} file and you can see the effect immediately in any ALSA mixer (e.g. kmix). For this to work you need write permissions to {{path|/dev/nvram}}.<br />
<br />
''Note: Tested on X21 with Ubuntu 6.06 LTS''<br />
<br />
On the ThinkPad X21 (and maybe some other older models) ACPI causes problems with tpb. On an X21 using acpi the volume buttons would work occasionally, and the OSD for tpb functions would rarely work. If a volume buttons was pressed too often, sometimes the computer would enter a low power (unplugged state) and would require a reboot. The solution is to use APM instead of ACPI. Instructions can be found in [[How_to_make_APM_work]].<br />
<br />
===KMilo configuration===<br />
The programs to be executed by [[KMilo]] are configured via the KDE Control Center (<tt>kcontrol</tt>), under <tt>System Administration --> IBM Thinkpad Laptop</tt>. Note that you can use appropriate commands to [[How to inject fake keystrokes|inject fake keystrokes]].<br />
<br />
===xmodmap configuration===<br />
xmodmap enables you to edit the modifier map and keymap tables that are used to translate keycodes into keysyms.<br />
Understood? Well, basically it allows you to give the X server a dictionary for the translation of keycodes like "97" into more human readable synonyms like "Home". This way xmodmap allows you to make the special keys of your keyboard known to X applications.<br />
<br />
To discover the keycode that a certain keypress produces, use the tool {{cmduser|xev}} <br />
<br />
Usually you should write your keycode-keysym associations into the file {{path|~/.Xmodmap}}. This file is usually read by the X session startup scripts of your system, so that the mappings automatically get included everytime you run the X server.<br />
<br />
The {{path|~/.Xmodmap}} lines for our purpose are in the form of<br />
keycode <keycode> = <keysym><br />
<br />
Load the assocation using the command<br />
<br />
{{cmduser|xmodmap ~/.Xmodmap}} <br />
<br />
(some configurations do this automatically upon X startup). <br />
<br />
The following table shows the keycodes generated by the ThinkPad special keys and sensible keysyms to assign them to.<br />
{| {{prettytable}}<br />
|+ keycodes and recommended keysyms<br />
! key !! keycode !! keysym<br />
|-<br />
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || 159 || XF86LaunchA<br />
|-<br />
| {{ibmkey|Backward|#494949}} || 234 || XF86Back or F19<br />
|-<br />
| {{ibmkey|Forward|#494949}} || 233 || XF86Forward or F20<br />
|-<br />
| {{ibmkey|Play/Pause|#494949}} || 162 || XF86AudioPlay<br />
|-<br />
| {{ibmkey|Stop|#494949}} || 164 || XF86AudioStop<br />
|-<br />
| {{ibmkey|Next|#494949}} || 153 || XF86AudioNext<br />
|-<br />
| {{ibmkey|Previous|#494949}} || 144 || XF86AudioPrev<br />
|-<br />
<br />
<br />
| {{ibmkey|Home|#494949}} || 178 || XF86HomePage<br />
|-<br />
| {{ibmkey|Search|#494949}} || 229 || XF86Search<br />
|-<br />
| {{ibmkey|Mail|#494949}} || 236 || XF86Mail<br />
|-<br />
| {{ibmkey|Favorites|#494949}} || 230 || XF86AddFavorite or XF86Favorites<br />
|-<br />
| {{ibmkey|Reload|#494949}} || 231 || XF86Reload<br />
|-<br />
| {{ibmkey|Abort|#494949}} || 232 || XF86Stop<br />
|-<br />
| {{key|Fn}} || 227 || F35<br />
|}<br />
<br />
Note: You can also use xkeycaps (an X tool to display and edit the X keyboard mapping) to generate proper .Xmodmap.<br />
<br />
Note: if you are running [[tpb]] you might need to add the line <tt>XEVENTS=off</tt> into your tpbrc to stop it from grabbing the key events and allow them to get through to X instead. See [[http://www.thinkwiki.org/wiki/Tpb]] for more detailed instruction on how to use tpb and xmodmap.<br />
<br />
Note: XF86Forward and XF86Back do not work correctly in Firefox. You may want to map them to F19 and F20 instead if you use Firefox.<br />
<br />
Note: The "XF86AudioPlay" etc. just works with a few programs. To make it work with more multimedia programs you have map the key to use something like [http://www.kde-apps.org/content/show.php/ReMoot?content=63140 ReMoot]. ReMoot is a command line wrapper that control 18 of the most common multimedia applications. <br />
<br />
=====Enabling the Windows and Menu Keys=====<br />
On some systems the Windows and Menu keys may not be recognized. You can enable then by<br />
making the following changes:<br />
<br />
keycode 115 = F13<br />
keycode 227 = F35<br />
<br />
F13 and F35 are used for the Windows and and Menu keys respectively. Labelling keycpode 227 as "Menu" may conflict with the right-mouse-click event.<br />
<br />
=====Using Caps Lock as Super L (Windows key)=====<br />
You can easily use Caps Lock as Win key by adding the following in your ~/.Xmodmap:<br />
! No Caps Lock<br />
clear lock<br />
! Caps Lock as Win key<br />
add mod4 = Caps_Lock<br />
=====NumLock=====<br />
On the ThinkPad {{600}}, {{T20}}, {{T21}}, {{T22}}, {{T30}}, {{X20}}, {{X21}}, {{X31}}, {{T42p}}, {{T43}}, {{R51}}, {{R52}} and possibly other models, X does not recognize the keycode for {{key|NumLk}} = {{key|Shift}}+{{key|ScrLk}}. To fix this, add the following to {{path|~/.Xmodmap}} in your home directory or {{path|/etc/X11/Xmodmap}} and run <tt>xmodmap</tt>, ex: <tt>xmodmap ~/.Xmodmap</tt>:<br />
keycode 77 = Num_Lock<br />
<br />
===Mapping keys with setkeycodes===<br />
You can use the setkeycodes command to remap certain keys. I.e. you can use {{cmdroot|setkeycodes 6e 109 6d 104 69 28 6b 1}} to map the Tablets Up and Down keys to the standard PageUp and PageDown keys and Tablet Escape and Enter to their respective keys.<br />
<br />
The following table shows the keycodes generated by the ThinkPad keys.<br />
{| {{prettytable}}<br />
|+ keycodes<br />
! key !! keycode<br />
|-<br />
| {{ibmkey|Tablet orientation|#494949}} || 0x6d<br />
|-<br />
| {{ibmkey|Tablet Shortcut|#494949}} || 0x6e<br />
|-<br />
| {{ibmkey|Tablet Esc|#494949}} || 0x6b<br />
|-<br />
| {{ibmkey|Tablet Enter|#494949}} || 0x69<br />
|-<br />
| {{ibmkey|Tablet Up|#494949}} || 0x68<br />
|-<br />
| {{ibmkey|Tablet Down|#494949}} || 0x6c<br />
|-<br />
| {{ibmkey|Tablet (unlabeled)|#494949}} || 0x67<br />
|}<br />
<br />
==Example Applications==<br />
===Web Browsers===<br />
====Firefox====<br />
<br />
There are various ways to assign actions to the browser keys. The easiest way is to install [http://mozilla.dorando.at/keyconfig.xpi keyconfig.xpi] from http://mozilla.dorando.at, which adds a menu entry Tools->Keyconfig. Then you can assign any action you want to the F19/F20 keys (you still need to create {{path|~/.Xmodmap}} as explained above).<br />
<br />
The remaining discussion gives you various more complicated ways to achieve the same thing. <br />
To have firefox make use of the browser keys you need to modify one of its files{{footnote|4}}.<br />
To do this you will first need to extract it from the {{path|browser.jar}} archive. Do...<br />
<br />
:{{cmdroot|cd <firefox-directory>/chrome}}<br /><br />
:{{cmdroot|unzip browser.jar}}<br />
<br />
The file of interest is {{path|content/browser/browser.xul}}. Edit it {and don't forget to make a backup copy first}...<br />
:{{cmdroot|vi content/browser/browser.xul}}<br />
<br />
Look for the '''<keyset id="mainKeyset">''' section and add the following lines within...<br />
<key id="goBackKb" keycode="VK_F19" command="Browser:Back" /><br />
<key id="goForwardKb" keycode="VK_F20" command="Browser:Forward" /><br />
<br />
The Command you need for Next Tab <br />
<key id="goBackTabKb" keycode="VK_F19" oncommand="gBrowser.mTabContainer.advanceSelectedTab(-1)" /><br />
For the Previous Tab <br />
<key id="goForwardTabKb" keycode="VK_F20" oncommand="gBrowser.mTabContainer.advanceSelectedTab(1)" /><br />
<br />
Now save the file and repackage the {{path|browser.jar}} archive...<br />
:{{cmdroot|zip -rD0 browser.jar content/browser/}}<br />
<br />
That's it.<br />
<br />
{{HINT|For Firefox 2.0, just edit <firefox-directory>/chrome/browser/content/browser/browser.xul}}<br />
<br />
{{HINT|Outdated: Another interesting Page on Firefox is http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/ It uses different key mappings (F19 resp. F20) but a ready [http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/dqdnavkeys-1.2.xpi .xpi] is provided which is pretty comfortable. However, this xpi file does not install on Firefox 1.5. or later.}}<br />
<br />
{{HINT|Outdated: You can also use the [http://extensionroom.mozdev.org/more-info/keyconfig keyconfig] extension to configure custom keys. This extension works with Firefox 1.5 but not with Firefox 2.0. The Command you need for Next Tab is gBrowser.mTabContainer.advanceSelectedTab(1,true); For Previous Tab its gBrowser.mTabContainer.advanceSelectedTab(-1,true); }}.<br />
<br />
====Konqueror====<br />
KDE allows you set key mappings for KDE applications (Go to KMenu > System > Control Center > Regional & Accessibility > Keyboard Shortcuts). By default (at least in KDE 3.5), XF86Back and XF86Forward are set as alternatives to Alt-Left and Alt-Right, and are mapped to KDE Back and Forward navigation actions. <br />
<br />
If you use Konqueror as your only browser, you only need to set up {{path|~/.Xmodmap}} as described [[#xmodmap configuration|above]] to assign ThinkPad back/forward keys to the symbols XF86Back/XF86Forward. This also make these keys work for other KDE applications such as Quanta Plus, KPackage and so on (not all KDE applications honor this setting, e.g. KDE help system doesn't).<br />
<br />
If you want to use Firefox, however, the above settings do not work. You will have to map ThinkPad back/forward keys to F19/F20 as described [[#Firefox|above]], and change KDE navigation key settings to use F19/F20 instead of the default.<br />
<br />
====Opera====<br />
However this isn't a simple configration file, you can set your browser manually.<br /><br />
Go to <i>Tool > Settings > Mouse and keyboard > Keyboard settings > Edit > Browser Window</i>. There add F19 - Back and F20 - Forward. Now you can surf using your TP keys ;-)<br />
<br />
===Window Managers===<br />
====fvwm====<br />
To get the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys to cycle through pages in the virtual desktop, add this to your {{path|~/.fvwmrc}}:<br />
Key XF86Back A A Scroll -100000 0<br />
Key XF86Forward A A Scroll +100000 0<br />
If you use multiple virtual desktops, you could instead use the keys to flip between them by using GotoDesk.<br />
<br />
====fluxbox====<br />
To get the keys to cycle through pages in the virtual desktop, add this to your {{path|~/.fluxbox/keys}}:<br />
None F19 :PrevWorkspace<br />
None F20 :NextWorkspace<br />
<br />
====pekwm configuration====<br />
You can make the two browser keys switch workspaces in pekwm, by adding the following two lines to the {{path|~/.pekwm/keys}} file:<br />
KeyPress = "Mod1 XF86Back" { Actions = "GoToWorkspace prev" }<br />
KeyPress = "Mod1 XF86Forward" { Actions = "GoToWorkspace next" }<br />
<br />
====pwm====<br />
Another example how to use these two keys to switch between pwm tabs. These two lines should be added to {{path|~/.pwm/keys-default.conf}} or {{path|/etc/pwm/keys-default.conf}}:<br />
kbind "Back", "switch_rot", -1<br />
kbind "Forward", "switch_rot", 1<br />
<br />
====IceWM====<br />
To make IceWM cycle workspaces using the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys, change these two options in {{path|~/.icewm/preferences}} (Provided you assigned keysyms F19 and F20 with xmodmap):<br />
# "Previous workspace" shortcut<br />
KeySysWorkspacePrev="F19"<br />
# "Next workspace" shortcut<br />
KeySysWorkspaceNext="F20"<br />
<br />
==== Gnome/metacity ====<br />
<br />
Follow the [https://wiki.ubuntu.com/Keybindings Ubuntu guide].<br />
<br />
===Other Uses===<br />
====Console tools configuraton====<br />
To make the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys useful in console, add this to your keymap ({{path|/etc/console/boottime.kmap.gz}} in {{Debian}}):<br />
keycode 158 = Decr_Console<br />
keycode 159 = Incr_Console<br />
<br />
Alternatively you can load this script (perhaps on system startup) to enable Backward/Forward button console (VT) switch:<br />
<br />
#!/bin/sh<br />
echo keycode 158 = Decr_Console | loadkeys<br />
echo keycode 159 = Incr_Console | loadkeys<br />
<br />
It should work with any distro.<br />
<br />
==External Sources==<br />
*[http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-51537 IBMs page on configuring the ThinkPad buttons (ThinkPad, Access IBM, Mail, Search, and Home buttons) under Linux]<br />
*[http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/ Rob Mayoffs page on using IBM Keyboard Navigation Keys in Linux Mozilla and Firefox]<br />
*[http://snarfed.org/space/thinkpad+keys+in+firefox Ryan Barretts blog article about using the browser keys in Firefox]<br />
*[http://chaotika.org/~bluesceada/?page=soft&sub=thinkpad#acpibutn DennisG's help to get the ibm-acpi buttons do useful things] on a {{Z61e}} and possibly {{Z61m}}, {{Z61t}} and {{Z61p}}<br />
<br />
{{footnotes|<br />
#Note that the associated functionality for Fn-F* key combinations is not consistent amongst all ThinkPads. We are maintaining [[Default meanings of special keys|a table of associated meanings]].<br />
#if there are more than one tool listed, one is sufficient<br />
#'full' means you can completely reassign any action to be triggered by the key, 'additional actions' means you can trigger actions in addition to the standard function of the key, which can not be changed.<br />
#Thanks go to Ryan Barrett for writing the [http://snarfed.org/space/thinkpad+keys+in+firefox little howto] on [http://snarfed.org/space/start his blog].<br />
}}</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=AD1984&diff=32414AD19842007-08-26T00:02:01Z<p>Owenh: /* Trouble shooting */</p>
<hr />
<div>__NOTOC__<br />
{| width="100%"<br />
|style="vertical-align:top" |<br />
<div style="margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;"><br />
=== AD1984 ===<br />
This is a ''Analog Devices'' High-Definition Audio controller<br />
<br />
=== Features ===<br />
* Chipset: AD1984<br />
* Interface: HD Audio <br />
</div><br />
|style="vertical-align:top" |<br />
|}<br />
<br />
=== Linux ALSA driver ===<br />
This device isn't supported by current Alsa Driver [http://www.alsa-project.org/alsa-doc/index.php?vendor=vendor-Analog_Devices#matrix] (as of May 25, 2007).<br />
<br />
However, Takashi Iwai has added support to this device in Alsa development version [http://hg.alsa-project.org/alsa-kernel/log?rev=AD1984]... Still have to wait to get it included in the Linux Kernel... Note: It is rather trivial to get this working in a standard kernel right now, It is only 3 patches on top of the stock 1.0.14 code:<br />
<br />
* [http://hg.alsa-project.org/alsa-kernel/rev/958b39f3e8dd Fix Oops with AD1984 thinkpad model]<br />
* [http://hg.alsa-project.org/alsa-kernel/rev/47ca87407c84 Fix AD1984 basic model]<br />
* [http://hg.alsa-project.org/alsa-kernel/rev/ca37aeeeb0ea Fix Thinkpad X61/T61 outputs]<br />
<br />
Alsa-Driver 1.0.14 added some support for this chip, but did not work on my T61; however, using the latest HG/Mercurial makes everything work. I created a Debian package for unstable/sid with the HG alsa that works for me, available at [http://people.debian.org/~jello/alsa-modules-2.6.21-2-686_1.0.15~hg2007070601-1+2.6.21-5_i386.deb]. --[[User:Jello|Jello]] 15:31, 6 July 2007 (UTC)<br />
<br />
Works with Kernel 2.6.22 and Alsa 1.0.14a<br />
--[[User:Schlodty|Schlodty]] 12:01, 21 July 2007 (UTC)<br />
<br />
Did not get it to work on X61s with either of the above packages. Newer HG packages do support this chip, so alsa 1.0.15 should have full support for this chip. --[[User:hjh|hjh]] 9:09, 27 July 2007 (UTC)<br />
<br />
Debian users (both Stable/Etch and Testing) can use the small script [http://www.klabs.be/~fpiat/linux/debian/Lenny_on_Thinkpad_T61/#Sound 1] i wrote to patch and build an alsa module package (with module-assistant). --[[User:Fpiat|Fpiat]] 11:45,04 August 2007 (UTC)<br />
<br />
Works with a patched 2.6.22.1 kernel using the 2007/07/20 patch from ftp://ftp.alsa-project.org/pub/kernel-patches/ . Just make sure that you have the PCM channel unmuted and the speaker switch checked. --[[User:Mozz|Mozz]] 17:13, 7 August 2007 (UTC)<br />
<br />
Above patches are in kernel mainline from Kernel 2.6.23-rc1 , it works on my T61 --[[User:Brain79|Brain79]] 22:01, 09 August 2007 (UTC)<br />
<br />
=== Trouble shooting ===<br />
{{WARN|It's really necessary to leave the modem enabled in the BIOS or the hda_intel driver will reutrn azx_get_response timeouts which will lead to a non-working soundchip.<br />
Got that information from a comment from: [http://crypto.riken.go.jp/archives/linux/kernel.org/kernel/people/akpm/patches/2.6/2.6.22-rc6/2.6.22-rc6-mm1/broken-out/git-alsa.patch here] --[[User:Gladiac|Gladiac]] 06:12, 24 July 2007 (UTC)}}<br />
<br />
=== This chip may be found in ===<br />
* {{R61}}<br />
* {{T61}}<br />
* [[:Category:X61|X61]], [[:Category:X61s|X61s]]<br />
<br />
=== Datasheets ===<br />
* [http://www.analog.com/en/prod/0,2877,AD1984,00.html Analog Devices page for the AD1984]<br />
<br />
[[Category:Components]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=AD1984&diff=32397AD19842007-08-25T02:23:28Z<p>Owenh: /* Linux ALSA driver */</p>
<hr />
<div>__NOTOC__<br />
{| width="100%"<br />
|style="vertical-align:top" |<br />
<div style="margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;"><br />
=== AD1984 ===<br />
This is a ''Analog Devices'' High-Definition Audio controller<br />
<br />
=== Features ===<br />
* Chipset: AD1984<br />
* Interface: HD Audio <br />
</div><br />
|style="vertical-align:top" |<br />
|}<br />
<br />
=== Linux ALSA driver ===<br />
This device isn't supported by current Alsa Driver [http://www.alsa-project.org/alsa-doc/index.php?vendor=vendor-Analog_Devices#matrix] (as of May 25, 2007).<br />
<br />
However, Takashi Iwai has added support to this device in Alsa development version [http://hg.alsa-project.org/alsa-kernel/log?rev=AD1984]... Still have to wait to get it included in the Linux Kernel... Note: It is rather trivial to get this working in a standard kernel right now, It is only 3 patches on top of the stock 1.0.14 code:<br />
<br />
* [http://hg.alsa-project.org/alsa-kernel/rev/958b39f3e8dd Fix Oops with AD1984 thinkpad model]<br />
* [http://hg.alsa-project.org/alsa-kernel/rev/47ca87407c84 Fix AD1984 basic model]<br />
* [http://hg.alsa-project.org/alsa-kernel/rev/ca37aeeeb0ea Fix Thinkpad X61/T61 outputs]<br />
<br />
Alsa-Driver 1.0.14 added some support for this chip, but did not work on my T61; however, using the latest HG/Mercurial makes everything work. I created a Debian package for unstable/sid with the HG alsa that works for me, available at [http://people.debian.org/~jello/alsa-modules-2.6.21-2-686_1.0.15~hg2007070601-1+2.6.21-5_i386.deb]. --[[User:Jello|Jello]] 15:31, 6 July 2007 (UTC)<br />
<br />
Works with Kernel 2.6.22 and Alsa 1.0.14a<br />
--[[User:Schlodty|Schlodty]] 12:01, 21 July 2007 (UTC)<br />
<br />
Did not get it to work on X61s with either of the above packages. Newer HG packages do support this chip, so alsa 1.0.15 should have full support for this chip. --[[User:hjh|hjh]] 9:09, 27 July 2007 (UTC)<br />
<br />
Debian users (both Stable/Etch and Testing) can use the small script [http://www.klabs.be/~fpiat/linux/debian/Lenny_on_Thinkpad_T61/#Sound 1] i wrote to patch and build an alsa module package (with module-assistant). --[[User:Fpiat|Fpiat]] 11:45,04 August 2007 (UTC)<br />
<br />
Works with a patched 2.6.22.1 kernel using the 2007/07/20 patch from ftp://ftp.alsa-project.org/pub/kernel-patches/ . Just make sure that you have the PCM channel unmuted and the speaker switch checked. --[[User:Mozz|Mozz]] 17:13, 7 August 2007 (UTC)<br />
<br />
Above patches are in kernel mainline from Kernel 2.6.23-rc1 , it works on my T61 --[[User:Brain79|Brain79]] 22:01, 09 August 2007 (UTC)<br />
<br />
=== Trouble shooting ===<br />
{{WARN|It's really necessary to leave the modem enabled in the BIOS or the intel_hda-driver will reutrn azx_get_response timeouts which will lead to a non-working soundchip.<br />
Got that information from a comment from: [http://crypto.riken.go.jp/archives/linux/kernel.org/kernel/people/akpm/patches/2.6/2.6.22-rc6/2.6.22-rc6-mm1/broken-out/git-alsa.patch here] --[[User:Gladiac|Gladiac]] 06:12, 24 July 2007 (UTC)}}<br />
<br />
=== This chip may be found in ===<br />
* {{R61}}<br />
* {{T61}}<br />
* [[:Category:X61|X61]], [[:Category:X61s|X61s]]<br />
<br />
=== Datasheets ===<br />
* [http://www.analog.com/en/prod/0,2877,AD1984,00.html Analog Devices page for the AD1984]<br />
<br />
[[Category:Components]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Intel_Graphics_Media_Accelerator_X3100&diff=32396Intel Graphics Media Accelerator X31002007-08-25T02:09:56Z<p>Owenh: /* Linux X.Org driver */</p>
<hr />
<div>__NOTOC__<br />
{| width="100%"<br />
|style="vertical-align:top" |<br />
<div style="margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;"><br />
=== Intel Graphics Media Accelerator X3100 ===<br />
This is an Intel video adapter<br />
<br />
=== Features ===<br />
* Integrated into the following chipsets:<br />
** [[Intel 965]]<br />
* PCI ID: 8086:2A02<br />
* Uses part of main memory for video usage<br />
</div><br />
|style="vertical-align:top" |<br />
|}<br />
<br />
=== Linux X.Org driver ===<br />
Supported by Xorg [http://www.x.org/wiki/IntelGraphicsDriver?highlight=%28intel%29%7C%28driver%29]. The driver supports hardware accelerated 3D via the Direct Rendering Infrastructure (DRI), but only in depths 16 and 24.<br />
<br />
Version 2.1.1 of the driver fixes a TV output problem. Use xrandr to view the enabled screens in X.<br />
<br />
=== Linux Intel driver ===<br />
There is a Graphics driver for the Mobile Intel 965 Express Chipset Family at [http://downloadfinder.intel.com/scripts-df-external/filter_results.aspx?strTypes=all&ProductID=2301&OSFullName=Linux*&lang=eng&strOSs=39&submit=Go%21 Intels Support Site]. This driver is just a snapshot of the Xorg/XFree86 driver.<br />
<br />
<br />
==== ThinkPad LCD ====<br />
Display on the internal LCD works as long as you set the monitor settings correct.<br />
<br />
==== External VGA port ====<br />
Works. Dualhead is supported. <br />
<br />
There are two options for running the external VGA port - either as a copy of the LCD (clone) or as a separate workspace. Here is an example for the separate workspace mode for xorg.conf for the X60s:<br />
Section "Device"<br />
Identifier "Intel Corporation Mobile Integrated Graphics Controller"<br />
Driver "intel"<br />
BusID "PCI:0:2:0"<br />
Option "MonitorLayout" "CRT,LFP"<br />
Option "DevicePresence" "true" <br />
Screen 1<br />
EndSection<br />
Section "Device"<br />
Identifier "Intel Corporation Mobile Integrated Graphics Controller External CRT"<br />
Driver "intel"<br />
BusID "PCI:0:2:0"<br />
Screen 0<br />
EndSection<br />
Section "Monitor"<br />
Identifier "LCD"<br />
Option "DPMS"<br />
EndSection<br />
<br />
Section "Monitor"<br />
Identifier "External CRT"<br />
Option "DPMS"<br />
HorizSync 28-75<br />
VertRefresh 43-100<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "External Screen"<br />
Device "Intel Corporation Mobile Integrated Graphics Controller External CRT"<br />
Monitor "External CRT"<br />
DefaultDepth 24<br />
SubSection "Display"<br />
Depth 24<br />
Modes "1280x1024"<br />
EndSubSection<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "Default Screen"<br />
Device "Intel Corporation Mobile Integrated Graphics Controller"<br />
Monitor "LCD"<br />
DefaultDepth 24<br />
SubSection "Display"<br />
Depth 1<br />
Modes "1024x768"<br />
EndSubSection<br />
EndSection<br />
<br />
Section "ServerLayout"<br />
Identifier "Default Layout"<br />
Screen 0 "Default Screen" 0 0<br />
Screen 1 "External Screen" RightOf "Default Screen"<br />
InputDevice "Generic Keyboard"<br />
InputDevice "Configured Mouse"<br />
InputDevice "Synaptics Touchpad"<br />
EndSection<br />
<br />
Or try:<br />
<br />
<br />
Section "ServerLayout"<br />
Identifier "Default Layout"<br />
Option "Xinerama"<br />
Screen 0 "Screen0" 0 0<br />
Screen 1 "Screen1" LeftOf "Screen0"<br />
InputDevice "Keyboard0" "CoreKeyboard"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Keyboard0"<br />
Driver "kbd"<br />
Option "XkbModel" "pc105"<br />
Option "XkbLayout" "de"<br />
Option "XkbVariant" "nodeadkeys"<br />
EndSection<br />
<br />
Section "Monitor"<br />
Identifier "Monitor2"<br />
ModelName "Belinea 1905 G1"<br />
HorizSync 30.0 - 83.0<br />
VertRefresh 50.0 - 76.0<br />
Option "dpms"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Videocard0"<br />
Driver "intel"<br />
BusID "PCI:0:2:0"<br />
Option "MonitorLayout" "CRT,LFP"<br />
Option "DevicePresence" "true"<br />
Screen 0<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "Screen0"<br />
Device "Videocard0"<br />
DefaultDepth 24<br />
SubSection "Display"<br />
Viewport 0 0<br />
Depth 24<br />
Modes "1024x768" "800x600" "640x480"<br />
EndSubSection<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Videocard1"<br />
Driver "intel"<br />
BusID "PCI:0:2:0"<br />
Option "MonitorLayout" "CRT,LFP"<br />
Option "DevicePresence" "true"<br />
Screen 1<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "Screen1"<br />
Device "Videocard1"<br />
DefaultDepth 24<br />
SubSection "Display"<br />
Viewport 0 0<br />
Depth 24<br />
Modes "1280x1024" "1024x768" "800x600" "640x480"<br />
EndSubSection<br />
EndSection<br />
<br />
Here is the relevant text for running the VGA port as a true clone (so even things like Xine video playback appears on both screens) of the internal LCD display:<br />
<br />
Section "Device"<br />
Identifier "Videocard0"<br />
Driver "intel"<br />
BusID "PCI:0:2:0"<br />
Option "MonitorLayout" "NONE,LFP+CRT"<br />
Option "DevicePresence" "true"<br />
Option "CheckLid" "false"<br />
VendorName "Lenovo"<br />
BoardName "Intel Corporation Mobile Integrated Graphics Controller"<br />
EndSection<br />
<br />
<br />
==== SVideo port ====<br />
??<br />
<br />
==== DVI port ====<br />
??<br />
<br />
Linux support status is unknown<br />
<br />
==== Suspend behaviour ====<br />
* Required kernel parameters for suspend to ram: none<br />
<br />
=== ThinkPads this chip may be found in ===<br />
* {{X61}}, {{X61s}}, {{X61T}}, {{T61}}<br />
<br />
[[Category:Components]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Verizon_1xEV-DO_WWAN&diff=30664Verizon 1xEV-DO WWAN2007-06-24T20:41:17Z<p>Owenh: /* Instructions */</p>
<hr />
<div>From the TABOOK.PDF reference ('''Lenovo Training Solutions, Personal Systems Reference''', November 2005 Number 299):<br />
<br />
''Some models: Wireless WAN Sierra Wireless 1xEV-DO Network Adapter, Mini PCIe Adapter, EV-DO/1xRTT, WWAN antenna on display, service contract reqd with Verizon® Wireless.''<br />
<br />
''WWAN: Requires service contract with Verizon; monthly service charges and airtime charges will apply. Roaming charges may also apply. Service not available in all areas. Verizon, not Lenovo, is solely responsible for the Verizon Wireless service. Visit the following Web site for more information: www.verizonwireless.com.''<br />
<br />
<br />
<br />
[http://www.lenovo.com/news/us/en/2005/09/zseries.html "Lenovo Widens Small Business Portfolio with Industry’s Thinnest and Lightest 14-inch Widescreen Notebook" press announcement]:<br />
<br />
'''First Notebook to Integrate High Speed EV-DO Wireless WAN''' (9/19/2005)<br />
''The Z60m and Z60t are the first standard notebooks ever to integrate a high-speed, Evolution Data Optimized (EV-DO)(5) wireless wide area network (WWAN) antenna for Verizon Wireless Broadband Access. The built-in WWAN antenna helps avoid many of the pitfalls associated with PC cards, including hardware incompatibility and fragile, easily damaged antennas protruding from the computer. Verizon Wireless’ network features one of the fastest connection rates in the U.S. with average speeds between 400-700 kilobytes per second (kbps). It also provides another layer of data security and protection, as it isn't susceptible to the same vulnerabilities as a shared hot spot connection, such as data theft.''<br />
<br />
''Several innovative multimedia features — including hot keys to control application functions and ports to easily upload digital images and video — make the Z Series optimal for business or home use, including presentations, multimedia and DVD movies.''<br />
<br />
''"One of the trends we're seeing in small businesses is that the line between work and home is blurring," said Chuck Sharp, vice president, Information Technology Solution Providers Alliance (ITSPA). "It's not efficient to spend money on separate pieces of technology for all aspects of your life. Time is at such a premium, that small businesses are looking for technology that not only improves their productivity at work, but also allows them to maximize their personal time — at home and when traveling."''<br />
<br />
<br />
<br />
Also of interest:<br />
<br />
[http://www-131.ibm.com/content/home/store_LNV_PublicUSA/en_US/ThinkPad_ZSeries_WWAN.html ThinkPad notebooks with Verizon Wireless BroadbandAccess]<br />
<br />
=== Linux Support ===<br />
<br />
T60p model works fine under Linux (SuSE 10.1) if you can get it activated and powered on, and apply various hotplug scripts and PPPD scripts.<br />
<br />
Initial service activation was done under Windows -- not sure if this is necessary.<br />
<br />
Generally it works under Linux. Occasionally after a fresh boot, it will not connect with an apparent failure to power on the device. The only solution seems to be to reboot into Windows, connect from there, reboot into linux, switch the wireless power switch off and on again, then connect. Then it works fine again. (There must be a better way!)<br />
<br />
Z60 model was report to work always (without the Windows shenanigans).<br />
<br />
X60s seems to work ok.<br />
<br />
In my T60 is not needed to boot Linux to power on the device. The device is a USB serial, and the proceeding to work is:<br />
<br />
=== Instructions ===<br />
<br />
(I am Debian user, but instructions are applicable for any distribution)<br />
<br />
* Insert to SIM Slot (under the battery) a SIM Card<br />
** The UMTS modem is sim-locked by Lenovo (Spain and Germany are Vodafone only); you can request an unlock code from IBM ([[#Unlocking_the_Modem|Unlocking the Modem]])<br />
<br />
* Switch on the Wireless switch. Antenna LED will light. If it is not lighting, press Fn+F5 until it lights (usually not needed)<br />
<br />
* If you type lsusb it will appear:<br />
<br />
Other devices...<br />
Bus 002 Device 004: ID 1199:6804 Sierra Wireless, Inc. <br />
Other devices...<br />
<br />
* Then, load the Sierra module:<br />
modprobe sierra<br />
<br />
* (PROBABLY UNNECESSARY) In system log, you will have some messages with 3 (usually) new USB Serial ports. You only need the first one (/dev/ttyUSB0). If you don't have /dev/ttyUSB0, ttyUSB1, etc. you can create using: <br />
<br />
cd /dev<br />
mknod ttyUSB0 c 188 0<br />
mknod ttyUSB1 c 188 1<br />
mknod ttyUSB2 c 188 2<br />
<br />
* Easy way to say hello to your modem:<br />
<br />
In one terminal: cat /dev/ttyUSB0<br />
In other one: echo at > /dev/ttyUSB0 (you should expect AT OK in first terminal)<br />
echo at+cpin? > /dev/ttyUSB0 (you should expect ready, if you don't need to enter PIN)<br />
<br />
<br />
* After it, you can use /dev/ttyUSB0 as GPRS+UMTS modem. You can use wvdial or pppd directly. Remember that you may need to insert PIN number.<br />
<br />
<br />
* How to collect your hex formatted ESN in software for service activiation (useful for internal EVDO cards):<br />
<br />
Open two terminals as root.<br />
<br />
In the first run:<br />
cat /dev/ttyUSB0<br />
<br />
In the second run:<br />
echo AT+GSN > /dev/ttyUSB0<br />
<br />
In the first terminal you should see the AT command and an ESN in hex followed by an OK. Give the hex number to the person activating your service. An example is provided below:<br />
<br />
<pre><br />
AT+GSN<br />
<br />
<br />
0x513BC21F<br />
<br />
<br />
<br />
OK<br />
</pre><br />
<br />
Here a list of some useful AT-Commands:<br />
<br />
* at+cfun=0 - Set card to low power output. For being a friend to your battery.<br />
* at+cfun=1 - Set card to full power output. If card is in low power mode, the card will reset, and you have to unload and than load the serial module.<br />
* at+cgreg? - Show the state of network searching. <br />
** If it displays +CGREG: 0,2 this means, the card is searching for a network. <br />
** If it displays +CGREG: 0,1,XXXX,YYYY this means, that you are logged in your HOME-Net<br />
** If it displays +CGREG: 0,5,XXXX,YYYY this means, that you are logged in a Roaming-Net<br />
<br />
A link: http://www.kuix.de/umts/vodafone/<br />
<br />
=== Unlocking the Modem ===<br />
<br />
You can request an unlock code from Lenovo by calling the IBM support and requesting this code. You have to agree that you won't get any support related to UMTS and Vodafone anymore and if you do, you can enter the unlock code like this:<br />
<br />
Terminal 1:<br />
cat /dev/ttyUSB0<br />
<br />
Terminal 2:<br />
echo 'AT+CLCK="PN",0,"12345678"' > /dev/ttyUSB0<br />
<br />
If you see OK in the first terminal, everything went fine. (NB: the windows manual provided by IBM is a LOT larger and even more difficult.)<br />
<br />
=== Debian ===<br />
<br />
The card (on the X60s anyway) is not supported by the sierra module in the vanilla 2.6.18 kernel in Etch. (I worked round this by dist-upgrading to Sid; however this could also be doable by building your own kernel / using a backports.org kernel of a later version; I will test both these with Etch again when I have a chance to).<br />
<br />
==== Stuff missing ====<br />
* Someone should write a small ruby script that provides a nice dialog for unlocking the device<br />
* How do I find out whether a device IS locked (by checking with the modem, not try and error)<br />
<br />
=== Models featuring this Technology ===<br />
* ThinkPad {{T60}}, {{T60p}}, {{X60s}}<br />
* ThinkPad {{Z Series}}<br />
<br />
[[Category:Components]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=Verizon_1xEV-DO_WWAN&diff=30663Verizon 1xEV-DO WWAN2007-06-24T20:38:40Z<p>Owenh: /* Instructions */</p>
<hr />
<div>From the TABOOK.PDF reference ('''Lenovo Training Solutions, Personal Systems Reference''', November 2005 Number 299):<br />
<br />
''Some models: Wireless WAN Sierra Wireless 1xEV-DO Network Adapter, Mini PCIe Adapter, EV-DO/1xRTT, WWAN antenna on display, service contract reqd with Verizon® Wireless.''<br />
<br />
''WWAN: Requires service contract with Verizon; monthly service charges and airtime charges will apply. Roaming charges may also apply. Service not available in all areas. Verizon, not Lenovo, is solely responsible for the Verizon Wireless service. Visit the following Web site for more information: www.verizonwireless.com.''<br />
<br />
<br />
<br />
[http://www.lenovo.com/news/us/en/2005/09/zseries.html "Lenovo Widens Small Business Portfolio with Industry’s Thinnest and Lightest 14-inch Widescreen Notebook" press announcement]:<br />
<br />
'''First Notebook to Integrate High Speed EV-DO Wireless WAN''' (9/19/2005)<br />
''The Z60m and Z60t are the first standard notebooks ever to integrate a high-speed, Evolution Data Optimized (EV-DO)(5) wireless wide area network (WWAN) antenna for Verizon Wireless Broadband Access. The built-in WWAN antenna helps avoid many of the pitfalls associated with PC cards, including hardware incompatibility and fragile, easily damaged antennas protruding from the computer. Verizon Wireless’ network features one of the fastest connection rates in the U.S. with average speeds between 400-700 kilobytes per second (kbps). It also provides another layer of data security and protection, as it isn't susceptible to the same vulnerabilities as a shared hot spot connection, such as data theft.''<br />
<br />
''Several innovative multimedia features — including hot keys to control application functions and ports to easily upload digital images and video — make the Z Series optimal for business or home use, including presentations, multimedia and DVD movies.''<br />
<br />
''"One of the trends we're seeing in small businesses is that the line between work and home is blurring," said Chuck Sharp, vice president, Information Technology Solution Providers Alliance (ITSPA). "It's not efficient to spend money on separate pieces of technology for all aspects of your life. Time is at such a premium, that small businesses are looking for technology that not only improves their productivity at work, but also allows them to maximize their personal time — at home and when traveling."''<br />
<br />
<br />
<br />
Also of interest:<br />
<br />
[http://www-131.ibm.com/content/home/store_LNV_PublicUSA/en_US/ThinkPad_ZSeries_WWAN.html ThinkPad notebooks with Verizon Wireless BroadbandAccess]<br />
<br />
=== Linux Support ===<br />
<br />
T60p model works fine under Linux (SuSE 10.1) if you can get it activated and powered on, and apply various hotplug scripts and PPPD scripts.<br />
<br />
Initial service activation was done under Windows -- not sure if this is necessary.<br />
<br />
Generally it works under Linux. Occasionally after a fresh boot, it will not connect with an apparent failure to power on the device. The only solution seems to be to reboot into Windows, connect from there, reboot into linux, switch the wireless power switch off and on again, then connect. Then it works fine again. (There must be a better way!)<br />
<br />
Z60 model was report to work always (without the Windows shenanigans).<br />
<br />
X60s seems to work ok.<br />
<br />
In my T60 is not needed to boot Linux to power on the device. The device is a USB serial, and the proceeding to work is:<br />
<br />
=== Instructions ===<br />
<br />
(I am Debian user, but instructions are applicable for any distribution)<br />
<br />
* Insert to SIM Slot (under the battery) a SIM Card<br />
** The UMTS modem is sim-locked by Lenovo (Spain and Germany are Vodafone only); you can request an unlock code from IBM ([[#Unlocking_the_Modem|Unlocking the Modem]])<br />
<br />
* Switch on the Wireless switch. Antena LED will light. If it is not lighthing, press Fn+F5 until it lights (usually not needed)<br />
<br />
* If you type lsusb it will appear:<br />
<br />
Other devices...<br />
Bus 002 Device 004: ID 1199:6804 Sierra Wireless, Inc. <br />
Other devices...<br />
<br />
* Then, load the Sierra module:<br />
modprobe sierra<br />
<br />
* (PROBABLY YOU DON'T NEED TO DO IT) In system log, you will have some messages with 3 (usually) new USB Serial ports. You only need the first one (/dev/ttyUSB0). If you don't have /dev/ttyUSB0, ttyUSB1, etc. you can create using: <br />
<br />
cd /dev<br />
mknod ttyUSB0 c 188 0<br />
mknod ttyUSB1 c 188 1<br />
mknod ttyUSB2 c 188 2<br />
<br />
* Easy way to say hello to your modem:<br />
<br />
In one terminal: cat /dev/ttyUSB0<br />
In other one: echo at > /dev/ttyUSB0 (you should expect AT OK in first terminal)<br />
echo at+cpin? > /dev/ttyUSB0 (you should expect ready, if you don't need to enter PIN)<br />
<br />
<br />
* After it, you can use /dev/ttyUSB0 as GPRS+UMTS modem. You can use wvdial or directly pppd. Remember that you maybe need to insert PIN number.<br />
<br />
<br />
* How to collect your hex formatted ESN in software for service activiation (useful for internal EVDO cards):<br />
<br />
Open two terminals as root.<br />
<br />
In the first run:<br />
cat /dev/ttyUSB0<br />
<br />
In the second run:<br />
echo AT+GSN > /dev/ttyUSB0<br />
<br />
In the first terminal you should see the AT command and an ESN in hex followed by an OK. Give the hex number to the person activating your service. An example is provided below:<br />
<br />
<pre><br />
AT+GSN<br />
<br />
<br />
0x513BC21F<br />
<br />
<br />
<br />
OK<br />
</pre><br />
<br />
Here a list of some usefull AT-Commands:<br />
<br />
* at+cfun=0 - set card to low power output. For being a friend to your battery.<br />
* at+cfun=1 - set Card to full power output. If card is in low power mode, the card will reset, and you have to unload and than load the serial module<br />
* at+cgreg? - shows you the state of network searching. <br />
** If it displays +CGREG: 0,2 this means, the card is searching for a network. <br />
** If it displays +CGREG: 0,1,XXXX,YYYY this means, that you are logged in your HOME-Net<br />
** If it displays +CGREG: 0,5,XXXX,YYYY this means, that you are logged in a Roaming-Net<br />
<br />
A link: http://www.kuix.de/umts/vodafone/<br />
<br />
=== Unlocking the Modem ===<br />
<br />
You can request an unlock code from Lenovo by calling the IBM support and requesting this code. You have to agree that you won't get any support related to UMTS and Vodafone anymore and if you do, you can enter the unlock code like this:<br />
<br />
Terminal 1:<br />
cat /dev/ttyUSB0<br />
<br />
Terminal 2:<br />
echo 'AT+CLCK="PN",0,"12345678"' > /dev/ttyUSB0<br />
<br />
If you see OK in the first terminal, everything went fine. (NB: the windows manual provided by IBM is a LOT larger and even more difficult.)<br />
<br />
=== Debian ===<br />
<br />
The card (on the X60s anyway) is not supported by the sierra module in the vanilla 2.6.18 kernel in Etch. (I worked round this by dist-upgrading to Sid; however this could also be doable by building your own kernel / using a backports.org kernel of a later version; I will test both these with Etch again when I have a chance to).<br />
<br />
==== Stuff missing ====<br />
* Someone should write a small ruby script that provides a nice dialog for unlocking the device<br />
* How do I find out whether a device IS locked (by checking with the modem, not try and error)<br />
<br />
=== Models featuring this Technology ===<br />
* ThinkPad {{T60}}, {{T60p}}, {{X60s}}<br />
* ThinkPad {{Z Series}}<br />
<br />
[[Category:Components]]</div>Owenhhttps://www.thinkwiki.org/w/index.php?title=ThinkPad_11a/b/g_Wireless_LAN_Mini_Express_Adapter&diff=30662ThinkPad 11a/b/g Wireless LAN Mini Express Adapter2007-06-24T20:26:18Z<p>Owenh: /* ThinkPads this card may be found in */</p>
<hr />
<div>__NOTOC__<br />
{| width="100%"<br />
|style="vertical-align:top" |<br />
<div style="margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;"><br />
=== ThinkPad 11a/b/g Wireless LAN Mini Express Adapter ===<br />
This is a WiFi Adapter that is installed in a Mini-PCI Express slot<br />
<br />
=== Features ===<br />
* Chipset: Atheros AR5006EX (As printed on card AR5BXB6)<br />
* Integrated Mac Processor and Radio Chip: Atheros 5424<br />
* IEEE Standards: 802.11a, 802.11b, 802.11g<br />
* PCI ID: 168c:1014<br />
</div><br />
|style="vertical-align:top" |<br />
[[image:Atheros_mini_express_wifi(thumbnail).jpg|Atheros mini-PCIe WiFi Adapter]]<br />
|}<br />
<br />
=== IBM Partnumbers ===<br />
IBM Option PN (US): 40Y7026<br />
<br />
=== Linux WiFi driver ===<br />
Use the [[Madwifi]] driver. This driver has support for Atheros rev 0x0024 support since svn revision 2360.<br />
<br />
OR (not recommended)<br />
<br />
get the driver from http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-52527 and use ndiswrapper<br />
<br />
=== Hardware switch ===<br />
<br />
Some ThinkPads have a hardware switch that must be in the '''on''' position for the radio to work, regardless of driver state:<br />
<br />
[[Image:Wireless-switch.png|(ThinkPad R60 radio switch in the ON position)]]<br />
<br />
(Note: This may not always be the case. On at least one T60, model 2007-62U with Atheros AR5212, running Ubuntu Edgy with the MadWifi driver, the wireless switch has no effect. Wireless operates with the switch in either position. But there's an [http://article.gmane.org/gmane.linux.acpi.ibm-acpi.devel/137 experimental patch] which adds support of the switch to [[ibm-acpi]].)<br />
<br />
=== ThinkPads this card may be found in ===<br />
* {{T60}}, {{T60p}}, {{T61}}<br />
* {{X60}}, {{X60s}}<br />
* {{Z60t}}, {{z61m}}<br />
<br />
=== Related Links ===<br />
* [http://www.madwifi.org MadWifi project page]<br />
* [http://madwifi.org/ticket/263 MadWifi ticket #263]<br />
* [http://forums.fedoraforum.org/showthread.php?t=126266&highlight=atheros A Guide to Installing Atheros Cards Under Fedora Linux]<br />
<br />
[[Category:Components]]</div>Owenh