<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.thinkwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=128.131.208.174</id>
	<title>ThinkWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.thinkwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=128.131.208.174"/>
	<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/wiki/Special:Contributions/128.131.208.174"/>
	<updated>2026-04-23T12:29:51Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Template:Industry_News&amp;diff=13633</id>
		<title>Template:Industry News</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Template:Industry_News&amp;diff=13633"/>
		<updated>2005-12-22T21:25:02Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;22.12.2005 [http://www.upek.com/support/dl_linux_bsp.asp Version 1.0 (final)] of the BSP for the UPEK fingerprint sensor released.&lt;br /&gt;
&lt;br /&gt;
08.12.2005 New [[fglrx]] driver version 8.20.8 released&lt;br /&gt;
&lt;br /&gt;
11.11.2005 New [[fglrx]] driver version 8.19.10 released, adds suspend and PowerPlay&lt;br /&gt;
&lt;br /&gt;
26.10.2005 New fglrx driver version 8.18.8 released&lt;br /&gt;
&lt;br /&gt;
13.10.2005: Lenovo announces new R51e to be shipping with SUN StarOffice 8.&lt;br /&gt;
&lt;br /&gt;
15.09.2005: Lenovo announces new WideScreen Z Series. Read [http://www.pcmag.com/article2/0,1895,1858628,00.asp here] and [http://news.zdnet.com/2100-1040_22-5862939.html here].&lt;br /&gt;
&lt;br /&gt;
14.09.2005: [http://www.qrivy.net/~michael/blua/upek-bsp.html Beta release] of BSP for UPEK fingerprint sensors released.&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13405</id>
		<title>Talk:SMAPI support for Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13405"/>
		<updated>2005-12-16T17:34:52Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: /* Kernel Patch? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Great, great work! Really! This completely rocks. I just stopped my battery from charging at 77% and restarted charging a bit later, no problems whatsoever. BTW, this is on kernel 2.6.14.3.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 21:25, 5 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
None of the fuctions is working on my T40, kernel 2.6.14-mm2.&lt;br /&gt;
&lt;br /&gt;
--[[User:Lammic|lammic]], 2005.12.05&lt;br /&gt;
&lt;br /&gt;
Works for me on a T41 running 2.6.12-10-686 (Ubuntu 5.10).&lt;br /&gt;
&lt;br /&gt;
--[[User:berndtnm|berndtnm]], 2005.12.06&lt;br /&gt;
&lt;br /&gt;
Including stop_charge_thresh? That one seems to be missing on the T42p.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 00:46, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
tp_smapi works just fine on an R52 with Ubuntu Breezy stock kernel.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 12:52, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''To set the thresholds for starting and stopping battery charging (in percent of current capacity):''&lt;br /&gt;
&lt;br /&gt;
'''current''' really? That'd be weird, I'd expect it to be percent of '''total''' capacity.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 14:39, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Current full charge capacity&amp;quot;, as opposed to &amp;quot;current remaining capacity&amp;quot; or &amp;quot;designed full charge capacity&amp;quot;...&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 15:05, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Battery features don't work with my T41p. I can't check this with windows. Can anybody try these features?&lt;br /&gt;
&lt;br /&gt;
-- Nils, 7 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nils, does cdrom_speed work for you on the T41p? Could you provide the details requested in the README (dmesg etc.)?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:57, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
CDRom Speed seems to work. (I see no warnings, but I have to do a speed test.) Now, I've send all outputs to the email-address in the readme.&lt;br /&gt;
&lt;br /&gt;
-- Nils, 8 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
All the features except the stop_charge_thresh seem to work here on a t42p. &lt;br /&gt;
One note, the start_charge_thresh seems to really be stop_charge_thresh. Ie, If I set that to lower than my current battery %, it will never charge, &lt;br /&gt;
and if I set it to 100 the battery charges all the way. &lt;br /&gt;
&lt;br /&gt;
--[[User:Nirik|Nirik]] 16 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nirik, &amp;quot;all the features&amp;quot; as of which version? For example, do the force_discharge{1,2} in tp_smapi 0.12 also work for you? See the table in the article page. About start_charge, that's odd. Can you send me a log of what you did, what was the result a what was the dmesg output for each operation?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 14:16, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Changing the CD speed when the CD is being accessed will hang your computer==&lt;br /&gt;
&lt;br /&gt;
I don't have this problem on my T40p. CDROM is mounted and file on CD is opened. Change speed do '''not''' hang my system.&lt;br /&gt;
&lt;br /&gt;
-- Stefan Schmidt&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
An open file looks fine if you're not reading/writing at that point. But my T43 does hangs on this:&lt;br /&gt;
 # dd if=/dev/scd0 of=/dev/null &amp;amp;&lt;br /&gt;
 # echo 1 &amp;gt; /sys/devices/platform/smapi/cdrom_speed&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 16:41, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
OK, sorry. I was to fast. My system hangs on this commands, too. :(&lt;br /&gt;
&lt;br /&gt;
-- Stefan Schmidt&lt;br /&gt;
&lt;br /&gt;
Works well. Great.&lt;br /&gt;
&lt;br /&gt;
T42 2373-8zh. Working :cdrom_speed and start_charge_thresh. Untest : inhibit_charge_minutes.&lt;br /&gt;
&lt;br /&gt;
-- Haifeng Chen&lt;br /&gt;
&lt;br /&gt;
cdrom_speed works on my T40.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Lammic|lammic]], 2005.12.09&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;thinkpad&amp;quot; module kernel compatibility ==&lt;br /&gt;
&lt;br /&gt;
Ajunge, how do you compile the &amp;quot;thinkpad&amp;quot; module compile on kernel &amp;gt;=2.6.9? The latest thinkpad version (5.8) still uses &amp;quot;get_cpu_ptr&amp;quot; and &amp;quot;set_cpu_ptr&amp;quot;, which were removed in 2.6.9.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 13:53, 10 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Kernel Patch? ==&lt;br /&gt;
&lt;br /&gt;
Hello Thinker,&lt;br /&gt;
&lt;br /&gt;
would it be possible to provide the SMAPI support as kernel patch as well? Something along the lines of: (0.12 against 2.6.15-rc5)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -Nrp drivers/acpi.orig/Kconfig drivers/acpi/Kconfig&lt;br /&gt;
*** drivers/acpi.orig/Kconfig   Thu Dec 15 19:58:21 2005&lt;br /&gt;
--- drivers/acpi/Kconfig        Fri Dec 16 10:30:51 2005&lt;br /&gt;
*************** config ACPI_IBM&lt;br /&gt;
*** 206,211 ****&lt;br /&gt;
--- 206,221 ----&lt;br /&gt;
&lt;br /&gt;
          If you have an IBM ThinkPad laptop, say Y or M here.&lt;br /&gt;
&lt;br /&gt;
+ config ACPI_IBM_SMAPI&lt;br /&gt;
+       tristate &amp;quot;IBM ThinkPad SMAPI Support&amp;quot;&lt;br /&gt;
+       depends on X86&lt;br /&gt;
+       ---help---&lt;br /&gt;
+         This adds SMAPI support on IBM ThinkPads, mostly used for battery &lt;br /&gt;
+         charge control. For more information about this driver see&lt;br /&gt;
+         &amp;lt;http://www.thinkwiki.org/wiki/SMAPI_support_for_Linux&amp;gt; .&lt;br /&gt;
+ &lt;br /&gt;
+         If you have an IBM ThinkPad laptop, say Y or M here.&lt;br /&gt;
+ &lt;br /&gt;
  config ACPI_TOSHIBA&lt;br /&gt;
        tristate &amp;quot;Toshiba Laptop Extras&amp;quot;&lt;br /&gt;
        depends on X86&lt;br /&gt;
diff -Nrp drivers/acpi.orig/Makefile drivers/acpi/Makefile&lt;br /&gt;
*** drivers/acpi.orig/Makefile  Thu Dec 15 19:58:21 2005&lt;br /&gt;
--- drivers/acpi/Makefile       Fri Dec 16 10:27:36 2005&lt;br /&gt;
*************** obj-$(CONFIG_ACPI_DEBUG)        += debug.o&lt;br /&gt;
*** 54,59 ****&lt;br /&gt;
--- 54,60 ----&lt;br /&gt;
  obj-$(CONFIG_ACPI_NUMA)               += numa.o&lt;br /&gt;
  obj-$(CONFIG_ACPI_ASUS)               += asus_acpi.o&lt;br /&gt;
  obj-$(CONFIG_ACPI_IBM)                += ibm_acpi.o&lt;br /&gt;
+ obj-$(CONFIG_ACPI_IBM_SMAPI)  += tp_smapi.o&lt;br /&gt;
  obj-$(CONFIG_ACPI_TOSHIBA)    += toshiba_acpi.o&lt;br /&gt;
  obj-y                         += scan.o motherboard.o&lt;br /&gt;
  obj-$(CONFIG_ACPI_HOTPLUG_MEMORY)     += acpi_memhotplug.o&lt;br /&gt;
diff -Nrp drivers/acpi.orig/tp_smapi.c drivers/acpi/tp_smapi.c&lt;br /&gt;
*** drivers/acpi.orig/tp_smapi.c        Thu Jan  1 01:00:00 1970&lt;br /&gt;
--- drivers/acpi/tp_smapi.c     Fri Dec 16 10:27:10 2005&lt;br /&gt;
***************&lt;br /&gt;
*** 0 ****&lt;br /&gt;
--- 1,1318 ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deleted the tp_smapi.c file at the end, out of obvious reasons, and I'm not sure about the placement in the ACPI section, OTOH there it would be found easily next to ibm_acpi.&lt;br /&gt;
&lt;br /&gt;
Providing a patch would help when recompiling the kernel often, I hate recompiling external modules every time (even got me a kernel-upgrade script to do most of it automatically). But of course it's up to you. :)&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 09:52, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I'll be glad to add this, but I don't want to go through additional manual steps in the release process (there are already quite a few). Can you add a &amp;quot;make patch&amp;quot; functionality to the Makefile, or something of the sort, to automatically generate a full patch (including tp_smapi.c) against current kernel sources?&lt;br /&gt;
&lt;br /&gt;
Also, this shouldn't be under drivers/acpi, since it doesn't use ACPI at all (that's why I didn't make it a patch to ibm_acpi). I think the right place is drivers/firmware, like the dell_rbu driver for Dell laptops.&lt;br /&gt;
&lt;br /&gt;
BTW, the convention for kernel patches is to start them once level higher:&lt;br /&gt;
  diff -Nurp kernel-2.6.14-vanilla kernel-2.6.14-patched&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 17:12, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Of course it's from the wrong level, as usual I was just lazy/inattentive. And at one point I'll remember who likes what patch format, promise. ;)&lt;br /&gt;
&lt;br /&gt;
A patch target as in &amp;quot;create a new file holding a correct diff to current kernel source&amp;quot; would be rather difficult, since line numbers might change etc., but applying the patch should be straighforward with a bit of sed. Of course I could just do that, create a patch with the diff command and then apply the new patch file in reverse. ;)&lt;br /&gt;
&lt;br /&gt;
--[[User:128.131.208.174|128.131.208.174]] 18:34, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problems_with_SATA_and_Linux&amp;diff=13452</id>
		<title>Problems with SATA and Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problems_with_SATA_and_Linux&amp;diff=13452"/>
		<updated>2005-12-15T10:55:33Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: ok, closed it on the correct paragraph&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
Some ThinkPad models use a SATA controller for the system hard disk. This causes several complications for Linux installation. The following lists these problems and known workarounds. Note that the details are often version- and distribution-specific.&lt;br /&gt;
&lt;br /&gt;
===Models using a SATA disk interface===&lt;br /&gt;
Models using a SATA controller and a SATA system disk:&lt;br /&gt;
*ThinkPad {{Z60t}}, {{Z60m}}&lt;br /&gt;
Models using a SATA controller and a PATA (IDE) system disk with a SATA-to-PATA bridge:&lt;br /&gt;
*ThinkPad {{T43}}, {{T43p}}&lt;br /&gt;
*ThinkPad {{R52}}&lt;br /&gt;
*ThinkPad {{X41}}, {{X41T}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|Some of these problems will be solved in Linux 2.6.15. See the SATA driver [http://linux.yyz.us/sata/features.html features], [http://linux.yyz.us/sata/software-status.html software status] and [http://linux.yyz.us/sata/sata-status.html hardware status].}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hang on resume from suspend to RAM==&lt;br /&gt;
&lt;br /&gt;
Linux kernels (as of 2.6.15-rc3) do not support suspend and resume for SATA devices. As a result, the machine hangs upon the first disk access after resume. A kernel patch ([http://marc.theaimsgroup.com/?l=linux-kernel&amp;amp;m=111504542402455&amp;amp;w=2 LKML posting]) fixes this by adding SATA power management support.&lt;br /&gt;
&lt;br /&gt;
===Patches===&lt;br /&gt;
* [http://shamrock.dyndns.org/~ln/linux/sata_pm.2.6.12.diff Patch for kernel 2.6.12]&lt;br /&gt;
* [http://shamrock.dyndns.org/~ln/linux/sata_pm.2.6.13-rc5.diff Patch for kernel 2.6.13-rc5]&lt;br /&gt;
* [http://lkml.org/lkml/2005/9/23/97 Patch for kernel 2.6.14]&lt;br /&gt;
* [http://www.xenotime.net/linux/SATA/2.6.15-rc/libata_suspend.patch Patch for kernel 2.6.15-rc4]&lt;br /&gt;
&lt;br /&gt;
Some distributions already include this patch (e.g., {{Ubuntu}} Breezy), but some don't (e.g., {{Fedora}} 4).&lt;br /&gt;
&lt;br /&gt;
===Links===&lt;br /&gt;
* RedHat Bugzilla [https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=169201 bug 169201: &amp;quot;SATA drives fail on laptop suspend&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==Failed resume from suspend to disk==&lt;br /&gt;
&lt;br /&gt;
Suspend to disk (using swsusp or [[Software Suspend 2]]) needs to load the memory image from the SATA disk. For this to work, you either need an initrd with all the necessary SATA modules, or the SATA drivers compiled into the kernel.&lt;br /&gt;
&lt;br /&gt;
==DVD drive not recognized==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; SATA driver grabs ownership over the IDE ports when it is loaded, but (by default) does not support PATA ATAPI devices such as the Ultrabay optical drives. Thus, if the &amp;lt;tt&amp;gt;ide&amp;lt;/tt&amp;gt; driver is compiled as a module and loaded after &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt;, the DVD drive will not be recognized by either driver.&lt;br /&gt;
&lt;br /&gt;
Either of the following configurations will work:&lt;br /&gt;
* For kernel 2.6.14 and newer: enable ATAPI support in the SATA system using {{bootparm|libata.atapi_enabled|1}} (see below; this is experimental).&lt;br /&gt;
* Compile IDE into the kernel (non-module).&lt;br /&gt;
* Compile both IDE and SATA as modules and make sure IDE is loaded first (the module is called 'ide_generic').&lt;br /&gt;
&lt;br /&gt;
Note that the optical drive must be in the Ultrabay during system boot (Ultrabay device swapping is currently unsupported).&lt;br /&gt;
&lt;br /&gt;
==No DMA on DVD drive==&lt;br /&gt;
&lt;br /&gt;
Using the IDE driver, DMA support cannot be enabled on an Ultrabay optical drive:&lt;br /&gt;
&lt;br /&gt;
 # hdparm -d1 /dev/hdc&lt;br /&gt;
 &lt;br /&gt;
 /dev/hdc:&lt;br /&gt;
  setting using_dma to 1 (on)&lt;br /&gt;
  HDIO_SET_DMA failed: Operation not permitted&lt;br /&gt;
  using_dma    =  0 (off)&lt;br /&gt;
&lt;br /&gt;
As a result, the optical drive is slow, and in particular, too slow to play video DVDs.&lt;br /&gt;
&lt;br /&gt;
One workaround is to use employ the SATA driver (instead of the IDE driver) for the optical drive. This requires enabling two featues of the SATA driver, namely ATAPI support and PATA support, which are both in active development and far from stable. Using this will probably devour all your data and go on to eat all the food in your fridge. But if you have full backups and an empty fridge, do the following:&lt;br /&gt;
&lt;br /&gt;
* Grab the latest kernel (must be 2.6.14 or newer; the relevant code is under active development).&lt;br /&gt;
* Do one of the following:&lt;br /&gt;
** Configure the SATA system (and in particular &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libata&amp;lt;/tt&amp;gt;) as built-in and add {{bootparm|libata.atapi_enabled|1}} to your kernel command line (e.g., in in {{path|/boot/grub/menu.lst}}).&lt;br /&gt;
** Configure the SATA system as module (this is often the default) and add &amp;quot;&amp;lt;tt&amp;gt;options libata atapi_enabled=1&amp;lt;/tt&amp;gt;&amp;quot; to your {{path|/etc/modprobe.conf}} (or the equivalent in your distribution).&lt;br /&gt;
* Do one of the following:&lt;br /&gt;
** Disable the IDE system.&lt;br /&gt;
** Build the IDE driver as built-in (this is often the default) and add the {{bootparm|hdc|noprobe}} kernel argument (e.g., in in {{path|/boot/grub/menu.lst}}).&lt;br /&gt;
** Build the IDE driver as module and add &amp;quot;&amp;lt;tt&amp;gt;options ide hdc=noprobe&amp;lt;/tt&amp;gt;&amp;quot; to your {{path|/etc/modprobe.conf}} (or the equivalent in your distribution).&lt;br /&gt;
* If you chose to use modules above, regenerate your &amp;lt;tt&amp;gt;initrd&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
If this doesn't work, use {{cmd|lspci -vn|}} to check whether one of the following chipsets is used in the Thinkpad:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!PCI ID &lt;br /&gt;
!Name&lt;br /&gt;
|-&lt;br /&gt;
|8086:7111&lt;br /&gt;
|Intel 82371AB/EB/MB PIIX4 IDE&lt;br /&gt;
|-&lt;br /&gt;
|8086:24db&lt;br /&gt;
|Intel 82801EB/ER (ICH5/ICH5R) IDE Controller&lt;br /&gt;
|-&lt;br /&gt;
|8086:25a2&lt;br /&gt;
|Intel 6300ESB PATA Storage Controller&lt;br /&gt;
|}&lt;br /&gt;
If yes, enable support for these chipsets has to be enabled by setting&lt;br /&gt;
 #define ATA_ENABLE_PATA&lt;br /&gt;
in {{path|include/linux/libata.h}} (and report your ThinkPad model in the discussion page).&lt;br /&gt;
&lt;br /&gt;
There have been reports that DVD burning doesn't work under this configuration, but it seems to work with kernel 2.6.14 and later (tested on a ThinkPad {{T43}} and {{T43p}} with a [[UltraBay Slim DVD Multi-Burner Plus]]).&lt;br /&gt;
&lt;br /&gt;
===Links===&lt;br /&gt;
* RedHat Bugzilla [https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=163418 bug 163418: &amp;quot;can't enable DMA on DVD drive&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==No DMA on system hard disk==&lt;br /&gt;
&lt;br /&gt;
In some Linux kernels, both the SATA driver and the IDE driver can handle the system hard disk. With the SATA driver, it shows as {{path|/dev/sda}} and DMA is enabled. With the IDE driver, it shows as {{path|/dev/hda}} and DMA is disabled.&lt;br /&gt;
&lt;br /&gt;
The simplest way to enable DMA is to force the IDE driver to ignore the system hard disk by passing the {{bootparm|hda|noprobe}} kernel argument. The driver will then be handled by the SATA driver. Note that this will change its device name to {{path|/dev/sda}} (which may require changes in {{path|/etc/fstab}} and the boot loader) and may cause other problems as listed above.&lt;br /&gt;
&lt;br /&gt;
(Observed on a ThinkPad T43 with Fedora Core kernel 2.6.13-1.1526_FC4.)&lt;br /&gt;
&lt;br /&gt;
==No SMART support==&lt;br /&gt;
&lt;br /&gt;
Prior to kernel 2.6.15, the Linux SATA system did not support SMART commands (e.g., via smartctl).&lt;br /&gt;
&lt;br /&gt;
The capability was incorporated into Linux 2.6.15-rc1, and a patch is available for older kernels:&lt;br /&gt;
* Kernel 2.6.12: http://rtr.ca/dell_i9300/kernel/kernel-2.6.12/03_libata_passthru.patch&lt;br /&gt;
* Kernel 2.6.13: http://rtr.ca/dell_i9300/kernel/kernel-2.6.13/02_libata_passthru.patch&lt;br /&gt;
* Kernel 2.6.14 with the above suspend-to-RAM patch:  http://linux.spiney.org/system/files?file=02_libata_passthru.fixed.patch&lt;br /&gt;
** 02_libata_passthru.fixed.patch is not appling correctly on newer kernels than 2.6.13. Here is the fixed patch: http://www.foo.fh-furtwangen.de/~koenigr/02_libata_passthru.fixed.again.patch&lt;br /&gt;
&lt;br /&gt;
After applying the patch, run smartctl with the &amp;quot;-d ata&amp;quot; parameter:&lt;br /&gt;
:{{cmdroot|smartctl -d ata -a /dev/sda}}&lt;br /&gt;
&lt;br /&gt;
==No disk power management==&lt;br /&gt;
&lt;br /&gt;
Prior to kernel 2.6.15, the Linux SATA system did not support power management commands on these models.&lt;br /&gt;
&lt;br /&gt;
The above patches for SMART support resolves this, and in particular enables the following commands:&lt;br /&gt;
* {{cmdroot|hdparm -y}} (spin down)&lt;br /&gt;
* {{cmdroot|hdparm -S num}} (automatic spin down timeout)&lt;br /&gt;
* {{cmdroot|hdparm -B num}} (advanced power management level)&lt;br /&gt;
Note that this command is still rejected:&lt;br /&gt;
* {{cmdroot|hdparm -M num}} (acoustic management)&lt;br /&gt;
(Tested with patched kernels 2.6.13.1 and 2.6.12-4 and a 60GB 7200RPM disk model HTS726060M9AT00.)&lt;br /&gt;
&lt;br /&gt;
Note that even when [[Laptop-mode]] is used, the &amp;quot;hddtemp&amp;quot; daemon (as shipped with Fedora Core 4) will wake up the disk every minute, and must thus be disabled for power management to be effective. Its accesses are not visibile through the {{path|/proc/sys/vm/block_dump}} facility. It is unclear whether disk temperature can be monitored without causing the disk to spin up (on the {{T43}}, none of the {{path|/proc/acpi/ibm/thermal}} values corresponds to the disk's built-in temperature sensor).&lt;br /&gt;
&lt;br /&gt;
==No disk information==&lt;br /&gt;
&lt;br /&gt;
Prior to kernel 2.6.15, on these models the disk information could not be read by the standard commands such as:&lt;br /&gt;
*{{cmdroot|hdparm -i /dev/sda}}&lt;br /&gt;
*{{cmdroot|hdparm -I /dev/sda}}&lt;br /&gt;
The latter is fixed by the above patch for SMART support.&lt;br /&gt;
&lt;br /&gt;
==No swapping of UltraBay device==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;libata&amp;lt;/tt&amp;gt; driver does not yet hot-swapping (or warm-swapping) of PATA devices. If you use a DVD or 2nd PATA HDD via the &amp;lt;tt&amp;gt;libata&amp;lt;/tt&amp;gt; (SATA) driver, to swap them in or out you must power down the machine.&lt;br /&gt;
&lt;br /&gt;
If you use the &amp;lt;tt&amp;gt;ide&amp;lt;/tt&amp;gt; driver for a PATA UltraBay device, hot-swapping might work using &amp;lt;tt&amp;gt;hdparm&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;idectl&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;hotswap&amp;lt;/tt&amp;gt; (please report). However, DMA will be disabled on these models (see above).&lt;br /&gt;
&lt;br /&gt;
If you use a SATA device in the UltraBay, &amp;lt;tt&amp;gt;libata&amp;lt;/tt&amp;gt; hot-swapping might work (please report).&lt;br /&gt;
&lt;br /&gt;
Swapping of the [[UltraBay Slim Battery]] does work.&lt;br /&gt;
&lt;br /&gt;
==BIOS error 2010 on user-installed hard disk==&lt;br /&gt;
&lt;br /&gt;
While not a Linux issue, note that there is an issue with installing alternative PATA (IDE) hard disks as the system drive. Unless the disk is one of the few approved disks listed inside the BIOS, you will get an BIOS error 2010 during system boot, and the disk may operate unreliably. See [[Problem with non-ThinkPad hard disks]].&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problems_with_SATA_and_Linux&amp;diff=13299</id>
		<title>Problems with SATA and Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problems_with_SATA_and_Linux&amp;diff=13299"/>
		<updated>2005-12-15T10:53:57Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: fix layout (closed table)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
Some ThinkPad models use a SATA controller for the system hard disk. This causes several complications for Linux installation. The following lists these problems and known workarounds. Note that the details are often version- and distribution-specific.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Models using a SATA disk interface===&lt;br /&gt;
Models using a SATA controller and a SATA system disk:&lt;br /&gt;
*ThinkPad {{Z60t}}, {{Z60m}}&lt;br /&gt;
Models using a SATA controller and a PATA (IDE) system disk with a SATA-to-PATA bridge:&lt;br /&gt;
*ThinkPad {{T43}}, {{T43p}}&lt;br /&gt;
*ThinkPad {{R52}}&lt;br /&gt;
*ThinkPad {{X41}}, {{X41T}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|Some of these problems will be solved in Linux 2.6.15. See the SATA driver [http://linux.yyz.us/sata/features.html features], [http://linux.yyz.us/sata/software-status.html software status] and [http://linux.yyz.us/sata/sata-status.html hardware status].}}&lt;br /&gt;
&lt;br /&gt;
==Hang on resume from suspend to RAM==&lt;br /&gt;
&lt;br /&gt;
Linux kernels (as of 2.6.15-rc3) do not support suspend and resume for SATA devices. As a result, the machine hangs upon the first disk access after resume. A kernel patch ([http://marc.theaimsgroup.com/?l=linux-kernel&amp;amp;m=111504542402455&amp;amp;w=2 LKML posting]) fixes this by adding SATA power management support.&lt;br /&gt;
&lt;br /&gt;
===Patches===&lt;br /&gt;
* [http://shamrock.dyndns.org/~ln/linux/sata_pm.2.6.12.diff Patch for kernel 2.6.12]&lt;br /&gt;
* [http://shamrock.dyndns.org/~ln/linux/sata_pm.2.6.13-rc5.diff Patch for kernel 2.6.13-rc5]&lt;br /&gt;
* [http://lkml.org/lkml/2005/9/23/97 Patch for kernel 2.6.14]&lt;br /&gt;
* [http://www.xenotime.net/linux/SATA/2.6.15-rc/libata_suspend.patch Patch for kernel 2.6.15-rc4]&lt;br /&gt;
&lt;br /&gt;
Some distributions already include this patch (e.g., {{Ubuntu}} Breezy), but some don't (e.g., {{Fedora}} 4).&lt;br /&gt;
&lt;br /&gt;
===Links===&lt;br /&gt;
* RedHat Bugzilla [https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=169201 bug 169201: &amp;quot;SATA drives fail on laptop suspend&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==Failed resume from suspend to disk==&lt;br /&gt;
&lt;br /&gt;
Suspend to disk (using swsusp or [[Software Suspend 2]]) needs to load the memory image from the SATA disk. For this to work, you either need an initrd with all the necessary SATA modules, or the SATA drivers compiled into the kernel.&lt;br /&gt;
&lt;br /&gt;
==DVD drive not recognized==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; SATA driver grabs ownership over the IDE ports when it is loaded, but (by default) does not support PATA ATAPI devices such as the Ultrabay optical drives. Thus, if the &amp;lt;tt&amp;gt;ide&amp;lt;/tt&amp;gt; driver is compiled as a module and loaded after &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt;, the DVD drive will not be recognized by either driver.&lt;br /&gt;
&lt;br /&gt;
Either of the following configurations will work:&lt;br /&gt;
* For kernel 2.6.14 and newer: enable ATAPI support in the SATA system using {{bootparm|libata.atapi_enabled|1}} (see below; this is experimental).&lt;br /&gt;
* Compile IDE into the kernel (non-module).&lt;br /&gt;
* Compile both IDE and SATA as modules and make sure IDE is loaded first (the module is called 'ide_generic').&lt;br /&gt;
&lt;br /&gt;
Note that the optical drive must be in the Ultrabay during system boot (Ultrabay device swapping is currently unsupported).&lt;br /&gt;
&lt;br /&gt;
==No DMA on DVD drive==&lt;br /&gt;
&lt;br /&gt;
Using the IDE driver, DMA support cannot be enabled on an Ultrabay optical drive:&lt;br /&gt;
&lt;br /&gt;
 # hdparm -d1 /dev/hdc&lt;br /&gt;
 &lt;br /&gt;
 /dev/hdc:&lt;br /&gt;
  setting using_dma to 1 (on)&lt;br /&gt;
  HDIO_SET_DMA failed: Operation not permitted&lt;br /&gt;
  using_dma    =  0 (off)&lt;br /&gt;
&lt;br /&gt;
As a result, the optical drive is slow, and in particular, too slow to play video DVDs.&lt;br /&gt;
&lt;br /&gt;
One workaround is to use employ the SATA driver (instead of the IDE driver) for the optical drive. This requires enabling two featues of the SATA driver, namely ATAPI support and PATA support, which are both in active development and far from stable. Using this will probably devour all your data and go on to eat all the food in your fridge. But if you have full backups and an empty fridge, do the following:&lt;br /&gt;
&lt;br /&gt;
* Grab the latest kernel (must be 2.6.14 or newer; the relevant code is under active development).&lt;br /&gt;
* Do one of the following:&lt;br /&gt;
** Configure the SATA system (and in particular &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libata&amp;lt;/tt&amp;gt;) as built-in and add {{bootparm|libata.atapi_enabled|1}} to your kernel command line (e.g., in in {{path|/boot/grub/menu.lst}}).&lt;br /&gt;
** Configure the SATA system as module (this is often the default) and add &amp;quot;&amp;lt;tt&amp;gt;options libata atapi_enabled=1&amp;lt;/tt&amp;gt;&amp;quot; to your {{path|/etc/modprobe.conf}} (or the equivalent in your distribution).&lt;br /&gt;
* Do one of the following:&lt;br /&gt;
** Disable the IDE system.&lt;br /&gt;
** Build the IDE driver as built-in (this is often the default) and add the {{bootparm|hdc|noprobe}} kernel argument (e.g., in in {{path|/boot/grub/menu.lst}}).&lt;br /&gt;
** Build the IDE driver as module and add &amp;quot;&amp;lt;tt&amp;gt;options ide hdc=noprobe&amp;lt;/tt&amp;gt;&amp;quot; to your {{path|/etc/modprobe.conf}} (or the equivalent in your distribution).&lt;br /&gt;
* If you chose to use modules above, regenerate your &amp;lt;tt&amp;gt;initrd&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
If this doesn't work, use {{cmd|lspci -vn|}} to check whether one of the following chipsets is used in the Thinkpad:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!PCI ID &lt;br /&gt;
!Name&lt;br /&gt;
|-&lt;br /&gt;
|8086:7111&lt;br /&gt;
|Intel 82371AB/EB/MB PIIX4 IDE&lt;br /&gt;
|-&lt;br /&gt;
|8086:24db&lt;br /&gt;
|Intel 82801EB/ER (ICH5/ICH5R) IDE Controller&lt;br /&gt;
|-&lt;br /&gt;
|8086:25a2&lt;br /&gt;
|Intel 6300ESB PATA Storage Controller&lt;br /&gt;
|}&lt;br /&gt;
If yes, enable support for these chipsets has to be enabled by setting&lt;br /&gt;
 #define ATA_ENABLE_PATA&lt;br /&gt;
in {{path|include/linux/libata.h}} (and report your ThinkPad model in the discussion page).&lt;br /&gt;
&lt;br /&gt;
There have been reports that DVD burning doesn't work under this configuration, but it seems to work with kernel 2.6.14 and later (tested on a ThinkPad {{T43}} and {{T43p}} with a [[UltraBay Slim DVD Multi-Burner Plus]]).&lt;br /&gt;
&lt;br /&gt;
===Links===&lt;br /&gt;
* RedHat Bugzilla [https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=163418 bug 163418: &amp;quot;can't enable DMA on DVD drive&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==No DMA on system hard disk==&lt;br /&gt;
&lt;br /&gt;
In some Linux kernels, both the SATA driver and the IDE driver can handle the system hard disk. With the SATA driver, it shows as {{path|/dev/sda}} and DMA is enabled. With the IDE driver, it shows as {{path|/dev/hda}} and DMA is disabled.&lt;br /&gt;
&lt;br /&gt;
The simplest way to enable DMA is to force the IDE driver to ignore the system hard disk by passing the {{bootparm|hda|noprobe}} kernel argument. The driver will then be handled by the SATA driver. Note that this will change its device name to {{path|/dev/sda}} (which may require changes in {{path|/etc/fstab}} and the boot loader) and may cause other problems as listed above.&lt;br /&gt;
&lt;br /&gt;
(Observed on a ThinkPad T43 with Fedora Core kernel 2.6.13-1.1526_FC4.)&lt;br /&gt;
&lt;br /&gt;
==No SMART support==&lt;br /&gt;
&lt;br /&gt;
Prior to kernel 2.6.15, the Linux SATA system did not support SMART commands (e.g., via smartctl).&lt;br /&gt;
&lt;br /&gt;
The capability was incorporated into Linux 2.6.15-rc1, and a patch is available for older kernels:&lt;br /&gt;
* Kernel 2.6.12: http://rtr.ca/dell_i9300/kernel/kernel-2.6.12/03_libata_passthru.patch&lt;br /&gt;
* Kernel 2.6.13: http://rtr.ca/dell_i9300/kernel/kernel-2.6.13/02_libata_passthru.patch&lt;br /&gt;
* Kernel 2.6.14 with the above suspend-to-RAM patch:  http://linux.spiney.org/system/files?file=02_libata_passthru.fixed.patch&lt;br /&gt;
** 02_libata_passthru.fixed.patch is not appling correctly on newer kernels than 2.6.13. Here is the fixed patch: http://www.foo.fh-furtwangen.de/~koenigr/02_libata_passthru.fixed.again.patch&lt;br /&gt;
&lt;br /&gt;
After applying the patch, run smartctl with the &amp;quot;-d ata&amp;quot; parameter:&lt;br /&gt;
:{{cmdroot|smartctl -d ata -a /dev/sda}}&lt;br /&gt;
&lt;br /&gt;
==No disk power management==&lt;br /&gt;
&lt;br /&gt;
Prior to kernel 2.6.15, the Linux SATA system did not support power management commands on these models.&lt;br /&gt;
&lt;br /&gt;
The above patches for SMART support resolves this, and in particular enables the following commands:&lt;br /&gt;
* {{cmdroot|hdparm -y}} (spin down)&lt;br /&gt;
* {{cmdroot|hdparm -S num}} (automatic spin down timeout)&lt;br /&gt;
* {{cmdroot|hdparm -B num}} (advanced power management level)&lt;br /&gt;
Note that this command is still rejected:&lt;br /&gt;
* {{cmdroot|hdparm -M num}} (acoustic management)&lt;br /&gt;
(Tested with patched kernels 2.6.13.1 and 2.6.12-4 and a 60GB 7200RPM disk model HTS726060M9AT00.)&lt;br /&gt;
&lt;br /&gt;
Note that even when [[Laptop-mode]] is used, the &amp;quot;hddtemp&amp;quot; daemon (as shipped with Fedora Core 4) will wake up the disk every minute, and must thus be disabled for power management to be effective. Its accesses are not visibile through the {{path|/proc/sys/vm/block_dump}} facility. It is unclear whether disk temperature can be monitored without causing the disk to spin up (on the {{T43}}, none of the {{path|/proc/acpi/ibm/thermal}} values corresponds to the disk's built-in temperature sensor).&lt;br /&gt;
&lt;br /&gt;
==No disk information==&lt;br /&gt;
&lt;br /&gt;
Prior to kernel 2.6.15, on these models the disk information could not be read by the standard commands such as:&lt;br /&gt;
*{{cmdroot|hdparm -i /dev/sda}}&lt;br /&gt;
*{{cmdroot|hdparm -I /dev/sda}}&lt;br /&gt;
The latter is fixed by the above patch for SMART support.&lt;br /&gt;
&lt;br /&gt;
==No swapping of UltraBay device==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;libata&amp;lt;/tt&amp;gt; driver does not yet hot-swapping (or warm-swapping) of PATA devices. If you use a DVD or 2nd PATA HDD via the &amp;lt;tt&amp;gt;libata&amp;lt;/tt&amp;gt; (SATA) driver, to swap them in or out you must power down the machine.&lt;br /&gt;
&lt;br /&gt;
If you use the &amp;lt;tt&amp;gt;ide&amp;lt;/tt&amp;gt; driver for a PATA UltraBay device, hot-swapping might work using &amp;lt;tt&amp;gt;hdparm&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;idectl&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;hotswap&amp;lt;/tt&amp;gt; (please report). However, DMA will be disabled on these models (see above).&lt;br /&gt;
&lt;br /&gt;
If you use a SATA device in the UltraBay, &amp;lt;tt&amp;gt;libata&amp;lt;/tt&amp;gt; hot-swapping might work (please report).&lt;br /&gt;
&lt;br /&gt;
Swapping of the [[UltraBay Slim Battery]] does work.&lt;br /&gt;
&lt;br /&gt;
==BIOS error 2010 on user-installed hard disk==&lt;br /&gt;
&lt;br /&gt;
While not a Linux issue, note that there is an issue with installing alternative PATA (IDE) hard disks as the system drive. Unless the disk is one of the few approved disks listed inside the BIOS, you will get an BIOS error 2010 during system boot, and the disk may operate unreliably. See [[Problem with non-ThinkPad hard disks]].&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=SMAPI_support_for_Linux&amp;diff=13205</id>
		<title>SMAPI support for Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=SMAPI_support_for_Linux&amp;diff=13205"/>
		<updated>2005-12-13T16:01:59Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: /* Model-specific status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ThinkPad laptops include a proprietary interface called SMAPI BIOS (System Management Application Program Interface) which provides some&lt;br /&gt;
hardware control functionality that is not exposed by any other interface (e.g., ACPI).&lt;br /&gt;
&lt;br /&gt;
The SMAPI interfaces changes a lot between models, and is poorly documented, so Linux support is not exhaustive for most models. There are currently two SMAPI access mechanisms available: &amp;lt;tt&amp;gt;thinkpad&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;tpctl&amp;lt;/tt&amp;gt; for older ThinkPads, and &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; for newer ones.&lt;br /&gt;
&lt;br /&gt;
{{WARN|These drivers use undocumented features and direct hardware access. They thus cannot be guaranteed to work, and may cause arbitrary damage&lt;br /&gt;
(especially on models they weren't tested on).}}&lt;br /&gt;
&lt;br /&gt;
==Using the &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; module==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module exposes some features of the SMAPI BIOS found on recent ThinkPads via a sysfs interface. Currently, the  implemented functionality is control of battery charging (this is useful for [[Maintenance#Battery_Treatment|increasing battery lifetime]] or for using a leftover under-spec power supply that can't handle the combined power draw of running and charging), and control of CD/DVD speed.&lt;br /&gt;
&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to donwnload only the [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=171579 tp_smapi kernel module].&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
&lt;br /&gt;
To compile and load the module:&lt;br /&gt;
&lt;br /&gt;
 # tar xzvf tp_smapi-0.09.tgz&lt;br /&gt;
 # cd tp_smapi-0.09&lt;br /&gt;
 # make load&lt;br /&gt;
&lt;br /&gt;
To install permanently (optional):&lt;br /&gt;
&lt;br /&gt;
 # make install&lt;br /&gt;
 # modprobe tp_smapi&lt;br /&gt;
&lt;br /&gt;
====Battery charge control features====&lt;br /&gt;
&lt;br /&gt;
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):&lt;br /&gt;
&lt;br /&gt;
 # echo 40 &amp;gt; /sys/devices/platform/smapi/BAT0/start_charge_thresh&lt;br /&gt;
 # echo 70 &amp;gt; /sys/devices/platform/smapi/BAT0/stop_charge_thresh&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/*_charge_thresh&lt;br /&gt;
 40 &lt;br /&gt;
 70&lt;br /&gt;
&lt;br /&gt;
To unconditionally inhibit charging for 17 minutes:&lt;br /&gt;
&lt;br /&gt;
 # echo 17 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes&lt;br /&gt;
&lt;br /&gt;
To cancel charge inhibiting:&lt;br /&gt;
&lt;br /&gt;
 # echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes&lt;br /&gt;
&lt;br /&gt;
====Battery status features====&lt;br /&gt;
&lt;br /&gt;
To view exteded battery status (see below about conflict with &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/installed&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/cycle_count&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/current1 &lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/current2&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/last_full_capacity&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/remaining_capacity&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/design_capacity&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/voltage&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/design_voltage&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/manufacturer&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/model&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/serial&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/barcoding &lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/chemistry&lt;br /&gt;
 # cat /sys/devices/platform/smapi/ac_connected&lt;br /&gt;
&lt;br /&gt;
The raw status data, including some fields not in the above (in case&lt;br /&gt;
you can figure them out):&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/devices/platform/smapi/BAT0/dump  &lt;br /&gt;
&lt;br /&gt;
In all of the above, replace &amp;lt;tt&amp;gt;BAT0&amp;lt;/tt&amp;gt; with &amp;lt;tt&amp;gt;BAT1&amp;lt;/tt&amp;gt; to address the 2nd battery.&lt;br /&gt;
&lt;br /&gt;
====Optical drive control features====&lt;br /&gt;
&lt;br /&gt;
To control the speed of the optical drive:&lt;br /&gt;
{{WARN|Changing the CD speed simultaneously with a read or write to the CD will '''hang your computer'''. The &amp;lt;tt&amp;gt;hdparm -E&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;eject -x&amp;lt;/tt&amp;gt; commands might also work for you, and are safer (but have no effect on some models, such as ThinkPad 43).&amp;lt;br /&amp;gt;''Kernel hackers: if you know how to obtain locks that temporarily prevents the &amp;lt;tt&amp;gt;ide&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt;+&amp;lt;tt&amp;gt;libata&amp;lt;/tt&amp;gt; drivers from touching the drive, or at least how to check whether an ATAPI device is being accessed, please [[Talk:SMAPI support for Linux|tell the author]].''}}&lt;br /&gt;
 # echo 0 &amp;gt; /sys/devices/platform/smapi/cdrom_speed # slow&lt;br /&gt;
 # echo 1 &amp;gt; /sys/devices/platform/smapi/cdrom_speed # medium&lt;br /&gt;
 # echo 2 &amp;gt; /sys/devices/platform/smapi/cdrom_speed # fast&lt;br /&gt;
 # cat /sys/devices/platform/smapi/cdrom_speed&lt;br /&gt;
 2&lt;br /&gt;
&lt;br /&gt;
====Other features====&lt;br /&gt;
&lt;br /&gt;
Other things that can be controlled through SMAPI, but are not supported in this version of the driver, include forcing battery discharge, PCI bus power saving, CPU power saving control and fan control. See the included README file for more information.&lt;br /&gt;
&lt;br /&gt;
====Conflict with &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
The extended battery status function conflicts with the [[HDAPS|hdaps]] kernel module (they use the same IO ports). If you load &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; first, &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; will disable its battery status functions (and log a message in the kernel log). If you load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; first, &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; will refuse to load. Use &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; to switch between the two.&lt;br /&gt;
&lt;br /&gt;
Some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}).&lt;br /&gt;
&lt;br /&gt;
The charging control files (&amp;lt;tt&amp;gt;*_charge_thresh&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;inhibit_charge_minutes&amp;lt;/tt&amp;gt;) don't have this problem.&lt;br /&gt;
&lt;br /&gt;
====Model-specific status====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; feature support matrix&lt;br /&gt;
|-&lt;br /&gt;
! &amp;amp;times; &lt;br /&gt;
! &amp;lt;tt&amp;gt;start_charge_thresh&amp;lt;/tt&amp;gt; &lt;br /&gt;
!           &amp;lt;tt&amp;gt;stop_charge_thresh&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                      &amp;lt;tt&amp;gt;inhbit_charge_minutes&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                  &amp;lt;tt&amp;gt;cdrom_speed&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                                battery status files&amp;lt;br \&amp;gt;&amp;lt;font size=&amp;quot;-2&amp;quot;&amp;gt;(see notice about &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; above)&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! {{G41}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cunk}}&lt;br /&gt;
|-&lt;br /&gt;
! {{R40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}}&lt;br /&gt;
|-&lt;br /&gt;
! {{R50p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}}&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}}&lt;br /&gt;
|-&lt;br /&gt;
! {{R52}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}}&lt;br /&gt;
|-&lt;br /&gt;
! {{T40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}}&lt;br /&gt;
|-&lt;br /&gt;
! {{T40p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cyes}}&lt;br /&gt;
|-&lt;br /&gt;
! {{T41}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}}&lt;br /&gt;
|-&lt;br /&gt;
! {{T41p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}}&lt;br /&gt;
|-&lt;br /&gt;
! {{T42}}&lt;br /&gt;
| {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}}&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}}&lt;br /&gt;
|-&lt;br /&gt;
! {{T43}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}}&lt;br /&gt;
|-&lt;br /&gt;
! {{T43p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}}&lt;br /&gt;
|-&lt;br /&gt;
! {{X31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}}&lt;br /&gt;
|-&lt;br /&gt;
! {{X32}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}}&lt;br /&gt;
|-&lt;br /&gt;
! {{X40}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}}&lt;br /&gt;
|-&lt;br /&gt;
! {{X41}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:SMAPI support for Linux|discussion]] page. If the module loads but gives a &amp;quot;&amp;lt;tt&amp;gt;not supported&amp;lt;/tt&amp;gt;&amp;quot; or &amp;quot;&amp;lt;tt&amp;gt;not implementeded&amp;lt;/tt&amp;gt;&amp;quot; when you try to use some specific file in {{path|/sys/devices/platform/smapi/}}, please report the &amp;lt;tt&amp;gt;dmesg&amp;lt;/tt&amp;gt; output and whether the corresponding functionality is available under Windows - maybe your ThinkPad just can't do that.&lt;br /&gt;
&lt;br /&gt;
==Using the &amp;lt;tt&amp;gt;thinkpad&amp;lt;/tt&amp;gt; module==&lt;br /&gt;
&lt;br /&gt;
This solution consists of a module, called &amp;lt;tt&amp;gt;thinkpad&amp;lt;/tt&amp;gt;, and a user-space tool caled &amp;lt;tt&amp;gt;tpctl&amp;lt;/tt&amp;gt;. It provides very rich functionality for older ThinkPads, but on newer ThinkPads much of this functionality is exposed and supported through an ACPI interface and the SMAPI access does not work anymore. Kernel 2.6.9 and newer is unsupported; for kernel 2.6.3 and newer you need &amp;lt;tt&amp;gt;tpctl&amp;lt;/tt&amp;gt; &amp;gt;=4.14 and &amp;lt;tt&amp;gt;thinkpad &amp;lt;/tt&amp;gt; &amp;gt;=5.5. For details, see the [http://tpctl.sourceforge.net/README README] and [http://tpctl.sourceforge.net/SUPPORTED-MODELS list of supported models].&lt;br /&gt;
&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to download the [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=29354t thinkpad module] and [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=1204 tpctl userspace tool].&lt;br /&gt;
* There is also an optional GUI: [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=99929 configure-thinkpad].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tools]] [[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:TuxOnIce&amp;diff=12094</id>
		<title>Talk:TuxOnIce</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:TuxOnIce&amp;diff=12094"/>
		<updated>2005-11-10T11:50:33Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: /* Suspend2 + SATA resume on 2.6.14? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Suspend2 + SATA resume on 2.6.14?==&lt;br /&gt;
&lt;br /&gt;
Anyone got suspend-to-RAM (with the 3rd patch from [[Problems with SATA and Linux]]) and Suspend2 working with kernel 2.6.14? It's &amp;quot;either, or&amp;quot; for me, when using both patches I get rather nasty looking kernel oops when hibernating...&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 08:03, 10 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Yes, it works fine for me on a T43. Are you using the latest Suspend2? Did you try hibernating from single mode, or even from &amp;lt;tt&amp;gt;init=/bin/sh&amp;lt;/tt&amp;gt; mode, to make sure it's not a driver issue?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 11:59, 10 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Yes, latest 2.2-rc9 for 2.6.14. Basically it works, the notebook just doesn't power off at the end of suspending, but when running with all the debugging options turned on I got an oops in xfsbufd, so maybe it has something to do with me using xfs. What filesystem types are you using?&lt;br /&gt;
&lt;br /&gt;
Haven't retried after that, bit scared about losing data, don't have time to reinstall everything atm. Once I got a bit more spare time I'll give it another go. suspend 2.1.9.5 for 2.6.12 worked fine, so I suppose it's not driver issue.&lt;br /&gt;
&lt;br /&gt;
--[[User:128.131.208.174|128.131.208.174]] 12:50, 10 Nov 2005 (CET)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Patch_for_controlling_fan_speed&amp;diff=11938</id>
		<title>Talk:Patch for controlling fan speed</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Patch_for_controlling_fan_speed&amp;diff=11938"/>
		<updated>2005-11-07T18:52:58Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: added script that's able to daemonize via command line option&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Windows XP port==&lt;br /&gt;
How would I port this patch to Windows XP? &lt;br /&gt;
&lt;br /&gt;
--Jason&lt;br /&gt;
&lt;br /&gt;
You can't. But you can write a Windows device driver based on the specs and [[ibm-acpi]].&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 18:54, 7 Nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
==gkrellm support==&lt;br /&gt;
&lt;br /&gt;
I can confirm that it works on Thinkpad {{T43}} here. However after&lt;br /&gt;
applying the patch, the fan speed monitor of gkrellm 2.2.7 cannot read&lt;br /&gt;
value correctly. Maybe we gkrellm is reading the second line for speed&lt;br /&gt;
but instead find the line for level, so it got confused? Would it be possible to interchange the lines so that speed still appears in the &lt;br /&gt;
second line and level appears in the third instead? I'm no coder, just &lt;br /&gt;
a suggestion to improve the patch.&lt;br /&gt;
&lt;br /&gt;
--Jiang&lt;br /&gt;
&lt;br /&gt;
I'd say it's a bug in gkrellm. It should parse the line header rather than relying on line numbers. But feel free to change (and test) the patch if you wish.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 05:14, 26 Oct 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
== patch to keep gkrell working against 2.6.14 ==&lt;br /&gt;
&lt;br /&gt;
As in &amp;quot;works for me on a T43p&amp;quot;, use with caution at your own risk. And thanks to thinker for the original patch, very nice work.&lt;br /&gt;
&lt;br /&gt;
(See article for the actual patch)&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|Spiney]]&lt;br /&gt;
&lt;br /&gt;
Looks excellent, why not add it to the article page? Also, care to provide a license (preferably public domain like my patch) so the kernel guys can handle it? Speaking of which, the kernel people seem to like their patches generated via &amp;quot;diff -up vanilla-kernel-2.6.14 patched-kernel-2.6.14&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 22:04, 1 Nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
Done, using the -p option for diff and &amp;quot;borrowing&amp;quot; your sentence for licensing purposes.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|Spiney]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Updated script for unpatched kernels ==&lt;br /&gt;
&lt;br /&gt;
A couple of command line options added, plus this version is able to daemonize and writes a pid file (to a custom location if needed). It's for an unpatched version of the kernel, since I think that's the way to go, but it should be easy to merge into the other version as well since it doesn't change any internals.&lt;br /&gt;
&lt;br /&gt;
Any feedback appreciated.&lt;br /&gt;
&lt;br /&gt;
Here we go:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script dynamically controls fan speed on some ThinkPad models&lt;br /&gt;
# according to user-defined temperature thresholds.  It implements its&lt;br /&gt;
# own decision algorithm, overriding the ThinkPad embedded&lt;br /&gt;
# controller. It also implements a workaround for the fan noise pulse&lt;br /&gt;
# experienced every few seconds on some ThinkPads.&lt;br /&gt;
#&lt;br /&gt;
# WARNING: This script relies on undocumented hardware features and&lt;br /&gt;
# overrides nominal hardware behavior. It may thus cause arbitrary&lt;br /&gt;
# damage to your laptop or data. Watch your temperatures!&lt;br /&gt;
#&lt;br /&gt;
# This file is placed in the public domain and may be freely distributed.&lt;br /&gt;
&lt;br /&gt;
LEVELS=(    0      2      4      7)  # Fan speed levels&lt;br /&gt;
UP_TEMPS=(      52     60     68  )  # Speed increase trip points&lt;br /&gt;
DOWN_TEMPS=(  48     56     64    )  # Speed decrease trip points&lt;br /&gt;
&lt;br /&gt;
ANTIPULSE=( 0      1      0      0)  # Prevent fan pulsing noise at this level&lt;br /&gt;
                                     #   (this also prevents fan speed updates)&lt;br /&gt;
&lt;br /&gt;
IBM_ACPI=/proc/acpi/ibm&lt;br /&gt;
PID_FILE=/var/run/tp-fancontrol.pid&lt;br /&gt;
INTERVAL=3&lt;br /&gt;
VERBOSE=true&lt;br /&gt;
DRY_RUN=false&lt;br /&gt;
DAEMONIZE=false&lt;br /&gt;
&lt;br /&gt;
usage() {&lt;br /&gt;
        echo &amp;quot;Usage: $0 [OPTION]...&amp;quot;&lt;br /&gt;
        echo&lt;br /&gt;
        echo &amp;quot;Available options:&amp;quot;&lt;br /&gt;
        echo &amp;quot;   -t     test mode&amp;quot;&lt;br /&gt;
        echo &amp;quot;   -q     quiet mode&amp;quot;&lt;br /&gt;
        echo &amp;quot;   -d     daemon mode, go into background, implies -q&amp;quot;&lt;br /&gt;
        echo &amp;quot;   -p     pid file location for daemon mode, default: $PID_FILE&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
set -- `getopt -u -n $0 qtdp:h &amp;quot;$@&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
while true; do&lt;br /&gt;
        case &amp;quot;$1&amp;quot; in&lt;br /&gt;
                -t)&lt;br /&gt;
                        DRY_RUN=true&lt;br /&gt;
                        echo &amp;quot;$0: Dry run, will not change fan state.&amp;quot;&lt;br /&gt;
                        shift&lt;br /&gt;
                        ;;&lt;br /&gt;
                -q) # quiet mode&lt;br /&gt;
                        VERBOSE=false&lt;br /&gt;
                        shift&lt;br /&gt;
                        ;;&lt;br /&gt;
                -d) # go into background and daemonize&lt;br /&gt;
                        DAEMONIZE=true&lt;br /&gt;
                        shift&lt;br /&gt;
                        ;;&lt;br /&gt;
                -p) # different pidfile&lt;br /&gt;
                        PID_FILE=&amp;quot;$2&amp;quot;&lt;br /&gt;
                        shift 2&lt;br /&gt;
                        ;;&lt;br /&gt;
                -h) # short help&lt;br /&gt;
                        usage&lt;br /&gt;
                        exit 1&lt;br /&gt;
                        ;;&lt;br /&gt;
                --) # no more options&lt;br /&gt;
                        shift&lt;br /&gt;
                        break&lt;br /&gt;
                        ;;&lt;br /&gt;
        esac&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
if $DRY_RUN; then&lt;br /&gt;
        VERBOSE=true&lt;br /&gt;
        DAEMONIZE=false&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if $DAEMONIZE ; then&lt;br /&gt;
        (&lt;br /&gt;
                exec $0 -q -p $PID_FILE 0&amp;gt;&amp;amp;- 1&amp;gt;&amp;amp;- 2&amp;gt;&amp;amp;-&lt;br /&gt;
        ) &amp;amp;&lt;br /&gt;
        echo $! &amp;gt; $PID_FILE&lt;br /&gt;
        exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Enable the fan in default mode if anything goes wrong:&lt;br /&gt;
set -e -E -u&lt;br /&gt;
$DRY_RUN || trap &amp;quot;rm -f $PID_FILE 2&amp;gt; /dev/null; echo enable &amp;gt; $IBM_ACPI/fan; exit 0&amp;quot; EXIT HUP INT ABRT QUIT SEGV TERM&lt;br /&gt;
&lt;br /&gt;
thermometer() { # output list of temperatures&lt;br /&gt;
    read X Y &amp;lt; $IBM_ACPI/thermal&lt;br /&gt;
    if ! [[ &amp;quot;$X&amp;quot; == &amp;quot;temperatures:&amp;quot; ]]; then&lt;br /&gt;
        echo &amp;quot;$0: Bad temperatures: $X $Y&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
        exit 1&lt;br /&gt;
    fi&lt;br /&gt;
    echo &amp;quot;$Y&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
speedometer() { # output fan speed RPM&lt;br /&gt;
    cat $IBM_ACPI/fan | sed '/^speed/!d; s/speed:[ \t]*//'&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
setlevel() { # set fan speed level&lt;br /&gt;
    $DRY_RUN || echo 0x2F $1 &amp;gt; $IBM_ACPI/ecdump&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
IDX=0&lt;br /&gt;
MAX_IDX=$(( ${#LEVELS[@]} - 1 ))&lt;br /&gt;
SETTLE=0&lt;br /&gt;
&lt;br /&gt;
while true; do&lt;br /&gt;
    TEMPS=`thermometer`&lt;br /&gt;
    $VERBOSE &amp;amp;&amp;amp; SPEED=`speedometer`&lt;br /&gt;
&lt;br /&gt;
    # Calculate new level&lt;br /&gt;
    NEWIDX=$IDX&lt;br /&gt;
    DOWN=$(( IDX &amp;gt; 0 ))&lt;br /&gt;
    for TEMP in $TEMPS; do&lt;br /&gt;
        # Increase speed as much as needed&lt;br /&gt;
        while [[ $NEWIDX -lt $MAX_IDX ]] &amp;amp;&amp;amp; &lt;br /&gt;
              [[ $TEMP -ge ${UP_TEMPS[$NEWIDX]} ]]; do&lt;br /&gt;
            (( NEWIDX ++ ))&lt;br /&gt;
            DOWN=0&lt;br /&gt;
        done&lt;br /&gt;
        # Allow decrease (by one index)?&lt;br /&gt;
        if [[ $DOWN == 1 ]] &amp;amp;&amp;amp;&lt;br /&gt;
           [[ $TEMP -gt ${DOWN_TEMPS[$(( IDX - 1 ))]} ]]; then&lt;br /&gt;
            DOWN=0&lt;br /&gt;
        fi&lt;br /&gt;
    done&lt;br /&gt;
    if [[ $DOWN == 1 ]]; then&lt;br /&gt;
        NEWIDX=$(( IDX - 1 ))&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    # Transition&lt;br /&gt;
    OLDLEVEL=${LEVELS[$IDX]}&lt;br /&gt;
    NEWLEVEL=${LEVELS[$NEWIDX]}&lt;br /&gt;
    $VERBOSE &amp;amp;&amp;amp; echo &amp;quot;tpfan: Temps: $TEMPS   Fan: $SPEED   Level: $OLDLEVEL-&amp;gt;$NEWLEVEL&amp;quot;&lt;br /&gt;
    setlevel $NEWLEVEL&lt;br /&gt;
&lt;br /&gt;
    sleep $INTERVAL&lt;br /&gt;
&lt;br /&gt;
    # If needed, apply anti-pulsing hack after a settle-down period:&lt;br /&gt;
    if [[ ${ANTIPULSE[${NEWIDX}]} == 1 ]]; then&lt;br /&gt;
        if [[ $NEWLEVEL == $OLDLEVEL ]]; then&lt;br /&gt;
            if [[ $SETTLE -ge 0 ]]; then&lt;br /&gt;
                (( SETTLE -= INTERVAL ))&lt;br /&gt;
            else&lt;br /&gt;
                setlevel 0x40 # disengaged&lt;br /&gt;
                sleep 0.5&lt;br /&gt;
            fi&lt;br /&gt;
        else&lt;br /&gt;
            SETTLE=6&lt;br /&gt;
        fi&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    IDX=$NEWIDX&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As usual, I disclaim all warranty for this script, and release it to the public domain (meaning you may use and further distribute it under any terms you wish, including incorporating it into other software).&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|Spiney]], Nov 7 2005, 19:46 (CET)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Ricoh_R5C476&amp;diff=11888</id>
		<title>Ricoh R5C476</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Ricoh_R5C476&amp;diff=11888"/>
		<updated>2005-11-06T11:15:41Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: /* ThinkPads this chip may be found in */ added T43p&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
=== Ricoh R5C476-II ===&lt;br /&gt;
This is a Ricoh Cardbus controller&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* PCI ID: 1180:0476&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux support ===&lt;br /&gt;
This chipset is supported by recent 2.4 and 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
=== ThinkPads this chip may be found in ===&lt;br /&gt;
* {{A30}}&lt;br /&gt;
* {{T43p}}&lt;br /&gt;
* {{X20}}, {{X21}}, {{X22}}, {{X23}}, {{X24}}&lt;br /&gt;
* {{TransNote}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Components]]&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Patch_for_controlling_fan_speed&amp;diff=11931</id>
		<title>Talk:Patch for controlling fan speed</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Patch_for_controlling_fan_speed&amp;diff=11931"/>
		<updated>2005-11-02T08:16:46Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I can confirm that it works on Thinkpad {{T43}} here. However after&lt;br /&gt;
applying the patch, the fan speed monitor of gkrellm 2.2.7 cannot read&lt;br /&gt;
value correctly. Maybe we gkrellm is reading the second line for speed&lt;br /&gt;
but instead find the line for level, so it got confused? Would it be possible to interchange the lines so that speed still appears in the &lt;br /&gt;
second line and level appears in the third instead? I'm no coder, just &lt;br /&gt;
a suggestion to improve the patch.&lt;br /&gt;
--Jiang&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I'd say it's a bug in gkrellm. It should parse the line header rather than relying on line numbers. But feel free to change (and test) the patch if you wish.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 05:14, 26 Oct 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== patch to keep gkrell working against 2.6.14 ==&lt;br /&gt;
&lt;br /&gt;
As in &amp;quot;works for me on a T43p&amp;quot;, use with caution at your own risk. And thanks to thinker for the original patch, very nice work.&lt;br /&gt;
&lt;br /&gt;
(See article for the actual patch)&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|Spiney]]&lt;br /&gt;
&lt;br /&gt;
Looks excellent, why not add it to the article page? Also, care to provide a license (preferably public domain like my patch) so the kernel guys can handle it? Speaking of which, the kernel people seem to like their patches generated via &amp;quot;diff -up vanilla-kernel-2.6.14 patched-kernel-2.6.14&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 22:04, 1 Nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
Done, using the -p option for diff and &amp;quot;borrowing&amp;quot; your sentence for licensing purposes.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|Spiney]]&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Patch_for_controlling_fan_speed&amp;diff=11558</id>
		<title>Patch for controlling fan speed</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Patch_for_controlling_fan_speed&amp;diff=11558"/>
		<updated>2005-11-02T08:12:58Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: added patch for 2.6.14&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This patch extends the [[ibm-acpi]] Linux kernel module to control fan speed. It can be used to reduce [[Problem with fan noise|fan noise]] (both speed and pulsing) and to decrease fan power consumption.&lt;br /&gt;
&lt;br /&gt;
When this patch is applied and the &amp;lt;tt&amp;gt;ibm-acpi&amp;lt;/tt&amp;gt; module is loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; module parameter, the following new capabilities are added to {{path|/proc/acpi/ibm/fan}}:&lt;br /&gt;
* {{cmdroot|echo level LEVEL &amp;gt; /proc/acpi/ibm/fan}} sets a fan speed level between 0 and 7, where &amp;lt;tt&amp;gt;LEVEL&amp;lt;/TT&amp;gt;=0 means fan off and &amp;lt;tt&amp;gt;LEVEL&amp;lt;/tt&amp;gt;=7 is the fastest speed.&lt;br /&gt;
* {{cmdroot|echo level auto &amp;gt; /proc/acpi/ibm/fan}} tells the embedded controller to set the fan speed automatically according to system temperatures (this is the default).&lt;br /&gt;
* {{cmdroot|echo level disengaged &amp;gt; /proc/acpi/ibm/fan}} tells the embedded controller to disengage fan speed control (see specs below).&lt;br /&gt;
* {{cmdroot|cat /proc/acpi/ibm/fan}} shows the current fan level (in addition to the fan speed in RPM).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 '''#cat /proc/acpi/ibm/fan'''&lt;br /&gt;
 status:         enabled&lt;br /&gt;
 level:          auto&lt;br /&gt;
 speed:          4219&lt;br /&gt;
 commands:       enable, disable, level &amp;lt;level&amp;gt;&lt;br /&gt;
                 (&amp;lt;level&amp;gt; is 0-7, auto or disengaged)&lt;br /&gt;
 &lt;br /&gt;
 '''#echo level 2 &amp;gt; /proc/acpi/ibm/fan'''&lt;br /&gt;
 &lt;br /&gt;
 '''#cat /proc/acpi/ibm/fan'''&lt;br /&gt;
 status:         enabled&lt;br /&gt;
 level:          2&lt;br /&gt;
 speed:          3142&lt;br /&gt;
 commands:       enable, disable, level &amp;lt;level&amp;gt;&lt;br /&gt;
                 (&amp;lt;level&amp;gt; is 0-7, auto or disengaged)&lt;br /&gt;
&lt;br /&gt;
This patch is best used with an [[ACPI fan control script#Variable speed control scripts|ACPI fan control script]] that monitors system temperature and sets the fan speed accordingly.&lt;br /&gt;
&lt;br /&gt;
{{WARN|Overriding the system's automatic temperature control may cause permanent hardware damage. Even when using temperature monitoring software, it is not clear whether the software can access all temperature sensor accessible to the embedded controller and understand them correctly. Moreover, this patch relies on an undocumented hardware interface, and may thus have arbitrary effects (especially on models it wasn't tested on).}}&lt;br /&gt;
&lt;br /&gt;
==Models on which this patch works==&lt;br /&gt;
&lt;br /&gt;
* ThinkPad {{T43}}, {{T43p}}&amp;lt;br /&amp;gt;(levels 1-2 = ~3300RPM, level 3-5 = ~4100RPM, level 6-7 = ~4700 RPM; disengaged mode works)&lt;br /&gt;
&lt;br /&gt;
Probably many other models.&lt;br /&gt;
&lt;br /&gt;
{{NOTE|If you try this patch on other models, please update this page with your results.}}&lt;br /&gt;
&lt;br /&gt;
==Models on which this patch doesn't work==&lt;br /&gt;
&lt;br /&gt;
* ThinkPad {{560}}, {{600E}}, {{600X}}, {{770E}}, {{770X}} (these use a different fan control interface)&lt;br /&gt;
&lt;br /&gt;
==The patch==&lt;br /&gt;
&lt;br /&gt;
===for ibm-acpi 0.11===&lt;br /&gt;
&lt;br /&gt;
This also includes a minor fix (rename of &amp;lt;tt&amp;gt;device_add&amp;lt;/tt&amp;gt;) to make [[ibm-acpi]] 0.11 compile on kernel 2.6.13.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- ibm-acpi-0.11-orig/ibm_acpi.c	2005-03-17 12:06:16.000000000 +0200&lt;br /&gt;
+++ ibm-acpi-0.11/ibm_acpi.c	2005-10-26 06:21:57.000000000 +0200&lt;br /&gt;
@@ -1488,11 +1488,18 @@ static int fan_read(char *p)&lt;br /&gt;
 	} else {&lt;br /&gt;
 		/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
 		if (!acpi_ec_read(fan_status_offset, &amp;amp;status))&lt;br /&gt;
 			len += sprintf(p + len, &amp;quot;status:\t\tunreadable\n&amp;quot;);&lt;br /&gt;
-		else&lt;br /&gt;
+		else {&lt;br /&gt;
 			len += sprintf(p + len, &amp;quot;status:\t\t%s\n&amp;quot;,&lt;br /&gt;
-				       enabled(status, 7));&lt;br /&gt;
+			              status ? &amp;quot;enabled&amp;quot; : &amp;quot;disabled&amp;quot;);&lt;br /&gt;
+			if (status &amp;amp; 0x40)&lt;br /&gt;
+				len += sprintf(p + len, &amp;quot;level:\t\tdisengaged\n&amp;quot;);&lt;br /&gt;
+			else if (status &amp;amp; 0x80)&lt;br /&gt;
+				len += sprintf(p + len, &amp;quot;level:\t\tauto\n&amp;quot;);&lt;br /&gt;
+			else&lt;br /&gt;
+				len += sprintf(p + len, &amp;quot;level:\t\t%d\n&amp;quot;, status);&lt;br /&gt;
+		}&lt;br /&gt;
 &lt;br /&gt;
 		if (!acpi_ec_read(fan_rpm_offset,     &amp;amp;lo) ||&lt;br /&gt;
 		    !acpi_ec_read(fan_rpm_offset + 1, &amp;amp;hi))&lt;br /&gt;
 			len += sprintf(p + len, &amp;quot;speed:\t\tunreadable\n&amp;quot;);&lt;br /&gt;
@@ -1506,9 +1513,12 @@ static int fan_read(char *p)&lt;br /&gt;
 		len += sprintf(p + len, &amp;quot;commands:\tlevel &amp;lt;level&amp;gt;&amp;quot;&lt;br /&gt;
 			       &amp;quot; (&amp;lt;level&amp;gt; is 0-7)\n&amp;quot;);&lt;br /&gt;
 	if (!gfan_handle)&lt;br /&gt;
 		/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
-		len += sprintf(p + len, &amp;quot;commands:\tenable, disable\n&amp;quot;);&lt;br /&gt;
+		len += sprintf(p + len, &lt;br /&gt;
+		              &amp;quot;commands:\tenable, disable, level &amp;lt;level&amp;gt;\n&amp;quot;&lt;br /&gt;
+		              &amp;quot;         \t(&amp;lt;level&amp;gt; is 0-7, auto&amp;quot;&lt;br /&gt;
+		              &amp;quot;or disengaged)\n&amp;quot;);&lt;br /&gt;
 	if (fans_handle)&lt;br /&gt;
 		/* X31, X40 */&lt;br /&gt;
 		len += sprintf(p + len, &amp;quot;commands:\tspeed &amp;lt;speed&amp;gt;&amp;quot;&lt;br /&gt;
 			       &amp;quot; (&amp;lt;speed&amp;gt; is 0-65535)\n&amp;quot;);&lt;br /&gt;
@@ -1528,17 +1538,29 @@ static int fan_write(char *buf)&lt;br /&gt;
 			/* 570, 770x-JL */&lt;br /&gt;
 			if (!acpi_evalf(sfan_handle, NULL, NULL, &amp;quot;vd&amp;quot;, level))&lt;br /&gt;
 				return -EIO;&lt;br /&gt;
 		} else if (!gfan_handle &amp;amp;&amp;amp;&lt;br /&gt;
-			   strlencmp(cmd, &amp;quot;enable&amp;quot;) == 0) {&lt;br /&gt;
+			   ( (strlencmp(cmd, &amp;quot;enable&amp;quot;) == 0) ||&lt;br /&gt;
+			     (strlencmp(cmd, &amp;quot;level auto&amp;quot;) == 0) ) ) {&lt;br /&gt;
 			/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
 			if (!acpi_ec_write(fan_status_offset, 0x80))&lt;br /&gt;
 				return -EIO;&lt;br /&gt;
 		} else if (!gfan_handle &amp;amp;&amp;amp;&lt;br /&gt;
 			   strlencmp(cmd, &amp;quot;disable&amp;quot;) == 0) {&lt;br /&gt;
 			/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
 			if (!acpi_ec_write(fan_status_offset, 0x00))&lt;br /&gt;
 				return -EIO;&lt;br /&gt;
+		} else if (!gfan_handle &amp;amp;&amp;amp;&lt;br /&gt;
+			   strlencmp(cmd, &amp;quot;level disengaged&amp;quot;) == 0) {&lt;br /&gt;
+			/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
+			if (!acpi_ec_write(fan_status_offset, 0x40))&lt;br /&gt;
+				return -EIO;&lt;br /&gt;
+		} else if (!gfan_handle &amp;amp;&amp;amp;&lt;br /&gt;
+		    sscanf(cmd, &amp;quot;level %d&amp;quot;, &amp;amp;level) == 1 &amp;amp;&amp;amp;&lt;br /&gt;
+		    level &amp;gt;=0 &amp;amp;&amp;amp; level &amp;lt;= 7) {&lt;br /&gt;
+			/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
+			if (!acpi_ec_write(fan_status_offset, level))&lt;br /&gt;
+				return -EIO;&lt;br /&gt;
 		} else if (fans_handle &amp;amp;&amp;amp;&lt;br /&gt;
 		    sscanf(cmd, &amp;quot;speed %d&amp;quot;, &amp;amp;speed) == 1 &amp;amp;&amp;amp;&lt;br /&gt;
 		    speed &amp;gt;= 0 &amp;amp;&amp;amp; speed &amp;lt;= 65535) {&lt;br /&gt;
 			/* X31, X40 */&lt;br /&gt;
@@ -1751,9 +1773,9 @@ static int __init setup_notify(struct ib&lt;br /&gt;
 &lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
-static int device_add(struct acpi_device *device)&lt;br /&gt;
+static int ibmacpi_device_add(struct acpi_device *device)&lt;br /&gt;
 {&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
@@ -1769,9 +1791,9 @@ static int __init register_driver(struct&lt;br /&gt;
 &lt;br /&gt;
 	memset(ibm-&amp;gt;driver, 0, sizeof(struct acpi_driver));&lt;br /&gt;
 	sprintf(ibm-&amp;gt;driver-&amp;gt;name, &amp;quot;%s/%s&amp;quot;, IBM_NAME, ibm-&amp;gt;name);&lt;br /&gt;
 	ibm-&amp;gt;driver-&amp;gt;ids = ibm-&amp;gt;hid;&lt;br /&gt;
-	ibm-&amp;gt;driver-&amp;gt;ops.add = &amp;amp;device_add;&lt;br /&gt;
+	ibm-&amp;gt;driver-&amp;gt;ops.add = &amp;amp;ibmacpi_device_add;&lt;br /&gt;
 &lt;br /&gt;
 	ret = acpi_bus_register_driver(ibm-&amp;gt;driver);&lt;br /&gt;
 	if (ret &amp;lt; 0) {&lt;br /&gt;
 		printk(IBM_ERR &amp;quot;acpi_bus_register_driver(%s) failed: %d\n&amp;quot;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [[User:Thinker|author]] disclaims all warranty for this patch, and releases it to the public domain (meaning you may use and further distribute it under any terms you wish, including incorporating it into other software).&lt;br /&gt;
&lt;br /&gt;
===for ibm-acpi 0.12a as found in kernel 2.6.14===&lt;br /&gt;
&lt;br /&gt;
A slightly modified version which also keeps the lines in the format expected by the gkrellm plugin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- drivers/acpi/ibm_acpi.c.orig        2005-11-01 19:47:44.262270250 +0100&lt;br /&gt;
+++ drivers/acpi/ibm_acpi.c     2005-11-01 20:16:16.081252250 +0100&lt;br /&gt;
@@ -1465,6 +1465,7 @@ static int fan_read(char *p)&lt;br /&gt;
 {&lt;br /&gt;
        int len = 0;&lt;br /&gt;
        int s;&lt;br /&gt;
+       char status_read = 0;&lt;br /&gt;
        u8 lo, hi, status;&lt;br /&gt;
&lt;br /&gt;
        if (gfan_handle) {&lt;br /&gt;
@@ -1477,9 +1478,11 @@ static int fan_read(char *p)&lt;br /&gt;
                /* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
                if (!acpi_ec_read(fan_status_offset, &amp;amp;status))&lt;br /&gt;
                        len += sprintf(p + len, &amp;quot;status:\t\tunreadable\n&amp;quot;);&lt;br /&gt;
-               else&lt;br /&gt;
+               else {&lt;br /&gt;
                        len += sprintf(p + len, &amp;quot;status:\t\t%s\n&amp;quot;,&lt;br /&gt;
-                                      enabled(status, 7));&lt;br /&gt;
+                                     status ? &amp;quot;enabled&amp;quot; : &amp;quot;disabled&amp;quot;);&lt;br /&gt;
+                       status_read = 1;&lt;br /&gt;
+               }&lt;br /&gt;
&lt;br /&gt;
                if (!acpi_ec_read(fan_rpm_offset, &amp;amp;lo) ||&lt;br /&gt;
                    !acpi_ec_read(fan_rpm_offset + 1, &amp;amp;hi))&lt;br /&gt;
@@ -1487,6 +1490,14 @@ static int fan_read(char *p)&lt;br /&gt;
                else&lt;br /&gt;
                        len += sprintf(p + len, &amp;quot;speed:\t\t%d\n&amp;quot;,&lt;br /&gt;
                                       (hi &amp;lt;&amp;lt; 8) + lo);&lt;br /&gt;
+               if (status_read) {&lt;br /&gt;
+                       if (status &amp;amp; 0x40)&lt;br /&gt;
+                               len += sprintf(p + len, &amp;quot;level:\t\tdisengaged\n&amp;quot;);&lt;br /&gt;
+                       else if (status &amp;amp; 0x80)&lt;br /&gt;
+                               len += sprintf(p + len, &amp;quot;level:\t\tauto\n&amp;quot;);&lt;br /&gt;
+                       else&lt;br /&gt;
+                               len += sprintf(p + len, &amp;quot;level:\t\t%d\n&amp;quot;, status);&lt;br /&gt;
+               }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (sfan_handle)&lt;br /&gt;
@@ -1495,7 +1506,10 @@ static int fan_read(char *p)&lt;br /&gt;
                               &amp;quot; (&amp;lt;level&amp;gt; is 0-7)\n&amp;quot;);&lt;br /&gt;
        if (!gfan_handle)&lt;br /&gt;
                /* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
-               len += sprintf(p + len, &amp;quot;commands:\tenable, disable\n&amp;quot;);&lt;br /&gt;
+               len += sprintf(p + len, &lt;br /&gt;
+                             &amp;quot;commands:\tenable, disable, level &amp;lt;level&amp;gt;\n&amp;quot;&lt;br /&gt;
+                             &amp;quot;         \t(&amp;lt;level&amp;gt; is 0-7, auto &amp;quot;&lt;br /&gt;
+                             &amp;quot;or disengaged)\n&amp;quot;);&lt;br /&gt;
        if (fans_handle)&lt;br /&gt;
                /* X31, X40 */&lt;br /&gt;
                len += sprintf(p + len, &amp;quot;commands:\tspeed &amp;lt;speed&amp;gt;&amp;quot;&lt;br /&gt;
@@ -1516,7 +1530,8 @@ static int fan_write(char *buf)&lt;br /&gt;
                        /* 570, 770x-JL */&lt;br /&gt;
                        if (!acpi_evalf(sfan_handle, NULL, NULL, &amp;quot;vd&amp;quot;, level))&lt;br /&gt;
                                return -EIO;&lt;br /&gt;
-               } else if (!gfan_handle &amp;amp;&amp;amp; strlencmp(cmd, &amp;quot;enable&amp;quot;) == 0) {&lt;br /&gt;
+               } else if (!gfan_handle &amp;amp;&amp;amp; ( (strlencmp(cmd, &amp;quot;enable&amp;quot;) == 0) || &lt;br /&gt;
+                               (strlencmp(cmd, &amp;quot;level auto&amp;quot;) == 0) ) ) {&lt;br /&gt;
                        /* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
                        if (!acpi_ec_write(fan_status_offset, 0x80))&lt;br /&gt;
                                return -EIO;&lt;br /&gt;
@@ -1524,6 +1539,17 @@ static int fan_write(char *buf)&lt;br /&gt;
                        /* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
                        if (!acpi_ec_write(fan_status_offset, 0x00))&lt;br /&gt;
                                return -EIO;&lt;br /&gt;
+               } else if (!gfan_handle &amp;amp;&amp;amp;&lt;br /&gt;
+                          strlencmp(cmd, &amp;quot;level disengaged&amp;quot;) == 0) {&lt;br /&gt;
+                       /* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
+                       if (!acpi_ec_write(fan_status_offset, 0x40))&lt;br /&gt;
+                               return -EIO;&lt;br /&gt;
+               } else if (!gfan_handle &amp;amp;&amp;amp;&lt;br /&gt;
+                   sscanf(cmd, &amp;quot;level %d&amp;quot;, &amp;amp;level) == 1 &amp;amp;&amp;amp;&lt;br /&gt;
+                   level &amp;gt;=0 &amp;amp;&amp;amp; level &amp;lt;= 7) {&lt;br /&gt;
+                       /* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
+                       if (!acpi_ec_write(fan_status_offset, level))&lt;br /&gt;
+                               return -EIO;&lt;br /&gt;
                } else if (fans_handle &amp;amp;&amp;amp;&lt;br /&gt;
                           sscanf(cmd, &amp;quot;speed %d&amp;quot;, &amp;amp;speed) == 1 &amp;amp;&amp;amp;&lt;br /&gt;
                           speed &amp;gt;= 0 &amp;amp;&amp;amp; speed &amp;lt;= 65535) {&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [[User:spiney|author]] disclaims all warranty for this patch, and releases it to the public domain (meaning you may use and further distribute it under any terms you wish, including incorporating it into other software).&lt;br /&gt;
&lt;br /&gt;
==Hardware specs==&lt;br /&gt;
&lt;br /&gt;
The patch relies on the following hardware behavior, which was discovered experimentally and neither provided by nor confirmed by IBM/Lenovo. The following description may be inaccurate and may vary by model (see list of models above). The terminology probably does not match the one used by IBM/Lenovo engineers.&lt;br /&gt;
&lt;br /&gt;
ACPI DSDT register _SB.PCI0.LPC.EC.HFSP (8 bits, offset 0x2F in the &amp;lt;tt&amp;gt;EmbeddedController&amp;lt;/tt&amp;gt; address space) &lt;br /&gt;
is read/writable and has the following meaning:&lt;br /&gt;
 &lt;br /&gt;
  7 6 5 4 3 2 1 0&lt;br /&gt;
  | | \_________/&lt;br /&gt;
  | |      |&lt;br /&gt;
  | |      +--------- manual fan speed level (0=disable, 1=min, ..., 7=max)&lt;br /&gt;
  | +---------------- disengaged (0=normal, 1=disengaged, overrides all)&lt;br /&gt;
  +------------------ automatic fan speed control (0=manual, 1=automatic, overrides manual)&lt;br /&gt;
&lt;br /&gt;
Manual speed levels 8-63 yield the same behavior as level 7, and the the ACPI DSDT uses level 7 for the emergency mode it enters upon critical CPU/GPU temperature, so apparently 7 is the real maximum level.&lt;br /&gt;
&lt;br /&gt;
When bit 7 is on, the embedded controller sets the fan speed automatically according to system temperaturesand some unknown algorithm. This overrides manual control.&lt;br /&gt;
&lt;br /&gt;
When bit 6 is on, the embedded controller does not read the fan RPM (hence &amp;lt;tt&amp;gt;EmbeddedController&amp;lt;/tt&amp;gt; offset 0x84 is not updated), and does not maintain a stable fan speed. This overrides manual and automatic control. When disengaged mode is entered the fan speed is not immediately changed (except if the fan was disabed, in which case it is turned on at a low level). However, once in disengaged mode, fan speed will slowly increase to ''beyond'' the maximum manual level (this may cause hardware damage!).&lt;br /&gt;
&lt;br /&gt;
{{HINT|Apparently the [[Problem with fan noise|pulsing fan noise]] experienced by some users can be cured by repeatedly running 2-4 seconds of manual control followed by 0.5-1 seconds of disengaged mode. The pulse occurs when the the embedded controller computes the fan speed and adjusts the fan voltage adaptively every few seconds (~4.8sec for the ThinkPad T43); the aforementioned mode switching doesn't give it a chance to do so. One of the [[ACPI fan control script#Variable speed control scripts|ACPI fan control scripts]] implements this solution.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_copy_a_Linux_installation&amp;diff=12532</id>
		<title>How to copy a Linux installation</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_copy_a_Linux_installation&amp;diff=12532"/>
		<updated>2005-09-22T06:05:15Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: added some structure and mentioned tar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using dd to make a 1:1 copy ==&lt;br /&gt;
&lt;br /&gt;
=== Advantages ===&lt;br /&gt;
&lt;br /&gt;
=== Disadvantages ===&lt;br /&gt;
&lt;br /&gt;
=== Case 1: The Linux installation is on a seperate Harddisk ===&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/hd[a,b,c,..] of=/dev/hd[a,b,c,..] bs=2M&lt;br /&gt;
&lt;br /&gt;
Part of Sourcedrive       : if=/dev/hd[a,b,c,..]  the Letter &amp;quot;a&amp;quot; for the first Harddrive, b for the second, ....&lt;br /&gt;
&lt;br /&gt;
Part of Destinationdrive  : of=/dev/hd[a,b,c,..]  the Letter &amp;quot;a&amp;quot; for the first Harddrive, b for the second, ....&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Case 2: The Linux installation is on a Partition ===&lt;br /&gt;
&lt;br /&gt;
(e.g. hda1 is the Partition with the Linux installation and hdb1 is the Destinationdrive)&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/hda1 of=/dev/hdb1 bs=2M&lt;br /&gt;
&lt;br /&gt;
== Using tar to make a copy of the filesystem ==&lt;br /&gt;
&lt;br /&gt;
=== Advantages ===&lt;br /&gt;
&lt;br /&gt;
=== Disadvantages ===&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installation&amp;diff=10005</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installation&amp;diff=10005"/>
		<updated>2005-09-22T06:01:24Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: /* External Sources */  add tuxmobil.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
Here you will find specific information on how to install different Operation Systems on your ThinkPad.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==General installation instructions==&lt;br /&gt;
*[[Pre-Installation steps]]&lt;br /&gt;
*[[Installation on ThinkPads without CD-ROM drive]]&lt;br /&gt;
*[[How to setup boot loaders]]&lt;br /&gt;
&lt;br /&gt;
==Installation instructions for specific ThinkPads==&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
!Numbered!!A series!!G series!!R series!!S series!!T series!!X series!!others&lt;br /&gt;
|- style=&amp;quot;text-align:left;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
'''{{ThinkPad|240|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|240X|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|365XD|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|390|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|390E|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|390X|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|560|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|560E|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|560X|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|560Z|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|570|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|570E|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|600|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|600E|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|600X|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|700|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|750|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|760ED|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|760XD|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|770E|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|770X|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|770Z|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
'''{{ThinkPad|A20m|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|A20p|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|A21e|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|A21m|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|A21p|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|A22e|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|A22m|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|A22p|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|A30|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|A30p|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|A31|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|A31p|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
'''{{ThinkPad|G40|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|G41|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
'''{{ThinkPad|R30|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|R31|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|R32|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|R40|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|R40e|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|R50|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|R50p|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|R50e|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|R51|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|R52|Installation instructions for the}}'''&lt;br /&gt;
||&lt;br /&gt;
'''{{ThinkPad|S30|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|S31|Installation instructions for the}}'''&lt;br /&gt;
||&lt;br /&gt;
'''{{ThinkPad|T20|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|T21|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|T22|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|T23|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|T30|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|T40|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|T40p|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|T41|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|T41p|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|T42|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|T42p|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|T43|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|T43p|Installation instructions for the}}'''&lt;br /&gt;
||&lt;br /&gt;
'''{{ThinkPad|X20|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|X21|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|X22|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|X23|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|X24|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|X30|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|X31|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|X32|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|X40|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|X41|Installation instructions for the}}'''&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|X41 Tablet|Installation instructions for the}}'''&lt;br /&gt;
||&lt;br /&gt;
'''[[Installation instructions for the RS/6000 Notebook 860|RS/6000 Notebook 860]]'''[[Category:860]]&lt;br /&gt;
&lt;br /&gt;
'''[[Installation instructions for the PC110|PC110]]'''[[Category:PC110]]&lt;br /&gt;
&lt;br /&gt;
'''{{ThinkPad|TransNote|Installation instructions for the}}'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
*[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-48NT8D IBMs Linux on Personal Systems page]&lt;br /&gt;
*[http://www.linux-laptop.net Linux on Laptops] features a [http://www.linux-laptop.net/ibm.html list of installation guides for IBM Notebooks]&lt;br /&gt;
*[http://tuxmobil.org/ TuxMobil] also features a [http://tuxmobil.org/ibm.html list of installation guides for IBM Notebooks]&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Category:T43p&amp;diff=10028</id>
		<title>Category:T43p</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Category:T43p&amp;diff=10028"/>
		<updated>2005-09-18T23:07:44Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: reverting 85.81.51.127's changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
=== ThinkPad T43p ===&lt;br /&gt;
This pages gives an overview of all ThinkPad T43p related topics.&lt;br /&gt;
&lt;br /&gt;
Machine Type: 2668, 2669 or 2687&lt;br /&gt;
==== Features ====&lt;br /&gt;
* [[Intel Pentium M (Dothan)]] 1.86, 2.0 or 2.13GHz CPU&lt;br /&gt;
* One of the following graphics adapters:&lt;br /&gt;
* [[ATI Mobility FireGL V3200]] with 128MB&lt;br /&gt;
** 14.1&amp;quot; TFT display with 1400x1050 resolution&lt;br /&gt;
** 15.0&amp;quot; TFT display with 1600x1200 resolution&lt;br /&gt;
* 512MB or 1GB memory standard&lt;br /&gt;
* 60 or 80GB HDD{{footnote|1}}&lt;br /&gt;
* AD1981B AC'97 Audio controller&lt;br /&gt;
* [[Ethernet Controllers|Broadcom 10/100/1000 Ethernet]]&lt;br /&gt;
* [[UltraBay|UltraBay Slim]] with one of the following:&lt;br /&gt;
** DVD-ROM/CD-RW Combo&lt;br /&gt;
** DVDÂ±RW&lt;br /&gt;
* CDC slot with one of the following:&lt;br /&gt;
** [[IBM Integrated 56K Modem (MDC-2)]]&lt;br /&gt;
** [[IBM Integrated Bluetooth IV with 56K Modem (BMDC-3)]]&lt;br /&gt;
* MiniPCI slot with one of the following:&lt;br /&gt;
** [[IBM 11a/b/g Wireless LAN Mini PCI Adapter II]]&lt;br /&gt;
** [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]]&lt;br /&gt;
** [[Intel PRO/Wireless 2915ABG Mini-PCI Adapter]]&lt;br /&gt;
* Single Type I CardBus slot and Single ExpressCard slot&lt;br /&gt;
* [[Embedded Security Subsystem|IBM Embedded Security Subsystem 2.0]]&lt;br /&gt;
* [[Active Protection System|IBM Active Protection System]]&lt;br /&gt;
* [[Integrated Fingerprint Reader]] on select systems&lt;br /&gt;
* [[UltraNav]] (TrackPoint / Touchpad combo)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
[[Image:ThinkpadT43P.JPG|ThinkPad T43p]]&lt;br /&gt;
|}&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles_pdf/27r0700.pdf ThinkPad T43/p - Hardware Maintenance Manual (January 2005)] (4,534,423 Bytes)&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-58315 ThinkPad T43/p - Overview]&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#The T43 uses a SATA-&amp;gt;PATA converter and PATA drives.  This seems to apply to the T43p also.  Unfortunately, the drive's firmware is modified by IBM for performance and stability reasons.  In general, you can install a non-IBM branded HD as the primary drive, but it will give a warning at boot time.  See [http://forum.thinkpads.com/viewtopic.php?t&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;11059 Firmware Problems with Seagate 100g Drive on T43].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Models]]&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=APM_vs._ACPI&amp;diff=8718</id>
		<title>APM vs. ACPI</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=APM_vs._ACPI&amp;diff=8718"/>
		<updated>2005-08-29T09:49:32Z</updated>

		<summary type="html">&lt;p&gt;128.131.208.174: /* T Series */ problem with SATA drive causes problems with resume from RAM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
The following tables headings shell designate the following meanings...&lt;br /&gt;
&lt;br /&gt;
* APM&lt;br /&gt;
** Blank = ability to turn off the LCD while using APM&lt;br /&gt;
** Sleep = ability to do a suspend-to-ram using APM&lt;br /&gt;
** Hibernate = ability to perform a suspend-to-disk via the BIOS&lt;br /&gt;
** Battery = ability to get statistics on remaining battery life from the APM subsystem&lt;br /&gt;
*ACPI&lt;br /&gt;
** Blank = ability to turn off the LCD while using ACPI&lt;br /&gt;
** Sleep = ability to do a suspend-to-ram using ACPI&lt;br /&gt;
** Hibernate = ability to perform a suspend-to-disk using ACPI&lt;br /&gt;
** Battery = ability to get statistics on remaining battery life from he ACPI subsystem&lt;br /&gt;
&lt;br /&gt;
The fields should be filled with one of the following:&lt;br /&gt;
* ? = unknown / untested&lt;br /&gt;
* yes = working (with or without extra configuration effort)&lt;br /&gt;
* no = not working (because kernel support isn't there yet or lacking hardware implementation)&lt;br /&gt;
* part = partially working (unsolvable trouble on resume or something like that)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=2 style=&amp;quot;vertical-align:bottom;background-color:#cfefcf;&amp;quot; | model&lt;br /&gt;
! colspan=4 style=&amp;quot;vertical-align:top;background-color:#6699cc;&amp;quot; | APM&lt;br /&gt;
! colspan=4 style=&amp;quot;vertical-align:top;background-color:#fbe030;&amp;quot; | ACPI&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;vertical-align:top;background-color:#6699cc;&amp;quot; | blank&lt;br /&gt;
! style=&amp;quot;vertical-align:top;background-color:#6699cc;&amp;quot; | sleep&lt;br /&gt;
! style=&amp;quot;vertical-align:top;background-color:#6699cc;&amp;quot; | hibernate&lt;br /&gt;
! style=&amp;quot;vertical-align:top;background-color:#6699cc;&amp;quot; | battery&lt;br /&gt;
! style=&amp;quot;vertical-align:top;background-color:#fbe030;&amp;quot; | blank&lt;br /&gt;
! style=&amp;quot;vertical-align:top;background-color:#fbe030;&amp;quot; | sleep&lt;br /&gt;
! style=&amp;quot;vertical-align:top;background-color:#fbe030;&amp;quot; | hibernate&lt;br /&gt;
! style=&amp;quot;vertical-align:top;background-color:#fbe030;&amp;quot; | battery&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;9&amp;quot; style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
====Numbered====&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:570 | 570]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:570E | 570E]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:600 | 600]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:600E | 600E]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; |Y-2.4&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:600X | 600X]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:755CD | 755CD]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:755CDV | 755CDV]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:755CV | 755CV]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:755CX | 755CX]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:770 | 770]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:770E | 770E]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:770X | 770X]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | part&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:770Z | 770Z]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;9&amp;quot; style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====A Series====&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:A20m | A20m]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:A20p | A20p]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | y&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | y&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:A21e | A21e]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:A21m | A21m]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:A21p | A21p]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:A22e | A22e]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:A22m | A22m]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:A22p | A22p]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:A30 | A30]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:A30p | A30p]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:A31 | A31]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:A31p | A31p]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;9&amp;quot; style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====G Series====&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:G40 | G40]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:G41 | G41]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;9&amp;quot; style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
====R Series====&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:R30 | R30]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:R31 | R31]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:R32 | R32]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:R40 | R40]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:R40e | R40e]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:R50e | R50e]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:R50p | R50p]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:R51 | R51]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:R52 | R52]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;9&amp;quot; style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
====T Series====&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T20 | T20]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes &lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | [[#t20_hib|yes]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | [[#t20_hib|yes]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T21 | T21]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T22 | T22]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | part&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | part&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T23 | T23]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T30 | T30]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T40 | T40]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T40p | T40p]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T41 | T41]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T41p | T41p]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T42 | T42]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T42p | T42p]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T43 | T43]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | part&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | part&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:T43p | T43p]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | part&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;9&amp;quot; style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====X Series====&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:X20 | X20]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:X21 | X21]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | y&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | random&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | y&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | y&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | y2.6&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:X22 | X22]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | y&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | y&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | y&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:X23 | X23]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:X24 | X24]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:X30 | X30]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:X31 | X31]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:X32 | X32]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:X40 | X40]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:X41 | X41]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | part (SATA)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | part (SATA)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | no&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | part (SATA)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*[[:Category:X41 Tablet | X41 Tablet]]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#cce5ff;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;text-align:center;background-color:#fff0b0;&amp;quot; | ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;t20_hib&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;T20 Hibernation:&amp;lt;/b&amp;gt;&lt;br /&gt;
* tested with SuSE 9.2&lt;br /&gt;
* APM needs a special file on a windows partition&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>128.131.208.174</name></author>
		
	</entry>
</feed>