<?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=Whoopie79</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=Whoopie79"/>
	<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/wiki/Special:Contributions/Whoopie79"/>
	<updated>2026-05-02T13:31:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Active_Protection_System&amp;diff=33865</id>
		<title>Active Protection System</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Active_Protection_System&amp;diff=33865"/>
		<updated>2007-10-13T16:32:27Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Models featuring this Technology */&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;&amp;quot; | [[Image:APS.jpg|IBM Active Protection System]] __NOTOC__&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;
=== The Active Protection System ===&lt;br /&gt;
With the new series of ThinkPads IBM introduced the Active Protection System (APS) in 2003. The APS is a protection system for the ThinkPads internal harddrive. A sensor inside the ThinkPad recognizes when the notebook is accelerated. A software applet then is triggered to park the harddisk. This way the risk of data loss in case of when the notebook is dropped is significantly reduced since the read/write head of the harddrive is parked and hence can't crash onto the platter when the notebook drops onto the floor.&lt;br /&gt;
&lt;br /&gt;
The hardware sensor is capable of not only recognizing acceleration of the notebook, but also (to a certain degree) of its whole orientation in space, relative to gravity's axis. Furthermore, having the actual control put into software, its functionality is extendable and it gives chance to implement features like the &amp;quot;ignore minor shocks&amp;quot; feature which is present in the Windows based control applet. (This feature prevents the harddrive from parking in case of minor regular shocks such as occur when in a train or car.)&lt;br /&gt;
&lt;br /&gt;
The measurements are physically performed by an [[Analog Devices ADXL320 accelerometer]] chip, managed by the [[Embedded Controller Chips|embedded controller]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles_pdf/aps2mst.pdf IBM Active Protection System Whitepaper]&lt;br /&gt;
&lt;br /&gt;
==Hard-disk Support==&lt;br /&gt;
&lt;br /&gt;
HD-APS requires a hard-disk with [http://www.hitachigst.com/hdd/research/storage/hdi/loadunload.html head unload ramp technology] and also support on the hard-disk firmware to unload heads without flushing the disk cache.  This is required, because as soon as the APS system detects a shock is imminent, the system has less than 500ms to prepare for the shock.&lt;br /&gt;
&lt;br /&gt;
Unloading heads without flushing the chache is done using the [http://www.t13.org/Documents/UploadedDocuments/docs2003/e03120r5.pdf optional Unload Immediate feature of the IDLE IMMEDIATE ATA command].  It finishes whatever sector write is in-flight, and immediately moves the heads to the unload ramp.  Without this command, hard-disk APS cannot be trusted, as disks with big caches can take a lot of time to write it all to disk.&lt;br /&gt;
&lt;br /&gt;
So far, only hard-disks with IBM APS firmware, as well as the consumer Fujitsu HV2060AH/MHV2100AH/MHV2120AH HDs have been found to implement all the necessary functions.  Head unload technology is reasonably common in modern laptop disks, but the APS firmware is very rare in regular consumer products.  Please note that newer Apple notebooks also support APS, so it is somewhat likely that their disks also support unload immediate or a similar feature.&lt;br /&gt;
&lt;br /&gt;
==Linux Support==&lt;br /&gt;
Linux support is in development.&lt;br /&gt;
&lt;br /&gt;
This feature definitely depends on software and there is no hardware or BIOS only way of making it work.&lt;br /&gt;
IBM made contradictory statements about their willingness to release the specifications of the hardware sensor and its API to the linux community or some developers. Although a lot of developers and other interested people from the OpenSource community actively contacted IBM to get the specs, in fact they never got them.&lt;br /&gt;
&lt;br /&gt;
However, after first efforts of [http://www.kernelthread.com/software/ams/ Amit Singh on a PowerBook] and [http://www.almaden.ibm.com/cs/people/marksmith/tpaps.html Mark Smith on a ThinkPad], the [[HDAPS]] project was founded to produce a linux kernel driver for the acceleration sensor and a user space application to monitor it. Later, a kernel patch to enable harddisk parking followed.&lt;br /&gt;
&lt;br /&gt;
See [[How to protect the harddisk through APS]] for instructions and [[Problem with APS harddisk parking]] for Troubleshooting.&lt;br /&gt;
&lt;br /&gt;
Furthermore, a list of alternative applications like theft alarm and others can be found on the [[HDAPS]] driver page.&lt;br /&gt;
&lt;br /&gt;
==Tilt detection field tests==&lt;br /&gt;
Using Perl code for WinXP:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use Win32API::File qw(:ALL);&lt;br /&gt;
sub get_tilt {&lt;br /&gt;
      my $file = createFile(&amp;quot;//./ShockMgr&amp;quot;, &amp;quot;r ke&amp;quot;) or die &amp;quot;Can't get ShockMgr device&amp;quot;;&lt;br /&gt;
      DeviceIoControl($file, 0x733fc, [], 0, my($buf), 0x24, my($bytes), []);&lt;br /&gt;
      my @data = unpack &amp;quot;x4s*&amp;quot;, $buf;&lt;br /&gt;
      return @data[1, 0];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
my T42 gives values of roughly 490 when at rest in normal upright position with base parallel to the ground.  As I gently tilt the T42 through all possible x or y angles, the values range from about 335-645, meaning a resolution of about 155 units per Earth gravity.  This seems to suggest that the operating range of the APS is actually about +-3 gs, although the ADXL320 is supposed to allow +-5 gs.&lt;br /&gt;
&lt;br /&gt;
As the tilt angle is the arcsine of the normalized APS reading, the Thinkpad is most tilt sensitive when in a normal upright position with base parallel to the ground.  In this position, the tilt resolution is about 0.35 - 0.4 degrees.  At maximum tilt, the resolution is much worse, about 6.5 degrees.&lt;br /&gt;
&lt;br /&gt;
Shouldn't matter much, but my tests are at an elevation of about 60 meters above sea level.&lt;br /&gt;
&lt;br /&gt;
===More field tests===&lt;br /&gt;
When placed on a reasonably flat and reasonably horizontal work surface my T43 provides readings of about x=503 and y=569. I wrote a command-line application in C# (using the .NET DllImport annotation to access the sensor.dll API) to log the sensor readings at some interval. With 150ms sampling I found the following extreme values: 335 to 654 for x, and 409 to 723 for y.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 x: 494.5   +/- 159.5&lt;br /&gt;
 y: 566.0   +/- 157.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Based on the maximum and minimum x and y readings I calculated the above &amp;quot;zero&amp;quot; and range values in order to convert the sensor readings to degrees and wrapped this up in a small graphical application for Windows. My data, source code, executables and a complete description can be found [http://www.stanford.edu/~bsuter/thinkpad-accelerometer/ here].&lt;br /&gt;
&lt;br /&gt;
==Related Links==&lt;br /&gt;
*[http://www.stanford.edu/~bsuter/thinkpad-accelerometer/ Sensor Data, Calibration, command-line and GUI executables for Windows and C# .NET source code]&lt;br /&gt;
*[http://www.pc.ibm.com/presentations/us/thinkvantage/56/index.html?shortcut=aps&amp;amp; IBMs ThinkVantage&amp;amp;trade; Technologies Flash presentation - Active Protection System]&lt;br /&gt;
*[http://www-128.ibm.com/developerworks/linux/library/l-knockage.html?ca=dgr-lnxw01Knock-Knock IBM HDAPS/Linux HDAPS information page]&lt;br /&gt;
*[http://hdaps.sourceforge.net HDAPS project page]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/forum.php?forum=hdaps-devel HDAPS-devel list archive]&lt;br /&gt;
&lt;br /&gt;
==Models featuring this Technology==&lt;br /&gt;
*ThinkPad {{R50}}, {{R50p}}, {{R51}}, {{R52}}, {{R60}}&lt;br /&gt;
*ThinkPad {{T41}}, {{T41p}}, {{T42}}, {{T42p}}, {{T43}}, {{T43p}}, {{T60}}, {{T60p}}, {{T61}}&lt;br /&gt;
*ThinkPad {{X40}}, {{X41}}, {{X41T}}, {{X60}}, {{X60s}}, {{X60t}}, X61 Tablet&lt;br /&gt;
*ThinkPad {{Z60m}}, {{Z60t}}, {{Z61m}}, {{Z61t}}, {{Z61e}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Glossary]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=ATI_Mobility_Radeon_X1400&amp;diff=33699</id>
		<title>ATI Mobility Radeon X1400</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=ATI_Mobility_Radeon_X1400&amp;diff=33699"/>
		<updated>2007-10-07T08:00:16Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Linux X.Org driver */&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;
=== ATI Mobility Radeon X1400 ===&lt;br /&gt;
This is an ATI video adapter.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Chipset: ATI M54&lt;br /&gt;
* PCI ID: 1002:7145&lt;br /&gt;
* PCI Express x16&lt;br /&gt;
* 128MB GDDR1 video memory&lt;br /&gt;
* Up to 512Mb HyperMemory - ATI's name for their GPUs that utilise shared and dedicated memory.&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 X.Org driver ===&lt;br /&gt;
Supported.&lt;br /&gt;
&lt;br /&gt;
There is the [http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-radeonhd;a=summary Radeon HD driver] which is developed based on the published specs by AMD/ATI.&lt;br /&gt;
&lt;br /&gt;
There is also the deprecated experimental [http://gitweb.freedesktop.org/?p=avivo/xf86-video-avivo.git;a=summary avivo driver] which works, but does not yet support any 3D acceleration.&lt;br /&gt;
&lt;br /&gt;
==== ThinkPad LCD ====&lt;br /&gt;
Display on the internal LCD works as long as you set the monitor settings correct.&lt;br /&gt;
&lt;br /&gt;
==== External VGA port ====&lt;br /&gt;
({{Z61m}}): Works, but only if the X-server detects something plugged in here, eg. before X started or after a restart.&lt;br /&gt;
&lt;br /&gt;
({{T60}}): use '''aticonfig --enable-monitor=lvds,crt1''' to clone onto the VGA port. I use this to drive projectors all the time. Note that only the physical resolutions of the VGA port and the LVDS can differ (that means that if you use clone mode, you can have a 1400x1050 internal screen and 1680x1050 external and use both of them at the same time, but the internal screen will show only a portion of the real &amp;quot;desktop&amp;quot;; this area shifts when you move your mouse towards the edge of the viewport).&lt;br /&gt;
&lt;br /&gt;
==== SVideo port ====&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
==== DVI port ====&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
=== Linux X.org vesa driver ===&lt;br /&gt;
&lt;br /&gt;
The vesa driver works out of the box.  If you can't make it to show higher resolutions, you may try to use lower color depth -- the best fonts sizes on 15.4 widescreen were achieved with 1400x1050 at 16 depth (highcolor).&lt;br /&gt;
&lt;br /&gt;
=== Proprietary ATI driver ===&lt;br /&gt;
Proprietary [[fglrx]] driver version 8.24.8 adds support for the x1400 chipset (according to ATI changelog). It works, including dualhead, 3d and video (XV) acceleration, when using the fglrx kernel module. (Without it, you get screen corruption including underlined mouse pointers.)&lt;br /&gt;
&lt;br /&gt;
Sample &amp;quot;Device&amp;quot; section for xorg.conf:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier  &amp;quot;ATI Graphics Adapter 0&amp;quot;&lt;br /&gt;
        Driver      &amp;quot;fglrx&amp;quot;&lt;br /&gt;
        Option      &amp;quot;ForceMonitors&amp;quot; &amp;quot;lvds,crt1&amp;quot;&lt;br /&gt;
        Option      &amp;quot;Centermode&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
        Option      &amp;quot;VideoOverlay&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
        Option      &amp;quot;OpenGLOverlay&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
        Option      &amp;quot;OverlayOnCRTC2&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
        Option      &amp;quot;PseudoColorVisuals&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
        Option      &amp;quot;HSync2&amp;quot; &amp;quot;31-64&amp;quot;&lt;br /&gt;
        Option      &amp;quot;VRefresh2&amp;quot; &amp;quot;56-75&amp;quot;&lt;br /&gt;
        Option      &amp;quot;UseFastTLS&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
        Option      &amp;quot;Mode2&amp;quot; &amp;quot;1280x1024,1024x768,800x600,640x480&amp;quot;&lt;br /&gt;
        BusID       &amp;quot;PCI:1:0:0&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
XVideo support using the VideoOverlay option may not work with recent drivers. With version 8.29.6 of the fglrx driver, you can instead use&lt;br /&gt;
&lt;br /&gt;
        Option          &amp;quot;TexturedVideo&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Use the '''xvinfo''' utility to verify if XVideo support is available.&lt;br /&gt;
&lt;br /&gt;
==== Proprietary ATI driver on Ubuntu Feisty ====&lt;br /&gt;
On my Lenovo R60 (9641HYM) I had a similar system hang (on return from sleep) as described on the  [[ATI_Mobility_FireGL_V5200]] , and a similar fix (Step 3) seemed to get my laptop to wake up safely.&lt;br /&gt;
&lt;br /&gt;
That fix is to edit /etc/default/acpi-support. Change the line POST_VIDEO=true to read POST_VIDEO=. &lt;br /&gt;
&lt;br /&gt;
==== Proprietary ATI driver and suspend2 ====&lt;br /&gt;
It works perfetctly, but you need to set this parameter:&lt;br /&gt;
  echo 20000 &amp;gt;/sys/power/suspend2/extra_pages_allowance&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel Framebuffer driver ===&lt;br /&gt;
Works with the VESA driver at 1280x1024 (you have to append {{bootparm|vga|794}} to the kernel boot parameters) and 1400x1050 ({{bootparm|vga|837}}). Does not work wirh vesa-tng at more than 1024x768 :(&lt;br /&gt;
&lt;br /&gt;
=== ThinkPads this chip may be found in ===&lt;br /&gt;
* {{T60}}&lt;br /&gt;
* {{Z61m}}&lt;br /&gt;
* {{R60}} - Lenovo R60 contains X1400 chipset&lt;br /&gt;
&lt;br /&gt;
[[Category:Components]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=ATI_Mobility_Radeon_X1400&amp;diff=33698</id>
		<title>ATI Mobility Radeon X1400</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=ATI_Mobility_Radeon_X1400&amp;diff=33698"/>
		<updated>2007-10-07T07:57:55Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: add Radeon HD driver&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;
=== ATI Mobility Radeon X1400 ===&lt;br /&gt;
This is an ATI video adapter.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Chipset: ATI M54&lt;br /&gt;
* PCI ID: 1002:7145&lt;br /&gt;
* PCI Express x16&lt;br /&gt;
* 128MB GDDR1 video memory&lt;br /&gt;
* Up to 512Mb HyperMemory - ATI's name for their GPUs that utilise shared and dedicated memory.&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 X.Org driver ===&lt;br /&gt;
Supported.&lt;br /&gt;
&lt;br /&gt;
There is the Radeon HD driver ([http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-radeonhd]) which is developed based on the published specs by AMD/ATI.&lt;br /&gt;
&lt;br /&gt;
There is also the deprecated experimental avivo driver ([http://gitweb.freedesktop.org/?p=avivo/xf86-video-avivo.git;a=summary]) which works, but does not yet support any 3D acceleration.&lt;br /&gt;
&lt;br /&gt;
==== ThinkPad LCD ====&lt;br /&gt;
Display on the internal LCD works as long as you set the monitor settings correct.&lt;br /&gt;
&lt;br /&gt;
==== External VGA port ====&lt;br /&gt;
({{Z61m}}): Works, but only if the X-server detects something plugged in here, eg. before X started or after a restart.&lt;br /&gt;
&lt;br /&gt;
({{T60}}): use '''aticonfig --enable-monitor=lvds,crt1''' to clone onto the VGA port. I use this to drive projectors all the time. Note that only the physical resolutions of the VGA port and the LVDS can differ (that means that if you use clone mode, you can have a 1400x1050 internal screen and 1680x1050 external and use both of them at the same time, but the internal screen will show only a portion of the real &amp;quot;desktop&amp;quot;; this area shifts when you move your mouse towards the edge of the viewport).&lt;br /&gt;
&lt;br /&gt;
==== SVideo port ====&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
==== DVI port ====&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
=== Linux X.org vesa driver ===&lt;br /&gt;
&lt;br /&gt;
The vesa driver works out of the box.  If you can't make it to show higher resolutions, you may try to use lower color depth -- the best fonts sizes on 15.4 widescreen were achieved with 1400x1050 at 16 depth (highcolor).&lt;br /&gt;
&lt;br /&gt;
=== Proprietary ATI driver ===&lt;br /&gt;
Proprietary [[fglrx]] driver version 8.24.8 adds support for the x1400 chipset (according to ATI changelog). It works, including dualhead, 3d and video (XV) acceleration, when using the fglrx kernel module. (Without it, you get screen corruption including underlined mouse pointers.)&lt;br /&gt;
&lt;br /&gt;
Sample &amp;quot;Device&amp;quot; section for xorg.conf:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier  &amp;quot;ATI Graphics Adapter 0&amp;quot;&lt;br /&gt;
        Driver      &amp;quot;fglrx&amp;quot;&lt;br /&gt;
        Option      &amp;quot;ForceMonitors&amp;quot; &amp;quot;lvds,crt1&amp;quot;&lt;br /&gt;
        Option      &amp;quot;Centermode&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
        Option      &amp;quot;VideoOverlay&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
        Option      &amp;quot;OpenGLOverlay&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
        Option      &amp;quot;OverlayOnCRTC2&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
        Option      &amp;quot;PseudoColorVisuals&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
        Option      &amp;quot;HSync2&amp;quot; &amp;quot;31-64&amp;quot;&lt;br /&gt;
        Option      &amp;quot;VRefresh2&amp;quot; &amp;quot;56-75&amp;quot;&lt;br /&gt;
        Option      &amp;quot;UseFastTLS&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
        Option      &amp;quot;Mode2&amp;quot; &amp;quot;1280x1024,1024x768,800x600,640x480&amp;quot;&lt;br /&gt;
        BusID       &amp;quot;PCI:1:0:0&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
XVideo support using the VideoOverlay option may not work with recent drivers. With version 8.29.6 of the fglrx driver, you can instead use&lt;br /&gt;
&lt;br /&gt;
        Option          &amp;quot;TexturedVideo&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Use the '''xvinfo''' utility to verify if XVideo support is available.&lt;br /&gt;
&lt;br /&gt;
==== Proprietary ATI driver on Ubuntu Feisty ====&lt;br /&gt;
On my Lenovo R60 (9641HYM) I had a similar system hang (on return from sleep) as described on the  [[ATI_Mobility_FireGL_V5200]] , and a similar fix (Step 3) seemed to get my laptop to wake up safely.&lt;br /&gt;
&lt;br /&gt;
That fix is to edit /etc/default/acpi-support. Change the line POST_VIDEO=true to read POST_VIDEO=. &lt;br /&gt;
&lt;br /&gt;
==== Proprietary ATI driver and suspend2 ====&lt;br /&gt;
It works perfetctly, but you need to set this parameter:&lt;br /&gt;
  echo 20000 &amp;gt;/sys/power/suspend2/extra_pages_allowance&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel Framebuffer driver ===&lt;br /&gt;
Works with the VESA driver at 1280x1024 (you have to append {{bootparm|vga|794}} to the kernel boot parameters) and 1400x1050 ({{bootparm|vga|837}}). Does not work wirh vesa-tng at more than 1024x768 :(&lt;br /&gt;
&lt;br /&gt;
=== ThinkPads this chip may be found in ===&lt;br /&gt;
* {{T60}}&lt;br /&gt;
* {{Z61m}}&lt;br /&gt;
* {{R60}} - Lenovo R60 contains X1400 chipset&lt;br /&gt;
&lt;br /&gt;
[[Category:Components]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=HDAPS&amp;diff=33684</id>
		<title>HDAPS</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=HDAPS&amp;diff=33684"/>
		<updated>2007-10-05T21:18:14Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Kernel patch (apply using 'patch -p1 -l &amp;lt; hdaps_xx.patch') */ update to latest patches&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;
=== HDAPS - IBM Active Protection System Linux Driver ===&lt;br /&gt;
This is the Linux driver for monitoring the accelerometer known as [[Active Protection System|IBM Active Protection System]].&lt;br /&gt;
&lt;br /&gt;
The driver only enables reading of the acceleration data. It does '''not''' perform [[#Harddisk Protection|automatic disk head parking]]. But there are already some other useful [[#Applications|applications]] for HDAPS, using the {{path|/sys}} interface it provides.&lt;br /&gt;
&lt;br /&gt;
{{WARN|There are two versions of the hdaps driver, one in the Linux kernel mainline, and another provided by [[tp_smapi]].  '''Use of the tp_smapi version of hdaps is strongly recommended by the current hdaps developers.'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
*provides accelerometer values via sysfs&lt;br /&gt;
*provides a joystick type input device&lt;br /&gt;
&lt;br /&gt;
=== Project Homepage / Availability ===&lt;br /&gt;
*[http://hdaps.sourceforge.net/ Project Homepage]&lt;br /&gt;
*The driver is included in the 2.6-mm series of kernels since August, 26th 2005.&lt;br /&gt;
*The driver is now in the mainline (2.6.14).&lt;br /&gt;
*The [[tp_smapi]] package contains some patches to this driver. These are necessary for some recent models, and recommended for all.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
A driver is included in recent Linux kernels and is actively maintained, but it is very inferior to the driver in tp_smapi (which provides its own hdaps module).&lt;br /&gt;
&lt;br /&gt;
=== How to install the driver ===&lt;br /&gt;
If you are using a version of the Linux kernel &amp;lt; 2.6.14, please upgrade. I struggled long and hard to get the driver working with an old version of the kernel, and it was a mess. I gave up, upgraded my kernel, and one recompile later, HDAPS was working. &lt;br /&gt;
&lt;br /&gt;
For 2.6.18 kernel, T60 users have to edit hdaps_init() in drivers/hwmon/hdaps.c to include a HDAPS_DMI_MATCH_LENOVO(&amp;quot;ThinkPad T60&amp;quot;) line.&lt;br /&gt;
&lt;br /&gt;
Install the tp_smapi module if you experience problems with hdaps always reading out constant values of (0,0) [http://sourceforge.net/mailarchive/message.php?msg_id=15350314 refer]&lt;br /&gt;
&lt;br /&gt;
=== Harddisk Protection ===&lt;br /&gt;
As mentioned above, the hdaps kernel driver is only responsible for reading the accelerometer data and exporting it through the sysfs interface. In order to use this information to protect the disk, some additional steps are required.&lt;br /&gt;
&lt;br /&gt;
See [[How to protect the harddisk through APS]].&lt;br /&gt;
&lt;br /&gt;
=== Input device support ===&lt;br /&gt;
The hdaps driver in the lastest kernels (2.6.14 and later?) also exports a joystick type input device, which can be used by games.&lt;br /&gt;
&lt;br /&gt;
=== Applications ===&lt;br /&gt;
====Disk head parking====&lt;br /&gt;
You will need the kernel patch and userspace daemon. The GUI monitoring is optional.&lt;br /&gt;
&lt;br /&gt;
See [[How to protect the harddisk through APS]] for more information.&lt;br /&gt;
&lt;br /&gt;
===== Kernel patch (apply using 'patch -p1 -l &amp;lt; hdaps_xx.patch') =====&lt;br /&gt;
*[http://lwn.net/Articles/154923/ disk park patch] &amp;lt;tt&amp;gt;an experimental patch for parking the disk (Linux 2.6.14 for 2.6.15 see below)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://jenster.dyndns.org/files/blk_freeze-01-nodetection-for-2.6.14.patch disk park patch adapted for the t41p model] &amp;lt;tt&amp;gt; kernel 2.6.14 ([http://sourceforge.net/mailarchive/message.php?msg_id=13214288 capability detection disabled], no libata support)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://jenster.dyndns.org/files/blk_freeze-01-nodetection-for-2.6.15.patch disk park patch adapted for the t41p model] &amp;lt;tt&amp;gt; kernel 2.6.15 ([http://sourceforge.net/mailarchive/message.php?msg_id=13214288 capability detection disabled], no libata support)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/hdaps_protect.20060118.patch sata/ide disk protection patch for 2.6.15]&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/hdaps_protect.20060430.patch Latest sata/ide disk protection patch for 2.6.16]&lt;br /&gt;
*[http://whoopie.gmxhome.de/linux/patches/2.6.16-tj/05-hdaps_protect-20060430-for-2.6.16-tj.patch Latest sata/ide disk protection patch for use with the libata hotplug 2.6.16.16 patches] - See [[How_to_hotswap_UltraBay_devices]]&lt;br /&gt;
*[http://whoopie.gmxhome.de/linux/patches/2.6.17.14-tj/03-hdaps_protect-20060430-for-2.6.17-tj.patch Latest sata/ide disk protection patch for use with the libata hotplug 2.6.17.4 patches] - See [[How_to_hotswap_UltraBay_devices]]&lt;br /&gt;
*[http://exitzero.de/t41p-configs/hdaps_protect-2.6.17.1-20060625.patch Untested patch for 2.6.17.1]: see [http://thread.gmane.org/gmane.linux.drivers.hdaps.devel/708/focus=708]&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/hdaps_protect-2.6.18.3-2.patch Latest sata/ide disk protection patch for 2.6.18.3]&lt;br /&gt;
*[http://article.gmane.org/gmane.linux.kernel/470413 Latest sata/ide disk protection patch for 2.6.19-rc6]&lt;br /&gt;
*[http://www.nabble.com/attachment/9047418/0/hdaps_protect-2.6.20.patch.bz2 Latest sata/ide disk protection patch for 2.6.20] (old design)&lt;br /&gt;
*[http://article.gmane.org/gmane.linux.drivers.hdaps.devel/993 Latest sata/ide disk protection patch for 2.6.20 and 2.6.21] (new design)&lt;br /&gt;
*[http://article.gmane.org/gmane.linux.drivers.hdaps.devel/1077 Latest sata/ide disk protection patch for 2.6.22.9 and 2.6.23-rc9] (new design)&lt;br /&gt;
&lt;br /&gt;
===== Userspace daemon =====&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/hdapsd-20070524.c Recommended version]&lt;br /&gt;
*[http://article.gmane.org/gmane.linux.drivers.hdaps.devel/1045 Reduced power version] - reduces timer interrupts, as measured by [[PowerTOP]]. This leads to lower power consumption on [[tickless kernel|tickless kernels]]. Interrupt reduction requires the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; kernel module from [[tp_smapi]] 0.32 or newer, and a [http://article.gmane.org/gmane.linux.drivers.hdaps.devel/1040 udev rule].&lt;br /&gt;
*[ftp://rohrmoser-engineering.de/pub Modified adaptive algorithm version] - uses a different (and potentially better) algorithm for the adaptive sensivity threshold.&lt;br /&gt;
&lt;br /&gt;
===== GUI monitoring =====&lt;br /&gt;
*[http://roy.marples.name/node/269 khdapmonitor] KDE System Tray Monitor&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/gnome-hdaps-applet-20060120.tar.gz gnome-hdaps-applet] visual display of disk protection status in gnome panel&lt;br /&gt;
&lt;br /&gt;
====Security &amp;amp; safety====&lt;br /&gt;
*[[Script for theft alarm using HDAPS]]&lt;br /&gt;
&lt;br /&gt;
====Tilt monitoring====&lt;br /&gt;
*[http://www.mulliner.org/collin/gkibm-acpi.php gkhdaps] &amp;lt;tt&amp;gt;a GKrellM applet displaying tilt data&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://rlove.org/log/2005082203.html gnome-tilt] &amp;lt;tt&amp;gt;a gnome applet showing tilt data&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Visualisation of ThinkPad orientation====&lt;br /&gt;
*[http://rlove.org/log/2005082401.html hdaps-gl] &amp;lt;tt&amp;gt;a little app animating a 3D-ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[https://sourceforge.net/project/showfiles.php?group_id=138242 hdapsgl-applet] &amp;lt;tt&amp;gt; a GNOME applet animating a 3D-ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[https://sourceforge.net/project/showfiles.php?group_id=138242 wmadhps] &amp;lt;tt&amp;gt;a WindowMaker DockApp animating a 3D-ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://www.cs.cmu.edu/~ecc/gyro.tar.gz OpenGL gyroscope hack] &amp;lt;tt&amp;gt;keeps your display levelled when tilting the ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Games====&lt;br /&gt;
*[http://icculus.org/neverball/ Neverball] is quite fun with HDAPS. (You'll need to have the HDAPS joystick device)&lt;br /&gt;
*Turn your ThinkPad into a Jedi Weapon (hey, it [http://isnoop.net/blog/2006/05/20/macsaber-turn-your-mac-into-a-jedi-weapon works for Mac laptops])&lt;br /&gt;
&lt;br /&gt;
====Other====&lt;br /&gt;
&lt;br /&gt;
*[http://blog.micampe.it/articles/2006/06/04/here-comes-the-smackpad smack.py] - switch workspace by smacking your laptop, inspired by the [http://blog.medallia.com/2006/05/smacbook_pro.html SmackBook] (uses EWMH)&lt;br /&gt;
**an [http://weblogs.mozillazine.org/gerv/archives/2006/09/stablilised_smackpad.html improved version] adds stabilization (by comparing smacks to previous ones, uses EWMH)&lt;br /&gt;
**another [http://pberndt.com/Programme/Linux/pyhdaps/index.html approach] adds stabilization (by requiring a certain type of value deflection, uses xmacroplay)&lt;br /&gt;
**[http://www.gnome.org/~fherrera/gtollina.c GTollina] is another smack program for use with compiz (video [http://www.gnome.org/~fherrera/blog/gtollina.html here]).&lt;br /&gt;
*[http://blog.odonnell.nu/61.html xmms-smack.py] - move through your xmms playlist by smacking, based on the two smack scripts above.&lt;br /&gt;
*[http://www-128.ibm.com/developerworks/linux/library/l-knockage.html?ca=dgr-lnxw02aKnockBasedCommands KnockBasedCommands] - Execute commands by tapping your laptop.&lt;br /&gt;
*[http://people.ksp.sk/~mic/?menu=32&amp;amp;file=rotate.py rotate.py] - rotate desktop by turning your laptop&lt;br /&gt;
&lt;br /&gt;
=== Interesting links related to this project ===&lt;br /&gt;
* [https://lists.sourceforge.net/lists/listinfo/hdaps-devel HDAPS mailinglist and its archive]&lt;br /&gt;
* #hdaps channel on irc.freenode.org&lt;br /&gt;
* [https://sourceforge.net/projects/hdaps/ hdaps projects] overview of userspace programs using hdaps&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=TPAD-HDFIRM IBM ThinkPads hardware drive firmware site]&lt;br /&gt;
* [http://www.paul.sladen.org/thinkpad-r31/accelerometer.html http://www.paul.sladen.org/thinkpad-r31/accelerometer/]&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=119845 Gentoo ebuild for hdaps driver and daemon including a initscript*&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137345 Gentoo ebuild for gkhdaps gkrell plugin&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137350 Gentoo ebuild for hdaps-gl application&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137351 Gentoo ebuild for gnome hdapsgl-applet&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137352 Gentoo ebuild for gnome tilt application&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137353 Gentoo ebuild for wmhdaps&lt;br /&gt;
* [http://lenovoblogs.com/insidethebox/?p=71 Why the ThinkPad accelerometer is only 2D] - explanation by Lenovo&lt;br /&gt;
&lt;br /&gt;
[[Category:R50]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[Category:R60]] [[Category:T41]] [[Category:T41p]] [[Category:T42]] [[Category:T42p]] [[Category:T43]] [[Category:T43p]] [[Category:T60]] [[Category:T60p]] [[Category:T61]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:X60]] [[Category:X60s]] [[Category:Z60m]] [[Category:Z60t]] [[Category:Drivers]] [[Category:Z61m]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Ipw2200&amp;diff=33681</id>
		<title>Ipw2200</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Ipw2200&amp;diff=33681"/>
		<updated>2007-10-05T15:37:49Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Status */ update versions&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;
=== Intel PRO/Wireless 2200/2915 Driver for WiFi ===&lt;br /&gt;
Linux driver for the 802.11bg and 802.11abg NICs - miniPCI cards - found in Centrino laptops. This driver only works on 2.6.x kernels (2.6.4 or newer).&lt;br /&gt;
&lt;br /&gt;
Starting with kernels 2.6.14 the driver is included in kernel.&lt;br /&gt;
&lt;br /&gt;
The following adapters sold by IBM use these chips:&lt;br /&gt;
* [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]]&lt;br /&gt;
* [[Intel PRO/Wireless 2915ABG Mini-PCI Adapter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|Make sure you have installed the firmware! The ipw2200 documentation will tell you where to find these firmware files and where to install those.}}&lt;br /&gt;
&lt;br /&gt;
=== Project Homepage / Availability ===&lt;br /&gt;
http://ipw2200.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
Included in mainline Linux kernels, tracking the SourceForge version with about 6 months delay.&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
*{{Fedora}} Packages(1): Fedora Core includes the ipw2200-drivers in FC3 (with updates) and FC4. You still need to grab the firmware from http://rpm.livna.org/&lt;br /&gt;
*{{Fedora}} Packages(2): http://www.atrpms.net/name/ipw2200/ &lt;br /&gt;
*{{Mandriva}}: The ipw2200 driver modules are included in the stock kernel package; the firmware is included in the commercial distribution or available from http://plf.zarb.org/.&lt;br /&gt;
*{{Gentoo}}: The driver is in the portage tree: emerge net-wireless/ipw2200 and net-wireless/ipw2200-firmware&lt;br /&gt;
*{{Debian Sarge}} includes the source code for the modules in package ipw2200-source (http://packages.debian.org/ipw2200-source). You additionally need to download firmware manually.&lt;br /&gt;
*{{Debian Etch}} includes a version of the modules in its kernel or for a later version install package ipw2200-modules-2.6-486 or ipw2200-modules-2.6-686 or ipw2200-modules-2.6-686-bigmem or ipw2200-modules-2.6-k7 or  ipw2200-modules-2.6-amd64; or the source code for them in ipw2200-source (http://packages.debian.org/ipw2200-source) to compile one yourself. You additionally need to download firmware manually.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
In development, usable, WEP 128bit encryption works, WPA and WPA2 work with drivers &amp;gt;= 1.0.2 using [[wpa_supplicant]], monitor/rfmon is supported as with version &amp;gt;= 1.0.6. Generally works well, but some users experience problems (especially with firmware restarts and with WPA functionality using [[wpa_supplicant]]). Passing the &amp;lt;tt&amp;gt;hwcrypto=0&amp;lt;/tt&amp;gt; module parameter improves reliability for many users.&lt;br /&gt;
&lt;br /&gt;
The [[ipw2200]] driver up to version 1.0.6 (in combination with some newer kernels) had a problem getting DHCP leases (it turned out to be a bug in the broadcasting code). Version 1.0.7 seems to have fixed this.&lt;br /&gt;
&lt;br /&gt;
Older [[ipw2200]] driver versions shipped by many distributions have been reported to freeze a T43 after several minutes of intensive communication.  Installing version 1.1.2 of the driver solved the problem.&lt;br /&gt;
&lt;br /&gt;
Latest stable versions:&lt;br /&gt;
* ipw2200 driver: 1.2.0&lt;br /&gt;
* firmware: 3.0&lt;br /&gt;
* ieee80211 stack: 1.2.15&lt;br /&gt;
&lt;br /&gt;
Latest development versions:&lt;br /&gt;
* ipw2200 driver: 1.2.2&lt;br /&gt;
* firmware: 3.0&lt;br /&gt;
* ieee80211 stack: 1.2.18&lt;br /&gt;
&lt;br /&gt;
Mainline kernels contain older (but mostly functional) versions of ipw2200 and ieee80211, and still require the addition of the [http://ipw2200.sourceforge.net/firmware.php firmware] files. To get the latest versions you need to separately install the [http://ipw2200.sourceforge.net/downloads.php ipw2200] module and [http://ieee80211.sourceforge.net/downloads.php ieee80211] stack.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Installation from sourcecode ===&lt;br /&gt;
Download the latest [http://ieee80211.sourceforge.net/downloads.php ieee80211] stack and install it:&lt;br /&gt;
:{{cmdroot|tar xzvf ieee80211-1.2.15.tgz}}&lt;br /&gt;
:{{cmdroot|cd ieee80211-1.2.15}}&lt;br /&gt;
:{{cmdroot|make}}&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
Download the latest [http://ipw2200.sourceforge.net/downloads.php ipw2200] module and install it:&lt;br /&gt;
:{{cmdroot|tar xzvf ipw2200-1.2.0.tgz}}&lt;br /&gt;
:{{cmdroot|cd ipw2200-1.2.0}}&lt;br /&gt;
:{{cmdroot|make}}&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
Download the matching [http://ipw2200.sourceforge.net/firmware.php firmware] and install it:&lt;br /&gt;
:{{cmdroot|tar xzvf ipw2200-fw-3.0.tgz -C /lib/firmware}}&lt;br /&gt;
&lt;br /&gt;
=== Installation on Debian Sarge ===&lt;br /&gt;
{{cmdroot|apt-get install ipw2200-source}}&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|module-assistant -t build ipw2200-source}}&lt;br /&gt;
&lt;br /&gt;
[is this how module-assistant works in Sarge?]&lt;br /&gt;
&lt;br /&gt;
=== Installation on Debian Etch ===&lt;br /&gt;
&lt;br /&gt;
The kernel includes a version but if you want a more recent version install the module ipw2200-modules-2.6-486 or ipw2200-modules-2.6-686 or ipw2200-modules-2.6-686-bigmem or ipw2200-modules-2.6-k7 or ipw2200-modules-2.6-amd64 depending on your architecture.&lt;br /&gt;
&lt;br /&gt;
The firmware is not distributed with Debian due to licensing reasons, download the matching version 3.0  [http://ipw2200.sourceforge.net/firmware.php firmware] and install it:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|tar -xvf ipw2200-fw-3.0.tgz -C /lib/firmware}}&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|mv /lib/firmware/ipw2200-fw-3.0/* /lib/firmware}}&lt;br /&gt;
&lt;br /&gt;
=== Installation on Debian Unstable ===&lt;br /&gt;
Install ieee80211-source:&lt;br /&gt;
:{{cmdroot|apt-get install ieee80211-source}}&lt;br /&gt;
:{{cmdroot|module-assistant -t build ieee80211-source}}&lt;br /&gt;
&lt;br /&gt;
The kernel includes a version but if you want a more recent version install the module ipw2200-modules-2.6-486 or ipw2200-modules-2.6-686 or ipw2200-modules-2.6-686-bigmem or ipw2200-modules-2.6-k7 or ipw2200-modules-2.6-amd64 depending on your architecture.&lt;br /&gt;
&lt;br /&gt;
There is a bug in the {{Debian}} package (last checked: Dec 30th 2005) that prevents from linking to &amp;lt;tt&amp;gt;ieee80211&amp;lt;/tt&amp;gt; modules using module-assistant. In case it is not fixed in your version, fall back to the regular source installation procedure described above.&lt;br /&gt;
&lt;br /&gt;
The firmware is not distributed with Debian due to licensing reasons, download the matching [http://ipw2200.sourceforge.net/firmware.php firmware] and install it:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|tar xzvf ipw2200-fw-2.4.tgz -C /usr/lib/hotplug/firmware}}&lt;br /&gt;
&lt;br /&gt;
see /etc/hotplug/firmware.agent for details on configured firmware locations&lt;br /&gt;
&lt;br /&gt;
Make sure that your firmware files are not in a subdirectory (dmesg will give you warnings after any modprobe when firmware can't be loaded)&lt;br /&gt;
&lt;br /&gt;
=== Installation on Fedora Core ===&lt;br /&gt;
Installation on Fedora Core 5 works out of the box provided you install the ipw2200-firmware package. However, certain parts of the install process may not set up the wireless networking in a friendly manner using GNOME system tray icons and other tools. Bill Moss has written some excellent HowTo articles, including using VPNC to connect to a remote Cisco IPSec network.&lt;br /&gt;
&lt;br /&gt;
* [http://www.ces.clemson.edu/linux/fc2-ipw2200.shtml Fedora Core 5 and the IPW2200 Wireless Driver]&lt;br /&gt;
* [http://www.ces.clemson.edu/linux/nm.shtml Fedora Core 5 NetworkManager, NetworkManager-vpnc and Wireless Driver IPW2200]&lt;br /&gt;
&lt;br /&gt;
===Testing the driver ===&lt;br /&gt;
:{{cmdroot|modprobe ipw2200}}&lt;br /&gt;
:{{cmdroot|iwconfig}}&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|dmesg}} output might look similar to this:&lt;br /&gt;
 ieee80211: 802.11 data/management/control stack, 1.1.6&lt;br /&gt;
 ieee80211: Copyright (C) 2004-2005 Intel Corporation &amp;lt;jketreno@linux.intel.com&amp;gt;&lt;br /&gt;
 ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.0.8&lt;br /&gt;
 ipw2200: Copyright(c) 2003-2005 Intel Corporation&lt;br /&gt;
 ipw2200: Detected Intel PRO/Wireless 2915ABG Network Connection&lt;br /&gt;
&lt;br /&gt;
NB: To make the wifi LED work on the thinkpad, pass the option {{bootparm|led|1}} to the kernel while loading the module. eg. {{cmdroot|1=modprobe ipw2200 led=1}}.  This can also be accomplished by adding that option to the file where your distribution looks for modprobe options so that it becomes automatic.&lt;br /&gt;
&lt;br /&gt;
In debian this can be done by putting a file named after the module in /etc/modutils with the options in it&lt;br /&gt;
&lt;br /&gt;
here we might run a cmd like this&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|1=echo options ipw2200 led=1 &amp;gt; /etc/modutils/ipw2200 }}&lt;br /&gt;
&lt;br /&gt;
then we must run update-modules to remake /etc/module.conf&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|update-modules}}&lt;br /&gt;
&lt;br /&gt;
== WPA support ==&lt;br /&gt;
&lt;br /&gt;
Use [[wpa_supplicant]] with the &amp;lt;tt&amp;gt;-Dwext&amp;lt;/tt&amp;gt; argument (not &amp;lt;tt&amp;gt;-Dipw&amp;lt;/tt&amp;gt;), and pass the &amp;lt;tt&amp;gt;hwcrypto=0&amp;lt;/tt&amp;gt; argument to the &amp;lt;tt&amp;gt;ipw2200&amp;lt;/tt&amp;gt; module.&lt;br /&gt;
&lt;br /&gt;
There are some very detailed instructions with working sample configurations on the following link:&lt;br /&gt;
[http://www.bughost.org/ipw/wpa_howto.txt ipw2200 WPA instruction]&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
The ipw2200 driver has power management capabilities, which comes in handy while operating on battery. &lt;br /&gt;
&lt;br /&gt;
To enable reduced power consumption mode, issue: &lt;br /&gt;
:{{cmdroot|iwpriv wlan0 set_power 7}}&lt;br /&gt;
where &amp;lt;tt&amp;gt;wlan0&amp;lt;/tt&amp;gt; is the name of your interface. This will reduce idle power consumption by 1-2 Watts compared to no power management. To return to the &amp;quot;normal&amp;quot; operation mode, you can issue:&lt;br /&gt;
:{{cmdroot|iwpriv wlan0 set_power 6}}.&lt;br /&gt;
&lt;br /&gt;
In order to check current settings, you can issue:&lt;br /&gt;
:{{cmdroot|iwpriv wlan0 get_power}}.&lt;br /&gt;
&lt;br /&gt;
More information on these option is available in the {{path|README.ipw3945}} file in the &amp;lt;tt&amp;gt;ipw3945&amp;lt;/tt&amp;gt; package ({{path|README.ipw2200}} seems to be rather sketchy about the details of power management). You may want to turn power management on/off on demand in an ACPI script that catches battery/AC events, so that this happens automatically.&lt;br /&gt;
&lt;br /&gt;
Note that there have been [http://www.bughost.org/bugzilla/show_bug.cgi?id=1074 reports] that some versions of ipw2200 react with a firmware error to power management commands. This [http://www.bughost.org/bugzilla/attachment.cgi?id=1024 patch] could alleviate the problem.&lt;br /&gt;
&lt;br /&gt;
*To disable the radio (and further reduce power consumption) when the card is not in use, issue:&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/bus/pci/drivers/ipw2200/*/rf_kill}}&lt;br /&gt;
*To enable the radio, issue:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/bus/pci/drivers/ipw2200/*/rf_kill}}&lt;br /&gt;
*To make the radio off by default after boot, add &lt;br /&gt;
 options ipw2200 disable=1&lt;br /&gt;
to your {{path|/etc/modprobe.conf}} or equivalent (on kubuntu 6.10 {{path|/etc/modprobe.d/options}}).&lt;br /&gt;
&lt;br /&gt;
See {{path|README.ipw2200}} in the &amp;lt;tt&amp;gt;ipw2200&amp;lt;/tt&amp;gt; package for details and other options.&lt;br /&gt;
&lt;br /&gt;
== Changing the enabled channels ==&lt;br /&gt;
Permitted WiFi channels vary with geography due to regulation. The EEPROM in this chip contains a country code (programmed by the hardware manufacturer), and the driver converts this to a channel list and enforces it.&lt;br /&gt;
&lt;br /&gt;
If you carry your laptop to a different regulatory region, you may need to change the list of permitted channels according to local regulations. There are two ways to accomplish this:&lt;br /&gt;
&lt;br /&gt;
===Patching the ipw2200 driver===&lt;br /&gt;
You can alter the ipw2200 driver sourcecode to hard-code the country code instead of reading it from EEPROM. For example, this will allow all 14 channels (perfect for those special occasions in international water):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- ipw2200.c.orig&lt;br /&gt;
+++ ipw2200.c&lt;br /&gt;
@@ -11344,7 +11344,7 @@ static int ipw_up(struct ipw_priv *priv)&lt;br /&gt;
 		memcpy(priv-&amp;gt;net_dev-&amp;gt;dev_addr, priv-&amp;gt;mac_addr, ETH_ALEN);&lt;br /&gt;
 &lt;br /&gt;
 		for (j = 0; j &amp;lt; ARRAY_SIZE(ipw_geos); j++) {&lt;br /&gt;
-			if (!memcmp(&amp;amp;priv-&amp;gt;eeprom[EEPROM_COUNTRY_CODE],&lt;br /&gt;
+			if (!memcmp(&amp;quot;ZZR&amp;quot;,&lt;br /&gt;
 				    ipw_geos[j].name, 3))&lt;br /&gt;
 				break;&lt;br /&gt;
 		}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the list of codes and their meaning, see the &amp;quot;&amp;lt;tt&amp;gt;ipw_geos&amp;lt;/tt&amp;gt;&amp;quot; table in the [http://lxr.free-electrons.com/source/drivers/net/wireless/ipw2200.c#10382 ipw2200.c sourcecode].&lt;br /&gt;
&lt;br /&gt;
===Patching the EEPROM===&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can change the country code in the EEPROM once and for all, and then use the standard ipw2200 driver.&lt;br /&gt;
&lt;br /&gt;
See this guide:&lt;br /&gt;
* [http://saftware.de/#ipw2200 Patching the EEPROM].&lt;br /&gt;
&lt;br /&gt;
Instead of the &amp;lt;tt&amp;gt;hd&amp;lt;/tt&amp;gt; program mentioned there, you can use the more common &amp;lt;tt&amp;gt;od&amp;lt;/tt&amp;gt; program:&lt;br /&gt;
 echo -n ZZD | od -t x1&lt;br /&gt;
 0000000 5a 5a 44&lt;br /&gt;
 0000003&lt;br /&gt;
&lt;br /&gt;
{{WARN|If this procedure goes wrong, you may ruin your wireless card.}}&lt;br /&gt;
&lt;br /&gt;
== Additional Comments ==&lt;br /&gt;
Your kernel may include an old version of the ipw2200 driver. It is recommended to use the latest version.&lt;br /&gt;
&lt;br /&gt;
Make sure you also install the firmware version needed by the driver version you use. You can find the firmware [http://ipw2200.sourceforge.net/firmware.php here]. To install it, decompress the &amp;lt;tt&amp;gt;.tgz&amp;lt;/tt&amp;gt; file into {{path|/usr/lib/hotplug/firmware}} or {{path|/lib/firmware}} depending on your disto.&lt;br /&gt;
&lt;br /&gt;
The driver doesn't appear to support the MII interface, so any tools like automatic network configuration managers (i.e. whereami) that rely on mii-tool do not work.&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Ubuntu_7.04_(Feisty_Fawn)_on_a_ThinkPad_T61&amp;diff=33196</id>
		<title>Installing Ubuntu 7.04 (Feisty Fawn) on a ThinkPad T61</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Ubuntu_7.04_(Feisty_Fawn)_on_a_ThinkPad_T61&amp;diff=33196"/>
		<updated>2007-09-17T14:55:10Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: it's invert, not inverted&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On the T61, [[Installing_Ubuntu_7.10_(Gutsy_Gibbon)_Tribe_5_on_a_ThinkPad_T61|Ubuntu 7.10 (Gutsy Gibbon)]] is recommended instead of 7.04 because video drivers and wifi, among other issues, work by default.&lt;br /&gt;
recomended&lt;br /&gt;
&lt;br /&gt;
===My DVD drive/CD burner/DVD burner doesn't work (Solved)===&lt;br /&gt;
&lt;br /&gt;
Follow these instructions to enable your [http://en.wikipedia.org/wiki/Optical_drive optical drive]:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Reboot your T61. Press the ThinkVantage button quickly when you see the ThinkPad screen and then press F1 enter [http://en.wikipedia.org/wiki/BIOS BIOS].&amp;lt;br&amp;gt;&lt;br /&gt;
2) In BIOS, select Configure -&amp;gt; Serial ATA.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Now, select Compatibility instead of AHCI.&amp;lt;br&amp;gt;&lt;br /&gt;
4) Exit BIOS and start your computer normally.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Go to Places -&amp;gt; Computer, right-click your CD-ROM/DVD/etc. drive, and select Properties. Then, go to Drive -&amp;gt; Settings. Set the mount point to ''cdrom'' (regardless of whether it's a CD-ROM drive, DVD drive, etc.).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
At first, the Ubuntu Live CD would not start at all, this seems to be a problem with the SATA AHCI driver.  I had to go into the BIOS and change the SATA driver from ACHI to compatibility (What is the difference? Am I loosing performance?).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
After you've installed and booted, try the advice from [[Problems_with_SATA_and_Linux]]. Do this:&lt;br /&gt;
 '''# echo options libata atapi_enabled=1&amp;gt;/etc/modprobe.d/atapienable &amp;amp;&amp;amp; update-initramfs -u'''&lt;br /&gt;
Then try turning AHCI back on in the BIOS. On a custom-built 2.6.21.5 kernel, my DVD drive appears as /dev/hda and DMA works.&lt;br /&gt;
--[[User:Kc8tbe|Kc8tbe]] 12:45, 1 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
If your DVD drive does not appear, modprobe pata-jmicron and ide-generic.&lt;br /&gt;
--[[User:Antikristian|Antikristian]] 01:23, 30 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
===NVIDIA Quadro NVS 140M (Solved)===&lt;br /&gt;
After initial issues like those explained above in the SATA Issues, I received the xorg error 'fatal error: no screens found'.  I was able to boot into Safe Graphics Mode and run the installer, though I had to move both window manager bars to see enough of the install window to use it.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can download the drivers via wget in a console. Take care to follow the instructions in &lt;br /&gt;
[http://www.nvnews.net/vbulletin/showthread.php?t=72490 the NVidia Forum] and uninstall all the packages wit apt-get remove, as described.&lt;br /&gt;
Then run the nvidia installer.&lt;br /&gt;
&lt;br /&gt;
Remember that, after you upgrade the kernel, you also have to re-install the drivers.&lt;br /&gt;
&lt;br /&gt;
After installing the NVIDIA drivers, your laptop may not wake after suspend or hibernation.  I followed these instructions to fix it [https://help.ubuntu.com/community/NvidiaLaptopBinaryDriverSuspend Ubuntu Community Help].&lt;br /&gt;
&lt;br /&gt;
====Alternative NVIDIA driver installation====&lt;br /&gt;
Instead of installing the NVIDIA drivers manually as described above, you can try using [http://www.albertomilone.com/nvidia_scripts1.html Envy]. It automatically installs the latest NVIDIA drivers, and cleans up any previous installations.&lt;br /&gt;
&lt;br /&gt;
=== Intel Graphics Media Accelerator X3100 (Chipset GM965) (Solved)===&lt;br /&gt;
After that the CD seemed to boot but the screen was just garbage [http://shadowarts.nonlogic.org/projects/thinkpad/screen_garbage.jpg Picture].  In order to get around that issue I had to go back and download the Alternate CD, which allows you to install in text only mode. From here, the text-only install went okay. Changing the VGA settings on the regular CD worked for me. &lt;br /&gt;
&lt;br /&gt;
When I booted up after the installation, I was still getting the same garbage on the screen.  To resolve this I edited my [http://shadowarts.nonlogic.org/projects/thinkpad/xorg.conf xorg.conf] file as shown.  I also had to install the latest kernel for Feisty, as the one off of the install disk did have have /dev/agpgart.  And I could then use X11.  There were still some issues however.  The screen seemed somewhat fuzzy.  This was a little more challenging of a fix...  I found [http://www.spinics.net/lists/xorg/msg25099.html this] mailing list posting, according to it, there was a small glitch in the driver.  To fix it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get source xserver-xorg-video-intel&lt;br /&gt;
cd xserver-xorg-video-intel-1.9.94/&lt;br /&gt;
vim src/i830_lvds.c&lt;br /&gt;
Goto line 230 and delete (PFIT_ENABLE | VERT_AUTSCALE ....);, replacing it with 0;  then quit vim&lt;br /&gt;
dpkg-buildpackage -rfakeroot -uc -b&lt;br /&gt;
cd ..&lt;br /&gt;
dpkg -i xserver-xorg-video-intel_1.9.94-lubuntu3_amd64.deb (wont be amd64 with a 32-bit install)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now reboot your computer, and it should work.  **NOTE: For some reason just restarting X didn't fix it, seems like you must reboot.**  At this point you should have a nice, crisp display.&lt;br /&gt;
&lt;br /&gt;
I am still working on aiglx and compiz (switching desktops on a cube doesnt seem to work, though I have some ideas...).  There are some issues with OpenGL apps freezing Xorg as well, but the standard 2D desktop works flawlessly.&lt;br /&gt;
----&lt;br /&gt;
It doesn't seem to be necessary to modify the soruce of xserver-xorg-video-intel anymore, but 3D-acceleration doesn't seem to be stable yet and kdm occasionally needs to be restarted after a login attempt.--[[User:Kc8tbe|Kc8tbe]] 12:49, 1 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I was able to use the normal feisty install disk by changing the SATA setting in BIOS, then change the resolution to 800x600 prior to install, then sudo apt-get update and upgrade, and then sudo apt-get install xserver-xorg-video-intel, then change xorg.conf to match link above and 2D graphics work fine.  Jul 18, 2008 - John E&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
It seems that everything works fine when using &amp;quot;apt pinning&amp;quot; and updating the xserver-xorg-video-intel, mesa and other packages to the versions provided by Gutsy. I did the following and the resolution and Compiz Fusion are working fine at the moment. The original source of the steps described below can be found here: [http://techreport.com/forums/viewtopic.php?p=714998#714998]&lt;br /&gt;
&lt;br /&gt;
'''Instructions:'''&lt;br /&gt;
* Make a new file /etc/apt/preferences&lt;br /&gt;
* In the preferences file, put: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: *&lt;br /&gt;
Pin: release a=feisty&lt;br /&gt;
Pin-Priority: 700&lt;br /&gt;
&lt;br /&gt;
Package: *&lt;br /&gt;
Pin: release a=gutsy&lt;br /&gt;
Pin-Priority: 200&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now, edit your sources.list and copy the main and restricted (and others if you want) repo lines replacing feisty with gutsy: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# original&lt;br /&gt;
deb http://archive.ubuntu.com/ubuntu feisty main restricted universe multiverse&lt;br /&gt;
deb-src http://security.ubuntu.com/ubuntu feisty main restricted universe multiverse&lt;br /&gt;
&lt;br /&gt;
# your addition&lt;br /&gt;
deb http://archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse&lt;br /&gt;
deb-src http://security.ubuntu.com/ubuntu gutsy main restricted universe multiverse&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get -t gutsy install xserver-xorg-video-intel&lt;br /&gt;
sudo apt-get -t gutsy install linux&lt;br /&gt;
sudo apt-get -t gutsy install libgl1-mesa-dri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now reboot.&lt;br /&gt;
&lt;br /&gt;
Probably now you have the weird effect that your GUI is scaled wrong and doesn't fill the full width of the monitor. To fix that, open your xorg.conf and make the following changes:&lt;br /&gt;
* Add the following section to your xorg.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;TVOutput&amp;quot;&lt;br /&gt;
    Option &amp;quot;Disable&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Then in the &amp;quot;Device&amp;quot; section add the following line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option &amp;quot;monitor-TV&amp;quot; &amp;quot;TVOutput&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That should fix the scaling problem and now everything should work fine.&lt;br /&gt;
--[[User:Shuk|Shuk]] 02:26, 10 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
===ThinkFinger===&lt;br /&gt;
Ubuntu does not come with a package for thinkfinger.  Downloading the most recent source and building it was simple enough: Download most recent version (0.3 at time of writing)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install libpam0g-dev libusb-dev&lt;br /&gt;
tar xvzf thinkfinger-0.3.tar.gz&lt;br /&gt;
cd thinkfinger-0.3/&lt;br /&gt;
./configure --with-securedir=/lib/security --with-birdir=/etc/pam_thinkfinger&lt;br /&gt;
make -j5             (hey its dual core!)&lt;br /&gt;
sudo make install&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuring it is easy as well, open /etc/pam.d/common-auth:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth sufficient pam_thinkfinger.so&lt;br /&gt;
auth required pam_unix.so try_first_pass nullok_secure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the data directory and set your fingerprint:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
subo mkdir /etc/pam_thinkfinger&lt;br /&gt;
sudo tf-tool --add-user &amp;lt;username&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It will all be setup.  (I found this somewhere on the web, I wish I could give a source but I'm afraid I cant find it, thank you Anonymous!).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*I am having trouble. I get this error with the last command on the above instructions &amp;quot;tf-tool: error while loading shared libraries: libthinkfinger.so.0: cannot open shared object file: No such file or directory&amp;quot;&lt;br /&gt;
*type &amp;quot;ldconfig&amp;quot; as root after make insall. Then the it will work! (pls somebody refresh this article, im not familiar with wiki, sorry)&lt;br /&gt;
&lt;br /&gt;
===HDAPS===&lt;br /&gt;
This seems to be working fine now, I just follow the step on [[How_to_protect_the_harddisk_through_APS]].  Using hdaps-gl does the inverse of the accelerometer, though it's not really a big deal, the harddrive protection should still work.&lt;br /&gt;
&lt;br /&gt;
Assuming that the (improved) hdaps code bundled with tp_smapi is being used, editing the transform_axis function in tp_smapi-0.32/hdaps.c will allow for the proper operation of the accelerometer. Assuming that the accelerometer is rotated 90 degrees from its proper orientation (as it is with the X61), the following code will suffice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static void transform_axes(int *x, int *y)&lt;br /&gt;
{&lt;br /&gt;
	int temp = *x;&lt;br /&gt;
	*x = -*y;&lt;br /&gt;
	*y = temp;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For those paying attention in linear algebra, this corresponds to a linear transformation that rotates a 2D coordinate system 90 degrees.&lt;br /&gt;
--[[User:Mbsullivan|Mbsullivan]] 04:21, 27 August 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
Instead of editing the code, you can just pass the invert=1 parameter when loading the module; modprobe hdaps invert=1&lt;br /&gt;
--[[User:Vegar|Vegar]] 14:40, 17 September 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
===WiFi===&lt;br /&gt;
If you have Intel 4965AGN WiFi card, you have to use ndiswrapper OR use backported kernel from Ubuntu Gutsy (Anybody have howto?) and use following: &lt;br /&gt;
http://kuscsik.blogspot.com/2007/06/how-to-install-intel-4965-wireless.html&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
Do not use the latest versions of iwlwifi and mac80211. For me with Gutsy mac80211-8.0.2 and iwlwifi-0.0.42 work with the latest firmware. No further modification needed.&lt;br /&gt;
&lt;br /&gt;
If you have the Atheros card, Ubuntu should automatically install madwifi, which works out of the box&lt;br /&gt;
----&lt;br /&gt;
Works for me with iwlwifi-4965-ucode-4.44.15, iwlwifi-0.0.34, and mac80211-8.0.1. The catch is, you need to patch your kernel with mac80211, which will fail at compile time with the stock Ubuntu sources. Worked for me with vanilla 2.6.21.5 sources patched for tp_smapi and hdaps protect. Make sure to disable CONFIG_NET_WIRELESS_RTNETLINK in your kernel config.&lt;br /&gt;
&lt;br /&gt;
You can download what you need for for iwlwifi and mac80211 from &lt;br /&gt;
http://intellinuxwireless.org .--[[User:Kc8tbe|Kc8tbe]] 13:00, 1 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
Works for me with vanilla kernel v2.6.22.1, ucode 4.44.17, iwlwifi 0.1.2 and mac80211 9.0.2. --[[User:Mbsullivan|Mbsullivan]] 13:40, 24 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
You can also use Kernel 2.6.22.9 and Ubuntu Modules 2.6.22.9 from Gutsy and you will not need to compile anything! Works very well.&lt;br /&gt;
&lt;br /&gt;
===Keyboard/Apostrophe issues (Solved)===&lt;br /&gt;
When installing with the alternate CD, Ubuntu asks you if your keyboard as a character that appears to be a quotation mark (this character: &amp;quot;). If you're using a US English keyboard, say no; the character is actually an umlaut. [[User:SteveSims|SteveSims]] 02:15, 19 August 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
My apostrophe key outputs ´ instead of '. I went to System -&amp;gt; Preferences -&amp;gt; Keyboard and could not figure out how to fix it. [[User:SteveSims|SteveSims]] 21:50, 11 August 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Try switching your keyboard layout to US-Classic, and putting it on the top of the list.  After you do that, it works perfectly. --[[User:Adamacious|Adamacious]] 04:29, 13 August 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
::There is no &amp;quot;US Classic&amp;quot; option. Here's what I have:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Keyboard_options.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[User:SteveSims|SteveSims]] 02:17, 15 August 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::It started working, even though I changed nothing. I'm running it as a Macintosh US English keyboard. [[User:SteveSims|SteveSims]] 17:20, 15 August 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::Sorry Steve, what you had to do (and what you did) is select US English, as in the header in the list.  It doesn't look selectable, but it is.--[[User:Adamacious|Adamacious]] 20:02, 22 August 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Audio===&lt;br /&gt;
====Fixed in Gutsy====&lt;br /&gt;
As of 29 August 2007 and [https://bugs.launchpad.net/bugs/122560 this issue], the 2.6.22-10 kernel in Gutsy Gibbon supports audio out-of-the-box (as well as WiFi and other things).  Installing the Gutsy kernel via apt and rebooting fixed audio for me, both speakers and headphones.  Remaining issues:&lt;br /&gt;
&lt;br /&gt;
* The mute button mutes audio, but doesn't unmute.  Pressing volume up or down does unmute it, but has no effect on volume.&lt;br /&gt;
* KMix's system tray volume control has no effect because it thinks it's setting the headphones while both outputs are using the speaker settings, but opening KMix and setting the PCM volume works.  --lgarfiel&lt;br /&gt;
&lt;br /&gt;
====Python script fix (slightly easier fix)====&lt;br /&gt;
First, you have to download the source for the [http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.5.tar.gz latest Linux kernel] (2.6.22-5 as of August 26th, 2007) and compile it, something most users cannot do. However, you won't have to compile ALSA and its modules from source if you do it this way.&lt;br /&gt;
&lt;br /&gt;
1) Download the [http://launchpadlibrarian.net/8899521/t61_audio_hack.py T61 audio hack] from [[Launchpad]]. Move it to a convenient folder (e.g., not your desktop).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Go to System -&amp;gt; Preferences -&amp;gt; Sessions -&amp;gt; Startup Programs -&amp;gt; Add.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Name it whatever you want. Choose something simple like &amp;quot;Python audio fix.&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
4) Go to Command, and enter the following (with quotation marks):&lt;br /&gt;
&amp;lt;pre&amp;gt;gksudo &amp;lt;nowiki&amp;gt;&amp;quot;[THE FOLDER THAT T61_AUDIO_HACK.PY IS IN]&amp;lt;/nowiki&amp;gt;/t61_audio_hack.py&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
For example, on my computer, I put t61_audio_hack.py into the /fixes folder in my home folder, so I entered:&lt;br /&gt;
&amp;lt;pre&amp;gt;sksudo &amp;quot;/home/sims/fixes/t61_audio_hack.py&amp;quot;&amp;lt;/pre&amp;gt; into the Command textbox.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Log out, log back in, and type your password quickly when prompted the second time.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
[https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/122560 Launchpad Bug #122560]&lt;br /&gt;
[https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/133105 Launchpad Bug #133105]&lt;br /&gt;
&lt;br /&gt;
====ALSA driver update (hard fix, recommended for advanced users)====&lt;br /&gt;
&lt;br /&gt;
:'''''Note: This section assumes a high level of technical proficiency. Please fix it.'''''&lt;br /&gt;
::*&amp;lt;s&amp;gt;At [http://www.alsa-project.org www.asla-project.org], did you download only alsa-driver-1.0.14? That and alsa-lib-1.0.14a?&amp;lt;/s&amp;gt;&lt;br /&gt;
:::Download alsa-driver, alsa-kernel, alsa-lib, and alsa-utils, according to [http://alsa.opensrc.org/index.php/AlsaCVS http://alsa.opensrc.org/index.php/AlsaCVS]. Other sources, however, say only the driver is necessary. Perhaps alsa-project.org simply recommends the other two?&lt;br /&gt;
::*''How'' did you compile it from source? ''How'' did you add the patch?&lt;br /&gt;
::*In short, please explain ''how'' you did these things in addition to just telling us ''what'' you did. I´m not trying to be rude but seriously, not all Linux users are programmers ;). Thanks. [[User:SteveSims|SteveSims]] 22:19, 11 August 2007 (UTC)&lt;br /&gt;
After upgrading to 1.0.14 I still had no sound, and this took about a week to solved (though it was so sadly obvious though).  Just upgrading to alsa 1.0.14 will not be enough, there were a few patches released right after the release that fix the Thinkpad's.  The reason I missed this was because it was the same day so the release of 1.0.14!&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------&lt;br /&gt;
VERY SIMPLE METHOD OF MAKING SOUND WORK &lt;br /&gt;
http://forums.fedoraforum.org/showthread.php?t=159516&amp;amp;page=1&amp;amp;pp=15&lt;br /&gt;
Just follow the instructions step by step, except for two small things:&lt;br /&gt;
When doing &amp;quot;cp ../patch_analog.c alsa-driver-1.0.14/alsa-kernel/pci/hda/&amp;quot; use &amp;quot;cp ../patch_analog.c alsa-kernel/pci/hda/&amp;quot; instead&lt;br /&gt;
Also, when you get to the part about modifying the modprobe.conf file, it doesn't exist in ubuntu. Adding &amp;quot;options snd-hda-intel index=0 model=thinkpad&amp;quot; to any file (even one you make yourself) inside etc/modprobe.d should work. I personally added it to the options file, and it works fine. &lt;br /&gt;
&lt;br /&gt;
-credit for the guide goes to ciphermonk, and credit to the small changes needed to make this work on ubuntu go to my friend John. &lt;br /&gt;
&lt;br /&gt;
-hotkeys control mic volume, not speaker volume for some reason. I do not know how to fix this&lt;br /&gt;
&lt;br /&gt;
-this fix should provide sound for both headphones and speakers. &lt;br /&gt;
&lt;br /&gt;
-this edit by fatalchaos &lt;br /&gt;
---------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
First make sure these packages are installed (System -&amp;gt; Administration -&amp;gt; Synaptic Package Manager) : automake, autoconfig, cvs, libtool, python-dev, build-essential&lt;br /&gt;
&lt;br /&gt;
Then download the source code to the alsa-driver and apply these patches: (links to the revisions)&lt;br /&gt;
 &lt;br /&gt;
* [http://hg.alsa-project.org/alsa-kernel/rev/958b39f3e8dd Fix Oops with AD1984 thinkpad model]&lt;br /&gt;
* [http://hg.alsa-project.org/alsa-kernel/rev/47ca87407c84 Fix AD1984 basic model]&lt;br /&gt;
* [http://hg.alsa-project.org/alsa-kernel/rev/ca37aeeeb0ea Fix Thinkpad X61/T61 outputs]&lt;br /&gt;
&lt;br /&gt;
'''Please use CVS version of ALSA instead. All of these patches are committed'''. The link to the CVS version of ALSA is dead[http://alsa.opensrc.org/index.php/AlsaCVS].&lt;br /&gt;
&lt;br /&gt;
After doing a make and make install reboot your computer (or rrmmod snd-hda-intel &amp;amp;&amp;amp; modprobe snd-hda-intel).  And run alsamixer (for me it only works as root atm).  If you can´t find alsamixer, you can run it in the terminal (Applications -&amp;gt; Accessories -&amp;gt; Terminal) by entering ''alsamixer''. You will have to play with the settings a bit.  Make sure the speaker option is not muted and leave the Internal Mic Boost at 0, other wise you will have a really loud microphone feedback sort of sound constantly.&lt;br /&gt;
&lt;br /&gt;
I had to chmod -R 777 /dev/snd/ to get everything work for now. (THIS IS NOT THE CORRECT WAY TO DO IT, IT WILL NOT STAY BETWEEN REBOOTS!).&lt;br /&gt;
&lt;br /&gt;
Audio playback should then work, audio capture (microphone) doesn't seem to work, but I am probably not going to try and fix it, I don't use the capture so I am not concerned with that at the moment.&lt;br /&gt;
'''Update:''' With ALSA CVS, microphone seems to work&lt;br /&gt;
&lt;br /&gt;
If you can't hear the mic boost mic settings.  Here are my settings at KMix&lt;br /&gt;
Output&lt;br /&gt;
   Mic - low&lt;br /&gt;
   Mic Boost - full&lt;br /&gt;
Input &lt;br /&gt;
   Mic boost [enable] - medium&lt;br /&gt;
   capture [enable] - medium&lt;br /&gt;
&lt;br /&gt;
works great with Skype.  Also you can use the 'mic level meter' on KRecord to check the mic&lt;br /&gt;
&lt;br /&gt;
In Gnome, default channel mapped to thinkpad volume buttons is MIC, which is bad. Go to ''System-&amp;gt;Preferences-&amp;gt;Sound-&amp;gt;Default mixer tracks'' to change it&lt;br /&gt;
&lt;br /&gt;
'''Please note''' that internal speakers doesn't work with ALSA CVS. Use the headphone jack. Solution?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
When starting alsamixer over the terminal I couldn't activate the speakers and only had sound over the headphone. However, I figured out how to easily activate the speakers:&lt;br /&gt;
* Right-click on your microphone icon in the top panel.&lt;br /&gt;
* (If &amp;quot;Mute&amp;quot; is activated, deactivate it. I had that at the beginning and was confused since in alsa you don't really realize it.)&lt;br /&gt;
* Click on &amp;quot;Open Volume Control&amp;quot;&lt;br /&gt;
* Change to the tab &amp;quot;Switches&amp;quot; and activate the option for speaker. &lt;br /&gt;
That should be enough to make it work.&lt;br /&gt;
--[[User:Shuk|Shuk]] 02:51, 11 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
I tried those patches, it didnt work for me. But this python script did: http://www.klabs.be/~fpiat/linux/debian/Etch_on_Thinkpad_T61.html#Sound  .. apparently if you make the PC speaker play constantly, you cant hear it but you can then hear sound. Hopefully gutsy will fix this :/ --[[User:Rubin|Rubin]] 07:18, 14 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Suspend==&lt;br /&gt;
Suspending doesn't work by default. It succesfully suspends, but after resuming, Kernel panic occurs. I didn't test hibernate.&lt;br /&gt;
I managed to get suspend to ram to work by using this script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # if launched through a lid event and lid is open, do nothing&lt;br /&gt;
 echo &amp;quot;$1&amp;quot; | grep &amp;quot;button/lid&amp;quot; &amp;amp;&amp;amp; grep -q open /proc/acpi/button/lid/LID/state &amp;amp;&amp;amp; exit 0&lt;br /&gt;
 &lt;br /&gt;
 # remove USB 1.1 driver&lt;br /&gt;
 rmmod uhci_hcd&lt;br /&gt;
 rmmod ehci_hcd&lt;br /&gt;
 &lt;br /&gt;
 # sync filesystem and clock&lt;br /&gt;
 sync&lt;br /&gt;
 /sbin/hwclock --systohc&lt;br /&gt;
 &lt;br /&gt;
 # switch to console&lt;br /&gt;
 FGCONSOLE=`fgconsole`&lt;br /&gt;
 chvt 6&lt;br /&gt;
 &lt;br /&gt;
 # go to sleep&lt;br /&gt;
 sleep 5 &amp;amp;&amp;amp; echo -n &amp;quot;mem&amp;quot; &amp;gt; /sys/power/state&lt;br /&gt;
 &lt;br /&gt;
 # readjust the clock (it might be off a bit after suspend)&lt;br /&gt;
 /sbin/hwclock --adjust&lt;br /&gt;
 /sbin/hwclock --hctosys&lt;br /&gt;
 &lt;br /&gt;
 # reload USB 1.1 driver&lt;br /&gt;
 modprobe uhci_hcd&lt;br /&gt;
 modprobe ehci_hcd&lt;br /&gt;
 &lt;br /&gt;
 # turn on the backlight and switch back to X&lt;br /&gt;
 chvt $FGCONSOLE&lt;br /&gt;
&lt;br /&gt;
It's very similar to script posted on thinkwiki, but I had to add ehci_hcd to removed modules and remove some radeon stuff (when using Nvidia)&lt;br /&gt;
&lt;br /&gt;
'''Problems''' the problem with this suspend script is, that after resuming, the laptop is incredibly slow. Applications start about 20 seconds, Firefox is lagging. But processor doesn't run at highest frequency, nothing seems unusual. '''Suggestions?'''&lt;br /&gt;
&lt;br /&gt;
This X-slow-after-resume is still here (T61p, nVidia Quadro FX 570 M, bleeding edge Gutsy 2.6.22-10-generic kernel). However, I found an official OpenSuSE 10.3 for this problem:&lt;br /&gt;
[https://bugzilla.novell.com/show_bug.cgi?id=290385]&lt;br /&gt;
--[[User:Lech|Lech]] 21:20, 2 September 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
When using this script, my USB ports are 'dead' after resume (i.e.  nothing connected to it gets any power).  I have commented out 'rmmod ehci_hcd' and 'modprobe ehci_hcd' lines, to make the USB ports active after a suspend/resume cycle.  (this is using nvidia card)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Suspend and hibernate work out-of-the-box for me with the 2.6.21.5 kernel, except that you need to put acpi_sleep=s3_bios in the kernel command line (i.e. at the end of each kernel line in /boot/grub/menu.lst).&lt;br /&gt;
--[[User:Kc8tbe|Kc8tbe]] 13:03, 1 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hmm, with 2.6.21.5 + acpi_sleep=s3_bios,  laptop suspends, but resume fails - machine locks up.  This is with nvidia 140.  Same result when doing it at console.  When I resume, I hear a beep and the machine hangs.  Have to hard-reset.  Suggestions?&lt;br /&gt;
&lt;br /&gt;
Some things seem to break after suspend for me, like network connections time out randomly, cdrom stops working etc. Running 'sudo /etc/init.d/dbus restart' seems to solve it for the most part.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
We are having similar discussions in Ubunutu's Launchpad, and we found kind of a solution which rules out any 2D/3D graphics acceleration but allows to suspend/resume, at least on my 3 weeks old T61p and some other recent T6x/R6x models:&lt;br /&gt;
&lt;br /&gt;
With thinkpad_acpi 0.16 (!) patches applied to 2.6.22 kernel, and with VESA driver only, it works perfectly so far for us.&lt;br /&gt;
&lt;br /&gt;
The discussion and some links can be found at:&lt;br /&gt;
https://bugs.launchpad.net/ubuntu/+bug/139089&lt;br /&gt;
https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.22/+bug/129125&lt;br /&gt;
&lt;br /&gt;
I know it's not eye candy not to have satisfying GLX etc., but I consider working suspend/resume much more important than say playing with GoogleEarth.&lt;br /&gt;
&lt;br /&gt;
--[[User:Lech|Lech]] 14:48, 16 September 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Brightness==&lt;br /&gt;
Changing brightness doesn't work at all. There are many issues. I tried Gutsy and still the same (even worse)&lt;br /&gt;
&lt;br /&gt;
Not a real solution, but if using the vesa driver, brightness control works. ''--Daniel06'' 11:58, 4 July 2007&lt;br /&gt;
&lt;br /&gt;
doesnt work for me with vesa or intel --[[User:Rubin|Rubin]] 06:19, 14 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
It works fine on mine and I have built-in graphics on my motherboard. [[User:SteveSims|SteveSims]] 02:19, 15 August 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== one idea ===&lt;br /&gt;
  echo &amp;quot;up&amp;quot; &amp;gt;/proc/acpi/ibm/brightness   &lt;br /&gt;
...works. as does 'down' and 'level x' where x is 1-7.  But how to tie that into the buttons? Seems they are currently using something else in /proc that doesnt exist for us.  --[[User:Rubin|Rubin]] 06:19, 14 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== yet another idea ===&lt;br /&gt;
&lt;br /&gt;
You can add the Gnome power manager brightness applet to the gnome panel, which gives you a GUI tool to do the job, rather than hardware buttons.  I don't know about KDE or other window managers.  --[[User:Atoponce|Atoponce]] 13:07 22, Aug 2007&lt;br /&gt;
&lt;br /&gt;
=== Another solution for Brightness, using xbacklight and laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
While the hardware buttons still don't work, I have a solution that will automatically raise and lower the backlight when plugged in or on battery.  &lt;br /&gt;
&lt;br /&gt;
First, make sure Gnome isn't trying to set the brightness, by going to System &amp;gt; Preferences &amp;gt; Power Management.  In the On Battery Power tab, set &amp;quot;Dim display brightness by&amp;quot; to 0%.&lt;br /&gt;
&lt;br /&gt;
Next, install xbacklight.&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install xbacklight&lt;br /&gt;
&lt;br /&gt;
You can manually set the backlight by using &amp;quot;xbacklight -set &amp;lt;number from 1-100&amp;gt;&amp;quot;.  Note that by using xbacklight, you can make the backlight go brighter or dimmer than normally allowed by Windows or Ubuntu.&lt;br /&gt;
&lt;br /&gt;
To automate brightness changes, first enable laptop-mode&lt;br /&gt;
&lt;br /&gt;
  sudo nano /etc/default/acpi-support&lt;br /&gt;
&lt;br /&gt;
Scroll to the bottom and change ENABLE_LAPTOP_MODE to true&lt;br /&gt;
&lt;br /&gt;
  ENABLE_LAPTOP_MODE=true&lt;br /&gt;
&lt;br /&gt;
Set laptop mode to start automatically&lt;br /&gt;
&lt;br /&gt;
  sudo update-rc.d laptop-mode multiuser&lt;br /&gt;
&lt;br /&gt;
Edit laptop-mode.conf to automate brightness changes.  Scroll down to LCD brightness settings.  Modify the section to read as follows:&lt;br /&gt;
&lt;br /&gt;
  CONTROL_BRIGHTNESS=1&lt;br /&gt;
&lt;br /&gt;
  BATT_BRIGHTNESS_COMMAND=&amp;quot;xbacklight -set 20&amp;quot;&lt;br /&gt;
  LM_AC_BRIGHTNESS_COMMAND=&amp;quot;xbacklight -set 100&amp;quot;&lt;br /&gt;
  NOLM_AC_BRIGHTNESS_COMMAND=&amp;quot;xbacklight -set 100&amp;quot;&lt;br /&gt;
  BRIGHTNESS_OUTPUT=&amp;quot;/dev/null&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note: You can use any value from 1 to 100 after -set, I used 20 and 100 as examples.  After this, start the laptop-mode daemon, and test if it works.  You may have to restart acpid as well.&lt;br /&gt;
&lt;br /&gt;
  sudo /etc/init.d/laptop-mode start&lt;br /&gt;
  sudo /etc/init.d/acpid restart&lt;br /&gt;
&lt;br /&gt;
==Webcam==&lt;br /&gt;
The webcam in T61 is some sort of UVC camera: Found UVC 1.00 device Integrated Camera (17ef:1004). The module loads out of the box. I tested the camera using:&lt;br /&gt;
Luvcview: http://mxhaard.free.fr/spca50x/Investigation/uvc/luvcview-20070512.tar.gz&lt;br /&gt;
Just compile and run using ./luvcview -f yuv (JPG format doesn't work)&lt;br /&gt;
&lt;br /&gt;
I also tried gqcam and webcam, but both doesn't work (first SEGFAULTs, second prints Invalid argument)&lt;br /&gt;
&lt;br /&gt;
luvcview has a button to take pictures. Place your mouse over the buttons at the bottom of the window, and their function is revealed in the title bar. Unfortunately, the button for avi capture does not seem to work (although it does tell you what the video framerate is, which is helpful).&lt;br /&gt;
&lt;br /&gt;
To capture a video stream, run ./luvcview -f yuv -S&lt;br /&gt;
To play back the video stream, run mplayer -demuxer rawvideo -rawvideo fps=7:w=320:h=240:yuy2 stream.raw&lt;br /&gt;
&lt;br /&gt;
==64 bit systems issues==&lt;br /&gt;
If you are running 64 bit Ubuntu, you will face some problems with 32 bit only proprietary applications. Most of them can be solved. &lt;br /&gt;
&lt;br /&gt;
===Firefox &amp;amp; Flash===&lt;br /&gt;
You can use 32bit version of Firefox (see google), or use http://gwenole.beauchesne.info/projects/nspluginwrapper/ nspluginwrapper] which i prefer:&lt;br /&gt;
 sudo apt-get install ia32-libs ia32-libs-gtk linux32 lib32asound2 alien&lt;br /&gt;
Now download both nspluginwrapper rpms (Plugin + Viewer) and convert them:&lt;br /&gt;
 sudo alien nspluginwrapper*.rpm&lt;br /&gt;
 sudo dpkg -i nspluginwrapper*.deb&lt;br /&gt;
&lt;br /&gt;
Download Adobe Flash Player: http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_9_linux.tar.gz&lt;br /&gt;
 tar -xvzf install_flash_player_9_linux.tar.gz&lt;br /&gt;
 cd install_flash_player_9_linux&lt;br /&gt;
 sudo install libflashplayer.so flashplayer.xpt /usr/lib/firefox/plugins&lt;br /&gt;
 nspluginwrapper -i /usr/lib/firefox/plugins/libflashplayer.so&lt;br /&gt;
 cd ~/.mozilla/plugins/&lt;br /&gt;
 sudo install npwrapper.libflashplayer.so /usr/lib/mozilla-firefox/plugins/&lt;br /&gt;
This howto is taken from [http://webzine.smehlik.net/64bit-ubuntu-adobe-flash-plugin-pomoci-nspluginwrapper/ Smehlik Webzine (in Czech)]&lt;br /&gt;
&lt;br /&gt;
===Skype===&lt;br /&gt;
Download Skype for Ubuntu Feisty&lt;br /&gt;
Use this commandlibdbus, libqt4-core, libqt4-gui, libsigc++ to determine missing libraries:&lt;br /&gt;
 ldd /usr/bin/skype | grep not&lt;br /&gt;
It should be these:&lt;br /&gt;
 libdbus, libqt4-core, libqt4-gui, libsigc++ (2.0 version)&lt;br /&gt;
Download them from http://packages.ubuntu.com (32bit versions!)&lt;br /&gt;
 mkdir testlibs&lt;br /&gt;
 dpkg-deb --extract &amp;lt;deb file&amp;gt; testlibs&lt;br /&gt;
Now copy everything from testlibs to /usr/lib32&lt;br /&gt;
 cp -r testlibs/usr/lib/* /usr/lib32&lt;br /&gt;
Freedom lovers are advised to avoid proprietary systems like Skype, however.  Centralized directories and signalling architectures can't be good for your health.&lt;br /&gt;
&lt;br /&gt;
==Bluetooth==&lt;br /&gt;
works for me (TM)&lt;br /&gt;
&lt;br /&gt;
==USB==&lt;br /&gt;
A short time after the system has booted, I get a message on the console of every window indicating IRQ# 23 has fired but noone is expecting it. After this message, the USB ports on the right side fail to work anymore.  It was suggested on a forum that they will work, its just it takes it a long time to discover there is a new device.  I looked in /proc and determined that the bluetooth device is using IRQ23, so it may be involved, but there may be sharing so it could be something else.  Regardless, there are USB bus problems with the T61 and linux.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Overall==&lt;br /&gt;
I initially had some big problems getting this working, but now its working quite well.  The wifi card worked at startup (uses madwifi) and I am happy because I don't seem to need any proprietary software to run this system.&lt;br /&gt;
&lt;br /&gt;
==Discussion==&lt;br /&gt;
In case you missed it the discussion page (for questions/responses) is right here:  [[Talk: Installing Ubuntu 7.04 (Feisty Fawn) on a ThinkPad T61]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* This guide is listed at the [http://tuxmobil.org/ibm.html TuxMobil Linux laptop and notebook installation guides survey (IBM/Lenovo)].&lt;br /&gt;
* Many other suggestions and references can be found in the following ubuntu forum: http://ubuntuforums.org/showthread.php?t=471563&lt;br /&gt;
&lt;br /&gt;
[[Category:Ubuntu 7.04]]&lt;br /&gt;
[[Category:T61]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=33178</id>
		<title>Tp smapi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=33178"/>
		<updated>2007-09-17T05:27:05Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* HDAPS axis orientation */ it's &amp;quot;invert&amp;quot;, not &amp;quot;inverted&amp;quot;&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;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module exposes some features of the ThinkPad hardware/firmware via a &amp;lt;tt&amp;gt;sysfs&amp;lt;/tt&amp;gt; interface. Currently, the main implemented functionality is control of battery charging and extended battery status. It also includes an improved version of the [[HDAPS]] driver. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.&lt;br /&gt;
&lt;br /&gt;
For older ThinkPad models, see also [[tpctl]].&lt;br /&gt;
&lt;br /&gt;
{{WARN|This driver uses undocumented features and direct hardware access. It thus cannot be guaranteed to work and could conceivably damage your computer (though so far no incidents have been reported).}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
*Battery charge/discharge control&lt;br /&gt;
*Battery status information&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=171579 download] only the &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
====Installation from source====&lt;br /&gt;
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .&lt;br /&gt;
&lt;br /&gt;
For testing, you can simply compile and load the driver within the current&lt;br /&gt;
working directory:&lt;br /&gt;
:{{cmdroot|tar xzvf tp_smapi-0.32.tgz}}&lt;br /&gt;
:{{cmdroot|cd tp_smapi-0.32}}&lt;br /&gt;
:{{cmdroot|make load}}&lt;br /&gt;
&lt;br /&gt;
To compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, add &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; to also patch the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; for compatibility with &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (this requires a kernel source tree matching the current kernel):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or, to compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prepare a stand-alone patch against the current kernel tree (including&lt;br /&gt;
a patch against &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; and new &amp;lt;tt&amp;gt;Kconfig&amp;lt;/tt&amp;gt; entries):&lt;br /&gt;
:{{cmdroot|make patch}}&lt;br /&gt;
&lt;br /&gt;
To delete all autogenerated files:&lt;br /&gt;
:{{cmdroot|make clean}}&lt;br /&gt;
&lt;br /&gt;
The original kernel tree is never modified by any these commands. &lt;br /&gt;
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.&lt;br /&gt;
&lt;br /&gt;
====Installation in Gentoo====&lt;br /&gt;
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/packages/?category=app-laptop;name=tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, do this first:&lt;br /&gt;
&lt;br /&gt;
* Configure &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; as module in your kernel&lt;br /&gt;
* Add the &amp;lt;tt&amp;gt;HDAPS&amp;lt;/tt&amp;gt; use flag in {{path|/etc/make.conf}}&lt;br /&gt;
* {{cmdroot|rmmod hdaps}}&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)&lt;br /&gt;
* {{cmdroot|echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
* {{cmdroot|echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
&lt;br /&gt;
Then reboot, or run:&lt;br /&gt;
* {{cmdroot|modprobe tp_smapi}}&lt;br /&gt;
* {{cmdroot|modprobe hdaps}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Ubuntu/Debian====&lt;br /&gt;
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:&lt;br /&gt;
&lt;br /&gt;
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install build-essentials&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;uname -r&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you the version of your current kernel. As Ubuntu adds '-generic' to the kernel-version, the following command works for Debian users only:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install linux-source-`uname -r`&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubuntu users use the kernel-version they got by the command before, e.g. 'linux-source-2.6.20'&lt;br /&gt;
&lt;br /&gt;
Now change to the tp_smapi dir:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cd tp_smapi-X.YY&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt; (X.YY being the version-number of [[tp_smapi]])&lt;br /&gt;
and make and install tp_smapi as instructed above.&lt;br /&gt;
&lt;br /&gt;
If you get an error that the kernel version isn't matching, please check that there is a symlink from the modules dir to the kernel source:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ls -l /lib/modules/2.6.20-16-generic&lt;br /&gt;
lrwxrwxrwx  1 root root     28 2007-02-02 08:39 source -&amp;gt; /usr/src/linux-source-2.6.20&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create the link if the line above is not existent:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-16-generic/source&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the following will build and install the correct modules to their locations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;make install HDAPS=1&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make sure your system loads the modules at boot time, do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules&lt;br /&gt;
echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
and update your initramfs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;update-initramfs -u&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi running now, just load the modules:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;modprobe -a tp_smapi hdaps&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.&lt;br /&gt;
&lt;br /&gt;
===Battery charge control features===&lt;br /&gt;
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):&lt;br /&gt;
:{{cmdroot|echo 40 &amp;gt; /sys/devices/platform/smapi/BAT0/start_charge_thresh}}&lt;br /&gt;
:{{cmdroot|echo 70 &amp;gt; /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}&lt;br /&gt;
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}&lt;br /&gt;
To prevent charging for 17 minutes (regardless of thresholds):&lt;br /&gt;
:{{cmdroot|echo 17 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel charging preventation:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
&lt;br /&gt;
To force battery discharging (even if connected to AC):&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel forced discharge:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
&lt;br /&gt;
===Battery status features===&lt;br /&gt;
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/installed&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/state       # idle/charging/discharging&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/cycle_count&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_now   # instantaneous power&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_avg   # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_percent&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time&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/barcoding&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/chemistry&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/serial&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacture_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/first_use_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius&lt;br /&gt;
# cat /sys/devices/platform/smapi/ac_connected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The raw status data is also available, including some fields not listed above (in case you can figure them out):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|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;
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; you will need to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).&lt;br /&gt;
&lt;br /&gt;
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
&lt;br /&gt;
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:&lt;br /&gt;
 # echo '211a 100 0 0 &amp;gt; /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request&lt;br /&gt;
 211a 34b b2 0 0 0 'OK'&lt;br /&gt;
The 4b&amp;quot; in the 2nd value, converted to decimal is 75: the current charge stop threshold.&lt;br /&gt;
&lt;br /&gt;
===Bundled &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver===&lt;br /&gt;
&lt;br /&gt;
The tp_smapi package includes a modified version of the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; Linux kernel driver used by the [[HDAPS]] system. To use &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; concurrently, you '''must''' use the modified version.&lt;br /&gt;
&lt;br /&gt;
To build the modified version, simply append the &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; parameter to the &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; command (see [[#Installation|Installation]] above):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
If you don't do that, you will not be able to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (and its support module &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;) when &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; is loaded, and vice versa. You can use &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; to switch between these modules.&lt;br /&gt;
&lt;br /&gt;
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; has several changes:&lt;br /&gt;
* The &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; coordinates this access through the bundled &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; driver.&lt;br /&gt;
* The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.&lt;br /&gt;
* Several other improvements, such as the ability to control the polling rate.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
&lt;br /&gt;
If you get &amp;lt;tt&amp;gt;thinkpad_ec: no ThinkPad embedded controller!&amp;lt;/tt&amp;gt; when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.&lt;br /&gt;
&lt;br /&gt;
===Model-specific status===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 92%&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; feature support matrix&lt;br /&gt;
|-&lt;br /&gt;
! colspan=11 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; | &lt;br /&gt;
=====A series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{A22p}} 2629-USG&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{A30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=11 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====G series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{G41}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=11 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====R series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{R31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || No SMAPI BIOS&lt;br /&gt;
|-&lt;br /&gt;
! {{R40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50}}&lt;br /&gt;
| {{Cunk}} || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50e}} 1834-JAG&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}} 18*&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 3.22 || Machine types 1829, 1830, 1831 and 1836&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}} 28*&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      || 1.29 || Machine types 2883, 2887, 2888, 2889, 2894 and 2495&lt;br /&gt;
|-&lt;br /&gt;
! {{R52}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 1.29 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}}  || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=11 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====T series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{T20}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T22}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T23}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41p}} 2373-AM9&lt;br /&gt;
| {{Cno}} || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || 3.20 || EC v3.04&lt;br /&gt;
|-&lt;br /&gt;
! {{T42}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KXU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 || 3.21 || Stop charge threshold works in Windows. dmesg output:&lt;br /&gt;
smapi smapi: smapi_request: SMAPI error: Function is not supported by SMAPI BIOS (func=211a)&lt;br /&gt;
smapi smapi: __get_real_thresh: cannot get stop_thresh of bat=0: Function is not supported by SMAPI BIOS&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KUU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43}} 2686&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 || 1.27 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=Y, Y'=-X || 0.32 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60p}} 8743-CTO&lt;br /&gt;
| {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=-X, Y'=-Y || 0.32 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T61}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=-X, Y'=-Y || 0.32 ||  || [http://ubuntuforums.org/showthread.php?p=3146719 ref]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=11 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====X series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{X20}} 2662-31G&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X24}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X32}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X40}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 || 2.08 || EC v1.62&lt;br /&gt;
|-&lt;br /&gt;
! {{X41}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} X'=-Y, Y'=X ||      || 2.07 || EC v1.10, 2.6.20 issue (see discussion)&lt;br /&gt;
|-&lt;br /&gt;
! {{X61s}}&lt;br /&gt;
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cno|text=}} X'=X, Y'=-Y || 0.32 ||  || [http://www.slackwiki.org/ThinkPad_X61s ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{X60T}}&lt;br /&gt;
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} ||      ||  || [http://luke.no-ip.org/x60tablet/ ref] [http://rad.bioinfo.ulaval.ca/hardware/x60tablet ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{X61T}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}}X'=-Y, Y'=X || 0.32  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=11 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====Z series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} X'=X, Y'=Y || 0.32 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} ||      ||  || [https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/45014 ref]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SMAPI capabilities may depend on the BIOS version as well, so upgrading to the latest version of the BIOS might provide more SMAPI functions (especially true for long-lived BIOS with lots of releases, like the TP-1R).&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:tp_smapi|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; error 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;
While at it, you may also want to add your laptop to the [[list of DMI IDs]].&lt;br /&gt;
&lt;br /&gt;
=====HDAPS axis orientation=====&lt;br /&gt;
HDAPS axis orientation notation: X,Y are the hardware readouts, X',Y' are horizontal and vertical. You can use [[HDAPS#Visualisation_of_ThinkPad_orientation|hdaps visualisation]] to check for correctness.&lt;br /&gt;
&lt;br /&gt;
Just like the mainline hdaps driver, tp_smapi's hdaps driver supports inverting both axes together (but not separately, and no axis swapping):&lt;br /&gt;
  modprobe hdaps invert=1&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
===Tools using this driver===&lt;br /&gt;
&lt;br /&gt;
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:&lt;br /&gt;
* [[KThinkBat]] - display battery status on the KDE &amp;lt;tt&amp;gt;kicker&amp;lt;/tt&amp;gt; panel.&lt;br /&gt;
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2&lt;br /&gt;
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Template:Industry_News&amp;diff=33074</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=33074"/>
		<updated>2007-09-12T15:34:04Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;12. 9. 2007: New [[fglrx]] driver version 8.41.7 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.41.7.html released].&lt;br /&gt;
&lt;br /&gt;
8. 9. 2007: Lenovo's [http://lenovoblogs.com/insidethebox Inside the Box] blog discusses ThinkPad Linux support&lt;br /&gt;
&lt;br /&gt;
5. 9. 2007: AMD/ATI announces [http://home.businesswire.com/portal/site/google/index.jsp?ndmViewId=news_view&amp;amp;newsId=20070904006432&amp;amp;newsLang=en new HD2k Radeon drivers], pledging composite support and significant performance improvements on modern (2.6.22) kernels. &lt;br /&gt;
&lt;br /&gt;
8. 8. 2007: New [[fglrx]] driver version 8.40.4 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.40.4.html released].&lt;br /&gt;
&lt;br /&gt;
19. 7. 2007: New [[fglrx]] driver version 8.39.4 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.39.4.html released].&lt;br /&gt;
&lt;br /&gt;
26. 6. 2007: New [[fglrx]] driver version 8.38.6 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.38.6.html released].&lt;br /&gt;
&lt;br /&gt;
31. 5. 2007: New [[fglrx]] driver version 8.37.6 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.37.6.html released].&lt;br /&gt;
&lt;br /&gt;
18. 4. 2007: New [[fglrx]] driver version 8.36.5 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.36.5.html released].  Now supports 2.6.20 series kernels.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Template:Industry_News&amp;diff=33073</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=33073"/>
		<updated>2007-09-12T15:33:20Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: fglrx 8.41.7 released&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;12. 9.2007: New [[fglrx]] driver version 8.41.7 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.41.7.html released].&lt;br /&gt;
&lt;br /&gt;
8. 9. 2007: Lenovo's [http://lenovoblogs.com/insidethebox Inside the Box] blog discusses ThinkPad Linux support&lt;br /&gt;
&lt;br /&gt;
5. 9. 2007: AMD/ATI announces [http://home.businesswire.com/portal/site/google/index.jsp?ndmViewId=news_view&amp;amp;newsId=20070904006432&amp;amp;newsLang=en new HD2k Radeon drivers], pledging composite support and significant performance improvements on modern (2.6.22) kernels. &lt;br /&gt;
&lt;br /&gt;
8. 8. 2007: New [[fglrx]] driver version 8.40.4 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.40.4.html released].&lt;br /&gt;
&lt;br /&gt;
19. 7. 2007: New [[fglrx]] driver version 8.39.4 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.39.4.html released].&lt;br /&gt;
&lt;br /&gt;
26. 6. 2007: New [[fglrx]] driver version 8.38.6 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.38.6.html released].&lt;br /&gt;
&lt;br /&gt;
31. 5. 2007: New [[fglrx]] driver version 8.37.6 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.37.6.html released].&lt;br /&gt;
&lt;br /&gt;
18. 4. 2007: New [[fglrx]] driver version 8.36.5 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.36.5.html released].  Now supports 2.6.20 series kernels.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Conexant_HSF_modem_drivers&amp;diff=33069</id>
		<title>Conexant HSF modem drivers</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Conexant_HSF_modem_drivers&amp;diff=33069"/>
		<updated>2007-09-12T11:40:19Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* The Linuxant hsf driver */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following modems, available in some ThinkPad models, use the Conexant HSF softmodem chip, and require an appropriate driver:&lt;br /&gt;
&lt;br /&gt;
* [[ThinkPad 56K Modem (MDC-1.5)]]&lt;br /&gt;
* [[IBM Integrated 56K Modem (MDC-2)]]&lt;br /&gt;
* [[IBM Integrated Bluetooth III with 56K Modem (BMDC-2)]]&lt;br /&gt;
* [[IBM Integrated Bluetooth IV with 56K Modem (BMDC-3)]]&lt;br /&gt;
&lt;br /&gt;
Two drivers are currently available.&lt;br /&gt;
&lt;br /&gt;
===The Smartlink smlink driver===&lt;br /&gt;
The Linux driver for Agere modems from [http://www.smlink.com/ SmartLink] supports both 2.4 and 2.6 kernels. However, it does not work with the newer Intel ICH6 controllers (used, e.g., on the ThinkPad {{R52}} and {{T43}}; trouble on the {{G41}} has also been [[Installing Debian on a ThinkPad G41|reported]]). Some users report that AT commands work but dialing does not.&lt;br /&gt;
&lt;br /&gt;
The {{path|snd_intel8x0m}} kernel module also (incorrectly?) recognizes the [[IBM Integrated Bluetooth III with 56K Modem (BMDC-2)|BMDC-2]]. At least scanModem works with it. About {{path|snd_intel8x0m}} see [[Modem_Daughter_Card_(MDC)|MDC]].&lt;br /&gt;
&lt;br /&gt;
===The Linuxant hsf driver===&lt;br /&gt;
The commercial [http://www.linuxant.com/drivers/hsf/index.php Conexant HSF] driver from [http://www.linuxant.com Linuxant] supports these modem and work also on ICH6 models (e.g., ThinkPad {{R52}}, {{R51}}, {{T43}}, and {{Z60m}}).&lt;br /&gt;
&lt;br /&gt;
It offers free limited evaluation at 14.4kbps, and the full version costs $19.99.&lt;br /&gt;
&lt;br /&gt;
Download: http://www.linuxant.com/drivers/hsf/full/downloads.php&lt;br /&gt;
* For Ubuntu, Dell released an OEM version of the linux driver. You can download it [http://support.dell.com/support/downloads/download.aspx?c=us&amp;amp;l=en&amp;amp;s=gen&amp;amp;releaseid=R155004&amp;amp;SystemID=INSPIRONI6400/E1505&amp;amp;servicetag=&amp;amp;os=UBLN&amp;amp;osl=en&amp;amp;deviceid=8593&amp;amp;devlib=0&amp;amp;typecnt=0&amp;amp;vercnt=1&amp;amp;catid=-1&amp;amp;impid=-1&amp;amp;formatcnt=1&amp;amp;libid=20&amp;amp;fileid=206745 here].&lt;br /&gt;
&lt;br /&gt;
This driver works well with reliable connections. It does not support voice or telephony features.&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
* Fedora Core: use the provided RPMs. If using a custom kernel, choose the &amp;quot;Generic packages with source&amp;quot; in the [https://www.linuxant.com/drivers/hsf/full/downloads.php#generic HSF downloads page].&lt;br /&gt;
* Debian: run {{cmdroot|dpkg -i hsfblablabla.deb}}. When asked you for the code, enter &amp;quot;FREE&amp;quot; for the 14.4kbps evaluation.&lt;br /&gt;
* Gentoo: the hsfmodem package is in portage.&lt;br /&gt;
&lt;br /&gt;
If you are running a 2.6.15.* kernel, you might consider running:&lt;br /&gt;
 # hsfconfig --patch &lt;br /&gt;
first, and apply the appropriate patch (there is an issue with hsfmodem and 2.6.15 tree that results in kernel oops. &lt;br /&gt;
The patch provided by Conexant fixes that). It looks like this command has to be run in console (rather than e.g. xterm, &lt;br /&gt;
as the menu issues some escape sequences that garble the output in xterm)&lt;br /&gt;
&lt;br /&gt;
====Suspend/resume====&lt;br /&gt;
The hsfmodem driver may prevent your machine from going into suspend. If so, you may remove them prior to sleep by adding to your suspend script:&lt;br /&gt;
 modprobe -r hsfmc97ich hsfserial hsfengine hsfosspec hsfsoar&lt;br /&gt;
The drivers should be automatically re-loaded upon resume by the hotplug system, if not, just manually restart hotplug or modprobe the individual drivers, adding this to your suspend script if needed.&lt;br /&gt;
&lt;br /&gt;
If you use the &amp;lt;tt&amp;gt;hibernate&amp;lt;/tt&amp;gt; script on Fedora Core, simple add this to {{path|/etc/hibernate/hibernate.conf}}:&lt;br /&gt;
 OnSuspend 12 service hsf stop&lt;br /&gt;
 OnResume  12 service hsf start&lt;br /&gt;
&lt;br /&gt;
====Problem with Software Suspend 2====&lt;br /&gt;
Version 7.47.00.01 works fine with [[Software Suspend 2]].&lt;br /&gt;
&lt;br /&gt;
The version 7.43.00.01 of the HSF driver conflicted with [[Software Suspend 2]]. The needed patch isn't available from Linuxant anymore.&lt;br /&gt;
&lt;br /&gt;
For {{Fedora}} systems, the procedure for generating and installing a patched RPM is as follows:&lt;br /&gt;
*Download tarball and patches:&lt;br /&gt;
:{{cmdroot|wget http://www.linuxant.com/dri[[Software Suspend 2]]vers/hsf/full/archive/hsfmodem-7.43.00.01full/hsfmodem-7.43.00.01full.tar.gz}}&lt;br /&gt;
:{{cmdroot|wget http://www.linuxant.com/drivers/hsf/full/archive/patches/hsf-7.43.00.01-suspend2.patch}}&lt;br /&gt;
:{{cmdroot|wget http://www.linuxant.com/drivers/hsf/full/archive/patches/hsf-7.43.00.01-try_to_freeze-2.patch}}&lt;br /&gt;
*Build the RPM:&lt;br /&gt;
:{{cmdroot|mkdir hsf-workdir}}&lt;br /&gt;
:{{cmdroot|cd hsf-workdir}}&lt;br /&gt;
:{{cmdroot|tar xzvf ../hsfmodem-7.43.00.01full.tar.gz}}&lt;br /&gt;
:{{cmdroot|cd hsfmodem-7.43.00.01full}}&lt;br /&gt;
:{{cmdroot|patch -i ../../hsf-7.43.00.01-suspend2.patch -p1}}&lt;br /&gt;
:{{cmdroot|patch -i ../../hsf-7.43.00.01-try_to_freeze-2.patch -p1}}&lt;br /&gt;
:{{cmdroot|cd ..}}&lt;br /&gt;
:{{cmdroot|tar czvf hsfmodem-7.43.00.01full.tar.gz hsfmodem-7.43.00.01full}}&lt;br /&gt;
:{{cmdroot|rpmbuild -ta hsfmodem-7.43.00.01full.tar.gz}}&lt;br /&gt;
*Install the RPM:&lt;br /&gt;
:{{cmdroot|rpm -e hsfmodem}}&lt;br /&gt;
:{{cmdroot|rpm -Uvh /usr/src/redhat/RPMS/i386/hsfmodem-7.43.00.01full-1.i386.rpm}}&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_enable_the_integrated_fingerprint_reader_with_ThinkFinger&amp;diff=32921</id>
		<title>How to enable the integrated fingerprint reader with ThinkFinger</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_enable_the_integrated_fingerprint_reader_with_ThinkFinger&amp;diff=32921"/>
		<updated>2007-09-04T14:36:33Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: Packages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[How to enable the fingerprint reader]] has a good explanation for using the fingerprint reader with the closed-source binary driver. But there is also an opensource project called [http://thinkfinger.sourceforge.net ThinkFinger] which does the same, but open.&lt;br /&gt;
&lt;br /&gt;
== Installing from source ==&lt;br /&gt;
&lt;br /&gt;
Download thinkfinger-0.3.tar.gz from the [http://thinkfinger.sourceforge.net/ homepage] and unpack it somewhere, make sure you have the gcc compiler, libtool, pkgconfig, libusb-dev and libpam0g-dev installed, then:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|cd thinkfinger-0.3}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code style=&amp;quot;white-space:nowrap;color:#495988;background-color:white;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;$&amp;lt;/nowiki&amp;gt; ./configure --prefix=/usr --sysconfdir=/etc --with-securedir=/lib/security --with-birdir=/etc/pam_thinkfinger&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{cmduser|make}}&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|/lib/security is the directory, where PAM assumes its modules on Debian and openSUSE, it may vary for your distro!}}&lt;br /&gt;
&lt;br /&gt;
If everything went ok assert that you find pam_thinkfinger.so in /lib/security typing:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|ls /lib/security}}&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
* Debian&lt;br /&gt;
** packages for Debian (testing) are available [http://www.rubixlinux.org/debian/thinkfinger/ here].&lt;br /&gt;
** packages arrived in Debian experimental on Aug 2nd, 2007 (cf. [http://bugs.debian.org/409563 bug #409563]).&lt;br /&gt;
* Fedora Core&lt;br /&gt;
** packages for Fedora Core 6 are available in &amp;quot;extras&amp;quot; repository (#yum install thinkfinger).&lt;br /&gt;
* Gentoo&lt;br /&gt;
** emerge sys-auth/thinkfinger&lt;br /&gt;
* OpenSUSE&lt;br /&gt;
** openSUSE 10.2 includes the package &amp;quot;libthinkfinger&amp;quot; (version 0.1-7) - you will find newer packages [http://beta1.suse.com/private/thoenig/10.2/thinkfinger/ here].&lt;br /&gt;
&lt;br /&gt;
== Testing the driver ==&lt;br /&gt;
&lt;br /&gt;
Now the driver is installed and should be working. You can try it (as root) with&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|tf-tool --acquire}}&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|tf-tool --verify}}&lt;br /&gt;
&lt;br /&gt;
This will ask you to swipe your finger three times, save the fingerprint to /tmp/test.bir and then verify your fingerprint with the bir-file.&lt;br /&gt;
&lt;br /&gt;
== Configuring PAM to use ThinkFinger ==&lt;br /&gt;
Now you can configure pam to use ThinkFinger:&lt;br /&gt;
&lt;br /&gt;
Open /etc/pam.d/common-auth:&lt;br /&gt;
{{NOTE|In FC6 this file is &amp;quot;/etc/pam.d/system-auth&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|nano -w /etc/pam.d/common-auth}}&lt;br /&gt;
&lt;br /&gt;
Add this line before any pam_unix or pam_unix2 directives:&lt;br /&gt;
 auth     sufficient     pam_thinkfinger.so&lt;br /&gt;
&lt;br /&gt;
If your PAM uses the pam_unix and not the pam_unix2 module, you need to pass a specific argument in&lt;br /&gt;
the /etc/pam.d/common-auth directive to make it consider the password entered at the pam_thinkfinger prompt.&lt;br /&gt;
 auth     required     pam_unix.so try_first_pass&lt;br /&gt;
&lt;br /&gt;
For instance, /etc/pam.d/common-auth looks like this:&lt;br /&gt;
 auth    sufficient      pam_thinkfinger.so&lt;br /&gt;
 auth    required        pam_unix.so nullok_secure try_first_pass&lt;br /&gt;
&lt;br /&gt;
On openSUSE 10.2, it looks like this now:&lt;br /&gt;
 auth    required        pam_env.so&lt;br /&gt;
 auth    sufficient      pam_thinkfinger.so&lt;br /&gt;
 auth    required        pam_unix2.so&lt;br /&gt;
&lt;br /&gt;
Now we are ready to add users to thinkfinger. As &amp;quot;make install&amp;quot; did not create /etc/pam_thinkfinger, you need to create it now:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|mkdir /etc/pam_thinkfinger}}&lt;br /&gt;
&lt;br /&gt;
And now, you can add a fingerprint for a user with:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|tf-tool --add-user $USERNAME}}&lt;br /&gt;
&lt;br /&gt;
Now the user should be able to login with his finger instead of the password.&lt;br /&gt;
&lt;br /&gt;
If you would like to use thinkfinger for su, you have to enroll the fingerprint for root user with:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|tf-tool --add-user root}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|You should see the &amp;quot;Password or swipe finger:&amp;quot; prompt when trying to sudo or su. If you don't, you probably do not have the &amp;quot;User level driver support&amp;quot; compiled into your kernel or the &amp;quot;uinput&amp;quot; module loaded!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GNOME ==&lt;br /&gt;
&lt;br /&gt;
=== gksu/gksudo ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gksu/gksudo doesn't work correctly. It just stays invisible. When starting a su privileged application such as synaptics you will not get prompted for the password. Nevertheless you can swipe your finger and it should authenticate you. Starting synaptics twice makes gksudo visible.&lt;br /&gt;
&lt;br /&gt;
There are two possibilities to solve it:&lt;br /&gt;
* Changing the string &amp;quot;Password or swipe finger:&amp;quot; to a plain &amp;quot;Password:&amp;quot; (like sudo normally would do) in the file pam/pam_thinkfinger.c of the thinkfinger source directory. Of course, in the console you will then only see a &amp;quot;Password:&amp;quot; instead of &amp;quot;Password or swipe finger:&amp;quot; but this is still more usefull than having gksu/gksudo crashing everytime.&lt;br /&gt;
* Patching libgksu with the following patch. This is also a nasty hack until a better solution is implemented.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- libgksu-2.0.3/libgksu/libgksu.c.orig	2007-06-17 16:00:24.000000000 +0200&lt;br /&gt;
+++ libgksu-2.0.3/libgksu/libgksu.c		2007-06-17 16:00:47.000000000 +0200&lt;br /&gt;
@@ -2663,7 +2663,7 @@&lt;br /&gt;
        */&lt;br /&gt;
       for (counter = 0; counter &amp;lt; 50; counter++)&lt;br /&gt;
 	{&lt;br /&gt;
-	  if (strncmp (buffer, &amp;quot;GNOME_SUDO_PASS&amp;quot;, 15) == 0)&lt;br /&gt;
+	  if (strncmp (buffer, &amp;quot;GNOME_SUDO_PASS&amp;quot;, 15) == 0 || strncmp (buffer, &amp;quot;Password or swi&amp;quot;, 15) == 0)&lt;br /&gt;
 	    break;&lt;br /&gt;
 &lt;br /&gt;
 	  read_line (parent_pipe[0], buffer, 256);&lt;br /&gt;
@@ -2675,7 +2675,7 @@&lt;br /&gt;
       if (context-&amp;gt;debug)&lt;br /&gt;
 	fprintf (stderr, &amp;quot;brute force GNOME_SUDO_PASS ended...\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
-      if (strncmp(buffer, &amp;quot;GNOME_SUDO_PASS&amp;quot;, 15) == 0)&lt;br /&gt;
+      if (strncmp(buffer, &amp;quot;GNOME_SUDO_PASS&amp;quot;, 15) == 0 || strncmp(buffer, &amp;quot;Password or swi&amp;quot;, 15) == 0)&lt;br /&gt;
 	{&lt;br /&gt;
 	  gchar *password = NULL;&lt;br /&gt;
 	  gboolean prompt_grab;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
&lt;br /&gt;
Integration in KDE and kdm seems not to be easily possible now. There is a filed [https://bugs.kde.org/show_bug.cgi?id=116682 bug] at kde.org where you can vote for this.&lt;br /&gt;
&lt;br /&gt;
Moreover, kdm in openSUSE 10.3 crashes when pam_thinkfinger is enabled. A possible &amp;quot;workaround&amp;quot; is downgrading to thinkfinger 0.2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This Howto was copied from [[Installing Ubuntu 6.06 on a ThinkPad T43#Fingerprint_Reader]] and then slightly modified.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_enable_the_integrated_fingerprint_reader_with_ThinkFinger&amp;diff=32919</id>
		<title>How to enable the integrated fingerprint reader with ThinkFinger</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_enable_the_integrated_fingerprint_reader_with_ThinkFinger&amp;diff=32919"/>
		<updated>2007-09-04T14:29:04Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Installing from source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[How to enable the fingerprint reader]] has a good explanation for using the fingerprint reader with the closed-source binary driver. But there is also an opensource project called [http://thinkfinger.sourceforge.net ThinkFinger] which does the same, but open.&lt;br /&gt;
&lt;br /&gt;
== Installing from source ==&lt;br /&gt;
&lt;br /&gt;
Download thinkfinger-0.3.tar.gz from the [http://thinkfinger.sourceforge.net/ homepage] and unpack it somewhere, make sure you have the gcc compiler, libtool, pkgconfig, libusb-dev and libpam0g-dev installed, then:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|cd thinkfinger-0.3}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code style=&amp;quot;white-space:nowrap;color:#495988;background-color:white;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;$&amp;lt;/nowiki&amp;gt; ./configure --prefix=/usr --sysconfdir=/etc --with-securedir=/lib/security --with-birdir=/etc/pam_thinkfinger&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{cmduser|make}}&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|/lib/security is the directory, where PAM assumes its modules on Debian and openSUSE, it may vary for your distro!}}&lt;br /&gt;
&lt;br /&gt;
If everything went ok assert that you find pam_thinkfinger.so in /lib/security typing:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|ls /lib/security}}&lt;br /&gt;
&lt;br /&gt;
== Testing the driver ==&lt;br /&gt;
Now the driver is installed and should be working. You can try it (as root) with&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|tf-tool --acquire}}&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|tf-tool --verify}}&lt;br /&gt;
&lt;br /&gt;
This will ask you to swipe your finger three times, save the fingerprint to /tmp/test.bir and then verify your fingerprint with the bir-file.&lt;br /&gt;
&lt;br /&gt;
== Configuring PAM to use ThinkFinger ==&lt;br /&gt;
Now you can configure pam to use ThinkFinger:&lt;br /&gt;
&lt;br /&gt;
Open /etc/pam.d/common-auth:&lt;br /&gt;
{{NOTE|In FC6 this file is &amp;quot;/etc/pam.d/system-auth&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|nano -w /etc/pam.d/common-auth}}&lt;br /&gt;
&lt;br /&gt;
Add this line before any pam_unix or pam_unix2 directives:&lt;br /&gt;
 auth     sufficient     pam_thinkfinger.so&lt;br /&gt;
&lt;br /&gt;
If your PAM uses the pam_unix and not the pam_unix2 module, you need to pass a specific argument in&lt;br /&gt;
the /etc/pam.d/common-auth directive to make it consider the password entered at the pam_thinkfinger prompt.&lt;br /&gt;
 auth     required     pam_unix.so try_first_pass&lt;br /&gt;
&lt;br /&gt;
For instance, /etc/pam.d/common-auth looks like this:&lt;br /&gt;
 auth    sufficient      pam_thinkfinger.so&lt;br /&gt;
 auth    required        pam_unix.so nullok_secure try_first_pass&lt;br /&gt;
&lt;br /&gt;
On openSUSE 10.2, it looks like this now:&lt;br /&gt;
 auth    required        pam_env.so&lt;br /&gt;
 auth    sufficient      pam_thinkfinger.so&lt;br /&gt;
 auth    required        pam_unix2.so&lt;br /&gt;
&lt;br /&gt;
Now we are ready to add users to thinkfinger. As &amp;quot;make install&amp;quot; did not create /etc/pam_thinkfinger, you need to create it now:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|mkdir /etc/pam_thinkfinger}}&lt;br /&gt;
&lt;br /&gt;
And now, you can add a fingerprint for a user with:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|tf-tool --add-user $USERNAME}}&lt;br /&gt;
&lt;br /&gt;
Now the user should be able to login with his finger instead of the password.&lt;br /&gt;
&lt;br /&gt;
If you would like to use thinkfinger for su, you have to enroll the fingerprint for root user with:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|tf-tool --add-user root}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|You should see the &amp;quot;Password or swipe finger:&amp;quot; prompt when trying to sudo or su. If you don't, you probably do not have the &amp;quot;User level driver support&amp;quot; compiled into your kernel or the &amp;quot;uinput&amp;quot; module loaded!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GNOME ==&lt;br /&gt;
&lt;br /&gt;
=== gksu/gksudo ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gksu/gksudo doesn't work correctly. It just stays invisible. When starting a su privileged application such as synaptics you will not get prompted for the password. Nevertheless you can swipe your finger and it should authenticate you. Starting synaptics twice makes gksudo visible.&lt;br /&gt;
&lt;br /&gt;
There are two possibilities to solve it:&lt;br /&gt;
* Changing the string &amp;quot;Password or swipe finger:&amp;quot; to a plain &amp;quot;Password:&amp;quot; (like sudo normally would do) in the file pam/pam_thinkfinger.c of the thinkfinger source directory. Of course, in the console you will then only see a &amp;quot;Password:&amp;quot; instead of &amp;quot;Password or swipe finger:&amp;quot; but this is still more usefull than having gksu/gksudo crashing everytime.&lt;br /&gt;
* Patching libgksu with the following patch. This is also a nasty hack until a better solution is implemented.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- libgksu-2.0.3/libgksu/libgksu.c.orig	2007-06-17 16:00:24.000000000 +0200&lt;br /&gt;
+++ libgksu-2.0.3/libgksu/libgksu.c		2007-06-17 16:00:47.000000000 +0200&lt;br /&gt;
@@ -2663,7 +2663,7 @@&lt;br /&gt;
        */&lt;br /&gt;
       for (counter = 0; counter &amp;lt; 50; counter++)&lt;br /&gt;
 	{&lt;br /&gt;
-	  if (strncmp (buffer, &amp;quot;GNOME_SUDO_PASS&amp;quot;, 15) == 0)&lt;br /&gt;
+	  if (strncmp (buffer, &amp;quot;GNOME_SUDO_PASS&amp;quot;, 15) == 0 || strncmp (buffer, &amp;quot;Password or swi&amp;quot;, 15) == 0)&lt;br /&gt;
 	    break;&lt;br /&gt;
 &lt;br /&gt;
 	  read_line (parent_pipe[0], buffer, 256);&lt;br /&gt;
@@ -2675,7 +2675,7 @@&lt;br /&gt;
       if (context-&amp;gt;debug)&lt;br /&gt;
 	fprintf (stderr, &amp;quot;brute force GNOME_SUDO_PASS ended...\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
-      if (strncmp(buffer, &amp;quot;GNOME_SUDO_PASS&amp;quot;, 15) == 0)&lt;br /&gt;
+      if (strncmp(buffer, &amp;quot;GNOME_SUDO_PASS&amp;quot;, 15) == 0 || strncmp(buffer, &amp;quot;Password or swi&amp;quot;, 15) == 0)&lt;br /&gt;
 	{&lt;br /&gt;
 	  gchar *password = NULL;&lt;br /&gt;
 	  gboolean prompt_grab;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
&lt;br /&gt;
Integration in KDE and kdm seems not to be easily possible now. There is a filed [https://bugs.kde.org/show_bug.cgi?id=116682 bug] at kde.org where you can vote for this.&lt;br /&gt;
&lt;br /&gt;
Moreover, kdm in openSUSE 10.3 crashes when pam_thinkfinger is enabled. A possible &amp;quot;workaround&amp;quot; is downgrading to thinkfinger 0.2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This Howto was copied from [[Installing Ubuntu 6.06 on a ThinkPad T43#Fingerprint_Reader]] and then slightly modified.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_enable_the_integrated_fingerprint_reader_with_ThinkFinger&amp;diff=32918</id>
		<title>How to enable the integrated fingerprint reader with ThinkFinger</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_enable_the_integrated_fingerprint_reader_with_ThinkFinger&amp;diff=32918"/>
		<updated>2007-09-04T14:22:48Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Configuring PAM to use ThinkFinger */ cleanup and additions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[How to enable the fingerprint reader]] has a good explanation for using the fingerprint reader with the closed-source binary driver. But there is also an opensource project called [http://thinkfinger.sourceforge.net ThinkFinger] which does the same, but open.&lt;br /&gt;
&lt;br /&gt;
== Installing from source ==&lt;br /&gt;
Speaking for Debian, there are no packages of ThinkFinger in the repositories yet (cf. [http://bugs.debian.org/409563 bug #409563]), so I describe the installation from source. If you are using Gentoo, you can just emerge sys-auth/thinkfinger.&lt;br /&gt;
&lt;br /&gt;
{{NOTE|packages for Debian (testing) are available here: [http://www.rubixlinux.org/debian/thinkfinger/]}}&lt;br /&gt;
{{NOTE|packages for Fedora Core 6 are available in &amp;quot;extras&amp;quot; repository (#yum install thinkfinger)}}&lt;br /&gt;
{{NOTE|openSUSE 10.2 includes the package &amp;quot;libthinkfinger&amp;quot; (version 0.1-7) - you will find newer packages here: [http://beta1.suse.com/private/thoenig/10.2/thinkfinger/]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download thinkfinger-0.3.tar.gz from the [http://thinkfinger.sourceforge.net/ homepage] and unpack it somewhere, make sure you have the gcc compiler, libtool, pkgconfig, libusb-dev and libpam0g-dev installed, then:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|cd thinkfinger-0.3}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code style=&amp;quot;white-space:nowrap;color:#495988;background-color:white;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;$&amp;lt;/nowiki&amp;gt; ./configure --with-securedir=/lib/security --with-birdir=/etc/pam_thinkfinger&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{cmduser|make}}&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|/lib/security is the dir, where pam assumes its modules on Debian and openSUSE, it may vary for your distro!}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|for openSUSE use this configure-command:}}&lt;br /&gt;
&amp;lt;code style=&amp;quot;white-space:nowrap;color:#495988;background-color:white;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;$&amp;lt;/nowiki&amp;gt; ./configure --prefix=/usr --with-securedir=/lib/security --with-birdir=/etc/pam_thinkfinger&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If everything went ok assert that you find pam_thinkfinger.so in /lib/security typing:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|ls /lib/security}}&lt;br /&gt;
&lt;br /&gt;
== Testing the driver ==&lt;br /&gt;
Now the driver is installed and should be working. You can try it (as root) with&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|tf-tool --acquire}}&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|tf-tool --verify}}&lt;br /&gt;
&lt;br /&gt;
This will ask you to swipe your finger three times, save the fingerprint to /tmp/test.bir and then verify your fingerprint with the bir-file.&lt;br /&gt;
&lt;br /&gt;
== Configuring PAM to use ThinkFinger ==&lt;br /&gt;
Now you can configure pam to use ThinkFinger:&lt;br /&gt;
&lt;br /&gt;
Open /etc/pam.d/common-auth:&lt;br /&gt;
{{NOTE|In FC6 this file is &amp;quot;/etc/pam.d/system-auth&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|nano -w /etc/pam.d/common-auth}}&lt;br /&gt;
&lt;br /&gt;
Add this line before any pam_unix or pam_unix2 directives:&lt;br /&gt;
 auth     sufficient     pam_thinkfinger.so&lt;br /&gt;
&lt;br /&gt;
If your PAM uses the pam_unix and not the pam_unix2 module, you need to pass a specific argument in&lt;br /&gt;
the /etc/pam.d/common-auth directive to make it consider the password entered at the pam_thinkfinger prompt.&lt;br /&gt;
 auth     required     pam_unix.so try_first_pass&lt;br /&gt;
&lt;br /&gt;
For instance, /etc/pam.d/common-auth looks like this:&lt;br /&gt;
 auth    sufficient      pam_thinkfinger.so&lt;br /&gt;
 auth    required        pam_unix.so nullok_secure try_first_pass&lt;br /&gt;
&lt;br /&gt;
On openSUSE 10.2, it looks like this now:&lt;br /&gt;
 auth    required        pam_env.so&lt;br /&gt;
 auth    sufficient      pam_thinkfinger.so&lt;br /&gt;
 auth    required        pam_unix2.so&lt;br /&gt;
&lt;br /&gt;
Now we are ready to add users to thinkfinger. As &amp;quot;make install&amp;quot; did not create /etc/pam_thinkfinger, you need to create it now:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|mkdir /etc/pam_thinkfinger}}&lt;br /&gt;
&lt;br /&gt;
And now, you can add a fingerprint for a user with:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|tf-tool --add-user $USERNAME}}&lt;br /&gt;
&lt;br /&gt;
Now the user should be able to login with his finger instead of the password.&lt;br /&gt;
&lt;br /&gt;
If you would like to use thinkfinger for su, you have to enroll the fingerprint for root user with:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|tf-tool --add-user root}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|You should see the &amp;quot;Password or swipe finger:&amp;quot; prompt when trying to sudo or su. If you don't, you probably do not have the &amp;quot;User level driver support&amp;quot; compiled into your kernel or the &amp;quot;uinput&amp;quot; module loaded!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GNOME ==&lt;br /&gt;
&lt;br /&gt;
=== gksu/gksudo ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gksu/gksudo doesn't work correctly. It just stays invisible. When starting a su privileged application such as synaptics you will not get prompted for the password. Nevertheless you can swipe your finger and it should authenticate you. Starting synaptics twice makes gksudo visible.&lt;br /&gt;
&lt;br /&gt;
There are two possibilities to solve it:&lt;br /&gt;
* Changing the string &amp;quot;Password or swipe finger:&amp;quot; to a plain &amp;quot;Password:&amp;quot; (like sudo normally would do) in the file pam/pam_thinkfinger.c of the thinkfinger source directory. Of course, in the console you will then only see a &amp;quot;Password:&amp;quot; instead of &amp;quot;Password or swipe finger:&amp;quot; but this is still more usefull than having gksu/gksudo crashing everytime.&lt;br /&gt;
* Patching libgksu with the following patch. This is also a nasty hack until a better solution is implemented.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- libgksu-2.0.3/libgksu/libgksu.c.orig	2007-06-17 16:00:24.000000000 +0200&lt;br /&gt;
+++ libgksu-2.0.3/libgksu/libgksu.c		2007-06-17 16:00:47.000000000 +0200&lt;br /&gt;
@@ -2663,7 +2663,7 @@&lt;br /&gt;
        */&lt;br /&gt;
       for (counter = 0; counter &amp;lt; 50; counter++)&lt;br /&gt;
 	{&lt;br /&gt;
-	  if (strncmp (buffer, &amp;quot;GNOME_SUDO_PASS&amp;quot;, 15) == 0)&lt;br /&gt;
+	  if (strncmp (buffer, &amp;quot;GNOME_SUDO_PASS&amp;quot;, 15) == 0 || strncmp (buffer, &amp;quot;Password or swi&amp;quot;, 15) == 0)&lt;br /&gt;
 	    break;&lt;br /&gt;
 &lt;br /&gt;
 	  read_line (parent_pipe[0], buffer, 256);&lt;br /&gt;
@@ -2675,7 +2675,7 @@&lt;br /&gt;
       if (context-&amp;gt;debug)&lt;br /&gt;
 	fprintf (stderr, &amp;quot;brute force GNOME_SUDO_PASS ended...\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
-      if (strncmp(buffer, &amp;quot;GNOME_SUDO_PASS&amp;quot;, 15) == 0)&lt;br /&gt;
+      if (strncmp(buffer, &amp;quot;GNOME_SUDO_PASS&amp;quot;, 15) == 0 || strncmp(buffer, &amp;quot;Password or swi&amp;quot;, 15) == 0)&lt;br /&gt;
 	{&lt;br /&gt;
 	  gchar *password = NULL;&lt;br /&gt;
 	  gboolean prompt_grab;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
&lt;br /&gt;
Integration in KDE and kdm seems not to be easily possible now. There is a filed [https://bugs.kde.org/show_bug.cgi?id=116682 bug] at kde.org where you can vote for this.&lt;br /&gt;
&lt;br /&gt;
Moreover, kdm in openSUSE 10.3 crashes when pam_thinkfinger is enabled. A possible &amp;quot;workaround&amp;quot; is downgrading to thinkfinger 0.2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This Howto was copied from [[Installing Ubuntu 6.06 on a ThinkPad T43#Fingerprint_Reader]] and then slightly modified.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Xorg_RandR_1.2&amp;diff=32238</id>
		<title>Xorg RandR 1.2</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Xorg_RandR_1.2&amp;diff=32238"/>
		<updated>2007-08-19T15:18:06Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* References */ point to ATI radeon randr-1.2 git tree&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Fixme|This page will cover use of Xorg 7.3 with RandR version 1.2 based on testing the forthcoming Ubuntu 'Gutsy' (7.10) release with a Thinkpad R60e (Intel 946GM graphics chip). As the release stabilises so should this page transform from a lab notebook to a fully written-up howto.}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
'''X RandR '''is used to set the size, orientation and reflection of the screen display outputs.&lt;br /&gt;
&lt;br /&gt;
xrandr is the command line interface to the RandR X extension. As usual with X good documentation is hard to find, to start somewhere try&lt;br /&gt;
&lt;br /&gt;
    {{cmduser|xrandr --help}}&lt;br /&gt;
    {{cmduser|man xrandr}}&lt;br /&gt;
    {{cmduser|man intel}}&lt;br /&gt;
&lt;br /&gt;
== xorg.conf ==&lt;br /&gt;
Start testing with a default configuration.&lt;br /&gt;
Connect the external display to the VGA port, turn on that display, boot and run (as root)&lt;br /&gt;
&lt;br /&gt;
    {{cmdroot|dpkg-reconfigure -phigh xserver-xorg}}&lt;br /&gt;
 &lt;br /&gt;
The resulting {{path|/etc/X11/xorg.conf}} should include something like&lt;br /&gt;
&lt;br /&gt;
    Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier	&amp;quot;Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller&amp;quot;&lt;br /&gt;
        Driver		&amp;quot;intel&amp;quot;&lt;br /&gt;
        BusID		&amp;quot;PCI:0:2:0&amp;quot;&lt;br /&gt;
    EndSection&lt;br /&gt;
    Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier	&amp;quot;Generic Monitor&amp;quot;&lt;br /&gt;
        Option		&amp;quot;DPMS&amp;quot;&lt;br /&gt;
    EndSection&lt;br /&gt;
    Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier	&amp;quot;Default Screen&amp;quot;&lt;br /&gt;
        Device		&amp;quot;Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller&amp;quot;&lt;br /&gt;
        Monitor		&amp;quot;Generic Monitor&amp;quot;&lt;br /&gt;
        DefaultDepth	24&lt;br /&gt;
    ...&lt;br /&gt;
        SubSection &amp;quot;Display&amp;quot;&lt;br /&gt;
            Depth		24&lt;br /&gt;
            Modes		&amp;quot;1600x1200&amp;quot; &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot;&lt;br /&gt;
        EndSubSection&lt;br /&gt;
    EndSection&lt;br /&gt;
    Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
        Identifier	&amp;quot;Default Layout&amp;quot;&lt;br /&gt;
        Screen		&amp;quot;Default Screen&amp;quot;&lt;br /&gt;
        InputDevice	&amp;quot;Generic Keyboard&amp;quot;&lt;br /&gt;
        InputDevice	&amp;quot;Configured Mouse&amp;quot;&lt;br /&gt;
        InputDevice     &amp;quot;stylus&amp;quot;	&amp;quot;SendCoreEvents&amp;quot;&lt;br /&gt;
        InputDevice     &amp;quot;cursor&amp;quot;	&amp;quot;SendCoreEvents&amp;quot;&lt;br /&gt;
        InputDevice     &amp;quot;eraser&amp;quot;	&amp;quot;SendCoreEvents&amp;quot;&lt;br /&gt;
        InputDevice	&amp;quot;Synaptics Touchpad&amp;quot;&lt;br /&gt;
    EndSection&lt;br /&gt;
&lt;br /&gt;
after creating a clean Xorg.conf restart X and logon&lt;br /&gt;
&lt;br /&gt;
You will probably find you have a display only on the external VGA screen at its default max resolution.&lt;br /&gt;
&lt;br /&gt;
== Using  {{cmduser|xrandr}} ==&lt;br /&gt;
&lt;br /&gt;
Open a terminal window to use the command line: 'Applications:Accessories:Terminal'&lt;br /&gt;
&lt;br /&gt;
{{HINT|First look at the 'help' and 'man' pages. }}&lt;br /&gt;
   {{cmduser|xrandr --help}}&lt;br /&gt;
   {{cmduser|man xrandr}}&lt;br /&gt;
&lt;br /&gt;
To query what we have&lt;br /&gt;
{{cmduser| xrandr -v}}&lt;br /&gt;
    Server reports RandR version 1.2&lt;br /&gt;
{{cmduser| xrandr -q }}&lt;br /&gt;
  Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1600 x 1600&lt;br /&gt;
  VGA connected (normal left inverted right)&lt;br /&gt;
      1600x1200      60.0 +   59.9  &lt;br /&gt;
      1280x1024      75.0     59.9  &lt;br /&gt;
      1152x864       74.8  &lt;br /&gt;
      1024x768       75.1     60.0  &lt;br /&gt;
      800x600        75.0     60.3  &lt;br /&gt;
      640x480        75.0     60.0  &lt;br /&gt;
      720x400        70.1  &lt;br /&gt;
  LVDS connected 1024x768+0+0 (normal left inverted right) 304mm x 228mm&lt;br /&gt;
      1024x768       60.0*+   50.0  &lt;br /&gt;
      800x600        60.3  &lt;br /&gt;
      640x480        60.0     59.9  &lt;br /&gt;
  TV disconnected (normal left inverted right)&lt;br /&gt;
&lt;br /&gt;
{{cmduser| xrandr -v}}&lt;br /&gt;
tells us more&lt;br /&gt;
&lt;br /&gt;
{{cmduser| xrandr --output LVDS --auto}}&lt;br /&gt;
gets two screens but both at 1600x1200 cloned&lt;br /&gt;
&lt;br /&gt;
{{cmduser| xrandr --output LVDS --mode 1024x768 --output VGA --off }}&lt;br /&gt;
gets laptop only at 1024x768&lt;br /&gt;
&lt;br /&gt;
{{cmduser| xrandr --output VGA --right-of LVDS --mode 1600x1200 }}&lt;br /&gt;
    xrandr: screen cannot be larger than 1600x1600 (desired size 2624x1200)&lt;br /&gt;
&lt;br /&gt;
{{cmduser| xrandr --output VGA  --mode 1600x1200 --pos 0x400 }}&lt;br /&gt;
creates two screens with the laptop screen at  bottom of the 1600x1600 window&lt;br /&gt;
&lt;br /&gt;
{{cmduser| xrandr --output LVDS --mode 1024x768 --pos 0x400 }}&lt;br /&gt;
moves laptop screen to top of window, so both share same top line (which is where I prefer my menu bar)&lt;br /&gt;
&lt;br /&gt;
===So, the story so far ===&lt;br /&gt;
''2007-07-25:''&lt;br /&gt;
'''xrandr''' enables dynamic resizing of screens, switching both external and laptop screens on and off, and the applications windows can be dragged from one screen to the other. None of this requires configuring anything special for {{path|/etc/X11/xorg.conf}}. Downside: the virtual screen is not big enough at at 1600x1600 to permit a 1024x768 laptop and a 1600x1200 external monitor screen to be used in a non-overlapped arrangement, something that is possible doing it the old way.&lt;br /&gt;
&lt;br /&gt;
Reboot with VGA disconnected, 1024x768 ok but connecting Dell 1600FP does not detect modes above 1024x768, is this just a problem with this monitor? logoff, gdm now shows clone screen at 1600x1200. logon now only 1600x1200 on VGA and LVDS is off.&lt;br /&gt;
&lt;br /&gt;
''2007-08-19:''&lt;br /&gt;
Add a '''Virtual xdim ydim''' to your ''Subsection Display'', ''Depth 24'' section just below the ''Modes'' line. Choose xdim and ydim so that the lagest non-overlapping configuration you wish to use fits. In my case this is: 1024x768 (LVDS) + 1280x1024 (VGA) =&amp;gt; '''Virtual  2304 1024'''.&lt;br /&gt;
&lt;br /&gt;
Restart X and run '''xrandr --output VGA --mode 1280x1024 --left-of LVDS'''.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Version 7.10 (Gutsy) of Ubuntu includes support for Xorg 7.3 with RandR 1.2 [https://wiki.ubuntu.com/Xorg7.3Integration Xorg 7.3]&lt;br /&gt;
&lt;br /&gt;
For versions of Ubuntu prior to 7.10 see [[Installing Ubuntu on a ThinkPad R60e]]  for an Xorg.conf suitable for use with more than one screen&lt;br /&gt;
&lt;br /&gt;
RandR extension is currently under development  see: [http://wiki.x.org/wiki/XDC2007Notes#head-11895d48723a8d0308571bec8829b7cc3ef87d7b Xorg Developer Conference 2007] and [http://burtonini.com/blog/computers/randr-2007-02-06-17-50 X RandR v1.2].&lt;br /&gt;
&lt;br /&gt;
Useful page to supplement the minimal documentation  [http://wiki.x.org/wiki/Development/Documentation/HowVideoCardsWork How video cards work]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.debian.org/XStrikeForce/ReleaseNotes xserver-xorg-core  and xserver-xorg-video-intel might cause some trouble but also brings nice features.]&lt;br /&gt;
&lt;br /&gt;
[http://andrew.mcmillan.net.nz/taxonomy/term/18 Seamless Monitor Hotplugging with X Windows]&lt;br /&gt;
&lt;br /&gt;
[https://launchpad.net/ubuntu/+source/xserver-xorg-video-intel/ Ubuntu source]&lt;br /&gt;
&lt;br /&gt;
[http://www.intellinuxgraphics.org/  Linux Graphics Drivers from Intel]&lt;br /&gt;
&lt;br /&gt;
[http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-ati.git;a=shortlog;h=randr-1.2 ATI Radeon randr-1.2 git tree]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_Ultrabay_devices&amp;diff=32132</id>
		<title>How to hotswap Ultrabay devices</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_Ultrabay_devices&amp;diff=32132"/>
		<updated>2007-08-16T10:29:56Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following discusses hotswap (AKA &amp;quot;hotplug&amp;quot;) of devices in the [[UltraBay]].&lt;br /&gt;
&lt;br /&gt;
==When using the &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; driver==&lt;br /&gt;
The following applies if you use the &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; driver for the UltraBay device.&lt;br /&gt;
&lt;br /&gt;
Hotswapping is supposed to be supported as well, using either hdparm/[http://packages.debian.org/unstable/admin/hotswap Debian hotswap] or [[lt_hotswap]] to (un)register IDE devices. The latter is the recommended method with kernels from 2.6, since it will leave DMA working. However, for recent models (R52, T43, X41, Z60 and later) no method is known to work while maintaining DMA support; see [[Problems with SATA and Linux]].&lt;br /&gt;
&lt;br /&gt;
Only IDE devices (HDD's, optical drives, zip drives) require special treatment - batteries, floppies and other devices can just be pulled from the bay, provided they are not mounted or in use at the time. However, you should still power them down first using the [[ibm-acpi]] eject function.&lt;br /&gt;
&lt;br /&gt;
The [[ibm-acpi]] kernel module has an eject function ({{cmdroot|echo eject &amp;gt; /proc/acpi/ibm/bay}}). This only manages the ACPI calls to power down the device and the bay. It does not actually unregister the device from the IDE driver. {{cmdroot|cat /proc/acpi/ibm/bay}} shows &amp;quot;unoccupied&amp;quot; unless an IDE device is present, but the eject function still works and should still be used.&lt;br /&gt;
&lt;br /&gt;
To unregister the device, you can either use the [http://packages.debian.org/unstable/admin/hotswap Debian hotswap] package, or [[lt_hotswap]].&lt;br /&gt;
&lt;br /&gt;
[http://packages.debian.org/unstable/admin/hotswap Debian hotswap] also allows the drive to be swapped as a normal user by default, which is useful. You should use &amp;lt;tt&amp;gt;hotswap&amp;lt;/tt&amp;gt; to unregister the device and then {{cmdroot|echo eject &amp;gt; /proc/acpi/ibm/bay}}. However, if you use this method on a 2.6 kernel, you will lose DMA support for the reinserted drive. This is due to kernel issues. This method was reported to work on a ThinkPad {{T23}} (kernels 2.6.8.1, 2.6.14.2 and 2.6.15-arch) and {{T42}} (kernel 2.6.13), but fails on a ThinkPad {{T43}} (kernel 2.6.14.3).&lt;br /&gt;
&lt;br /&gt;
[[lt_hotswap]] is now the recommended method to un- and reregister the IDE device. It installs as a kernel module and has support for automatically unregistering (if loaded with the auto_eject=1 option) the device when the eject event is generated by [[ibm-acpi]]. It will leave DMA support intact. It has supported to work on a ThinkPad {{T22}} and {{T40}} and should work with many other models (but not recent models which require the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver for disk DMA support). With the [[lt_hotswap]] kernel module loaded, run: {{cmdroot|modprobe -r ide_cd &amp;amp;&amp;amp; modprobe -r cdrom &amp;amp;&amp;amp; echo &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths}}&lt;br /&gt;
&lt;br /&gt;
===HAL support===&lt;br /&gt;
&lt;br /&gt;
HAL support also can also be configured To do so, create the file {{path|/etc/hal/fdi/information/10-ultrabay.fdi}} as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt; &amp;lt;!-- -*- SGML -*- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deviceinfo version=&amp;quot;0.2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;device&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- UltraBay Devices --&amp;gt;&lt;br /&gt;
    &amp;lt;match key=&amp;quot;storage.bus&amp;quot; string=&amp;quot;ide&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;match key=&amp;quot;storage.physical_device&amp;quot; string=&amp;quot;/org/freedesktop/Hal/devices/pci_8086_24ca_ide_1_0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;merge key=&amp;quot;storage.hotpluggable&amp;quot; type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;
      &amp;lt;/match&amp;gt;&lt;br /&gt;
    &amp;lt;/match&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/device&amp;gt;&lt;br /&gt;
&amp;lt;/deviceinfo&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For more details see HAL section for ata driver.&lt;br /&gt;
&lt;br /&gt;
==When using the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver==&lt;br /&gt;
The following applies when using the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver, which is necessary for many recent ThinkPad models that use an [[Intel ICH6-M]] controller. See also [[Problems with SATA and Linux]]. &lt;br /&gt;
&lt;br /&gt;
Mainline kernels before 2.6.18 cannot reliably recognize newly (re-)inserted UltraBay drives without a reboot. There are experimental hotplug patches against pre-2.6.18 mainline kernels [http://home-tj.org/wiki/index.php/Libata-tj-stable here].&lt;br /&gt;
&lt;br /&gt;
* Available hotplug patches&lt;br /&gt;
**[http://home-tj.org/files/libata-tj-stable/libata-tj-2.6.16.16-20060512.tar.bz2 Patch tarball against 2.6.16.16] ([http://lwn.net/Articles/183407/ Announce])&lt;br /&gt;
**[http://home-tj.org/files/libata-tj-stable/libata-tj-2.6.17-20060625-1.tar.bz2 Patch tarball against 2.6.17/2.6.17.1] ([http://article.gmane.org/gmane.linux.ide/11598 Announce])&lt;br /&gt;
**[http://home-tj.org/files/libata-tj-stable/libata-tj-2.6.17.4-20060710.tar.bz2 Patch tarball against 2.6.17.4]&lt;br /&gt;
**[http://whoopie.gmxhome.de/linux/patches/2.6.17.14-tj/00-libata-tj-2.6.17.4-20060710.patch Patch against 2.6.17.14]&lt;br /&gt;
&lt;br /&gt;
* Confirmed to work on&lt;br /&gt;
**ThinkPad {{T30}}&lt;br /&gt;
**ThinkPad {{T43}}, {{T43p}}&lt;br /&gt;
**ThinkPad {{R52}}&lt;br /&gt;
&lt;br /&gt;
For 2.6.18 kernels, or older kernels that were patched to support &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; hotplug (don't try it otherwise!), one can issue the following after inserting an UltraBay drive to rescan the port:&lt;br /&gt;
 {{cmdroot|echo 0 0 0 &amp;gt;  /sys/class/scsi_host/host1/scan}}&lt;br /&gt;
The inserted drive should now be recognized by the kernel, and appropriate {{path|/dev/*}} entries created automatically (e.g., by &amp;lt;tt&amp;gt;udev&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
You can safely shut down the drive by issuing the following (this works with all recent mainline kernels):&lt;br /&gt;
 {{cmdroot|echo 1 &amp;gt; /sys/class/scsi_device/1\:0\:0\:0/device/delete}}&lt;br /&gt;
 {{cmdroot|echo eject &amp;gt;  /proc/acpi/ibm/bay}}&lt;br /&gt;
The drive can now be ejected.&lt;br /&gt;
&lt;br /&gt;
===Scripts for hotswapping===&lt;br /&gt;
&lt;br /&gt;
The following scripts and [[acpid]] daemon configuration files do the following:&lt;br /&gt;
* Automatically unmounts the relevant filesystems and power off the UltraBay when the UltraBay eject lever is released. Screams if some filesystem can't be unmounted.&lt;br /&gt;
* Rescans the UltraBay port when then UltraBay eject lever is pushed back in.&lt;br /&gt;
&lt;br /&gt;
They assumes you're using the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver with an appropriate kernel (see above).&lt;br /&gt;
&lt;br /&gt;
Create {{path|/usr/local/sbin/ultrabay_insert}} with permissions 755:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo 12 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
sync&lt;br /&gt;
echo 0 0 0 &amp;gt; /sys/class/scsi_host/host1/scan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create {{path|/usr/local/sbin/ultrabay_eject}} with permissions 755:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
ULTRABAY_SYSDIR='/sys/class/scsi_device/1:0:0:0/device'&lt;br /&gt;
shopt -s nullglob&lt;br /&gt;
&lt;br /&gt;
# Umount the filesystem(s) backed by the given major:minor device(s)&lt;br /&gt;
unmount_rdev() { perl - &amp;quot;$@&amp;quot; &amp;lt;&amp;lt;'EOPERL'  # let's do it in Perl&lt;br /&gt;
	for $major_minor (@ARGV) {&lt;br /&gt;
		$major_minor =~ m/^(\d+):(\d+)$/ or die;&lt;br /&gt;
		push(@tgt_rdevs, ($1&amp;lt;&amp;lt;8)|$2);&lt;br /&gt;
	}&lt;br /&gt;
        # Sort by reverse length of mount point, to unmount sub-directories first&lt;br /&gt;
        open MOUNTS,&amp;quot;&amp;lt;/proc/mounts&amp;quot; or die &amp;quot;$!&amp;quot;;&lt;br /&gt;
        @mounts=sort { length($b-&amp;gt;[1]) &amp;lt;=&amp;gt; length($a-&amp;gt;[1]) } map { [ split ] } &amp;lt;MOUNTS&amp;gt;;&lt;br /&gt;
        close MOUNTS;&lt;br /&gt;
        foreach $m (@mounts) {&lt;br /&gt;
                ($dev,$dir)=@$m;&lt;br /&gt;
		next unless -b $dev;  $rdev=(stat($dev))[6];&lt;br /&gt;
		next unless grep($_==$rdev, @tgt_rdevs);&lt;br /&gt;
		system(&amp;quot;umount&amp;quot;,&amp;quot;-v&amp;quot;,&amp;quot;$dir&amp;quot;)==0  or  $bad=1;&lt;br /&gt;
	}&lt;br /&gt;
	exit 1 if $bad;&lt;br /&gt;
EOPERL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Get the UltraBay's /dev/foo block device node&lt;br /&gt;
ultrabay_dev_node() {&lt;br /&gt;
	UDEV_PATH=&amp;quot;`readlink -e &amp;quot;$ULTRABAY_SYSDIR/block:&amp;quot;*`&amp;quot; || return 1&lt;br /&gt;
	UDEV_NAME=&amp;quot;`udevinfo -q name -p $UDEV_PATH`&amp;quot; || return 1&lt;br /&gt;
	echo /dev/$UDEV_NAME&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if [ -d $ULTRABAY_SYSDIR ]; then&lt;br /&gt;
	sync&lt;br /&gt;
	# Unmount filesystems backed by this device&lt;br /&gt;
	unmount_rdev `cat $ULTRABAY_SYSDIR/block\:*/dev     \&lt;br /&gt;
	                  $ULTRABAY_SYSDIR/block\:*/*/dev`  \&lt;br /&gt;
	|| {&lt;br /&gt;
		echo 10 &amp;gt; /proc/acpi/ibm/beep;  # error tone&lt;br /&gt;
		exit 1;&lt;br /&gt;
	}&lt;br /&gt;
        sync&lt;br /&gt;
        # Nicely power off the device&lt;br /&gt;
	DEVNODE=`ultrabay_dev_node` &amp;amp;&amp;amp; hdparm -Y $DEVNODE&lt;br /&gt;
        # Let HAL+KDE notice the unmount and let the disk spin down&lt;br /&gt;
	sleep 0.5&lt;br /&gt;
	# Unregister this SCSI device:&lt;br /&gt;
	sync&lt;br /&gt;
	echo 1 &amp;gt; $ULTRABAY_SYSDIR/delete&lt;br /&gt;
fi&lt;br /&gt;
sync&lt;br /&gt;
# Turn off power to the UltraBay:&lt;br /&gt;
if [ -d /sys/devices/platform/bay.0 ]; then&lt;br /&gt;
	echo 1 &amp;gt; /sys/devices/platform/bay.0/eject&lt;br /&gt;
else&lt;br /&gt;
	echo eject &amp;gt; /proc/acpi/ibm/bay&lt;br /&gt;
fi&lt;br /&gt;
# Tell the user we're OK&lt;br /&gt;
echo 12 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create {{path|/etc/acpi/events/ultrabay-insert}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event=ibm/bay MSTR 00000001 00000000&lt;br /&gt;
action=/usr/local/sbin/ultrabay_insert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create {{path|/etc/acpi/events/ultrabay-eject}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event=ibm/bay MSTR 00000003 00000000&lt;br /&gt;
action=/usr/local/sbin/ultrabay_eject&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart &amp;lt;tt&amp;gt;acpid&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===using the generic bay driver and udev===&lt;br /&gt;
&lt;br /&gt;
Starting from kernel 2.6.23-rc3, it's possible to use the generic &amp;lt;tt&amp;gt;bay&amp;lt;/tt&amp;gt; driver in combination with udev to hotswap. Please check if CONFIG_ACPI_BAY is enabled (module or built-in) in your kernel configuration.&lt;br /&gt;
&lt;br /&gt;
Create {{path|/etc/udev/rules.d/ibm-ultrabay.rules}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENV{BAY_EVENT}==&amp;quot;3&amp;quot;, KERNEL==&amp;quot;bay.0&amp;quot;, ACTION==&amp;quot;change&amp;quot;, SUBSYSTEM==&amp;quot;platform&amp;quot;, RUN+=&amp;quot;/usr/local/sbin/ultrabay_eject&amp;quot;&lt;br /&gt;
ENV{BAY_EVENT}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;bay.0&amp;quot;, ACTION==&amp;quot;change&amp;quot;, SUBSYSTEM==&amp;quot;platform&amp;quot;, RUN+=&amp;quot;/usr/local/sbin/ultrabay_insert&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HAL support===&lt;br /&gt;
&lt;br /&gt;
Many programs, KDE included, rely on [[HAL]] to get notifications and information about device hotplugging. You need to tell HAL that devices connected the UltraBay port are hotpluggable. To do so, create the file {{path|/etc/hal/fdi/information/10-ultrabay.fdi}} as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt; &amp;lt;!-- -*- SGML -*- --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;deviceinfo version=&amp;quot;0.2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;device&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- UltraBay Devices --&amp;gt;&lt;br /&gt;
    &amp;lt;match key=&amp;quot;storage.bus&amp;quot; string=&amp;quot;scsi&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;match key=&amp;quot;storage.physical_device&amp;quot; string=&amp;quot;/org/freedesktop/Hal/devices/pci_8086_2653_scsi_host_0_scsi_device_lun0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;merge key=&amp;quot;storage.hotpluggable&amp;quot; type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;
      &amp;lt;/match&amp;gt;&lt;br /&gt;
    &amp;lt;/match&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/device&amp;gt;&lt;br /&gt;
&amp;lt;/deviceinfo&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
&lt;br /&gt;
By default, HAL doesn't know that UltraBay devices are hotpluggable:&lt;br /&gt;
&lt;br /&gt;
 # PHYSDEV=/org/freedesktop/Hal/devices/pci_8086_2653_scsi_host_0_scsi_device_lun0&lt;br /&gt;
 # UDI=`hal-find-by-property --key storage.physical_device --string $PHYSDEV` || echo Failed&lt;br /&gt;
 # hal-get-property --udi $UDI --key block.device&lt;br /&gt;
 /dev/sdb&lt;br /&gt;
 # hal-get-property --udi $UDI --key storage.hotpluggable&lt;br /&gt;
 false&lt;br /&gt;
&lt;br /&gt;
After creating {{path|/etc/hal/fdi/information/10-ultrabay.fdi}} as above and re-plugging the device, it will get marked correctly:&lt;br /&gt;
&lt;br /&gt;
 # PHYSDEV=/org/freedesktop/Hal/devices/pci_8086_2653_scsi_host_0_scsi_device_lun0&lt;br /&gt;
 # UDI=`hal-find-by-property --key storage.physical_device --string $PHYSDEV` || echo Failed&lt;br /&gt;
 # hal-get-property --udi $UDI --key block.device&lt;br /&gt;
 /dev/sdb&lt;br /&gt;
 # hal-get-property --udi $UDI --key storage.hotpluggable&lt;br /&gt;
 true&lt;br /&gt;
&lt;br /&gt;
The string &amp;quot;8086_2653&amp;quot; gives the PCI ID of the [[Intel 82801FBM]] southbridge. If your model has a different southbridge, or the UltraBay is attached to a different port, then you can find the appropriate &amp;lt;tt&amp;gt;storage.physical_device&amp;lt;/tt&amp;gt; value by finding out the block device of the currently running UltraBay device (&amp;lt;tt&amp;gt;/dev/sdb&amp;lt;/tt&amp;gt; in the following example) and then running:&lt;br /&gt;
&lt;br /&gt;
 # DEVICE=/dev/sdb&lt;br /&gt;
 # UDI=`hal-find-by-property --key block.device --string $DEVICE` || echo Failed&lt;br /&gt;
 # hal-get-property --udi $UDI --key storage.physical_device&lt;br /&gt;
 /org/freedesktop/Hal/devices/pci_8086_2653_scsi_host_0_scsi_device_lun0&lt;br /&gt;
&lt;br /&gt;
If you have a different &amp;lt;tt&amp;gt;storage.physical_device&amp;lt;/tt&amp;gt; value, please report your findings.&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
|+ Known South Bridge PCI IDs&lt;br /&gt;
! ID !! ThinkPad model !! South Bridge chip&lt;br /&gt;
|-&lt;br /&gt;
| 8086_248a || 2366-83U (T30) || Intel 82801CAM IDE U100 (rev 2)&lt;br /&gt;
|-&lt;br /&gt;
| 8086_2653 || 2525FAG (X41) || Intel 82801FBM&lt;br /&gt;
|-&lt;br /&gt;
| 8086_24ca || 237358U (T40) || Intel 82801DBM (ICH4-M)&lt;br /&gt;
|-&lt;br /&gt;
| 8086_27c4 || X60           || Intel 82801GBM (ICH7 Family)&lt;br /&gt;
|-&lt;br /&gt;
| 8086_27df || Z61p          || Intel 82801GBM/GHM (ICH7 Family)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other comments==&lt;br /&gt;
&lt;br /&gt;
If you are hot-swapping a hard disk on a disk tray, make sure the disk does not have a password set, otherwise it will not be recognized on reinsertion.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;br /&gt;
[[Category:HOWTOs]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_Ultrabay_devices&amp;diff=32131</id>
		<title>How to hotswap Ultrabay devices</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_Ultrabay_devices&amp;diff=32131"/>
		<updated>2007-08-16T10:26:17Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* using the generic bay driver and udev */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following discusses hotswap (AKA &amp;quot;hotplug&amp;quot;) of devices in the [[UltraBay]].&lt;br /&gt;
&lt;br /&gt;
==When using the &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; driver==&lt;br /&gt;
The following applies if you use the &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; driver for the UltraBay device.&lt;br /&gt;
&lt;br /&gt;
Hotswapping is supposed to be supported as well, using either hdparm/[http://packages.debian.org/unstable/admin/hotswap Debian hotswap] or [[lt_hotswap]] to (un)register IDE devices. The latter is the recommended method with kernels from 2.6, since it will leave DMA working. However, for recent models (R52, T43, X41, Z60 and later) no method is known to work while maintaining DMA support; see [[Problems with SATA and Linux]].&lt;br /&gt;
&lt;br /&gt;
Only IDE devices (HDD's, optical drives, zip drives) require special treatment - batteries, floppies and other devices can just be pulled from the bay, provided they are not mounted or in use at the time. However, you should still power them down first using the [[ibm-acpi]] eject function.&lt;br /&gt;
&lt;br /&gt;
The [[ibm-acpi]] kernel module has an eject function ({{cmdroot|echo eject &amp;gt; /proc/acpi/ibm/bay}}). This only manages the ACPI calls to power down the device and the bay. It does not actually unregister the device from the IDE driver. {{cmdroot|cat /proc/acpi/ibm/bay}} shows &amp;quot;unoccupied&amp;quot; unless an IDE device is present, but the eject function still works and should still be used.&lt;br /&gt;
&lt;br /&gt;
To unregister the device, you can either use the [http://packages.debian.org/unstable/admin/hotswap Debian hotswap] package, or [[lt_hotswap]].&lt;br /&gt;
&lt;br /&gt;
[http://packages.debian.org/unstable/admin/hotswap Debian hotswap] also allows the drive to be swapped as a normal user by default, which is useful. You should use &amp;lt;tt&amp;gt;hotswap&amp;lt;/tt&amp;gt; to unregister the device and then {{cmdroot|echo eject &amp;gt; /proc/acpi/ibm/bay}}. However, if you use this method on a 2.6 kernel, you will lose DMA support for the reinserted drive. This is due to kernel issues. This method was reported to work on a ThinkPad {{T23}} (kernels 2.6.8.1, 2.6.14.2 and 2.6.15-arch) and {{T42}} (kernel 2.6.13), but fails on a ThinkPad {{T43}} (kernel 2.6.14.3).&lt;br /&gt;
&lt;br /&gt;
[[lt_hotswap]] is now the recommended method to un- and reregister the IDE device. It installs as a kernel module and has support for automatically unregistering (if loaded with the auto_eject=1 option) the device when the eject event is generated by [[ibm-acpi]]. It will leave DMA support intact. It has supported to work on a ThinkPad {{T22}} and {{T40}} and should work with many other models (but not recent models which require the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver for disk DMA support). With the [[lt_hotswap]] kernel module loaded, run: {{cmdroot|modprobe -r ide_cd &amp;amp;&amp;amp; modprobe -r cdrom &amp;amp;&amp;amp; echo &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths}}&lt;br /&gt;
&lt;br /&gt;
===HAL support===&lt;br /&gt;
&lt;br /&gt;
HAL support also can also be configured To do so, create the file {{path|/etc/hal/fdi/information/10-ultrabay.fdi}} as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt; &amp;lt;!-- -*- SGML -*- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deviceinfo version=&amp;quot;0.2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;device&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- UltraBay Devices --&amp;gt;&lt;br /&gt;
    &amp;lt;match key=&amp;quot;storage.bus&amp;quot; string=&amp;quot;ide&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;match key=&amp;quot;storage.physical_device&amp;quot; string=&amp;quot;/org/freedesktop/Hal/devices/pci_8086_24ca_ide_1_0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;merge key=&amp;quot;storage.hotpluggable&amp;quot; type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;
      &amp;lt;/match&amp;gt;&lt;br /&gt;
    &amp;lt;/match&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/device&amp;gt;&lt;br /&gt;
&amp;lt;/deviceinfo&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For more details see HAL section for ata driver.&lt;br /&gt;
&lt;br /&gt;
==When using the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver==&lt;br /&gt;
The following applies when using the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver, which is necessary for many recent ThinkPad models that use an [[Intel ICH6-M]] controller. See also [[Problems with SATA and Linux]]. &lt;br /&gt;
&lt;br /&gt;
Mainline kernels before 2.6.18 cannot reliably recognize newly (re-)inserted UltraBay drives without a reboot. There are experimental hotplug patches against pre-2.6.18 mainline kernels [http://home-tj.org/wiki/index.php/Libata-tj-stable here].&lt;br /&gt;
&lt;br /&gt;
* Available hotplug patches&lt;br /&gt;
**[http://home-tj.org/files/libata-tj-stable/libata-tj-2.6.16.16-20060512.tar.bz2 Patch tarball against 2.6.16.16] ([http://lwn.net/Articles/183407/ Announce])&lt;br /&gt;
**[http://home-tj.org/files/libata-tj-stable/libata-tj-2.6.17-20060625-1.tar.bz2 Patch tarball against 2.6.17/2.6.17.1] ([http://article.gmane.org/gmane.linux.ide/11598 Announce])&lt;br /&gt;
**[http://home-tj.org/files/libata-tj-stable/libata-tj-2.6.17.4-20060710.tar.bz2 Patch tarball against 2.6.17.4]&lt;br /&gt;
**[http://whoopie.gmxhome.de/linux/patches/2.6.17.14-tj/00-libata-tj-2.6.17.4-20060710.patch Patch against 2.6.17.14]&lt;br /&gt;
&lt;br /&gt;
* Confirmed to work on&lt;br /&gt;
**ThinkPad {{T30}}&lt;br /&gt;
**ThinkPad {{T43}}, {{T43p}}&lt;br /&gt;
**ThinkPad {{R52}}&lt;br /&gt;
&lt;br /&gt;
For 2.6.18 kernels, or older kernels that were patched to support &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; hotplug (don't try it otherwise!), one can issue the following after inserting an UltraBay drive to rescan the port:&lt;br /&gt;
 {{cmdroot|echo 0 0 0 &amp;gt;  /sys/class/scsi_host/host1/scan}}&lt;br /&gt;
The inserted drive should now be recognized by the kernel, and appropriate {{path|/dev/*}} entries created automatically (e.g., by &amp;lt;tt&amp;gt;udev&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
You can safely shut down the drive by issuing the following (this works with all recent mainline kernels):&lt;br /&gt;
 {{cmdroot|echo 1 &amp;gt; /sys/class/scsi_device/1\:0\:0\:0/device/delete}}&lt;br /&gt;
 {{cmdroot|echo eject &amp;gt;  /proc/acpi/ibm/bay}}&lt;br /&gt;
The drive can now be ejected.&lt;br /&gt;
&lt;br /&gt;
===Scripts for hotswapping===&lt;br /&gt;
&lt;br /&gt;
The following scripts and [[acpid]] daemon configuration files do the following:&lt;br /&gt;
* Automatically unmounts the relevant filesystems and power off the UltraBay when the UltraBay eject lever is released. Screams if some filesystem can't be unmounted.&lt;br /&gt;
* Rescans the UltraBay port when then UltraBay eject lever is pushed back in.&lt;br /&gt;
&lt;br /&gt;
They assumes you're using the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver with an appropriate kernel (see above).&lt;br /&gt;
&lt;br /&gt;
Create {{path|/usr/local/sbin/ultrabay_insert}} with permissions 755:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo 12 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
sync&lt;br /&gt;
echo 0 0 0 &amp;gt; /sys/class/scsi_host/host1/scan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create {{path|/usr/local/sbin/ultrabay_eject}} with permissions 755:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
ULTRABAY_SYSDIR='/sys/class/scsi_device/1:0:0:0/device'&lt;br /&gt;
shopt -s nullglob&lt;br /&gt;
&lt;br /&gt;
# Umount the filesystem(s) backed by the given major:minor device(s)&lt;br /&gt;
unmount_rdev() { perl - &amp;quot;$@&amp;quot; &amp;lt;&amp;lt;'EOPERL'  # let's do it in Perl&lt;br /&gt;
	for $major_minor (@ARGV) {&lt;br /&gt;
		$major_minor =~ m/^(\d+):(\d+)$/ or die;&lt;br /&gt;
		push(@tgt_rdevs, ($1&amp;lt;&amp;lt;8)|$2);&lt;br /&gt;
	}&lt;br /&gt;
        # Sort by reverse length of mount point, to unmount sub-directories first&lt;br /&gt;
        open MOUNTS,&amp;quot;&amp;lt;/proc/mounts&amp;quot; or die &amp;quot;$!&amp;quot;;&lt;br /&gt;
        @mounts=sort { length($b-&amp;gt;[1]) &amp;lt;=&amp;gt; length($a-&amp;gt;[1]) } map { [ split ] } &amp;lt;MOUNTS&amp;gt;;&lt;br /&gt;
        close MOUNTS;&lt;br /&gt;
        foreach $m (@mounts) {&lt;br /&gt;
                ($dev,$dir)=@$m;&lt;br /&gt;
		next unless -b $dev;  $rdev=(stat($dev))[6];&lt;br /&gt;
		next unless grep($_==$rdev, @tgt_rdevs);&lt;br /&gt;
		system(&amp;quot;umount&amp;quot;,&amp;quot;-v&amp;quot;,&amp;quot;$dir&amp;quot;)==0  or  $bad=1;&lt;br /&gt;
	}&lt;br /&gt;
	exit 1 if $bad;&lt;br /&gt;
EOPERL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Get the UltraBay's /dev/foo block device node&lt;br /&gt;
ultrabay_dev_node() {&lt;br /&gt;
	UDEV_PATH=&amp;quot;`readlink -e &amp;quot;$ULTRABAY_SYSDIR/block:&amp;quot;*`&amp;quot; || return 1&lt;br /&gt;
	UDEV_NAME=&amp;quot;`udevinfo -q name -p $UDEV_PATH`&amp;quot; || return 1&lt;br /&gt;
	echo /dev/$UDEV_NAME&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if [ -d $ULTRABAY_SYSDIR ]; then&lt;br /&gt;
	sync&lt;br /&gt;
	# Unmount filesystems backed by this device&lt;br /&gt;
	unmount_rdev `cat $ULTRABAY_SYSDIR/block\:*/dev     \&lt;br /&gt;
	                  $ULTRABAY_SYSDIR/block\:*/*/dev`  \&lt;br /&gt;
	|| {&lt;br /&gt;
		echo 10 &amp;gt; /proc/acpi/ibm/beep;  # error tone&lt;br /&gt;
		exit 1;&lt;br /&gt;
	}&lt;br /&gt;
        sync&lt;br /&gt;
        # Nicely power off the device&lt;br /&gt;
	DEVNODE=`ultrabay_dev_node` &amp;amp;&amp;amp; hdparm -Y $DEVNODE&lt;br /&gt;
        # Let HAL+KDE notice the unmount and let the disk spin down&lt;br /&gt;
	sleep 0.5&lt;br /&gt;
	# Unregister this SCSI device:&lt;br /&gt;
	sync&lt;br /&gt;
	echo 1 &amp;gt; $ULTRABAY_SYSDIR/delete&lt;br /&gt;
fi&lt;br /&gt;
sync&lt;br /&gt;
# Turn off power to the UltraBay:&lt;br /&gt;
if [ -d /sys/devices/platform/bay.0 ]; then&lt;br /&gt;
	echo 1 &amp;gt; /sys/devices/platform/bay.0/eject&lt;br /&gt;
else&lt;br /&gt;
	echo eject &amp;gt; /proc/acpi/ibm/bay&lt;br /&gt;
fi&lt;br /&gt;
# Tell the user we're OK&lt;br /&gt;
echo 12 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create {{path|/etc/acpi/events/ultrabay-insert}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event=ibm/bay MSTR 00000001 00000000&lt;br /&gt;
action=/usr/local/sbin/ultrabay_insert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create {{path|/etc/acpi/events/ultrabay-eject}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event=ibm/bay MSTR 00000003 00000000&lt;br /&gt;
action=/usr/local/sbin/ultrabay_eject&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart &amp;lt;tt&amp;gt;acpid&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===using the generic bay driver and udev===&lt;br /&gt;
&lt;br /&gt;
Starting from kernel 2.6.23-rc3, it's possible to use the generic &amp;lt;tt&amp;gt;bay&amp;lt;/tt&amp;gt; driver in combination with udev to hotswap. Please check if CONFIG_ACPI_BAY is enabled (module or built-in) in your kernel configuration.&lt;br /&gt;
&lt;br /&gt;
Create {{path|/etc/udev/rules.d/ibm-ultrabay.rules}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENV{BAY_EVENT}==&amp;quot;3&amp;quot;, KERNEL==&amp;quot;bay.0&amp;quot;, ACTION==&amp;quot;change&amp;quot;, SUBSYSTEM==&amp;quot;platform&amp;quot;, RUN+=&amp;quot;/usr/local/sbin/ultrabay_eject&amp;quot;&lt;br /&gt;
ENV{BAY_EVENT}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;bay.0&amp;quot;, ACTION==&amp;quot;change&amp;quot;, SUBSYSTEM==&amp;quot;platform&amp;quot;, RUN+=&amp;quot;/usr/local/sbin/ultrabay_insert&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HAL support===&lt;br /&gt;
&lt;br /&gt;
Many programs, KDE included, rely on [[HAL]] to get notifications and information about device hotplugging. You need to tell HAL that devices connected the UltraBay port are hotpluggable. To do so, create the file {{path|/etc/hal/fdi/information/10-ultrabay.fdi}} as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt; &amp;lt;!-- -*- SGML -*- --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;deviceinfo version=&amp;quot;0.2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;device&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- UltraBay Devices --&amp;gt;&lt;br /&gt;
    &amp;lt;match key=&amp;quot;storage.bus&amp;quot; string=&amp;quot;scsi&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;match key=&amp;quot;storage.physical_device&amp;quot; string=&amp;quot;/org/freedesktop/Hal/devices/pci_8086_2653_scsi_host_0_scsi_device_lun0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;merge key=&amp;quot;storage.hotpluggable&amp;quot; type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;
      &amp;lt;/match&amp;gt;&lt;br /&gt;
    &amp;lt;/match&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/device&amp;gt;&lt;br /&gt;
&amp;lt;/deviceinfo&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
&lt;br /&gt;
By default, HAL doesn't know that UltraBay devices are hotpluggable:&lt;br /&gt;
&lt;br /&gt;
 # PHYSDEV=/org/freedesktop/Hal/devices/pci_8086_2653_scsi_host_0_scsi_device_lun0&lt;br /&gt;
 # UDI=`hal-find-by-property --key storage.physical_device --string $PHYSDEV` || echo Failed&lt;br /&gt;
 # hal-get-property --udi $UDI --key block.device&lt;br /&gt;
 /dev/sdb&lt;br /&gt;
 # hal-get-property --udi $UDI --key storage.hotpluggable&lt;br /&gt;
 false&lt;br /&gt;
&lt;br /&gt;
After creating {{path|/etc/hal/fdi/information/10-ultrabay.fdi}} as above and re-plugging the device, it will get marked correctly:&lt;br /&gt;
&lt;br /&gt;
 # PHYSDEV=/org/freedesktop/Hal/devices/pci_8086_2653_scsi_host_0_scsi_device_lun0&lt;br /&gt;
 # UDI=`hal-find-by-property --key storage.physical_device --string $PHYSDEV` || echo Failed&lt;br /&gt;
 # hal-get-property --udi $UDI --key block.device&lt;br /&gt;
 /dev/sdb&lt;br /&gt;
 # hal-get-property --udi $UDI --key storage.hotpluggable&lt;br /&gt;
 true&lt;br /&gt;
&lt;br /&gt;
The string &amp;quot;8086_2653&amp;quot; gives the PCI ID of the [[Intel 82801FBM]] southbridge. If your model has a different southbridge, or the UltraBay is attached to a different port, then you can find the appropriate &amp;lt;tt&amp;gt;storage.physical_device&amp;lt;/tt&amp;gt; value by finding out the block device of the currently running UltraBay device (&amp;lt;tt&amp;gt;/dev/sdb&amp;lt;/tt&amp;gt; in the following example) and then running:&lt;br /&gt;
&lt;br /&gt;
 # DEVICE=/dev/sdb&lt;br /&gt;
 # UDI=`hal-find-by-property --key block.device --string $DEVICE` || echo Failed&lt;br /&gt;
 # hal-get-property --udi $UDI --key storage.physical_device&lt;br /&gt;
 /org/freedesktop/Hal/devices/pci_8086_2653_scsi_host_0_scsi_device_lun0&lt;br /&gt;
&lt;br /&gt;
If you have a different &amp;lt;tt&amp;gt;storage.physical_device&amp;lt;/tt&amp;gt; value, please report your findings.&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
|+ Known South Bridge PCI IDs&lt;br /&gt;
! ID !! ThinkPad model !! South Bridge chip&lt;br /&gt;
|-&lt;br /&gt;
| 8086_248a || 2366-83U (T30) || Intel 82801CAM IDE U100 (rev 2)&lt;br /&gt;
|-&lt;br /&gt;
| 8086_2653 || 2525FAG (X41) || Intel 82801FBM&lt;br /&gt;
|-&lt;br /&gt;
| 8086_24ca || 237358U (T40) || Intel 82801DBM (ICH4-M)&lt;br /&gt;
|-&lt;br /&gt;
| 8086_27c4 || X60           || Intel 82801GBM (ICH7 Family)&lt;br /&gt;
|-&lt;br /&gt;
| 8086_27df || Z61p          || Intel 82801GBM/GHM (ICH7 Family)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other comments==&lt;br /&gt;
&lt;br /&gt;
If you are hot-swapping a hard disk on a disk tray, make sure the disk does not have a password set, otherwise it will not be recognized on reinsertion.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;br /&gt;
[[Category:HOWTOs]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_Ultrabay_devices&amp;diff=32130</id>
		<title>How to hotswap Ultrabay devices</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_Ultrabay_devices&amp;diff=32130"/>
		<updated>2007-08-16T10:23:26Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: using the generic bay driver and udev&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following discusses hotswap (AKA &amp;quot;hotplug&amp;quot;) of devices in the [[UltraBay]].&lt;br /&gt;
&lt;br /&gt;
==When using the &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; driver==&lt;br /&gt;
The following applies if you use the &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; driver for the UltraBay device.&lt;br /&gt;
&lt;br /&gt;
Hotswapping is supposed to be supported as well, using either hdparm/[http://packages.debian.org/unstable/admin/hotswap Debian hotswap] or [[lt_hotswap]] to (un)register IDE devices. The latter is the recommended method with kernels from 2.6, since it will leave DMA working. However, for recent models (R52, T43, X41, Z60 and later) no method is known to work while maintaining DMA support; see [[Problems with SATA and Linux]].&lt;br /&gt;
&lt;br /&gt;
Only IDE devices (HDD's, optical drives, zip drives) require special treatment - batteries, floppies and other devices can just be pulled from the bay, provided they are not mounted or in use at the time. However, you should still power them down first using the [[ibm-acpi]] eject function.&lt;br /&gt;
&lt;br /&gt;
The [[ibm-acpi]] kernel module has an eject function ({{cmdroot|echo eject &amp;gt; /proc/acpi/ibm/bay}}). This only manages the ACPI calls to power down the device and the bay. It does not actually unregister the device from the IDE driver. {{cmdroot|cat /proc/acpi/ibm/bay}} shows &amp;quot;unoccupied&amp;quot; unless an IDE device is present, but the eject function still works and should still be used.&lt;br /&gt;
&lt;br /&gt;
To unregister the device, you can either use the [http://packages.debian.org/unstable/admin/hotswap Debian hotswap] package, or [[lt_hotswap]].&lt;br /&gt;
&lt;br /&gt;
[http://packages.debian.org/unstable/admin/hotswap Debian hotswap] also allows the drive to be swapped as a normal user by default, which is useful. You should use &amp;lt;tt&amp;gt;hotswap&amp;lt;/tt&amp;gt; to unregister the device and then {{cmdroot|echo eject &amp;gt; /proc/acpi/ibm/bay}}. However, if you use this method on a 2.6 kernel, you will lose DMA support for the reinserted drive. This is due to kernel issues. This method was reported to work on a ThinkPad {{T23}} (kernels 2.6.8.1, 2.6.14.2 and 2.6.15-arch) and {{T42}} (kernel 2.6.13), but fails on a ThinkPad {{T43}} (kernel 2.6.14.3).&lt;br /&gt;
&lt;br /&gt;
[[lt_hotswap]] is now the recommended method to un- and reregister the IDE device. It installs as a kernel module and has support for automatically unregistering (if loaded with the auto_eject=1 option) the device when the eject event is generated by [[ibm-acpi]]. It will leave DMA support intact. It has supported to work on a ThinkPad {{T22}} and {{T40}} and should work with many other models (but not recent models which require the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver for disk DMA support). With the [[lt_hotswap]] kernel module loaded, run: {{cmdroot|modprobe -r ide_cd &amp;amp;&amp;amp; modprobe -r cdrom &amp;amp;&amp;amp; echo &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths}}&lt;br /&gt;
&lt;br /&gt;
===HAL support===&lt;br /&gt;
&lt;br /&gt;
HAL support also can also be configured To do so, create the file {{path|/etc/hal/fdi/information/10-ultrabay.fdi}} as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt; &amp;lt;!-- -*- SGML -*- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deviceinfo version=&amp;quot;0.2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;device&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- UltraBay Devices --&amp;gt;&lt;br /&gt;
    &amp;lt;match key=&amp;quot;storage.bus&amp;quot; string=&amp;quot;ide&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;match key=&amp;quot;storage.physical_device&amp;quot; string=&amp;quot;/org/freedesktop/Hal/devices/pci_8086_24ca_ide_1_0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;merge key=&amp;quot;storage.hotpluggable&amp;quot; type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;
      &amp;lt;/match&amp;gt;&lt;br /&gt;
    &amp;lt;/match&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/device&amp;gt;&lt;br /&gt;
&amp;lt;/deviceinfo&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For more details see HAL section for ata driver.&lt;br /&gt;
&lt;br /&gt;
==When using the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver==&lt;br /&gt;
The following applies when using the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver, which is necessary for many recent ThinkPad models that use an [[Intel ICH6-M]] controller. See also [[Problems with SATA and Linux]]. &lt;br /&gt;
&lt;br /&gt;
Mainline kernels before 2.6.18 cannot reliably recognize newly (re-)inserted UltraBay drives without a reboot. There are experimental hotplug patches against pre-2.6.18 mainline kernels [http://home-tj.org/wiki/index.php/Libata-tj-stable here].&lt;br /&gt;
&lt;br /&gt;
* Available hotplug patches&lt;br /&gt;
**[http://home-tj.org/files/libata-tj-stable/libata-tj-2.6.16.16-20060512.tar.bz2 Patch tarball against 2.6.16.16] ([http://lwn.net/Articles/183407/ Announce])&lt;br /&gt;
**[http://home-tj.org/files/libata-tj-stable/libata-tj-2.6.17-20060625-1.tar.bz2 Patch tarball against 2.6.17/2.6.17.1] ([http://article.gmane.org/gmane.linux.ide/11598 Announce])&lt;br /&gt;
**[http://home-tj.org/files/libata-tj-stable/libata-tj-2.6.17.4-20060710.tar.bz2 Patch tarball against 2.6.17.4]&lt;br /&gt;
**[http://whoopie.gmxhome.de/linux/patches/2.6.17.14-tj/00-libata-tj-2.6.17.4-20060710.patch Patch against 2.6.17.14]&lt;br /&gt;
&lt;br /&gt;
* Confirmed to work on&lt;br /&gt;
**ThinkPad {{T30}}&lt;br /&gt;
**ThinkPad {{T43}}, {{T43p}}&lt;br /&gt;
**ThinkPad {{R52}}&lt;br /&gt;
&lt;br /&gt;
For 2.6.18 kernels, or older kernels that were patched to support &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; hotplug (don't try it otherwise!), one can issue the following after inserting an UltraBay drive to rescan the port:&lt;br /&gt;
 {{cmdroot|echo 0 0 0 &amp;gt;  /sys/class/scsi_host/host1/scan}}&lt;br /&gt;
The inserted drive should now be recognized by the kernel, and appropriate {{path|/dev/*}} entries created automatically (e.g., by &amp;lt;tt&amp;gt;udev&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
You can safely shut down the drive by issuing the following (this works with all recent mainline kernels):&lt;br /&gt;
 {{cmdroot|echo 1 &amp;gt; /sys/class/scsi_device/1\:0\:0\:0/device/delete}}&lt;br /&gt;
 {{cmdroot|echo eject &amp;gt;  /proc/acpi/ibm/bay}}&lt;br /&gt;
The drive can now be ejected.&lt;br /&gt;
&lt;br /&gt;
===Scripts for hotswapping===&lt;br /&gt;
&lt;br /&gt;
The following scripts and [[acpid]] daemon configuration files do the following:&lt;br /&gt;
* Automatically unmounts the relevant filesystems and power off the UltraBay when the UltraBay eject lever is released. Screams if some filesystem can't be unmounted.&lt;br /&gt;
* Rescans the UltraBay port when then UltraBay eject lever is pushed back in.&lt;br /&gt;
&lt;br /&gt;
They assumes you're using the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver with an appropriate kernel (see above).&lt;br /&gt;
&lt;br /&gt;
Create {{path|/usr/local/sbin/ultrabay_insert}} with permissions 755:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo 12 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
sync&lt;br /&gt;
echo 0 0 0 &amp;gt; /sys/class/scsi_host/host1/scan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create {{path|/usr/local/sbin/ultrabay_eject}} with permissions 755:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
ULTRABAY_SYSDIR='/sys/class/scsi_device/1:0:0:0/device'&lt;br /&gt;
shopt -s nullglob&lt;br /&gt;
&lt;br /&gt;
# Umount the filesystem(s) backed by the given major:minor device(s)&lt;br /&gt;
unmount_rdev() { perl - &amp;quot;$@&amp;quot; &amp;lt;&amp;lt;'EOPERL'  # let's do it in Perl&lt;br /&gt;
	for $major_minor (@ARGV) {&lt;br /&gt;
		$major_minor =~ m/^(\d+):(\d+)$/ or die;&lt;br /&gt;
		push(@tgt_rdevs, ($1&amp;lt;&amp;lt;8)|$2);&lt;br /&gt;
	}&lt;br /&gt;
        # Sort by reverse length of mount point, to unmount sub-directories first&lt;br /&gt;
        open MOUNTS,&amp;quot;&amp;lt;/proc/mounts&amp;quot; or die &amp;quot;$!&amp;quot;;&lt;br /&gt;
        @mounts=sort { length($b-&amp;gt;[1]) &amp;lt;=&amp;gt; length($a-&amp;gt;[1]) } map { [ split ] } &amp;lt;MOUNTS&amp;gt;;&lt;br /&gt;
        close MOUNTS;&lt;br /&gt;
        foreach $m (@mounts) {&lt;br /&gt;
                ($dev,$dir)=@$m;&lt;br /&gt;
		next unless -b $dev;  $rdev=(stat($dev))[6];&lt;br /&gt;
		next unless grep($_==$rdev, @tgt_rdevs);&lt;br /&gt;
		system(&amp;quot;umount&amp;quot;,&amp;quot;-v&amp;quot;,&amp;quot;$dir&amp;quot;)==0  or  $bad=1;&lt;br /&gt;
	}&lt;br /&gt;
	exit 1 if $bad;&lt;br /&gt;
EOPERL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Get the UltraBay's /dev/foo block device node&lt;br /&gt;
ultrabay_dev_node() {&lt;br /&gt;
	UDEV_PATH=&amp;quot;`readlink -e &amp;quot;$ULTRABAY_SYSDIR/block:&amp;quot;*`&amp;quot; || return 1&lt;br /&gt;
	UDEV_NAME=&amp;quot;`udevinfo -q name -p $UDEV_PATH`&amp;quot; || return 1&lt;br /&gt;
	echo /dev/$UDEV_NAME&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if [ -d $ULTRABAY_SYSDIR ]; then&lt;br /&gt;
	sync&lt;br /&gt;
	# Unmount filesystems backed by this device&lt;br /&gt;
	unmount_rdev `cat $ULTRABAY_SYSDIR/block\:*/dev     \&lt;br /&gt;
	                  $ULTRABAY_SYSDIR/block\:*/*/dev`  \&lt;br /&gt;
	|| {&lt;br /&gt;
		echo 10 &amp;gt; /proc/acpi/ibm/beep;  # error tone&lt;br /&gt;
		exit 1;&lt;br /&gt;
	}&lt;br /&gt;
        sync&lt;br /&gt;
        # Nicely power off the device&lt;br /&gt;
	DEVNODE=`ultrabay_dev_node` &amp;amp;&amp;amp; hdparm -Y $DEVNODE&lt;br /&gt;
        # Let HAL+KDE notice the unmount and let the disk spin down&lt;br /&gt;
	sleep 0.5&lt;br /&gt;
	# Unregister this SCSI device:&lt;br /&gt;
	sync&lt;br /&gt;
	echo 1 &amp;gt; $ULTRABAY_SYSDIR/delete&lt;br /&gt;
fi&lt;br /&gt;
sync&lt;br /&gt;
# Turn off power to the UltraBay:&lt;br /&gt;
if [ -d /sys/devices/platform/bay.0 ]; then&lt;br /&gt;
	echo 1 &amp;gt; /sys/devices/platform/bay.0/eject&lt;br /&gt;
else&lt;br /&gt;
	echo eject &amp;gt; /proc/acpi/ibm/bay&lt;br /&gt;
fi&lt;br /&gt;
# Tell the user we're OK&lt;br /&gt;
echo 12 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create {{path|/etc/acpi/events/ultrabay-insert}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event=ibm/bay MSTR 00000001 00000000&lt;br /&gt;
action=/usr/local/sbin/ultrabay_insert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create {{path|/etc/acpi/events/ultrabay-eject}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event=ibm/bay MSTR 00000003 00000000&lt;br /&gt;
action=/usr/local/sbin/ultrabay_eject&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart &amp;lt;tt&amp;gt;acpid&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===using the generic bay driver and udev===&lt;br /&gt;
&lt;br /&gt;
Starting from kernel 2.6.23-rc3, it's possible to use the generic bay driver in combination with udev to hotswap. Please check if CONFIG_ACPI_BAY is enabled (module or built-in) in your kernel configuration.&lt;br /&gt;
&lt;br /&gt;
Create {{path|/etc/udev/rule.d/ibm-ultrabay.rules}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENV{BAY_EVENT}==&amp;quot;3&amp;quot;, KERNEL==&amp;quot;bay.0&amp;quot;, ACTION==&amp;quot;change&amp;quot;, SUBSYSTEM==&amp;quot;platform&amp;quot;, RUN+=&amp;quot;/usr/local/sbin/ultrabay_eject&amp;quot;&lt;br /&gt;
ENV{BAY_EVENT}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;bay.0&amp;quot;, ACTION==&amp;quot;change&amp;quot;, SUBSYSTEM==&amp;quot;platform&amp;quot;, RUN+=&amp;quot;/usr/local/sbin/ultrabay_insert&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HAL support===&lt;br /&gt;
&lt;br /&gt;
Many programs, KDE included, rely on [[HAL]] to get notifications and information about device hotplugging. You need to tell HAL that devices connected the UltraBay port are hotpluggable. To do so, create the file {{path|/etc/hal/fdi/information/10-ultrabay.fdi}} as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt; &amp;lt;!-- -*- SGML -*- --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;deviceinfo version=&amp;quot;0.2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;device&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- UltraBay Devices --&amp;gt;&lt;br /&gt;
    &amp;lt;match key=&amp;quot;storage.bus&amp;quot; string=&amp;quot;scsi&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;match key=&amp;quot;storage.physical_device&amp;quot; string=&amp;quot;/org/freedesktop/Hal/devices/pci_8086_2653_scsi_host_0_scsi_device_lun0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;merge key=&amp;quot;storage.hotpluggable&amp;quot; type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;
      &amp;lt;/match&amp;gt;&lt;br /&gt;
    &amp;lt;/match&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/device&amp;gt;&lt;br /&gt;
&amp;lt;/deviceinfo&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
&lt;br /&gt;
By default, HAL doesn't know that UltraBay devices are hotpluggable:&lt;br /&gt;
&lt;br /&gt;
 # PHYSDEV=/org/freedesktop/Hal/devices/pci_8086_2653_scsi_host_0_scsi_device_lun0&lt;br /&gt;
 # UDI=`hal-find-by-property --key storage.physical_device --string $PHYSDEV` || echo Failed&lt;br /&gt;
 # hal-get-property --udi $UDI --key block.device&lt;br /&gt;
 /dev/sdb&lt;br /&gt;
 # hal-get-property --udi $UDI --key storage.hotpluggable&lt;br /&gt;
 false&lt;br /&gt;
&lt;br /&gt;
After creating {{path|/etc/hal/fdi/information/10-ultrabay.fdi}} as above and re-plugging the device, it will get marked correctly:&lt;br /&gt;
&lt;br /&gt;
 # PHYSDEV=/org/freedesktop/Hal/devices/pci_8086_2653_scsi_host_0_scsi_device_lun0&lt;br /&gt;
 # UDI=`hal-find-by-property --key storage.physical_device --string $PHYSDEV` || echo Failed&lt;br /&gt;
 # hal-get-property --udi $UDI --key block.device&lt;br /&gt;
 /dev/sdb&lt;br /&gt;
 # hal-get-property --udi $UDI --key storage.hotpluggable&lt;br /&gt;
 true&lt;br /&gt;
&lt;br /&gt;
The string &amp;quot;8086_2653&amp;quot; gives the PCI ID of the [[Intel 82801FBM]] southbridge. If your model has a different southbridge, or the UltraBay is attached to a different port, then you can find the appropriate &amp;lt;tt&amp;gt;storage.physical_device&amp;lt;/tt&amp;gt; value by finding out the block device of the currently running UltraBay device (&amp;lt;tt&amp;gt;/dev/sdb&amp;lt;/tt&amp;gt; in the following example) and then running:&lt;br /&gt;
&lt;br /&gt;
 # DEVICE=/dev/sdb&lt;br /&gt;
 # UDI=`hal-find-by-property --key block.device --string $DEVICE` || echo Failed&lt;br /&gt;
 # hal-get-property --udi $UDI --key storage.physical_device&lt;br /&gt;
 /org/freedesktop/Hal/devices/pci_8086_2653_scsi_host_0_scsi_device_lun0&lt;br /&gt;
&lt;br /&gt;
If you have a different &amp;lt;tt&amp;gt;storage.physical_device&amp;lt;/tt&amp;gt; value, please report your findings.&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
|+ Known South Bridge PCI IDs&lt;br /&gt;
! ID !! ThinkPad model !! South Bridge chip&lt;br /&gt;
|-&lt;br /&gt;
| 8086_248a || 2366-83U (T30) || Intel 82801CAM IDE U100 (rev 2)&lt;br /&gt;
|-&lt;br /&gt;
| 8086_2653 || 2525FAG (X41) || Intel 82801FBM&lt;br /&gt;
|-&lt;br /&gt;
| 8086_24ca || 237358U (T40) || Intel 82801DBM (ICH4-M)&lt;br /&gt;
|-&lt;br /&gt;
| 8086_27c4 || X60           || Intel 82801GBM (ICH7 Family)&lt;br /&gt;
|-&lt;br /&gt;
| 8086_27df || Z61p          || Intel 82801GBM/GHM (ICH7 Family)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other comments==&lt;br /&gt;
&lt;br /&gt;
If you are hot-swapping a hard disk on a disk tray, make sure the disk does not have a password set, otherwise it will not be recognized on reinsertion.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;br /&gt;
[[Category:HOWTOs]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Conexant_HSF_modem_drivers&amp;diff=32097</id>
		<title>Conexant HSF modem drivers</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Conexant_HSF_modem_drivers&amp;diff=32097"/>
		<updated>2007-08-15T13:35:11Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* The Linuxant hsf driver */ Dell offers OEM version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following modems, available in some ThinkPad models, use the Conexant HSF softmodem chip, and require an appropriate driver:&lt;br /&gt;
&lt;br /&gt;
* [[ThinkPad 56K Modem (MDC-1.5)]]&lt;br /&gt;
* [[IBM Integrated 56K Modem (MDC-2)]]&lt;br /&gt;
* [[IBM Integrated Bluetooth III with 56K Modem (BMDC-2)]]&lt;br /&gt;
* [[IBM Integrated Bluetooth IV with 56K Modem (BMDC-3)]]&lt;br /&gt;
&lt;br /&gt;
Two drivers are currently available.&lt;br /&gt;
&lt;br /&gt;
===The Smartlink smlink driver===&lt;br /&gt;
The Linux driver for Agere modems from [http://www.smlink.com/ SmartLink] supports both 2.4 and 2.6 kernels. However, it does not work with the newer Intel ICH6 controllers (used, e.g., on the ThinkPad {{R52}} and {{T43}}; trouble on the {{G41}} has also been [[Installing Debian on a ThinkPad G41|reported]]). Some users report that AT commands work but dialing does not.&lt;br /&gt;
&lt;br /&gt;
The {{path|snd_intel8x0m}} kernel module also (incorrectly?) recognizes the [[IBM Integrated Bluetooth III with 56K Modem (BMDC-2)|BMDC-2]]. At least scanModem works with it. About {{path|snd_intel8x0m}} see [[Modem_Daughter_Card_(MDC)|MDC]].&lt;br /&gt;
&lt;br /&gt;
===The Linuxant hsf driver===&lt;br /&gt;
The commercial [http://www.linuxant.com/drivers/hsf/index.php Conexant HSF] driver from [http://www.linuxant.com Linuxant] supports these modem and work also on ICH6 models (e.g., ThinkPad {{R52}}, {{R51}}, {{T43}}, and {{Z60m}}).&lt;br /&gt;
&lt;br /&gt;
It offers free limited evaluation at 14.4kbps, and the full version costs $19.99.&lt;br /&gt;
&lt;br /&gt;
For Ubuntu, Dell released an OEM version of the linux driver. You can download it [http://support.dell.com/support/downloads/download.aspx?c=us&amp;amp;l=en&amp;amp;s=gen&amp;amp;releaseid=R155004&amp;amp;SystemID=INSPIRONI6400/E1505&amp;amp;servicetag=&amp;amp;os=UBLN&amp;amp;osl=en&amp;amp;deviceid=8593&amp;amp;devlib=0&amp;amp;typecnt=0&amp;amp;vercnt=1&amp;amp;catid=-1&amp;amp;impid=-1&amp;amp;formatcnt=1&amp;amp;libid=20&amp;amp;fileid=206745 here].&lt;br /&gt;
&lt;br /&gt;
Download: http://www.linuxant.com/drivers/hsf/full/downloads.php&lt;br /&gt;
&lt;br /&gt;
This driver works well with reliable connections. It does not support voice or telephony features.&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
* Fedora Core: use the provided RPMs. If using a custom kernel, choose the &amp;quot;Generic packages with source&amp;quot; in the [https://www.linuxant.com/drivers/hsf/full/downloads.php#generic HSF downloads page].&lt;br /&gt;
* Debian: run {{cmdroot|dpkg -i hsfblablabla.deb}}. When asked you for the code, enter &amp;quot;FREE&amp;quot; for the 14.4kbps evaluation.&lt;br /&gt;
* Gentoo: the hsfmodem package is in portage.&lt;br /&gt;
&lt;br /&gt;
If you are running a 2.6.15.* kernel, you might consider running:&lt;br /&gt;
 # hsfconfig --patch &lt;br /&gt;
first, and apply the appropriate patch (there is an issue with hsfmodem and 2.6.15 tree that results in kernel oops. &lt;br /&gt;
The patch provided by Conexant fixes that). It looks like this command has to be run in console (rather than e.g. xterm, &lt;br /&gt;
as the menu issues some escape sequences that garble the output in xterm)&lt;br /&gt;
&lt;br /&gt;
====Suspend/resume====&lt;br /&gt;
The hsfmodem driver may prevent your machine from going into suspend. If so, you may remove them prior to sleep by adding to your suspend script:&lt;br /&gt;
 modprobe -r hsfmc97ich hsfserial hsfengine hsfosspec hsfsoar&lt;br /&gt;
The drivers should be automatically re-loaded upon resume by the hotplug system, if not, just manually restart hotplug or modprobe the individual drivers, adding this to your suspend script if needed.&lt;br /&gt;
&lt;br /&gt;
If you use the &amp;lt;tt&amp;gt;hibernate&amp;lt;/tt&amp;gt; script on Fedora Core, simple add this to {{path|/etc/hibernate/hibernate.conf}}:&lt;br /&gt;
 OnSuspend 12 service hsf stop&lt;br /&gt;
 OnResume  12 service hsf start&lt;br /&gt;
&lt;br /&gt;
====Problem with Software Suspend 2====&lt;br /&gt;
Version 7.47.00.01 works fine with [[Software Suspend 2]].&lt;br /&gt;
&lt;br /&gt;
The version 7.43.00.01 of the HSF driver conflicted with [[Software Suspend 2]]. The needed patch isn't available from Linuxant anymore.&lt;br /&gt;
&lt;br /&gt;
For {{Fedora}} systems, the procedure for generating and installing a patched RPM is as follows:&lt;br /&gt;
*Download tarball and patches:&lt;br /&gt;
:{{cmdroot|wget http://www.linuxant.com/dri[[Software Suspend 2]]vers/hsf/full/archive/hsfmodem-7.43.00.01full/hsfmodem-7.43.00.01full.tar.gz}}&lt;br /&gt;
:{{cmdroot|wget http://www.linuxant.com/drivers/hsf/full/archive/patches/hsf-7.43.00.01-suspend2.patch}}&lt;br /&gt;
:{{cmdroot|wget http://www.linuxant.com/drivers/hsf/full/archive/patches/hsf-7.43.00.01-try_to_freeze-2.patch}}&lt;br /&gt;
*Build the RPM:&lt;br /&gt;
:{{cmdroot|mkdir hsf-workdir}}&lt;br /&gt;
:{{cmdroot|cd hsf-workdir}}&lt;br /&gt;
:{{cmdroot|tar xzvf ../hsfmodem-7.43.00.01full.tar.gz}}&lt;br /&gt;
:{{cmdroot|cd hsfmodem-7.43.00.01full}}&lt;br /&gt;
:{{cmdroot|patch -i ../../hsf-7.43.00.01-suspend2.patch -p1}}&lt;br /&gt;
:{{cmdroot|patch -i ../../hsf-7.43.00.01-try_to_freeze-2.patch -p1}}&lt;br /&gt;
:{{cmdroot|cd ..}}&lt;br /&gt;
:{{cmdroot|tar czvf hsfmodem-7.43.00.01full.tar.gz hsfmodem-7.43.00.01full}}&lt;br /&gt;
:{{cmdroot|rpmbuild -ta hsfmodem-7.43.00.01full.tar.gz}}&lt;br /&gt;
*Install the RPM:&lt;br /&gt;
:{{cmdroot|rpm -e hsfmodem}}&lt;br /&gt;
:{{cmdroot|rpm -Uvh /usr/src/redhat/RPMS/i386/hsfmodem-7.43.00.01full-1.i386.rpm}}&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Fglrx&amp;diff=31993</id>
		<title>Fglrx</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Fglrx&amp;diff=31993"/>
		<updated>2007-08-14T19:27:37Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Packages */&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;
== ATI fglrx driver ==&lt;br /&gt;
This is a proprietary Linux binary-only driver for ATI graphic chips with support for 3D acceleration.&lt;br /&gt;
&lt;br /&gt;
Also see [[R300|opensource driver]] with 3D support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Availability / Project Homepage==&lt;br /&gt;
Home page: http://ati.amd.com/support/drivers/linux/linux-radeon.html&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
The ATI drivers have explicit permission for repackaging and redistribution of the Linux drivers.  Many distributions are supported within the installer, and many more repackaged by external developers.  Please visit the  [http://wiki.cchtml.com/index.php/Category:Distributions Distribution Page at the Unofficial ATI driver Wiki]&lt;br /&gt;
&lt;br /&gt;
*{{Debian}}&lt;br /&gt;
** These packages have been added to Debian unstable as &amp;lt;tt&amp;gt;fglrx-driver&amp;lt;/tt&amp;gt;, so you can now apt-get them and use module-assistant to install.&lt;br /&gt;
** If you are on stable sarge with backport's kernel 2.6.15, download ATI's installer, let it build Debian packages and proceed as usual. There's a [http://jroller.com/page/erAck?entry=lot_day_6_2_fglrx detailed description] available.&lt;br /&gt;
** [http://wiki.cchtml.com/index.php/Debian_Installation_Guide Debian Howto]&lt;br /&gt;
*{{SUSE}} packages: http://www.suse.de/~sndirsch/ati-installer-HOWTO.html&lt;br /&gt;
*{{Gentoo}} {{cmdroot|emerge ati-drivers}}&lt;br /&gt;
*{{Fedora}} 4 packages: http://rpm.livna.org&lt;br /&gt;
** For stock Fedora kernels: {{cmdroot|yum install kernel-module-fglrx-$(uname -r) ati-fglrx }}&lt;br /&gt;
** For custom-compiled kernels: see [[How to build custom packages for fglrx]]&lt;br /&gt;
*{{Fedora}} 5 packages: http://rpm.livna.org&lt;br /&gt;
** For stock Fedora kernels: {{cmdroot|yum install xorg-x11-drv-fglrx}}&lt;br /&gt;
** For custom-compiled kernels: see [[How to build custom packages for fglrx]]&lt;br /&gt;
*{{Fedora}} 7 packages: http://rpm.livna.org&lt;br /&gt;
** Unfortunately, as of 15 June, the fglrx driver does not work with Fedora 7, as it cannot handle the xorg version there.  A new driver is expected sometime fairly soon.&lt;br /&gt;
*{{Arch Linux}}&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx}} (kernel module for 2.6.15-ARCH)&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx-archck}} (kernel module for 2.6.15-archck)&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx-utils}} (xorg7 stuff and tools)&lt;br /&gt;
*{{Ubuntu}}&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Dapper_Installation_Guide Dapper Drake Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Breezy_Installation_Guide Breezy Badger Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Edgy_Installation_Guide Edgy Eft Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Feisty_Installation_Guide Feisty Fawn Howto]&lt;br /&gt;
&lt;br /&gt;
== Building for Xorg 7.0==&lt;br /&gt;
To compile fglrx versions &amp;lt;= 8.24.8 for Xorg 7.0.0, fake Xorg 6.9.0 by &lt;br /&gt;
:{{cmdroot|1=export X_VERSION=x690; sh ati-driver-installer-8.24.8-x86.run}}&lt;br /&gt;
Next, move the various resulting libraries and modules from /usr/X11R6 to /usr/lib/xorg&lt;br /&gt;
&lt;br /&gt;
In {{path|/usr/src/ATI}} additional sources are installed for fireglcontrol and fgl_glxgears&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Current version: 8.40.4 ( 13th August 2007).&lt;br /&gt;
Major changes:&lt;br /&gt;
* 8.40.4: some new TV out control options in CCC, another (non-exciting) maintenance release (see [http://www.phoronix.com/scan.php?page=article&amp;amp;item=804&amp;amp;num=1 Phoronix])&lt;br /&gt;
* 8.39.4: kernel 2.6.22 support, TexturedVideo fix, aticonfig segfault fix (see 8.38.7 hotfix), to get rid of the &amp;quot;AMD Testing use only&amp;quot; logo, use [http://www.phoronix.com/forums/showpost.php?p=10641&amp;amp;postcount=44 this] workaround.&lt;br /&gt;
* 8.38.7: hotfix release for &amp;quot;Using aticonfig --initial segfaults destroying xorg.conf file when run in X with Vesa driver.&amp;quot;, search for &amp;quot;737-28261&amp;quot; on the ATI website.&lt;br /&gt;
* 8.38.6: RedHat Enterprise Linux 5 support, Xserver crashes on moving video window between two monitors fixed, corruption when playing multiple vodeps with textured video fixed&lt;br /&gt;
* 8.37.6: Xorg Server 1.3 support, CCC 1.0, crash when logging off from X fixed, Xv cropping bug fixed&lt;br /&gt;
* 8.36.5: Kernel 2.6.20 support, CCC Beta 0.9 with localization&lt;br /&gt;
* 8.35.5: Beta AMD Catalyst Control Center, X-Server termination from console does not result in a blank screen. Kernel 2.6.20 requires some patching (see [[Problems_with_fglrx#fglrx_8.35.5|fglrx patches section]]).&lt;br /&gt;
* 8.34.8: Radeon Xpress 1250 support, X-Video on x86_64 fix, hibernation mode fix. Kernel 2.6.20 requires some patching (see [[Problems_with_fglrx#fglrx_8.34.8|fglrx patches section]]).&lt;br /&gt;
* 8.33.6: X.Org 7.2 support, kernel 2.6.19 support, some fixes in the installer, 2 more bugfixes. Resume from suspend works if you make sure you have set &amp;quot;VbetoolPost no&amp;quot; and &amp;quot;EnableVbetool no&amp;quot; in your suspend to ram hibernate conf (/etc/hibernate/ram.conf on ubuntu/debian).&lt;br /&gt;
* 8.32.5: support for X1650, X.Org 7.2 RC2 support, bugfixes. Suspend-to-ram is broken with specific cards, *no* 2.6.19 support (see [[Problems_with_fglrx#fglrx_8.32.5|fglrx patches section]]).&lt;br /&gt;
* 8.31.5: no new features, only bugfixes.  Of note, for some users, this version breaks suspend-to-ram and suspend-to-disk.&lt;br /&gt;
* 8.30.3: no new features, only bugfixes&lt;br /&gt;
* 8.29.6: Linux 2.6.18 support, dropped support for Radeon 8500/9000/9100/9200/9250 (both, mobile and normal versions)&lt;br /&gt;
* 8.28.8: Display Switching Support for ThinkPads, ATI Pairmode support, Retaining display device state between restarts, Support for Radeon Xpress 1200, 1250, and 1300&lt;br /&gt;
* 8.27.10: X.org 7.1 support, Fedora Core package support&lt;br /&gt;
* 8.26.18: support for dynamically attached DFPs and Thermal Event Power Management (both via daemon), minor bug fixes&lt;br /&gt;
* 8.25.18: Xorg 7.0 support, FireGLâ„¢V5xxx/V7xxx support, Dynamic Display Management, fixed a lot of critical bugs.&lt;br /&gt;
* 8.24.8: support for X1300, X1400, X1600, X1800 (generic and mobility) and 3D accelerated video playback on Avivo&lt;br /&gt;
* 8.23.7: support for X850 and X800, OpenGL 2.0 Enhancement, FSAA for some chips&lt;br /&gt;
* 8.22.5: added kernel 2.6.15 support -- patch no longer required&lt;br /&gt;
* 8.21.7: initial OpenGL 2.0 support&lt;br /&gt;
* 8.20.8: fixed resume issues, fixed compile problems with kernels 2.6.13 and 2.6.14&lt;br /&gt;
* 8.19.10: has added suspend / resume and dynamic GPU power management support.  Using vbetool no longer required.&lt;br /&gt;
&lt;br /&gt;
== Known problems and solutions ==&lt;br /&gt;
See [[Problems with fglrx]].&lt;br /&gt;
== User experience ==&lt;br /&gt;
=== Speed ===&lt;br /&gt;
How much is the speed gain versus the opensource drivers?&lt;br /&gt;
&lt;br /&gt;
Compared to the old drivers, approximately 40% speed gain have been noticed with fglrx. However, there are issues with freezing/garbage after suspend, garbage when resizing desktop (via {{key|ctrl}}{{key|alt}}{{key|plus}}, {{key|ctrl}}{{key|alt}}{{key|minus}}), and garbage while using VMware. The current 8.14.13 has shown 400% improvement over using the open source radeon driver: 1200 FPS for glxgears{{footnote|1}}!&lt;br /&gt;
However the situation seems to be changing today. With recent x11-drm-20060608 driver (gentoo) and thinkpad t42 (ati 9600) the speed is confirmed as 1900fps without any single crash so far.&lt;br /&gt;
&lt;br /&gt;
=== 3D acceleration ===&lt;br /&gt;
&lt;br /&gt;
According to [http://xoomer.alice.it/flavio.stanchina/debian/fglrx-installer.html#configure Flavio's page] you need these options:&lt;br /&gt;
&lt;br /&gt;
  Section &amp;quot;Module&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
    Load &amp;quot;GLcore&amp;quot;&lt;br /&gt;
    Load &amp;quot;glx&amp;quot;&lt;br /&gt;
    Load &amp;quot;dri&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
  # Of course you need to activate the driver&lt;br /&gt;
  Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
    Driver     &amp;quot;fglrx&amp;quot;&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
Don't forget to load the module &amp;lt;tt&amp;gt;fglrx&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;modprobe fglrx&amp;lt;/tt&amp;gt;).  Under Debian the module can be placed in &amp;lt;tt&amp;gt;/etc/modules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With current fglrx drivers (as of 8.29.6) you must disable composite to get 3D DRI acceleration. To do this, add an extra Extensions section (if necessary) containing:&lt;br /&gt;
&lt;br /&gt;
  Section &amp;quot;Extensions&amp;quot;&lt;br /&gt;
     Option  &amp;quot;Composite&amp;quot; &amp;quot;Disable&amp;quot;  #make DRI work with fglrx.&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
If you are unsure whether you have DRI running, issue &amp;lt;tt&amp;gt;glxinfo | grep -i direct&amp;lt;/tt&amp;gt; after disabling composite.  Note, this &lt;br /&gt;
&lt;br /&gt;
{{NOTE|1=Video overlay acceleration may be disabled when 3D acceleration is enabled. The following comment from the xorg.conf file bundled with the fglrx driver indicates that:&lt;br /&gt;
   # === OpenGL Overlay ===&lt;br /&gt;
   # Note: When OpenGL Overlay is enabled, Video Overlay&lt;br /&gt;
   #       will be disabled automatically&lt;br /&gt;
       Option &amp;quot;OpenGLOverlay&amp;quot;              &amp;quot;1&amp;quot;&lt;br /&gt;
However, you can use either regular Xv video overlay or make the video an opengl texture and let the OpenGL engine scale your video.  This has nothing to do with the acceleration of 2D drawing primitives.  Further, your mileage on performance may vary depending on what card you have.  The open source drivers don't support newer cards, while the ATI drivers don't support older cards.&lt;br /&gt;
&lt;br /&gt;
You may be able to preserve VideoOverlay acceleration if you explicitly remove the OpenGLOverlay using:&lt;br /&gt;
&lt;br /&gt;
Option &amp;quot;VideoOverlay&amp;quot;  &amp;quot;True&amp;quot; and Option &amp;quot;OpenGLOverlay&amp;quot; &amp;quot;False&amp;quot;.  See [http://xoomer.alice.it/flavio.stanchina/debian/fglrx-installer.html#configure Flavio's page] for detail.}}&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
Power saving is much better than with the &amp;lt;tt&amp;gt;radeon&amp;lt;/tt&amp;gt; driver, but doesn't work in dual-screen configuration (see [[How to make use of Graphics Chips Power Management features]]).&lt;br /&gt;
&lt;br /&gt;
=== Suspending with fglrx ===&lt;br /&gt;
&lt;br /&gt;
On a ThinkPad T42 with Kernel 2.6.19 with Software Suspend 2 and R60 with Kernel 2.6.18-suspend2-r1 (Gentoo) , the following addition to &amp;lt;tt&amp;gt;/etc/hibernate/suspend2.conf&amp;lt;/tt&amp;gt; is required:&lt;br /&gt;
&lt;br /&gt;
  # For fglrx&lt;br /&gt;
  ProcSetting extra_pages_allowance 20000&lt;br /&gt;
&lt;br /&gt;
=== Display Switching (Dynamic Display Management) ===&lt;br /&gt;
&lt;br /&gt;
Version 8.25.18 introduces a new feature: Dynamic Display Management. It allows display switching on-the-fly.&lt;br /&gt;
&lt;br /&gt;
To list all connected and enabled monitors:&lt;br /&gt;
:{{cmdroot|1=aticonfig --query-monitor}}&lt;br /&gt;
&lt;br /&gt;
To switch displays:&lt;br /&gt;
:{{cmdroot|1=aticonfig --enable-monitor=STRING,STRING}}, where STRING can be: none, lvds, crt1, crt2, tv, tdms1, tdms2&lt;br /&gt;
&lt;br /&gt;
Only 2 displays can be enabled at the same time. Any displays that are not on the list will be disabled.&lt;br /&gt;
&lt;br /&gt;
== Useful links == &lt;br /&gt;
* [http://www.ati.com/products/catalyst/linux.html ATI Linux Driver FAQ]&lt;br /&gt;
* [http://www.rage3d.com/content/articles/atilinuxhowto/ ATI Radeon Linux How-To]&lt;br /&gt;
* [http://www.rage3d.com/board/forumdisplay.php?f=61&amp;amp;daysprune=30&amp;amp;order=asc&amp;amp;sort=title Rage3D Linux Discussion Forum]&lt;br /&gt;
* [http://www.driverheaven.net/forumdisplay.php?f=103 Radeon Driver Forum at Driverheaven]&lt;br /&gt;
* [http://odin.prohosting.com/wedge01/gentoo-radeon-faq.html Gentoo ATI Radeon FAQ]&lt;br /&gt;
* [http://forums.gentoo.org/viewtopic-t-374745-highlight-t42+ati+dri.html Gentoo T42 ATI. DRI + xorg driver]&lt;br /&gt;
* [http://ati.cchtml.com/ Unofficial community ATI bugzilla] - tracks bugs in the driver. Might be monitored by ATI ([http://www.rage3d.com/board/showpost.php?p=1333438751&amp;amp;postcount=386], [http://www.rage3d.com/board/showpost.php?p=1333439009&amp;amp;postcount=390]).&lt;br /&gt;
&lt;br /&gt;
== ThinkPads that may be supported ==&lt;br /&gt;
Supported chips, as found in select IBM ThinkPads:&lt;br /&gt;
{{NOTE|fglrx version 8.29.6 discontinued support for Radeon 9200 and earlier.}}&lt;br /&gt;
* [[ATI Mobility FireGL 9000]]&lt;br /&gt;
** {{T40p}}&lt;br /&gt;
* [[ATI Mobility FireGL T2]]&lt;br /&gt;
** {{R50p}}&lt;br /&gt;
** {{T41p}}, {{T42p}}&lt;br /&gt;
* [[ATI Mobility FireGL V3200]]&lt;br /&gt;
** {{T43p}}&lt;br /&gt;
* [[ATI Mobility Radeon 9000]]&lt;br /&gt;
** {{R50}}, {{R51}}&lt;br /&gt;
** {{T40}}, {{T41}}, {{T42}}&lt;br /&gt;
* [[ATI Mobility Radeon 9600]]&lt;br /&gt;
** {{T42}}&lt;br /&gt;
* [[ATI Mobility Radeon X300]]&lt;br /&gt;
** {{R52}}&lt;br /&gt;
** {{T43}}&lt;br /&gt;
** {{Z60m}}&lt;br /&gt;
* [[ATI Mobility Radeon Xpress 200M]]&lt;br /&gt;
** {{R51e}}&lt;br /&gt;
* [[ATI Mobility Radeon X600]]&lt;br /&gt;
** {{Z60m}}&lt;br /&gt;
* [[ATI Mobility Radeon X1400]]&lt;br /&gt;
** {{T60}}, {{R60}}, {{Z61m}}&lt;br /&gt;
* [[ATI Mobility FireGL V5200]]&lt;br /&gt;
** {{T60p}}, {{Z61p}}&lt;br /&gt;
&lt;br /&gt;
== ThinkPads that are NOT supported by fglrx==&lt;br /&gt;
Unsupported chips, as found in select IBM ThinkPads:&lt;br /&gt;
* [[ATI Mobility Radeon 7500]]&lt;br /&gt;
** {{R40}}&lt;br /&gt;
** {{T30}}&lt;br /&gt;
** {{T42}}&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#Note that glxgears isn't a benchmark tool, it's so simple that its FPS values is without any meaning... you can only compare glxgears using the same drivers/machine, if you change any of then you can have higher/lower values and in real life programs/games happen to have the opposite effects. Think in terms of a car engines rpms: higher rpms in the same car usually means a faster car, change anything and it's meaningless, ie: gears, truck, wheel size, etc. make it useless.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Template:Industry_News&amp;diff=31992</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=31992"/>
		<updated>2007-08-14T19:22:35Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;8. 8. 2007: New [[fglrx]] driver version 8.40.4 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.40.4.html released].&lt;br /&gt;
&lt;br /&gt;
19. 7. 2007: New [[fglrx]] driver version 8.39.4 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.39.4.html released].&lt;br /&gt;
&lt;br /&gt;
26. 6. 2007: New [[fglrx]] driver version 8.38.6 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.38.6.html released].&lt;br /&gt;
&lt;br /&gt;
31. 5. 2007: New [[fglrx]] driver version 8.37.6 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.37.6.html released].&lt;br /&gt;
&lt;br /&gt;
18. 4. 2007: New [[fglrx]] driver version 8.36.5 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.36.5.html released].  Now supports 2.6.20 series kernels.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Template:Industry_News&amp;diff=31991</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=31991"/>
		<updated>2007-08-14T19:22:22Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: removed &amp;quot;compatible with vesa framebuffers&amp;quot;, e.g. STR with vesafb enabled doesn't work.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;8. 8. 2007: New [[fglrx]] driver version 8.40.4 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.40.4.html released].&lt;br /&gt;
19. 7. 2007: New [[fglrx]] driver version 8.39.4 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.39.4.html released].&lt;br /&gt;
&lt;br /&gt;
26. 6. 2007: New [[fglrx]] driver version 8.38.6 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.38.6.html released].&lt;br /&gt;
&lt;br /&gt;
31. 5. 2007: New [[fglrx]] driver version 8.37.6 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.37.6.html released].&lt;br /&gt;
&lt;br /&gt;
18. 4. 2007: New [[fglrx]] driver version 8.36.5 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.36.5.html released].  Now supports 2.6.20 series kernels.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Fglrx&amp;diff=31990</id>
		<title>Talk:Fglrx</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Fglrx&amp;diff=31990"/>
		<updated>2007-08-14T19:18:05Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So, I'm searching up and down and there seems to be no way to enable the TV output without an ad-hoc xorg.conf. So my question is, what is ''fireglcontrolpanel'' useful for?&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 21:39, 14 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
Hi,&lt;br /&gt;
I wrote a shell script for display switching. I use it under Ubuntu Feisty Fawn.&lt;br /&gt;
&lt;br /&gt;
Create {{path|/etc/acpi/events/ibm-videobtn}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/acpi/events/ibm-videobtn&lt;br /&gt;
# This is called when the user presses the video button.&lt;br /&gt;
&lt;br /&gt;
event=ibm/hotkey HKEY 00000080 00001007&lt;br /&gt;
action=/etc/acpi/ibm-video.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create {{path|/etc/acpi/ibm-video.sh}} with permissions 755:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
. /etc/default/acpi-support&lt;br /&gt;
. /usr/share/acpi-support/power-funcs&lt;br /&gt;
&lt;br /&gt;
getXconsole;&lt;br /&gt;
&lt;br /&gt;
change_resolution() {&lt;br /&gt;
        if [ x&amp;quot;$XAUTHORITY&amp;quot; != x&amp;quot;&amp;quot; ]; then&lt;br /&gt;
                if [ x&amp;quot;`xrandr -q | grep $1[[:space:]]x[[:space:]]$2 | cut -b -1`&amp;quot; != x&amp;quot;*&amp;quot; ]; then&lt;br /&gt;
                        xrandr -d $DISPLAY -s $1x$2&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
change_monitor() {&lt;br /&gt;
        if [ x&amp;quot;$XAUTHORITY&amp;quot; != x&amp;quot;&amp;quot; ]; then&lt;br /&gt;
                su $user -c &amp;quot;aticonfig --enable-monitor=$1&amp;quot; &amp;amp;&amp;gt;/dev/null&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if [ x&amp;quot;$XAUTHORITY&amp;quot; != x&amp;quot;&amp;quot; ]; then&lt;br /&gt;
&lt;br /&gt;
        CURRENT=`aticonfig --query-monitor | grep Enabled | cut -b 21- | \&lt;br /&gt;
                        sed -e 's/lvds/LCD/g' -e 's/crt1/CRT/g' -e 's/tv/TV-Out/g' -e 's/,/ and/g'`&lt;br /&gt;
&lt;br /&gt;
        CHOICE=`su $user -c &amp;quot;zenity --width=300 --height=350 --window-icon=/usr/share/pixmaps/ccc_large.xpm \&lt;br /&gt;
                --title 'Video output switcher' \&lt;br /&gt;
                --text='Choose the video output\n\nCurrent setting: $CURRENT\n' \&lt;br /&gt;
                --list --radiolist --column 'x' --column 'video output' \&lt;br /&gt;
                true 'LCD' \&lt;br /&gt;
                false 'CRT' \&lt;br /&gt;
                false 'TV-Out' \&lt;br /&gt;
                false 'LCD and CRT' \&lt;br /&gt;
                false 'LCD and TV-Out' \&lt;br /&gt;
                false 'CRT and TV-Out'&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
case $CHOICE in&lt;br /&gt;
        LCD)&lt;br /&gt;
                change_monitor lvds&lt;br /&gt;
                change_resolution 1400 1050&lt;br /&gt;
                ;;&lt;br /&gt;
        CRT)&lt;br /&gt;
                change_monitor crt1&lt;br /&gt;
                change_resolution 1280 1024&lt;br /&gt;
                ;;&lt;br /&gt;
        TV-Out)&lt;br /&gt;
                change_monitor tv&lt;br /&gt;
                change_resolution 1024 768&lt;br /&gt;
                ;;&lt;br /&gt;
        LCD\ and\ CRT)&lt;br /&gt;
                change_monitor lvds,crt1&lt;br /&gt;
                change_resolution 1280 1024&lt;br /&gt;
                ;;&lt;br /&gt;
        LCD\ and\ TV-Out)&lt;br /&gt;
                change_monitor lvds,tv&lt;br /&gt;
                change_resolution 1024 768&lt;br /&gt;
                ;;&lt;br /&gt;
        CRT\ and\ TV-Out)&lt;br /&gt;
                change_monitor crt1,tv&lt;br /&gt;
                change_resolution 1024 768&lt;br /&gt;
                ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--[[User:Whoopie|Whoopie]] 16:28, 25 May 2006 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Finally! With 8.25.18 stopping gdm no longer oopses my kernel and I can reboot cleanly. sus2ram runs smoothly as well. All hail!&lt;br /&gt;
&lt;br /&gt;
--[[User:igorr|igorr]] Thu May 25 18:19:30 CEST 2006&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=List_of_DMI_IDs&amp;diff=31983</id>
		<title>List of DMI IDs</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=List_of_DMI_IDs&amp;diff=31983"/>
		<updated>2007-08-14T06:19:03Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* R series */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
This page maintains a database of [http://en.wikipedia.org/wiki/Desktop_Management_Interface DMI] information which can be used to identify ThinkPad models. It is intended as an aid for driver development.&lt;br /&gt;
{{HELP|We need more information about older models, especially those released before 2004. Please [[#Adding_entries|add your model]] to the database.}}&lt;br /&gt;
{{NOTE|If your ThinkPad is not using the [[BIOS Upgrade Downloads|latest BIOS]], and you would be willing to [[BIOS Upgrade|upgrade your BIOS]], please add your ThinkPad to this table twice: '''before''' and '''after''' the BIOS upgrade.  This information helps us a great deal, so your contribution would be very appreciated.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==DMI ID database==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 80%&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Model&lt;br /&gt;
! &amp;lt;tt&amp;gt;system-&amp;lt;br /&amp;gt;manufa&amp;lt;br /&amp;gt;cturer&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;system-&amp;lt;br /&amp;gt;product-&amp;lt;br /&amp;gt;name&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;system-&amp;lt;br /&amp;gt;version&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;baseboard-&amp;lt;br /&amp;gt;manufa&amp;lt;br /&amp;gt;cturer&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;baseboard-&amp;lt;br /&amp;gt;product-&amp;lt;br /&amp;gt;name&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;baseboard-&amp;lt;br /&amp;gt;version&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;chassis-&amp;lt;br /&amp;gt;manufa&amp;lt;br /&amp;gt;cturer&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;chassis-&amp;lt;br /&amp;gt;version&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;bios-&amp;lt;br /&amp;gt;vendor&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;bios-&amp;lt;br /&amp;gt;version&amp;lt;/tt&amp;gt;&lt;br /&gt;
! &amp;lt;tt&amp;gt;bios-&amp;lt;br /&amp;gt;release-&amp;lt;br /&amp;gt;date&amp;lt;/tt&amp;gt;&lt;br /&gt;
! Embedded controller&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
====Numbered series====&lt;br /&gt;
|-&lt;br /&gt;
| {{600E}} 2645-5AU&lt;br /&gt;
|| IBM || 26455AU || Not Available || IBM || 26455AU || Not Available || IBM || Not Available || IBM || INET36WW || 11/20/1999&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{600X}} 2645-5FU&lt;br /&gt;
|| IBM || 26455FU || Not Available || IBM || 26455FU || Not Available || IBM || Not Available || IBM || INET55WW || 11/30/1999&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====A series====&lt;br /&gt;
|-&lt;br /&gt;
| {{A21m}} 2628-FSG&lt;br /&gt;
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET24WW (1.02b) || 12/19/2000 &lt;br /&gt;
|| &lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{A21m}} 2628-FSG&lt;br /&gt;
|| IBM || 2628FSG || Not Available || IBM || 2628FSG || Not Available || IBM || Not Available || IBM || KXET36WW (1.09 ) || 05/08/2003 &lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{A22p}} 2629-USG&lt;br /&gt;
|| IBM || 2629USG || Not Available || IBM || 2629USG || Not Available || IBM || Not Available || IBM || KYET36WW (1.09a) || 10/17/2002 &lt;br /&gt;
||&lt;br /&gt;
|| {{WARN|Outdated BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{A31}} 2652-PBU&lt;br /&gt;
|| IBM || 2652PBU || Not Available || IBM || 2652PBU || Not Available || IBM || Not Available || IBM || 1NET15WW (1.09 ) || 04/06/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1NHT04WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{A31p}} 2653H6U&lt;br /&gt;
|| IBM || 2653H6U || Not Available || IBM || 2653H6U || Not Available || IBM || Not Available || IBM || 1GET31WW (1.03 ) || 07/23/2002&lt;br /&gt;
||&lt;br /&gt;
|| {{WARN|Missing EC string, extremely outdated BIOS}}{{HELP|We need a report to know if the latest BIOS fixes the missing EC string}}&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====G series====&lt;br /&gt;
|-&lt;br /&gt;
| {{G41}} 2881-75M&lt;br /&gt;
|| IBM || 288175M || ThinkPad G41 || IBM || 288175M || Not Available || IBM || Not Available || IBM || 1XET47WW (1.06 ) || 01/14/2005&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
====R series====&lt;br /&gt;
|-&lt;br /&gt;
| {{R40}} 2681-5UU&lt;br /&gt;
|| IBM || 26815UU || Not Available || IBM || 26815UU || Not Available || IBM || Not Available || IBM || 1OET57WW (1.23 ) || 03/23/2005 &lt;br /&gt;
||&lt;br /&gt;
|| {{WARN|Outdated BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{R40}} 2681-HSG&lt;br /&gt;
|| IBM || 2681HSG || Not Available || IBM || 2681HSG || Not Available || IBM || Not Available || IBM || 1OET61WW (1.27 ) || 06/29/2006&lt;br /&gt;
||&lt;br /&gt;
|| {{WARN|Outdated BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{R40}} 2722-B3G&lt;br /&gt;
|| IBM || 2722B3G || Not Available || IBM || 2722B3G || Not Available || IBM || Not Available || IBM || 1PET62WW (1.30 ) || 09/29/2005&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R40}} 2897-B4U&lt;br /&gt;
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1PET52WW (1.20 ) || 03/03/2004&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R40e}} 2684-L8G&lt;br /&gt;
|| IBM || 2897B4U || Not Available || IBM || 2897B4U || Not Available || IBM || Not Available || IBM || 1SET62WW (1.30 ) || 07/09/2004&lt;br /&gt;
||&lt;br /&gt;
|| {{WARN|Outdated BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{R50}} 1829-7QG&lt;br /&gt;
|| IBM || 0123456 || ThinkPad R50  || IBM || 0123456 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|{{R50e}} 1834-JAG&lt;br /&gt;
|| IBM || 1834JAG || ThinkPad R50e || IBM || 1834JAG || Not Available || IBM || Not Available || IBM || 1WET82WW (2.02 ) || 02/21/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0022, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|{{R50p}} 1832-2AG&lt;br /&gt;
|| IBM || 18322AG || ThinkPad R50p || IBM || 18322AG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} 1829-DRG&lt;br /&gt;
|| IBM || 1829DRG || ThinkPad R51 || IBM || 1829DRG || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT66WW-3.00a   ]-&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} 1829-9MG&lt;br /&gt;
|| IBM || 18299MG || ThinkPad R51 || IBM || 18299MG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} 1829-L7G&lt;br /&gt;
|| IBM || 1829L7G || ThinkPad R51 || IBM || 1829L7G || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT70WW-3.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} 1836-GEU&lt;br /&gt;
|| IBM || 1836GEU || ThinkPad R51 || IBM || 1836GEU || Not Available || IBM || Not Available || IBM || 1RETDLWW  (3.17 ) || 07/27/2005 || &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes. String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} 2883-ELU&lt;br /&gt;
|| IBM || 2883ELU || ThinkPad R51 || IBM || 2883ELU || Not Available || IBM || Not Available || IBM || 1VET69WW (1.27 ) || 03/03/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1VHT28WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1846-AQG&lt;br /&gt;
|| IBM || 1846AQG || ThinkPad H || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes	String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| {{NOTE|Weird system version, this bug is known fixed in latest BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1846-AQG&lt;br /&gt;
|| IBM || 1846AQG || ThinkPad R52p || IBM || 1846AQG || Not Available || IBM || Not Available || IBM || 76ET69WW (1.29 ) || 12/06/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1847-W62&lt;br /&gt;
|| IBM || 1847W62 || ThinkPad .    || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| {{NOTE|Weird system version, this bug is known fixed in latest BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1847-W62&lt;br /&gt;
|| IBM || 1847W62 || ThinkPad R52  || IBM || 1847W62 || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1858-6MM&lt;br /&gt;
|| IBM || 18586MM || ThinkPad R52 || IBM || 18586MM || Not Available || IBM || Not Available || IBM || 70ET40WW (1.04 ) || 06/02/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1858-6SM&lt;br /&gt;
|| IBM || 18586SM || ThinkPad R52 || IBM || 18586SM || Not Available || IBM || Not Available || IBM || 70ET57WW (1.17 ) || 07/15/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1846-4CG&lt;br /&gt;
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET65WW (1.25 ) || 05/18/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[76HT15WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1846-4CG&lt;br /&gt;
|| IBM || 18464CG || ThinkPad R52 || IBM || 18464CG || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[76HT16WW-1.06    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} 1846-B5G&lt;br /&gt;
|| IBM || 1846B5G || ThinkPad H    || IBM || 1846B5G || Not Available || IBM || Not Available || IBM || 76ET58WW (1.18 ) || 07/19/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[76HT14WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60e}} 0657-4TG&lt;br /&gt;
|| LENOVO || 06574TG || ThinkPad R60e || LENOVO || 06574TG || Not Available || LENOVO || Not Available || LENOVO || 7EET18WW (1.04 ) || 07/28/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[7EHT13WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9456-6FG&lt;br /&gt;
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9456-6FG&lt;br /&gt;
|| LENOVO || 94566FG || ThinkPad R60 || LENOVO || 94566FG || Not Available || LENOVO || Not Available || LENOVO || 7CETB7WW (2.07 ) || 11/13/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9461-54G&lt;br /&gt;
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CET50WW (1.05 ) || 07/28/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7CHT19WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9461-54G&lt;br /&gt;
|| LENOVO || 946154G || ThinkPad R60 || LENOVO || 946154G || Not Available || LENOVO || Not Available || LENOVO || 7CETC1WW (2.11 ) || 01/09/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| {{NOTE|With this bios version the brightness control buttons don't work for kernel &amp;lt; 2.6.20}}&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9461-DXG&lt;br /&gt;
|| LENOVO || 9461DXG || ThinkPad R60 || LENOVO || 9461DXG || Not Available || LENOVO || Not Available || LENOVO || 7CETB6WW (2.06 ) || 10/16/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}} 9462-GAG&lt;br /&gt;
|| LENOVO || 9462GAG || ThinkPad R60 || LENOVO || 9462GAG || Not Available || LENOVO || Not Available || LENOVO || 7CETB5WW (2.05 ) || 10/13/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7CHT21WW-1.09    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====S series====&lt;br /&gt;
|-&lt;br /&gt;
| {{s30}} 2639-4WJ&lt;br /&gt;
|| IBM || 26394WJ || Not Available || IBM || 2609BS1 || Not Available || IBM || Not Available || IBM || 18ET45WW (1.45) || 07/10/2001&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====T series====&lt;br /&gt;
|-&lt;br /&gt;
| {{T20}} 2647-UC2&lt;br /&gt;
|| IBM || 2647UC2 || Not Available || IBM || 2647UC2 || Not Available || IBM || Not Available || IBM || IYET45WW (1.08a) || 12/21/1999&lt;br /&gt;
||&lt;br /&gt;
|| {{WARN|Very outdated BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{T21}} 2647-8AU&lt;br /&gt;
|| IBM || 26478AU || Not Available || IBM || 26478AU || Not Available || IBM || Not Available || IBM || KZET34WW (1.16 ) || 04/28/2004&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T22}} 2647-4EG&lt;br /&gt;
|| IBM || 26474EG || Not Available || IBM || 26474EG || Not Available || IBM || Not Available || IBM || 16ET31WW (1.11 ) ||&lt;br /&gt;
03/20/2003 &lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T22}} 2647-8EU&lt;br /&gt;
|| IBM || 26478EU || Not Available || IBM || 26478EU || Not Available || IBM || Not Available || IBM || 16ET32WW (1.12 ) || 04/27/2004&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{T23}} 2647-4NU&lt;br /&gt;
|| IBM || 26474NU || Not Available || IBM || 26474NU || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T23}} 2647-8MG&lt;br /&gt;
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET56WW (1.13 ) || 07/02/2002&lt;br /&gt;
||&lt;br /&gt;
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{T23}} 2647-8MG&lt;br /&gt;
|| IBM || 26478MG || Not Available || IBM || 26478MG || Not Available || IBM || Not Available || IBM || 1AET62WW (1.18 ) || 07/06/2004&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1AHT23WW-1.06a]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T30}} 2366-85G&lt;br /&gt;
|| IBM || 236685G || Not Available || IBM || 236685G || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1IHT18WW-1.05    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T30}} 2366-GU1&lt;br /&gt;
|| IBM || 2366GU1 || Not Available || IBM || 2366GU1 || Not Available || IBM || Not Available || IBM || 1IET69WW (2.08 ) || 06/11/2004&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1IHT19WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T30}} 2366-JBU&lt;br /&gt;
|| IBM || 2366JBU || Not Available || IBM || 2366JBU || Not Available || IBM || Not Available || IBM || 1IET71WW (2.10 ) || 06/16/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1IHT20WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T40}} 2378-D2U&lt;br /&gt;
|| IBM || 2378D2U || ThinkPad T40 || IBM || 2378D2U || Not Available || IBM || Not Available || IBM || 1RETC2WW (3.03 ) || 04/07/2004&lt;br /&gt;
|| &lt;br /&gt;
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{T40p}} 2373-G1G&lt;br /&gt;
|| IBM || 2373G1G || ThinkPad T40p || IBM || 2373G1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41}} 2373-W63&lt;br /&gt;
|| IBM || 2373W63 || ThinkPad T41  || IBM || 2373W63 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|{{T41}} 2373-XNX&lt;br /&gt;
|| IBM || 2373XNX || ThinkPad T41  || IBM || 2373XNX || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41}} 2373-2FG&lt;br /&gt;
|| IBM || 23732FG || ThinkPad T41 || IBM || 23732FG || Not Available || IBM || Not Available || IBM || 1RET84WW (2.11 ) || 10/30/2003&lt;br /&gt;
||&lt;br /&gt;
|| {{NOTE|Missing EC string, this bug is known to be fixed in latest BIOS}}&lt;br /&gt;
|-&lt;br /&gt;
| {{T41}} 2379-DJU&lt;br /&gt;
|| IBM || 2379DJU || ThinkPad T41  || IBM || 2379DJU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41p}} 2373-GHG &lt;br /&gt;
|| IBM || 2373GHG || ThinkPad T41p || IBM || 2373GHG || Not Available || IBM || Not Available || IBM || 1RETDIWW (3.14 ) || 01/20/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41p}} 2373-GEG&lt;br /&gt;
|| IBM || 2373GEG || ThinkPad T41p || IBM || 2373GEG || Not Available || IBM || Not Available || IBM || 1RETDNWW (3.19 ) || 10/13/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt; Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T41p}} 2373-GJJ&lt;br /&gt;
|| IBM || 2373GJJ || ThinkPad T41p || IBM || 2373GJJ || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42}} 2373-FWG&lt;br /&gt;
|| IBM || 2373FWG || ThinkPad T42 || IBM || 2373FWG || Not Available || IBM || Not Available || IBM || 1RETDHWW (3.13 ) || 10/29/2004&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42}} 2373-M1G&lt;br /&gt;
|| IBM || 2373M1G || ThinkPad T42 || IBM || 2373M1G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{T42}} 2374-WEH&lt;br /&gt;
|| IBM || 2374WEH || ThinkPad T42 || IBM || 2374WEH || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42}} 2378-FVU&lt;br /&gt;
|| IBM || 2378FVU || ThinkPad T42 || IBM || 2378FVU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2373-KXU&lt;br /&gt;
|| IBM || 2373KXU || ThinkPad T42p || IBM || 2373KXU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2373-KUU&lt;br /&gt;
|| IBM || 2373KUU || ThinkPad T42p || IBM || 2373KUU || Not Available || IBM || Not Available || IBM || 1RETDMWW (3.18 ) || 09/15/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2373-GYG&lt;br /&gt;
|| IBM || 2373GYG || ThinkPad T42p || IBM || 2373GYG || Not Available || IBM || Not Available || IBM || 1RETDOWW (3.20 ) || 02/27/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2374-CP5&lt;br /&gt;
|| IBM || 2374CP5 || ThinkPad T42p || IBM || 2374CP5 || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2379-DYU&lt;br /&gt;
|| IBM || 2379DYU || ThinkPad T42p || IBM || 2379DYU || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T42p}} 2372-Q2G&lt;br /&gt;
|| IBM || 2373Q2G || ThinkPad T42p || IBM || 2373Q2G || Not Available || IBM || Not Available || IBM || 1RETDPWW (3.21 ) || 06/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1RHT71WW-3.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 1871-4AG&lt;br /&gt;
|| IBM || 18714AG || ThinkPad T43 || IBM || 18714AG || Not Available || IBM || Not Available || IBM || 70ET64WW (1.24 ) || 02/13/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[70HT27WW-1.04    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 1871-F1G&lt;br /&gt;
|| IBM || 1871F1G || ThinkPad T43 || IBM || 1871F1G || Not Available || IBM || Not Available || IBM || 70ET61WW (1.21 ) || 11/01/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[70HT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 2686-DGU&lt;br /&gt;
|| IBM || 2686DGU || ThinkPad T43 || IBM || 2686DGU || Not Available || IBM || Not Available || IBM || 1YET62WW (1.27 ) || 05/18/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1YHT29WW-1.06    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} 2669-WE5&lt;br /&gt;
|| IBM || 2669WE5 || ThinkPad T43 || IBM || 2669WE5 || Not Available || IBM || Not Available || IBM || 1YET56WW (1.21 ) || 07/06/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| {{NOTE|User reports this is really a 2669-CEU with 1GB RAM + BlueTooth, and not a 2669-WE5 (unverified if this makes sense)}}&lt;br /&gt;
|-&lt;br /&gt;
| {{T43p}} 2668-G2G&lt;br /&gt;
|| IBM || 2668G2G || ThinkPad T43p || IBM || 2668G2G || Not Available || IBM || Not Available || IBM || 1YET47WW (1.08 ) || 06/09/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T43p}} 2687-D5U&lt;br /&gt;
|| IBM || 2687D5U || ThinkPad T43p || IBM || 2687D5U || Not Available || IBM || Not Available || IBM || 1YET59WW (1.24 ) || 11/07/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1YHT26WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 1952-W5R&lt;br /&gt;
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ET61WW (1.06 ) || 05/24/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 1952-W5R&lt;br /&gt;
|| LENOVO || 1952W5R || ThinkPad T60 || LENOVO || 1952W5R || Not Available || LENOVO || Not Available || LENOVO || 79ETD2WW (2.12 ) || 04/12/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 2007-49G&lt;br /&gt;
|| LENOVO || 200749G || ThinkPad T60 || LENOVO || 200749G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}} 2007-77G&lt;br /&gt;
|| LENOVO || 200777G || ThinkPad T60 || LENOVO || 200777G || Not Available || LENOVO || Not Available || LENOVO || 79ETD1WW (2.11 ) || 03/15/2007&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2007-83U&lt;br /&gt;
|| LENOVO || 200783U || ThinkPad T60p || LENOVO || 200783U || Not Available || LENOVO || Not Available || LENOVO || 79ET60WW (1.05a) || 04/18/2006 || &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[79HT43WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2007-93G&lt;br /&gt;
|| LENOVO || 200793G || ThinkPad T60p || LENOVO || 200793G || Not Available || LENOVO || Not Available || LENOVO || 79ET62WW (1.07 ) || 06/12/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[79HT45WW-1.04    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2007-93U&lt;br /&gt;
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET66WW (1.10 ) || 08/02/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2007-93U&lt;br /&gt;
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2007-93U&lt;br /&gt;
|| LENOVO || 200793U || ThinkPad T60p || LENOVO || 200793U || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2613-ESU&lt;br /&gt;
|| LENOVO || 2613ESU || ThinkPad T60p || LENOVO || 2613ESU || Not Available || LENOVO || Not Available || LENOVO || 79ET67WW (1.11 ) || 08/29/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT48WW-1.05b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T60p}} 2623-DDU&lt;br /&gt;
|| LENOVO || 2623DDU || ThinkPad T60p || LENOVO || 2623DDU || Not Available || LENOVO || Not Available || LENOVO || 79ETC3WW (2.03 ) || 11/10/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[79HT50WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 7662-XDU&lt;br /&gt;
|| LENOVO || 7662XDU || ThinkPad T61 || LENOVO || 7662XDU || 7662XDU|| LENOVO || Not Available || LENOVO || 7LET37WW (1.07 ) || 04/17/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 bytes   String 1: IBM ThinkPad Embedded Controller -[7KHT19WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| {{WARN|BIOS and EC firmware have different IDs}}&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}} 7661-A56&lt;br /&gt;
|| LENOVO || 7661A56 || ThinkPad T61 || LENOVO || 7661A56 || Not Available || LENOVO || Not Available || LENOVO || 7LET39WW (1.09 ) || 05/14/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0028, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7KHT21WW-1.05    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====X series====&lt;br /&gt;
|-&lt;br /&gt;
| {{X20}} 266231G&lt;br /&gt;
|| IBM || 266231G || Not Available || IBM || 266231G || Not Available || IBM || Not Available || IBM || IZET9DWW (2.25 ) || 04/17/2003&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|| 266232G || IBM || 266232G || Not Available || IBM || 266232G || Not Available || IBM || Not Available || IBM || IZET9AWW (2.22 ) || 09/11/2002&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X23}} 2662EBG&lt;br /&gt;
|| IBM || 2662EBG || Not Available || IBM || 2662EBG || Not Available || IBM || Not Available || IBM || 1DET70WW (1.32 ) || 06/10/2003&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{X24}} 2662-MPU&lt;br /&gt;
|| IBM || 62MPUFX || Not Available || IBM || 62MPUFX || Not Available || IBM || Not Available || IBM || 1DET67WW (1.29 ) || 12/18/2002&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|- &lt;br /&gt;
| {{X30}} 2672-4HU&lt;br /&gt;
|| IBM || 26724HU || Not Available || IBM || 26724HU || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{X30}} 2672-PG3&lt;br /&gt;
|| IBM || 2672PG3 || Not Available || IBM || 2672PG3 || Not Available || IBM || Not Available || IBM || 1KET48WW (1.09 ) || 06/16/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1KHT18WW-1.06    ]-&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X31}} 2672-JXU&lt;br /&gt;
|| IBM || 2672JXU || ThinkPad X31 || IBM || 2672JXU || Not Available || IBM || Not Available || IBM || 1QET97WW (3.02 ) || 09/22/2005 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1QHT23WW-1.08    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{X32}} 2884-A3U&lt;br /&gt;
|| IBM || 2884A3U || ThinkPad X32 || IBM || 2884A3U || Not Available || IBM || Not Available || IBM || 1QET94WW (3.00d) || 01/23/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1QHT22WW-1.07b   ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X40}} 2386-H4G&lt;br /&gt;
|| IBM || 2386H4G || ThinkPad X40 || IBM || 2386H4G || Not Available || IBM || Not Available || IBM || 1UET92WW (1.42 ) || 09/16/2004 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[1UHT82WW-1.32    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X40}} 2371-Y29&lt;br /&gt;
|| IBM || 2371Y29 || ThinkPad X40 || IBM || 2371Y29 || Not Available || IBM || Not Available || IBM || 1UETD3WW (2.08 ) || 12/21/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0024, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[1UHTA6WW-1.56    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{X41}} 2525-HU1&lt;br /&gt;
|| IBM || 2525HU1 || ThinkPad X41 || IBM || 2525HU1 || Not Available || IBM || Not Available || IBM || 74ET48WW (1.17a) || 06/07/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0025, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[74HT25WW-1.00    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60}} 1709-47U&lt;br /&gt;
|| LENOVO || 170947U || ThinkPad X60 || LENOVO || 170947U || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60}} 1709-GDJ&lt;br /&gt;
|| LENOVO || 1709GDJ || ThinkPad X60 || LENOVO || 1709GDJ || Not Available || LENOVO || Not Available || LENOVO || 7BETC2WW (2.03 ) || 10/16/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7BHT36WW-1.09    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60s}} 1702-55G&lt;br /&gt;
|| LENOVO || 170255G || ThinkPad X60s || LENOVO || 170255G || Not Available || LENOVO || Not Available || LENOVO || 7BET44WW (1.04 ) || 03/13/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[7BHT29WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60s}} 1702-5FG&lt;br /&gt;
|| LENOVO || 17025FG || ThinkPad X60s || LENOVO || 17025FG || Not Available || LENOVO || Not Available || LENOVO || 7BET49WW (1.09 ) || 07/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7BHT34WW-1.07    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{X60s}} 1704-56G&lt;br /&gt;
|| LENOVO || 170456G || ThinkPad X60s || LENOVO || 170456G || Not Available || LENOVO || Not Available || LENOVO || 7BET43WW (1.03 ) || 02/13/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[7BHT28WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=14 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
====Z series====&lt;br /&gt;
|-&lt;br /&gt;
| {{Z60t}} 2511-FEU&lt;br /&gt;
|| IBM || 2511FEU || ThinkPad Z60t || IBM || 2511FEU || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z60t}} 2511-FFG&lt;br /&gt;
|| IBM || 2511FFG || ThinkPad Z60t || IBM || 2511FFG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[77HT57WW-1.17    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|- &lt;br /&gt;
| {{Z60m}} 2529-ETG&lt;br /&gt;
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET59WW (1.19 ) || 04/24/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[77HT54WW-1.14    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z60m}} 2529-ETG&lt;br /&gt;
|| IBM || 2529ETG || ThinkPad Z60m || IBM || 2529ETG || Not Available || IBM || Not Available || IBM || 77ET64WW (1.24 ) || 02/27/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z60m}} 2529-FBG&lt;br /&gt;
|| IBM || 2529FBG || ThinkPad Z60m || IBM || 2529FBG || Not Available || IBM || Not Available || IBM || 77ET62WW (1.22 ) || 11/21/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0029, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[77HT58WW-1.18    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|- &lt;br /&gt;
| {{Z60m}} 2529-FKG&lt;br /&gt;
|| IBM || 2529FKG || ThinkPad Z60m || IBM || 2529FKG || Not Available || IBM || Not Available || IBM || 77ET42WW (1.05 ) || 11/19/2005&lt;br /&gt;
||      String 1: IBM ThinkPad Embedded Controller -[77HT28WW-1.02    ]-&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61m}} 9453-A11&lt;br /&gt;
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET48WW (1.08 ) || 05/26/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;     String 1: IBM ThinkPad Embedded Controller -[7FHT21WW-1.03    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61m}} 9543-A11&lt;br /&gt;
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61m}} 9543-A11&lt;br /&gt;
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET93WW (2.11 ) || 11/10/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61m}} 9453-A11&lt;br /&gt;
|| LENOVO || 9453A11 || ThinkPad Z61m || LENOVO || 9453A11 || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61p}} 9453-A12&lt;br /&gt;
|| LENOVO || 9453A12 || ThinkPad Z61p || LENOVO || 9453A12 || Not Available || LENOVO || Not Available || LENOVO || 7FET45WW (1.05 ) || 04/20/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 bytes  String 1: IBM ThinkPad Embedded Controller -[7FHT19WW-1.01    ]-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61p}} 9450-3AU&lt;br /&gt;
|| LENOVO || 94503AU || ThinkPad Z61p || LENOVO || 94503AU || Not Available || LENOVO || Not Available || LENOVO || 7FET53WW (1.13 ) || 07/27/2006&lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT23WW-1.05    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61t}} 9440-2CU&lt;br /&gt;
|| LENOVO || 94402CU || ThinkPad Z61t || LENOVO || 94402CU || Not Available || LENOVO || Not Available || LENOVO || 7FET50WW (1.10 ) || 06/20/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT22WW-1.04    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61t}} 9443-4GG&lt;br /&gt;
|| LENOVO || 94434GG || ThinkPad Z61t || LENOVO || 94434GG || Not Available || LENOVO || Not Available || LENOVO || 7FET96WW (2.14 ) || 12/25/2006 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte   String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61t}} 9440-CTO&lt;br /&gt;
|| LENOVO || 9440CTO || ThinkPad Z61t || LENOVO || 9440CTO || Not Available || LENOVO || Not Available || LENOVO || 7FET99WW (2.17 ) || 04/17/2007 &lt;br /&gt;
|| &amp;lt;nowiki&amp;gt;Handle 0x0026, DMI type 11, 5 byte	String 1: IBM ThinkPad Embedded Controller -[7FHT26WW-1.08    ]-&amp;lt;/nowiki&amp;gt; ||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Adding entries==&lt;br /&gt;
&lt;br /&gt;
Click the &amp;quot;Edit&amp;quot; link on the appropriate series above and add an entry of the following form:&lt;br /&gt;
:&amp;lt;tt&amp;gt;!-&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&amp;lt;tt&amp;gt;| &amp;lt;/tt&amp;gt;&amp;lt;i&amp;gt;description of your model&amp;lt;/i&amp;gt;&lt;br /&gt;
:&amp;lt;i&amp;gt;data line 1&amp;lt;/i&amp;gt;&lt;br /&gt;
:&amp;lt;i&amp;gt;data line 2&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the two data lines are genereated by the following &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for X in system-{manufacturer,product-name,version} \&lt;br /&gt;
  baseboard-{manufacturer,product-name,version} \&lt;br /&gt;
  chassis-{manufacturer,version} bios-{vendor,version,release-date}; do \&lt;br /&gt;
  echo -n &amp;quot;|| `sudo /usr/sbin/dmidecode -s $X` &amp;quot;; done; \&lt;br /&gt;
  sudo /usr/sbin/dmidecode | perl -0777 -ne \&lt;br /&gt;
  'm/\n(.*).\n.*\n(.*Embedded Cont.*)\n/i; print &amp;quot;\n|| &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;nowiki&amp;gt;$1$2&amp;lt;/nowiki&amp;gt; ||\n&amp;quot;'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While at it, you may also want to test [[tp_smapi]] and update its [[tp_smapi#Model-specific_status|model-specific status table]].&lt;br /&gt;
&lt;br /&gt;
==Software using ThinkPad DMI IDs==&lt;br /&gt;
* [[HDAPS]] driver whitelist&lt;br /&gt;
* [[tp_smapi]] driver whitelist&lt;br /&gt;
* [[ibm-acpi]]/thinkpad-acpi driver quirk list&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=31982</id>
		<title>Tp smapi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=31982"/>
		<updated>2007-08-14T06:15:47Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Model-specific status */&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;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module exposes some features of the ThinkPad hardware/firmware via a &amp;lt;tt&amp;gt;sysfs&amp;lt;/tt&amp;gt; interface. Currently, the main implemented functionality is control of battery charging and extended battery status. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.&lt;br /&gt;
&lt;br /&gt;
For older ThinkPad models, see also [[tpctl]].&lt;br /&gt;
&lt;br /&gt;
{{WARN|This driver uses undocumented features and direct hardware access. It thus cannot be guaranteed to work and could conceivably damage your computer (though so far no incidents have been reported).}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
*Battery charge/discharge control&lt;br /&gt;
*Battery status information&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=171579 download] only the &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
====Installation from source====&lt;br /&gt;
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .&lt;br /&gt;
&lt;br /&gt;
For testing, you can simply compile and load the driver within the current&lt;br /&gt;
working directory:&lt;br /&gt;
:{{cmdroot|tar xzvf tp_smapi-0.32.tgz}}&lt;br /&gt;
:{{cmdroot|cd tp_smapi-0.32}}&lt;br /&gt;
:{{cmdroot|make load}}&lt;br /&gt;
&lt;br /&gt;
To compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, add &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; to also patch the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; for compatibility with &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (this requires a kernel source tree matching the current kernel):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or, to compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prepare a stand-alone patch against the current kernel tree (including&lt;br /&gt;
a patch against &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; and new &amp;lt;tt&amp;gt;Kconfig&amp;lt;/tt&amp;gt; entries):&lt;br /&gt;
:{{cmdroot|make patch}}&lt;br /&gt;
&lt;br /&gt;
To delete all autogenerated files:&lt;br /&gt;
:{{cmdroot|make clean}}&lt;br /&gt;
&lt;br /&gt;
The original kernel tree is never modified by any these commands. &lt;br /&gt;
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.&lt;br /&gt;
&lt;br /&gt;
====Installation in Gentoo====&lt;br /&gt;
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/packages/?category=app-laptop;name=tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, do this first:&lt;br /&gt;
&lt;br /&gt;
* Configure &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; as module in your kernel&lt;br /&gt;
* Add the &amp;lt;tt&amp;gt;HDAPS&amp;lt;/tt&amp;gt; use flag in {{path|/etc/make.conf}}&lt;br /&gt;
* {{cmdroot|rmmod hdaps}}&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)&lt;br /&gt;
* {{cmdroot|echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
* {{cmdroot|echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
&lt;br /&gt;
Then reboot, or run:&lt;br /&gt;
* {{cmdroot|modprobe tp_smapi}}&lt;br /&gt;
* {{cmdroot|modprobe hdaps}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Ubuntu/Debian====&lt;br /&gt;
&lt;br /&gt;
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:&lt;br /&gt;
&lt;br /&gt;
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install build-essentials&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;uname -r&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you the version of your current kernel. As Ubuntu adds '-generic' to the kernel-version, the following command works for Debian users only:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install linux-source-`uname -r`&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubuntu users use the kernel-version they got by the command before, e.g. 'linux-source-2.6.20'&lt;br /&gt;
&lt;br /&gt;
Now change to the tp_smapi dir:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cd tp_smapi-X.YY&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt; (X.YY being the version-number of [[tp_smapi]])&lt;br /&gt;
and make and install tp_smapi as instructed above.&lt;br /&gt;
&lt;br /&gt;
If you get an error that the kernel version isn't matching, please check that there is a symlink from the modules dir to the kernel source:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ls -l /lib/modules/2.6.20-6-generic&lt;br /&gt;
lrwxrwxrwx  1 root root     28 2007-02-02 08:39 source -&amp;gt; /usr/src/linux-source-2.6.20&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create the link if the line above is not existent:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-6-generic/source&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the following will build and install the correct modules to their locations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;make install HDAPS=1&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make sure your system loads the modules at boot time, do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules&lt;br /&gt;
echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
and update your initramfs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;update-initramfs -u&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi running now, just load the modules:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;modprobe -a tp_smapi hdaps&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.&lt;br /&gt;
&lt;br /&gt;
===Battery charge control features===&lt;br /&gt;
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):&lt;br /&gt;
:{{cmdroot|echo 40 &amp;gt; /sys/devices/platform/smapi/BAT0/start_charge_thresh}}&lt;br /&gt;
:{{cmdroot|echo 70 &amp;gt; /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}&lt;br /&gt;
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}&lt;br /&gt;
To unconditionally inhibit charging for 17 minutes:&lt;br /&gt;
:{{cmdroot|echo 17 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel charge inhibiting:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
&lt;br /&gt;
To force battery discharging even if connected to AC, use one of these:&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel forced discharge:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
&lt;br /&gt;
===Battery status features===&lt;br /&gt;
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/installed&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/state       # idle/charging/discharging&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/cycle_count&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_now   # instantaneous power&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_avg   # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_percent&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time&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/barcoding&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/chemistry&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/serial&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacture_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/first_use_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius&lt;br /&gt;
# cat /sys/devices/platform/smapi/ac_connected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The raw status data is also available, including some fields not listed above (in case you can figure them out):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|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;
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; you will need to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).&lt;br /&gt;
&lt;br /&gt;
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
&lt;br /&gt;
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:&lt;br /&gt;
 # echo '211a 100 0 0 &amp;gt; /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request&lt;br /&gt;
 211a 34b b2 0 0 0 'OK'&lt;br /&gt;
The 4b&amp;quot; in the 2nd value, converted to decimal is 75: the current charge stop threshold.&lt;br /&gt;
&lt;br /&gt;
===Bundled &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver===&lt;br /&gt;
&lt;br /&gt;
The tp_smapi package includes a modified version of the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; Linux kernel driver used by the [[HDAPS]] system. To use &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; concurrently, you '''must''' use the modified version.&lt;br /&gt;
&lt;br /&gt;
To build the modified version, simply append the &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; parameter to the &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; command (see [[#Installation|Installation]] above):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
If you don't do that, you will not be able to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (and its support module &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;) when &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; is loaded, and vice versa. You can use &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; to switch between these modules.&lt;br /&gt;
&lt;br /&gt;
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; has several changes:&lt;br /&gt;
* The &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; coordinates this access through the bundled &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; driver.&lt;br /&gt;
* The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.&lt;br /&gt;
* Several other improvements, such as the ability to control the polling rate.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
&lt;br /&gt;
If you get &amp;lt;tt&amp;gt;thinkpad_ec: no ThinkPad embedded controller!&amp;lt;/tt&amp;gt; when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.&lt;br /&gt;
&lt;br /&gt;
===Model-specific status===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 92%&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; feature support matrix&lt;br /&gt;
|-&lt;br /&gt;
! Model&lt;br /&gt;
! &amp;lt;tt&amp;gt;start_charge_&amp;lt;br /&amp;gt;thresh&amp;lt;/tt&amp;gt; &lt;br /&gt;
!           &amp;lt;tt&amp;gt;stop_charge_&amp;lt;br /&amp;gt;thresh&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                      &amp;lt;tt&amp;gt;inhbit_charge_&amp;lt;br /&amp;gt;minutes&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                   &amp;lt;tt&amp;gt;force_discharge&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                                battery status files&lt;br /&gt;
!                                                             HDAPS&amp;lt;br /&amp;gt;([[#Bundled hdaps driver|bundled]]&amp;lt;br /&amp;gt;version)&lt;br /&gt;
!                                                             HDAPS axis orientation&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;font-size: 80%&amp;quot;&amp;gt; (X,Y are the hardware readouts,&amp;lt;br /&amp;gt; X',Y' are horizontal and vertical;&amp;lt;br /&amp;gt; see [[HDAPS#Visualisation_of_ThinkPad_orientation|hdaps visualisation]])&amp;lt;/span&amp;gt;&lt;br /&gt;
!                                                                           BIOS ver&lt;br /&gt;
!                                                                                Notes&lt;br /&gt;
|-&lt;br /&gt;
! colspan=10 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; | &lt;br /&gt;
=====A series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{A22p}} 2629-USG&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{A30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=10 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====G series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{G41}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=10 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====R series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{R31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||  || No SMAPI BIOS&lt;br /&gt;
|-&lt;br /&gt;
! {{R40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50}}&lt;br /&gt;
| {{Cunk}} || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50e}} 1834-JAG&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R52}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=X, Y'=Y (OK with v0.32) || 1.29 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}}  || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=10 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====T series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{T20}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||  || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T22}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||  || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T23}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KXU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || ||  || Stop charge threshold works in Windows. dmesg output:&lt;br /&gt;
smapi smapi: smapi_request: SMAPI error: Function is not supported by SMAPI BIOS (func=211a)&lt;br /&gt;
smapi smapi: __get_real_thresh: cannot get stop_thresh of bat=0: Function is not supported by SMAPI BIOS&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KUU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43}} 2686&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=X, Y'=Y (OK with v0.32) || 1.27 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=Y, Y'=-X (wrong with v0.32) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60p}} 8743-CTO&lt;br /&gt;
| {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=-X, Y'=-Y (OK with v0.32) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T61}}&lt;br /&gt;
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || ||  || [http://ubuntuforums.org/showthread.php?p=3146719 ref]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=10 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====X series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{X20}} 2662-31G&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X24}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X32}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X40}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=X, Y'=-Y (wrong with v0.32) || 2.08 || EC v1.62&lt;br /&gt;
|-&lt;br /&gt;
! {{X41}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || X'=X, Y'=-Y (wrong with v0.32) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || || 2.07 || EC v1.10, 2.6.20 issue (see discussion)&lt;br /&gt;
|-&lt;br /&gt;
! {{X60T}}&lt;br /&gt;
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || ||  || [http://luke.no-ip.org/x60tablet/ ref] [http://rad.bioinfo.ulaval.ca/hardware/x60tablet ref]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=10 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====Z series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=X, Y'=Y (OK with v0.32) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || ||  || [https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/45014 ref]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SMAPI capabilities may depend on the BIOS version as well, so upgrading to the latest version of the BIOS might provide more SMAPI functions (especially true for long-lived BIOS with lots of releases, like the TP-1R).&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:tp_smapi|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; error 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;
While at it, you may also want to add your laptop to the [[list of DMI IDs]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
===Tools using this driver===&lt;br /&gt;
&lt;br /&gt;
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:&lt;br /&gt;
* [[KThinkBat]] - display battery status on the KDE &amp;lt;tt&amp;gt;kicker&amp;lt;/tt&amp;gt; panel.&lt;br /&gt;
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2&lt;br /&gt;
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Fglrx&amp;diff=31968</id>
		<title>Fglrx</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Fglrx&amp;diff=31968"/>
		<updated>2007-08-13T18:35:31Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Status */ 8.40.4&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;
== ATI fglrx driver ==&lt;br /&gt;
This is a proprietary Linux binary-only driver for ATI graphic chips with support for 3D acceleration.&lt;br /&gt;
&lt;br /&gt;
Also see [[R300|opensource driver]] with 3D support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Availability / Project Homepage==&lt;br /&gt;
Home page: http://ati.amd.com/support/drivers/linux/linux-radeon.html&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
The ATI drivers have explicit permission for repackaging and redistribution of the Linux drivers.  Many distributions are supported within the installer, and many more repackaged by external developers.  Please visit the  [http://wiki.cchtml.com/index.php/Category:Distributions Distribution Page at the Unofficial ATI driver Wiki]&lt;br /&gt;
&lt;br /&gt;
*{{Debian}} packages: http://www.stanchina.net/~flavio/debian-official/fglrx-driver.html&lt;br /&gt;
** These packages have been added to Debian unstable as &amp;lt;tt&amp;gt;fglrx-driver&amp;lt;/tt&amp;gt;, so you can now apt-get them and use module-assistant to install.&lt;br /&gt;
** If you are on stable sarge with backport's kernel 2.6.15, download ATI's installer, let it build Debian packages and proceed as usual. There's a [http://jroller.com/page/erAck?entry=lot_day_6_2_fglrx detailed description] available.&lt;br /&gt;
*{{SUSE}} packages: http://www.suse.de/~sndirsch/ati-installer-HOWTO.html&lt;br /&gt;
*{{Gentoo}} {{cmdroot|emerge ati-drivers}}&lt;br /&gt;
*{{Fedora}} 4 packages: http://rpm.livna.org&lt;br /&gt;
** For stock Fedora kernels: {{cmdroot|yum install kernel-module-fglrx-$(uname -r) ati-fglrx }}&lt;br /&gt;
** For custom-compiled kernels: see [[How to build custom packages for fglrx]]&lt;br /&gt;
*{{Fedora}} 5 packages: http://rpm.livna.org&lt;br /&gt;
** For stock Fedora kernels: {{cmdroot|yum install xorg-x11-drv-fglrx}}&lt;br /&gt;
** For custom-compiled kernels: see [[How to build custom packages for fglrx]]&lt;br /&gt;
*{{Fedora}} 7 packages: http://rpm.livna.org&lt;br /&gt;
** Unfortunately, as of 15 June, the fglrx driver does not work with Fedora 7, as it cannot handle the xorg version there.  A new driver is expected sometime fairly soon.&lt;br /&gt;
*{{Arch Linux}}&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx}} (kernel module for 2.6.15-ARCH)&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx-archck}} (kernel module for 2.6.15-archck)&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx-utils}} (xorg7 stuff and tools)&lt;br /&gt;
*{{Ubuntu}}&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Dapper_Installation_Guide Dapper Drake Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Breezy_Installation_Guide Breezy Badger Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Edgy_Installation_Guide Edgy Eft Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Feisty_Installation_Guide Feisty Fawn Howto]&lt;br /&gt;
&lt;br /&gt;
== Building for Xorg 7.0==&lt;br /&gt;
To compile fglrx versions &amp;lt;= 8.24.8 for Xorg 7.0.0, fake Xorg 6.9.0 by &lt;br /&gt;
:{{cmdroot|1=export X_VERSION=x690; sh ati-driver-installer-8.24.8-x86.run}}&lt;br /&gt;
Next, move the various resulting libraries and modules from /usr/X11R6 to /usr/lib/xorg&lt;br /&gt;
&lt;br /&gt;
In {{path|/usr/src/ATI}} additional sources are installed for fireglcontrol and fgl_glxgears&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Current version: 8.40.4 ( 13th August 2007).&lt;br /&gt;
Major changes:&lt;br /&gt;
* 8.40.4: some new TV out control options in CCC, another (non-exciting) maintenance release (see [http://www.phoronix.com/scan.php?page=article&amp;amp;item=804&amp;amp;num=1 Phoronix])&lt;br /&gt;
* 8.39.4: kernel 2.6.22 support, TexturedVideo fix, aticonfig segfault fix (see 8.38.7 hotfix), to get rid of the &amp;quot;AMD Testing use only&amp;quot; logo, use [http://www.phoronix.com/forums/showpost.php?p=10641&amp;amp;postcount=44 this] workaround.&lt;br /&gt;
* 8.38.7: hotfix release for &amp;quot;Using aticonfig --initial segfaults destroying xorg.conf file when run in X with Vesa driver.&amp;quot;, search for &amp;quot;737-28261&amp;quot; on the ATI website.&lt;br /&gt;
* 8.38.6: RedHat Enterprise Linux 5 support, Xserver crashes on moving video window between two monitors fixed, corruption when playing multiple vodeps with textured video fixed&lt;br /&gt;
* 8.37.6: Xorg Server 1.3 support, CCC 1.0, crash when logging off from X fixed, Xv cropping bug fixed&lt;br /&gt;
* 8.36.5: Kernel 2.6.20 support, CCC Beta 0.9 with localization&lt;br /&gt;
* 8.35.5: Beta AMD Catalyst Control Center, X-Server termination from console does not result in a blank screen. Kernel 2.6.20 requires some patching (see [[Problems_with_fglrx#fglrx_8.35.5|fglrx patches section]]).&lt;br /&gt;
* 8.34.8: Radeon Xpress 1250 support, X-Video on x86_64 fix, hibernation mode fix. Kernel 2.6.20 requires some patching (see [[Problems_with_fglrx#fglrx_8.34.8|fglrx patches section]]).&lt;br /&gt;
* 8.33.6: X.Org 7.2 support, kernel 2.6.19 support, some fixes in the installer, 2 more bugfixes. Resume from suspend works if you make sure you have set &amp;quot;VbetoolPost no&amp;quot; and &amp;quot;EnableVbetool no&amp;quot; in your suspend to ram hibernate conf (/etc/hibernate/ram.conf on ubuntu/debian).&lt;br /&gt;
* 8.32.5: support for X1650, X.Org 7.2 RC2 support, bugfixes. Suspend-to-ram is broken with specific cards, *no* 2.6.19 support (see [[Problems_with_fglrx#fglrx_8.32.5|fglrx patches section]]).&lt;br /&gt;
* 8.31.5: no new features, only bugfixes.  Of note, for some users, this version breaks suspend-to-ram and suspend-to-disk.&lt;br /&gt;
* 8.30.3: no new features, only bugfixes&lt;br /&gt;
* 8.29.6: Linux 2.6.18 support, dropped support for Radeon 8500/9000/9100/9200/9250 (both, mobile and normal versions)&lt;br /&gt;
* 8.28.8: Display Switching Support for ThinkPads, ATI Pairmode support, Retaining display device state between restarts, Support for Radeon Xpress 1200, 1250, and 1300&lt;br /&gt;
* 8.27.10: X.org 7.1 support, Fedora Core package support&lt;br /&gt;
* 8.26.18: support for dynamically attached DFPs and Thermal Event Power Management (both via daemon), minor bug fixes&lt;br /&gt;
* 8.25.18: Xorg 7.0 support, FireGLâ„¢V5xxx/V7xxx support, Dynamic Display Management, fixed a lot of critical bugs.&lt;br /&gt;
* 8.24.8: support for X1300, X1400, X1600, X1800 (generic and mobility) and 3D accelerated video playback on Avivo&lt;br /&gt;
* 8.23.7: support for X850 and X800, OpenGL 2.0 Enhancement, FSAA for some chips&lt;br /&gt;
* 8.22.5: added kernel 2.6.15 support -- patch no longer required&lt;br /&gt;
* 8.21.7: initial OpenGL 2.0 support&lt;br /&gt;
* 8.20.8: fixed resume issues, fixed compile problems with kernels 2.6.13 and 2.6.14&lt;br /&gt;
* 8.19.10: has added suspend / resume and dynamic GPU power management support.  Using vbetool no longer required.&lt;br /&gt;
&lt;br /&gt;
== Known problems and solutions ==&lt;br /&gt;
See [[Problems with fglrx]].&lt;br /&gt;
== User experience ==&lt;br /&gt;
=== Speed ===&lt;br /&gt;
How much is the speed gain versus the opensource drivers?&lt;br /&gt;
&lt;br /&gt;
Compared to the old drivers, approximately 40% speed gain have been noticed with fglrx. However, there are issues with freezing/garbage after suspend, garbage when resizing desktop (via {{key|ctrl}}{{key|alt}}{{key|plus}}, {{key|ctrl}}{{key|alt}}{{key|minus}}), and garbage while using VMware. The current 8.14.13 has shown 400% improvement over using the open source radeon driver: 1200 FPS for glxgears{{footnote|1}}!&lt;br /&gt;
However the situation seems to be changing today. With recent x11-drm-20060608 driver (gentoo) and thinkpad t42 (ati 9600) the speed is confirmed as 1900fps without any single crash so far.&lt;br /&gt;
&lt;br /&gt;
=== 3D acceleration ===&lt;br /&gt;
&lt;br /&gt;
According to [http://xoomer.alice.it/flavio.stanchina/debian/fglrx-installer.html#configure Flavio's page] you need these options:&lt;br /&gt;
&lt;br /&gt;
  Section &amp;quot;Module&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
    Load &amp;quot;GLcore&amp;quot;&lt;br /&gt;
    Load &amp;quot;glx&amp;quot;&lt;br /&gt;
    Load &amp;quot;dri&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
  # Of course you need to activate the driver&lt;br /&gt;
  Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
    Driver     &amp;quot;fglrx&amp;quot;&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
Don't forget to load the module &amp;lt;tt&amp;gt;fglrx&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;modprobe fglrx&amp;lt;/tt&amp;gt;).  Under Debian the module can be placed in &amp;lt;tt&amp;gt;/etc/modules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With current fglrx drivers (as of 8.29.6) you must disable composite to get 3D DRI acceleration. To do this, add an extra Extensions section (if necessary) containing:&lt;br /&gt;
&lt;br /&gt;
  Section &amp;quot;Extensions&amp;quot;&lt;br /&gt;
     Option  &amp;quot;Composite&amp;quot; &amp;quot;Disable&amp;quot;  #make DRI work with fglrx.&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
If you are unsure whether you have DRI running, issue &amp;lt;tt&amp;gt;glxinfo | grep -i direct&amp;lt;/tt&amp;gt; after disabling composite.  Note, this &lt;br /&gt;
&lt;br /&gt;
{{NOTE|1=Video overlay acceleration may be disabled when 3D acceleration is enabled. The following comment from the xorg.conf file bundled with the fglrx driver indicates that:&lt;br /&gt;
   # === OpenGL Overlay ===&lt;br /&gt;
   # Note: When OpenGL Overlay is enabled, Video Overlay&lt;br /&gt;
   #       will be disabled automatically&lt;br /&gt;
       Option &amp;quot;OpenGLOverlay&amp;quot;              &amp;quot;1&amp;quot;&lt;br /&gt;
However, you can use either regular Xv video overlay or make the video an opengl texture and let the OpenGL engine scale your video.  This has nothing to do with the acceleration of 2D drawing primitives.  Further, your mileage on performance may vary depending on what card you have.  The open source drivers don't support newer cards, while the ATI drivers don't support older cards.&lt;br /&gt;
&lt;br /&gt;
You may be able to preserve VideoOverlay acceleration if you explicitly remove the OpenGLOverlay using:&lt;br /&gt;
&lt;br /&gt;
Option &amp;quot;VideoOverlay&amp;quot;  &amp;quot;True&amp;quot; and Option &amp;quot;OpenGLOverlay&amp;quot; &amp;quot;False&amp;quot;.  See [http://xoomer.alice.it/flavio.stanchina/debian/fglrx-installer.html#configure Flavio's page] for detail.}}&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
Power saving is much better than with the &amp;lt;tt&amp;gt;radeon&amp;lt;/tt&amp;gt; driver, but doesn't work in dual-screen configuration (see [[How to make use of Graphics Chips Power Management features]]).&lt;br /&gt;
&lt;br /&gt;
=== Suspending with fglrx ===&lt;br /&gt;
&lt;br /&gt;
On a ThinkPad T42 with Kernel 2.6.19 with Software Suspend 2 and R60 with Kernel 2.6.18-suspend2-r1 (Gentoo) , the following addition to &amp;lt;tt&amp;gt;/etc/hibernate/suspend2.conf&amp;lt;/tt&amp;gt; is required:&lt;br /&gt;
&lt;br /&gt;
  # For fglrx&lt;br /&gt;
  ProcSetting extra_pages_allowance 20000&lt;br /&gt;
&lt;br /&gt;
=== Display Switching (Dynamic Display Management) ===&lt;br /&gt;
&lt;br /&gt;
Version 8.25.18 introduces a new feature: Dynamic Display Management. It allows display switching on-the-fly.&lt;br /&gt;
&lt;br /&gt;
To list all connected and enabled monitors:&lt;br /&gt;
:{{cmdroot|1=aticonfig --query-monitor}}&lt;br /&gt;
&lt;br /&gt;
To switch displays:&lt;br /&gt;
:{{cmdroot|1=aticonfig --enable-monitor=STRING,STRING}}, where STRING can be: none, lvds, crt1, crt2, tv, tdms1, tdms2&lt;br /&gt;
&lt;br /&gt;
Only 2 displays can be enabled at the same time. Any displays that are not on the list will be disabled.&lt;br /&gt;
&lt;br /&gt;
== Useful links == &lt;br /&gt;
* [http://www.ati.com/products/catalyst/linux.html ATI Linux Driver FAQ]&lt;br /&gt;
* [http://www.rage3d.com/content/articles/atilinuxhowto/ ATI Radeon Linux How-To]&lt;br /&gt;
* [http://www.rage3d.com/board/forumdisplay.php?f=61&amp;amp;daysprune=30&amp;amp;order=asc&amp;amp;sort=title Rage3D Linux Discussion Forum]&lt;br /&gt;
* [http://www.driverheaven.net/forumdisplay.php?f=103 Radeon Driver Forum at Driverheaven]&lt;br /&gt;
* [http://odin.prohosting.com/wedge01/gentoo-radeon-faq.html Gentoo ATI Radeon FAQ]&lt;br /&gt;
* [http://forums.gentoo.org/viewtopic-t-374745-highlight-t42+ati+dri.html Gentoo T42 ATI. DRI + xorg driver]&lt;br /&gt;
* [http://ati.cchtml.com/ Unofficial community ATI bugzilla] - tracks bugs in the driver. Might be monitored by ATI ([http://www.rage3d.com/board/showpost.php?p=1333438751&amp;amp;postcount=386], [http://www.rage3d.com/board/showpost.php?p=1333439009&amp;amp;postcount=390]).&lt;br /&gt;
&lt;br /&gt;
== ThinkPads that may be supported ==&lt;br /&gt;
Supported chips, as found in select IBM ThinkPads:&lt;br /&gt;
{{NOTE|fglrx version 8.29.6 discontinued support for Radeon 9200 and earlier.}}&lt;br /&gt;
* [[ATI Mobility FireGL 9000]]&lt;br /&gt;
** {{T40p}}&lt;br /&gt;
* [[ATI Mobility FireGL T2]]&lt;br /&gt;
** {{R50p}}&lt;br /&gt;
** {{T41p}}, {{T42p}}&lt;br /&gt;
* [[ATI Mobility FireGL V3200]]&lt;br /&gt;
** {{T43p}}&lt;br /&gt;
* [[ATI Mobility Radeon 9000]]&lt;br /&gt;
** {{R50}}, {{R51}}&lt;br /&gt;
** {{T40}}, {{T41}}, {{T42}}&lt;br /&gt;
* [[ATI Mobility Radeon 9600]]&lt;br /&gt;
** {{T42}}&lt;br /&gt;
* [[ATI Mobility Radeon X300]]&lt;br /&gt;
** {{R52}}&lt;br /&gt;
** {{T43}}&lt;br /&gt;
** {{Z60m}}&lt;br /&gt;
* [[ATI Mobility Radeon Xpress 200M]]&lt;br /&gt;
** {{R51e}}&lt;br /&gt;
* [[ATI Mobility Radeon X600]]&lt;br /&gt;
** {{Z60m}}&lt;br /&gt;
* [[ATI Mobility Radeon X1400]]&lt;br /&gt;
** {{T60}}, {{R60}}, {{Z61m}}&lt;br /&gt;
* [[ATI Mobility FireGL V5200]]&lt;br /&gt;
** {{T60p}}, {{Z61p}}&lt;br /&gt;
&lt;br /&gt;
== ThinkPads that are NOT supported by fglrx==&lt;br /&gt;
Unsupported chips, as found in select IBM ThinkPads:&lt;br /&gt;
* [[ATI Mobility Radeon 7500]]&lt;br /&gt;
** {{R40}}&lt;br /&gt;
** {{T30}}&lt;br /&gt;
** {{T42}}&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#Note that glxgears isn't a benchmark tool, it's so simple that its FPS values is without any meaning... you can only compare glxgears using the same drivers/machine, if you change any of then you can have higher/lower values and in real life programs/games happen to have the opposite effects. Think in terms of a car engines rpms: higher rpms in the same car usually means a faster car, change anything and it's meaningless, ie: gears, truck, wheel size, etc. make it useless.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Ricoh_R5C843&amp;diff=31942</id>
		<title>Ricoh R5C843</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Ricoh_R5C843&amp;diff=31942"/>
		<updated>2007-08-13T05:52:26Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* SD Card reader */ 7.04 = feisty, 7.07 doesn't exist&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 4-in-1 Card Reader, PC Card and FireWire adapter ==&lt;br /&gt;
This is a single chip, offering six PCI functions : PC Card bridge, SD, MS, MSPro, xD and FireWire controller&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Chipset: 5c843&lt;br /&gt;
* Interface: PCI Express&lt;br /&gt;
* Functions:&lt;br /&gt;
** PC-Card : PCI 1180:0476&lt;br /&gt;
** FireWire (IEEE 1394) : 1180:0832&lt;br /&gt;
** 4-in-1 card host : PCI 1180:0822&lt;br /&gt;
*** MMC Host : PCI 1180:0843&lt;br /&gt;
*** Memory Stick MS/MSPro : PCI 1180:0592&lt;br /&gt;
*** xD-Picture Card : PCI 1180:0852&lt;br /&gt;
&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;
== Drivers Status ==&lt;br /&gt;
&lt;br /&gt;
=== PC Card ===&lt;br /&gt;
(32bits) Card Bus tested, ok.&lt;br /&gt;
(16bits) PCMCIA not tested.&lt;br /&gt;
&lt;br /&gt;
=== FireWire (IEEE 1394) ===&lt;br /&gt;
Modules ohci1394, ieee1394 and eth1394 modules loads fine, eth1394 detected as ''eth1'... but not tested.&lt;br /&gt;
&lt;br /&gt;
=== SD Card reader ===&lt;br /&gt;
Worked out-of-the-box using Kubuntu 7.04 (kernel 2.6.20)&lt;br /&gt;
&lt;br /&gt;
=== Memory Stick Card reader ===&lt;br /&gt;
Not tested.&lt;br /&gt;
&lt;br /&gt;
=== xD Picture Card reader ===&lt;br /&gt;
Not tested.&lt;br /&gt;
&lt;br /&gt;
=== Links &amp;amp; ressources ===&lt;br /&gt;
* Ricoh Product Sheet [http://www.ricoh.com/LSI/product_pcif/pcc/5c843/index.html]&lt;br /&gt;
&lt;br /&gt;
=== ThinkPads this chip may be found in ===&lt;br /&gt;
* {{T61}}&lt;br /&gt;
* {{R61}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Components]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Ricoh_R5C843&amp;diff=31941</id>
		<title>Ricoh R5C843</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Ricoh_R5C843&amp;diff=31941"/>
		<updated>2007-08-13T05:51:25Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* SD Card reader */ typo&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 4-in-1 Card Reader, PC Card and FireWire adapter ==&lt;br /&gt;
This is a single chip, offering six PCI functions : PC Card bridge, SD, MS, MSPro, xD and FireWire controller&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Chipset: 5c843&lt;br /&gt;
* Interface: PCI Express&lt;br /&gt;
* Functions:&lt;br /&gt;
** PC-Card : PCI 1180:0476&lt;br /&gt;
** FireWire (IEEE 1394) : 1180:0832&lt;br /&gt;
** 4-in-1 card host : PCI 1180:0822&lt;br /&gt;
*** MMC Host : PCI 1180:0843&lt;br /&gt;
*** Memory Stick MS/MSPro : PCI 1180:0592&lt;br /&gt;
*** xD-Picture Card : PCI 1180:0852&lt;br /&gt;
&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;
== Drivers Status ==&lt;br /&gt;
&lt;br /&gt;
=== PC Card ===&lt;br /&gt;
(32bits) Card Bus tested, ok.&lt;br /&gt;
(16bits) PCMCIA not tested.&lt;br /&gt;
&lt;br /&gt;
=== FireWire (IEEE 1394) ===&lt;br /&gt;
Modules ohci1394, ieee1394 and eth1394 modules loads fine, eth1394 detected as ''eth1'... but not tested.&lt;br /&gt;
&lt;br /&gt;
=== SD Card reader ===&lt;br /&gt;
Worked out-of-the-box using Kubuntu 7.07 (kernel 2.6.20)&lt;br /&gt;
&lt;br /&gt;
=== Memory Stick Card reader ===&lt;br /&gt;
Not tested.&lt;br /&gt;
&lt;br /&gt;
=== xD Picture Card reader ===&lt;br /&gt;
Not tested.&lt;br /&gt;
&lt;br /&gt;
=== Links &amp;amp; ressources ===&lt;br /&gt;
* Ricoh Product Sheet [http://www.ricoh.com/LSI/product_pcif/pcc/5c843/index.html]&lt;br /&gt;
&lt;br /&gt;
=== ThinkPads this chip may be found in ===&lt;br /&gt;
* {{T61}}&lt;br /&gt;
* {{R61}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Components]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Ultracampatch&amp;diff=31933</id>
		<title>Ultracampatch</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Ultracampatch&amp;diff=31933"/>
		<updated>2007-08-12T18:53:52Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Project Homepage / Availability */ changed link to gmane, I couldn't view the message in the sf.net archive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==IBM UltraCam II driver==&lt;br /&gt;
Kernel patch to enable support for the IBM UltraCam II.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* camera working on USB and Ultraport&lt;br /&gt;
* supports the basic functions of the camera&lt;br /&gt;
* automatic white balancing&lt;br /&gt;
&lt;br /&gt;
=== Project Homepage / Availability ===&lt;br /&gt;
*[http://www.gutwin.org/cam/source/index.html patch for kernel 2.4.20]&lt;br /&gt;
*[http://marc.theaimsgroup.com/?l=linux-usb-devel&amp;amp;m=111802180804300&amp;amp;w=4 patch for kernel 2.6.10]&lt;br /&gt;
*[http://sourceforge.net/mailarchive/message.php?msg_id=20060912211346.2a00df3a%40parabelbox patch for kernel 2.6.18]&lt;br /&gt;
*[http://article.gmane.org/gmane.linux.usb.devel/57130 patch for kernel 2.6.22.2]&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
usable, but unstable, project seems to be dead&lt;br /&gt;
&lt;br /&gt;
The current driver gives a 320x240 image, with White Balance control (optionaly automatic).&lt;br /&gt;
Contrast, and importantly Brightness Control have not been implemented, so the camera is ultra-sensitive to light; you may find you have to walk into a wardrobe to see a picture during the daytime.&lt;br /&gt;
The driver has been included with the kernel since circa 2.4.21 (I don't remember the exact version)&lt;br /&gt;
&lt;br /&gt;
The present driver also needs updating to include proper support for sysfs, so having removed the camera while running Linux with sysfs, you will have to restart the system to get the camera working again (until sysfs support is added tothe driver).&lt;br /&gt;
&lt;br /&gt;
=== Interesting links related to this project ===&lt;br /&gt;
&lt;br /&gt;
*[http://linux.bytesex.org/v4l2/ Video4Linux Project Home]&lt;br /&gt;
*[http://www.exploits.org/v4l/ Video4Linux Resources]&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=HDAPS&amp;diff=31746</id>
		<title>HDAPS</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=HDAPS&amp;diff=31746"/>
		<updated>2007-08-03T05:46:23Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Userspace daemon */&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;
=== HDAPS - IBM Active Protection System Linux Driver ===&lt;br /&gt;
This is the Linux driver for monitoring the accelerometer known as [[Active Protection System|IBM Active Protection System]].&lt;br /&gt;
&lt;br /&gt;
The driver only enables reading of the acceleration data. It does '''not''' perform [[#Harddisk Protection|automatic disk head parking]]. But there are already some other useful [[#Applications|applications]] for HDAPS, using the {{path|/sys}} interface it provides.&lt;br /&gt;
&lt;br /&gt;
{{WARN|There are two versions of the hdaps driver, one in the Linux kernel mainline, and another provided by [[tp_smapi]].  '''Use of the tp_smapi version of hdaps is strongly recommended by the current hdaps developers.'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
*provides accelerometer values via sysfs&lt;br /&gt;
*provides a joystick type input device&lt;br /&gt;
&lt;br /&gt;
=== Project Homepage / Availability ===&lt;br /&gt;
*[http://hdaps.sourceforge.net/ Project Homepage]&lt;br /&gt;
*The driver is included in the 2.6-mm series of kernels since August, 26th 2005.&lt;br /&gt;
*The driver is now in the mainline (2.6.14).&lt;br /&gt;
*The [[tp_smapi]] package contains some patches to this driver. These are necessary for some recent models, and recommended for all.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
A driver is included in recent Linux kernels and is actively maintained, but it is very inferior to the driver in tp_smapi (which provides its own hdaps module).&lt;br /&gt;
&lt;br /&gt;
=== How to install the driver ===&lt;br /&gt;
If you are using a version of the Linux kernel &amp;lt; 2.6.14, please upgrade. I struggled long and hard to get the driver working with an old version of the kernel, and it was a mess. I gave up, upgraded my kernel, and one recompile later, HDAPS was working. &lt;br /&gt;
&lt;br /&gt;
For 2.6.18 kernel, T60 users have to edit hdaps_init() in drivers/hwmon/hdaps.c to include a HDAPS_DMI_MATCH_LENOVO(&amp;quot;ThinkPad T60&amp;quot;) line.&lt;br /&gt;
&lt;br /&gt;
Install the tp_smapi module if you experience problems with hdaps always reading out constant values of (0,0) [http://sourceforge.net/mailarchive/message.php?msg_id=15350314 refer]&lt;br /&gt;
&lt;br /&gt;
=== Harddisk Protection ===&lt;br /&gt;
As mentioned above, the hdaps kernel driver is only responsible for reading the accelerometer data and exporting it through the sysfs interface. In order to use this information to protect the disk, some additional steps are required.&lt;br /&gt;
&lt;br /&gt;
See [[How to protect the harddisk through APS]].&lt;br /&gt;
&lt;br /&gt;
=== Input device support ===&lt;br /&gt;
The hdaps driver in the lastest kernels (2.6.14 and later?) also exports a joystick type input device, which can be used by games.&lt;br /&gt;
&lt;br /&gt;
=== Applications ===&lt;br /&gt;
====Disk head parking====&lt;br /&gt;
You will need the kernel patch and userspace daemon. The GUI monitoring is optional.&lt;br /&gt;
&lt;br /&gt;
See [[How to protect the harddisk through APS]] for more information.&lt;br /&gt;
&lt;br /&gt;
===== Kernel patch (apply using 'patch -p1 -l &amp;lt; hdaps_xx.patch') =====&lt;br /&gt;
*[http://lwn.net/Articles/154923/ disk park patch] &amp;lt;tt&amp;gt;an experimental patch for parking the disk (Linux 2.6.14 for 2.6.15 see below)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://jenster.dyndns.org/files/blk_freeze-01-nodetection-for-2.6.14.patch disk park patch adapted for the t41p model] &amp;lt;tt&amp;gt; kernel 2.6.14 ([http://sourceforge.net/mailarchive/message.php?msg_id=13214288 capability detection disabled], no libata support)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://jenster.dyndns.org/files/blk_freeze-01-nodetection-for-2.6.15.patch disk park patch adapted for the t41p model] &amp;lt;tt&amp;gt; kernel 2.6.15 ([http://sourceforge.net/mailarchive/message.php?msg_id=13214288 capability detection disabled], no libata support)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/hdaps_protect.20060118.patch sata/ide disk protection patch for 2.6.15]&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/hdaps_protect.20060430.patch Latest sata/ide disk protection patch for 2.6.16]&lt;br /&gt;
*[http://whoopie.gmxhome.de/linux/patches/2.6.16-tj/05-hdaps_protect-20060430-for-2.6.16-tj.patch Latest sata/ide disk protection patch for use with the libata hotplug 2.6.16.16 patches] - See [[How_to_hotswap_UltraBay_devices]]&lt;br /&gt;
*[http://whoopie.gmxhome.de/linux/patches/2.6.17.14-tj/03-hdaps_protect-20060430-for-2.6.17-tj.patch Latest sata/ide disk protection patch for use with the libata hotplug 2.6.17.4 patches] - See [[How_to_hotswap_UltraBay_devices]]&lt;br /&gt;
*[http://exitzero.de/t41p-configs/hdaps_protect-2.6.17.1-20060625.patch Untested patch for 2.6.17.1]: see [http://thread.gmane.org/gmane.linux.drivers.hdaps.devel/708/focus=708]&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/hdaps_protect-2.6.18.3-2.patch Latest sata/ide disk protection patch for 2.6.18.3]&lt;br /&gt;
*[http://article.gmane.org/gmane.linux.kernel/470413 Latest sata/ide disk protection patch for 2.6.19-rc6]&lt;br /&gt;
*[http://www.nabble.com/attachment/9047418/0/hdaps_protect-2.6.20.patch.bz2 Latest sata/ide disk protection patch for 2.6.20] (old design)&lt;br /&gt;
*[http://article.gmane.org/gmane.linux.drivers.hdaps.devel/993 Latest sata/ide disk protection patch for 2.6.20 and 2.6.21] (new design)&lt;br /&gt;
&lt;br /&gt;
===== Userspace daemon =====&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/hdapsd-20070524.c  userspace parking daemon] (recommended version)&lt;br /&gt;
*[http://article.gmane.org/gmane.linux.drivers.hdaps.devel/1045 userspace parking daemon for use with hdaps module in tp_smapi 0.32]&lt;br /&gt;
*[ftp://rohrmoser-engineering.de/pub/  hdapsd-&amp;lt;date&amp;gt;.c  is a version of the daemon which uses a different (and potentially better) algorithm for the adaptive sensivity threshold] (fork of the &amp;quot;upstream&amp;quot; daemon)&lt;br /&gt;
&lt;br /&gt;
===== GUI monitoring =====&lt;br /&gt;
*[http://roy.marples.name/node/269 khdapmonitor] KDE System Tray Monitor&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/gnome-hdaps-applet-20060120.tar.gz gnome-hdaps-applet] visual display of disk protection status in gnome panel&lt;br /&gt;
&lt;br /&gt;
====Security &amp;amp; safety====&lt;br /&gt;
*[[Script for theft alarm using HDAPS]]&lt;br /&gt;
&lt;br /&gt;
====Tilt monitoring====&lt;br /&gt;
*[http://www.mulliner.org/collin/gkibm-acpi.php gkhdaps] &amp;lt;tt&amp;gt;a GKrellM applet displaying tilt data&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://rlove.org/log/2005082203.html gnome-tilt] &amp;lt;tt&amp;gt;a gnome applet showing tilt data&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Visualisation (of ThinkPad orientation)====&lt;br /&gt;
*[http://rlove.org/log/2005082401.html hdaps-gl] &amp;lt;tt&amp;gt;a little app animating a 3D-ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[https://sourceforge.net/project/showfiles.php?group_id=138242 hdapsgl-applet] &amp;lt;tt&amp;gt; a GNOME applet animating a 3D-ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[https://sourceforge.net/project/showfiles.php?group_id=138242 wmadhps] &amp;lt;tt&amp;gt;a WindowMaker DockApp animating a 3D-ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://www.cs.cmu.edu/~ecc/gyro.tar.gz OpenGL gyroscope hack] &amp;lt;tt&amp;gt;keeps your display levelled when tilting the ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Games====&lt;br /&gt;
*[http://icculus.org/neverball/ Neverball] is quite fun with HDAPS. (You'll need to have the HDAPS joystick device)&lt;br /&gt;
*Turn your ThinkPad into a Jedi Weapon (hey, it [http://isnoop.net/blog/2006/05/20/macsaber-turn-your-mac-into-a-jedi-weapon works for Mac laptops])&lt;br /&gt;
&lt;br /&gt;
====Other====&lt;br /&gt;
&lt;br /&gt;
*[http://blog.micampe.it/articles/2006/06/04/here-comes-the-smackpad smack.py] - switch workspace by smacking your laptop, inspired by the [http://blog.medallia.com/2006/05/smacbook_pro.html SmackBook] (uses EWMH)&lt;br /&gt;
**an [http://weblogs.mozillazine.org/gerv/archives/2006/09/stablilised_smackpad.html improved version] adds stabilization (by comparing smacks to previous ones, uses EWMH)&lt;br /&gt;
**another [http://pberndt.com/Programme/Linux/pyhdaps/index.html approach] adds stabilization (by requiring a certain type of value deflection, uses xmacroplay)&lt;br /&gt;
**[http://www.gnome.org/~fherrera/gtollina.c GTollina] is another smack program for use with compiz (video [http://www.gnome.org/~fherrera/blog/gtollina.html here]).&lt;br /&gt;
*[http://blog.odonnell.nu/61.html xmms-smack.py] - move through your xmms playlist by smacking, based on the two smack scripts above.&lt;br /&gt;
*[http://www-128.ibm.com/developerworks/linux/library/l-knockage.html?ca=dgr-lnxw02aKnockBasedCommands KnockBasedCommands] - Execute commands by tapping your laptop.&lt;br /&gt;
*[http://people.ksp.sk/~mic/?menu=32&amp;amp;file=rotate.py rotate.py] - rotate desktop by turning your laptop&lt;br /&gt;
&lt;br /&gt;
=== Interesting links related to this project ===&lt;br /&gt;
* [https://lists.sourceforge.net/lists/listinfo/hdaps-devel HDAPS mailinglist and its archive]&lt;br /&gt;
* #hdaps channel on irc.freenode.org&lt;br /&gt;
* [https://sourceforge.net/projects/hdaps/ hdaps projects] overview of userspace programs using hdaps&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=TPAD-HDFIRM IBM ThinkPads hardware drive firmware site]&lt;br /&gt;
* [http://www.paul.sladen.org/thinkpad-r31/accelerometer.html http://www.paul.sladen.org/thinkpad-r31/accelerometer/]&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=119845 Gentoo ebuild for hdaps driver and daemon including a initscript*&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137345 Gentoo ebuild for gkhdaps gkrell plugin&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137350 Gentoo ebuild for hdaps-gl application&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137351 Gentoo ebuild for gnome hdapsgl-applet&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137352 Gentoo ebuild for gnome tilt application&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137353 Gentoo ebuild for wmhdaps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:R50]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[Category:R60]] [[Category:T41]] [[Category:T41p]] [[Category:T42]] [[Category:T42p]] [[Category:T43]] [[Category:T43p]] [[Category:T60]] [[Category:T60p]] [[Category:T61]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:X60]] [[Category:X60s]] [[Category:Z60m]] [[Category:Z60t]] [[Category:Drivers]] [[Category:Z61m]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=31671</id>
		<title>Tp smapi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=31671"/>
		<updated>2007-07-29T15:20:30Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* X series */ thanks to nitram for the infos&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;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module exposes some features of the ThinkPad hardware/firmware via a &amp;lt;tt&amp;gt;sysfs&amp;lt;/tt&amp;gt; interface. Currently, the main implemented functionality is control of battery charging and extended battery status. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.&lt;br /&gt;
&lt;br /&gt;
For older ThinkPad models, see also [[tpctl]].&lt;br /&gt;
&lt;br /&gt;
{{WARN|This driver uses undocumented features and direct hardware access. It thus cannot be guaranteed to work and could conceivably damage your computer (though so far no incidents have been reported).}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
*Battery charge/discharge control&lt;br /&gt;
*Battery status information&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=171579 download] only the &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
====Installation from source====&lt;br /&gt;
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .&lt;br /&gt;
&lt;br /&gt;
For testing, you can simply compile and load the driver within the current&lt;br /&gt;
working directory:&lt;br /&gt;
:{{cmdroot|tar xzvf tp_smapi-0.32.tgz}}&lt;br /&gt;
:{{cmdroot|cd tp_smapi-0.32}}&lt;br /&gt;
:{{cmdroot|make load}}&lt;br /&gt;
&lt;br /&gt;
To compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, add &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; to also patch the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; for compatibility with &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (this requires a kernel source tree matching the current kernel):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or, to compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prepare a stand-alone patch against the current kernel tree (including&lt;br /&gt;
a patch against &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; and new &amp;lt;tt&amp;gt;Kconfig&amp;lt;/tt&amp;gt; entries):&lt;br /&gt;
:{{cmdroot|make patch}}&lt;br /&gt;
&lt;br /&gt;
To delete all autogenerated files:&lt;br /&gt;
:{{cmdroot|make clean}}&lt;br /&gt;
&lt;br /&gt;
The original kernel tree is never modified by any these commands. &lt;br /&gt;
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.&lt;br /&gt;
&lt;br /&gt;
''Comment: I had to install the complete kernel source tree to make it work (Edgy, T43)''&lt;br /&gt;
&lt;br /&gt;
====Installation in Gentoo====&lt;br /&gt;
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/packages/?category=app-laptop;name=tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, do this first:&lt;br /&gt;
&lt;br /&gt;
* Configure &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; as module in your kernel&lt;br /&gt;
* Add the &amp;lt;tt&amp;gt;HDAPS&amp;lt;/tt&amp;gt; use flag in {{path|/etc/make.conf}}&lt;br /&gt;
* {{cmdroot|rmmod hdaps}}&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)&lt;br /&gt;
* {{cmdroot|echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
* {{cmdroot|echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
&lt;br /&gt;
Then reboot, or run:&lt;br /&gt;
* {{cmdroot|modprobe tp_smapi}}&lt;br /&gt;
* {{cmdroot|modprobe hdaps}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Ubuntu/Debian====&lt;br /&gt;
&lt;br /&gt;
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:&lt;br /&gt;
&lt;br /&gt;
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install build-essentials&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;uname -r&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you the version of your current kernel. As Ubuntu adds '-generic' to the kernel-version, the following command works for Debian users only:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install linux-source-`uname -r`&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubuntu users use the kernel-version they got by the command before, e.g. 'linux-source-2.6.20'&lt;br /&gt;
&lt;br /&gt;
Now change to the tp_smapi dir:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cd tp_smapi-X.YY&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt; (X.YY being the version-number of [[tp_smapi]])&lt;br /&gt;
and make and install tp_smapi as instructed above.&lt;br /&gt;
&lt;br /&gt;
If you get an error that the kernel version isn't matching, please check that there is a symlink from the modules dir to the kernel source:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ls -l /lib/modules/2.6.20-6-generic&lt;br /&gt;
lrwxrwxrwx  1 root root     28 2007-02-02 08:39 source -&amp;gt; /usr/src/linux-source-2.6.20&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create the link if the line above is not existent:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-6-generic/source&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the following will build and install the correct modules to their locations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;make install HDAPS=1&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make sure your system loads the modules at boot time, do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules&lt;br /&gt;
echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
and update your initramfs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;update-initramfs -u&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi running now, just load the modules:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;modprobe tp_smapi hdaps&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.&lt;br /&gt;
&lt;br /&gt;
===Battery charge control features===&lt;br /&gt;
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):&lt;br /&gt;
:{{cmdroot|echo 40 &amp;gt; /sys/devices/platform/smapi/BAT0/start_charge_thresh}}&lt;br /&gt;
:{{cmdroot|echo 70 &amp;gt; /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}&lt;br /&gt;
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}&lt;br /&gt;
To unconditionally inhibit charging for 17 minutes:&lt;br /&gt;
:{{cmdroot|echo 17 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel charge inhibiting:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
&lt;br /&gt;
To force battery discharging even if connected to AC, use one of these:&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel forced discharge:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
&lt;br /&gt;
===Battery status features===&lt;br /&gt;
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/installed&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/state       # idle/charging/discharging&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/cycle_count&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_now   # instantaneous power&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_avg   # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_percent&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time&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/barcoding&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/chemistry&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/serial&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacture_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/first_use_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius&lt;br /&gt;
# cat /sys/devices/platform/smapi/ac_connected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The raw status data is also available, including some fields not listed above (in case you can figure them out):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|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;
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; you will need to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).&lt;br /&gt;
&lt;br /&gt;
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
&lt;br /&gt;
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:&lt;br /&gt;
 # echo '211a 100 0 0 &amp;gt; /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request&lt;br /&gt;
 211a 34b b2 0 0 0 'OK'&lt;br /&gt;
The 4b&amp;quot; in the 2nd value, converted to decimal is 75: the current charge stop threshold.&lt;br /&gt;
&lt;br /&gt;
===Bundled &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver===&lt;br /&gt;
&lt;br /&gt;
The tp_smapi package includes a modified version of the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; Linux kernel driver used by the [[HDAPS]] system. To use &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; concurrently, you '''must''' use the modified version.&lt;br /&gt;
&lt;br /&gt;
To build the modified version, simply append the &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; parameter to the &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; command (see [[#Installation|Installation]] above):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
If you don't do that, you will not be able to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (and its support module &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;) when &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; is loaded, and vice versa. You can use &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; to switch between these modules.&lt;br /&gt;
&lt;br /&gt;
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; has several changes:&lt;br /&gt;
* The &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; coordinates this access through the bundled &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; driver.&lt;br /&gt;
* The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.&lt;br /&gt;
* Several other improvements, such as the ability to control the polling rate.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
&lt;br /&gt;
If you get &amp;lt;tt&amp;gt;thinkpad_ec: no ThinkPad embedded controller!&amp;lt;/tt&amp;gt; when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.&lt;br /&gt;
&lt;br /&gt;
===Model-specific status===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 92%&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&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_&amp;lt;br /&amp;gt;thresh&amp;lt;/tt&amp;gt; &lt;br /&gt;
!           &amp;lt;tt&amp;gt;stop_charge_&amp;lt;br /&amp;gt;thresh&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                      &amp;lt;tt&amp;gt;inhbit_charge_&amp;lt;br /&amp;gt;minutes&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                   &amp;lt;tt&amp;gt;force_discharge&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                                battery status files&lt;br /&gt;
!                                                             HDAPS&amp;lt;br /&amp;gt;([[#Bundled hdaps driver|bundled]]&amp;lt;br /&amp;gt;version)&lt;br /&gt;
!                                                                         HDAPS axis orientation&lt;br /&gt;
!                                                                         Notes&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; | &lt;br /&gt;
=====A series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{A22p}} 2629-USG&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{A30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====G series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{G41}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====R series=====&lt;br /&gt;
|-&lt;br /&gt;
! [[:Category:R31|R31]]&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || || No SMAPI BIOS&lt;br /&gt;
|-&lt;br /&gt;
! {{R40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50}}&lt;br /&gt;
| {{Cunk}} || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50e}} 1834-JAG&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R52}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=X, Y'=Y (OK with v0.32) ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}}  || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====T series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{T20}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T22}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T23}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42}} &lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KUU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43}} 2686&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=X, Y'=Y (OK with v0.32) ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=Y, Y'=-X (Wrong with v0.32) ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====X series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{X20}} 2662-31G&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X24}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X32}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X40}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=X, Y'=-Y (wrong with v0.32) || BIOS v2.08, EC v1.62&lt;br /&gt;
|-&lt;br /&gt;
! {{X41}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || X'=X, Y'=-Y (wrong with v0.32) ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || || BIOS v2.07, EC v1.10, 2.6.20 issue (see discussion)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====Z series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || ||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:tp_smapi|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;
While at it, you may also want to add your laptop to the [[list of DMI IDs]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
===Tools using this driver===&lt;br /&gt;
&lt;br /&gt;
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:&lt;br /&gt;
* [[KThinkBat]] - display battery status on the KDE &amp;lt;tt&amp;gt;kicker&amp;lt;/tt&amp;gt; panel.&lt;br /&gt;
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2&lt;br /&gt;
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=31658</id>
		<title>Tp smapi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=31658"/>
		<updated>2007-07-29T09:15:46Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Model-specific status */&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;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module exposes some features of the ThinkPad hardware/firmware via a &amp;lt;tt&amp;gt;sysfs&amp;lt;/tt&amp;gt; interface. Currently, the main implemented functionality is control of battery charging and extended battery status. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.&lt;br /&gt;
&lt;br /&gt;
For older ThinkPad models, see also [[tpctl]].&lt;br /&gt;
&lt;br /&gt;
{{WARN|This driver uses undocumented features and direct hardware access. It thus cannot be guaranteed to work and could conceivably damage your computer (though so far no incidents have been reported).}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
*Battery charge/discharge control&lt;br /&gt;
*Battery status information&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=171579 download] only the &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
====Installation from source====&lt;br /&gt;
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .&lt;br /&gt;
&lt;br /&gt;
For testing, you can simply compile and load the driver within the current&lt;br /&gt;
working directory:&lt;br /&gt;
:{{cmdroot|tar xzvf tp_smapi-0.32.tgz}}&lt;br /&gt;
:{{cmdroot|cd tp_smapi-0.32}}&lt;br /&gt;
:{{cmdroot|make load}}&lt;br /&gt;
&lt;br /&gt;
To compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, add &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; to also patch the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; for compatibility with &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (this requires a kernel source tree matching the current kernel):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or, to compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prepare a stand-alone patch against the current kernel tree (including&lt;br /&gt;
a patch against &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; and new &amp;lt;tt&amp;gt;Kconfig&amp;lt;/tt&amp;gt; entries):&lt;br /&gt;
:{{cmdroot|make patch}}&lt;br /&gt;
&lt;br /&gt;
To delete all autogenerated files:&lt;br /&gt;
:{{cmdroot|make clean}}&lt;br /&gt;
&lt;br /&gt;
The original kernel tree is never modified by any these commands. &lt;br /&gt;
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.&lt;br /&gt;
&lt;br /&gt;
''Comment: I had to install the complete kernel source tree to make it work (Edgy, T43)''&lt;br /&gt;
&lt;br /&gt;
====Installation in Gentoo====&lt;br /&gt;
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/packages/?category=app-laptop;name=tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, do this first:&lt;br /&gt;
&lt;br /&gt;
* Configure &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; as module in your kernel&lt;br /&gt;
* Add the &amp;lt;tt&amp;gt;HDAPS&amp;lt;/tt&amp;gt; use flag in {{path|/etc/make.conf}}&lt;br /&gt;
* {{cmdroot|rmmod hdaps}}&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)&lt;br /&gt;
* {{cmdroot|echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
* {{cmdroot|echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
&lt;br /&gt;
Then reboot, or run:&lt;br /&gt;
* {{cmdroot|modprobe tp_smapi}}&lt;br /&gt;
* {{cmdroot|modprobe hdaps}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Ubuntu/Debian====&lt;br /&gt;
&lt;br /&gt;
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:&lt;br /&gt;
&lt;br /&gt;
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install build-essentials&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;uname -r&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you the version of your current kernel. As Ubuntu adds '-generic' to the kernel-version, the following command works for Debian users only:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install linux-source-`uname -r`&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubuntu users use the kernel-version they got by the command before, e.g. 'linux-source-2.6.20'&lt;br /&gt;
&lt;br /&gt;
Now change to the tp_smapi dir:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cd tp_smapi-X.YY&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt; (X.YY being the version-number of [[tp_smapi]])&lt;br /&gt;
and make and install tp_smapi as instructed above.&lt;br /&gt;
&lt;br /&gt;
If you get an error that the kernel version isn't matching, please check that there is a symlink from the modules dir to the kernel source:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ls -l /lib/modules/2.6.20-6-generic&lt;br /&gt;
lrwxrwxrwx  1 root root     28 2007-02-02 08:39 source -&amp;gt; /usr/src/linux-source-2.6.20&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create the link if the line above is not existent:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-6-generic/source&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the following will build and install the correct modules to their locations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;make install HDAPS=1&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make sure your system loads the modules at boot time, do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules&lt;br /&gt;
echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
and update your initramfs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;update-initramfs -u&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi running now, just load the modules:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;modprobe tp_smapi hdaps&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.&lt;br /&gt;
&lt;br /&gt;
===Battery charge control features===&lt;br /&gt;
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):&lt;br /&gt;
:{{cmdroot|echo 40 &amp;gt; /sys/devices/platform/smapi/BAT0/start_charge_thresh}}&lt;br /&gt;
:{{cmdroot|echo 70 &amp;gt; /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}&lt;br /&gt;
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}&lt;br /&gt;
To unconditionally inhibit charging for 17 minutes:&lt;br /&gt;
:{{cmdroot|echo 17 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel charge inhibiting:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
&lt;br /&gt;
To force battery discharging even if connected to AC, use one of these:&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel forced discharge:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
&lt;br /&gt;
===Battery status features===&lt;br /&gt;
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/installed&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/state       # idle/charging/discharging&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/cycle_count&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_now   # instantaneous power&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_avg   # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_percent&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time&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/barcoding&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/chemistry&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/serial&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacture_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/first_use_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius&lt;br /&gt;
# cat /sys/devices/platform/smapi/ac_connected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The raw status data is also available, including some fields not listed above (in case you can figure them out):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|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;
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; you will need to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).&lt;br /&gt;
&lt;br /&gt;
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
&lt;br /&gt;
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:&lt;br /&gt;
 # echo '211a 100 0 0 &amp;gt; /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request&lt;br /&gt;
 211a 34b b2 0 0 0 'OK'&lt;br /&gt;
The 4b&amp;quot; in the 2nd value, converted to decimal is 75: the current charge stop threshold.&lt;br /&gt;
&lt;br /&gt;
===Bundled &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver===&lt;br /&gt;
&lt;br /&gt;
The tp_smapi package includes a modified version of the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; Linux kernel driver used by the [[HDAPS]] system. To use &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; concurrently, you '''must''' use the modified version.&lt;br /&gt;
&lt;br /&gt;
To build the modified version, simply append the &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; parameter to the &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; command (see [[#Installation|Installation]] above):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
If you don't do that, you will not be able to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (and its support module &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;) when &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; is loaded, and vice versa. You can use &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; to switch between these modules.&lt;br /&gt;
&lt;br /&gt;
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; has several changes:&lt;br /&gt;
* The &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; coordinates this access through the bundled &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; driver.&lt;br /&gt;
* The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.&lt;br /&gt;
* Several other improvements, such as the ability to control the polling rate.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
&lt;br /&gt;
If you get &amp;lt;tt&amp;gt;thinkpad_ec: no ThinkPad embedded controller!&amp;lt;/tt&amp;gt; when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.&lt;br /&gt;
&lt;br /&gt;
===Model-specific status===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 92%&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&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_&amp;lt;br /&amp;gt;thresh&amp;lt;/tt&amp;gt; &lt;br /&gt;
!           &amp;lt;tt&amp;gt;stop_charge_&amp;lt;br /&amp;gt;thresh&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                      &amp;lt;tt&amp;gt;inhbit_charge_&amp;lt;br /&amp;gt;minutes&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                   &amp;lt;tt&amp;gt;force_discharge&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                                battery status files&lt;br /&gt;
!                                                             HDAPS&amp;lt;br /&amp;gt;([[#Bundled hdaps driver|bundled]]&amp;lt;br /&amp;gt;version)&lt;br /&gt;
!                                                                         HDAPS axis orientation&lt;br /&gt;
!                                                                         Notes&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; | &lt;br /&gt;
=====A series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{A22p}} 2629-USG&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{A30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====G series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{G41}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====R series=====&lt;br /&gt;
|-&lt;br /&gt;
! [[:Category:R31|R31]]&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || || No SMAPI BIOS&lt;br /&gt;
|-&lt;br /&gt;
! {{R40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50}}&lt;br /&gt;
| {{Cunk}} || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50e}} 1834-JAG&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R52}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=X, Y'=Y (OK with v0.32) ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}}  || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====T series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{T20}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T22}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T23}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42}} &lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KUU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43}} 2686&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=X, Y'=Y (OK with v0.32) ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=Y, Y'=-X (Wrong with v0.32) ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====X series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{X20}} 2662-31G&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X24}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X32}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X40}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || || BIOS v2.03, EC v1.60&lt;br /&gt;
|-&lt;br /&gt;
! {{X41}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || || BIOS v2.07, EC v1.10, 2.6.20 issue (see discussion)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====Z series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || ||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:tp_smapi|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;
While at it, you may also want to add your laptop to the [[list of DMI IDs]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
===Tools using this driver===&lt;br /&gt;
&lt;br /&gt;
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:&lt;br /&gt;
* [[KThinkBat]] - display battery status on the KDE &amp;lt;tt&amp;gt;kicker&amp;lt;/tt&amp;gt; panel.&lt;br /&gt;
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2&lt;br /&gt;
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=31657</id>
		<title>Tp smapi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=31657"/>
		<updated>2007-07-29T09:08:50Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Model-specific status */&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;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module exposes some features of the ThinkPad hardware/firmware via a &amp;lt;tt&amp;gt;sysfs&amp;lt;/tt&amp;gt; interface. Currently, the main implemented functionality is control of battery charging and extended battery status. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.&lt;br /&gt;
&lt;br /&gt;
For older ThinkPad models, see also [[tpctl]].&lt;br /&gt;
&lt;br /&gt;
{{WARN|This driver uses undocumented features and direct hardware access. It thus cannot be guaranteed to work and could conceivably damage your computer (though so far no incidents have been reported).}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
*Battery charge/discharge control&lt;br /&gt;
*Battery status information&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=171579 download] only the &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
====Installation from source====&lt;br /&gt;
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .&lt;br /&gt;
&lt;br /&gt;
For testing, you can simply compile and load the driver within the current&lt;br /&gt;
working directory:&lt;br /&gt;
:{{cmdroot|tar xzvf tp_smapi-0.32.tgz}}&lt;br /&gt;
:{{cmdroot|cd tp_smapi-0.32}}&lt;br /&gt;
:{{cmdroot|make load}}&lt;br /&gt;
&lt;br /&gt;
To compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, add &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; to also patch the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; for compatibility with &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (this requires a kernel source tree matching the current kernel):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or, to compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prepare a stand-alone patch against the current kernel tree (including&lt;br /&gt;
a patch against &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; and new &amp;lt;tt&amp;gt;Kconfig&amp;lt;/tt&amp;gt; entries):&lt;br /&gt;
:{{cmdroot|make patch}}&lt;br /&gt;
&lt;br /&gt;
To delete all autogenerated files:&lt;br /&gt;
:{{cmdroot|make clean}}&lt;br /&gt;
&lt;br /&gt;
The original kernel tree is never modified by any these commands. &lt;br /&gt;
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.&lt;br /&gt;
&lt;br /&gt;
''Comment: I had to install the complete kernel source tree to make it work (Edgy, T43)''&lt;br /&gt;
&lt;br /&gt;
====Installation in Gentoo====&lt;br /&gt;
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/packages/?category=app-laptop;name=tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, do this first:&lt;br /&gt;
&lt;br /&gt;
* Configure &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; as module in your kernel&lt;br /&gt;
* Add the &amp;lt;tt&amp;gt;HDAPS&amp;lt;/tt&amp;gt; use flag in {{path|/etc/make.conf}}&lt;br /&gt;
* {{cmdroot|rmmod hdaps}}&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)&lt;br /&gt;
* {{cmdroot|echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
* {{cmdroot|echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
&lt;br /&gt;
Then reboot, or run:&lt;br /&gt;
* {{cmdroot|modprobe tp_smapi}}&lt;br /&gt;
* {{cmdroot|modprobe hdaps}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Ubuntu/Debian====&lt;br /&gt;
&lt;br /&gt;
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:&lt;br /&gt;
&lt;br /&gt;
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install build-essentials&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;uname -r&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you the version of your current kernel. As Ubuntu adds '-generic' to the kernel-version, the following command works for Debian users only:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install linux-source-`uname -r`&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubuntu users use the kernel-version they got by the command before, e.g. 'linux-source-2.6.20'&lt;br /&gt;
&lt;br /&gt;
Now change to the tp_smapi dir:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cd tp_smapi-X.YY&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt; (X.YY being the version-number of [[tp_smapi]])&lt;br /&gt;
and make and install tp_smapi as instructed above.&lt;br /&gt;
&lt;br /&gt;
If you get an error that the kernel version isn't matching, please check that there is a symlink from the modules dir to the kernel source:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ls -l /lib/modules/2.6.20-6-generic&lt;br /&gt;
lrwxrwxrwx  1 root root     28 2007-02-02 08:39 source -&amp;gt; /usr/src/linux-source-2.6.20&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create the link if the line above is not existent:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-6-generic/source&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the following will build and install the correct modules to their locations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;make install HDAPS=1&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make sure your system loads the modules at boot time, do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules&lt;br /&gt;
echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
and update your initramfs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;update-initramfs -u&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi running now, just load the modules:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;modprobe tp_smapi hdaps&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.&lt;br /&gt;
&lt;br /&gt;
===Battery charge control features===&lt;br /&gt;
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):&lt;br /&gt;
:{{cmdroot|echo 40 &amp;gt; /sys/devices/platform/smapi/BAT0/start_charge_thresh}}&lt;br /&gt;
:{{cmdroot|echo 70 &amp;gt; /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}&lt;br /&gt;
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}&lt;br /&gt;
To unconditionally inhibit charging for 17 minutes:&lt;br /&gt;
:{{cmdroot|echo 17 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel charge inhibiting:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
&lt;br /&gt;
To force battery discharging even if connected to AC, use one of these:&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel forced discharge:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
&lt;br /&gt;
===Battery status features===&lt;br /&gt;
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/installed&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/state       # idle/charging/discharging&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/cycle_count&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_now   # instantaneous power&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_avg   # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_percent&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time&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/barcoding&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/chemistry&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/serial&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacture_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/first_use_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius&lt;br /&gt;
# cat /sys/devices/platform/smapi/ac_connected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The raw status data is also available, including some fields not listed above (in case you can figure them out):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|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;
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; you will need to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).&lt;br /&gt;
&lt;br /&gt;
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
&lt;br /&gt;
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:&lt;br /&gt;
 # echo '211a 100 0 0 &amp;gt; /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request&lt;br /&gt;
 211a 34b b2 0 0 0 'OK'&lt;br /&gt;
The 4b&amp;quot; in the 2nd value, converted to decimal is 75: the current charge stop threshold.&lt;br /&gt;
&lt;br /&gt;
===Bundled &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver===&lt;br /&gt;
&lt;br /&gt;
The tp_smapi package includes a modified version of the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; Linux kernel driver used by the [[HDAPS]] system. To use &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; concurrently, you '''must''' use the modified version.&lt;br /&gt;
&lt;br /&gt;
To build the modified version, simply append the &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; parameter to the &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; command (see [[#Installation|Installation]] above):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
If you don't do that, you will not be able to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (and its support module &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;) when &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; is loaded, and vice versa. You can use &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; to switch between these modules.&lt;br /&gt;
&lt;br /&gt;
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; has several changes:&lt;br /&gt;
* The &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; coordinates this access through the bundled &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; driver.&lt;br /&gt;
* The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.&lt;br /&gt;
* Several other improvements, such as the ability to control the polling rate.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
&lt;br /&gt;
If you get &amp;lt;tt&amp;gt;thinkpad_ec: no ThinkPad embedded controller!&amp;lt;/tt&amp;gt; when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.&lt;br /&gt;
&lt;br /&gt;
===Model-specific status===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 92%&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&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_&amp;lt;br /&amp;gt;thresh&amp;lt;/tt&amp;gt; &lt;br /&gt;
!           &amp;lt;tt&amp;gt;stop_charge_&amp;lt;br /&amp;gt;thresh&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                      &amp;lt;tt&amp;gt;inhbit_charge_&amp;lt;br /&amp;gt;minutes&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                   &amp;lt;tt&amp;gt;force_discharge&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                                battery status files&lt;br /&gt;
!                                                             HDAPS&amp;lt;br /&amp;gt;([[#Bundled hdaps driver|bundled]]&amp;lt;br /&amp;gt;version)&lt;br /&gt;
!                                                                         HDAPS axis orientation&lt;br /&gt;
!                                                                         Notes&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; | &lt;br /&gt;
=====A series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{A22p}} 2629-USG&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{A30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====G series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{G41}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====R series=====&lt;br /&gt;
|-&lt;br /&gt;
! [[:Category:R31|R31]]&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || || No SMAPI BIOS&lt;br /&gt;
|-&lt;br /&gt;
! {{R40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50}}&lt;br /&gt;
| {{Cunk}} || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50e}} 1834-JAG&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R52}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || X'=X, Y'=Y (OK with v0.32) ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}}  || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====T series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{T20}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T22}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T23}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42}} &lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KUU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43}} 2686&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=X, Y'=Y (OK with v0.32) ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=Y, Y'=-X (Wrong with v0.32) ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====X series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{X20}} 2662-31G&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X24}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X32}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X40}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || || BIOS v2.03, EC v1.60&lt;br /&gt;
|-&lt;br /&gt;
! {{X41}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || || BIOS v2.07, EC v1.10, 2.6.20 issue (see discussion)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====Z series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || ||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:tp_smapi|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;
While at it, you may also want to add your laptop to the [[list of DMI IDs]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
===Tools using this driver===&lt;br /&gt;
&lt;br /&gt;
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:&lt;br /&gt;
* [[KThinkBat]] - display battery status on the KDE &amp;lt;tt&amp;gt;kicker&amp;lt;/tt&amp;gt; panel.&lt;br /&gt;
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2&lt;br /&gt;
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=31656</id>
		<title>Tp smapi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=31656"/>
		<updated>2007-07-29T09:06:38Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Bundled &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver */&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;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module exposes some features of the ThinkPad hardware/firmware via a &amp;lt;tt&amp;gt;sysfs&amp;lt;/tt&amp;gt; interface. Currently, the main implemented functionality is control of battery charging and extended battery status. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.&lt;br /&gt;
&lt;br /&gt;
For older ThinkPad models, see also [[tpctl]].&lt;br /&gt;
&lt;br /&gt;
{{WARN|This driver uses undocumented features and direct hardware access. It thus cannot be guaranteed to work and could conceivably damage your computer (though so far no incidents have been reported).}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
*Battery charge/discharge control&lt;br /&gt;
*Battery status information&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=171579 download] only the &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
====Installation from source====&lt;br /&gt;
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .&lt;br /&gt;
&lt;br /&gt;
For testing, you can simply compile and load the driver within the current&lt;br /&gt;
working directory:&lt;br /&gt;
:{{cmdroot|tar xzvf tp_smapi-0.32.tgz}}&lt;br /&gt;
:{{cmdroot|cd tp_smapi-0.32}}&lt;br /&gt;
:{{cmdroot|make load}}&lt;br /&gt;
&lt;br /&gt;
To compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, add &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; to also patch the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; for compatibility with &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (this requires a kernel source tree matching the current kernel):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or, to compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prepare a stand-alone patch against the current kernel tree (including&lt;br /&gt;
a patch against &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; and new &amp;lt;tt&amp;gt;Kconfig&amp;lt;/tt&amp;gt; entries):&lt;br /&gt;
:{{cmdroot|make patch}}&lt;br /&gt;
&lt;br /&gt;
To delete all autogenerated files:&lt;br /&gt;
:{{cmdroot|make clean}}&lt;br /&gt;
&lt;br /&gt;
The original kernel tree is never modified by any these commands. &lt;br /&gt;
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.&lt;br /&gt;
&lt;br /&gt;
''Comment: I had to install the complete kernel source tree to make it work (Edgy, T43)''&lt;br /&gt;
&lt;br /&gt;
====Installation in Gentoo====&lt;br /&gt;
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/packages/?category=app-laptop;name=tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, do this first:&lt;br /&gt;
&lt;br /&gt;
* Configure &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; as module in your kernel&lt;br /&gt;
* Add the &amp;lt;tt&amp;gt;HDAPS&amp;lt;/tt&amp;gt; use flag in {{path|/etc/make.conf}}&lt;br /&gt;
* {{cmdroot|rmmod hdaps}}&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)&lt;br /&gt;
* {{cmdroot|echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
* {{cmdroot|echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
&lt;br /&gt;
Then reboot, or run:&lt;br /&gt;
* {{cmdroot|modprobe tp_smapi}}&lt;br /&gt;
* {{cmdroot|modprobe hdaps}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Ubuntu/Debian====&lt;br /&gt;
&lt;br /&gt;
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:&lt;br /&gt;
&lt;br /&gt;
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install build-essentials&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;uname -r&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you the version of your current kernel. As Ubuntu adds '-generic' to the kernel-version, the following command works for Debian users only:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install linux-source-`uname -r`&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubuntu users use the kernel-version they got by the command before, e.g. 'linux-source-2.6.20'&lt;br /&gt;
&lt;br /&gt;
Now change to the tp_smapi dir:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cd tp_smapi-X.YY&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt; (X.YY being the version-number of [[tp_smapi]])&lt;br /&gt;
and make and install tp_smapi as instructed above.&lt;br /&gt;
&lt;br /&gt;
If you get an error that the kernel version isn't matching, please check that there is a symlink from the modules dir to the kernel source:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ls -l /lib/modules/2.6.20-6-generic&lt;br /&gt;
lrwxrwxrwx  1 root root     28 2007-02-02 08:39 source -&amp;gt; /usr/src/linux-source-2.6.20&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create the link if the line above is not existent:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-6-generic/source&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the following will build and install the correct modules to their locations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;make install HDAPS=1&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make sure your system loads the modules at boot time, do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules&lt;br /&gt;
echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
and update your initramfs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;update-initramfs -u&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi running now, just load the modules:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;modprobe tp_smapi hdaps&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.&lt;br /&gt;
&lt;br /&gt;
===Battery charge control features===&lt;br /&gt;
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):&lt;br /&gt;
:{{cmdroot|echo 40 &amp;gt; /sys/devices/platform/smapi/BAT0/start_charge_thresh}}&lt;br /&gt;
:{{cmdroot|echo 70 &amp;gt; /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}&lt;br /&gt;
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}&lt;br /&gt;
To unconditionally inhibit charging for 17 minutes:&lt;br /&gt;
:{{cmdroot|echo 17 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel charge inhibiting:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
&lt;br /&gt;
To force battery discharging even if connected to AC, use one of these:&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel forced discharge:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
&lt;br /&gt;
===Battery status features===&lt;br /&gt;
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/installed&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/state       # idle/charging/discharging&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/cycle_count&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_now   # instantaneous power&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_avg   # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_percent&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time&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/barcoding&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/chemistry&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/serial&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacture_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/first_use_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius&lt;br /&gt;
# cat /sys/devices/platform/smapi/ac_connected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The raw status data is also available, including some fields not listed above (in case you can figure them out):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|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;
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; you will need to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).&lt;br /&gt;
&lt;br /&gt;
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
&lt;br /&gt;
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:&lt;br /&gt;
 # echo '211a 100 0 0 &amp;gt; /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request&lt;br /&gt;
 211a 34b b2 0 0 0 'OK'&lt;br /&gt;
The 4b&amp;quot; in the 2nd value, converted to decimal is 75: the current charge stop threshold.&lt;br /&gt;
&lt;br /&gt;
===Bundled &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver===&lt;br /&gt;
&lt;br /&gt;
The tp_smapi package includes a modified version of the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; Linux kernel driver used by the [[HDAPS]] system. To use &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; concurrently, you '''must''' use the modified version.&lt;br /&gt;
&lt;br /&gt;
To build the modified version, simply append the &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; parameter to the &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; command (see [[#Installation|Installation]] above):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
If you don't do that, you will not be able to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (and its support module &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;) when &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; is loaded, and vice versa. You can use &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; to switch between these modules.&lt;br /&gt;
&lt;br /&gt;
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; has several changes:&lt;br /&gt;
* The &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; coordinates this access through the bundled &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; driver.&lt;br /&gt;
* The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.&lt;br /&gt;
* Several other improvements, such as the ability to control the polling rate.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
&lt;br /&gt;
If you get &amp;lt;tt&amp;gt;thinkpad_ec: no ThinkPad embedded controller!&amp;lt;/tt&amp;gt; when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.&lt;br /&gt;
&lt;br /&gt;
===Model-specific status===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 92%&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&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_&amp;lt;br /&amp;gt;thresh&amp;lt;/tt&amp;gt; &lt;br /&gt;
!           &amp;lt;tt&amp;gt;stop_charge_&amp;lt;br /&amp;gt;thresh&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                      &amp;lt;tt&amp;gt;inhbit_charge_&amp;lt;br /&amp;gt;minutes&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                   &amp;lt;tt&amp;gt;force_discharge&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                                battery status files&lt;br /&gt;
!                                                             HDAPS&amp;lt;br /&amp;gt;([[#Bundled hdaps driver|bundled]]&amp;lt;br /&amp;gt;version)&lt;br /&gt;
!                                                                         HDAPS axis orientation&lt;br /&gt;
!                                                                         Notes&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; | &lt;br /&gt;
=====A series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{A22p}} 2629-USG&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{A30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====G series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{G41}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====R series=====&lt;br /&gt;
|-&lt;br /&gt;
! [[:Category:R31|R31]]&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || || No SMAPI BIOS&lt;br /&gt;
|-&lt;br /&gt;
! {{R40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50}}&lt;br /&gt;
| {{Cunk}} || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50e}} 1834-JAG&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R52}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}}  || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====T series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{T20}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T22}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T23}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42}} &lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KUU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43}} 2686&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=X, Y'=Y (OK with v0.32) ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || X'=Y, Y'=-X (Wrong with v0.32) ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====X series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{X20}} 2662-31G&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X24}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X32}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X40}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || || BIOS v2.03, EC v1.60&lt;br /&gt;
|-&lt;br /&gt;
! {{X41}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || || BIOS v2.07, EC v1.10, 2.6.20 issue (see discussion)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=9 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====Z series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || ||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:tp_smapi|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;
While at it, you may also want to add your laptop to the [[list of DMI IDs]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
===Tools using this driver===&lt;br /&gt;
&lt;br /&gt;
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:&lt;br /&gt;
* [[KThinkBat]] - display battery status on the KDE &amp;lt;tt&amp;gt;kicker&amp;lt;/tt&amp;gt; panel.&lt;br /&gt;
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2&lt;br /&gt;
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=HDAPS&amp;diff=31628</id>
		<title>HDAPS</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=HDAPS&amp;diff=31628"/>
		<updated>2007-07-28T10:29:04Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Userspace daemon */ temporary link to the latest hdapsd at gmane.org archive&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;
=== HDAPS - IBM Active Protection System Linux Driver ===&lt;br /&gt;
This is the Linux driver for monitoring the accelerometer known as [[Active Protection System|IBM Active Protection System]].&lt;br /&gt;
&lt;br /&gt;
The driver only enables reading of the acceleration data. It does '''not''' perform [[#Harddisk Protection|automatic disk head parking]]. But there are already some other useful [[#Applications|applications]] for HDAPS, using the {{path|/sys}} interface it provides.&lt;br /&gt;
&lt;br /&gt;
{{WARN|There are two versions of the hdaps driver, one in the Linux kernel mainline, and another provided by [[tp_smapi]].  '''Use of the tp_smapi version of hdaps is strongly recommended by the current hdaps developers.'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
*provides accelerometer values via sysfs&lt;br /&gt;
*provides a joystick type input device&lt;br /&gt;
&lt;br /&gt;
=== Project Homepage / Availability ===&lt;br /&gt;
*[http://hdaps.sourceforge.net/ Project Homepage]&lt;br /&gt;
*The driver is included in the 2.6-mm series of kernels since August, 26th 2005.&lt;br /&gt;
*The driver is now in the mainline (2.6.14).&lt;br /&gt;
*The [[tp_smapi]] package contains some patches to this driver. These are necessary for some recent models, and recommended for all.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
A driver is included in recent Linux kernels and is actively maintained, but it is very inferior to the driver in tp_smapi (which provides its own hdaps module).&lt;br /&gt;
&lt;br /&gt;
=== How to install the driver ===&lt;br /&gt;
If you are using a version of the Linux kernel &amp;lt; 2.6.14, please upgrade. I struggled long and hard to get the driver working with an old version of the kernel, and it was a mess. I gave up, upgraded my kernel, and one recompile later, HDAPS was working. &lt;br /&gt;
&lt;br /&gt;
For 2.6.18 kernel, T60 users have to edit hdaps_init() in drivers/hwmon/hdaps.c to include a HDAPS_DMI_MATCH_LENOVO(&amp;quot;ThinkPad T60&amp;quot;) line.&lt;br /&gt;
&lt;br /&gt;
Install the tp_smapi module if you experience problems with hdaps always reading out constant values of (0,0) [http://sourceforge.net/mailarchive/message.php?msg_id=15350314 refer]&lt;br /&gt;
&lt;br /&gt;
=== Harddisk Protection ===&lt;br /&gt;
As mentioned above, the hdaps kernel driver is only responsible for reading the accelerometer data and exporting it through the sysfs interface. In order to use this information to protect the disk, some additional steps are required.&lt;br /&gt;
&lt;br /&gt;
See [[How to protect the harddisk through APS]].&lt;br /&gt;
&lt;br /&gt;
=== Input device support ===&lt;br /&gt;
The hdaps driver in the lastest kernels (2.6.14 and later?) also exports a joystick type input device, which can be used by games.&lt;br /&gt;
&lt;br /&gt;
=== Applications ===&lt;br /&gt;
====Disk head parking====&lt;br /&gt;
You will need the kernel patch and userspace daemon. The GUI monitoring is optional.&lt;br /&gt;
&lt;br /&gt;
See [[How to protect the harddisk through APS]] for more information.&lt;br /&gt;
&lt;br /&gt;
===== Kernel patch (apply using 'patch -p1 -l &amp;lt; hdaps_xx.patch') =====&lt;br /&gt;
*[http://lwn.net/Articles/154923/ disk park patch] &amp;lt;tt&amp;gt;an experimental patch for parking the disk (Linux 2.6.14 for 2.6.15 see below)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://jenster.dyndns.org/files/blk_freeze-01-nodetection-for-2.6.14.patch disk park patch adapted for the t41p model] &amp;lt;tt&amp;gt; kernel 2.6.14 ([http://sourceforge.net/mailarchive/message.php?msg_id=13214288 capability detection disabled], no libata support)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://jenster.dyndns.org/files/blk_freeze-01-nodetection-for-2.6.15.patch disk park patch adapted for the t41p model] &amp;lt;tt&amp;gt; kernel 2.6.15 ([http://sourceforge.net/mailarchive/message.php?msg_id=13214288 capability detection disabled], no libata support)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/hdaps_protect.20060118.patch sata/ide disk protection patch for 2.6.15]&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/hdaps_protect.20060430.patch Latest sata/ide disk protection patch for 2.6.16]&lt;br /&gt;
*[http://whoopie.gmxhome.de/linux/patches/2.6.16-tj/05-hdaps_protect-20060430-for-2.6.16-tj.patch Latest sata/ide disk protection patch for use with the libata hotplug 2.6.16.16 patches] - See [[How_to_hotswap_UltraBay_devices]]&lt;br /&gt;
*[http://whoopie.gmxhome.de/linux/patches/2.6.17.14-tj/03-hdaps_protect-20060430-for-2.6.17-tj.patch Latest sata/ide disk protection patch for use with the libata hotplug 2.6.17.4 patches] - See [[How_to_hotswap_UltraBay_devices]]&lt;br /&gt;
*[http://exitzero.de/t41p-configs/hdaps_protect-2.6.17.1-20060625.patch Untested patch for 2.6.17.1]: see [http://thread.gmane.org/gmane.linux.drivers.hdaps.devel/708/focus=708]&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/hdaps_protect-2.6.18.3-2.patch Latest sata/ide disk protection patch for 2.6.18.3]&lt;br /&gt;
*[http://article.gmane.org/gmane.linux.kernel/470413 Latest sata/ide disk protection patch for 2.6.19-rc6]&lt;br /&gt;
*[http://www.nabble.com/attachment/9047418/0/hdaps_protect-2.6.20.patch.bz2 Latest sata/ide disk protection patch for 2.6.20] (old design)&lt;br /&gt;
*[http://article.gmane.org/gmane.linux.drivers.hdaps.devel/993 Latest sata/ide disk protection patch for 2.6.20 and 2.6.21] (new design)&lt;br /&gt;
&lt;br /&gt;
===== Userspace daemon =====&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/hdapsd-20070524.c  userspace parking daemon] (recommended version)&lt;br /&gt;
*[http://article.gmane.org/gmane.linux.drivers.hdaps.devel/1040 userspace parking daemon for use with hdaps module in tp_smapi 0.32]&lt;br /&gt;
*[ftp://rohrmoser-engineering.de/pub/  hdapsd-&amp;lt;date&amp;gt;.c  is a version of the daemon which uses a different (and potentially better) algorithm for the adaptive sensivity threshold] (fork of the &amp;quot;upstream&amp;quot; daemon)&lt;br /&gt;
&lt;br /&gt;
===== GUI monitoring =====&lt;br /&gt;
*[http://roy.marples.name/node/269 khdapmonitor] KDE System Tray Monitor&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps/gnome-hdaps-applet-20060120.tar.gz gnome-hdaps-applet] visual display of disk protection status in gnome panel&lt;br /&gt;
&lt;br /&gt;
====Security &amp;amp; safety====&lt;br /&gt;
*[[Script for theft alarm using HDAPS]]&lt;br /&gt;
&lt;br /&gt;
====Tilt monitoring====&lt;br /&gt;
*[http://www.mulliner.org/collin/gkibm-acpi.php gkhdaps] &amp;lt;tt&amp;gt;a GKrellM applet displaying tilt data&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://rlove.org/log/2005082203.html gnome-tilt] &amp;lt;tt&amp;gt;a gnome applet showing tilt data&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Visualisation (of ThinkPad orientation)====&lt;br /&gt;
*[http://rlove.org/log/2005082401.html hdaps-gl] &amp;lt;tt&amp;gt;a little app animating a 3D-ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[https://sourceforge.net/project/showfiles.php?group_id=138242 hdapsgl-applet] &amp;lt;tt&amp;gt; a GNOME applet animating a 3D-ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[https://sourceforge.net/project/showfiles.php?group_id=138242 wmadhps] &amp;lt;tt&amp;gt;a WindowMaker DockApp animating a 3D-ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://www.cs.cmu.edu/~ecc/gyro.tar.gz OpenGL gyroscope hack] &amp;lt;tt&amp;gt;keeps your display levelled when tilting the ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Games====&lt;br /&gt;
*[http://icculus.org/neverball/ Neverball] is quite fun with HDAPS. (You'll need to have the HDAPS joystick device)&lt;br /&gt;
*Turn your ThinkPad into a Jedi Weapon (hey, it [http://isnoop.net/blog/2006/05/20/macsaber-turn-your-mac-into-a-jedi-weapon works for Mac laptops])&lt;br /&gt;
&lt;br /&gt;
====Other====&lt;br /&gt;
&lt;br /&gt;
*[http://blog.micampe.it/articles/2006/06/04/here-comes-the-smackpad smack.py] - switch workspace by smacking your laptop, inspired by the [http://blog.medallia.com/2006/05/smacbook_pro.html SmackBook] (uses EWMH)&lt;br /&gt;
**an [http://weblogs.mozillazine.org/gerv/archives/2006/09/stablilised_smackpad.html improved version] adds stabilization (by comparing smacks to previous ones, uses EWMH)&lt;br /&gt;
**another [http://pberndt.com/Programme/Linux/pyhdaps/index.html approach] adds stabilization (by requiring a certain type of value deflection, uses xmacroplay)&lt;br /&gt;
**[http://www.gnome.org/~fherrera/gtollina.c GTollina] is another smack program for use with compiz (video [http://www.gnome.org/~fherrera/blog/gtollina.html here]).&lt;br /&gt;
*[http://blog.odonnell.nu/61.html xmms-smack.py] - move through your xmms playlist by smacking, based on the two smack scripts above.&lt;br /&gt;
*[http://www-128.ibm.com/developerworks/linux/library/l-knockage.html?ca=dgr-lnxw02aKnockBasedCommands KnockBasedCommands] - Execute commands by tapping your laptop.&lt;br /&gt;
*[http://people.ksp.sk/~mic/?menu=32&amp;amp;file=rotate.py rotate.py] - rotate desktop by turning your laptop&lt;br /&gt;
&lt;br /&gt;
=== Interesting links related to this project ===&lt;br /&gt;
* [https://lists.sourceforge.net/lists/listinfo/hdaps-devel HDAPS mailinglist and its archive]&lt;br /&gt;
* #hdaps channel on irc.freenode.org&lt;br /&gt;
* [https://sourceforge.net/projects/hdaps/ hdaps projects] overview of userspace programs using hdaps&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=TPAD-HDFIRM IBM ThinkPads hardware drive firmware site]&lt;br /&gt;
* [http://www.paul.sladen.org/thinkpad-r31/accelerometer.html http://www.paul.sladen.org/thinkpad-r31/accelerometer/]&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=119845 Gentoo ebuild for hdaps driver and daemon including a initscript*&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137345 Gentoo ebuild for gkhdaps gkrell plugin&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137350 Gentoo ebuild for hdaps-gl application&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137351 Gentoo ebuild for gnome hdapsgl-applet&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137352 Gentoo ebuild for gnome tilt application&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=137353 Gentoo ebuild for wmhdaps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:R50]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[Category:R60]] [[Category:T41]] [[Category:T41p]] [[Category:T42]] [[Category:T42p]] [[Category:T43]] [[Category:T43p]] [[Category:T60]] [[Category:T60p]] [[Category:T61]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:X60]] [[Category:X60s]] [[Category:Z60m]] [[Category:Z60t]] [[Category:Drivers]] [[Category:Z61m]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Intel_82801H&amp;diff=31627</id>
		<title>Intel 82801H</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Intel_82801H&amp;diff=31627"/>
		<updated>2007-07-28T09:03:35Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Intel 82801GHM ===&lt;br /&gt;
This is a Intel ICH8 I/O Controller Hub&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* SATA-300&lt;br /&gt;
* ATA-133 IDE&lt;br /&gt;
* PCI Express x1&lt;br /&gt;
* PCI bus 2.3 32-bit, 33MHz&lt;br /&gt;
* Ethernet MAC&lt;br /&gt;
* USB 2.0&lt;br /&gt;
&lt;br /&gt;
=== Linux support ===&lt;br /&gt;
This chipset is supported for the most part by recent 2.4 and 2.6 kernels.&lt;br /&gt;
&lt;br /&gt;
SATA support however still has issues. See [[Problems with SATA and Linux]]&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* [http://www.intel.com/design/chipsets/datashts/313056.htm Intel ICH8 Family Datasheet]&lt;br /&gt;
&lt;br /&gt;
=== ThinkPads this chip may be found in ===&lt;br /&gt;
* {{X61s}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Components]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problem_with_non-ThinkPad_hard_disks&amp;diff=31575</id>
		<title>Problem with non-ThinkPad hard disks</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problem_with_non-ThinkPad_hard_disks&amp;diff=31575"/>
		<updated>2007-07-27T16:21:34Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Drives that work out of the box */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Description==&lt;br /&gt;
&lt;br /&gt;
When replacing the system disk with one that is not a ThinkPad option designed for the specific model, the BIOS will display an &amp;quot;Error 2010&amp;quot; warning during every boot. The system may still boot successfully, but may be unreliable or slow.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following ATA commands are implemented by ThinkPad-branded drives but are not supported by most other laptop drives:&lt;br /&gt;
* &amp;lt;tt&amp;gt;UNLOAD IMMEDIATE&amp;lt;/tt&amp;gt; (needed for the [[Active Protection System]]; see [[Problem with APS harddisk parking]])&lt;br /&gt;
* &amp;lt;tt&amp;gt;SECURITY FEATURE SET&amp;lt;/tt&amp;gt; (needed for disk password protection)&lt;br /&gt;
&lt;br /&gt;
==Affected Models==&lt;br /&gt;
The &amp;quot;Error 2010&amp;quot; issue exists only on the following models:&lt;br /&gt;
* ThinkPad {{T43}}, {{T43p}}&lt;br /&gt;
* ThinkPad {{R52}}&lt;br /&gt;
* ThinkPad {{X41}}, {{X41T}}&lt;br /&gt;
&lt;br /&gt;
Missing ATA commands affect all ThinkPad models which normally offer these features.&lt;br /&gt;
&lt;br /&gt;
==Affected Operating Systems==&lt;br /&gt;
&lt;br /&gt;
The reliability and performance issues depend on the operating system. They have been reported for Windows. It is not clear to what degree Linux is susceptible.&lt;br /&gt;
&lt;br /&gt;
==Status==&lt;br /&gt;
&lt;br /&gt;
The error is displayed when the system drive is not one of the few approved disks listed inside the BIOS, and may indicate a real problem. These systems have a SATA disk controller, and employ a SATA-to-PATA bridge in order to use PATA (IDE) drives. It is rumored that this bridge requires changes in the drive firmware, and the BIOS checks for this adapted firmware.&lt;br /&gt;
&lt;br /&gt;
Recent BIOSs provide the option to disable the need to press Esc after the message (for ThinkPad {{T43}} models 26xx, BIOS version [http://www-306.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-58597#bios 1.24 or higher]).&lt;br /&gt;
&lt;br /&gt;
There are no such issues for disks used in the UltraBay Slim 2nd Hard Drive Adapter.&lt;br /&gt;
&lt;br /&gt;
* [http://www-3.ibm.com/pc/support/site.wss/document.do?&amp;amp;lndocid=MIGR-60169 IBM problem discussion]&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
&lt;br /&gt;
===Disable the message===&lt;br /&gt;
&lt;br /&gt;
A recent BIOS for your machine may provide the option to disable need to press Esc after the message (under &amp;lt;tt&amp;gt;Startup -&amp;gt; Boot after message for Hard drive...&amp;lt;/tt&amp;gt;). However, the delay and beeps are still enforced. Note that the error message could indicate a real problem, which will not be resolved by disabling the message.&lt;br /&gt;
&lt;br /&gt;
===Use dedicated ThinkPad option parts===&lt;br /&gt;
&lt;br /&gt;
Use a ThinkPad-branded option drive listed as designed for your specific ThinkPad Model.&lt;br /&gt;
&lt;br /&gt;
===Upgrade the drive firmware===&lt;br /&gt;
&lt;br /&gt;
IBM provides firmware upgrades ([http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-41008 old], [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-62282 new]) for some of its option drives to make them compatible with the affected ThinkPad models. The upgrades are available only for certain drive models, and may work only when the drive is sold as an IBM options (see below). Most drives do not have such upgrades, and some manufacturers have refused to adapt their firmware to the limitations of ThinkPad systems.&lt;br /&gt;
&lt;br /&gt;
====Drives that work out of the box====&lt;br /&gt;
* Seagate ST9120821A (120GB 5400RPM)&lt;br /&gt;
* Seagate Momentus 7200.1 ST980825A (80GB 7200RPM) on T43 with BIOS 1.23&lt;br /&gt;
* Seagate Momentus 7200.1 ST910021A (100GB 7200RPM) (one user reports [http://stderr.org/pipermail/thinkpad/2006-May/021869.html success], another reports [[Talk:Problem with non-ThinkPad hard disks#Seagate_Momentus_7200.1|failure]]; see [http://forum.thinkpads.com/viewtopic.php?p=195619#195619 here] too).&lt;br /&gt;
* Fujitsu MHV2060AH (060GB 5400RPM)&lt;br /&gt;
* Fujitsu MHV2100AH (100GB 5400RPM) on T43 with BIOS 1.23&lt;br /&gt;
* Fujitsu MHV2120AH (120GB 5400RPM) on T43 with BIOS 1.27 and R52 with BIOS 1.29&lt;br /&gt;
&lt;br /&gt;
The Fujitsu MHV2060AH/MHV2100AH/MHV2120AH drives also support the UNLOAD IMMEDIATE feature needed for [[HDAPS]], according to their published specifications. No other non-ThinkPad PATA laptop drives are known to support UNLOAD IMMEDIATE.&lt;br /&gt;
&lt;br /&gt;
{{WARN|Even drives with identical part numbers may carry firmware with different compatibility status, so do not blindly rely on this list.}}&lt;br /&gt;
&lt;br /&gt;
====Drives that will work after a firmware update====&lt;br /&gt;
Note that Windows is necessary for the firmware update, but may not boot before the firmware update is applied. Therefore a second machine or an Ultrabay HDD adapter may be required for the update.&lt;br /&gt;
&lt;br /&gt;
* Fujitsu MHT2080AH (80GB 5400RPM), using [http://www-306.ibm.com/pc/support/site.wss/license.do?filename=mobiles/fwhd3318.exe this firmware update]&lt;br /&gt;
* Hitachi 5K100 and 7K100 drives using [http://forum.thinkpads.com/viewtopic.php?t=20858 this instructions]. This has been verified and seems to work correctly on all drives if applied in the right way.&lt;br /&gt;
&lt;br /&gt;
This picture is showing two identical drives, one docked into the ultrabay (not updated) and the other one in the primary slot showing up with the IBM (&amp;quot;I&amp;quot;) and not the OEM firmware.&lt;br /&gt;
[[Image:Updated_drive.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Drives which produce an error and are not known to have working firmware====&lt;br /&gt;
* Hitachi DJSA-220&lt;br /&gt;
* Hitachi HTS726060M9AT00&lt;br /&gt;
* Seagate ST9100823A (100GB 5400RPM)&lt;br /&gt;
* Seagate Momentus 7200.1 ST910021A (100GB 7200RPM) (one user reports [http://stderr.org/pipermail/thinkpad/2006-May/021869.html success], another reports [[Talk:Problem with non-ThinkPad hard disks#Seagate_Momentus_7200.1|failure]]).&lt;br /&gt;
* Seagate Momentus 5400.3 ST9160821A (160GB 5400RPM) &lt;br /&gt;
* Samsung HM160JC (5400RPM 160GB M80)&lt;br /&gt;
&lt;br /&gt;
The following drives have firmware updates, but the firmware update software has been reported to refuse updates for no obvious reason:&lt;br /&gt;
&lt;br /&gt;
* Hitachi HTS548080M9AT00 (80GB 5400RPM)&lt;br /&gt;
* Hitachi HTS541080G9AT00&lt;br /&gt;
* Toshiba MK4019GAX (40GB 5400RPM)&lt;br /&gt;
* Toshiba MK1032GAX (100GB 5400RPM) &lt;br /&gt;
&lt;br /&gt;
It has been [http://forum.thinkpads.com/viewtopic.php?p=101863#101863 reported] that for Hitachi drives, firmware update is possible only with drives manufactured for IBM. Other Hitachi drives may use PROM instead of EPROM for the firmware and thus cannot be updated.&lt;br /&gt;
&lt;br /&gt;
===Use an Ultrabay adapter===&lt;br /&gt;
&lt;br /&gt;
You can use most PATA drives through an [[UltraBay Slim HDD Adapter]] (or the equivalent for your system or docking station). This can be a convenient configuration to use the second HD as a data drive. Another useful configuration is having the second drive bootable to a different OS, since it insulates you from many, though not necessarily all dual boot problems related to multiple OSs on the same physical volume.  Most modern BIOS provides a boot manager function ahead of any OS load, so the &amp;quot;alternate&amp;quot; OS need not even know that another OS is present.  In the case of the T43, installing the second OS onto a drive in the 2nd HDD Adapter is problematic since that bay is where the CDROM/DVDROM normally sits, so some extraordinary procedure is needed. This might be from a bootable USB-connected CDROM/DVDROM or a network source if your OS supports it; it may also be possible to mount the CDROM/DVDROM in a dock and do the install from there. Be careful of OS installations or disk management functions that attempt to write identification information to the disk that isn't theirs.&lt;br /&gt;
&lt;br /&gt;
===BIOS downgrade===&lt;br /&gt;
&lt;br /&gt;
''Tell IT systems'' is claiming that a BIOS downgrade to v1.01 will solve the problem, and provide [http://www.tell-it.ch/harddisk.php instructions] (which, incidentally, copy portions of this page in violation of copyright). The instructions are specific to certain ThinkPad {{R52}} and T43-1xxx models. A  similar report is made [http://forum.thinkpads.com/viewtopic.php?t=13113#112153 here]. '''This procedure is not recommended'''. It requires downgrading to an ancient BIOS version, which may have adverse effects. Also, while the old BIOS version may not include the code to generate the warning, the underlying problem will probably still exist. See the [[Talk:Problem_with_non-ThinkPad_hard_disks#Downgrade_the_BIOS_to_v1.01|discussion page]].&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
* Discussion about [http://forum.thinkpads.com/viewtopic.php?t=11059 Problems with non-thinkpad option drives on T43 thinkpads] at thinkpads.com.&lt;br /&gt;
&lt;br /&gt;
* Guide on [http://forum.thinkpads.com/viewtopic.php?t=20858 flashing a retail HD to IBM official FW] at thinkpads.com.  ''Follow this guide at your own risk although some people have reported that it works''.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Fglrx&amp;diff=31408</id>
		<title>Fglrx</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Fglrx&amp;diff=31408"/>
		<updated>2007-07-21T06:12:37Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Status */ workaround for &amp;quot;AMD Testing use only&amp;quot; logo&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;
== ATI fglrx driver ==&lt;br /&gt;
This is a proprietary Linux binary-only driver for ATI graphic chips with support for 3D acceleration.&lt;br /&gt;
&lt;br /&gt;
Also see [[R300|opensource driver]] with 3D support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Availability / Project Homepage==&lt;br /&gt;
Home page: http://ati.amd.com/support/drivers/linux/linux-radeon.html&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
The ATI drivers have explicit permission for repackaging and redistribution of the Linux drivers.  Many distributions are supported within the installer, and many more repackaged by external developers.  Please visit the  [http://wiki.cchtml.com/index.php/Category:Distributions Distribution Page at the Unofficial ATI driver Wiki]&lt;br /&gt;
&lt;br /&gt;
*{{Debian}} packages: http://www.stanchina.net/~flavio/debian-official/fglrx-driver.html&lt;br /&gt;
** These packages have been added to Debian unstable as &amp;lt;tt&amp;gt;fglrx-driver&amp;lt;/tt&amp;gt;, so you can now apt-get them and use module-assistant to install.&lt;br /&gt;
** If you are on stable sarge with backport's kernel 2.6.15, download ATI's installer, let it build Debian packages and proceed as usual. There's a [http://jroller.com/page/erAck?entry=lot_day_6_2_fglrx detailed description] available.&lt;br /&gt;
*{{SUSE}} packages: http://www.suse.de/~sndirsch/ati-installer-HOWTO.html&lt;br /&gt;
*{{Gentoo}} {{cmdroot|emerge ati-drivers}}&lt;br /&gt;
*{{Fedora}} 4 packages: http://rpm.livna.org&lt;br /&gt;
** For stock Fedora kernels: {{cmdroot|yum install kernel-module-fglrx-$(uname -r) ati-fglrx }}&lt;br /&gt;
** For custom-compiled kernels: see [[How to build custom packages for fglrx]]&lt;br /&gt;
*{{Fedora}} 5 packages: http://rpm.livna.org&lt;br /&gt;
** For stock Fedora kernels: {{cmdroot|yum install xorg-x11-drv-fglrx}}&lt;br /&gt;
** For custom-compiled kernels: see [[How to build custom packages for fglrx]]&lt;br /&gt;
*{{Fedora}} 7 packages: http://rpm.livna.org&lt;br /&gt;
** Unfortunately, as of 15 June, the fglrx driver does not work with Fedora 7, as it cannot handle the xorg version there.  A new driver is expected sometime fairly soon.&lt;br /&gt;
*{{Arch Linux}}&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx}} (kernel module for 2.6.15-ARCH)&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx-archck}} (kernel module for 2.6.15-archck)&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx-utils}} (xorg7 stuff and tools)&lt;br /&gt;
*{{Ubuntu}}&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Dapper_Installation_Guide Dapper Drake Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Breezy_Installation_Guide Breezy Badger Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Edgy_Installation_Guide Edgy Eft Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Feisty_Installation_Guide Feisty Fawn Howto]&lt;br /&gt;
&lt;br /&gt;
== Building for Xorg 7.0==&lt;br /&gt;
To compile fglrx versions &amp;lt;= 8.24.8 for Xorg 7.0.0, fake Xorg 6.9.0 by &lt;br /&gt;
:{{cmdroot|1=export X_VERSION=x690; sh ati-driver-installer-8.24.8-x86.run}}&lt;br /&gt;
Next, move the various resulting libraries and modules from /usr/X11R6 to /usr/lib/xorg&lt;br /&gt;
&lt;br /&gt;
In {{path|/usr/src/ATI}} additional sources are installed for fireglcontrol and fgl_glxgears&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Current version: 8.39.4 ( 19th July 2007).&lt;br /&gt;
Major changes:&lt;br /&gt;
* 8.39.4: kernel 2.6.22 support, TexturedVideo fix, aticonfig segfault fix (see 8.38.7 hotfix), to get rid of the &amp;quot;AMD Testing use only&amp;quot; logo, use [http://www.phoronix.com/forums/showpost.php?p=10641&amp;amp;postcount=44 this] workaround.&lt;br /&gt;
* 8.38.7: hotfix release for &amp;quot;Using aticonfig --initial segfaults destroying xorg.conf file when run in X with Vesa driver.&amp;quot;, search for &amp;quot;737-28261&amp;quot; on the ATI website.&lt;br /&gt;
* 8.38.6: RedHat Enterprise Linux 5 support, Xserver crashes on moving video window between two monitors fixed, corruption when playing multiple vodeps with textured video fixed&lt;br /&gt;
* 8.37.6: Xorg Server 1.3 support, CCC 1.0, crash when logging off from X fixed, Xv cropping bug fixed&lt;br /&gt;
* 8.36.5: Kernel 2.6.20 support, CCC Beta 0.9 with localization&lt;br /&gt;
* 8.35.5: Beta AMD Catalyst Control Center, X-Server termination from console does not result in a blank screen. Kernel 2.6.20 requires some patching (see [[Problems_with_fglrx#fglrx_8.35.5|fglrx patches section]]).&lt;br /&gt;
* 8.34.8: Radeon Xpress 1250 support, X-Video on x86_64 fix, hibernation mode fix. Kernel 2.6.20 requires some patching (see [[Problems_with_fglrx#fglrx_8.34.8|fglrx patches section]]).&lt;br /&gt;
* 8.33.6: X.Org 7.2 support, kernel 2.6.19 support, some fixes in the installer, 2 more bugfixes. Resume from suspend works if you make sure you have set &amp;quot;VbetoolPost no&amp;quot; and &amp;quot;EnableVbetool no&amp;quot; in your suspend to ram hibernate conf (/etc/hibernate/ram.conf on ubuntu/debian).&lt;br /&gt;
* 8.32.5: support for X1650, X.Org 7.2 RC2 support, bugfixes. Suspend-to-ram is broken with specific cards, *no* 2.6.19 support (see [[Problems_with_fglrx#fglrx_8.32.5|fglrx patches section]]).&lt;br /&gt;
* 8.31.5: no new features, only bugfixes.  Of note, for some users, this version breaks suspend-to-ram and suspend-to-disk.&lt;br /&gt;
* 8.30.3: no new features, only bugfixes&lt;br /&gt;
* 8.29.6: Linux 2.6.18 support, dropped support for Radeon 8500/9000/9100/9200/9250 (both, mobile and normal versions)&lt;br /&gt;
* 8.28.8: Display Switching Support for ThinkPads, ATI Pairmode support, Retaining display device state between restarts, Support for Radeon Xpress 1200, 1250, and 1300&lt;br /&gt;
* 8.27.10: X.org 7.1 support, Fedora Core package support&lt;br /&gt;
* 8.26.18: support for dynamically attached DFPs and Thermal Event Power Management (both via daemon), minor bug fixes&lt;br /&gt;
* 8.25.18: Xorg 7.0 support, FireGLâ„¢V5xxx/V7xxx support, Dynamic Display Management, fixed a lot of critical bugs.&lt;br /&gt;
* 8.24.8: support for X1300, X1400, X1600, X1800 (generic and mobility) and 3D accelerated video playback on Avivo&lt;br /&gt;
* 8.23.7: support for X850 and X800, OpenGL 2.0 Enhancement, FSAA for some chips&lt;br /&gt;
* 8.22.5: added kernel 2.6.15 support -- patch no longer required&lt;br /&gt;
* 8.21.7: initial OpenGL 2.0 support&lt;br /&gt;
* 8.20.8: fixed resume issues, fixed compile problems with kernels 2.6.13 and 2.6.14&lt;br /&gt;
* 8.19.10: has added suspend / resume and dynamic GPU power management support.  Using vbetool no longer required.&lt;br /&gt;
&lt;br /&gt;
== Known problems and solutions ==&lt;br /&gt;
See [[Problems with fglrx]].&lt;br /&gt;
== User experience ==&lt;br /&gt;
=== Speed ===&lt;br /&gt;
How much is the speed gain versus the opensource drivers?&lt;br /&gt;
&lt;br /&gt;
Compared to the old drivers, approximately 40% speed gain have been noticed with fglrx. However, there are issues with freezing/garbage after suspend, garbage when resizing desktop (via {{key|ctrl}}{{key|alt}}{{key|plus}}, {{key|ctrl}}{{key|alt}}{{key|minus}}), and garbage while using VMware. The current 8.14.13 has shown 400% improvement over using the open source radeon driver: 1200 FPS for glxgears{{footnote|1}}!&lt;br /&gt;
However the situation seems to be changing today. With recent x11-drm-20060608 driver (gentoo) and thinkpad t42 (ati 9600) the speed is confirmed as 1900fps without any single crash so far.&lt;br /&gt;
&lt;br /&gt;
=== 3D acceleration ===&lt;br /&gt;
&lt;br /&gt;
According to [http://xoomer.alice.it/flavio.stanchina/debian/fglrx-installer.html#configure Flavio's page] you need these options:&lt;br /&gt;
&lt;br /&gt;
  Section &amp;quot;Module&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
    Load &amp;quot;GLcore&amp;quot;&lt;br /&gt;
    Load &amp;quot;glx&amp;quot;&lt;br /&gt;
    Load &amp;quot;dri&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
  # Of course you need to activate the driver&lt;br /&gt;
  Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
    Driver     &amp;quot;fglrx&amp;quot;&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
Don't forget to load the module &amp;lt;tt&amp;gt;fglrx&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;modprobe fglrx&amp;lt;/tt&amp;gt;).  Under Debian the module can be placed in &amp;lt;tt&amp;gt;/etc/modules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With current fglrx drivers (as of 8.29.6) you must disable composite to get 3D DRI acceleration. To do this, add an extra Extensions section (if necessary) containing:&lt;br /&gt;
&lt;br /&gt;
  Section &amp;quot;Extensions&amp;quot;&lt;br /&gt;
     Option  &amp;quot;Composite&amp;quot; &amp;quot;Disable&amp;quot;  #make DRI work with fglrx.&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
If you are unsure whether you have DRI running, issue &amp;lt;tt&amp;gt;glxinfo | grep -i direct&amp;lt;/tt&amp;gt; after disabling composite.  Note, this &lt;br /&gt;
&lt;br /&gt;
{{NOTE|1=Video overlay acceleration may be disabled when 3D acceleration is enabled. The following comment from the xorg.conf file bundled with the fglrx driver indicates that:&lt;br /&gt;
   # === OpenGL Overlay ===&lt;br /&gt;
   # Note: When OpenGL Overlay is enabled, Video Overlay&lt;br /&gt;
   #       will be disabled automatically&lt;br /&gt;
       Option &amp;quot;OpenGLOverlay&amp;quot;              &amp;quot;1&amp;quot;&lt;br /&gt;
However, you can use either regular Xv video overlay or make the video an opengl texture and let the OpenGL engine scale your video.  This has nothing to do with the acceleration of 2D drawing primitives.  Further, your mileage on performance may vary depending on what card you have.  The open source drivers don't support newer cards, while the ATI drivers don't support older cards.&lt;br /&gt;
&lt;br /&gt;
You may be able to preserve VideoOverlay acceleration if you explicitly remove the OpenGLOverlay using:&lt;br /&gt;
&lt;br /&gt;
Option &amp;quot;VideoOverlay&amp;quot;  &amp;quot;True&amp;quot; and Option &amp;quot;OpenGLOverlay&amp;quot; &amp;quot;False&amp;quot;.  See [http://xoomer.alice.it/flavio.stanchina/debian/fglrx-installer.html#configure Flavio's page] for detail.}}&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
Power saving is much better than with the &amp;lt;tt&amp;gt;radeon&amp;lt;/tt&amp;gt; driver, but doesn't work in dual-screen configuration (see [[How to make use of Graphics Chips Power Management features]]).&lt;br /&gt;
&lt;br /&gt;
=== Suspending with fglrx ===&lt;br /&gt;
&lt;br /&gt;
On a ThinkPad T42 with Kernel 2.6.19 with Software Suspend 2 and R60 with Kernel 2.6.18-suspend2-r1 (Gentoo) , the following addition to &amp;lt;tt&amp;gt;/etc/hibernate/suspend2.conf&amp;lt;/tt&amp;gt; is required:&lt;br /&gt;
&lt;br /&gt;
  # For fglrx&lt;br /&gt;
  ProcSetting extra_pages_allowance 20000&lt;br /&gt;
&lt;br /&gt;
=== Display Switching (Dynamic Display Management) ===&lt;br /&gt;
&lt;br /&gt;
Version 8.25.18 introduces a new feature: Dynamic Display Management. It allows display switching on-the-fly.&lt;br /&gt;
&lt;br /&gt;
To list all connected and enabled monitors:&lt;br /&gt;
:{{cmdroot|1=aticonfig --query-monitor}}&lt;br /&gt;
&lt;br /&gt;
To switch displays:&lt;br /&gt;
:{{cmdroot|1=aticonfig --enable-monitor=STRING,STRING}}, where STRING can be: none, lvds, crt1, crt2, tv, tdms1, tdms2&lt;br /&gt;
&lt;br /&gt;
Only 2 displays can be enabled at the same time. Any displays that are not on the list will be disabled.&lt;br /&gt;
&lt;br /&gt;
== Useful links == &lt;br /&gt;
* [http://www.ati.com/products/catalyst/linux.html ATI Linux Driver FAQ]&lt;br /&gt;
* [http://www.rage3d.com/content/articles/atilinuxhowto/ ATI Radeon Linux How-To]&lt;br /&gt;
* [http://www.rage3d.com/board/forumdisplay.php?f=61&amp;amp;daysprune=30&amp;amp;order=asc&amp;amp;sort=title Rage3D Linux Discussion Forum]&lt;br /&gt;
* [http://www.driverheaven.net/forumdisplay.php?f=103 Radeon Driver Forum at Driverheaven]&lt;br /&gt;
* [http://odin.prohosting.com/wedge01/gentoo-radeon-faq.html Gentoo ATI Radeon FAQ]&lt;br /&gt;
* [http://forums.gentoo.org/viewtopic-t-374745-highlight-t42+ati+dri.html Gentoo T42 ATI. DRI + xorg driver]&lt;br /&gt;
* [http://ati.cchtml.com/ Unofficial community ATI bugzilla] - tracks bugs in the driver. Might be monitored by ATI ([http://www.rage3d.com/board/showpost.php?p=1333438751&amp;amp;postcount=386], [http://www.rage3d.com/board/showpost.php?p=1333439009&amp;amp;postcount=390]).&lt;br /&gt;
&lt;br /&gt;
== ThinkPads that may be supported ==&lt;br /&gt;
Supported chips, as found in select IBM ThinkPads:&lt;br /&gt;
{{NOTE|fglrx version 8.29.6 discontinued support for Radeon 9200 and earlier.}}&lt;br /&gt;
* [[ATI Mobility FireGL 9000]]&lt;br /&gt;
** {{T40p}}&lt;br /&gt;
* [[ATI Mobility FireGL T2]]&lt;br /&gt;
** {{R50p}}&lt;br /&gt;
** {{T41p}}, {{T42p}}&lt;br /&gt;
* [[ATI Mobility FireGL V3200]]&lt;br /&gt;
** {{T43p}}&lt;br /&gt;
* [[ATI Mobility Radeon 9000]]&lt;br /&gt;
** {{R50}}, {{R51}}&lt;br /&gt;
** {{T40}}, {{T41}}, {{T42}}&lt;br /&gt;
* [[ATI Mobility Radeon 9600]]&lt;br /&gt;
** {{T42}}&lt;br /&gt;
* [[ATI Mobility Radeon X300]]&lt;br /&gt;
** {{R52}}&lt;br /&gt;
** {{T43}}&lt;br /&gt;
** {{Z60m}}&lt;br /&gt;
* [[ATI Mobility Radeon Xpress 200M]]&lt;br /&gt;
** {{R51e}}&lt;br /&gt;
* [[ATI Mobility Radeon X600]]&lt;br /&gt;
** {{Z60m}}&lt;br /&gt;
* [[ATI Mobility Radeon X1400]]&lt;br /&gt;
** {{T60}}, {{R60}}, {{Z61m}}&lt;br /&gt;
* [[ATI Mobility FireGL V5200]]&lt;br /&gt;
** {{T60p}}, {{Z61p}}&lt;br /&gt;
&lt;br /&gt;
== ThinkPads that are NOT supported by fglrx==&lt;br /&gt;
Unsupported chips, as found in select IBM ThinkPads:&lt;br /&gt;
* [[ATI Mobility Radeon 7500]]&lt;br /&gt;
** {{R40}}&lt;br /&gt;
** {{T30}}&lt;br /&gt;
** {{T42}}&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#Note that glxgears isn't a benchmark tool, it's so simple that its FPS values is without any meaning... you can only compare glxgears using the same drivers/machine, if you change any of then you can have higher/lower values and in real life programs/games happen to have the opposite effects. Think in terms of a car engines rpms: higher rpms in the same car usually means a faster car, change anything and it's meaningless, ie: gears, truck, wheel size, etc. make it useless.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Template:Industry_News&amp;diff=31385</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=31385"/>
		<updated>2007-07-19T19:30:32Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: fglrx 8.39.4 released&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;19. 7. 2007: New [[fglrx]] driver version 8.39.4 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.39.4.html released].&lt;br /&gt;
&lt;br /&gt;
26. 6. 2007: New [[fglrx]] driver version 8.38.6 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.38.6.html released].&lt;br /&gt;
&lt;br /&gt;
31. 5. 2007: New [[fglrx]] driver version 8.37.6 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.37.6.html released].&lt;br /&gt;
&lt;br /&gt;
18. 4. 2007: New [[fglrx]] driver version 8.36.5 [https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.36.5.html released].  Now supports 2.6.20 series kernels.&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Fglrx&amp;diff=31384</id>
		<title>Fglrx</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Fglrx&amp;diff=31384"/>
		<updated>2007-07-19T19:28:56Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Status */ 8.39.4 released&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;
== ATI fglrx driver ==&lt;br /&gt;
This is a proprietary Linux binary-only driver for ATI graphic chips with support for 3D acceleration.&lt;br /&gt;
&lt;br /&gt;
Also see [[R300|opensource driver]] with 3D support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Availability / Project Homepage==&lt;br /&gt;
Home page: http://ati.amd.com/support/drivers/linux/linux-radeon.html&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
The ATI drivers have explicit permission for repackaging and redistribution of the Linux drivers.  Many distributions are supported within the installer, and many more repackaged by external developers.  Please visit the  [http://wiki.cchtml.com/index.php/Category:Distributions Distribution Page at the Unofficial ATI driver Wiki]&lt;br /&gt;
&lt;br /&gt;
*{{Debian}} packages: http://www.stanchina.net/~flavio/debian-official/fglrx-driver.html&lt;br /&gt;
** These packages have been added to Debian unstable as &amp;lt;tt&amp;gt;fglrx-driver&amp;lt;/tt&amp;gt;, so you can now apt-get them and use module-assistant to install.&lt;br /&gt;
** If you are on stable sarge with backport's kernel 2.6.15, download ATI's installer, let it build Debian packages and proceed as usual. There's a [http://jroller.com/page/erAck?entry=lot_day_6_2_fglrx detailed description] available.&lt;br /&gt;
*{{SUSE}} packages: http://www.suse.de/~sndirsch/ati-installer-HOWTO.html&lt;br /&gt;
*{{Gentoo}} {{cmdroot|emerge ati-drivers}}&lt;br /&gt;
*{{Fedora}} 4 packages: http://rpm.livna.org&lt;br /&gt;
** For stock Fedora kernels: {{cmdroot|yum install kernel-module-fglrx-$(uname -r) ati-fglrx }}&lt;br /&gt;
** For custom-compiled kernels: see [[How to build custom packages for fglrx]]&lt;br /&gt;
*{{Fedora}} 5 packages: http://rpm.livna.org&lt;br /&gt;
** For stock Fedora kernels: {{cmdroot|yum install xorg-x11-drv-fglrx}}&lt;br /&gt;
** For custom-compiled kernels: see [[How to build custom packages for fglrx]]&lt;br /&gt;
*{{Fedora}} 7 packages: http://rpm.livna.org&lt;br /&gt;
** Unfortunately, as of 15 June, the fglrx driver does not work with Fedora 7, as it cannot handle the xorg version there.  A new driver is expected sometime fairly soon.&lt;br /&gt;
*{{Arch Linux}}&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx}} (kernel module for 2.6.15-ARCH)&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx-archck}} (kernel module for 2.6.15-archck)&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx-utils}} (xorg7 stuff and tools)&lt;br /&gt;
*{{Ubuntu}}&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Dapper_Installation_Guide Dapper Drake Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Breezy_Installation_Guide Breezy Badger Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Edgy_Installation_Guide Edgy Eft Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Feisty_Installation_Guide Feisty Fawn Howto]&lt;br /&gt;
&lt;br /&gt;
== Building for Xorg 7.0==&lt;br /&gt;
To compile fglrx versions &amp;lt;= 8.24.8 for Xorg 7.0.0, fake Xorg 6.9.0 by &lt;br /&gt;
:{{cmdroot|1=export X_VERSION=x690; sh ati-driver-installer-8.24.8-x86.run}}&lt;br /&gt;
Next, move the various resulting libraries and modules from /usr/X11R6 to /usr/lib/xorg&lt;br /&gt;
&lt;br /&gt;
In {{path|/usr/src/ATI}} additional sources are installed for fireglcontrol and fgl_glxgears&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Current version: 8.39.4 ( 19th July 2007).&lt;br /&gt;
Major changes:&lt;br /&gt;
* 8.39.4: kernel 2.6.22 support, TexturedVideo fix, aticonfig segfault fix (see 8.38.7 hotfix)&lt;br /&gt;
* 8.38.7: hotfix release for &amp;quot;Using aticonfig --initial segfaults destroying xorg.conf file when run in X with Vesa driver.&amp;quot;, search for &amp;quot;737-28261&amp;quot; on the ATI website.&lt;br /&gt;
* 8.38.6: RedHat Enterprise Linux 5 support, Xserver crashes on moving video window between two monitors fixed, corruption when playing multiple vodeps with textured video fixed&lt;br /&gt;
* 8.37.6: Xorg Server 1.3 support, CCC 1.0, crash when logging off from X fixed, Xv cropping bug fixed&lt;br /&gt;
* 8.36.5: Kernel 2.6.20 support, CCC Beta 0.9 with localization&lt;br /&gt;
* 8.35.5: Beta AMD Catalyst Control Center, X-Server termination from console does not result in a blank screen. Kernel 2.6.20 requires some patching (see [[Problems_with_fglrx#fglrx_8.35.5|fglrx patches section]]).&lt;br /&gt;
* 8.34.8: Radeon Xpress 1250 support, X-Video on x86_64 fix, hibernation mode fix. Kernel 2.6.20 requires some patching (see [[Problems_with_fglrx#fglrx_8.34.8|fglrx patches section]]).&lt;br /&gt;
* 8.33.6: X.Org 7.2 support, kernel 2.6.19 support, some fixes in the installer, 2 more bugfixes. Resume from suspend works if you make sure you have set &amp;quot;VbetoolPost no&amp;quot; and &amp;quot;EnableVbetool no&amp;quot; in your suspend to ram hibernate conf (/etc/hibernate/ram.conf on ubuntu/debian).&lt;br /&gt;
* 8.32.5: support for X1650, X.Org 7.2 RC2 support, bugfixes. Suspend-to-ram is broken with specific cards, *no* 2.6.19 support (see [[Problems_with_fglrx#fglrx_8.32.5|fglrx patches section]]).&lt;br /&gt;
* 8.31.5: no new features, only bugfixes.  Of note, for some users, this version breaks suspend-to-ram and suspend-to-disk.&lt;br /&gt;
* 8.30.3: no new features, only bugfixes&lt;br /&gt;
* 8.29.6: Linux 2.6.18 support, dropped support for Radeon 8500/9000/9100/9200/9250 (both, mobile and normal versions)&lt;br /&gt;
* 8.28.8: Display Switching Support for ThinkPads, ATI Pairmode support, Retaining display device state between restarts, Support for Radeon Xpress 1200, 1250, and 1300&lt;br /&gt;
* 8.27.10: X.org 7.1 support, Fedora Core package support&lt;br /&gt;
* 8.26.18: support for dynamically attached DFPs and Thermal Event Power Management (both via daemon), minor bug fixes&lt;br /&gt;
* 8.25.18: Xorg 7.0 support, FireGLâ„¢V5xxx/V7xxx support, Dynamic Display Management, fixed a lot of critical bugs.&lt;br /&gt;
* 8.24.8: support for X1300, X1400, X1600, X1800 (generic and mobility) and 3D accelerated video playback on Avivo&lt;br /&gt;
* 8.23.7: support for X850 and X800, OpenGL 2.0 Enhancement, FSAA for some chips&lt;br /&gt;
* 8.22.5: added kernel 2.6.15 support -- patch no longer required&lt;br /&gt;
* 8.21.7: initial OpenGL 2.0 support&lt;br /&gt;
* 8.20.8: fixed resume issues, fixed compile problems with kernels 2.6.13 and 2.6.14&lt;br /&gt;
* 8.19.10: has added suspend / resume and dynamic GPU power management support.  Using vbetool no longer required.&lt;br /&gt;
&lt;br /&gt;
== Known problems and solutions ==&lt;br /&gt;
See [[Problems with fglrx]].&lt;br /&gt;
== User experience ==&lt;br /&gt;
=== Speed ===&lt;br /&gt;
How much is the speed gain versus the opensource drivers?&lt;br /&gt;
&lt;br /&gt;
Compared to the old drivers, approximately 40% speed gain have been noticed with fglrx. However, there are issues with freezing/garbage after suspend, garbage when resizing desktop (via {{key|ctrl}}{{key|alt}}{{key|plus}}, {{key|ctrl}}{{key|alt}}{{key|minus}}), and garbage while using VMware. The current 8.14.13 has shown 400% improvement over using the open source radeon driver: 1200 FPS for glxgears{{footnote|1}}!&lt;br /&gt;
However the situation seems to be changing today. With recent x11-drm-20060608 driver (gentoo) and thinkpad t42 (ati 9600) the speed is confirmed as 1900fps without any single crash so far.&lt;br /&gt;
&lt;br /&gt;
=== 3D acceleration ===&lt;br /&gt;
&lt;br /&gt;
According to [http://xoomer.alice.it/flavio.stanchina/debian/fglrx-installer.html#configure Flavio's page] you need these options:&lt;br /&gt;
&lt;br /&gt;
  Section &amp;quot;Module&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
    Load &amp;quot;GLcore&amp;quot;&lt;br /&gt;
    Load &amp;quot;glx&amp;quot;&lt;br /&gt;
    Load &amp;quot;dri&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
  # Of course you need to activate the driver&lt;br /&gt;
  Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
    Driver     &amp;quot;fglrx&amp;quot;&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
Don't forget to load the module &amp;lt;tt&amp;gt;fglrx&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;modprobe fglrx&amp;lt;/tt&amp;gt;).  Under Debian the module can be placed in &amp;lt;tt&amp;gt;/etc/modules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With current fglrx drivers (as of 8.29.6) you must disable composite to get 3D DRI acceleration. To do this, add an extra Extensions section (if necessary) containing:&lt;br /&gt;
&lt;br /&gt;
  Section &amp;quot;Extensions&amp;quot;&lt;br /&gt;
     Option  &amp;quot;Composite&amp;quot; &amp;quot;Disable&amp;quot;  #make DRI work with fglrx.&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
If you are unsure whether you have DRI running, issue &amp;lt;tt&amp;gt;glxinfo | grep -i direct&amp;lt;/tt&amp;gt; after disabling composite.  Note, this &lt;br /&gt;
&lt;br /&gt;
{{NOTE|1=Video overlay acceleration may be disabled when 3D acceleration is enabled. The following comment from the xorg.conf file bundled with the fglrx driver indicates that:&lt;br /&gt;
   # === OpenGL Overlay ===&lt;br /&gt;
   # Note: When OpenGL Overlay is enabled, Video Overlay&lt;br /&gt;
   #       will be disabled automatically&lt;br /&gt;
       Option &amp;quot;OpenGLOverlay&amp;quot;              &amp;quot;1&amp;quot;&lt;br /&gt;
However, you can use either regular Xv video overlay or make the video an opengl texture and let the OpenGL engine scale your video.  This has nothing to do with the acceleration of 2D drawing primitives.  Further, your mileage on performance may vary depending on what card you have.  The open source drivers don't support newer cards, while the ATI drivers don't support older cards.&lt;br /&gt;
&lt;br /&gt;
You may be able to preserve VideoOverlay acceleration if you explicitly remove the OpenGLOverlay using:&lt;br /&gt;
&lt;br /&gt;
Option &amp;quot;VideoOverlay&amp;quot;  &amp;quot;True&amp;quot; and Option &amp;quot;OpenGLOverlay&amp;quot; &amp;quot;False&amp;quot;.  See [http://xoomer.alice.it/flavio.stanchina/debian/fglrx-installer.html#configure Flavio's page] for detail.}}&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
Power saving is much better than with the &amp;lt;tt&amp;gt;radeon&amp;lt;/tt&amp;gt; driver, but doesn't work in dual-screen configuration (see [[How to make use of Graphics Chips Power Management features]]).&lt;br /&gt;
&lt;br /&gt;
=== Suspending with fglrx ===&lt;br /&gt;
&lt;br /&gt;
On a ThinkPad T42 with Kernel 2.6.19 with Software Suspend 2 and R60 with Kernel 2.6.18-suspend2-r1 (Gentoo) , the following addition to &amp;lt;tt&amp;gt;/etc/hibernate/suspend2.conf&amp;lt;/tt&amp;gt; is required:&lt;br /&gt;
&lt;br /&gt;
  # For fglrx&lt;br /&gt;
  ProcSetting extra_pages_allowance 20000&lt;br /&gt;
&lt;br /&gt;
=== Display Switching (Dynamic Display Management) ===&lt;br /&gt;
&lt;br /&gt;
Version 8.25.18 introduces a new feature: Dynamic Display Management. It allows display switching on-the-fly.&lt;br /&gt;
&lt;br /&gt;
To list all connected and enabled monitors:&lt;br /&gt;
:{{cmdroot|1=aticonfig --query-monitor}}&lt;br /&gt;
&lt;br /&gt;
To switch displays:&lt;br /&gt;
:{{cmdroot|1=aticonfig --enable-monitor=STRING,STRING}}, where STRING can be: none, lvds, crt1, crt2, tv, tdms1, tdms2&lt;br /&gt;
&lt;br /&gt;
Only 2 displays can be enabled at the same time. Any displays that are not on the list will be disabled.&lt;br /&gt;
&lt;br /&gt;
== Useful links == &lt;br /&gt;
* [http://www.ati.com/products/catalyst/linux.html ATI Linux Driver FAQ]&lt;br /&gt;
* [http://www.rage3d.com/content/articles/atilinuxhowto/ ATI Radeon Linux How-To]&lt;br /&gt;
* [http://www.rage3d.com/board/forumdisplay.php?f=61&amp;amp;daysprune=30&amp;amp;order=asc&amp;amp;sort=title Rage3D Linux Discussion Forum]&lt;br /&gt;
* [http://www.driverheaven.net/forumdisplay.php?f=103 Radeon Driver Forum at Driverheaven]&lt;br /&gt;
* [http://odin.prohosting.com/wedge01/gentoo-radeon-faq.html Gentoo ATI Radeon FAQ]&lt;br /&gt;
* [http://forums.gentoo.org/viewtopic-t-374745-highlight-t42+ati+dri.html Gentoo T42 ATI. DRI + xorg driver]&lt;br /&gt;
* [http://ati.cchtml.com/ Unofficial community ATI bugzilla] - tracks bugs in the driver. Might be monitored by ATI ([http://www.rage3d.com/board/showpost.php?p=1333438751&amp;amp;postcount=386], [http://www.rage3d.com/board/showpost.php?p=1333439009&amp;amp;postcount=390]).&lt;br /&gt;
&lt;br /&gt;
== ThinkPads that may be supported ==&lt;br /&gt;
Supported chips, as found in select IBM ThinkPads:&lt;br /&gt;
{{NOTE|fglrx version 8.29.6 discontinued support for Radeon 9200 and earlier.}}&lt;br /&gt;
* [[ATI Mobility FireGL 9000]]&lt;br /&gt;
** {{T40p}}&lt;br /&gt;
* [[ATI Mobility FireGL T2]]&lt;br /&gt;
** {{R50p}}&lt;br /&gt;
** {{T41p}}, {{T42p}}&lt;br /&gt;
* [[ATI Mobility FireGL V3200]]&lt;br /&gt;
** {{T43p}}&lt;br /&gt;
* [[ATI Mobility Radeon 9000]]&lt;br /&gt;
** {{R50}}, {{R51}}&lt;br /&gt;
** {{T40}}, {{T41}}, {{T42}}&lt;br /&gt;
* [[ATI Mobility Radeon 9600]]&lt;br /&gt;
** {{T42}}&lt;br /&gt;
* [[ATI Mobility Radeon X300]]&lt;br /&gt;
** {{R52}}&lt;br /&gt;
** {{T43}}&lt;br /&gt;
** {{Z60m}}&lt;br /&gt;
* [[ATI Mobility Radeon Xpress 200M]]&lt;br /&gt;
** {{R51e}}&lt;br /&gt;
* [[ATI Mobility Radeon X600]]&lt;br /&gt;
** {{Z60m}}&lt;br /&gt;
* [[ATI Mobility Radeon X1400]]&lt;br /&gt;
** {{T60}}, {{R60}}, {{Z61m}}&lt;br /&gt;
* [[ATI Mobility FireGL V5200]]&lt;br /&gt;
** {{T60p}}, {{Z61p}}&lt;br /&gt;
&lt;br /&gt;
== ThinkPads that are NOT supported by fglrx==&lt;br /&gt;
Unsupported chips, as found in select IBM ThinkPads:&lt;br /&gt;
* [[ATI Mobility Radeon 7500]]&lt;br /&gt;
** {{R40}}&lt;br /&gt;
** {{T30}}&lt;br /&gt;
** {{T42}}&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#Note that glxgears isn't a benchmark tool, it's so simple that its FPS values is without any meaning... you can only compare glxgears using the same drivers/machine, if you change any of then you can have higher/lower values and in real life programs/games happen to have the opposite effects. Think in terms of a car engines rpms: higher rpms in the same car usually means a faster car, change anything and it's meaningless, ie: gears, truck, wheel size, etc. make it useless.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=ThinkPad_Dock_II&amp;diff=31308</id>
		<title>ThinkPad Dock II</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=ThinkPad_Dock_II&amp;diff=31308"/>
		<updated>2007-07-15T10:37:58Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Hot Swapping */ repair link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | __TOC__&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | &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;
== IBM ThinkPad Dock II ==&lt;br /&gt;
The IBM Dock II (Model 2877) is the most feature-packed dock IBM sells. In addition to supporting all the features of the [[ThinkPad Mini-Dock|Mini-Dock]], the expansion capability of the Dock II can transform a regular Thinkpad into a full blown workstation with multiple monitors (PCI video card), higher fidelity audio (PC Card audio), and additional storage [[UltraBay|Ultrabay 2000]]. These expansion features are not supported by all Thinkpads, therefore the Dock II does not support as many Thinkpads as the [[ThinkPad Port Replicator II|Port Replicator II]] or [[ThinkPad Mini-Dock|Mini-Dock]].&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* everything the [[ThinkPad Mini-Dock]] has&lt;br /&gt;
* 1x half-size PCI card slot&lt;br /&gt;
* 2x Type II (or 1x Type III) [[CardBus slot]]&lt;br /&gt;
* 1x [[UltraBay|Ultrabay 2000]] slot&lt;br /&gt;
&lt;br /&gt;
===Pros &amp;amp; Cons===&lt;br /&gt;
* Positives: Expansion capability&lt;br /&gt;
* Negatives: Cost ($399), internal fan is loud, large, less compatible&lt;br /&gt;
* Compatibility: X20/30, T20/30/40, R50/R51 and A20/30 Series notebooks.(does not support the A21e/22e, R40/40e/50e/51e or X40/41).&lt;br /&gt;
* Warranty: One Year&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [http://www-132.ibm.com/webapp/wcs/stores/servlet/ProductDisplay?catalogId=-840&amp;amp;langId=-1&amp;amp;storeId=1&amp;amp;partNumber=287710U IBM Website for Dock II]&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles_pdf/92p1836.pdf ThinkPad Docking Solutions HMM (February 2003)] (248,638 Bytes)&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/MIGR-4NXNTP.html Docking station, port replicator, and expansion - ThinkPad General]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==PCI Slot==&lt;br /&gt;
Note this is a full height/half size and not a 'low profile' slot (the PCI card on the pictures below is &amp;quot;low-profile&amp;quot;, but &amp;quot;half-size&amp;quot; cards also fit in the Dock II). Separate brackets are required for low profile PCI cards. Normal cards will not fit.&lt;br /&gt;
&lt;br /&gt;
Many use the half-size PCI slot for peripherals like secondary video cards, TV tuners, audio cards, etc. This is considered by many to be the highlight of the Dock II, and is a feature that few other docks have. The Dock II does not support AGP or PCI Express. The Ultrabay 2000 slot can be used to connect other IBM peripherals, such as second hard disks or CD/DVD drives.&lt;br /&gt;
Potential owners of the Dock II are often concerned about compatibility and recommendations of video cards. See the [[#Compatible Video Cards|compatible video cards]] list below for more information.&lt;br /&gt;
&lt;br /&gt;
''Dock II owners: anybody tried to shoehorn a larger card in? ''&lt;br /&gt;
&lt;br /&gt;
Dimensions are up to 18 x 12 cm:&lt;br /&gt;
{{gallery_start}}&lt;br /&gt;
{{thumb|ThinkPad-DockII.jpg|PCI slot of the IBM ThinkPad Dock II, Type 2877, P/N 62P4547 (bottom view)}} &lt;br /&gt;
{{thumb|ThinkPad-DockII-rear.jpg|PCI slot of the IBM ThinkPad Dock II, Type 2877, P/N 62P4547 (rear bottom view)}}&lt;br /&gt;
{{gallery_end}}&lt;br /&gt;
In order to use a larger than &amp;quot;low-profile&amp;quot; card with the Dock II you can use a PCI riser. This means you might have to build a hollow support base for the dock, but it will allow you to connect any card. These PCI risers can be found at places such as [http://mini-itx.com/store/?c=8#p1908].&lt;br /&gt;
&lt;br /&gt;
===Video Cards===&lt;br /&gt;
The PCI slot is most often used for installing video cards to allow for multiple monitors. This feature is especially useful for anyone that requires visualizing a large amount of information, including stock brokers, artists, etc. Due to the slow PCI bus, gaming is generally not improved much by external cards.&lt;br /&gt;
One of the chief concerns of low profile video cards is whether they support the monitor setup you desire. As more monitors these days are LCDs, quality DVI support is essential. Additional concerns include driver support, ability to hot-swap (add or remove the thinkpad without rebooting), and noise/heat.&lt;br /&gt;
====Quality DVI &amp;amp; Widescreen support====&lt;br /&gt;
One way to work around the [[Problem with DVI throughput|limitations]] of the docks DVI pass-through port is to use a PCI graphics card which features a DVI port. Note that while this probably will work, the performance of the PCI graphics accellerator will be poor because of the limitations of the interface.&lt;br /&gt;
&lt;br /&gt;
Also the newest ATI video drivers for both Linux and Windows are known to not have limited resolution support on the external DVI port anymore.&lt;br /&gt;
&lt;br /&gt;
====Hot Swapping====&lt;br /&gt;
'''It is unknown whether hot swapping is fully supported.''' &lt;br /&gt;
Check the [http://forum.thinkpads.com/ thinkpads.com forum] for more information.&lt;br /&gt;
&lt;br /&gt;
====Noise/Heat====&lt;br /&gt;
Since the [[Dock II]] has been reported to be a bit noisy, some people have taken to unplugging the fan inside (or possibly replacing it). While this likely voids your warranty, it may be necessary if you really want it quiet. Adding a video card increases the heat inside the dock, and may likely have a fan on board as well, meaning it will increase the noise level. While adding one of the below video cards is likely well within the thermal limitations of the dock, you should take into consideration the noise and heat it may add.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Anybody care to add some anecdotal information about this here?'''&lt;br /&gt;
====TV Tuners====&lt;br /&gt;
{| cellspacing=&amp;quot;10&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
!Card !! Chipset !! A/V Ports !! HDTV !! Price&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ati.com/products/tvwonderpro/index.html ATI TV Wonder Pro]&lt;br /&gt;
|PCI&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|$59.99[http://www.compusa.com/products/product_info.asp?pfp=SEARCH&amp;amp;product_code=315276&amp;amp;Pn=TV_Wonder_Pro_PCI_TV_Tuner_and_Video_Capture_Card]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Compatible Video Cards====&lt;br /&gt;
This is a list of the most popular low-profile PCI video cards used with the IBM ThinkPad Dock II.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;10&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Card !! Chipset !! RAM !! DVI Ports !! Max DVI Res !! [http://en.wikipedia.org/wiki/TMDS TMDS] !! Compatibility !! Price&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.matrox.com/mga/workstation/audio/products/pseries/p650_low_profile.cfm Matrox Millennium P650 Low-Profile]&lt;br /&gt;
|P650&lt;br /&gt;
|64MB DDR&lt;br /&gt;
|2x&lt;br /&gt;
|1920x1200&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|[http://www.zipzoomfly.com/jsp/ProductDetail.jsp?ProductCode=321649&amp;amp;affiliate=yahoo $219.95]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.matrox.com/mga/corp/insurance/products/g450mms_quad.cfm Matrox G450MMS Quad PCI]&lt;br /&gt;
|G450&lt;br /&gt;
|128MB DDR&lt;br /&gt;
|4x&lt;br /&gt;
|4x1280x1024&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|~$500&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.pny.com/products/quadro/nvs/280Nvspci.asp PNY Quadro NVS 280 PCI]&lt;br /&gt;
|Nvidia Quadro 280&lt;br /&gt;
|64MB DDR&lt;br /&gt;
|2x (reqs cable)&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|[http://www.computerbrain.com/applications/search/itemdetails.asp?sku=VCQ4280NVSPCIBK&amp;amp;sc=frg $157.99]&lt;br /&gt;
|-&lt;br /&gt;
|Nvidia GeForce MX 4000&lt;br /&gt;
|GeForce 4 MX 4000&lt;br /&gt;
|64MB DDR&lt;br /&gt;
|1x &lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.naplestech.com/pages/xentera_gt2_pci-dvi.htm NTI Xentera GT2]&lt;br /&gt;
|ATI Radeon 9000&lt;br /&gt;
|64MB DDR&lt;br /&gt;
|2x&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|[http://www.provantage.com/buy-7colc00h-xentera-2-pci-profile-screen-dvi-video-adapter-colorgraphic-communications-612532-shopping.htm $213.91]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.naplestech.com/pages/xentera_gt4_pci-dvi.htm NTI Xentera GT4]&lt;br /&gt;
|ATI Radeon 9000 x2&lt;br /&gt;
|64MB DDR x2&lt;br /&gt;
|4x&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|[http://www.axiontech.com/prdt.php?src=FG&amp;amp;item=49218 $448.95]&lt;br /&gt;
|-&lt;br /&gt;
|VisionTek/ATI Radeon x1300 PCI&lt;br /&gt;
|ATI Radeon x1300&lt;br /&gt;
|256MB DDR2&lt;br /&gt;
|2x&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|Unknown&lt;br /&gt;
|[http://www.newegg.com/Product/Product.asp?Item=N82E16814129062 $112.99]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.visiontek.com/products/cards/retail/x1550_PCI.html VisionTek X1550 256 MB PCI]&lt;br /&gt;
|ATI Radeon x1550&lt;br /&gt;
|256MB DDR2&lt;br /&gt;
|1 VGA 1 S-Video 1 DVI&lt;br /&gt;
|2560x1600 (tested on 1400x1050 Westinghouse LCM-20v5 and 1280x720 on Samsung HDTV)&lt;br /&gt;
|What?&lt;br /&gt;
|Yes, tested VGA, DVI and DVI to HDMI&lt;br /&gt;
|[http://www.circuitcity.com/ssm/VisionTek-Radeon-X1550-256MB-HD-Video-Card-X1550PCI256/sem/rpsm/context/99000362/oid/177699/catOid/-13043/rpem/ccd/productDetail.do $109.99]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Audio Cards===&lt;br /&gt;
===Other PCI Cards===&lt;br /&gt;
&lt;br /&gt;
==Ultrabay 2000==&lt;br /&gt;
In contrast to the Full Dock I the Full Dock II has a full featured (= hotswap capable) [[UltraBay|UltraBay 2000]] slot.&lt;br /&gt;
&lt;br /&gt;
Note to T4x owners: [[UltraBay|UltraBay 2000]] is an older Ultrabay technology, not compatible with the [[UltraBay|UltraBay Slim]] in the T40/T41/T42/T43 lineup. Many [[UltraBay|UltraBay 2000]] accessories are available on [http://search.ebay.com/ultrabay-2000 Ebay]. &lt;br /&gt;
&lt;br /&gt;
The docks IDE interface is a CMD 648, so you should enable the according kernel option (compile it into the kernel if loading as a module doesn't work), if you want to use anything else than a floppy in the docks UltraBay.&lt;br /&gt;
Note that the interface will most likely be ide2 and ide3 then, so the docks UltraBay drive will be hde.&lt;br /&gt;
&lt;br /&gt;
==PC Card Slots==&lt;br /&gt;
Nothing special: 2 additional Type II slots. This may be helpful if you need a certain PC Card only while docked (e.g. a second GBit NIC), or if you have 2 PC Cards that physically won't fit into one pair of slots at the same time (e.g. 2 WLAN cards or 2 [http://www.villagetronic.com/e_pr_vtbook.html Villagetronic VTBook Video cards] ).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--===Peripherals===--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DVI pass-through==&lt;br /&gt;
LCD monitors are getting larger and higher-resolution. Currently, DVI based on 165MHz TDMS transmitters can only (officially) support 1600x1200x32 at 60Hz, which is the resolution of your average 20&amp;quot; non-widescreen LCD. IBM's driver support for this resolution through DVI ports on docks has been inconsistent. Also in Linux you might experience [[Problem with DVI throughput|problems]] even with this resolution and IBM officially states that the pass-through DVI port only supports resolutions up to 1280x1024. Read [[Problem with DVI throughput|our page]] of information on how to solve these troubles.&lt;br /&gt;
&lt;br /&gt;
Please be aware that not all Thinkpad models will support DVI output with a Dock.  Apparently, X and T2* models do not.  Please add other models if you know about them to not support DVI.&lt;br /&gt;
&lt;br /&gt;
== Supported ThinkPads ==&lt;br /&gt;
* {{A20m}}, {{A20p}}, {{A21m}}, {{A21p}}, {{A22m}}, {{A22p}}&lt;br /&gt;
* {{A30}}, {{A30p}}, {{A31}}, {{A31p}}&lt;br /&gt;
* {{R50}}, {{R50p}}, {{R51}}, {{R52}}&lt;br /&gt;
* {{T20}}, {{T21}}, {{T22}}, {{T23}}&lt;br /&gt;
* {{T30}}&lt;br /&gt;
* {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}, {{T43}}, {{T43p}}&lt;br /&gt;
* {{X20}}, {{X21}}, {{X22}}, {{X23}}, {{X24}}&lt;br /&gt;
* {{X30}}, {{X31}}, {{X32}}&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=BIOS_Upgrade_Downloads&amp;diff=31307</id>
		<title>BIOS Upgrade Downloads</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=BIOS_Upgrade_Downloads&amp;diff=31307"/>
		<updated>2007-07-15T10:35:20Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* R Series */ BIOS 1.29 for TP-76&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot; columns=&amp;quot;2&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; rowspan=&amp;quot;2&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{{WARN|Lenovo silently recalled the 1.11 BIOS for the X60 and T60.  No information about this recall is known, they just reverted the BIOS download page, reverting changelogs.}}&lt;br /&gt;
&lt;br /&gt;
{{WARN|BIOS 70ET67WW (1.27, 1.28) for the TP-70 (T43, R52) dated 2006/10/04 and later are buggy.  Console won't work in VESA-1024x768 mode using vesa-tng any more.}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|Firefox or Konqueror users should disable the '''Use IBM Download Director''' option when downloading files.}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
The following table lists direct links to BIOS updates for most Thinkpad Models.  Refer to [[BIOS Upgrade]] for instructions on how to perform a BIOS upgrade.&lt;br /&gt;
&lt;br /&gt;
The '''FW model''' column is what actually identifies which sort of firmware (BIOS and Embedded Controller) should be installed in a ThinkPad.  Machines with the same firmware model use the same BIOS and Embedded Controller firmware.  It can also be found as the OEM table ID in the ACPI DSDT.  It is formed by the characters &amp;quot;TP-&amp;quot;, plus the first two characters from the BIOS/EC update part number.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; {{prettytable}}&lt;br /&gt;
| style=&amp;quot;background:#ffdead;&amp;quot; rowspan=&amp;quot;3&amp;quot;| '''Models'''&lt;br /&gt;
| style=&amp;quot;background:#ffdead;&amp;quot; rowspan=&amp;quot;3&amp;quot;| '''FW Model'''&lt;br /&gt;
| style=&amp;quot;background:#ffdead;&amp;quot; colspan=&amp;quot;2&amp;quot;| '''Non-Diskette'''&lt;br /&gt;
| style=&amp;quot;background:#ffdead;&amp;quot; colspan=&amp;quot;3&amp;quot;| '''Diskette (or bootable CD)'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffdead;&amp;quot; rowspan=&amp;quot;2&amp;quot;| '''BIOS'''&lt;br /&gt;
| style=&amp;quot;background:#ffdead;&amp;quot; rowspan=&amp;quot;2&amp;quot;| '''EC'''&lt;br /&gt;
| style=&amp;quot;background:#ffdead;&amp;quot; colspan=&amp;quot;2&amp;quot;| '''BIOS'''&lt;br /&gt;
| style=&amp;quot;background:#ffdead;&amp;quot; rowspan=&amp;quot;2&amp;quot;| '''EC'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffdead;&amp;quot;| '''Windows'''&lt;br /&gt;
| style=&amp;quot;background:#ffdead;&amp;quot;| '''Linux'''&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===200 Series===&lt;br /&gt;
|-&lt;br /&gt;
| {{240}}&lt;br /&gt;
| TP-IR&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-496LGR 1.18]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{240X}}&lt;br /&gt;
| (none)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4MCKB8 1.09]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 240Z&lt;br /&gt;
| TP-11&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4PYQAK 1.72]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===300 Series===&lt;br /&gt;
|-&lt;br /&gt;
| {{365C}}, {{365CD}}, {{365CS}}, {{365CSD}}, {{365E}}, {{365ED}}&lt;br /&gt;
| (none)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-60567 2.0.14]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{365X}}, {{365XD}}&lt;br /&gt;
| (none)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-60567 1.10]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{380}}, {{380D}}, {{380E}}, {{380ED}}, {{385D}}, {{385ED}}&lt;br /&gt;
| TP-I1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=DSHY-3XWNVG 1.14]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{380XD}}, {{385XD}}&lt;br /&gt;
| TP-IF&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=DSHY-3XWNVG 1.19]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{380Z}}&lt;br /&gt;
| TP-IG&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=DSHY-3XWNVG 1.08]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{390}}, i1720, i1721&lt;br /&gt;
| (none) &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1DSHY-427MCG 5.62]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{390E}}&lt;br /&gt;
| (none)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1DSHY-46AKPY 1.55]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{390X}}, i1700&lt;br /&gt;
| TP-IS &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4C5UP9 0.55]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===500 Series===&lt;br /&gt;
|-&lt;br /&gt;
| {{560}}&lt;br /&gt;
| (none)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-60522 1.20]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{560E}}&lt;br /&gt;
| TP-HR&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-60522 1.13]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{560X}}&lt;br /&gt;
| TP-I8&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1DSHY-3QYK7L 1.15]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{560Z}}&lt;br /&gt;
| TP-IE&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1DSHY-3YTKKV 1.07]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{570}}&lt;br /&gt;
| TP-IM&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-47JS5Z 1.16]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{570E}}&lt;br /&gt;
| TP-IU&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4HT3RD 1.07]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4HA2BF 1.07]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===600 Series===&lt;br /&gt;
|-&lt;br /&gt;
| {{600}}&lt;br /&gt;
| TP-IB&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1DSHY-3VRJPK 1.22]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{600E}} (2645 selected models, 2646)&lt;br /&gt;
| TP-IN&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1DSHY-46HLKQ 1.16]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{600E}} (2645: 55x, 56x, 57x, 58x, A5x, A6x, Bxx [except for BAU], JJ1, JJ2, RRA)&lt;br /&gt;
| TP-IH&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1DSHY-43DNQ5 1.15]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{600X}}&lt;br /&gt;
| TP-IT&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4HVUYL 1.11]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4FYS2U 1.11]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===700 Series===&lt;br /&gt;
|-&lt;br /&gt;
| {{750}}, {{750CS}}, {{755C}}, {{755CS}}&lt;br /&gt;
| (none)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-60440 1.43]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{755CE}}, {{755CSE}}, {{755CD}}, {{755CX}}, {{755CV}}, {{755CDV}}&lt;br /&gt;
| (none)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-60440 1.44]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{760C}}, {{760CD}}, {{760L}}, {{760LD}}&lt;br /&gt;
| TP-HV&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-59734 1.30]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{760E}} (XGA), {{760ED}} (XGA), {{760XD}}, {{765D}}, {{765L}}&lt;br /&gt;
| TP-HX&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-59734 2.13]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{760E}} (SVGA), {{760ED}} (SVGA), {{760EL}}, {{760ELD}}, {{760XL}}&lt;br /&gt;
| TP-HZ, TP-HY&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-59734 2.13]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{770}}, {{770E}}, {{770ED}}&lt;br /&gt;
| TP-ID&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1DSHY-3P2MCB 1.34]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{770X}}&lt;br /&gt;
| TP-II&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1DSHY-42QLVU 1.10]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{770Z}}&lt;br /&gt;
| TP-IO&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-47F3VA 1.05]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===A Series===&lt;br /&gt;
|-&lt;br /&gt;
| {{A20m}}&lt;br /&gt;
| TP-IW&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4MNN8Z 1.13]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4JWNTQ 1.13]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{A20p}}&lt;br /&gt;
| TP-IV&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4MNN8Y 1.11]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4JWNTR 1.11]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{A21e}} (2655)&lt;br /&gt;
| TP-10&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4UNQKX 1.07]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4UNRRF 1.07]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{A21e}} (2628)&lt;br /&gt;
| TP-KU&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4Q2KLU 1.13]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4Q2KLV 1.13]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{A21m}}&lt;br /&gt;
| TP-KX&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4PJMXK 1.09]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4Q2KM4 1.09]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{A21p}}&lt;br /&gt;
| TP-KY&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4Q2KM3 1.11]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4PJN8X 1.11]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{A22e}} Celeron&lt;br /&gt;
| TP-10&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4UNQKX 1.07]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4UNRRF 1.07]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{A22e}} Pentium&lt;br /&gt;
| TP-1B&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4XQKLK 1.05]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4XQL7B 1.05]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{A22m}}&lt;br /&gt;
| TP-KX&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4Q2KM4 1.09]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4PJMXK 1.09]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{A22m}} (2628-Sxx)&lt;br /&gt;
| TP-13&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4VXS2T 1.05]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4VXRG4 1.05]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{A22p}}&lt;br /&gt;
| TP-KY&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4Q2KM3 1.11]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4PJN8X 1.11]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{A30}}, {{A30p}}&lt;br /&gt;
| TP-1E&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-39863 1.18]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-40846 1.08]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-39861 1.18]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-40847 1.08]&lt;br /&gt;
|-&lt;br /&gt;
| {{A31}}, {{A31p}} (Bios 1G*)&lt;br /&gt;
| TP-1G&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-42654 1.12]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-45771 1.05]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-42660 1.12]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-45900 1.05]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-45770 1.05]&lt;br /&gt;
|-&lt;br /&gt;
| {{A31}}, {{A31p}} (Bios 1N*)&lt;br /&gt;
| TP-1N&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-44450 1.09]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-45662 1.05]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-44451 1.09]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-45898 1.02]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-45663 1.05]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
===G Series===&lt;br /&gt;
|-&lt;br /&gt;
| {{G40}}&lt;br /&gt;
| TP-1T&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50672 1.21]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50673 1.21]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{G41}}&lt;br /&gt;
| TP-1X&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-58127 1.14]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-58129 1.14]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
===R Series===&lt;br /&gt;
|-&lt;br /&gt;
| {{R30}}&lt;br /&gt;
| TP-1C&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-40216 1.38]&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-40217 1.38]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{R31}}&lt;br /&gt;
| TP-1F&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-41378 3.11]&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-41535 3.11]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{R32}}&lt;br /&gt;
| TP-1M&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-43571 2.16]&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-43572 2.16]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{R40}} (2681, 2682, 2683, 2896, 2898, 2899)&lt;br /&gt;
| TP-1O&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-46055 1.27]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-46143 1.14]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-46061 1.27]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-46144 1.14]&lt;br /&gt;
|-&lt;br /&gt;
| {{R40}} (2722, 2723, 2724, 2897)&lt;br /&gt;
| TP-1P&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50320 1.33]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-46143 1.14]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50321 1.33]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-46144 1.14]&lt;br /&gt;
|-&lt;br /&gt;
| {{R40e}}&lt;br /&gt;
| TP-1S &lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50302 1.38]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50344 1.04]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50301 1.38]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50343 1.04]&lt;br /&gt;
|-&lt;br /&gt;
| {{R50}}, {{R50p}}&lt;br /&gt;
| TP-1R&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50273 3.21]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50279 3.04]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50275 3.21]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50277 3.04]&lt;br /&gt;
|-&lt;br /&gt;
| {{R50e}}&lt;br /&gt;
| TP-1W&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-55000 2.08]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-54996 1.04]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-55001 2.08]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-54997 1.04]&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} (1829, 1830, 1831, 1836)&lt;br /&gt;
| TP-1R&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50273 3.21]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50279 3.04]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50275 3.21]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50277 3.04]&lt;br /&gt;
|-&lt;br /&gt;
| {{R51}} (2883, 2887, 2888, 2889, 2894, 2895)&lt;br /&gt;
| TP-1V &lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-55003 1.28]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-54996 1.04]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-55004 1.28]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-54997 1.04]&lt;br /&gt;
|-&lt;br /&gt;
| {{R51e}}&lt;br /&gt;
| TP-78&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-61681 1.59]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-61677 1.01]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-61680 1.59]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-61675 1.01]&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} (1846, 1847, 1848, 1849, 1850, 1870)&lt;br /&gt;
| TP-76&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59221 1.29]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59184 1.06]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59220 1.29]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59183 1.06]&lt;br /&gt;
|-&lt;br /&gt;
| {{R52}} (1858, 1859, 1860, 1861, 1862, 1863)&lt;br /&gt;
| TP-70&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59379 1.28]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59439 1.05]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59380 1.28]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59440 1.05]&lt;br /&gt;
|-&lt;br /&gt;
| {{R60}}&lt;br /&gt;
| TP-7C&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-64578 2.08]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-64580 2.08] (CD)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===T Series===&lt;br /&gt;
|-&lt;br /&gt;
| {{T20}}&lt;br /&gt;
| TP-IY&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4MNN8X 1.22]&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4JWNJC 1.22]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{T21}}&lt;br /&gt;
| TP-KZ&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4Q2KM5 1.16]&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4PJN8Y 1.16]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{T22}}&lt;br /&gt;
| TP-16&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4VWPPU 1.12]&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4VWP54 1.12]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{T23}}&lt;br /&gt;
| TP-1A&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-39366 1.18]&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-40022 1.06a]&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-39362 1.18]&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-40021 1.06a]&lt;br /&gt;
|-&lt;br /&gt;
| {{T30}}&lt;br /&gt;
| TP-1I&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-42694 2.10]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-42711 1.07]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-42720 2.10]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-45745 2.02]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-42725 1.07]&lt;br /&gt;
|-&lt;br /&gt;
| {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}&lt;br /&gt;
| TP-1R&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50275 3.23]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50279 3.04]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50273 3.23]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50277 3.04]&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} (1871, 1872, 1873, 1874, 1875, 1876)&lt;br /&gt;
| TP-70 &lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59379 1.28]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59439 1.05]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59380 1.28]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59440 1.05]&lt;br /&gt;
|-&lt;br /&gt;
| {{T43}} (2668, 2669, 2678, 2679, 2686, 2687), {{T43p}}&lt;br /&gt;
| TP-1Y&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59096 1.29]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59120 1.06]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59097 1.29]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59121 1.06]&lt;br /&gt;
|-&lt;br /&gt;
| {{T60}}, {{T60p}}&lt;br /&gt;
| TP-79&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-63024 2.13]&lt;br /&gt;
| 1.07&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-63027 2.13] (CD)&lt;br /&gt;
| 1.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{T61}}&lt;br /&gt;
| TP-7L(BIOS)/TP-7K(EC)&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67989 1.09]&lt;br /&gt;
| 1.05&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67989 1.09] (CD)&lt;br /&gt;
| 1.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===X Series===&lt;br /&gt;
|-&lt;br /&gt;
| {{X20}}, {{X21}}&lt;br /&gt;
| TP-IZ&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4P52BM 2.25]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4VQNTP 1.36]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4P52BL 2.25]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-4PBMCT 1.36]&lt;br /&gt;
|-&lt;br /&gt;
| {{X22}}, {{X23}}, {{X24}}&lt;br /&gt;
| TP-1D&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-39672 1.32]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-39806 1.30]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-39665 1.32]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-39808 1.30]&lt;br /&gt;
|-&lt;br /&gt;
| {{X30}}&lt;br /&gt;
| TP-1K&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-44135 1.09]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-44152 1.06]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-44131 1.09]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-44149 1.06]&lt;br /&gt;
|-&lt;br /&gt;
| {{X31}}, {{X32}}&lt;br /&gt;
| TP-1Q&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50298 3.02]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-53480 1.08]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-50308 3.02]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-53479 1.08]&lt;br /&gt;
|-&lt;br /&gt;
| {{X40}}&lt;br /&gt;
| TP-1U&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-53881 2.08]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-53882 1.62]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-53883 2.08]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-53885 1.62]&lt;br /&gt;
|-&lt;br /&gt;
| {{X41}}&lt;br /&gt;
| TP-74&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59206 2.09]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59208 1.02]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59205 2.09]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-59207 1.02]&lt;br /&gt;
|-&lt;br /&gt;
| {{X41T}}&lt;br /&gt;
| TP-75&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-60193 2.04]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-60191 1.02]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-60194 2.04]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-60189 1.02]&lt;br /&gt;
|-&lt;br /&gt;
| {{X60}}, {{X60s}}&lt;br /&gt;
| TP-7B&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-63144 2.11]&lt;br /&gt;
| 1.13&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-63145 2.11] (CD)&lt;br /&gt;
| 1.13&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{X60t}}&lt;br /&gt;
| TP-7J&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67148 1.09]&lt;br /&gt;
| 1.04&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67149 1.09] (CD)&lt;br /&gt;
| 1.04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===Z Series===&lt;br /&gt;
|-&lt;br /&gt;
| {{Z60m}}, {{Z60t}}&lt;br /&gt;
| TP-77&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-61687 1.22]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-61686 1.18]&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-61688 1.22]&lt;br /&gt;
|&lt;br /&gt;
| [http://www.ibm.com/support/docview.wss?uid=psg1MIGR-61685 1.18]&lt;br /&gt;
|-&lt;br /&gt;
| {{Z61e}}, {{Z61m}}, {{Z61p}}, {{Z61t}}&lt;br /&gt;
| TP-7F&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-64409 2.18]&lt;br /&gt;
| (1.08)&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-64305 2.18] (CD)&lt;br /&gt;
| (1.08)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
|-&lt;br /&gt;
| {{TransNote}}&lt;br /&gt;
| TP-KV&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4UDSMK 1.02]&lt;br /&gt;
|&lt;br /&gt;
| [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4UDRRF 1.02]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Fglrx&amp;diff=31244</id>
		<title>Fglrx</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Fglrx&amp;diff=31244"/>
		<updated>2007-07-14T10:44:51Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Status */ 8.38.7&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;
== ATI fglrx driver ==&lt;br /&gt;
This is a proprietary Linux binary-only driver for ATI graphic chips with support for 3D acceleration.&lt;br /&gt;
&lt;br /&gt;
Also see [[R300|opensource driver]] with 3D support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Availability / Project Homepage==&lt;br /&gt;
Home page: http://ati.amd.com/support/drivers/linux/linux-radeon.html&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
The ATI drivers have explicit permission for repackaging and redistribution of the Linux drivers.  Many distributions are supported within the installer, and many more repackaged by external developers.  Please visit the  [http://wiki.cchtml.com/index.php/Category:Distributions Distribution Page at the Unofficial ATI driver Wiki]&lt;br /&gt;
&lt;br /&gt;
*{{Debian}} packages: http://www.stanchina.net/~flavio/debian-official/fglrx-driver.html&lt;br /&gt;
** These packages have been added to Debian unstable as &amp;lt;tt&amp;gt;fglrx-driver&amp;lt;/tt&amp;gt;, so you can now apt-get them and use module-assistant to install.&lt;br /&gt;
** If you are on stable sarge with backport's kernel 2.6.15, download ATI's installer, let it build Debian packages and proceed as usual. There's a [http://jroller.com/page/erAck?entry=lot_day_6_2_fglrx detailed description] available.&lt;br /&gt;
*{{SUSE}} packages: http://www.suse.de/~sndirsch/ati-installer-HOWTO.html&lt;br /&gt;
*{{Gentoo}} {{cmdroot|emerge ati-drivers}}&lt;br /&gt;
*{{Fedora}} 4 packages: http://rpm.livna.org&lt;br /&gt;
** For stock Fedora kernels: {{cmdroot|yum install kernel-module-fglrx-$(uname -r) ati-fglrx }}&lt;br /&gt;
** For custom-compiled kernels: see [[How to build custom packages for fglrx]]&lt;br /&gt;
*{{Fedora}} 5 packages: http://rpm.livna.org&lt;br /&gt;
** For stock Fedora kernels: {{cmdroot|yum install xorg-x11-drv-fglrx}}&lt;br /&gt;
** For custom-compiled kernels: see [[How to build custom packages for fglrx]]&lt;br /&gt;
*{{Fedora}} 7 packages: http://rpm.livna.org&lt;br /&gt;
** Unfortunately, as of 15 June, the fglrx driver does not work with Fedora 7, as it cannot handle the xorg version there.  A new driver is expected sometime fairly soon.&lt;br /&gt;
*{{Arch Linux}}&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx}} (kernel module for 2.6.15-ARCH)&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx-archck}} (kernel module for 2.6.15-archck)&lt;br /&gt;
:{{cmdroot|pacman -S ati-fglrx-utils}} (xorg7 stuff and tools)&lt;br /&gt;
*{{Ubuntu}}&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Dapper_Installation_Guide Dapper Drake Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Breezy_Installation_Guide Breezy Badger Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Edgy_Installation_Guide Edgy Eft Howto]&lt;br /&gt;
**[http://wiki.cchtml.com/index.php/Ubuntu_Feisty_Installation_Guide Feisty Fawn Howto]&lt;br /&gt;
&lt;br /&gt;
== Building for Xorg 7.0==&lt;br /&gt;
To compile fglrx versions &amp;lt;= 8.24.8 for Xorg 7.0.0, fake Xorg 6.9.0 by &lt;br /&gt;
:{{cmdroot|1=export X_VERSION=x690; sh ati-driver-installer-8.24.8-x86.run}}&lt;br /&gt;
Next, move the various resulting libraries and modules from /usr/X11R6 to /usr/lib/xorg&lt;br /&gt;
&lt;br /&gt;
In {{path|/usr/src/ATI}} additional sources are installed for fireglcontrol and fgl_glxgears&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Current version: 8.38.7 ( 28th June 2007).&lt;br /&gt;
Major changes:&lt;br /&gt;
* 8.38.7: hotfix release for &amp;quot;Using aticonfig --initial segfaults destroying xorg.conf file when run in X with Vesa driver.&amp;quot;, search for &amp;quot;737-28261&amp;quot; on the ATI website.&lt;br /&gt;
* 8.38.6: RedHat Enterprise Linux 5 support, Xserver crashes on moving video window between two monitors fixed, corruption when playing multiple vodeps with textured video fixed&lt;br /&gt;
* 8.37.6: Xorg Server 1.3 support, CCC 1.0, crash when logging off from X fixed, Xv cropping bug fixed&lt;br /&gt;
* 8.36.5: Kernel 2.6.20 support, CCC Beta 0.9 with localization&lt;br /&gt;
* 8.35.5: Beta AMD Catalyst Control Center, X-Server termination from console does not result in a blank screen. Kernel 2.6.20 requires some patching (see [[Problems_with_fglrx#fglrx_8.35.5|fglrx patches section]]).&lt;br /&gt;
* 8.34.8: Radeon Xpress 1250 support, X-Video on x86_64 fix, hibernation mode fix. Kernel 2.6.20 requires some patching (see [[Problems_with_fglrx#fglrx_8.34.8|fglrx patches section]]).&lt;br /&gt;
* 8.33.6: X.Org 7.2 support, kernel 2.6.19 support, some fixes in the installer, 2 more bugfixes. Resume from suspend works if you make sure you have set &amp;quot;VbetoolPost no&amp;quot; and &amp;quot;EnableVbetool no&amp;quot; in your suspend to ram hibernate conf (/etc/hibernate/ram.conf on ubuntu/debian).&lt;br /&gt;
* 8.32.5: support for X1650, X.Org 7.2 RC2 support, bugfixes. Suspend-to-ram is broken with specific cards, *no* 2.6.19 support (see [[Problems_with_fglrx#fglrx_8.32.5|fglrx patches section]]).&lt;br /&gt;
* 8.31.5: no new features, only bugfixes.  Of note, for some users, this version breaks suspend-to-ram and suspend-to-disk.&lt;br /&gt;
* 8.30.3: no new features, only bugfixes&lt;br /&gt;
* 8.29.6: Linux 2.6.18 support, dropped support for Radeon 8500/9000/9100/9200/9250 (both, mobile and normal versions)&lt;br /&gt;
* 8.28.8: Display Switching Support for ThinkPads, ATI Pairmode support, Retaining display device state between restarts, Support for Radeon Xpress 1200, 1250, and 1300&lt;br /&gt;
* 8.27.10: X.org 7.1 support, Fedora Core package support&lt;br /&gt;
* 8.26.18: support for dynamically attached DFPs and Thermal Event Power Management (both via daemon), minor bug fixes&lt;br /&gt;
* 8.25.18: Xorg 7.0 support, FireGLâ„¢V5xxx/V7xxx support, Dynamic Display Management, fixed a lot of critical bugs.&lt;br /&gt;
* 8.24.8: support for X1300, X1400, X1600, X1800 (generic and mobility) and 3D accelerated video playback on Avivo&lt;br /&gt;
* 8.23.7: support for X850 and X800, OpenGL 2.0 Enhancement, FSAA for some chips&lt;br /&gt;
* 8.22.5: added kernel 2.6.15 support -- patch no longer required&lt;br /&gt;
* 8.21.7: initial OpenGL 2.0 support&lt;br /&gt;
* 8.20.8: fixed resume issues, fixed compile problems with kernels 2.6.13 and 2.6.14&lt;br /&gt;
* 8.19.10: has added suspend / resume and dynamic GPU power management support.  Using vbetool no longer required.&lt;br /&gt;
&lt;br /&gt;
== Known problems and solutions ==&lt;br /&gt;
See [[Problems with fglrx]].&lt;br /&gt;
== User experience ==&lt;br /&gt;
=== Speed ===&lt;br /&gt;
How much is the speed gain versus the opensource drivers?&lt;br /&gt;
&lt;br /&gt;
Compared to the old drivers, approximately 40% speed gain have been noticed with fglrx. However, there are issues with freezing/garbage after suspend, garbage when resizing desktop (via {{key|ctrl}}{{key|alt}}{{key|plus}}, {{key|ctrl}}{{key|alt}}{{key|minus}}), and garbage while using VMware. The current 8.14.13 has shown 400% improvement over using the open source radeon driver: 1200 FPS for glxgears{{footnote|1}}!&lt;br /&gt;
However the situation seems to be changing today. With recent x11-drm-20060608 driver (gentoo) and thinkpad t42 (ati 9600) the speed is confirmed as 1900fps without any single crash so far.&lt;br /&gt;
&lt;br /&gt;
=== 3D acceleration ===&lt;br /&gt;
&lt;br /&gt;
According to [http://xoomer.alice.it/flavio.stanchina/debian/fglrx-installer.html#configure Flavio's page] you need these options:&lt;br /&gt;
&lt;br /&gt;
  Section &amp;quot;Module&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
    Load &amp;quot;GLcore&amp;quot;&lt;br /&gt;
    Load &amp;quot;glx&amp;quot;&lt;br /&gt;
    Load &amp;quot;dri&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
  # Of course you need to activate the driver&lt;br /&gt;
  Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
    Driver     &amp;quot;fglrx&amp;quot;&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
Don't forget to load the module &amp;lt;tt&amp;gt;fglrx&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;modprobe fglrx&amp;lt;/tt&amp;gt;).  Under Debian the module can be placed in &amp;lt;tt&amp;gt;/etc/modules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With current fglrx drivers (as of 8.29.6) you must disable composite to get 3D DRI acceleration. To do this, add an extra Extensions section (if necessary) containing:&lt;br /&gt;
&lt;br /&gt;
  Section &amp;quot;Extensions&amp;quot;&lt;br /&gt;
     Option  &amp;quot;Composite&amp;quot; &amp;quot;Disable&amp;quot;  #make DRI work with fglrx.&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
If you are unsure whether you have DRI running, issue &amp;lt;tt&amp;gt;glxinfo | grep -i direct&amp;lt;/tt&amp;gt; after disabling composite.  Note, this &lt;br /&gt;
&lt;br /&gt;
{{NOTE|1=Video overlay acceleration may be disabled when 3D acceleration is enabled. The following comment from the xorg.conf file bundled with the fglrx driver indicates that:&lt;br /&gt;
   # === OpenGL Overlay ===&lt;br /&gt;
   # Note: When OpenGL Overlay is enabled, Video Overlay&lt;br /&gt;
   #       will be disabled automatically&lt;br /&gt;
       Option &amp;quot;OpenGLOverlay&amp;quot;              &amp;quot;1&amp;quot;&lt;br /&gt;
However, you can use either regular Xv video overlay or make the video an opengl texture and let the OpenGL engine scale your video.  This has nothing to do with the acceleration of 2D drawing primitives.  Further, your mileage on performance may vary depending on what card you have.  The open source drivers don't support newer cards, while the ATI drivers don't support older cards.&lt;br /&gt;
&lt;br /&gt;
You may be able to preserve VideoOverlay acceleration if you explicitly remove the OpenGLOverlay using:&lt;br /&gt;
&lt;br /&gt;
Option &amp;quot;VideoOverlay&amp;quot;  &amp;quot;True&amp;quot; and Option &amp;quot;OpenGLOverlay&amp;quot; &amp;quot;False&amp;quot;.  See [http://xoomer.alice.it/flavio.stanchina/debian/fglrx-installer.html#configure Flavio's page] for detail.}}&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
Power saving is much better than with the &amp;lt;tt&amp;gt;radeon&amp;lt;/tt&amp;gt; driver, but doesn't work in dual-screen configuration (see [[How to make use of Graphics Chips Power Management features]]).&lt;br /&gt;
&lt;br /&gt;
=== Suspending with fglrx ===&lt;br /&gt;
&lt;br /&gt;
On a ThinkPad T42 with Kernel 2.6.19 with Software Suspend 2 and R60 with Kernel 2.6.18-suspend2-r1 (Gentoo) , the following addition to &amp;lt;tt&amp;gt;/etc/hibernate/suspend2.conf&amp;lt;/tt&amp;gt; is required:&lt;br /&gt;
&lt;br /&gt;
  # For fglrx&lt;br /&gt;
  ProcSetting extra_pages_allowance 20000&lt;br /&gt;
&lt;br /&gt;
=== Display Switching (Dynamic Display Management) ===&lt;br /&gt;
&lt;br /&gt;
Version 8.25.18 introduces a new feature: Dynamic Display Management. It allows display switching on-the-fly.&lt;br /&gt;
&lt;br /&gt;
To list all connected and enabled monitors:&lt;br /&gt;
:{{cmdroot|1=aticonfig --query-monitor}}&lt;br /&gt;
&lt;br /&gt;
To switch displays:&lt;br /&gt;
:{{cmdroot|1=aticonfig --enable-monitor=STRING,STRING}}, where STRING can be: none, lvds, crt1, crt2, tv, tdms1, tdms2&lt;br /&gt;
&lt;br /&gt;
Only 2 displays can be enabled at the same time. Any displays that are not on the list will be disabled.&lt;br /&gt;
&lt;br /&gt;
== Useful links == &lt;br /&gt;
* [http://www.ati.com/products/catalyst/linux.html ATI Linux Driver FAQ]&lt;br /&gt;
* [http://www.rage3d.com/content/articles/atilinuxhowto/ ATI Radeon Linux How-To]&lt;br /&gt;
* [http://www.rage3d.com/board/forumdisplay.php?f=61&amp;amp;daysprune=30&amp;amp;order=asc&amp;amp;sort=title Rage3D Linux Discussion Forum]&lt;br /&gt;
* [http://www.driverheaven.net/forumdisplay.php?f=103 Radeon Driver Forum at Driverheaven]&lt;br /&gt;
* [http://odin.prohosting.com/wedge01/gentoo-radeon-faq.html Gentoo ATI Radeon FAQ]&lt;br /&gt;
* [http://forums.gentoo.org/viewtopic-t-374745-highlight-t42+ati+dri.html Gentoo T42 ATI. DRI + xorg driver]&lt;br /&gt;
* [http://ati.cchtml.com/ Unofficial community ATI bugzilla] - tracks bugs in the driver. Might be monitored by ATI ([http://www.rage3d.com/board/showpost.php?p=1333438751&amp;amp;postcount=386], [http://www.rage3d.com/board/showpost.php?p=1333439009&amp;amp;postcount=390]).&lt;br /&gt;
&lt;br /&gt;
== ThinkPads that may be supported ==&lt;br /&gt;
Supported chips, as found in select IBM ThinkPads:&lt;br /&gt;
{{NOTE|fglrx version 8.29.6 discontinued support for Radeon 9200 and earlier.}}&lt;br /&gt;
* [[ATI Mobility FireGL 9000]]&lt;br /&gt;
** {{T40p}}&lt;br /&gt;
* [[ATI Mobility FireGL T2]]&lt;br /&gt;
** {{R50p}}&lt;br /&gt;
** {{T41p}}, {{T42p}}&lt;br /&gt;
* [[ATI Mobility FireGL V3200]]&lt;br /&gt;
** {{T43p}}&lt;br /&gt;
* [[ATI Mobility Radeon 9000]]&lt;br /&gt;
** {{R50}}, {{R51}}&lt;br /&gt;
** {{T40}}, {{T41}}, {{T42}}&lt;br /&gt;
* [[ATI Mobility Radeon 9600]]&lt;br /&gt;
** {{T42}}&lt;br /&gt;
* [[ATI Mobility Radeon X300]]&lt;br /&gt;
** {{R52}}&lt;br /&gt;
** {{T43}}&lt;br /&gt;
** {{Z60m}}&lt;br /&gt;
* [[ATI Mobility Radeon Xpress 200M]]&lt;br /&gt;
** {{R51e}}&lt;br /&gt;
* [[ATI Mobility Radeon X600]]&lt;br /&gt;
** {{Z60m}}&lt;br /&gt;
* [[ATI Mobility Radeon X1400]]&lt;br /&gt;
** {{T60}}, {{R60}}, {{Z61m}}&lt;br /&gt;
* [[ATI Mobility FireGL V5200]]&lt;br /&gt;
** {{T60p}}, {{Z61p}}&lt;br /&gt;
&lt;br /&gt;
== ThinkPads that are NOT supported by fglrx==&lt;br /&gt;
Unsupported chips, as found in select IBM ThinkPads:&lt;br /&gt;
* [[ATI Mobility Radeon 7500]]&lt;br /&gt;
** {{R40}}&lt;br /&gt;
** {{T30}}&lt;br /&gt;
** {{T42}}&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#Note that glxgears isn't a benchmark tool, it's so simple that its FPS values is without any meaning... you can only compare glxgears using the same drivers/machine, if you change any of then you can have higher/lower values and in real life programs/games happen to have the opposite effects. Think in terms of a car engines rpms: higher rpms in the same car usually means a faster car, change anything and it's meaningless, ie: gears, truck, wheel size, etc. make it useless.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_get_special_keys_to_work&amp;diff=31184</id>
		<title>How to get special keys to work</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_get_special_keys_to_work&amp;diff=31184"/>
		<updated>2007-07-12T17:05:38Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: /* Console tools configuraton */ no need to change the key values&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
The following table gives an overview over the special keys found on ThinkPads and what is needed to make them work.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
! key !! standard function{{footnote|1}} !! tools supporting key{{footnote|2}} !! configurability{{footnote|3}} !! remarks&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}} || - || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || on release without completed key combination&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F1}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F2}} || lock screen || [[#ibm-acpi events|ibm-acpi]] || full || in models from T/X/Z 60 onwards&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F3}} || blank screen || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F4}} || suspend to ram || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || may generate ACPI event when not enabled in the ibm-acpi hotkey mask&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F5}} || switch bluetooth || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || in models starting from 2002&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F6}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F7}} || switch display || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]] || additional actions || &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F8}} || toggle display expansion || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F9}} || eject from dock || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F10}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F11}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F12}} || hibernate || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || may generate ACPI event when not enabled in the ibm-acpi hotkey mask&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Home}} / {{key|Fn}}{{key|Pos1}} || brightness up || [[#ibm-acpi events|ibm-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|End}} || brightness down || [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|PageUp}} || toggle thinklight || [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Space}} || toggle zoom || [[#tpb configuration|tpb]], [[KMilo]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Ins}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Del}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Backspace}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|NumLock}} || - || [[#xmodmap configuration|xmodmap]] || make working ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Windows}} || - || [[#xmodmap configuration|xmodmap]] || remapping ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || help application || [[#tpb configuration|tpb]], [[KMilo]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Home|#494949}} || open web browser || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Search|#494949}} || open search application || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Mail|#494949}} || open mail application || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Favorites|#494949}} || open favorites || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Reload|#494949}} || reload web page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Abort|#494949}} || abort loading page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Backward|#494949}} || previous page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full ||  ext. keyboards and ThinkPads starting from 2002&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Forward|#494949}} || next page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || ext. keyboards and ThinkPads starting from 2002&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume up|#494949}} || volume up || [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume down|#494949}} || volume down || [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume mute|#494949}} || mute volume || [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Play/Pause|#494949}} || start/pause playback  || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Down)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Stop|#494949}} || stop playback || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Up)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Next|#494949}} || play next || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Right)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Previous|#494949}} || play previous || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Left)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Power|#494949}} || shutdown || [[#ibm-acpi events|ibm-acpi]] || full || triggered on pressing 3secs, but notebook goes off on 5sec press&lt;br /&gt;
|-&lt;br /&gt;
| Display lid || blank screen || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| Ultrabay lid || announce ultrabay change || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| Dock eject || eject from dock || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet power|#494949}} || shutdown || [[#ibm-acpi events|ibm-acpi]] || full || triggered on pressing 3secs, but notebook goes off on 5sec press&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet orientation|#494949}} || rotates screen || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet shortcut|#494949}} || shortcut menu || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Esc|#494949}} || esc key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Enter|#494949}} || enter key || [[#mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Up|#494949}} || up key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Down|#494949}} || down key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet (unlabeled)|#494949}} || down key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Triggering key events==&lt;br /&gt;
===ibm-acpi events===&lt;br /&gt;
Some of the following events require a {{cmdroot|echo enable,0xffff &amp;gt;/proc/acpi/ibm/hotkey}} in order to make acpi able to get information on them. These events can be used to [[How to configure acpid|configure acpid]].&lt;br /&gt;
&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ events triggered by [[ibm-acpi]] for {{path|/etc/acpi/events}} files. &lt;br /&gt;
! key !! event&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F1}} || ibm/hotkey HKEY 00000080 00001001&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F2}} || ibm/hotkey HKEY 00000080 00001002&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F3}} || ibm/hotkey HKEY 00000080 00001003&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F4}} || ibm/hotkey HKEY 00000080 00001004&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F5}} || ibm/hotkey HKEY 00000080 00001005&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F6}} || ibm/hotkey HKEY 00000080 00001006&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F7}} || ibm/hotkey HKEY 00000080 00001007&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F8}} || ibm/hotkey HKEY 00000080 00001008&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F9}} || ibm/hotkey HKEY 00000080 00001009&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F10}} || ibm/hotkey HKEY 00000080 0000100a&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F11}} || ibm/hotkey HKEY 00000080 0000100b&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F12}} || ibm/hotkey HKEY 00000080 0000100c&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Backspace}} || ibm/hotkey HKEY 00000080 0000100d&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Ins}} || ibm/hotkey HKEY 00000080 0000100e&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Del}} || ibm/hotkey HKEY 00000080 0000100f&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Home}}/{{key|Fn}}{{key|Pos1}} || ibm/hotkey HKEY 00000080 00001010&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Power|#494949}} || button/power PWRF 00000080 xxxxxxxx&lt;br /&gt;
|-&lt;br /&gt;
| Display lid || button/lid LID 00000080 xxxxxxxx&lt;br /&gt;
|-&lt;br /&gt;
| Ultrabay eject || ibm/bay MSTR 00000003 00000000&lt;br /&gt;
|-&lt;br /&gt;
| Ultrabay inserted || ibm/bay MSTR 00000001 00000000&lt;br /&gt;
|-&lt;br /&gt;
| Dock eject || ibm/dock GDCK 00000003 00000001&lt;br /&gt;
|-&lt;br /&gt;
| Wireless switch || ibm/hotkey HKEY 00000080 00007000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
By disassembling and editing the DSDT, more events can be added.  HKEY events are triggered by calls to the MKHQ function, e.g. &amp;lt;tt&amp;gt;\_SB.PCI0.LPC.EC.HKEY.MHKQ(0Ã—1007)&amp;lt;/tt&amp;gt; will trigger &amp;quot;ibm/hotkey HKEY 00000080 00001007&amp;quot;.  Most of these can be found in &amp;lt;tt&amp;gt;_Qxx&amp;lt;/tt&amp;gt; methods within the DSDT, which are executed on embedded controller events, e.g. _Q10 is triggered by pressing Fn-F7.  You can add a call to MKHQ into an existing &amp;lt;tt&amp;gt;_Qxx&amp;lt;/tt&amp;gt; method to get it recognized by ibm-acpi as well as creating new &amp;lt;tt&amp;gt;_Qxx&amp;lt;/tt&amp;gt; methods, which if you're lucky will correspond to an EC event that IBM never used (e.g. A 770 will send Fn-Home/End/PgUp/PgDn to ibm-acpi if hacked in this fashion). For example, [http://www.wormnet.eu/ibm-g40/morebuttons.dsl this is a modified block of DSDT for a G40].&lt;br /&gt;
&lt;br /&gt;
=== Pure ACPI events ===&lt;br /&gt;
&lt;br /&gt;
A few keys can generate ACPI events of their own on certain ThinkPads, as long as they are masked off in the ibm-acpi hotkey's mask (or the hotkey feature is disabled in ibm-acpi).&lt;br /&gt;
&lt;br /&gt;
If you want the ThinkPad's BIOS and ACPI methods to know about these keys being pressed, you probably want to leave them masked out from ibm-acpi, and use their non-HKEY events listed below, instead.&lt;br /&gt;
&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ events triggered by ACPI when hotkey is masked out or disabled. &lt;br /&gt;
! key !! event&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F4}} || button/sleep SLPB 00000080 00000001&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F12}} || ibm/hotkey HKEY 00000080 0000100c&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===tpb configuration===&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ configuration keywords for [[tpb]] (to put in {{path|/etc/tpbrc}})&lt;br /&gt;
! key !! config keyword&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || THINKPAD&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Home|#494949}} || HOME&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Search|#494949}} || SEARCH&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Mail|#494949}} || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Favorites|#494949}} || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Reload|#494949}} || RELOAD&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Abort|#494949}} || ABORT&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Backward|#494949}} || BACKWARD&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Forward|#494949}} || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}} || FN&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Space}} || CALLBACK (zoom on/off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|PageUp}} || CALLBACK (thinklight on/off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F7}} || CALLBACK (display lcd/crt/both)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F8}} || CALLBACK (expand on/off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Home}} / {{key|Fn}}{{key|Pos1}} || CALLBACK (brightness &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|End}} || CALLBACK (brightness &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume up|#494949}} || CALLBACK (volume &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume down|#494949}} || CALLBACK (volume &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume mute|#494949}} || CALLBACK (mute on/off)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To all parameter keywords should be assigned the full path to the executables supposed to be started on key press.&lt;br /&gt;
The exectable provided for the CALLBACK keyword should take the parameters given in parentheses and act according to them.&lt;br /&gt;
If you want to use xmodmap for the HOME, SEARCH, MAIL, FAVORITES, RELOAD, ABORT, BACKWARD, FORWARD and FN keys you should&lt;br /&gt;
provide a &amp;lt;tt&amp;gt;XEVENTS OFF&amp;lt;/tt&amp;gt; in your {{path|/etc/tpbrc}}. &lt;br /&gt;
You can use an appropriate executable to [[How to inject fake keystrokes|inject fake keystrokes]].&lt;br /&gt;
&lt;br /&gt;
For Debian users, tpb is started from {{path|/etc/X11/Xsession.d/90tpb}}.&lt;br /&gt;
&lt;br /&gt;
'''Sound Button configuration'''&lt;br /&gt;
&lt;br /&gt;
''Note: Tested on T60p with Ubuntu 6.06 LTS''&lt;br /&gt;
&lt;br /&gt;
Most Thinkpads have a hardware sound mixer, thus the volumes buttons should work without configuration. However, this change is not reflected in the software mixer. tpb has a switch to enable software mixer support via OSS. The manual recommends this only for devices without a hardware mixer, but it also works for other hadware mixer enabled devices, even with the ALSA system. Just put MIXER ON in your {{path|/etc/tpbrc}} file and you can see the effect immediately in any ALSA mixer (e.g. kmix). For this to work you need write permissions to {{path|/dev/nvram}}.&lt;br /&gt;
&lt;br /&gt;
''Note: Tested on X21 with Ubuntu 6.06 LTS''&lt;br /&gt;
&lt;br /&gt;
On the ThinkPad X21 (and maybe some other older models) ACPI causes problems with tpb.  On an X21 using acpi the volume buttons would work occasionally, and the OSD for tpb functions would rarely work.  If a volume buttons was pressed too often, sometimes the computer would enter a low power (unplugged state) and would require a reboot.  The solution is to use APM instead of ACPI.  Instructions can be found in [[How_to_make_APM_work]].&lt;br /&gt;
&lt;br /&gt;
===KMilo configuration===&lt;br /&gt;
The programs to be executed by [[KMilo]] are configured via the KDE Control Center (&amp;lt;tt&amp;gt;kcontrol&amp;lt;/tt&amp;gt;), under &amp;lt;tt&amp;gt;System Administration --&amp;gt; IBM Thinkpad Laptop&amp;lt;/tt&amp;gt;. Note that you can use appropriate commands to [[How to inject fake keystrokes|inject fake keystrokes]].&lt;br /&gt;
&lt;br /&gt;
===xmodmap configuration===&lt;br /&gt;
xmodmap enables you to edit the modifier map and keymap tables that are used to translate keycodes into keysyms.&lt;br /&gt;
Understood? Well, basically it allows you to give the X server a dictionary for the translation of keycodes like &amp;quot;97&amp;quot; into more human readable synonyms like &amp;quot;Home&amp;quot;. This way xmodmap allows you to make the special keys of your keyboard known to X applications.&lt;br /&gt;
&lt;br /&gt;
To discover the keycode that a certain keypress produces, use the tool {{cmduser|xev}} &lt;br /&gt;
&lt;br /&gt;
Usually you should write your keycode-keysym associations into the file {{path|~/.Xmodmap}}. This file is usually read by the X session startup scripts of your system, so that the mappings automatically get included everytime you run the X server.&lt;br /&gt;
&lt;br /&gt;
The {{path|~/.Xmodmap}} lines for our purpose are in the form of&lt;br /&gt;
 keycode &amp;lt;keycode&amp;gt; = &amp;lt;keysym&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load the assocation using the command&lt;br /&gt;
&lt;br /&gt;
{{cmduser|xmodmap ~/.Xmodmap}} &lt;br /&gt;
&lt;br /&gt;
(some configurations do this automatically upon X startup). &lt;br /&gt;
&lt;br /&gt;
The following table shows the keycodes generated by the ThinkPad special keys and sensible keysyms to assign them to.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ keycodes and recommended keysyms&lt;br /&gt;
! key !! keycode !! keysym&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || 159 || XF86LaunchA&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Backward|#494949}} || 234 || XF86Back or F19&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Forward|#494949}} || 233 || XF86Forward or F20&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Play/Pause|#494949}} || 162 || XF86AudioPlay&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Stop|#494949}} || 164 || XF86AudioStop&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Next|#494949}} || 153 || XF86AudioNext&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Previous|#494949}} || 144 || XF86AudioPrev&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| {{ibmkey|Home|#494949}} || 178 || XF86HomePage&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Search|#494949}} || 229 || XF86Search&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Mail|#494949}} || 236 || XF86Mail&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Favorites|#494949}} || 230 || XF86AddFavorite or XF86Favorites&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Reload|#494949}} || 231 || XF86Reload&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Abort|#494949}} || 232 || XF86Stop&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}} || 227 || F35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: You can also using xkeycaps(a tool graphically display and edit the X keyboard mapping) to generate proper .Xmodmap.&lt;br /&gt;
&lt;br /&gt;
Note: if you are running [[tpb]] you might need to add the line &amp;lt;tt&amp;gt;XEVENTS=off&amp;lt;/tt&amp;gt; into your tpbrc to stop it from grabbing the key events and allow them to get through to X instead. See [[http://www.thinkwiki.org/wiki/Tpb]] for more detailed instruction on how to use tpb and xmodmap.&lt;br /&gt;
&lt;br /&gt;
Note: XF86Forward and XF86Back do not work correctly in Firefox. You may want to map them to F19 and F20 instead if you use Firefox.&lt;br /&gt;
&lt;br /&gt;
=====Enabling the Windows and Menu Keys=====&lt;br /&gt;
On some systems the Windows and Menu keys may not be recognized.  You can enable then by&lt;br /&gt;
making the following changes:&lt;br /&gt;
&lt;br /&gt;
        keycode 115 = F13&lt;br /&gt;
        keycode 227 = F35&lt;br /&gt;
&lt;br /&gt;
F13 and F35 are used for the Windows and and Menu keys respectively.  Labelling keycpode 227 as &amp;quot;Menu&amp;quot; may conflict with the right-mouse-click event.&lt;br /&gt;
&lt;br /&gt;
=====Using Caps Lock as Super L (Windows key)=====&lt;br /&gt;
You can easily use Caps Lock as Win key by adding the following in your ~/.Xmodmap:&lt;br /&gt;
        ! No Caps Lock&lt;br /&gt;
        clear lock&lt;br /&gt;
        ! Caps Lock as Win key&lt;br /&gt;
        add mod4 = Caps_Lock&lt;br /&gt;
=====NumLock=====&lt;br /&gt;
On the ThinkPad {{600}}, {{T20}}, {{T21}}, {{T22}}, {{T30}}, {{X20}}, {{X21}},  {{X31}}, {{T43}}, {{R51}}, {{R52}} and possibly other models, X does not recognize the keycode for {{key|NumLk}} = {{key|Shift}}+{{key|ScrLk}}. To fix this, add the following to {{path|~/.Xmodmap}} in your home directory or {{path|/etc/X11/Xmodmap}} and run &amp;lt;tt&amp;gt;xmodmap&amp;lt;/tt&amp;gt;, ex: &amp;lt;tt&amp;gt;xmodmap ~/.Xmodmap&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 keycode 77 = Num_Lock&lt;br /&gt;
&lt;br /&gt;
===Mapping keys with setkeycodes===&lt;br /&gt;
You can use the setkeycodes command to remap certain keys. I.e. you can use {{cmdroot|setkeycodes 6e 109 6d 104 69 28 6b 1}} to map the Tablets Up and Down keys to the standard PageUp and PageDown keys and Tablet Escape and Enter to their respective keys.&lt;br /&gt;
&lt;br /&gt;
The following table shows the keycodes generated by the ThinkPad keys.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ keycodes&lt;br /&gt;
! key !! keycode&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet orientation|#494949}} || 0x6d&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Shortcut|#494949}} || 0x6e&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Esc|#494949}} || 0x6b&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Enter|#494949}} || 0x69&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Up|#494949}} || 0x68&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Down|#494949}} || 0x6c&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet (unlabeled)|#494949}} || 0x67&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Example Applications==&lt;br /&gt;
===Web Browsers===&lt;br /&gt;
====Firefox====&lt;br /&gt;
&lt;br /&gt;
There are various ways to assign actions to the browser keys. The easiest way is to install [http://mozilla.dorando.at/keyconfig.xpi keyconfig.xpi] from http://mozilla.dorando.at, which adds a menu entry Tools-&amp;gt;Keyconfig. Then you can assign any action you want to the F19/F20 keys (you still need to create {{path|~/.Xmodmap}} as explained above).&lt;br /&gt;
&lt;br /&gt;
The remaining discussion gives you various more complicated ways to achieve the same thing. &lt;br /&gt;
To have firefox make use of the browser keys you need to modify one of its files{{footnote|4}}.&lt;br /&gt;
To do this you will first need to extract it from the {{path|browser.jar}} archive. Do...&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|cd &amp;lt;firefox-directory&amp;gt;/chrome}}&amp;lt;br /&amp;gt;&lt;br /&gt;
:{{cmdroot|unzip browser.jar}}&lt;br /&gt;
&lt;br /&gt;
The file of interest is {{path|content/browser/browser.xul}}. Edit it {and don't forget to make a backup copy first}...&lt;br /&gt;
:{{cmdroot|vi content/browser/browser.xul}}&lt;br /&gt;
&lt;br /&gt;
Look for the '''&amp;lt;keyset id=&amp;quot;mainKeyset&amp;quot;&amp;gt;''' section and add the following lines within...&lt;br /&gt;
 &amp;lt;key id=&amp;quot;goBackKb&amp;quot; keycode=&amp;quot;VK_F19&amp;quot; command=&amp;quot;Browser:Back&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;key id=&amp;quot;goForwardKb&amp;quot; keycode=&amp;quot;VK_F20&amp;quot; command=&amp;quot;Browser:Forward&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Command you need for Next Tab &lt;br /&gt;
 &amp;lt;key id=&amp;quot;goBackTabKb&amp;quot; keycode=&amp;quot;VK_F19&amp;quot; oncommand=&amp;quot;gBrowser.mTabContainer.advanceSelectedTab(-1)&amp;quot; /&amp;gt;&lt;br /&gt;
For the Previous Tab &lt;br /&gt;
 &amp;lt;key id=&amp;quot;goForwardTabKb&amp;quot; keycode=&amp;quot;VK_F20&amp;quot; oncommand=&amp;quot;gBrowser.mTabContainer.advanceSelectedTab(1)&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now save the file and repackage the {{path|browser.jar}} archive...&lt;br /&gt;
:{{cmdroot|zip -rD0 browser.jar content/browser/}}&lt;br /&gt;
&lt;br /&gt;
That's it.&lt;br /&gt;
&lt;br /&gt;
{{HINT|For Firefox 2.0, just edit &amp;lt;firefox-directory&amp;gt;/chrome/browser/content/browser/browser.xul}}&lt;br /&gt;
&lt;br /&gt;
{{HINT|Outdated: Another interesting Page on Firefox is http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/ It uses different key mappings (F19 resp. F20) but a ready [http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/dqdnavkeys-1.2.xpi .xpi] is provided which is pretty comfortable. However, this xpi file does not install on Firefox 1.5. or later.}}&lt;br /&gt;
&lt;br /&gt;
{{HINT|Outdated: You can also use the [http://extensionroom.mozdev.org/more-info/keyconfig keyconfig] extension to configure custom keys.  This extension works with Firefox 1.5 but not with Firefox 2.0. The Command you need for Next Tab is gBrowser.mTabContainer.advanceSelectedTab(1,true); For Previous Tab its gBrowser.mTabContainer.advanceSelectedTab(-1,true); }}.&lt;br /&gt;
&lt;br /&gt;
====Konqueror====&lt;br /&gt;
KDE allows you set key mappings for KDE applications (Go to KMenu &amp;gt; System &amp;gt; Control Center &amp;gt; Regional &amp;amp; Accessibility &amp;gt; Keyboard Shortcuts). By default (at least in KDE 3.5), XF86Back and XF86Forward are set as alternatives to Alt-Left and Alt-Right, and are mapped to KDE Back and Forward navigation actions.  &lt;br /&gt;
&lt;br /&gt;
If you use Konqueror as your only browser, you only need to set up {{path|~/.Xmodmap}} as described [[#xmodmap configuration|above]] to assign ThinkPad back/forward keys to the symbols XF86Back/XF86Forward. This also make these keys work for other KDE applications such as Quanta Plus, KPackage and so on (not all KDE applications honor this setting, e.g. KDE help system doesn't).&lt;br /&gt;
&lt;br /&gt;
If you want to use Firefox, however, the above settings do not work. You will have to map ThinkPad back/forward keys to F19/F20 as described [[#Firefox|above]], and change KDE navigation key settings to use F19/F20 instead of the default.&lt;br /&gt;
&lt;br /&gt;
====Opera====&lt;br /&gt;
However this isn't a simple configration file, you can set your browser manually.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go to &amp;lt;i&amp;gt;Tool &amp;gt; Settings &amp;gt; Mouse and keyboard &amp;gt; Keyboard settings &amp;gt; Edit &amp;gt; Browser Window&amp;lt;/i&amp;gt;. There add F19 - Back and F20 - Forward. Now you can surf using your TP keys ;-)&lt;br /&gt;
&lt;br /&gt;
===Window Managers===&lt;br /&gt;
====fvwm====&lt;br /&gt;
To get the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys to cycle through pages in the virtual desktop, add this to your {{path|~/.fvwmrc}}:&lt;br /&gt;
 Key    XF86Back     A      A   Scroll     -100000   0&lt;br /&gt;
 Key    XF86Forward  A      A   Scroll     +100000   0&lt;br /&gt;
If you use multiple virtual desktops, you could instead use the keys to flip between them by using GotoDesk.&lt;br /&gt;
&lt;br /&gt;
====fluxbox====&lt;br /&gt;
To get the keys to cycle through pages in the virtual desktop, add this to your {{path|~/.fluxbox/keys}}:&lt;br /&gt;
 None F19 :PrevWorkspace&lt;br /&gt;
 None F20 :NextWorkspace&lt;br /&gt;
&lt;br /&gt;
====pekwm configuration====&lt;br /&gt;
You can make the two browser keys switch workspaces in pekwm, by adding the following two lines to the {{path|~/.pekwm/keys}} file:&lt;br /&gt;
 KeyPress = &amp;quot;Mod1 XF86Back&amp;quot; { Actions = &amp;quot;GoToWorkspace prev&amp;quot; }&lt;br /&gt;
 KeyPress = &amp;quot;Mod1 XF86Forward&amp;quot; { Actions = &amp;quot;GoToWorkspace next&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
====pwm====&lt;br /&gt;
Another example how to use these two keys to switch between pwm tabs. These two lines should be added to {{path|~/.pwm/keys-default.conf}} or {{path|/etc/pwm/keys-default.conf}}:&lt;br /&gt;
 kbind &amp;quot;Back&amp;quot;, &amp;quot;switch_rot&amp;quot;, -1&lt;br /&gt;
 kbind &amp;quot;Forward&amp;quot;, &amp;quot;switch_rot&amp;quot;, 1&lt;br /&gt;
&lt;br /&gt;
====IceWM====&lt;br /&gt;
To make IceWM cycle workspaces using the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys, change these two options in {{path|~/.icewm/preferences}} (Provided you assigned keysyms F19 and F20 with xmodmap):&lt;br /&gt;
 # &amp;quot;Previous workspace&amp;quot; shortcut&lt;br /&gt;
 KeySysWorkspacePrev=&amp;quot;F19&amp;quot;&lt;br /&gt;
 # &amp;quot;Next workspace&amp;quot; shortcut&lt;br /&gt;
 KeySysWorkspaceNext=&amp;quot;F20&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Other Uses===&lt;br /&gt;
====Console tools configuraton====&lt;br /&gt;
To make the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys useful in console, add this to your keymap ({{path|/etc/console/boottime.kmap.gz}} in {{Debian}}):&lt;br /&gt;
 keycode 158 = Decr_Console&lt;br /&gt;
 keycode 159 = Incr_Console&lt;br /&gt;
&lt;br /&gt;
Alternatively you can load this script (perhaps on system startup) to enable Backward/Forward button console (VT) switch:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 echo keycode 158 = Decr_Console | loadkeys&lt;br /&gt;
 echo keycode 159 = Incr_Console | loadkeys&lt;br /&gt;
&lt;br /&gt;
It should work with any distro.&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
*[http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-51537 IBMs page on configuring the ThinkPad buttons (ThinkPad, Access IBM, Mail, Search, and Home buttons) under Linux]&lt;br /&gt;
*[http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/ Rob Mayoffs page on using IBM Keyboard Navigation Keys in Linux Mozilla and Firefox]&lt;br /&gt;
*[http://snarfed.org/space/thinkpad+keys+in+firefox Ryan Barretts blog article about using the browser keys in Firefox]&lt;br /&gt;
*[http://chaotika.org/~bluesceada/?page=soft&amp;amp;sub=thinkpad#acpibutn DennisG's help to get the ibm-acpi buttons do useful things] on a {{Z61e}} and possibly {{Z61m}}, {{Z61t}} and {{Z61p}}&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#Note that the associated functionality for Fn-F* key combinations is not consistent amongst all ThinkPads. We are maintaining [[Default meanings of special keys|a table of associated meanings]].&lt;br /&gt;
#if there are more than one tool listed, one is sufficient&lt;br /&gt;
#'full' means you can completely reassign any action to be triggered by the key, 'additional actions' means you can trigger actions in addition to the standard function of the key, which can not be changed.&lt;br /&gt;
#Thanks go to Ryan Barrett for writing the [http://snarfed.org/space/thinkpad+keys+in+firefox little howto] on [http://snarfed.org/space/start his blog].&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=User_talk:Akw&amp;diff=31183</id>
		<title>User talk:Akw</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=User_talk:Akw&amp;diff=31183"/>
		<updated>2007-07-12T16:59:38Z</updated>

		<summary type="html">&lt;p&gt;Whoopie79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Has anybody got useful suggestions?&lt;br /&gt;
Feel free to tell them!&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 11:46, 25 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Suggestion: Introduction of Model-Type Categories ==&lt;br /&gt;
&lt;br /&gt;
Hei,&lt;br /&gt;
&lt;br /&gt;
first, thx for sysoping me. I feel honored. ;)&lt;br /&gt;
&lt;br /&gt;
I just thought that we could have categories representing the TP models (not too detailed)...like&lt;br /&gt;
ThinkpadR50, ThinkpadT40p, ThinkpadA21 and so on.&lt;br /&gt;
&lt;br /&gt;
This way we could add the specs, install notes and other pages to the according models category and this way provide a means of crossreferenced &amp;quot;show me all info about my model&amp;quot; access.&lt;br /&gt;
&lt;br /&gt;
What do you think?&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 12:13, 25 Sep 2004 (CEST)&lt;br /&gt;
&lt;br /&gt;
We could add the category views to the List in the Models section, since the specs are only attached to the model-numbers, not to the general name of the models.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 12:16, 25 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
Yes, that's a good idea, let's do it. I like the mediawiki category concept.&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 13:01, 25 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Hei, it works great.&lt;br /&gt;
&lt;br /&gt;
Seems like we got a good start. ;-)&lt;br /&gt;
I mean, two days and we already have some really useful cross reference information gathering functionality!&lt;br /&gt;
&lt;br /&gt;
However, i have three general issues we should make decisions about:&lt;br /&gt;
&lt;br /&gt;
#If we rename all the Model categories to just T40, 600, X23, they would not all be sorted under T in the Models category, hence leading to better organisation. The backdrawing is that this causes them to spread out in the category listing that one can get by clicking on the Categories link of categorised pages. I think the advantage is bigger than the backdrawing, right? (Good that i just added a lot of them to different pages. ;) )&lt;br /&gt;
#We are using these strange not very expressive internal link names. Mediawiki seems to handle expressive names quite well, so shouldn't we just use real page titles as their links? Makes things easier for editors, makes things more readable in Category views and finally gives us nicer titles to the pages.&lt;br /&gt;
#Is there a way here to get some kind of back-buttons automatically included into the pages? I've seen that the wiki does this on subpages of userpages, but i tried giving hirarchical link structures (with slashes) in the install section and it didn't work the same way. Else i think we should sooner or later start including them by hand.&lt;br /&gt;
&lt;br /&gt;
Greets...[[User:Wyrfel|Wyrfel]] 19:38, 25 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
Hi,&lt;br /&gt;
I think so too, hope some others from the mailing list will join the building process.&lt;br /&gt;
&lt;br /&gt;
Issues:&lt;br /&gt;
#Renaming of the model categories: I think it's a good idea! I see if I can patch the mediawiki software to the the Categories link point to ''Category:Main_Page''. I don't like the ''Special:Categories'' anyway, because it shows no treeview.&lt;br /&gt;
#awful pagenames: YES! ''T40psidInstallation'' could be also ''Installing Debian/Sid on a T40p''. Would be much nicer. :-)&lt;br /&gt;
#back-buttons:I don't know if there is an automatically working template or something. I will find it out.&lt;br /&gt;
&lt;br /&gt;
By the way: I saw you are experimenting with designs for the mainpage. My approach was just a quick hack (basically copying from wikipedia..) &lt;br /&gt;
So if you have something nice-looking, just apply it! :-)&lt;br /&gt;
&lt;br /&gt;
See you, [[User:Akw|akw]] 13:13, 26 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Hi,&lt;br /&gt;
&lt;br /&gt;
ok, i'll start adjusting pages then. I agree to your point about the Category view...having the Link point to Categories:Main_Page would be nicer.&lt;br /&gt;
&lt;br /&gt;
Concerning the designs...i'd like to experiment a bit more before applying it to the page...not really satisfied so far. However - i got used to your block layout. ;)&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 13:28, 26 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
* [[:Category:Main_Page]] ''link patch'': done.&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 14:09, 26 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Great work. I think we are through with point 1 and 2 now.&lt;br /&gt;
&lt;br /&gt;
The Category-Main page looks nice with the pic. I thought that we could add a specific picture to each Models category page. Would be nice.&lt;br /&gt;
I started gathering pictures the like of yours (white background, isometric perspective). I could scale them to a standard size.&lt;br /&gt;
Do you have any idea where i could find them all at once or more quickly than searching google images?&lt;br /&gt;
(Also thought about creating icons for the main page, but that will take a while (to be expected in november the earliest.)&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 15:28, 26 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Hei,&lt;br /&gt;
&lt;br /&gt;
i just transformed all the distro pages into categories, gives similar advantages as with the ThinkPad models. Also relayouted them a bit while at it.&lt;br /&gt;
&lt;br /&gt;
The bad news is that today is the last day i can do something, probably until middle of october, since the Telekom doesn't manage to give me a new phoneline in time, and from 6th to 12th i'll be in holidays. So good luck...i hope i get the line earlier, but you know the Telekom, i guess.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 12:16, 29 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
Hi Wyrfel,&lt;br /&gt;
&lt;br /&gt;
YES... I know the Telekom... Happy holidays, anyway :-) Thanks for all the work.&lt;br /&gt;
&lt;br /&gt;
Ciao, [[User:Akw|akw]] 12:54, 29 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== dynamic 3Dfps ==&lt;br /&gt;
&lt;br /&gt;
Hei,&lt;br /&gt;
&lt;br /&gt;
great work you did there again! Some suggestions: A sorting mechanism would be nice (best via up and down arrows on the table headers like in gtk apps) and a filter functionality (via select boxes in the table headers maybe?).&lt;br /&gt;
Also, the dynamic page doesn't have a talk page associated, do you think you might be able to move it there?&lt;br /&gt;
&lt;br /&gt;
Best wishes...&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 01:48, 13 Oct 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
* Sorting/Filtering: Yes, I thought about that, too: I will do it when I find time.&lt;br /&gt;
* Talk page: Unfortunately, &amp;quot;SpecialPages&amp;quot; cannot have discussion. So I put the discussion on the Header-Template ([[Template:Benchmarks_Header]]) which appears on the top of [[Special:Benchmarks]].&lt;br /&gt;
--[[User:Akw|akw]] 12:59, 14 Oct 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
I finished sorting and filtering now. Just have a look at it. :-)&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 21:54, 15 Oct 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I'm impressed. ;) Really.&lt;br /&gt;
Do you do something in the web area professionally?&lt;br /&gt;
----&lt;br /&gt;
Thanks!&lt;br /&gt;
Not yet, I am still a student, but I hope I'll get my studies finished in March/April 2005.&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 15:19, 16 Oct 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== edit page modding? ==&lt;br /&gt;
&lt;br /&gt;
Hei,&lt;br /&gt;
&lt;br /&gt;
can you tell me how i can change the edit pages footer? Can't find any info about it and would like to put the policies page there. Is there a special template for this?&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 06:41, 29 Dec 2004 (CET)&lt;br /&gt;
----&lt;br /&gt;
Hmm, don't know. I'll have a look.. Thanks for creating [[Help:Editing]], that's great!&amp;lt;br /&amp;gt;Have a happy new year!&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 20:31, 30 Dec 2004 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
You, too.&lt;br /&gt;
&lt;br /&gt;
[[User:217.230.181.21|217.230.181.21]] 04:43, 31 Dec 2004 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Hei, please let the logo contest go until 28th of february at least, i'd like to submit something, but I'll be on holidays until 23rd. ;-)&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 03:34, 27 Jan 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
Hi [[User:Wyrfel|Wyrfel]],&lt;br /&gt;
&lt;br /&gt;
superb! that's great!&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 10:20, 28 Jan 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Hei,&lt;br /&gt;
&lt;br /&gt;
could you please update the MediaWiki to at least 1.4? We have the problem that one can't use the same template more than 5 times on one page. This is fixed since 1.4. Thanks a lot.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 03:00, 2 May 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== R51p?? ==&lt;br /&gt;
&lt;br /&gt;
Are you sure the 'R51p' exists?&lt;br /&gt;
&lt;br /&gt;
There is no mention of it on the IBM support site, and tabook.pdf, trwbook.pdf, tawbook.pdf or twbook.pdf also does not mention it.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
You're right, removed it.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 13:02, 5 May 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===ThinkWiki Update===&lt;br /&gt;
This is great! Thanks a lot. Unfortunately i can't help with the mod_rewrite problem. At work we had trouble with it as well, but i don't know any details about it. Good luck!&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel]] 12:46, 12 May 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
Me agian. ;-) Just wanted to thank you for fixing the image display. (In case this happend accidentially...some images weren't found after the update. It seems to work for all of them now again.)&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 02:31, 20 May 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== page moves/deletes ==&lt;br /&gt;
&lt;br /&gt;
Can you move the following pages:&lt;br /&gt;
&lt;br /&gt;
These machines where marketed with lower-case 'c'&lt;br /&gt;
*360CS -&amp;gt; 360Cs&lt;br /&gt;
*750CS -&amp;gt; 750Cs&lt;br /&gt;
*755CS -&amp;gt; 755Cs&lt;br /&gt;
All the Other 'CS' where marketed with upper-case, so they are fine.&lt;br /&gt;
&lt;br /&gt;
Also can you delete the '701' page, it never existed as discussed on its talk page.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Did these. We also have a mention of a 750e on the [[750 Family Device Support in Linux]] page. This doesn't have a category page, yet and information seems hard to gather. Tonko, if you know anything about it..... ;-)&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 00:05, 27 May 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I guess you mean the reference to a '750Ce'. I can find no reference to it in tabook, and also my EMEA references make no mention of it, so I doubt it was sold in either the Americas or EMEA. Could this simply be confusion with the 755CE?&lt;br /&gt;
&lt;br /&gt;
Tonko&lt;br /&gt;
----&lt;br /&gt;
Can you delete the '365' page, such a machine did not exist.&amp;lt;br&amp;gt;&lt;br /&gt;
What did exist was the 365CS, 365C, 365CSD and 365CD for which I created pages.&lt;br /&gt;
&lt;br /&gt;
Also are you sure the 700T existed? it is not in twbook, and my EMEA references do not have it either.&lt;br /&gt;
&lt;br /&gt;
Tonko&lt;br /&gt;
----&lt;br /&gt;
===Vandalism &amp;amp;amp; Spamming===&lt;br /&gt;
Hei,&lt;br /&gt;
&lt;br /&gt;
is there a way you can delete the Vova22 and Vova38 user accounts? They have been used for spamming only.&lt;br /&gt;
&lt;br /&gt;
Also, since we get the same kind of spamming attacs over and over again now and the responsible person uses different IPs, is there a way to prevent edits based on their content?&lt;br /&gt;
&lt;br /&gt;
Regards,&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 03:36, 13 Oct 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
My guess is that this guy is probably using an anonymous proxy such as http://tor.eff.org/ such that his IP address is different each time.&lt;br /&gt;
blocking the IP as such has little effect. Not sure what can be done about it, perhaps as you said we can try to block specific content but that just gets us in the same game spam blockers are in.&lt;br /&gt;
&lt;br /&gt;
Another option would be to require users to login to edit pages, and make it such that bots cannot be used to create userids. But again, I am not sure that is the right option either. But looking at the changes made, the vast majority of valid changes seem to come from people who have a userid...&lt;br /&gt;
&lt;br /&gt;
--[[User:Tonko|Tonko]] 15:25, 13 Oct 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
I don't like requiring people to login to edit, but it might be worth thinking about if one can really keep bots from creating accounts. However, this would still allow real person vandalism and we would end up with junk user accounts that are not easy to remove. Also, how would we prevent bots from creating accounts? I do not like the &amp;quot;type the number in the picture below&amp;quot; kind of thing.&lt;br /&gt;
&lt;br /&gt;
I was thinking about something like if a certain text is included in the edit, the whole edit would be rejected or offered for reediting. This way we would only have to maintain a list of links (or even domains) that we don't want to have here. Our job would not be as tough than that of spam blockers, cause we have a limited content target and hence can be sure that certain content is to be excluded.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 17:28, 13 Oct 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
For the moment I have protected the Help:Contents page since it seems to be a constant target, and I suspect it is a bot using an anonymous proxy.&lt;br /&gt;
&lt;br /&gt;
--[[User:Tonko|Tonko]] 22:43, 13 Oct 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
Sounds reasonable. I think we can even keep it protected, because standard users normally don't edit there. [[User:Wyrfel|Wyrfel]] 02:46, 14 Oct 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Yet another MediaWiki upgrade ==&lt;br /&gt;
&lt;br /&gt;
Hi Akw,&lt;br /&gt;
&lt;br /&gt;
Thanks for running this great site! It really changed the &amp;quot;ThinkPad experience&amp;quot; for me.&lt;br /&gt;
&lt;br /&gt;
There were several MediaWiki security updates released since the present version 1.4.4, and the new MediaWiki 1.5.x offers some nifty features like diff during preview. Any chance of an upgrade?&lt;br /&gt;
----&lt;br /&gt;
Maybe I try the upgrade for christmas ;-)&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 12:59, 26 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I'm trying to provide variable-width notes using the conditional templates (&amp;quot;Template:If defined&amp;quot; etc.) from Wikipedia, but they don't work on ThinkWiki. I guess this is also because of the old MediaWiki version...&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 04:08, 27 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Spam filtering ==&lt;br /&gt;
&lt;br /&gt;
Judging by the weather, it must be spam season. Maybe it's possible to reject or silently drop posts based on strings/regexps? Most recent spam seems to have been posted by the same tool, whose favoriate conversation piece are&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;zuenwa1651&amp;quot; style=&amp;quot;overflow: auto; height: 1px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=exf align='center' style='overflow:auto; height: 1px;'&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe this will buy us some quiet (until the next step in the spammers vs. humans arms race).&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 23:37, 10 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Perhaps it is possible to use $wgSpamBlacklist to setup a regex that blocks the most common spam keywords?&lt;br /&gt;
&lt;br /&gt;
http://meta.wikimedia.org/wiki/Anti-spam_Features&lt;br /&gt;
&lt;br /&gt;
--[[User:Tonko|Tonko]] 03:11, 18 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Good idea, I'll check that tonight or tomorrow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 17:02, 19 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
== file uploads disabled ==&lt;br /&gt;
&lt;br /&gt;
Hi,&lt;br /&gt;
&lt;br /&gt;
As I mentioned already on the [[Issues with the Wiki]] page, file uploads are disabled.&lt;br /&gt;
&lt;br /&gt;
--[[User:Tonko|Tonko]] 15:21, 15 January 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Thank you, I fixed this now.&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 18:11, 15 January 2006 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
&lt;br /&gt;
Just wondering - is there presently some mechanism for off-site backup of all content (database, images, configuration)? If not, I can help with that.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 20:57, 10 February 2006 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Given the recent database trouble, I'm becoming a bit concerned for our data... What's the situation backup-wise? My offer of help still stands.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 18:02, 22 February 2006 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Seconded, this Wiki is way too valuable to let it go up in smoke in case the server dies. So in case help is needed, just tell us. BTW, I just noticed this server is located in the same data center I have a couple of servers in, so backup wouldn't even count as 'external' traffic.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 19:43, 22 February 2006 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Agreed. I can also provide backup access and space for online (but not live, i.e. not as a backup wiki) site.&lt;br /&gt;
&lt;br /&gt;
Also, it would be very valuable to be able to download the entire wiki to DVD or somesuch, for offline reference. Make that a &amp;quot;paid option&amp;quot;, and it could even help thinkwiki...&lt;br /&gt;
&lt;br /&gt;
--[[User:Hmh|hmh]] 2006-02-24 01:39 UTC&lt;br /&gt;
&lt;br /&gt;
Hi everyone,&lt;br /&gt;
&lt;br /&gt;
The ThinkWiki database is backuped daily, so in case of a harddisk crash, no data would be lost. ;-)&lt;br /&gt;
But nevertheless thanks for the backup space offerings. Maybe it will become useful in the future.&lt;br /&gt;
I will talk about the DVD idea with the other admins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 15:54, 24 February 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
The DVD backup is not a bad idea, but causes work for someone. Also, it should be scheduled sensibly, like every quarter of a year or so.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 13:51, 27 February 2006 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I think Hmn intended the DVDs as a feature for offline reference, not as a backup. For backups, a copy rsynced to an off-line server is just as good.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 14:04, 27 February 2006 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Can you publish dumps anyway, like [http://en.wikipedia.org/wiki/Wikipedia:Database_download Wikipedia does]? I'd like to have a local copy, if only for the warm fuzzy feeling... You know what [http://groups.google.com/group/linux.dev.kernel/msg/76ae734d543e396d Linus says] about backups. :-)&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 02:07, 27 July 2006 (CEST)&lt;br /&gt;
----&lt;br /&gt;
==email for registration confirmation and forgotten password doesn't work==&lt;br /&gt;
Hi,&lt;br /&gt;
my password was not accepted so I used the &amp;quot;Email password&amp;quot; button on the login page. The mail never arrived. So I registered a new account, but the promised confirmation email also never arrived.&lt;br /&gt;
&lt;br /&gt;
Thanks for having a look at this issue.&lt;br /&gt;
&lt;br /&gt;
--[[User:Whoopie79|Whoopie79]] 16:59, 12 July 2007 (UTC)&lt;/div&gt;</summary>
		<author><name>Whoopie79</name></author>
		
	</entry>
</feed>