<?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=RichardNeill</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=RichardNeill"/>
	<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/wiki/Special:Contributions/RichardNeill"/>
	<updated>2026-05-04T12:42:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_a_QXGA_display_in_a_R/T60_or_61&amp;diff=51519</id>
		<title>Installing a QXGA display in a R/T60 or 61</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_a_QXGA_display_in_a_R/T60_or_61&amp;diff=51519"/>
		<updated>2011-05-09T06:49:35Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For 15.0&amp;quot; machines, you can install a QXGA (2048x1536) panel, the highest resolution panel ever sold for any laptop.&lt;br /&gt;
&lt;br /&gt;
=Compatibility=&lt;br /&gt;
All 15.0&amp;quot; 60 machines - R60e, R60, T60, T60p&lt;br /&gt;
Possibly all 15.0&amp;quot; 61 machines - R61i, R61 (has anyone tested this?)&lt;br /&gt;
Frankenstein machines using a 60/61 15.0&amp;quot; chassis and a 60/61 14.1&amp;quot; standard screen motherboard (T61p motherboard in T60p case is most common, but others may work)&lt;br /&gt;
&lt;br /&gt;
=Additional hardware necessary=&lt;br /&gt;
If you have an XGA machine, I would recommend buying the SXGA+/UXGA inverter for your model. For the R6x machines, this is 41W1467. For the T60, this is 42T0079. Obviously, you'll need to buy the screen, which goes under several different part numbers, I'll list them in the next question. Otherwise, no additional hardware is needed - unlike the R5x and T4x machines, the 6x machines use the same cable and hinges for all screens, and uses an EDID ROM chip on the LCD to detect the screen resolution and that the panel is a Lenovo panel (which will have to be worked around.)&lt;br /&gt;
&lt;br /&gt;
=Compatible screen part numbers=&lt;br /&gt;
There are two different screens that are otherwise identical, that will work for this. IDTech part numbers are listed first, followed by IBM part numbers.&lt;br /&gt;
IAQX10N, 07N2890&lt;br /&gt;
IAQX10S, 92P6684&lt;br /&gt;
&lt;br /&gt;
IAQX10S is the panel that IBM used in the R50p equipped with this screen. I believe the IAQX10N was used by NEC in the Versa Pro VA20S/AE (way back in 2002) and possibly a certain configuration of the LaVie G Type C in 2005. The IAQX10N is what's flooded the market - if you don't mind a refurbished panel, you can get one as low as $59. New ones are as low as $139. Either one will work, though, so if you've got a cheap IAQX10S (or even an old one from a R50p that you want to move over,) go for it.&lt;br /&gt;
&lt;br /&gt;
=EDID ROM info=&lt;br /&gt;
Most monitors have a ROM containing Extended Display Information Data, or EDID. This information is used by the machine that the monitor is connected to, so as to provide resolution, timing, and manufacturer information. The R5x and T4x machines stored this information in the BIOS, I believe, and used a set of resistors in the LCD cable to choose which EDID the system would operate with.&lt;br /&gt;
&lt;br /&gt;
The 6x machines change this. They store the EDID info in a chip on the LCD that's meant for this purpose, and also have a vendor string in the LCD. The purpose of that vendor string is to identify the LCD panel as a Lenovo genuine panel, and the machine refuses to recognize the LCD if it's not Lenovo.&lt;br /&gt;
&lt;br /&gt;
Here is the current EDID data as of 2009-06-22, created by cirthix from the thinkpads.com forum with some information from Troels, also from there:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;EDID BYTES:&lt;br /&gt;
0x   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F&lt;br /&gt;
    ------------------------------------------------&lt;br /&gt;
00 | 00 FF FF FF FF FF FF 00 30 AE 49 40 00 00 00 00&lt;br /&gt;
10 | 00 13 01 03 80 1E 16 78 EA BD 30 91 54 4F 8B 26&lt;br /&gt;
20 | 21 50 54 21 08 00 81 80 A9 40 01 01 01 01 01 01&lt;br /&gt;
30 | 01 01 01 01 01 01 29 40 00 50 80 00 05 60 20 10&lt;br /&gt;
40 | 13 00 30 E4 10 00 00 19 29 40 00 40 80 00 05 60&lt;br /&gt;
50 | 20 10 13 00 30 E4 10 00 00 19 00 00 00 0F 00 A9&lt;br /&gt;
60 | 43 32 A9 43 28 14 02 00 09 E5 00 00 00 00 00 FE&lt;br /&gt;
70 | 00 49 41 51 58 31 30 4E 20 51 58 47 41 0A 00 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Directions=&lt;br /&gt;
&lt;br /&gt;
Note: These directions were not performed on a machine equipped with WWAN. It may be different on such a machine. If in doubt, follow the procedure listed in the Hardware Maintenance Manual instead.&lt;br /&gt;
&lt;br /&gt;
==Preparation==&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
#Purchase and install a copy of PowerStrip, make sure that it works, and that you can access the registered features.&lt;br /&gt;
#Put the contents of the EDID data into a file named qxga.dat.&lt;br /&gt;
&lt;br /&gt;
{{NOTE|This is not always necessary. I bought a panel, popped it into my T60, and it just worked. I had already purchased PowerStrip by this point, so $30 down the drain. Also, be aware that purchasing PowerStrip is a royal pain. First, although it is an on-line purchase, it is not instant. You are e-mailed a registration key later. Second, newer versions of PowerStrip lock away the EDID update functionality. You need to e-mail the company that makes it who will send you a special PIN code to activate. You will have a pretty substantial turnaround time to get it working (buy power strip, get e-mailed registration, e-mail asking for PIN, get e-mailed back a PIN).}}&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
use i2c-dump from the i2c-tools package.&lt;br /&gt;
&lt;br /&gt;
you may check the current content with ''i2cdump -r 0-127 2 0x50' first. Afterwards, use i2cset -y 2 0x50 &amp;lt;offset&amp;gt; &amp;lt;value&amp;gt; to change the bytes that differ. This method may be a bit more complex for some users (i don't know how easy it is with powerstrip though), but has the advantage that it doesn't cost anything.&lt;br /&gt;
&lt;br /&gt;
(On my T60p with a IAQX10N, the i2c commands needed to look at bank 1 rather than 2, i.e.  ''i2cdump -f -r 0-127 1 0x50''; it's also necessary to modprobe the relevant i2c modules. The i2cset process works but it is quite painstaking and needs to be carefully checked.)&lt;br /&gt;
&lt;br /&gt;
==Procedure==&lt;br /&gt;
&lt;br /&gt;
This is a simpler procedure than would be mentioned by the HMM. Except for the parts about running PowerStrip and an external monitor, these directions would be sufficient to replace a shattered LCD with another identical LCD, as well.&lt;br /&gt;
&lt;br /&gt;
#Remove the three round screw covers and screws on the LCD bezel.&lt;br /&gt;
#GENTLY pop the LCD bezel loose. Set it aside.&lt;br /&gt;
#Now that the bezel is removed, you can lift the inverter up out of its well, and unplug the LCD from the inverter.&lt;br /&gt;
#Remove the three rectangular screw covers and screws on each side of the LCD.&lt;br /&gt;
#Being careful to note cable routing, slowly lift the LCD out of the cover, grabbing it from the bottom first, so as to clear the latches.&lt;br /&gt;
#As soon as you can remove the cable from the back, STOP removing the LCD, and remove the tape, going from the top of the LCD to the bottom. Unplug by pulling down on the cable, carefully. You'll probably end up disengaging the ThinkLight, note how it goes into its holder. That's fine. If you didn't disengage it, go ahead and do so - it'll give you more cable to work with.&lt;br /&gt;
#Now the old LCD is free. You'll need to remove the two rails from the old LCD, being sure to note the orientation.&lt;br /&gt;
#Install the rails on the new LCD in the same orientation.&lt;br /&gt;
#Here comes the fiddly part. Take the LCD cable, and fold it in an S shape (NOT SHARPLY, though) so that the ThinkLight cable is higher than it would be, plug it into the LCD, and tape it down.&lt;br /&gt;
#At this point, plug in an external monitor, power on the machine, and press Fn-F7 immediately to switch to the external monitor. Boot into Windows. Start PowerStrip, go to Options, and Monitor information. Go to Options at the bottom of the dialog, and select Update EDID. You will get a dialog saying &amp;quot;EEPROM Found:&amp;quot; and a monitor name. Be careful to not reflash your external monitor, which will most likely be the first thing that comes up - hit no, and reflash the other monitor that will come up (make sure it actually is different.) Use the qxga.dat file you made during preparation.&lt;br /&gt;
#Now that the monitor's reflashed, shut the machine down, unplug the external monitor, and power back up. You should have a working display at this point. Either way, power the machine off. If you don't have a working display, make sure all connections are intact. If it's still not working, and the backlight is off, shine a flashlight at the LCD, to see if there's an image. If the backlight is on, try flashing the LCD again.&lt;br /&gt;
#Insert the ThinkLight back into its holder - I believe you need to insert the back of it first. Make sure the LCD is fully installed, and that the inverter and all cables are in place.&lt;br /&gt;
#Insert the screws that go on each side. You may have to push down slightly on the LCD to get the screw holes to line up.&lt;br /&gt;
#Power the machine up again, and make sure it it's working. Yes, you're checking again. And make sure the inverter is lined up.&lt;br /&gt;
#If all is good, go ahead and install the bezel. Be sure ALL the clips all around the LCD are clipped in, screw it down, and reinstall all the screw covers. Congratulations, you're done!&lt;br /&gt;
&lt;br /&gt;
=BIOS vs OS=&lt;br /&gt;
&lt;br /&gt;
If the Panel is not flashed with the new EDID, the BIOS will not display anything useful, but will show garbage: RGB vertical stripes. However, if the OS boots, it may still be able to use the panel from within X. (This is my experience on a T60p (converting a failed 1600x1200 panel to 2048x1536), with Ubuntu Lucid; I then flashed the EDID in order to have a usable BIOS)&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[http://forum.thinkpads.com/viewtopic.php?f=29&amp;amp;t=77733 The Complete 6x-series QXGA Thread] on thinkpads.com&lt;br /&gt;
&lt;br /&gt;
[[Category:R60]] [[Category:R60e]] [[Category:R61i]] [[Category:R61]] [[Category:T60]] [[Category:T60p]]&lt;br /&gt;
'''Bold tex'''Bold text'''t'''&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_a_QXGA_display_in_a_R/T60_or_61&amp;diff=51518</id>
		<title>Installing a QXGA display in a R/T60 or 61</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_a_QXGA_display_in_a_R/T60_or_61&amp;diff=51518"/>
		<updated>2011-05-09T06:45:33Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Preparation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For 15.0&amp;quot; machines, you can install a QXGA (2048x1536) panel, the highest resolution panel ever sold for any laptop.&lt;br /&gt;
&lt;br /&gt;
=Compatibility=&lt;br /&gt;
All 15.0&amp;quot; 60 machines - R60e, R60, T60, T60p&lt;br /&gt;
Possibly all 15.0&amp;quot; 61 machines - R61i, R61 (has anyone tested this?)&lt;br /&gt;
Frankenstein machines using a 60/61 15.0&amp;quot; chassis and a 60/61 14.1&amp;quot; standard screen motherboard (T61p motherboard in T60p case is most common, but others may work)&lt;br /&gt;
&lt;br /&gt;
=Additional hardware necessary=&lt;br /&gt;
If you have an XGA machine, I would recommend buying the SXGA+/UXGA inverter for your model. For the R6x machines, this is 41W1467. For the T60, this is 42T0079. Obviously, you'll need to buy the screen, which goes under several different part numbers, I'll list them in the next question. Otherwise, no additional hardware is needed - unlike the R5x and T4x machines, the 6x machines use the same cable and hinges for all screens, and uses an EDID ROM chip on the LCD to detect the screen resolution and that the panel is a Lenovo panel (which will have to be worked around.)&lt;br /&gt;
&lt;br /&gt;
=Compatible screen part numbers=&lt;br /&gt;
There are two different screens that are otherwise identical, that will work for this. IDTech part numbers are listed first, followed by IBM part numbers.&lt;br /&gt;
IAQX10N, 07N2890&lt;br /&gt;
IAQX10S, 92P6684&lt;br /&gt;
&lt;br /&gt;
IAQX10S is the panel that IBM used in the R50p equipped with this screen. I believe the IAQX10N was used by NEC in the Versa Pro VA20S/AE (way back in 2002) and possibly a certain configuration of the LaVie G Type C in 2005. The IAQX10N is what's flooded the market - if you don't mind a refurbished panel, you can get one as low as $59. New ones are as low as $139. Either one will work, though, so if you've got a cheap IAQX10S (or even an old one from a R50p that you want to move over,) go for it.&lt;br /&gt;
&lt;br /&gt;
=EDID ROM info=&lt;br /&gt;
Most monitors have a ROM containing Extended Display Information Data, or EDID. This information is used by the machine that the monitor is connected to, so as to provide resolution, timing, and manufacturer information. The R5x and T4x machines stored this information in the BIOS, I believe, and used a set of resistors in the LCD cable to choose which EDID the system would operate with.&lt;br /&gt;
&lt;br /&gt;
The 6x machines change this. They store the EDID info in a chip on the LCD that's meant for this purpose, and also have a vendor string in the LCD. The purpose of that vendor string is to identify the LCD panel as a Lenovo genuine panel, and the machine refuses to recognize the LCD if it's not Lenovo.&lt;br /&gt;
&lt;br /&gt;
Here is the current EDID data as of 2009-06-22, created by cirthix from the thinkpads.com forum with some information from Troels, also from there:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;EDID BYTES:&lt;br /&gt;
0x   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F&lt;br /&gt;
    ------------------------------------------------&lt;br /&gt;
00 | 00 FF FF FF FF FF FF 00 30 AE 49 40 00 00 00 00&lt;br /&gt;
10 | 00 13 01 03 80 1E 16 78 EA BD 30 91 54 4F 8B 26&lt;br /&gt;
20 | 21 50 54 21 08 00 81 80 A9 40 01 01 01 01 01 01&lt;br /&gt;
30 | 01 01 01 01 01 01 29 40 00 50 80 00 05 60 20 10&lt;br /&gt;
40 | 13 00 30 E4 10 00 00 19 29 40 00 40 80 00 05 60&lt;br /&gt;
50 | 20 10 13 00 30 E4 10 00 00 19 00 00 00 0F 00 A9&lt;br /&gt;
60 | 43 32 A9 43 28 14 02 00 09 E5 00 00 00 00 00 FE&lt;br /&gt;
70 | 00 49 41 51 58 31 30 4E 20 51 58 47 41 0A 00 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Directions=&lt;br /&gt;
&lt;br /&gt;
Note: These directions were not performed on a machine equipped with WWAN. It may be different on such a machine. If in doubt, follow the procedure listed in the Hardware Maintenance Manual instead.&lt;br /&gt;
&lt;br /&gt;
==Preparation==&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
#Purchase and install a copy of PowerStrip, make sure that it works, and that you can access the registered features.&lt;br /&gt;
#Put the contents of the EDID data into a file named qxga.dat.&lt;br /&gt;
&lt;br /&gt;
{{NOTE|This is not always necessary. I bought a panel, popped it into my T60, and it just worked. I had already purchased PowerStrip by this point, so $30 down the drain. Also, be aware that purchasing PowerStrip is a royal pain. First, although it is an on-line purchase, it is not instant. You are e-mailed a registration key later. Second, newer versions of PowerStrip lock away the EDID update functionality. You need to e-mail the company that makes it who will send you a special PIN code to activate. You will have a pretty substantial turnaround time to get it working (buy power strip, get e-mailed registration, e-mail asking for PIN, get e-mailed back a PIN).}}&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
use i2c-dump from the i2c-tools package.&lt;br /&gt;
&lt;br /&gt;
you may check the current content with ''i2cdump -r 0-127 2 0x50' first. Afterwards, use i2cset -y 2 0x50 &amp;lt;offset&amp;gt; &amp;lt;value&amp;gt; to change the bytes that differ. This method may be a bit more complex for some users (i don't know how easy it is with powerstrip though), but has the advantage that it doesn't cost anything.&lt;br /&gt;
&lt;br /&gt;
(On my T60p with a IAQX10N, the i2c commands needed to look at bank 1 rather than 2, i.e.  ''i2cdump -f -r 0-127 1 0x50''; it's also necessary to modprobe the relevant i2c modules. The i2cset process works but it is quite painstaking and needs to be carefully checked.)&lt;br /&gt;
&lt;br /&gt;
==Procedure==&lt;br /&gt;
&lt;br /&gt;
This is a simpler procedure than would be mentioned by the HMM. Except for the parts about running PowerStrip and an external monitor, these directions would be sufficient to replace a shattered LCD with another identical LCD, as well.&lt;br /&gt;
&lt;br /&gt;
#Remove the three round screw covers and screws on the LCD bezel.&lt;br /&gt;
#GENTLY pop the LCD bezel loose. Set it aside.&lt;br /&gt;
#Now that the bezel is removed, you can lift the inverter up out of its well, and unplug the LCD from the inverter.&lt;br /&gt;
#Remove the three rectangular screw covers and screws on each side of the LCD.&lt;br /&gt;
#Being careful to note cable routing, slowly lift the LCD out of the cover, grabbing it from the bottom first, so as to clear the latches.&lt;br /&gt;
#As soon as you can remove the cable from the back, STOP removing the LCD, and remove the tape, going from the top of the LCD to the bottom. Unplug by pulling down on the cable, carefully. You'll probably end up disengaging the ThinkLight, note how it goes into its holder. That's fine. If you didn't disengage it, go ahead and do so - it'll give you more cable to work with.&lt;br /&gt;
#Now the old LCD is free. You'll need to remove the two rails from the old LCD, being sure to note the orientation.&lt;br /&gt;
#Install the rails on the new LCD in the same orientation.&lt;br /&gt;
#Here comes the fiddly part. Take the LCD cable, and fold it in an S shape (NOT SHARPLY, though) so that the ThinkLight cable is higher than it would be, plug it into the LCD, and tape it down.&lt;br /&gt;
#At this point, plug in an external monitor, power on the machine, and press Fn-F7 immediately to switch to the external monitor. Boot into Windows. Start PowerStrip, go to Options, and Monitor information. Go to Options at the bottom of the dialog, and select Update EDID. You will get a dialog saying &amp;quot;EEPROM Found:&amp;quot; and a monitor name. Be careful to not reflash your external monitor, which will most likely be the first thing that comes up - hit no, and reflash the other monitor that will come up (make sure it actually is different.) Use the qxga.dat file you made during preparation.&lt;br /&gt;
#Now that the monitor's reflashed, shut the machine down, unplug the external monitor, and power back up. You should have a working display at this point. Either way, power the machine off. If you don't have a working display, make sure all connections are intact. If it's still not working, and the backlight is off, shine a flashlight at the LCD, to see if there's an image. If the backlight is on, try flashing the LCD again.&lt;br /&gt;
#Insert the ThinkLight back into its holder - I believe you need to insert the back of it first. Make sure the LCD is fully installed, and that the inverter and all cables are in place.&lt;br /&gt;
#Insert the screws that go on each side. You may have to push down slightly on the LCD to get the screw holes to line up.&lt;br /&gt;
#Power the machine up again, and make sure it it's working. Yes, you're checking again. And make sure the inverter is lined up.&lt;br /&gt;
#If all is good, go ahead and install the bezel. Be sure ALL the clips all around the LCD are clipped in, screw it down, and reinstall all the screw covers. Congratulations, you're done!&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[http://forum.thinkpads.com/viewtopic.php?f=29&amp;amp;t=77733 The Complete 6x-series QXGA Thread] on thinkpads.com&lt;br /&gt;
&lt;br /&gt;
[[Category:R60]] [[Category:R60e]] [[Category:R61i]] [[Category:R61]] [[Category:T60]] [[Category:T60p]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problem_with_display_remaining_black_after_resume&amp;diff=46111</id>
		<title>Problem with display remaining black after resume</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problem_with_display_remaining_black_after_resume&amp;diff=46111"/>
		<updated>2010-02-19T19:52:09Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Solution for ThinkPads with ATI graphic chips and Intel 915/945GM - works for X41 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There has been a problem encountered where the display stays black on resuming from suspend.&lt;br /&gt;
&lt;br /&gt;
The symptom might have you think first that your system hang up, but you will realize that your ThinkPad works and you can even reset it via {{key|Ctrl}}{{key|Alt}}{{key|Del}}.&lt;br /&gt;
&lt;br /&gt;
==Affected Models==&lt;br /&gt;
*ThinkPad {{T41p}}, {{T42}}, {{T42p}}, {{T43}}, {{T43p}}, {{T60}}, {{T60p}}, {{T61}}, {{T61p}}&lt;br /&gt;
*Thinkpad {{T23}}&lt;br /&gt;
*ThinkPad {{X21}}, {{X30}}, {{X31}}, {{X40}}, {{X41}}&lt;br /&gt;
*ThinkPad {{R31}}, {{R50e}}{{footnote|1}}, {{R50p}}, {{R51}} (with BIOS 1.11), {{R52}}, {{R60}}, {{R61}}&lt;br /&gt;
*ThinkPad {{A30p}}&lt;br /&gt;
*ThinkPad {{390X}} (doesn't wake up; LCD backlight on, harddrive light remains on)&lt;br /&gt;
*ThinkPad {{Z60t}}, {{Z60m}}, {{Z61m}}, {{Z61e}}&lt;br /&gt;
*ThinkPad {{X60s}}, {{X60}}, {{X61}}, {{X61s}}, {{X200}}&lt;br /&gt;
&lt;br /&gt;
==Affected Operating Systems==&lt;br /&gt;
*Linux (it's a kernel issue)&lt;br /&gt;
*FreeBSD (6.x at least)&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
===Quick workaround for R61i, T23, maybe others===&lt;br /&gt;
Try pressing CTRL+ALT+F1 to switch to text console. The backlight should come on normally. Press CTRL+ALT+F7 to return to X.&lt;br /&gt;
&lt;br /&gt;
On a T23 using Ubuntu Feisty, pressing Fn+F7 (external/internal display change) once or twice brought the display back.  After upgrading to Ubuntu Gutsy it doesn't work anymore, but pressing Fn+F3 (blank screen) and Fn (restore display) works.&lt;br /&gt;
&lt;br /&gt;
===Quick Workaround for R61 (at least 8918-5QG) using NVidia===&lt;br /&gt;
&lt;br /&gt;
Use Vesa driver instead of the proprietary NVidia driver.&lt;br /&gt;
&lt;br /&gt;
===Quick Workaround for T61 (at least 7662-CTO) using NVidia Quadro NVS 140===&lt;br /&gt;
&lt;br /&gt;
Try pressing Fn+F4 to get the OS suspend to RAM. Nothing on the screen will indicate that the OS is being suspended except for the Sleep LED. Wake up the OS by pressing the Fn key. This induces an additional 5-10 seconds of work. But this has consistently worked with no issues.&lt;br /&gt;
&lt;br /&gt;
===Pseudo-solution for R61===&lt;br /&gt;
On an R61 running Fedora Core 9, the nv driver fails to turn the backlight on after resuming from a suspend to RAM. I fixed this by using the proprietary NVIDIA Linux drivers (v177.82).&lt;br /&gt;
&lt;br /&gt;
=== Solution for ThinkPad Z60t ===&lt;br /&gt;
&lt;br /&gt;
* '''Display controller:''' Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)&lt;br /&gt;
* '''Distro:''' Fedora release 7 (Moonshine)&lt;br /&gt;
* '''Kernel:''' Linux 2.6.22.5-76.fc7&lt;br /&gt;
&lt;br /&gt;
The solution is straight forward - just to add configuration parameter for the default '''pm-utils''' package. Create file &amp;lt;code&amp;gt;/etc/pm/config.d/config&amp;lt;/code&amp;gt; and put there one line &amp;lt;code&amp;gt;DISPLAY_QUIRK_S3_BIOS=&amp;quot;true&amp;quot;&amp;lt;/code&amp;gt;, or execute following command:&lt;br /&gt;
&lt;br /&gt;
 echo DISPLAY_QUIRK_S3_BIOS=\&amp;quot;true\&amp;quot; &amp;gt;&amp;gt; /etc/pm/config.d/config&lt;br /&gt;
&lt;br /&gt;
===Semi-Solution for ThinkPad X60 with damaged system after s2ram usage===&lt;br /&gt;
It happend when restarting a s2ram-session.&lt;br /&gt;
&lt;br /&gt;
'''Symptom:''' Black screen with blinking &amp;quot;_&amp;quot; sign remaind. (without the &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
'''System status:''' HDD idle, fan running, everything else looks to wait for something to happen.&lt;br /&gt;
&lt;br /&gt;
'''Semi-Solution:''' Booting with DVD-ROM and going through the installations menu,&lt;br /&gt;
where you choose &amp;quot;other&amp;quot; and &amp;quot;boot a installed system&amp;quot; (something like that). Gladly it works,&lt;br /&gt;
and OpenSuSE 10.1 comes up with 50% &amp;quot;failed&amp;quot; messages! I than shutdown properly, rebooted again&lt;br /&gt;
and had 100% &amp;quot;done&amp;quot; again, with no other things affected.&lt;br /&gt;
&lt;br /&gt;
'''Further:''' Repairing with the DVD-ROM crashed massivly(!), so I selected &amp;quot;boot a installed system&amp;quot; as final&lt;br /&gt;
solution and it worked!&lt;br /&gt;
&lt;br /&gt;
'''Unknown:''' Maybe the Solution for ThinkPads with 1400x1050 internal LCD and Intel 915GM will help,&lt;br /&gt;
because X60s and X60 are very familiar. (Not tested so far.)&lt;br /&gt;
&lt;br /&gt;
(If this Problem is not right here, please edit and move.)&lt;br /&gt;
&lt;br /&gt;
===Solution for ThinkPads with 1400x1050 internal LCD and Intel 915GM ===&lt;br /&gt;
see [[1400x1050 on Intel 915GM]].&lt;br /&gt;
===Solution for ThinkPads with ATI graphic chips and Intel 915/945GM ===&lt;br /&gt;
&lt;br /&gt;
Affected models include {{X41}}, {{X60s}}, {{X200s}}, {{R60}} and {{T60}}.&lt;br /&gt;
&lt;br /&gt;
This soluton also applies to T42 with Intel 855 and ATI 9600 M10.&lt;br /&gt;
&lt;br /&gt;
One solution may be to provide the {{bootparm|acpi_sleep|s3_bios}} kernel parameter in your kernel parameter line.&lt;br /&gt;
&lt;br /&gt;
For grub this would look like this:&lt;br /&gt;
&lt;br /&gt;
 title           Linux, kernel 2.6.11-1-686&lt;br /&gt;
 root            (hd0,0)&lt;br /&gt;
 kernel          /boot/vmlinuz-2.6.11-1-686 root=/dev/hda1 ro acpi_sleep=s3_bios&lt;br /&gt;
 initrd          /boot/initrd.img-2.6.11-1-686&lt;br /&gt;
 savedefault&lt;br /&gt;
 boot&lt;br /&gt;
&lt;br /&gt;
For lilo it would look like this:&lt;br /&gt;
&lt;br /&gt;
 image=/boot/vmlinuz&lt;br /&gt;
     append=&amp;quot;acpi_sleep=s3_bios&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The actual process of going to sleep is then managed through a sleep script; as a start, see the {{path|sleep.sh}} script in the Extreme Graphics 2 section below, but note the following comments:&lt;br /&gt;
&lt;br /&gt;
In [[:Category:OpenSUSE|OpenSUSE]] 10.1 (at least on a T43p), it's necessary to override the default options for s2ram if you're using the newer ATI driver.  This can be done putting {{bootparm|SUSPEND2RAM_FORCE|&amp;quot;yes&amp;quot;}} and {{bootparm|SUSPEND2RAM_ACPI_SLEEP|&amp;quot;3&amp;quot;}} in {{path|/etc/powersave/sleep}}.&lt;br /&gt;
&lt;br /&gt;
In {{Ubuntu}} or {{Kubuntu}}, it may be necessary to modify {{path|/etc/default/acpi-support}}.  In that file, make sure that {{path|ACPI_SLEEP}} is uncommented and set to true.  With ATI chips, also make sure that {{path|SAVE_VBE_STATE}} is uncommented and set to true; with Intel chips, on the other hand, ensure that nothing is done with respect to VBE--no reposts, no state saves. Also commenting POST_VIDEO may help. &lt;br /&gt;
&lt;br /&gt;
In {{Fedora}}, it may be necessary with the Intel chips to edit the {{path|resume_video()}} function in {{path|/etc/pm/functions-intel}} to comment out the VBE post and restore.  (As of FC6 these seem to be pre-commented out.)  Also, the laptop, after waking up, may go back to sleep immediately or whenever the AC adapter is disconnected.  When this happens, it's caused by a bug in the HAL daemon that incorrectly reports certain ACPI events.  This is a known problem and a simple workaround is described [http://live.gnome.org/GnomePowerManager/Faq#head-b8b1280115b0a51c2cc27b13a57121130ebf36cb here].&lt;br /&gt;
&lt;br /&gt;
{{NOTE|It is possible this method will not work if the laptop is docked.  It is also possible that the cited workaround for the HAL daemon bug will not work on some machines.  A kludgier workaround in this event is to kill the HAL daemon on suspend.  This necessitates the resuscitation of GPM upon resume.}}&lt;br /&gt;
&lt;br /&gt;
Another solution is to use vbetool. If you are using {{Debian}} with the hibernate package, uncomment &amp;quot;EnableVbetool yes&amp;quot; in {{path|/etc/hibernate/hibernate.conf}} (or {{path|/etc/hibernate/ram.conf}}).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
On '''T60 2007-CTO''' (Core2Duo 2Ghz, 2GB Ram, ATI X1400) the screen stayed blank after suspend-to-ram until I set '''vga=0''' in lilo.conf.&lt;br /&gt;
&lt;br /&gt;
Working config:&lt;br /&gt;
 Linux 2.6.21.5&lt;br /&gt;
 fglrx 8.37.6&lt;br /&gt;
 debian etch:&lt;br /&gt;
  powersaved 0.14.0-5:&lt;br /&gt;
   UNLOAD_MODULES_BEFORE_SUSPEND2DISK=&amp;quot;usb_storage ohci_hcd uhci_hcd ehci_hcd ipw3945 pcmcia yenta_socket rsrc_nonstatic pcmcia_core&amp;quot;&lt;br /&gt;
   UNLOAD_MODULES_BEFORE_SUSPEND2RAM=&amp;quot;usb_storage ohci_hcd uhci_hcd ehci_hcd ipw3945 pcmcia yenta_socket rsrc_nonstatic pcmcia_core&amp;quot;   &lt;br /&gt;
  hibernate:&lt;br /&gt;
   SwitchToTextMode yes&lt;br /&gt;
  lilo.conf:&lt;br /&gt;
   vga=0&lt;br /&gt;
&lt;br /&gt;
&amp;quot;EnableVbetool yes&amp;quot; and other suggestions didn't work for me.&lt;br /&gt;
&lt;br /&gt;
For suspend-to-disk, don't load fglrx in initrd.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
On '''T60-20076RG''' (Core2Duo 2GHz, ATI X1400) with {{OpenSUSE}} 11.1 and fglrx 8-12 the following had to be done to get suspend to RAM always resume:&lt;br /&gt;
* Add {{bootparm|S2RAM_QUIRKS_SOURCE|&amp;quot;s2ram&amp;quot;}} to file {{path|/etc/pm/config.d/config}}&lt;br /&gt;
* Create an executable script {{path|/etc/pm/sleep.d/00text}} containing:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
         hibernate|suspend)&lt;br /&gt;
                 /bin/chvt 1&lt;br /&gt;
                 ;;&lt;br /&gt;
         thaw|resume)&lt;br /&gt;
                 /bin/chvt 7&lt;br /&gt;
                 ;;&lt;br /&gt;
 esac&lt;br /&gt;
&lt;br /&gt;
There seems to be a bug ([https://bugzilla.novell.com/show_bug.cgi?id=463434 Novell bugzilla]) which makes it impossible for s2ram to switch to text console while suspending through pm-suspend. The script above forces console change. Along with setting s2ram as quirks source (which makes it correctly set acpi_bios before suspend - to s3_bios,s3_mode&lt;br /&gt;
for T60 2007*) this can make resume work flawlessly despite using vesafb.&lt;br /&gt;
&lt;br /&gt;
===Solution for ThinkPads with Intel Extreme Graphics 2===&lt;br /&gt;
{{NOTE|&lt;br /&gt;
On [[:Category:X40|X40]]s/[[:Category:X41|X41]]s - even with Intel Extreme Graphics - and for [[:Category:R52|R52]]s with Intel Graphics Media Accelerator 900 the [[Problem with display remaining black after resume#Solution for ThinkPads with ATI graphic chips|solution for ATI graphics chips]] above is reported to work. In this case, make sure no changes to VBE are made, especially no state saves and no reposts.}}&lt;br /&gt;
&lt;br /&gt;
The following solution should work on 865G, 865GV, 855GM, 855GME, 852GME chipsets.&lt;br /&gt;
*First of all, '''do not''' use the {{bootparm|acpi_sleep|s3_bios}} kernel parameter.&lt;br /&gt;
*Second, completely remove framebuffer support from your kernel. If it's built as modules, it is important that they do not get loaded at all.&lt;br /&gt;
*Before suspending, change to a console and safe the video state with {{cmdroot|cat /proc/bus/pci/00/02.0 &amp;gt; /tmp/video_state}}.&lt;br /&gt;
*On resume, restore the video state with {{cmdroot|cat /tmp/video_state &amp;gt; /proc/bus/pci/00/02.0}} and change back to X.&lt;br /&gt;
*For Debian Etch 4.0 on R50e just make following changes to /etc/default/acpi-support:&lt;br /&gt;
 #SAVE_VBE_STATE=true&lt;br /&gt;
 #VBESTATE=/var/lib/acpi-support/vbestate&lt;br /&gt;
 #POST_VIDEO=true&lt;br /&gt;
 SAVE_VIDEO_PCI_STATE=true&lt;br /&gt;
&lt;br /&gt;
*For a R50e the only thing needed to make suspend to ram work in Ubuntu 6.06 is adding&lt;br /&gt;
 Option  &amp;quot;VBERestore&amp;quot; &amp;quot;yes&amp;quot;&lt;br /&gt;
to the &amp;lt;tt&amp;gt;Device&amp;lt;/tt&amp;gt; section in your {{path|/etc/X11/xorg.conf}}, and the example script below.&lt;br /&gt;
&lt;br /&gt;
The following example {{path|/etc/acpi/actions/sleep.sh}} script shows how to integrate the according lines.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 # change to console 1&lt;br /&gt;
 FGCONSOLE=`fgconsole`&lt;br /&gt;
 chvt 6&lt;br /&gt;
 &lt;br /&gt;
 # safe video state&lt;br /&gt;
 cat /proc/bus/pci/00/02.0 &amp;gt; /tmp/video_state&lt;br /&gt;
 &lt;br /&gt;
 # sync filesystem&lt;br /&gt;
 sync&lt;br /&gt;
 &lt;br /&gt;
 # sync hardware clock with system time&lt;br /&gt;
 hwclock --systohc&lt;br /&gt;
 &lt;br /&gt;
 # go to sleep&lt;br /&gt;
 echo -n 3 &amp;gt; /proc/acpi/sleep&lt;br /&gt;
 &lt;br /&gt;
 # waking up&lt;br /&gt;
 # restore system clock&lt;br /&gt;
 hwclock --hctosys&lt;br /&gt;
 &lt;br /&gt;
 # restore video state&lt;br /&gt;
 cat /tmp/video_state &amp;gt; /proc/bus/pci/00/02.0&lt;br /&gt;
 &lt;br /&gt;
 # change back to X&lt;br /&gt;
 chvt $FGCONSOLE&lt;br /&gt;
 &lt;br /&gt;
 # clean up behind us&lt;br /&gt;
 rm /tmp/video_state&lt;br /&gt;
&lt;br /&gt;
With Ubuntu 6.10 on a [[:Category:R51|R51 (2887-32G)]] I ''just'' (as none of the other tricks above) had to add {{bootparm|fb|false}} to the kernel line in {{path|/etc/grub/menu.lst}} and edit {{path|/etc/defaults/acpi-support}} this way:&lt;br /&gt;
&lt;br /&gt;
 SAVE_VBE_STATE=false&lt;br /&gt;
 POST_VIDEO=false&lt;br /&gt;
 SAVE_VIDEO_PCI_STATE=true&lt;br /&gt;
 USE_DPMS=false&lt;br /&gt;
 DOUBLE_CONSOLE_SWITCH=false&lt;br /&gt;
&lt;br /&gt;
===Solution for ThinkPads with Intel I830 Chipset===&lt;br /&gt;
The following solution worked for me on an X30 with I830M chipset with kernel &amp;gt;= 2.6.16.&lt;br /&gt;
*this works with vesafb and also with intelfb frambuffer support.&lt;br /&gt;
The following example {{path|/etc/acpi/actions/sleep.sh}} script shows how to integrate the according lines.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 FGCONSOLE=`fgconsole`&lt;br /&gt;
 chvt 8&lt;br /&gt;
 sync&lt;br /&gt;
 hwclock --systohc&lt;br /&gt;
 &lt;br /&gt;
 echo -n &amp;quot;mem&amp;quot; &amp;gt; /sys/power/state&lt;br /&gt;
 &lt;br /&gt;
 hwclock --hctosys&lt;br /&gt;
 vbetool post&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$FGCONSOLE&amp;quot; -ge &amp;quot;7&amp;quot; ] ; then&lt;br /&gt;
   chvt $FGCONSOLE&lt;br /&gt;
 else&lt;br /&gt;
   chvt 7&lt;br /&gt;
   chvt $FGCONSOLE&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
If it still doesn't work try to add&lt;br /&gt;
 Option  &amp;quot;ForceEnablePipeA&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
to the &amp;lt;tt&amp;gt;Device&amp;lt;/tt&amp;gt; section in your {{path|/etc/X11/xorg.conf}}.&lt;br /&gt;
&lt;br /&gt;
===Solution for ThinkPads with ATI graphic (and possibly other) chips and FreeBSD===&lt;br /&gt;
&lt;br /&gt;
The FreeBSD acpi(4) manpage mentions a tunable parameter, &amp;quot;hw.acpi.reset_video&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    hw.acpi.reset_video&lt;br /&gt;
             Reset the video adapter from real mode during the resume path.&lt;br /&gt;
             Some systems need this help, others have display problems if it&lt;br /&gt;
             is enabled.  Default is 0 (disabled).&lt;br /&gt;
&lt;br /&gt;
This tunable can be set by adding the following line to your FreeBSD machine's /boot/loader.conf file:&lt;br /&gt;
&lt;br /&gt;
    hw.acpi.reset_video=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And rebooting your machine.  Hopefully, the next time you resume from a suspend, you'll see your video again.  This solution doesn't appear to be specific to ATI hardware in any way, so I presume it would be helpful for video chipsets other than ATI, as well.&lt;br /&gt;
&lt;br /&gt;
If this entry doesn't help you, you might consider searching in the [http://lists.freebsd.org/pipermail/freebsd-mobile/ FreeBSD-Mobile email-list archive] for more insight.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#If you have this problem with R50e and the above solution doesn't work, try switching to console first. An example sleep script can be found [[How to configure acpid|here]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Solution using s2ram for Intel 915/945GM===&lt;br /&gt;
&lt;br /&gt;
Just using the &amp;quot;s2ram -f -p&amp;quot; command from the uswsusp package will work from within X, at least on a {{Z61e}}. On {{X60s}} it is enough to issue the &amp;quot;s2ram&amp;quot; command and it works. On {{X61}} &amp;quot;s2ram -f -a 1&amp;quot; can work properly. Best idea seems to be to put this into the corresponding acpi script:&lt;br /&gt;
&lt;br /&gt;
 % cat /etc/acpi/sleep.sh &lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 test -f /usr/share/acpi-support/power-funcs || exit 0&lt;br /&gt;
 test -f /usr/sbin/s2ram || exit 0&lt;br /&gt;
 rmmod usb_storage&lt;br /&gt;
 rmmod uhci_hcd&lt;br /&gt;
 rmmod ehci_hcd&lt;br /&gt;
 /usr/sbin/s2ram -f -a 1 -m&lt;br /&gt;
 modprobe uhci_hcd&lt;br /&gt;
 modprobe ehci_hcd&lt;br /&gt;
 modprobe usb_storage&lt;br /&gt;
&lt;br /&gt;
Source: [http://d.hatena.ne.jp/conceal-rs/20080309/1205083315 http://d.hatena.ne.jp/conceal-rs/20080309/1205083315]&lt;br /&gt;
Works on my X61.&lt;br /&gt;
&lt;br /&gt;
===Solution using DOUBLE_CONSOLE_SWITCH===&lt;br /&gt;
&lt;br /&gt;
By setting the following in {{path|/etc/default/acpi-support}} the display comes back on {{X61s}} using Intel chipset:&lt;br /&gt;
&lt;br /&gt;
     DOUBLE_CONSOLE_SWITCH=true&lt;br /&gt;
&lt;br /&gt;
Fedora 8 doesn't have DOUBLE_CONSOLE_SWITCH, but it works when one does:  First, add option &amp;quot;VBERestore&amp;quot; &amp;quot;true&amp;quot; to /etc/X11/xorg.conf&lt;br /&gt;
&lt;br /&gt;
    Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier  &amp;quot;Videocard0&amp;quot;&lt;br /&gt;
        Driver      &amp;quot;intel&amp;quot;&lt;br /&gt;
        Option      &amp;quot;VBERestore&amp;quot;  &amp;quot;true&amp;quot; &lt;br /&gt;
    EndSection&lt;br /&gt;
&lt;br /&gt;
Then suspends with&lt;br /&gt;
&lt;br /&gt;
    pm-suspend --quirk-vbemode-restore --quirk-s3-bios&lt;br /&gt;
&lt;br /&gt;
===Solution for nvidia-drivers-180* series===&lt;br /&gt;
&lt;br /&gt;
The proprietary NVidia drivers of the 180 series introduce several problems with suspend to ram:&lt;br /&gt;
&lt;br /&gt;
* Situation 1: Suspend from console, '''no''' X-Server running:&amp;lt;br/&amp;gt;&lt;br /&gt;
You might need to use vbetool to save and restore the vbestate.&lt;br /&gt;
When using hibernate-script, this can be done by setting the following config variables:&lt;br /&gt;
 EnableVbetool yes&lt;br /&gt;
 RestoreVbeStateFrom /var/lib/vbetool/vbestate&lt;br /&gt;
 VbetoolPost yes&lt;br /&gt;
&lt;br /&gt;
You may need to run &amp;lt;code&amp;gt;mkdir -p /var/lib/vbetool &amp;amp;&amp;amp; vbetool vbestate save &amp;gt; /var/lib/vbetool/vbestate&amp;lt;/code&amp;gt; first.&lt;br /&gt;
&lt;br /&gt;
On newer distributions, you might need to '''not''' use vbetool.  On a Ubuntu Hardy with Linux 2.6.24, and probably on other Debian-based distributions, edit '/etc/default/acpi-support' and set 'SAVE_VBE_STATE=false'. &lt;br /&gt;
&lt;br /&gt;
* Situation 2: Suspend from running X-Server:&amp;lt;br/&amp;gt;&lt;br /&gt;
You '''cannot''' use vbetool or any other quirks, since it seems to confuse the nvidia X driver. That means you should enter S3 simply by doing &amp;lt;code&amp;gt;echo mem &amp;gt; /sys/power/state&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you have your hotkeys handled by acpid, you might differentiate those two cases by checking for a running X process in your hotkey handler (i.e. &amp;lt;code&amp;gt;/etc/acpid/default.sh&amp;lt;/code&amp;gt;):&lt;br /&gt;
 pgrep -x X &amp;gt; /dev/null \          # checks for running process with name &amp;quot;X&amp;quot;&lt;br /&gt;
  &amp;amp;&amp;amp; echo mem &amp;gt; /sys/power/state   # if found, do plain S3 suspend&lt;br /&gt;
  || hibernate-ram                 # otherwise, run quirked script&lt;br /&gt;
&lt;br /&gt;
Furthermore, it seems to be a good idea to use the 180 series with a 2.6.28* kernel.&lt;br /&gt;
&lt;br /&gt;
It has been reported that acpi_sleep=S3_bios should be used instead of acpi_sleep=S3_mode&lt;br /&gt;
as a boot option.&lt;br /&gt;
&lt;br /&gt;
See, http://www.nvnews.net/vbulletin/showthread.php?t=123303&amp;amp;highlight=suspend&amp;amp;page=6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It might also help to put &amp;lt;code&amp;gt;blacklist intel_agp &amp;lt;/code&amp;gt;&lt;br /&gt;
in &amp;lt;code&amp;gt;/etc/modprobe.d/blacklist&lt;br /&gt;
&lt;br /&gt;
Finally, it seems to depend on precise model nr.&lt;br /&gt;
See&lt;br /&gt;
https://bugs.launchpad.net/ubuntu/+bug/235284&lt;br /&gt;
for a discussion and patch.&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_reduce_power_consumption&amp;diff=46096</id>
		<title>How to reduce power consumption</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_reduce_power_consumption&amp;diff=46096"/>
		<updated>2010-02-18T13:01:57Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* USB Subsystem - added power-level (this is what powertop's U does) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reducing system power consumption will extend battery life, reduce system&lt;br /&gt;
temperature and (on some models) reduce system fan noise.&lt;br /&gt;
Power consumption can be greatly improved from a stock distribution configuration&lt;br /&gt;
to a fine tuned system. The general rules are :&lt;br /&gt;
* Unload drivers for unused devices (ie. USB 1.1, Yenta/PCMCIA, Wireless, IRDA, Bluetooth, ...)&lt;br /&gt;
* Reduce polling on devices (drives, USB subsystem, nvram, use SATA AN, ...)&lt;br /&gt;
* Reduce hard drive activity&lt;br /&gt;
* Reduce LCD brightness to the minimum you can stand&lt;br /&gt;
* Reduce CPU wakeups, so it can stay longer in deep power saving c-states&lt;br /&gt;
* Make use of every hardware devices availables power saving features (AHCI ALPM, USB autosuspend, Alsa and Wireless powersaving modes, HPET timers, ...)&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
Arjan van de Ven's [[PowerTOP]] utility&lt;br /&gt;
is a gold mine to improve energy efficiency, but is almost only CPU-oriented. This tool helps to easily detect&lt;br /&gt;
the top power offenders, both userland and kernel modules, which prevent the use of CPU power saving mechanisms and sometime suggest &lt;br /&gt;
fixes accordingly.&lt;br /&gt;
PowerTOP users collected some [http://www.lesswatts.org/projects/powertop/known.php tips &amp;amp; tricks]&lt;br /&gt;
and an informative [http://www.lesswatts.org/projects/powertop/faq.php faq].&lt;br /&gt;
&lt;br /&gt;
Alternatively (or complementary) to PowerTOP, running &amp;lt;code&amp;gt;strace -p $(pidof yourapp)&amp;lt;/code&amp;gt; &lt;br /&gt;
for all your favorite or background running applications while they are expected to be &lt;br /&gt;
idle, will show the misbehaviors.&lt;br /&gt;
&lt;br /&gt;
Beside CPU wakeups, disks spins are also power hungry. To detect what make your disk spinning,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 sysctl vm.block_dump=1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will list all applications causing disks wakeups on the kernel's dmesg.&lt;br /&gt;
Other useful tools for this purpose are blktrace, iostat and lm-profiler&lt;br /&gt;
(from laptop-mode-tools suite).&lt;br /&gt;
&lt;br /&gt;
See also [[#Misbehaving Userland]].&lt;br /&gt;
&lt;br /&gt;
==BIOS settings==&lt;br /&gt;
===Enabling Power Management===&lt;br /&gt;
Some Thinkpad BIOS (like 2.08 BIOS on {{X40}}) offer two very lame options,&lt;br /&gt;
with a very misleading online help (saying &amp;quot;Usually not needed&amp;quot;). That's&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 CPU power management: (default disabled)&lt;br /&gt;
 PCI bus power management: (default disabled)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should indeed ''enable'' them, else the deepest C3 and C4 ACPI C-states&lt;br /&gt;
are disabled.&lt;br /&gt;
&lt;br /&gt;
===Disabling I/O Ports===&lt;br /&gt;
The BIOS (at least version 3.11 on {{X200}}) can also be used to disable I/O ports, like PCMCIA/CardBus.  Although this requires a reboot to change settings, using the BIOS rather than a configuration file will survive distribution changes and may make it easier to remember how to re-enable a port.  Disabling these devices can reduce power consumption by several watts.&lt;br /&gt;
&lt;br /&gt;
==CPU==&lt;br /&gt;
Look at:&lt;br /&gt;
* [[How to make use of Dynamic Frequency Scaling]]&lt;br /&gt;
* [[Pentium M undervolting and underclocking]]&lt;br /&gt;
&lt;br /&gt;
A good thing to keep in mind is that every CPU wakeup, even if it's for&lt;br /&gt;
a trivial light job, reduce the time the CPU stays on a deep power&lt;br /&gt;
saving C-state (like C3 or C4). Therefore you should ensure your applications&lt;br /&gt;
stay really idle when they meant to be idle (track shorts select timeouts&lt;br /&gt;
in loop, etc. with [[PowerTOP]]).&lt;br /&gt;
&lt;br /&gt;
Also note that manually locking the CPU in the lowest P-state (frequency) &lt;br /&gt;
available is '''not''' an efficient way to improve battery lifetime. This will&lt;br /&gt;
cause the CPU to stay longer in C0 (power hungry C-state) doing hard work when &lt;br /&gt;
there is something to do, while it could have done this work faster by augmenting&lt;br /&gt;
the CPU freq, and returned back faster to a deeper, economic, C-state and to a&lt;br /&gt;
lower frequency (P-state).&lt;br /&gt;
The best is to let the kernel select the appropriates CPU frequencies by itself&lt;br /&gt;
with the help of in kernel CPU governors.&lt;br /&gt;
Have a look at [http://www.bughost.org/pipermail/power/2007-May/000166.html this explanation]&lt;br /&gt;
from Intel's kernel developer Arjan van de Ven.&lt;br /&gt;
&lt;br /&gt;
==Kernel settings and patches==&lt;br /&gt;
&lt;br /&gt;
===General settings===&lt;br /&gt;
The 2.6.21 kernel brought some very effective changes (like [[dynticks]]). &lt;br /&gt;
Later, 2.6.24-rc2 brought a lot of other power efficiency improvements. &lt;br /&gt;
If it's not already on your distribution and you value power efficiency, &lt;br /&gt;
you may think about compiling a recent kernel yourself. &lt;br /&gt;
&lt;br /&gt;
Here are a few options (beside the ACPI and APM related one) that matter to &lt;br /&gt;
reduce power consumption or to help diagnosing consumers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 # From PowerTOP's FAQ:&lt;br /&gt;
 CONFIG_NO_HZ&lt;br /&gt;
 CONFIG_HIGH_RES_TIMERS&lt;br /&gt;
 CONFIG_HPET&lt;br /&gt;
 CONFIG_HPET_TIMER&lt;br /&gt;
 CONFIG_CPU_FREQ_GOV_ONDEMAND&lt;br /&gt;
 CONFIG_USB_SUSPEND&lt;br /&gt;
 CONFIG_SND_AC97_POWER_SAVE&lt;br /&gt;
 CONFIG_SND_HDA_POWER_SAVE&lt;br /&gt;
 CONFIG_SND_HDA_POWER_SAVE_DEFAULT=3&lt;br /&gt;
 CONFIG_TIMER_STATS&lt;br /&gt;
 CONFIG_ACPI_BATTERY&lt;br /&gt;
 CONFIG_CPU_FREQ_STAT&lt;br /&gt;
 CONFIG_INOTIFY&lt;br /&gt;
&lt;br /&gt;
 # Not from the PowerTOP FAQ:&lt;br /&gt;
 CONFIG_BLK_DEV_IO_TRACE&lt;br /&gt;
 CONFIG_X86_ACPI_CPUFREQ&lt;br /&gt;
 CONFIG_X86_SPEEDSTEP_CENTRINO depreciated as of kernel 2.6.24, use CONFIG_X86_ACPI_CPUFREQ&lt;br /&gt;
 CONFIG_X86_SPEEDSTEP_ICH&lt;br /&gt;
 CONFIG_X86_SPEEDSTEP_SMI&lt;br /&gt;
 CONFIG_CPU_IDLE&lt;br /&gt;
 CONFIG_CPU_IDLE_GOV_LADDER&lt;br /&gt;
 CONFIG_CPU_IDLE_GOV_MENU&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Those options are already in Fedora Core 7 and Ubuntu Gutsy (not Feisty) default i686 kernels.&lt;br /&gt;
PowerTOP FAQ also suggest to '''disable'''&lt;br /&gt;
CONFIG_IRQBALANCE and CONFIG_ACPI_DEBUG.&lt;br /&gt;
&lt;br /&gt;
Also, you need to properly set APM and ACPI. Look at:&lt;br /&gt;
* [[Power Management]]&lt;br /&gt;
* [[How to make use of Power Management features]]&lt;br /&gt;
&lt;br /&gt;
=== Kernel boot and module loading options ===&lt;br /&gt;
If you have an Intel chipset ICH5 or later (cf. lspci output), as in most modern Thinkpads, you should&lt;br /&gt;
be using the integrated HPET timer (saves about 30 CPU wake ups per second). To see if&lt;br /&gt;
hpet is enabled on your laptop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 grep hpet /proc/timer_list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this does not display &amp;quot;Clock Event Device: hpet&amp;quot;, then add &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 hpet=force&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{WARN|The ICH4 does have an HPET, but it is disabled for a good reason: Intel didn't test/validade it!  Use of the ICH4 HPET is '''not''' recommended}}&lt;br /&gt;
&lt;br /&gt;
to your kernel boot options (usualy in /boot/grub/menu.lst or lilo.conf). &lt;br /&gt;
Note that &amp;quot;hpet=force&amp;quot; is only available by default in 2.6.24-rc2 and above &lt;br /&gt;
(or as a separated patch for 2.6.22 and 2.6.23, see below).&lt;br /&gt;
&lt;br /&gt;
On modern ThinkPads the HPET timer is automatically detected and enabled. On certain older machines hpet=force is required such as on the following machines:&lt;br /&gt;
* {{T30}}, {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}&lt;br /&gt;
* {{X22}}, {{X23}}, {{X24}}, {{X30}}&lt;br /&gt;
&lt;br /&gt;
{{HELP|please add your ThinkPad to the above list, if &amp;lt;nowiki&amp;gt;hpet=force&amp;lt;/nowiki&amp;gt; was required}}&lt;br /&gt;
&lt;br /&gt;
===Useful Patches===&lt;br /&gt;
&lt;br /&gt;
Thomas Gleixner High Resolution Timers (hrt) patchset brings many improvements,&lt;br /&gt;
like the cpuidle work and Udo A. Steinberg and Venki Pallipadi &amp;quot;force&lt;br /&gt;
enable HPET&amp;quot; patches (non HPET timers causes about 20-40 CPU wakeups/second, but&lt;br /&gt;
HPET is often hidden by the BIOS due to Windows XP deficiencies). Those are &lt;br /&gt;
fully merged in 2.6.24-rc1 vanilla kernel.&lt;br /&gt;
See http://www.tglx.de/projects/hrtimers/&lt;br /&gt;
&lt;br /&gt;
Kristen Carlson Accardi from Intel has a patchset to turn on &amp;quot;Aggressive&lt;br /&gt;
Link Power Management&amp;quot; (ALPM) for the AHCI driver (for SATA bus). Also from&lt;br /&gt;
Accardi, SATA Asynchronous Notification (SATA AN), alows SATA link to notify&lt;br /&gt;
media insertions (thus avoid hal polling the cdrom). Those patches were merged &lt;br /&gt;
in 2.6.24-rc2 kernel (AN needs also support in hal to be used).&lt;br /&gt;
See: http://www.kernel.org/pub/linux/kernel/people/kristen/patches/SATA/alpm/&lt;br /&gt;
&lt;br /&gt;
As of now (2.6.24-rc8), the linux kernel doesn't support PCI Express power &lt;br /&gt;
management (aka PCIe ASPM, aka PCIe LPM). Shaohua Li from Intel submited a &lt;br /&gt;
patch on LKML (http://lkml.org/lkml/2008/1/17/544 ) though, and reported it &lt;br /&gt;
to reduce power consumption by 1.3 watts for a system with three PCIe links.&lt;br /&gt;
&lt;br /&gt;
The [[HDAPS]] disk protection systems can reduce battery life. &lt;br /&gt;
Matthew Garrett provides [http://www.linuxpowertop.org/patches/hdaps.patch a patch]&lt;br /&gt;
that prevents hdaps kernel module to generate interrupts when&lt;br /&gt;
this feature isn't used.&lt;br /&gt;
&lt;br /&gt;
===Useful sysctls===&lt;br /&gt;
The meaning of those settings is explained case by case on the relevant &lt;br /&gt;
sections of this document. But for convenience sake, we group them here too.&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;ondemand&amp;quot; scaling governor is recommended by Intel developers&lt;br /&gt;
for energy efficiency: it's expected to be more efficient than the &amp;quot;powersave&amp;quot;&lt;br /&gt;
governor, or than userspace daemons (like cpufreq-utils, cpufreqd, powernowd...).&lt;br /&gt;
Look [http://www.bughost.org/pipermail/power/2007-May/000071.html here],&lt;br /&gt;
[http://www.bughost.org/pipermail/power/2007-May/000073.html here], or&lt;br /&gt;
[http://www.bughost.org/pipermail/power/2007-May/000166.html here] for a&lt;br /&gt;
kernel developer explanation about &amp;quot;ondemand&amp;quot; being better on modern Intel CPUs.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;link_power_management_policy&amp;quot; tunable won't be available unless you&lt;br /&gt;
run a 2.6.24-rc2 or more kernel, or applied Kirsten patchset, have an Intel &lt;br /&gt;
AHCI compatible chipset, and use SATA drives.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo 5 &amp;gt; /proc/sys/vm/laptop_mode&lt;br /&gt;
 echo 0 &amp;gt; /proc/sys/kernel/nmi_watchdog&lt;br /&gt;
 echo Y &amp;gt; /sys/module/snd_ac97_codec/parameters/power_save&lt;br /&gt;
 echo 1 &amp;gt; /sys/devices/system/cpu/sched_mc_power_savings&lt;br /&gt;
 echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 echo 1500 &amp;gt; /proc/sys/vm/dirty_writeback_centisecs&lt;br /&gt;
 for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 &amp;gt; $i; done&lt;br /&gt;
 # those sysctl's are only available if you have an AHCI compatible SATA &lt;br /&gt;
 # controler and use kernel &amp;gt; 2.6.24-rc2 (or use Kristen ALPM patchset) : &lt;br /&gt;
 echo min_power &amp;gt; /sys/class/scsi_host/host0/link_power_management_policy&lt;br /&gt;
 echo min_power &amp;gt; /sys/class/scsi_host/host1/link_power_management_policy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you're running a kernel older than 2.6.22 do this. Not needed for kernels 2.6.22 onward:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 cd /sys/devices/system/cpu/cpu0/cpufreq&lt;br /&gt;
 cat ondemand/sampling_rate_max &amp;gt; ondemand/sampling_rate&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ATA drives==&lt;br /&gt;
Hard drives and CDRom drives spinning is very costly. To improve battery&lt;br /&gt;
lifetime, you should reduce disks access (or devices polling) the more you&lt;br /&gt;
can.  &lt;br /&gt;
&lt;br /&gt;
===Hard Drives===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The files access time update, while mandated by POSIX, is causing lots of&lt;br /&gt;
disks access; even accessing files on disk cache may wake the ATA or USB&lt;br /&gt;
bus. If you don't use this feature, disable it via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mount -o remount,relatime /  # and so on for all mounted fs&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(On older kernels you may need to use &amp;lt;tt&amp;gt;noatime&amp;lt;/tt&amp;gt; instead of &amp;lt;tt&amp;gt;relatime&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Also consider merely using a larger value for&lt;br /&gt;
 commit=nrsec&lt;br /&gt;
 Sync all data and metadata every nrsec seconds. The default value is 5 seconds.&lt;br /&gt;
See man mount(8).&lt;br /&gt;
&lt;br /&gt;
Use laptop_mode to reduce disk usage by delaying and grouping writes. You should enable&lt;br /&gt;
it, at least while on battery. See [[Laptop-mode]] for more details:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo 5 &amp;gt; /proc/sys/vm/laptop_mode&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default kernel dirty page writeback frequency is very conservative. On&lt;br /&gt;
a laptop running on battery, one might find more appropriate to reduce it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo 1500 &amp;gt; /proc/sys/vm/dirty_writeback_centisecs&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some power saving hard drives features can be activated with hdparm (beware&lt;br /&gt;
that &amp;quot;-B 1&amp;quot; may reduce your drive lifetime, if you have lot of intermittent&lt;br /&gt;
disk activity causing lots of heads load/unloads: so reduce I/O activity first,&lt;br /&gt;
as explained above, in order to get longer disks idling periods).&lt;br /&gt;
For more details look at [[How to make use of Power Management features]] :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 hdparm -B 1 -S 12 /dev/sda # and/or any other disk device&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SATA Link Power Management====&lt;br /&gt;
On kernels 2.6.24 and new this enables SATA Link Power Management:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo min_power &amp;gt; /sys/class/scsi_host/host0/link_power_management_policy&lt;br /&gt;
 echo min_power &amp;gt; /sys/class/scsi_host/host1/link_power_management_policy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disable it by replacing &amp;lt;code&amp;gt;min_power&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;max_performance&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On Hardy Heron with a 2.6.24-16 kernel, a suspend/resume cycle is much quicker if you disable SATA Link Power Management before initiating the suspend. As of Intrepid Ibex and kernel 2.6.27, this should be fixed. ([https://bugs.launchpad.net/linux/+bug/234047 Launchpad bug 234047], [http://bugzilla.kernel.org/show_bug.cgi?id=10817 Kernel bug 10817])&lt;br /&gt;
&lt;br /&gt;
====Laptop Mode Tools====&lt;br /&gt;
&lt;br /&gt;
The [http://samwel.tk/laptop_mode/ Laptop Mode Tools] utility implements many of the above power-saving measures from disks, and some others.&lt;br /&gt;
&lt;br /&gt;
===Optical drive===&lt;br /&gt;
The optical drive is reported to consume power even when not accessed. See &lt;br /&gt;
&lt;br /&gt;
* [[How to hotswap UltraBay devices|Eject the UltraBay optical drive]], or just turn off its power supply (i.e., run the appropriate eject script but leave the drive inserted).&lt;br /&gt;
* [[How to set optical drive speed|Reduce the spinning speed of the optical drive]].&lt;br /&gt;
&lt;br /&gt;
The hald daemon polling tends to maintain the ATA buses out of power saving&lt;br /&gt;
modes, and to wakeup CDROM drive (except if you have a kernel &amp;gt;= 2.6.24, hal &amp;gt;= 0.5.10,&lt;br /&gt;
and SATA AN compatible devices). If you have a recent hald version, you&lt;br /&gt;
can stop this polling when on battery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 hal-disable-polling --device /dev/scd0 # or whatever your CD drive is&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
start polling again when on ac:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 hal-disable-polling --enable-polling --device /dev/scd0 # or whatever your CD drive is&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your hald is not recent enough, consider suspending it when running on battery. Some moderns SATA buses and drivers supports a notification mechanism (SATA AN - Asynchronous Events Notifications) that obsolete the need for polling on modern hardware; support for this feature had been merged in Linux 2.6.24-rc1 and HAL 0.5.10.&lt;br /&gt;
&lt;br /&gt;
==LCD Backlight/Brightness==&lt;br /&gt;
The LCD backlight is one of the very major power drain. &lt;br /&gt;
Reducing brightness to the lowest readable&lt;br /&gt;
level will save a lot of battery lifetime. Also, don't forget to configure&lt;br /&gt;
your screen saver to shutdown the screen backlight (rather than displaying some&lt;br /&gt;
eye candy), when no activity for a few minutes.&lt;br /&gt;
&lt;br /&gt;
You can also let the system [[automatically reduce brightness]] after a &lt;br /&gt;
period of inactivity.&lt;br /&gt;
&lt;br /&gt;
If you're choosing your Thinkpad laptop model, keep in mind that the screen&lt;br /&gt;
size affect the battery time greatly: more power needed for larger screens.&lt;br /&gt;
&lt;br /&gt;
The very recent, but xorg standard way to control backlight from CLI is&lt;br /&gt;
using xbacklight. ie. to set backlight at half the brightness:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 xbacklight -set 50&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should configure the DPMS to shutdown the screen when idle (rather than&lt;br /&gt;
displaying a fancy but power consuming screensaver). ie. to turn off the&lt;br /&gt;
display after 5 minutes of idling:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 xset +dpms&lt;br /&gt;
 xset dpms 0 0 300&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Graphic controllers==&lt;br /&gt;
All xorg Thinkpad graphics chipsets drivers (ati, radeon, fglrx, i810) have&lt;br /&gt;
the same bug causing very frequent CPU wakeups when DRI is activated, even&lt;br /&gt;
when you don't use any 3D application.&lt;br /&gt;
This problem is partly fixed on xorg git tree but not released as of xorg&lt;br /&gt;
7.2. If you value more battery than 3D, you should disable DRI: put this on&lt;br /&gt;
the /etc/X11/xorg.conf &amp;quot;Device&amp;quot; of you graphic controller:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Option          &amp;quot;NoDRI&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also be sure that DPMS is working: &amp;lt;code&amp;gt;grep DPMS /var/log/Xorg.0.log&amp;lt;/code&amp;gt;&lt;br /&gt;
should output &amp;quot;DPMS enabled&amp;quot;. If not, put &amp;lt;code&amp;gt;Option &amp;quot;DPMS&amp;quot;&amp;lt;/code&amp;gt; in your config.&lt;br /&gt;
See the section above about how to enable dpms driven display power saving.&lt;br /&gt;
&lt;br /&gt;
On recent xrandr/xorg versions, you can disable the TV output (or any other detected&lt;br /&gt;
as connected but not used outputs) when you're not using it: it's known to consume power. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 xrandr # see all displays listed here, but that you don't actually use and disable them. &lt;br /&gt;
 xrandr --output TV --off # for instance (if &amp;quot;xrandr&amp;quot; above listed a connected output named &amp;quot;TV&amp;quot; that you don't use)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you don't have an external monitor plugged, disable CRT and DVI output &lt;br /&gt;
(for some, this can make a difference in power usage) : &lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 echo crt_disable &amp;gt; /proc/acpi/ibm/video&lt;br /&gt;
 echo dvi_disable &amp;gt; /proc/acpi/ibm/video&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Some drivers have specials power saving mode, and/or allows underclocking the GPU. See also:&lt;br /&gt;
* [[How to make use of Graphics Chips Power Management features]], or with [[Rovclock]] on ATI.&lt;br /&gt;
* [[Problem with high power drain in ACPI sleep]]&lt;br /&gt;
&lt;br /&gt;
==USB Subsystem==&lt;br /&gt;
The kernel support an efficient USB 2.0 power saving feature if you enabled&lt;br /&gt;
CONFIG_USB_SUSPEND. This may not trigger in when you have an USB device&lt;br /&gt;
plugged (and beside, USB devices tends to suck power on their own), so avoid&lt;br /&gt;
using such devices when on battery. To enable it by default, you must add the line &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 options usbcore autosuspend=1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
to your &amp;lt;tt&amp;gt;/etc/modprobe.conf&amp;lt;/tt&amp;gt; or add it to (and create if necessary) the file &amp;lt;tt&amp;gt;/etc/modprobe.d/usbcore&amp;lt;/tt&amp;gt; depending on how your distribution organises modprobe configuration. &lt;br /&gt;
&lt;br /&gt;
If on the other hand, you have &amp;lt;tt&amp;gt;usbcore&amp;lt;/tt&amp;gt; built into your kernel, you can add this in the kernel boot options (ie. in grub's menu.lst):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 usbcore.autosuspend=1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or at runtime, per device, with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 &amp;gt; $i; done &lt;br /&gt;
 for i in /sys/bus/usb/devices/*/power/level; do echo auto &amp;gt; $i; done&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
USB 1.1 is worst. It needs polling the bus frequently, hence can't really go&lt;br /&gt;
in a low power mode when you enabled it, even if you don't have any device&lt;br /&gt;
plugged. You'd better remove it when you don't use a 1.1 device:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 rmmod uhci_hcd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don't intend to use any device needing USB 1.1 (unfortunately, the built-in bluetooth and fingerprint-reader are USB 1.1 devices), the USB 1.1 support can also be totally avoided. On Debian and derivatives, just do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo &amp;quot;blacklist uhci_hcd&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PCMCIA/CardBus==&lt;br /&gt;
Same for PCMCIA/CardBus. Some users experiences interrupts clouds (sometime up to &lt;br /&gt;
several thousands interrupts/second) causing CPU wakeups, thus totally preventing &lt;br /&gt;
the CPU to reach lower C-states. &lt;br /&gt;
If you don't use PCMCIA, you may disable it the same way (unloading seems insufficient&lt;br /&gt;
to restore the system properly, you have to boot without it):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo &amp;quot;blacklist pcmcia&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist&lt;br /&gt;
 echo &amp;quot;blacklist yenta_socket&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sound==&lt;br /&gt;
&lt;br /&gt;
ALSA has a power saving feature that should be enabled on your kernel&lt;br /&gt;
(CONFIG_SND_AC97_POWER_SAVE). Note that this low power mode won't trigger in&lt;br /&gt;
unless you muted all sound inputs (micro, line in etc.). This feature has&lt;br /&gt;
to be activated with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 amixer set Line mute nocap&lt;br /&gt;
 amixer set Mic mute nocap&lt;br /&gt;
 echo Y &amp;gt; /sys/module/snd_ac97_codec/parameters/power_save&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Intel HD Audio===&lt;br /&gt;
&lt;br /&gt;
If you have Intel HD audio as your onboard sound controller, substitute the following for the last line in the above sequence:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
echo Y &amp;gt; /sys/module/snd_hda_intel/parameters/power_save_controller&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You also may wish to decrease the sound poweroff timeout to something shorter, like 1 second after last playback:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/module/snd_hda_intel/parameters/power_save&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Additional Tweaks===&lt;br /&gt;
&lt;br /&gt;
You can unload all sound related modules when you are on &lt;br /&gt;
battery, or mute the sound system (echo mute &amp;gt; /proc/acpi/ibm/volume).&lt;br /&gt;
&lt;br /&gt;
See also [[How to enable audio codec power saving]].&lt;br /&gt;
&lt;br /&gt;
==Wireless Interface==&lt;br /&gt;
===intel wireless===&lt;br /&gt;
Wireless network consume a lot of power.&lt;br /&gt;
To save power, you can kill the Wi-Fi radio when it's not in use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo 1 &amp;gt; /sys/bus/pci/devices/*/rf_kill&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need Wi-Fi, you can also reduce power consumption (at the price of&lt;br /&gt;
performances) by activating the power saving modes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 iwpriv eth1 set_power 5&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For drivers using the new Wi-Fi kernel framework (mac80211/cfg80211), &lt;br /&gt;
the canonical way to do this is now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 for i in /sys/bus/pci/devices/*/power_level ; do echo 5 &amp;gt; $i ; done&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most drivers, like ipw2200, that don't use the new mac80211 framework place the&lt;br /&gt;
interfaces in aggressive scanning mode when they are not associated with any &lt;br /&gt;
Access Point, even when the interface is down (more info about this on Intel's&lt;br /&gt;
[http://www.lesswatts.org/tips/wireless.php LessWatts] website).&lt;br /&gt;
This behavior consumes a lot of power, even more than when the interface&lt;br /&gt;
is plain active and in use. But this can disabled at module's load time :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 rmmod ipw2200&lt;br /&gt;
 modprobe ipw2200 associate=0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can fix this setting by placing the following in /etc/modprobe.d/options &lt;br /&gt;
(Debian/Ubuntu) or in /etc/modprobe.conf (Red Hat/Fedora):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reducing beacon intervals on your Access Point to 1 per second will also&lt;br /&gt;
reduce network card interrupts, therefore power savings. This shouldn't have&lt;br /&gt;
negatives side effects.&lt;br /&gt;
&lt;br /&gt;
See also, to activate power saving on the wireless network card:&lt;br /&gt;
* For [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]] and [[Intel PRO/Wireless 2915ABG Mini-PCI Adapter]], see instructions for the [[ipw2200]] driver.&lt;br /&gt;
* For [[Intel PRO/Wireless 3945ABG Mini-PCI Express Adapter]], see the [http://ipw3945.sourceforge.net/README.ipw3945 ipw3945 driver README]&lt;br /&gt;
&lt;br /&gt;
==Ethernet Controler==&lt;br /&gt;
If you don't use Wake-on-LAN, you should disable it for your network card,&lt;br /&gt;
because it sucks a lot of power:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 ethtool -s eth0 wol d&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you can, try to reduce useless network activity on your ethernet&lt;br /&gt;
segment, coming to your NIC (ie. uneeded broadcasts), those cause &lt;br /&gt;
interrupts and CPU wakeups.&lt;br /&gt;
&lt;br /&gt;
Forcing 100Mbps full-duplex speed on a gigabit ethernet NIC can also save a lot of power (~1W) on most network workloads. This also reduces components temperature (e.g., [[Thermal Sensors|thermal sensor]] 0xC0 on the {{T43}} cools down by 5 degree between 1000Mbps and 100Mbps, and another 1 degree for 10Mbps).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  ethtool -s eth0 autoneg off speed 100&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note, however, that if the network device on the other side has auto-negotiation enabled (which is very common) and you turn auto-negotiation off, the other side will assume half-duplex mode and you will experience a significant loss of performance.&lt;br /&gt;
&lt;br /&gt;
==Bluetooth==&lt;br /&gt;
When you don't need bluetooth, disable it. Because of its radio, &lt;br /&gt;
bluetooth is not power friendly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 hciconfig hci0 down ; rmmod hci_usb&lt;br /&gt;
 echo disable &amp;gt; /proc/acpi/ibm/bluetooth&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modem==&lt;br /&gt;
When was the last time you used your analog modem? If you can't remember, you probably just don't need it. If it is on a separate module in your laptop, simply remove it. Store it in a ESD safe place (like the bag in which your last addon card or hard drive was packed), in case you should need it again. This won't save you a lot of power and weight, but why carry something around you never use.&lt;br /&gt;
&lt;br /&gt;
==System Fans==&lt;br /&gt;
Fans consumes power when running, so you may look at the [[ACPI fan control script]].&lt;br /&gt;
&lt;br /&gt;
==Misbehaving Userland==&lt;br /&gt;
You should avoid using Beagle, Compiz, Beryl, XMMS, gnome-power-manager&lt;br /&gt;
and Evolution while on battery.&lt;br /&gt;
Look at the PowerTOP's [http://www.linuxpowertop.org/known.php known problems]&lt;br /&gt;
list.&lt;br /&gt;
&lt;br /&gt;
Deactivate desktop animations (blinking cursor on the terms, animated wallpapers, ...): they cause regular X (therefore kernel and CPU) wakeups.&lt;br /&gt;
&lt;br /&gt;
In short, while on battery, you should stop all applications that don't really stay idle when you're not using them. This means applications that:&lt;br /&gt;
* Wakes up the CPU too often (by polling something, because of too short select() timeouts, ...)&lt;br /&gt;
* Access the disks at regular intervals&lt;br /&gt;
* Access an hardware bus (USB, ATA, ...) at regular intervals&lt;br /&gt;
To find those offenders run:&lt;br /&gt;
* &amp;lt;code&amp;gt;strace -p $(pidof yourapp)&amp;lt;/code&amp;gt; # for all your running applications&lt;br /&gt;
* &amp;lt;code&amp;gt;powertop&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dstat -t -c -M topcpu,topio,topbio,power&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sysctl vm.block_dump=1&amp;lt;/code&amp;gt; # and look at dmesg&lt;br /&gt;
* &amp;lt;code&amp;gt;ps aux | awk '{print$10,$11}' | sort -n&amp;lt;/code&amp;gt; # will list all running softs sorted by used cpu time&lt;br /&gt;
Please, don't forget to fill a bug when you find such a misbehaving software.&lt;br /&gt;
{{NOTE|Not all software is evil, buggy or badly written. Some produce regular activity because they have to, in order to provide their intented functionality.  Think twice before filling bugs about this.}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[How to measure power consumption]]&lt;br /&gt;
* [[Script for monitoring power consumption]]&lt;br /&gt;
* Battery [[maintenance]]&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
* [http://www.free-it.de/archiv/talks_2005/paper-11017/paper-11017.html ''Current trends in Linux Kernel Power Management''], Dominik Brodowski, 2005&lt;br /&gt;
* [http://www.linuxpowertop.org PowerTOP] website&lt;br /&gt;
* [http://www.gentoo.org/doc/en/power-management-guide.xml Power Management Guide] from the Gentoo Linux documentation&lt;br /&gt;
* [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030478.html When/where/what for low power consumption?] (thread on Linux-Thinkpad)&lt;br /&gt;
* Intel's [http://www.lesswatts.org/ LessWatts] &amp;quot;''Saving power on Linux''&amp;quot; website&lt;br /&gt;
* ''8 hours of battery life on your lap(top)'' ([http://atrey.karlin.mff.cuni.cz/~pavel/swsusp/8hours.odp ODP]/[http://atrey.karlin.mff.cuni.cz/~pavel/swsusp/8hours.pdf PDF]), a presentation by Pavel Machek&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:600X]] [[Category:A20m]] [[Category:A20p]] [[Category:A21e]] [[Category:A21m]] [[Category:A21p]] [[Category:A22e]] [[Category:A22m]] [[Category:A22p]] [[Category:A30]] [[Category:A30p]] [[Category:A31]] [[Category:A31p]] [[Category:i1200]] [[Category:i1300]] [[Category:i1620]] [[Category:G40]] [[Category:G41]] [[Category:R30]] [[Category:R31]] [[Category:R32]] [[Category:R40]] [[Category:R40e]] [[Category:R50]] [[Category:R50e]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[Category:R60]] [[Category:R60e]] [[Category:T20]] [[Category:T21]] [[Category:T22]] [[Category:T23]] [[Category:T30]] [[Category:T40]] [[Category:T40p]] [[Category:T41]] [[Category:T41p]] [[Category:T42]] [[Category:T42p]] [[Category:T43]] [[Category:T43p]] [[Category:T60]] [[Category:T60p]] [[Category:T61]] [[Category:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:X60]] [[Category:X60s]] [[Category:X61]] [[Category:X61s]]  [[Category:Z60m]] [[Category:Z60t]] [[Category:Z61t]] [[Category:Z61e]] [[Category:TransNote]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_reduce_power_consumption&amp;diff=46095</id>
		<title>How to reduce power consumption</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_reduce_power_consumption&amp;diff=46095"/>
		<updated>2010-02-18T12:59:22Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* USB Subsystem - typo/format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reducing system power consumption will extend battery life, reduce system&lt;br /&gt;
temperature and (on some models) reduce system fan noise.&lt;br /&gt;
Power consumption can be greatly improved from a stock distribution configuration&lt;br /&gt;
to a fine tuned system. The general rules are :&lt;br /&gt;
* Unload drivers for unused devices (ie. USB 1.1, Yenta/PCMCIA, Wireless, IRDA, Bluetooth, ...)&lt;br /&gt;
* Reduce polling on devices (drives, USB subsystem, nvram, use SATA AN, ...)&lt;br /&gt;
* Reduce hard drive activity&lt;br /&gt;
* Reduce LCD brightness to the minimum you can stand&lt;br /&gt;
* Reduce CPU wakeups, so it can stay longer in deep power saving c-states&lt;br /&gt;
* Make use of every hardware devices availables power saving features (AHCI ALPM, USB autosuspend, Alsa and Wireless powersaving modes, HPET timers, ...)&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
Arjan van de Ven's [[PowerTOP]] utility&lt;br /&gt;
is a gold mine to improve energy efficiency, but is almost only CPU-oriented. This tool helps to easily detect&lt;br /&gt;
the top power offenders, both userland and kernel modules, which prevent the use of CPU power saving mechanisms and sometime suggest &lt;br /&gt;
fixes accordingly.&lt;br /&gt;
PowerTOP users collected some [http://www.lesswatts.org/projects/powertop/known.php tips &amp;amp; tricks]&lt;br /&gt;
and an informative [http://www.lesswatts.org/projects/powertop/faq.php faq].&lt;br /&gt;
&lt;br /&gt;
Alternatively (or complementary) to PowerTOP, running &amp;lt;code&amp;gt;strace -p $(pidof yourapp)&amp;lt;/code&amp;gt; &lt;br /&gt;
for all your favorite or background running applications while they are expected to be &lt;br /&gt;
idle, will show the misbehaviors.&lt;br /&gt;
&lt;br /&gt;
Beside CPU wakeups, disks spins are also power hungry. To detect what make your disk spinning,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 sysctl vm.block_dump=1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will list all applications causing disks wakeups on the kernel's dmesg.&lt;br /&gt;
Other useful tools for this purpose are blktrace, iostat and lm-profiler&lt;br /&gt;
(from laptop-mode-tools suite).&lt;br /&gt;
&lt;br /&gt;
See also [[#Misbehaving Userland]].&lt;br /&gt;
&lt;br /&gt;
==BIOS settings==&lt;br /&gt;
===Enabling Power Management===&lt;br /&gt;
Some Thinkpad BIOS (like 2.08 BIOS on {{X40}}) offer two very lame options,&lt;br /&gt;
with a very misleading online help (saying &amp;quot;Usually not needed&amp;quot;). That's&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 CPU power management: (default disabled)&lt;br /&gt;
 PCI bus power management: (default disabled)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should indeed ''enable'' them, else the deepest C3 and C4 ACPI C-states&lt;br /&gt;
are disabled.&lt;br /&gt;
&lt;br /&gt;
===Disabling I/O Ports===&lt;br /&gt;
The BIOS (at least version 3.11 on {{X200}}) can also be used to disable I/O ports, like PCMCIA/CardBus.  Although this requires a reboot to change settings, using the BIOS rather than a configuration file will survive distribution changes and may make it easier to remember how to re-enable a port.  Disabling these devices can reduce power consumption by several watts.&lt;br /&gt;
&lt;br /&gt;
==CPU==&lt;br /&gt;
Look at:&lt;br /&gt;
* [[How to make use of Dynamic Frequency Scaling]]&lt;br /&gt;
* [[Pentium M undervolting and underclocking]]&lt;br /&gt;
&lt;br /&gt;
A good thing to keep in mind is that every CPU wakeup, even if it's for&lt;br /&gt;
a trivial light job, reduce the time the CPU stays on a deep power&lt;br /&gt;
saving C-state (like C3 or C4). Therefore you should ensure your applications&lt;br /&gt;
stay really idle when they meant to be idle (track shorts select timeouts&lt;br /&gt;
in loop, etc. with [[PowerTOP]]).&lt;br /&gt;
&lt;br /&gt;
Also note that manually locking the CPU in the lowest P-state (frequency) &lt;br /&gt;
available is '''not''' an efficient way to improve battery lifetime. This will&lt;br /&gt;
cause the CPU to stay longer in C0 (power hungry C-state) doing hard work when &lt;br /&gt;
there is something to do, while it could have done this work faster by augmenting&lt;br /&gt;
the CPU freq, and returned back faster to a deeper, economic, C-state and to a&lt;br /&gt;
lower frequency (P-state).&lt;br /&gt;
The best is to let the kernel select the appropriates CPU frequencies by itself&lt;br /&gt;
with the help of in kernel CPU governors.&lt;br /&gt;
Have a look at [http://www.bughost.org/pipermail/power/2007-May/000166.html this explanation]&lt;br /&gt;
from Intel's kernel developer Arjan van de Ven.&lt;br /&gt;
&lt;br /&gt;
==Kernel settings and patches==&lt;br /&gt;
&lt;br /&gt;
===General settings===&lt;br /&gt;
The 2.6.21 kernel brought some very effective changes (like [[dynticks]]). &lt;br /&gt;
Later, 2.6.24-rc2 brought a lot of other power efficiency improvements. &lt;br /&gt;
If it's not already on your distribution and you value power efficiency, &lt;br /&gt;
you may think about compiling a recent kernel yourself. &lt;br /&gt;
&lt;br /&gt;
Here are a few options (beside the ACPI and APM related one) that matter to &lt;br /&gt;
reduce power consumption or to help diagnosing consumers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 # From PowerTOP's FAQ:&lt;br /&gt;
 CONFIG_NO_HZ&lt;br /&gt;
 CONFIG_HIGH_RES_TIMERS&lt;br /&gt;
 CONFIG_HPET&lt;br /&gt;
 CONFIG_HPET_TIMER&lt;br /&gt;
 CONFIG_CPU_FREQ_GOV_ONDEMAND&lt;br /&gt;
 CONFIG_USB_SUSPEND&lt;br /&gt;
 CONFIG_SND_AC97_POWER_SAVE&lt;br /&gt;
 CONFIG_SND_HDA_POWER_SAVE&lt;br /&gt;
 CONFIG_SND_HDA_POWER_SAVE_DEFAULT=3&lt;br /&gt;
 CONFIG_TIMER_STATS&lt;br /&gt;
 CONFIG_ACPI_BATTERY&lt;br /&gt;
 CONFIG_CPU_FREQ_STAT&lt;br /&gt;
 CONFIG_INOTIFY&lt;br /&gt;
&lt;br /&gt;
 # Not from the PowerTOP FAQ:&lt;br /&gt;
 CONFIG_BLK_DEV_IO_TRACE&lt;br /&gt;
 CONFIG_X86_ACPI_CPUFREQ&lt;br /&gt;
 CONFIG_X86_SPEEDSTEP_CENTRINO depreciated as of kernel 2.6.24, use CONFIG_X86_ACPI_CPUFREQ&lt;br /&gt;
 CONFIG_X86_SPEEDSTEP_ICH&lt;br /&gt;
 CONFIG_X86_SPEEDSTEP_SMI&lt;br /&gt;
 CONFIG_CPU_IDLE&lt;br /&gt;
 CONFIG_CPU_IDLE_GOV_LADDER&lt;br /&gt;
 CONFIG_CPU_IDLE_GOV_MENU&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Those options are already in Fedora Core 7 and Ubuntu Gutsy (not Feisty) default i686 kernels.&lt;br /&gt;
PowerTOP FAQ also suggest to '''disable'''&lt;br /&gt;
CONFIG_IRQBALANCE and CONFIG_ACPI_DEBUG.&lt;br /&gt;
&lt;br /&gt;
Also, you need to properly set APM and ACPI. Look at:&lt;br /&gt;
* [[Power Management]]&lt;br /&gt;
* [[How to make use of Power Management features]]&lt;br /&gt;
&lt;br /&gt;
=== Kernel boot and module loading options ===&lt;br /&gt;
If you have an Intel chipset ICH5 or later (cf. lspci output), as in most modern Thinkpads, you should&lt;br /&gt;
be using the integrated HPET timer (saves about 30 CPU wake ups per second). To see if&lt;br /&gt;
hpet is enabled on your laptop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 grep hpet /proc/timer_list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this does not display &amp;quot;Clock Event Device: hpet&amp;quot;, then add &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 hpet=force&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{WARN|The ICH4 does have an HPET, but it is disabled for a good reason: Intel didn't test/validade it!  Use of the ICH4 HPET is '''not''' recommended}}&lt;br /&gt;
&lt;br /&gt;
to your kernel boot options (usualy in /boot/grub/menu.lst or lilo.conf). &lt;br /&gt;
Note that &amp;quot;hpet=force&amp;quot; is only available by default in 2.6.24-rc2 and above &lt;br /&gt;
(or as a separated patch for 2.6.22 and 2.6.23, see below).&lt;br /&gt;
&lt;br /&gt;
On modern ThinkPads the HPET timer is automatically detected and enabled. On certain older machines hpet=force is required such as on the following machines:&lt;br /&gt;
* {{T30}}, {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}&lt;br /&gt;
* {{X22}}, {{X23}}, {{X24}}, {{X30}}&lt;br /&gt;
&lt;br /&gt;
{{HELP|please add your ThinkPad to the above list, if &amp;lt;nowiki&amp;gt;hpet=force&amp;lt;/nowiki&amp;gt; was required}}&lt;br /&gt;
&lt;br /&gt;
===Useful Patches===&lt;br /&gt;
&lt;br /&gt;
Thomas Gleixner High Resolution Timers (hrt) patchset brings many improvements,&lt;br /&gt;
like the cpuidle work and Udo A. Steinberg and Venki Pallipadi &amp;quot;force&lt;br /&gt;
enable HPET&amp;quot; patches (non HPET timers causes about 20-40 CPU wakeups/second, but&lt;br /&gt;
HPET is often hidden by the BIOS due to Windows XP deficiencies). Those are &lt;br /&gt;
fully merged in 2.6.24-rc1 vanilla kernel.&lt;br /&gt;
See http://www.tglx.de/projects/hrtimers/&lt;br /&gt;
&lt;br /&gt;
Kristen Carlson Accardi from Intel has a patchset to turn on &amp;quot;Aggressive&lt;br /&gt;
Link Power Management&amp;quot; (ALPM) for the AHCI driver (for SATA bus). Also from&lt;br /&gt;
Accardi, SATA Asynchronous Notification (SATA AN), alows SATA link to notify&lt;br /&gt;
media insertions (thus avoid hal polling the cdrom). Those patches were merged &lt;br /&gt;
in 2.6.24-rc2 kernel (AN needs also support in hal to be used).&lt;br /&gt;
See: http://www.kernel.org/pub/linux/kernel/people/kristen/patches/SATA/alpm/&lt;br /&gt;
&lt;br /&gt;
As of now (2.6.24-rc8), the linux kernel doesn't support PCI Express power &lt;br /&gt;
management (aka PCIe ASPM, aka PCIe LPM). Shaohua Li from Intel submited a &lt;br /&gt;
patch on LKML (http://lkml.org/lkml/2008/1/17/544 ) though, and reported it &lt;br /&gt;
to reduce power consumption by 1.3 watts for a system with three PCIe links.&lt;br /&gt;
&lt;br /&gt;
The [[HDAPS]] disk protection systems can reduce battery life. &lt;br /&gt;
Matthew Garrett provides [http://www.linuxpowertop.org/patches/hdaps.patch a patch]&lt;br /&gt;
that prevents hdaps kernel module to generate interrupts when&lt;br /&gt;
this feature isn't used.&lt;br /&gt;
&lt;br /&gt;
===Useful sysctls===&lt;br /&gt;
The meaning of those settings is explained case by case on the relevant &lt;br /&gt;
sections of this document. But for convenience sake, we group them here too.&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;ondemand&amp;quot; scaling governor is recommended by Intel developers&lt;br /&gt;
for energy efficiency: it's expected to be more efficient than the &amp;quot;powersave&amp;quot;&lt;br /&gt;
governor, or than userspace daemons (like cpufreq-utils, cpufreqd, powernowd...).&lt;br /&gt;
Look [http://www.bughost.org/pipermail/power/2007-May/000071.html here],&lt;br /&gt;
[http://www.bughost.org/pipermail/power/2007-May/000073.html here], or&lt;br /&gt;
[http://www.bughost.org/pipermail/power/2007-May/000166.html here] for a&lt;br /&gt;
kernel developer explanation about &amp;quot;ondemand&amp;quot; being better on modern Intel CPUs.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;link_power_management_policy&amp;quot; tunable won't be available unless you&lt;br /&gt;
run a 2.6.24-rc2 or more kernel, or applied Kirsten patchset, have an Intel &lt;br /&gt;
AHCI compatible chipset, and use SATA drives.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo 5 &amp;gt; /proc/sys/vm/laptop_mode&lt;br /&gt;
 echo 0 &amp;gt; /proc/sys/kernel/nmi_watchdog&lt;br /&gt;
 echo Y &amp;gt; /sys/module/snd_ac97_codec/parameters/power_save&lt;br /&gt;
 echo 1 &amp;gt; /sys/devices/system/cpu/sched_mc_power_savings&lt;br /&gt;
 echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
 echo 1500 &amp;gt; /proc/sys/vm/dirty_writeback_centisecs&lt;br /&gt;
 for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 &amp;gt; $i; done&lt;br /&gt;
 # those sysctl's are only available if you have an AHCI compatible SATA &lt;br /&gt;
 # controler and use kernel &amp;gt; 2.6.24-rc2 (or use Kristen ALPM patchset) : &lt;br /&gt;
 echo min_power &amp;gt; /sys/class/scsi_host/host0/link_power_management_policy&lt;br /&gt;
 echo min_power &amp;gt; /sys/class/scsi_host/host1/link_power_management_policy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you're running a kernel older than 2.6.22 do this. Not needed for kernels 2.6.22 onward:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 cd /sys/devices/system/cpu/cpu0/cpufreq&lt;br /&gt;
 cat ondemand/sampling_rate_max &amp;gt; ondemand/sampling_rate&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ATA drives==&lt;br /&gt;
Hard drives and CDRom drives spinning is very costly. To improve battery&lt;br /&gt;
lifetime, you should reduce disks access (or devices polling) the more you&lt;br /&gt;
can.  &lt;br /&gt;
&lt;br /&gt;
===Hard Drives===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The files access time update, while mandated by POSIX, is causing lots of&lt;br /&gt;
disks access; even accessing files on disk cache may wake the ATA or USB&lt;br /&gt;
bus. If you don't use this feature, disable it via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mount -o remount,relatime /  # and so on for all mounted fs&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(On older kernels you may need to use &amp;lt;tt&amp;gt;noatime&amp;lt;/tt&amp;gt; instead of &amp;lt;tt&amp;gt;relatime&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Also consider merely using a larger value for&lt;br /&gt;
 commit=nrsec&lt;br /&gt;
 Sync all data and metadata every nrsec seconds. The default value is 5 seconds.&lt;br /&gt;
See man mount(8).&lt;br /&gt;
&lt;br /&gt;
Use laptop_mode to reduce disk usage by delaying and grouping writes. You should enable&lt;br /&gt;
it, at least while on battery. See [[Laptop-mode]] for more details:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo 5 &amp;gt; /proc/sys/vm/laptop_mode&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default kernel dirty page writeback frequency is very conservative. On&lt;br /&gt;
a laptop running on battery, one might find more appropriate to reduce it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo 1500 &amp;gt; /proc/sys/vm/dirty_writeback_centisecs&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some power saving hard drives features can be activated with hdparm (beware&lt;br /&gt;
that &amp;quot;-B 1&amp;quot; may reduce your drive lifetime, if you have lot of intermittent&lt;br /&gt;
disk activity causing lots of heads load/unloads: so reduce I/O activity first,&lt;br /&gt;
as explained above, in order to get longer disks idling periods).&lt;br /&gt;
For more details look at [[How to make use of Power Management features]] :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 hdparm -B 1 -S 12 /dev/sda # and/or any other disk device&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SATA Link Power Management====&lt;br /&gt;
On kernels 2.6.24 and new this enables SATA Link Power Management:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo min_power &amp;gt; /sys/class/scsi_host/host0/link_power_management_policy&lt;br /&gt;
 echo min_power &amp;gt; /sys/class/scsi_host/host1/link_power_management_policy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disable it by replacing &amp;lt;code&amp;gt;min_power&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;max_performance&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On Hardy Heron with a 2.6.24-16 kernel, a suspend/resume cycle is much quicker if you disable SATA Link Power Management before initiating the suspend. As of Intrepid Ibex and kernel 2.6.27, this should be fixed. ([https://bugs.launchpad.net/linux/+bug/234047 Launchpad bug 234047], [http://bugzilla.kernel.org/show_bug.cgi?id=10817 Kernel bug 10817])&lt;br /&gt;
&lt;br /&gt;
====Laptop Mode Tools====&lt;br /&gt;
&lt;br /&gt;
The [http://samwel.tk/laptop_mode/ Laptop Mode Tools] utility implements many of the above power-saving measures from disks, and some others.&lt;br /&gt;
&lt;br /&gt;
===Optical drive===&lt;br /&gt;
The optical drive is reported to consume power even when not accessed. See &lt;br /&gt;
&lt;br /&gt;
* [[How to hotswap UltraBay devices|Eject the UltraBay optical drive]], or just turn off its power supply (i.e., run the appropriate eject script but leave the drive inserted).&lt;br /&gt;
* [[How to set optical drive speed|Reduce the spinning speed of the optical drive]].&lt;br /&gt;
&lt;br /&gt;
The hald daemon polling tends to maintain the ATA buses out of power saving&lt;br /&gt;
modes, and to wakeup CDROM drive (except if you have a kernel &amp;gt;= 2.6.24, hal &amp;gt;= 0.5.10,&lt;br /&gt;
and SATA AN compatible devices). If you have a recent hald version, you&lt;br /&gt;
can stop this polling when on battery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 hal-disable-polling --device /dev/scd0 # or whatever your CD drive is&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
start polling again when on ac:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 hal-disable-polling --enable-polling --device /dev/scd0 # or whatever your CD drive is&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your hald is not recent enough, consider suspending it when running on battery. Some moderns SATA buses and drivers supports a notification mechanism (SATA AN - Asynchronous Events Notifications) that obsolete the need for polling on modern hardware; support for this feature had been merged in Linux 2.6.24-rc1 and HAL 0.5.10.&lt;br /&gt;
&lt;br /&gt;
==LCD Backlight/Brightness==&lt;br /&gt;
The LCD backlight is one of the very major power drain. &lt;br /&gt;
Reducing brightness to the lowest readable&lt;br /&gt;
level will save a lot of battery lifetime. Also, don't forget to configure&lt;br /&gt;
your screen saver to shutdown the screen backlight (rather than displaying some&lt;br /&gt;
eye candy), when no activity for a few minutes.&lt;br /&gt;
&lt;br /&gt;
You can also let the system [[automatically reduce brightness]] after a &lt;br /&gt;
period of inactivity.&lt;br /&gt;
&lt;br /&gt;
If you're choosing your Thinkpad laptop model, keep in mind that the screen&lt;br /&gt;
size affect the battery time greatly: more power needed for larger screens.&lt;br /&gt;
&lt;br /&gt;
The very recent, but xorg standard way to control backlight from CLI is&lt;br /&gt;
using xbacklight. ie. to set backlight at half the brightness:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 xbacklight -set 50&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should configure the DPMS to shutdown the screen when idle (rather than&lt;br /&gt;
displaying a fancy but power consuming screensaver). ie. to turn off the&lt;br /&gt;
display after 5 minutes of idling:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 xset +dpms&lt;br /&gt;
 xset dpms 0 0 300&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Graphic controllers==&lt;br /&gt;
All xorg Thinkpad graphics chipsets drivers (ati, radeon, fglrx, i810) have&lt;br /&gt;
the same bug causing very frequent CPU wakeups when DRI is activated, even&lt;br /&gt;
when you don't use any 3D application.&lt;br /&gt;
This problem is partly fixed on xorg git tree but not released as of xorg&lt;br /&gt;
7.2. If you value more battery than 3D, you should disable DRI: put this on&lt;br /&gt;
the /etc/X11/xorg.conf &amp;quot;Device&amp;quot; of you graphic controller:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Option          &amp;quot;NoDRI&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also be sure that DPMS is working: &amp;lt;code&amp;gt;grep DPMS /var/log/Xorg.0.log&amp;lt;/code&amp;gt;&lt;br /&gt;
should output &amp;quot;DPMS enabled&amp;quot;. If not, put &amp;lt;code&amp;gt;Option &amp;quot;DPMS&amp;quot;&amp;lt;/code&amp;gt; in your config.&lt;br /&gt;
See the section above about how to enable dpms driven display power saving.&lt;br /&gt;
&lt;br /&gt;
On recent xrandr/xorg versions, you can disable the TV output (or any other detected&lt;br /&gt;
as connected but not used outputs) when you're not using it: it's known to consume power. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 xrandr # see all displays listed here, but that you don't actually use and disable them. &lt;br /&gt;
 xrandr --output TV --off # for instance (if &amp;quot;xrandr&amp;quot; above listed a connected output named &amp;quot;TV&amp;quot; that you don't use)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you don't have an external monitor plugged, disable CRT and DVI output &lt;br /&gt;
(for some, this can make a difference in power usage) : &lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 echo crt_disable &amp;gt; /proc/acpi/ibm/video&lt;br /&gt;
 echo dvi_disable &amp;gt; /proc/acpi/ibm/video&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Some drivers have specials power saving mode, and/or allows underclocking the GPU. See also:&lt;br /&gt;
* [[How to make use of Graphics Chips Power Management features]], or with [[Rovclock]] on ATI.&lt;br /&gt;
* [[Problem with high power drain in ACPI sleep]]&lt;br /&gt;
&lt;br /&gt;
==USB Subsystem==&lt;br /&gt;
The kernel support an efficient USB 2.0 power saving feature if you enabled&lt;br /&gt;
CONFIG_USB_SUSPEND. This may not trigger in when you have an USB device&lt;br /&gt;
plugged (and beside, USB devices tends to suck power on their own), so avoid&lt;br /&gt;
using such devices when on battery. To enable it by default, you must add the line &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 options usbcore autosuspend=1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
to your &amp;lt;tt&amp;gt;/etc/modprobe.conf&amp;lt;/tt&amp;gt; or add it to (and create if necessary) the file &amp;lt;tt&amp;gt;/etc/modprobe.d/usbcore&amp;lt;/tt&amp;gt; depending on how your distribution organises modprobe configuration. &lt;br /&gt;
&lt;br /&gt;
If on the other hand, you have &amp;lt;tt&amp;gt;usbcore&amp;lt;/tt&amp;gt; built into your kernel, you can add this in the kernel boot options (ie. in grub's menu.lst):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 usbcore.autosuspend=1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or at runtime, per device, with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 for i in /sys/bus/usb/devices/%s/power/autosuspend; do echo 1 &amp;gt; $i; done&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
USB 1.1 is worst. It needs polling the bus frequently, hence can't really go&lt;br /&gt;
in a low power mode when you enabled it, even if you don't have any device&lt;br /&gt;
plugged. You'd better remove it when you don't use a 1.1 device:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 rmmod uhci_hcd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don't intend to use any device needing USB 1.1 (unfortunately, the built-in bluetooth and fingerprint-reader are USB 1.1 devices), the USB 1.1 support can also be totally avoided. On Debian and derivatives, just do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo &amp;quot;blacklist uhci_hcd&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PCMCIA/CardBus==&lt;br /&gt;
Same for PCMCIA/CardBus. Some users experiences interrupts clouds (sometime up to &lt;br /&gt;
several thousands interrupts/second) causing CPU wakeups, thus totally preventing &lt;br /&gt;
the CPU to reach lower C-states. &lt;br /&gt;
If you don't use PCMCIA, you may disable it the same way (unloading seems insufficient&lt;br /&gt;
to restore the system properly, you have to boot without it):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo &amp;quot;blacklist pcmcia&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist&lt;br /&gt;
 echo &amp;quot;blacklist yenta_socket&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sound==&lt;br /&gt;
&lt;br /&gt;
ALSA has a power saving feature that should be enabled on your kernel&lt;br /&gt;
(CONFIG_SND_AC97_POWER_SAVE). Note that this low power mode won't trigger in&lt;br /&gt;
unless you muted all sound inputs (micro, line in etc.). This feature has&lt;br /&gt;
to be activated with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 amixer set Line mute nocap&lt;br /&gt;
 amixer set Mic mute nocap&lt;br /&gt;
 echo Y &amp;gt; /sys/module/snd_ac97_codec/parameters/power_save&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Intel HD Audio===&lt;br /&gt;
&lt;br /&gt;
If you have Intel HD audio as your onboard sound controller, substitute the following for the last line in the above sequence:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
echo Y &amp;gt; /sys/module/snd_hda_intel/parameters/power_save_controller&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You also may wish to decrease the sound poweroff timeout to something shorter, like 1 second after last playback:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/module/snd_hda_intel/parameters/power_save&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Additional Tweaks===&lt;br /&gt;
&lt;br /&gt;
You can unload all sound related modules when you are on &lt;br /&gt;
battery, or mute the sound system (echo mute &amp;gt; /proc/acpi/ibm/volume).&lt;br /&gt;
&lt;br /&gt;
See also [[How to enable audio codec power saving]].&lt;br /&gt;
&lt;br /&gt;
==Wireless Interface==&lt;br /&gt;
===intel wireless===&lt;br /&gt;
Wireless network consume a lot of power.&lt;br /&gt;
To save power, you can kill the Wi-Fi radio when it's not in use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 echo 1 &amp;gt; /sys/bus/pci/devices/*/rf_kill&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need Wi-Fi, you can also reduce power consumption (at the price of&lt;br /&gt;
performances) by activating the power saving modes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 iwpriv eth1 set_power 5&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For drivers using the new Wi-Fi kernel framework (mac80211/cfg80211), &lt;br /&gt;
the canonical way to do this is now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 for i in /sys/bus/pci/devices/*/power_level ; do echo 5 &amp;gt; $i ; done&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most drivers, like ipw2200, that don't use the new mac80211 framework place the&lt;br /&gt;
interfaces in aggressive scanning mode when they are not associated with any &lt;br /&gt;
Access Point, even when the interface is down (more info about this on Intel's&lt;br /&gt;
[http://www.lesswatts.org/tips/wireless.php LessWatts] website).&lt;br /&gt;
This behavior consumes a lot of power, even more than when the interface&lt;br /&gt;
is plain active and in use. But this can disabled at module's load time :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 rmmod ipw2200&lt;br /&gt;
 modprobe ipw2200 associate=0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can fix this setting by placing the following in /etc/modprobe.d/options &lt;br /&gt;
(Debian/Ubuntu) or in /etc/modprobe.conf (Red Hat/Fedora):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reducing beacon intervals on your Access Point to 1 per second will also&lt;br /&gt;
reduce network card interrupts, therefore power savings. This shouldn't have&lt;br /&gt;
negatives side effects.&lt;br /&gt;
&lt;br /&gt;
See also, to activate power saving on the wireless network card:&lt;br /&gt;
* For [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]] and [[Intel PRO/Wireless 2915ABG Mini-PCI Adapter]], see instructions for the [[ipw2200]] driver.&lt;br /&gt;
* For [[Intel PRO/Wireless 3945ABG Mini-PCI Express Adapter]], see the [http://ipw3945.sourceforge.net/README.ipw3945 ipw3945 driver README]&lt;br /&gt;
&lt;br /&gt;
==Ethernet Controler==&lt;br /&gt;
If you don't use Wake-on-LAN, you should disable it for your network card,&lt;br /&gt;
because it sucks a lot of power:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 ethtool -s eth0 wol d&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you can, try to reduce useless network activity on your ethernet&lt;br /&gt;
segment, coming to your NIC (ie. uneeded broadcasts), those cause &lt;br /&gt;
interrupts and CPU wakeups.&lt;br /&gt;
&lt;br /&gt;
Forcing 100Mbps full-duplex speed on a gigabit ethernet NIC can also save a lot of power (~1W) on most network workloads. This also reduces components temperature (e.g., [[Thermal Sensors|thermal sensor]] 0xC0 on the {{T43}} cools down by 5 degree between 1000Mbps and 100Mbps, and another 1 degree for 10Mbps).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  ethtool -s eth0 autoneg off speed 100&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note, however, that if the network device on the other side has auto-negotiation enabled (which is very common) and you turn auto-negotiation off, the other side will assume half-duplex mode and you will experience a significant loss of performance.&lt;br /&gt;
&lt;br /&gt;
==Bluetooth==&lt;br /&gt;
When you don't need bluetooth, disable it. Because of its radio, &lt;br /&gt;
bluetooth is not power friendly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 hciconfig hci0 down ; rmmod hci_usb&lt;br /&gt;
 echo disable &amp;gt; /proc/acpi/ibm/bluetooth&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modem==&lt;br /&gt;
When was the last time you used your analog modem? If you can't remember, you probably just don't need it. If it is on a separate module in your laptop, simply remove it. Store it in a ESD safe place (like the bag in which your last addon card or hard drive was packed), in case you should need it again. This won't save you a lot of power and weight, but why carry something around you never use.&lt;br /&gt;
&lt;br /&gt;
==System Fans==&lt;br /&gt;
Fans consumes power when running, so you may look at the [[ACPI fan control script]].&lt;br /&gt;
&lt;br /&gt;
==Misbehaving Userland==&lt;br /&gt;
You should avoid using Beagle, Compiz, Beryl, XMMS, gnome-power-manager&lt;br /&gt;
and Evolution while on battery.&lt;br /&gt;
Look at the PowerTOP's [http://www.linuxpowertop.org/known.php known problems]&lt;br /&gt;
list.&lt;br /&gt;
&lt;br /&gt;
Deactivate desktop animations (blinking cursor on the terms, animated wallpapers, ...): they cause regular X (therefore kernel and CPU) wakeups.&lt;br /&gt;
&lt;br /&gt;
In short, while on battery, you should stop all applications that don't really stay idle when you're not using them. This means applications that:&lt;br /&gt;
* Wakes up the CPU too often (by polling something, because of too short select() timeouts, ...)&lt;br /&gt;
* Access the disks at regular intervals&lt;br /&gt;
* Access an hardware bus (USB, ATA, ...) at regular intervals&lt;br /&gt;
To find those offenders run:&lt;br /&gt;
* &amp;lt;code&amp;gt;strace -p $(pidof yourapp)&amp;lt;/code&amp;gt; # for all your running applications&lt;br /&gt;
* &amp;lt;code&amp;gt;powertop&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dstat -t -c -M topcpu,topio,topbio,power&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sysctl vm.block_dump=1&amp;lt;/code&amp;gt; # and look at dmesg&lt;br /&gt;
* &amp;lt;code&amp;gt;ps aux | awk '{print$10,$11}' | sort -n&amp;lt;/code&amp;gt; # will list all running softs sorted by used cpu time&lt;br /&gt;
Please, don't forget to fill a bug when you find such a misbehaving software.&lt;br /&gt;
{{NOTE|Not all software is evil, buggy or badly written. Some produce regular activity because they have to, in order to provide their intented functionality.  Think twice before filling bugs about this.}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[How to measure power consumption]]&lt;br /&gt;
* [[Script for monitoring power consumption]]&lt;br /&gt;
* Battery [[maintenance]]&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
* [http://www.free-it.de/archiv/talks_2005/paper-11017/paper-11017.html ''Current trends in Linux Kernel Power Management''], Dominik Brodowski, 2005&lt;br /&gt;
* [http://www.linuxpowertop.org PowerTOP] website&lt;br /&gt;
* [http://www.gentoo.org/doc/en/power-management-guide.xml Power Management Guide] from the Gentoo Linux documentation&lt;br /&gt;
* [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030478.html When/where/what for low power consumption?] (thread on Linux-Thinkpad)&lt;br /&gt;
* Intel's [http://www.lesswatts.org/ LessWatts] &amp;quot;''Saving power on Linux''&amp;quot; website&lt;br /&gt;
* ''8 hours of battery life on your lap(top)'' ([http://atrey.karlin.mff.cuni.cz/~pavel/swsusp/8hours.odp ODP]/[http://atrey.karlin.mff.cuni.cz/~pavel/swsusp/8hours.pdf PDF]), a presentation by Pavel Machek&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:600X]] [[Category:A20m]] [[Category:A20p]] [[Category:A21e]] [[Category:A21m]] [[Category:A21p]] [[Category:A22e]] [[Category:A22m]] [[Category:A22p]] [[Category:A30]] [[Category:A30p]] [[Category:A31]] [[Category:A31p]] [[Category:i1200]] [[Category:i1300]] [[Category:i1620]] [[Category:G40]] [[Category:G41]] [[Category:R30]] [[Category:R31]] [[Category:R32]] [[Category:R40]] [[Category:R40e]] [[Category:R50]] [[Category:R50e]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[Category:R60]] [[Category:R60e]] [[Category:T20]] [[Category:T21]] [[Category:T22]] [[Category:T23]] [[Category:T30]] [[Category:T40]] [[Category:T40p]] [[Category:T41]] [[Category:T41p]] [[Category:T42]] [[Category:T42p]] [[Category:T43]] [[Category:T43p]] [[Category:T60]] [[Category:T60p]] [[Category:T61]] [[Category:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:X60]] [[Category:X60s]] [[Category:X61]] [[Category:X61s]]  [[Category:Z60m]] [[Category:Z60t]] [[Category:Z61t]] [[Category:Z61e]] [[Category:TransNote]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_build_your_own_UltraPort_device&amp;diff=40288</id>
		<title>How to build your own UltraPort device</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_build_your_own_UltraPort_device&amp;diff=40288"/>
		<updated>2008-12-16T18:35:21Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /s/undermined/underpinned/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the [[UltraPort]] connector being nothing else than a standard USB 1.1 interface with a proprietary connector, it should in theory be possible to transform any USB 1.1 device into an UltraPort device.&lt;br /&gt;
&lt;br /&gt;
This idea is underpinned by the fact that a mechanical adapter comes with every UltraPort device, that transforms the UltraPort connector into a standard USB connector.&lt;br /&gt;
&lt;br /&gt;
==Pin Layout comparison==&lt;br /&gt;
The following UltraPort pin layout has been discovered through measuring the UltraPort of a ThinkPad {{X21}}. It is not very well tested, but worked well for the author of this information.&lt;br /&gt;
The information on the USB Type A connector pin layout has been copied from Wikipedia.&lt;br /&gt;
{| valign=&amp;quot;top&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:top;width:50%;padding-right:40px;&amp;quot; |&lt;br /&gt;
===UltraPort connector===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; style=&amp;quot;background-color:#000000;border:2px inset;text-align:center;padding:1px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#f0d090;height:10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;background-color:black;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:28px;border-left:1px solid #000000;border-right:1px solid #000000;&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;background-color:#000000;color:#FFFFFF;font-size:smaller;&amp;quot;&lt;br /&gt;
| 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || || 9 || 10 || 11 || 12 || 13&lt;br /&gt;
|}&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; style=&amp;quot;border:2px solid white;border-top-width:0px;text-align:center;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-size:smaller;padding:0px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | GND&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | 0&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | VCC&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | VCC&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | GND&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | D+&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | D-&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | GND&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | .&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | ? &lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | ? &lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | ? &lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | 0 &lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | GND &lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;vertical-align:top;width:50%;&amp;quot; |&lt;br /&gt;
===Standard USB Type A connector===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
{|  border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; style=&amp;quot;background-color:#ffffff;text-align:center;border:2px ridge;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-size:smaller;height:7px;&amp;quot;&lt;br /&gt;
| 4 || 3 || 2 || 1 &lt;br /&gt;
|- style=&amp;quot;background-color:#f0d090;height:5px;font-size:smaller;padding:0px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:20px;border-left:5px solid white;border-right:5px solid white;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:20px;border-left:5px solid white;border-right:5px solid white;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:20px;border-left:5px solid white;border-right:5px solid white;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:20px;border-left:5px solid white;border-right:5px solid white;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| colspan=4 style=&amp;quot;border:1px outset #dddddd;background-color:#dddddd;height:10px;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; style=&amp;quot;border:2px solid white;border-top-width:0px;text-align:center;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;height:10px;font-size:smaller;padding:0px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | GND&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | D+&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | D-&lt;br /&gt;
| style=&amp;quot;width:30px;&amp;quot; | VCC&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;width:50%;padding-right:40px;&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! Pin      !! Name !! Description   &lt;br /&gt;
|-&lt;br /&gt;
||1,5,8,13 ||GND   || Ground        &lt;br /&gt;
|-&lt;br /&gt;
||2,12     ||0     || probably not connected &lt;br /&gt;
|-&lt;br /&gt;
||3,4      ||VCC  || +5 V DC        &lt;br /&gt;
|-&lt;br /&gt;
||6        ||D+    || Data +        &lt;br /&gt;
|-&lt;br /&gt;
||7        ||D-    || Data -       &lt;br /&gt;
|-&lt;br /&gt;
||9,10,11  ||?     || unidentified  &lt;br /&gt;
|-&lt;br /&gt;
||         ||.     || it is fastener not a pin&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;vertical-align:top;width:50%;&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! Pin !! Name !! Cable color !! Description   &lt;br /&gt;
|-&lt;br /&gt;
| 1 || VCC || red || +5 V DC        &lt;br /&gt;
|-&lt;br /&gt;
| 2 || D+ || green || Data +        &lt;br /&gt;
|-&lt;br /&gt;
| 3 || D- || white || Data -       &lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || black || Ground  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:A20p]] [[Category:A21p]] [[Category:A22p]] [[Category:A30p]] [[Category:A31p]] [[Category:T20]] [[Category:T21]] [[Category:T22]] [[Category:T23]] [[Category:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_disable_the_pc_speaker_(beep!)&amp;diff=38457</id>
		<title>How to disable the pc speaker (beep!)</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_disable_the_pc_speaker_(beep!)&amp;diff=38457"/>
		<updated>2008-08-05T23:39:14Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: Liking the system beep&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Get rid of the annoying beeps in Linux&lt;br /&gt;
&lt;br /&gt;
== Remove the pc speaker module &amp;quot;pcspkr&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Open a terminal and issue this command as root:&lt;br /&gt;
 rmmod pcspkr&lt;br /&gt;
&lt;br /&gt;
To prevent the &amp;quot;pcspkr&amp;quot; module from loading again at startup, open /etc/modprobe.d/blacklist with your favorite text editor (as root) and add following lines to the end of the file:&lt;br /&gt;
 # disable the **** pc speaker&lt;br /&gt;
 blacklist pcspkr&lt;br /&gt;
&lt;br /&gt;
=== Re-enabling the pc speaker ===&lt;br /&gt;
Temporarily activate it by loading the module (run this from a terminal with root privileges):&lt;br /&gt;
 modprobe pcspkr&lt;br /&gt;
&lt;br /&gt;
If you don't want to prevent the module from loading during startup, delete the lines from /etc/modprobe.d/blacklist described in the previous section.&lt;br /&gt;
&lt;br /&gt;
== Disable console beeps in /etc/inputrc ==&lt;br /&gt;
&lt;br /&gt;
Another solution is to disable console beeps in /etc/inputrc (change with your favourite editor, should work on all distributions)&lt;br /&gt;
 # do not bell on tab-completion&lt;br /&gt;
 set bell-style none&lt;br /&gt;
&lt;br /&gt;
== Disable the system beep in Gnome ==&lt;br /&gt;
&lt;br /&gt;
In Ubuntu 7.10 and later, uncheck:&lt;br /&gt;
: System &amp;gt; Preferences &amp;gt; Sound &amp;gt; System Beep &amp;gt; Enable System Beep&lt;br /&gt;
&lt;br /&gt;
Or if it's just the terminal tab auto-completion that's bothering you, uncheck:&lt;br /&gt;
: Terminal &amp;gt; Edit &amp;gt; Current Profile &amp;gt; Terminal bell&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Learning to love the beeps ==&lt;br /&gt;
&lt;br /&gt;
Actually, these beeps are quite useful sometimes (especially with shell-scripts that want to get your attention with echo -e &amp;quot;\a&amp;quot; ). &lt;br /&gt;
The reason people tend to hate them are because they get overused.&lt;br /&gt;
&lt;br /&gt;
1. Make bash tab-completion less beepy, by editing ''/etc/inputrc'' (or ''~/.inputrc''). Add:&lt;br /&gt;
&lt;br /&gt;
 # Show all if ambigious.&lt;br /&gt;
 set show-all-if-ambiguous on&lt;br /&gt;
&lt;br /&gt;
This makes tab-completion more useful, as well as less irritating: we now only get a beep on a true error (no possible completions); if multiple options are possible, all are printed, and it doesn't beep.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Make the beep quieter, shorter, and a nicer pitch. I tend to set 440 Hz, 50ms. Configure with kcontrol (in KDE), or just use xset in your startup files: &lt;br /&gt;
 xset b 50 440 50&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Issues_with_the_Wiki&amp;diff=35883</id>
		<title>Issues with the Wiki</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Issues_with_the_Wiki&amp;diff=35883"/>
		<updated>2008-01-13T01:17:01Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a provisorium. It's a list of things that are going wrong after the update to help [[User:akw|Akw]] track and fix them.&lt;br /&gt;
&lt;br /&gt;
== Suggestions and requests ==&lt;br /&gt;
&lt;br /&gt;
=== Enabling user Javascript and CSS for MediaWiki ===&lt;br /&gt;
&lt;br /&gt;
Could ThinkWiki's MediaWiki installation get these options enabled (typically set in LocalSettings.php):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:%24wgAllowUserCss wgAllowUserCss]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:%24wgAllowUserJs wgAllowUserJs]&lt;br /&gt;
&lt;br /&gt;
These options allow users to have their own custom Javascript and CSS. I (and others) like to have our own custom themes and Javascript when working with MediaWiki-powered websites.&lt;br /&gt;
&lt;br /&gt;
--[[User:SamatJain|SamatJain]] 22:04, 28 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is a great security risk. What is it good for?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 00:14, 29 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
It allowers users to set their own customizations via Javascript and CSS. It's a minor security risk which is why MediaWiki ships with it off, but Wikipedia and other popular websites using MediaWiki ship with it on.&lt;br /&gt;
&lt;br /&gt;
--[[User:SamatJain|SamatJain]] 20:49, 29 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
There is nothing minor about it.  The web security model is site-wise when dealing with MediaWiki, there is no easy (read: manageable) way for an user, even one that uses NoScript+Firefox or something else equally powerful, to really filter out trusted from untrusted content when you start allowing people to write JavaScript into a Wiki.&lt;br /&gt;
&lt;br /&gt;
CSS is less of a problem, but it could still hork the site if one is not careful, and MediaWiki already allows us to change the pages well enough.  If you need to change thinkwiki CSS for your own viewing pleasure, any browser worth its bytes lets you layer your own CSS on top of a site's.  I would not be strongly against enabling CSS, but I don't see any reason to do it, either.&lt;br /&gt;
&lt;br /&gt;
JavaScript submissions, OTOH, is something that must remain disabled.  IMO, if you really can't survive without tacking different JavaScript code than what thinkwiki already has, you can use greasemonkey or some other such system to do it in your own browser.&lt;br /&gt;
&lt;br /&gt;
If thinkwiki starts allowing users to set javascript on their pages, I would have to block javascript completely on my side, for example.  At that time, it is likely I will just go away.  Other contributors might feel the same.  It is not that I have anything against JavaScript.  It is the fact that I cannot *trust* user-submitted JavaScript.&lt;br /&gt;
&lt;br /&gt;
--[[User:Hmh|hmh]] 12:26, 30 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
These options only enable Javascript and CSS for user pages, i.e. for User:User/Monobook.css and User/Monobook.js, specifically ''not'' for other pages. Disabling these options was done by default as a precaution against XSS vulnerabilies [http://www.gossamer-threads.com/lists/wiki/mediawiki-announce/28572 long since been fixed]. Unfortunately, while I agree with you about disabling user Javascript as a precaution, I do not think the wgAllowUserCss option has any effect unless the wgAllowUserJs option is enabled as well.&lt;br /&gt;
&lt;br /&gt;
--[[User:SamatJain|SamatJain]] 18:52, 30 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't get the point ether.&lt;br /&gt;
Why you want to use css/javascript on user pages? You always say why you think its no problem, but not what you want to do. If you need some funky looking stuff or buttons there you should use something like myspace. This Wikis (and almost all other) purpose is collecting the main - Thinkpad - content, not something cool/funky/special on userpages&lt;br /&gt;
&lt;br /&gt;
As Hmh, I would block js immediately and may leave the site, even if its only on userpages, because I don't want to mind clicking &amp;quot;the false links&amp;quot;&lt;br /&gt;
&lt;br /&gt;
--[[User:BDKMPSS|BDKMPSS]], 30 July 2007&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/MediaWiki#Customisation Wikipedia's section on MediaWiki customization] describes some of the extensions and addons available. For example, [http://en.wikipedia.org/wiki/User:Cacycle/wikEd wikiEd] is a WYSIWYG editor such that instead of having to remember MediaWiki's markup, they use an editor that's only enabled for use them. This kind of extending is difficult to do with Stylish or Greasemonkey.&lt;br /&gt;
&lt;br /&gt;
I'll repeat, since I've not been apparently misunderstood:&lt;br /&gt;
* Users ''won't'' be able to add Javascript or CSS to arbitrary pages, only those under their user profile (these are called &amp;quot;user pages&amp;quot;)&lt;br /&gt;
* Only those users logged in will see these their own changes, no other users will.&lt;br /&gt;
Given these things, I don't understand why people need to threaten they're going to stop contributing to ThinkWiki? There isn't a way you're going to turn ThinkWiki into MySpace. If you don't use specifically use any CSS or Javascript through these features, it will not effect you at all.&lt;br /&gt;
&lt;br /&gt;
What I personally want to do, I want to use a MediaWiki modification I wrote, [http://meta.wikimedia.org/wiki/Gallery_of_user_styles#Nullbook Nullbook]. I feel as if I am much more efficient with this theme. &lt;br /&gt;
&lt;br /&gt;
--[[User:SamatJain|SamatJain]] 21:58, 30 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't understand what exactly $wgAllowUserJs is supposed to do, and its [http://www.mediawiki.org/wiki/Manual:%24wgAllowUserCss documentation] is worthless. The crux of the matter is this: if those features are enabled, is there any way ''you'' can cause ''me'' to execute JavaScript (or apply CSS) that ''you'' wrote, in ''any'' page on ThinkWiki? If not, why? &lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 22:17, 30 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
[http://meta.wikimedia.org/wiki/User_styles User styles on the MediaWiki site] describes a bit more how these options work and what is provided to any modification that depends upon them. Unless there exist security-related bugs (which is the reason these features are tagged possible security risks, and why they are proactively disabled by default), by design, no, there is no way that I can cause you to execute Javascript or apply CSS that I had put into one of my own &amp;quot;user pages&amp;quot; (i.e. those under [[User:SamatJain]]).&lt;br /&gt;
&lt;br /&gt;
--[[User:SamatJain|SamatJain]] 22:53, 30 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''If and only if''' such javascript and css changes are limited so that the user who made them is the only one who gets them, then I have nothing against it.&lt;br /&gt;
&lt;br /&gt;
That said, I'd prefer if the relevant mediawiki code was audited a bit before it is enabled.&lt;br /&gt;
&lt;br /&gt;
PS: Whomever is doing it, please stop screwing around with the formatting: there must be one empty line before and after signatures, it makes the dialog a '''lot''' more readable.&lt;br /&gt;
&lt;br /&gt;
--[[User:Hmh|hmh]] 02:53, 1 August 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Troubles encountered ==&lt;br /&gt;
&lt;br /&gt;
=== Problems with Language.php ===&lt;br /&gt;
&lt;br /&gt;
Some pages are not happy with mediawiki 1.11.0, and return:&lt;br /&gt;
 Warning: array_slice() [function.array-slice]: The first argument should be an array in /home/thinkwiki/htdocs/mediawiki-1.11.0/languages/Language.php on line 1153&lt;br /&gt;
&lt;br /&gt;
For an example, see: [[User:Akw | Akw's user page]]&lt;br /&gt;
&lt;br /&gt;
--[[User:Hmh|hmh]] 01:14, 20 October 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Problem with cmdroot ===&lt;br /&gt;
&lt;br /&gt;
Following String is not handled correct by template cmdroot:&lt;br /&gt;
&amp;quot;fakeroot make-kpkg --initrd --revision=thinkpad.1.0 kernel_image&amp;quot;&lt;br /&gt;
&lt;br /&gt;
see here:&lt;br /&gt;
{{cmdroot|fakeroot make-kpkg --initrd --revision=thinkpad.1.0 kernel_image}}&lt;br /&gt;
&lt;br /&gt;
=== Can not open page to edit without introducing modifications ===&lt;br /&gt;
&lt;br /&gt;
If I open the [[X31]] model page and without touching anything I hit preview, the div token is decomposed and appears in the preview page, and of course, the photo is not in the right place.&lt;br /&gt;
 &lt;br /&gt;
--[[User:Ungoliant|Ungoliant]] 19:24, 20 February 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Uploading SVG files ===&lt;br /&gt;
&lt;br /&gt;
'''Can not upload SVG'''&lt;br /&gt;
 I get the upload warning:&lt;br /&gt;
 &amp;quot;.svg&amp;quot; is not a recommended image file format.&lt;br /&gt;
--[[User:Matt|Matt]] 14:02, 3 December 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
=== SpamBlackList not working ===&lt;br /&gt;
&lt;br /&gt;
* [[ThinkWiki:SpamBlackList]] does not appear to work anymore&lt;br /&gt;
&lt;br /&gt;
--[[User:Tonko|Tonko]] 03:40, 11 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Multiline cmdresult template ===&lt;br /&gt;
&lt;br /&gt;
You can't (easliy do a multiline {{cmdresult|cmdresult}}, can you? See:&lt;br /&gt;
&lt;br /&gt;
{{cmdresult|foo&lt;br /&gt;
bar&lt;br /&gt;
baz}}&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
{{cmdresult|foo&lt;br /&gt;
  bar (after whitespace)&lt;br /&gt;
  baz (after whitespace)}}&lt;br /&gt;
&lt;br /&gt;
This works (but is not so nice)&lt;br /&gt;
&lt;br /&gt;
{{cmdresult|foo&lt;br /&gt;
&lt;br /&gt;
bar (after empty line)&lt;br /&gt;
&lt;br /&gt;
baz (after empty line)}}&lt;br /&gt;
&lt;br /&gt;
Any suggestions?&lt;br /&gt;
&lt;br /&gt;
--[[User:Pebolle|Paul Bolle]] 10:27, 24 January 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I think the best way is to use single cmdresult calls for each line and prefix them with a colon. Like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
:{{cmdresult|foo}}&lt;br /&gt;
:{{cmdresult|bar}}&lt;br /&gt;
:{{cmdresult|baz}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;, which results in&lt;br /&gt;
:{{cmdresult|foo}}&lt;br /&gt;
:{{cmdresult|bar}}&lt;br /&gt;
:{{cmdresult|baz}}&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use &amp;amp;lt;br /&amp;amp;gt; at the ende of each line within one call, like this:&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;{{cmdresult|foo&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
bar&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
baz}}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
, which will result in&lt;br /&gt;
&lt;br /&gt;
{{cmdresult|foo&amp;lt;br /&amp;gt;&lt;br /&gt;
bar&amp;lt;br /&amp;gt;&lt;br /&gt;
baz}}&lt;br /&gt;
&lt;br /&gt;
--[[User:Wyrfel|Wyrfel]] 12:13, 24 January 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Server time out-of-sync ===&lt;br /&gt;
&lt;br /&gt;
The server time would appear to be off a lot, is it possible to setup ntpd, or to run ntpdate every hour or so using cron?&lt;br /&gt;
&lt;br /&gt;
--[[User:Tonko|Tonko]] 05:11, 22 February 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Missing imagemagick on server ===&lt;br /&gt;
&lt;br /&gt;
 Error creating thumbnail: /home/thinkwiki/htdocs/mediawiki-1.10.0/bin/ulimit4.sh: line 4: /usr/bin/convert: No such file or directory&lt;br /&gt;
&lt;br /&gt;
I think the computer this wiki is running on is missing the imagemagick software tools especially convert to create thumbnails of images &lt;br /&gt;
&lt;br /&gt;
--[[User:Markusw|Markusw]] 10:21, 26 August 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Your signature with timestamp button ===&lt;br /&gt;
&lt;br /&gt;
This Button simply doesn't work, it adds &amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
I think its a bunch on javascript so I may add:&amp;lt;br&amp;gt;&lt;br /&gt;
I use Firefox (branded as Icewasel) on Debian Testing&amp;lt;br&amp;gt;&lt;br /&gt;
Preferences:&amp;lt;br&amp;gt;&lt;br /&gt;
Raw signatures (without automatic link) OFF&amp;lt;br&amp;gt;&lt;br /&gt;
Show edit toolbar (JavaScript) ON&amp;lt;br&amp;gt;&lt;br /&gt;
(Oh... Yes its javascript)&lt;br /&gt;
&lt;br /&gt;
EDIT:&lt;br /&gt;
Even in my Windows XP SP2 Virtual Machine it don't work in Internet Explorer 7.0&lt;br /&gt;
&lt;br /&gt;
--[[User:BDKMPSS|BDKMPSS]] 29 July 2007&lt;br /&gt;
&lt;br /&gt;
I have been using this button for quite a while now, and it seems to work just fine.  It does insert &amp;lt;nowiki&amp;gt;--~~~&amp;lt;/nowiki&amp;gt;, but upon submitting previews or saving the page, it gets converted into my signature.&lt;br /&gt;
&lt;br /&gt;
--[[User:Hmh|hmh]] 01:27, 20 October 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
hm... (wow a nice joke...)&lt;br /&gt;
&lt;br /&gt;
lets try this&lt;br /&gt;
&lt;br /&gt;
--[[User:BDKMPSS|BDKMPSS]] 00:30, 21 October 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
OK, its all fine... I'm sorry but this seems to be extremely non-intuitive...&lt;br /&gt;
&lt;br /&gt;
--[[User:BDKMPSS|BDKMPSS]] 00:32, 21 October 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yeah, intuitive it ain't...&lt;br /&gt;
&lt;br /&gt;
--[[User:Hmh|hmh]] 00:43, 22 October 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Problem with the feeds (RSS and Atom) ===&lt;br /&gt;
The feed does not validate, and thus not load in Firefox or Liferea.&lt;br /&gt;
&lt;br /&gt;
The problem is, that there is a trailing newline before &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt; which is not allowed&lt;br /&gt;
&lt;br /&gt;
--[[User:Zhenech|Zhenech]] 12:14, 11 December 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Search is broken ===&lt;br /&gt;
&lt;br /&gt;
The search feature is completely borked: every query I try returns zero results. --[[User:RichardNeill|RichardNeill]] 02:16, 13 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
== Problems fixed ==&lt;br /&gt;
&lt;br /&gt;
* List emptied, since everything in it was more than one year old&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Issues_with_the_Wiki&amp;diff=35882</id>
		<title>Issues with the Wiki</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Issues_with_the_Wiki&amp;diff=35882"/>
		<updated>2008-01-13T01:16:33Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: Search is broken&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a provisorium. It's a list of things that are going wrong after the update to help [[User:akw|Akw]] track and fix them.&lt;br /&gt;
&lt;br /&gt;
== Suggestions and requests ==&lt;br /&gt;
&lt;br /&gt;
=== Enabling user Javascript and CSS for MediaWiki ===&lt;br /&gt;
&lt;br /&gt;
Could ThinkWiki's MediaWiki installation get these options enabled (typically set in LocalSettings.php):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:%24wgAllowUserCss wgAllowUserCss]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:%24wgAllowUserJs wgAllowUserJs]&lt;br /&gt;
&lt;br /&gt;
These options allow users to have their own custom Javascript and CSS. I (and others) like to have our own custom themes and Javascript when working with MediaWiki-powered websites.&lt;br /&gt;
&lt;br /&gt;
--[[User:SamatJain|SamatJain]] 22:04, 28 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is a great security risk. What is it good for?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 00:14, 29 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
It allowers users to set their own customizations via Javascript and CSS. It's a minor security risk which is why MediaWiki ships with it off, but Wikipedia and other popular websites using MediaWiki ship with it on.&lt;br /&gt;
&lt;br /&gt;
--[[User:SamatJain|SamatJain]] 20:49, 29 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
There is nothing minor about it.  The web security model is site-wise when dealing with MediaWiki, there is no easy (read: manageable) way for an user, even one that uses NoScript+Firefox or something else equally powerful, to really filter out trusted from untrusted content when you start allowing people to write JavaScript into a Wiki.&lt;br /&gt;
&lt;br /&gt;
CSS is less of a problem, but it could still hork the site if one is not careful, and MediaWiki already allows us to change the pages well enough.  If you need to change thinkwiki CSS for your own viewing pleasure, any browser worth its bytes lets you layer your own CSS on top of a site's.  I would not be strongly against enabling CSS, but I don't see any reason to do it, either.&lt;br /&gt;
&lt;br /&gt;
JavaScript submissions, OTOH, is something that must remain disabled.  IMO, if you really can't survive without tacking different JavaScript code than what thinkwiki already has, you can use greasemonkey or some other such system to do it in your own browser.&lt;br /&gt;
&lt;br /&gt;
If thinkwiki starts allowing users to set javascript on their pages, I would have to block javascript completely on my side, for example.  At that time, it is likely I will just go away.  Other contributors might feel the same.  It is not that I have anything against JavaScript.  It is the fact that I cannot *trust* user-submitted JavaScript.&lt;br /&gt;
&lt;br /&gt;
--[[User:Hmh|hmh]] 12:26, 30 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
These options only enable Javascript and CSS for user pages, i.e. for User:User/Monobook.css and User/Monobook.js, specifically ''not'' for other pages. Disabling these options was done by default as a precaution against XSS vulnerabilies [http://www.gossamer-threads.com/lists/wiki/mediawiki-announce/28572 long since been fixed]. Unfortunately, while I agree with you about disabling user Javascript as a precaution, I do not think the wgAllowUserCss option has any effect unless the wgAllowUserJs option is enabled as well.&lt;br /&gt;
&lt;br /&gt;
--[[User:SamatJain|SamatJain]] 18:52, 30 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't get the point ether.&lt;br /&gt;
Why you want to use css/javascript on user pages? You always say why you think its no problem, but not what you want to do. If you need some funky looking stuff or buttons there you should use something like myspace. This Wikis (and almost all other) purpose is collecting the main - Thinkpad - content, not something cool/funky/special on userpages&lt;br /&gt;
&lt;br /&gt;
As Hmh, I would block js immediately and may leave the site, even if its only on userpages, because I don't want to mind clicking &amp;quot;the false links&amp;quot;&lt;br /&gt;
&lt;br /&gt;
--[[User:BDKMPSS|BDKMPSS]], 30 July 2007&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/MediaWiki#Customisation Wikipedia's section on MediaWiki customization] describes some of the extensions and addons available. For example, [http://en.wikipedia.org/wiki/User:Cacycle/wikEd wikiEd] is a WYSIWYG editor such that instead of having to remember MediaWiki's markup, they use an editor that's only enabled for use them. This kind of extending is difficult to do with Stylish or Greasemonkey.&lt;br /&gt;
&lt;br /&gt;
I'll repeat, since I've not been apparently misunderstood:&lt;br /&gt;
* Users ''won't'' be able to add Javascript or CSS to arbitrary pages, only those under their user profile (these are called &amp;quot;user pages&amp;quot;)&lt;br /&gt;
* Only those users logged in will see these their own changes, no other users will.&lt;br /&gt;
Given these things, I don't understand why people need to threaten they're going to stop contributing to ThinkWiki? There isn't a way you're going to turn ThinkWiki into MySpace. If you don't use specifically use any CSS or Javascript through these features, it will not effect you at all.&lt;br /&gt;
&lt;br /&gt;
What I personally want to do, I want to use a MediaWiki modification I wrote, [http://meta.wikimedia.org/wiki/Gallery_of_user_styles#Nullbook Nullbook]. I feel as if I am much more efficient with this theme. &lt;br /&gt;
&lt;br /&gt;
--[[User:SamatJain|SamatJain]] 21:58, 30 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't understand what exactly $wgAllowUserJs is supposed to do, and its [http://www.mediawiki.org/wiki/Manual:%24wgAllowUserCss documentation] is worthless. The crux of the matter is this: if those features are enabled, is there any way ''you'' can cause ''me'' to execute JavaScript (or apply CSS) that ''you'' wrote, in ''any'' page on ThinkWiki? If not, why? &lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 22:17, 30 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
[http://meta.wikimedia.org/wiki/User_styles User styles on the MediaWiki site] describes a bit more how these options work and what is provided to any modification that depends upon them. Unless there exist security-related bugs (which is the reason these features are tagged possible security risks, and why they are proactively disabled by default), by design, no, there is no way that I can cause you to execute Javascript or apply CSS that I had put into one of my own &amp;quot;user pages&amp;quot; (i.e. those under [[User:SamatJain]]).&lt;br /&gt;
&lt;br /&gt;
--[[User:SamatJain|SamatJain]] 22:53, 30 July 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''If and only if''' such javascript and css changes are limited so that the user who made them is the only one who gets them, then I have nothing against it.&lt;br /&gt;
&lt;br /&gt;
That said, I'd prefer if the relevant mediawiki code was audited a bit before it is enabled.&lt;br /&gt;
&lt;br /&gt;
PS: Whomever is doing it, please stop screwing around with the formatting: there must be one empty line before and after signatures, it makes the dialog a '''lot''' more readable.&lt;br /&gt;
&lt;br /&gt;
--[[User:Hmh|hmh]] 02:53, 1 August 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Troubles encountered ==&lt;br /&gt;
&lt;br /&gt;
=== Problems with Language.php ===&lt;br /&gt;
&lt;br /&gt;
Some pages are not happy with mediawiki 1.11.0, and return:&lt;br /&gt;
 Warning: array_slice() [function.array-slice]: The first argument should be an array in /home/thinkwiki/htdocs/mediawiki-1.11.0/languages/Language.php on line 1153&lt;br /&gt;
&lt;br /&gt;
For an example, see: [[User:Akw | Akw's user page]]&lt;br /&gt;
&lt;br /&gt;
--[[User:Hmh|hmh]] 01:14, 20 October 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Problem with cmdroot ===&lt;br /&gt;
&lt;br /&gt;
Following String is not handled correct by template cmdroot:&lt;br /&gt;
&amp;quot;fakeroot make-kpkg --initrd --revision=thinkpad.1.0 kernel_image&amp;quot;&lt;br /&gt;
&lt;br /&gt;
see here:&lt;br /&gt;
{{cmdroot|fakeroot make-kpkg --initrd --revision=thinkpad.1.0 kernel_image}}&lt;br /&gt;
&lt;br /&gt;
=== Can not open page to edit without introducing modifications ===&lt;br /&gt;
&lt;br /&gt;
If I open the [[X31]] model page and without touching anything I hit preview, the div token is decomposed and appears in the preview page, and of course, the photo is not in the right place.&lt;br /&gt;
 &lt;br /&gt;
--[[User:Ungoliant|Ungoliant]] 19:24, 20 February 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Uploading SVG files ===&lt;br /&gt;
&lt;br /&gt;
'''Can not upload SVG'''&lt;br /&gt;
 I get the upload warning:&lt;br /&gt;
 &amp;quot;.svg&amp;quot; is not a recommended image file format.&lt;br /&gt;
--[[User:Matt|Matt]] 14:02, 3 December 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
=== SpamBlackList not working ===&lt;br /&gt;
&lt;br /&gt;
* [[ThinkWiki:SpamBlackList]] does not appear to work anymore&lt;br /&gt;
&lt;br /&gt;
--[[User:Tonko|Tonko]] 03:40, 11 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Multiline cmdresult template ===&lt;br /&gt;
&lt;br /&gt;
You can't (easliy do a multiline {{cmdresult|cmdresult}}, can you? See:&lt;br /&gt;
&lt;br /&gt;
{{cmdresult|foo&lt;br /&gt;
bar&lt;br /&gt;
baz}}&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
{{cmdresult|foo&lt;br /&gt;
  bar (after whitespace)&lt;br /&gt;
  baz (after whitespace)}}&lt;br /&gt;
&lt;br /&gt;
This works (but is not so nice)&lt;br /&gt;
&lt;br /&gt;
{{cmdresult|foo&lt;br /&gt;
&lt;br /&gt;
bar (after empty line)&lt;br /&gt;
&lt;br /&gt;
baz (after empty line)}}&lt;br /&gt;
&lt;br /&gt;
Any suggestions?&lt;br /&gt;
&lt;br /&gt;
--[[User:Pebolle|Paul Bolle]] 10:27, 24 January 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I think the best way is to use single cmdresult calls for each line and prefix them with a colon. Like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
:{{cmdresult|foo}}&lt;br /&gt;
:{{cmdresult|bar}}&lt;br /&gt;
:{{cmdresult|baz}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;, which results in&lt;br /&gt;
:{{cmdresult|foo}}&lt;br /&gt;
:{{cmdresult|bar}}&lt;br /&gt;
:{{cmdresult|baz}}&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use &amp;amp;lt;br /&amp;amp;gt; at the ende of each line within one call, like this:&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;{{cmdresult|foo&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
bar&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
baz}}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
, which will result in&lt;br /&gt;
&lt;br /&gt;
{{cmdresult|foo&amp;lt;br /&amp;gt;&lt;br /&gt;
bar&amp;lt;br /&amp;gt;&lt;br /&gt;
baz}}&lt;br /&gt;
&lt;br /&gt;
--[[User:Wyrfel|Wyrfel]] 12:13, 24 January 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Server time out-of-sync ===&lt;br /&gt;
&lt;br /&gt;
The server time would appear to be off a lot, is it possible to setup ntpd, or to run ntpdate every hour or so using cron?&lt;br /&gt;
&lt;br /&gt;
--[[User:Tonko|Tonko]] 05:11, 22 February 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Missing imagemagick on server ===&lt;br /&gt;
&lt;br /&gt;
 Error creating thumbnail: /home/thinkwiki/htdocs/mediawiki-1.10.0/bin/ulimit4.sh: line 4: /usr/bin/convert: No such file or directory&lt;br /&gt;
&lt;br /&gt;
I think the computer this wiki is running on is missing the imagemagick software tools especially convert to create thumbnails of images &lt;br /&gt;
&lt;br /&gt;
--[[User:Markusw|Markusw]] 10:21, 26 August 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Your signature with timestamp button ===&lt;br /&gt;
&lt;br /&gt;
This Button simply doesn't work, it adds &amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
I think its a bunch on javascript so I may add:&amp;lt;br&amp;gt;&lt;br /&gt;
I use Firefox (branded as Icewasel) on Debian Testing&amp;lt;br&amp;gt;&lt;br /&gt;
Preferences:&amp;lt;br&amp;gt;&lt;br /&gt;
Raw signatures (without automatic link) OFF&amp;lt;br&amp;gt;&lt;br /&gt;
Show edit toolbar (JavaScript) ON&amp;lt;br&amp;gt;&lt;br /&gt;
(Oh... Yes its javascript)&lt;br /&gt;
&lt;br /&gt;
EDIT:&lt;br /&gt;
Even in my Windows XP SP2 Virtual Machine it don't work in Internet Explorer 7.0&lt;br /&gt;
&lt;br /&gt;
--[[User:BDKMPSS|BDKMPSS]] 29 July 2007&lt;br /&gt;
&lt;br /&gt;
I have been using this button for quite a while now, and it seems to work just fine.  It does insert &amp;lt;nowiki&amp;gt;--~~~&amp;lt;/nowiki&amp;gt;, but upon submitting previews or saving the page, it gets converted into my signature.&lt;br /&gt;
&lt;br /&gt;
--[[User:Hmh|hmh]] 01:27, 20 October 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
hm... (wow a nice joke...)&lt;br /&gt;
&lt;br /&gt;
lets try this&lt;br /&gt;
&lt;br /&gt;
--[[User:BDKMPSS|BDKMPSS]] 00:30, 21 October 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
OK, its all fine... I'm sorry but this seems to be extremely non-intuitive...&lt;br /&gt;
&lt;br /&gt;
--[[User:BDKMPSS|BDKMPSS]] 00:32, 21 October 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yeah, intuitive it ain't...&lt;br /&gt;
&lt;br /&gt;
--[[User:Hmh|hmh]] 00:43, 22 October 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Problem with the feeds (RSS and Atom) ===&lt;br /&gt;
The feed does not validate, and thus not load in Firefox or Liferea.&lt;br /&gt;
&lt;br /&gt;
The problem is, that there is a trailing newline before &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt; which is not allowed&lt;br /&gt;
&lt;br /&gt;
--[[User:Zhenech|Zhenech]] 12:14, 11 December 2007 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Search is broken ==&lt;br /&gt;
&lt;br /&gt;
The search feature is completely borked: every query I try returns zero results. --[[User:RichardNeill|RichardNeill]] 02:16, 13 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
== Problems fixed ==&lt;br /&gt;
&lt;br /&gt;
* List emptied, since everything in it was more than one year old&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Category:A22p&amp;diff=34211</id>
		<title>Category:A22p</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Category:A22p&amp;diff=34211"/>
		<updated>2007-11-01T03:38:23Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: Added link to my (long) A22p howto&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
=== ThinkPad A22p ===&lt;br /&gt;
This page gives an overview of all ThinkPad A22p related topics.&lt;br /&gt;
==== Standard Features ====&lt;br /&gt;
* [[Intel Mobile Pentium III]] 900 MHz or 1.0 GHz CPU&lt;br /&gt;
* [[ATI Rage Mobility M3|ATI Rage Mobility 128]] with 16MB&lt;br /&gt;
** 15.0&amp;quot; TFT display with 1600x1200 resolution&lt;br /&gt;
* 128MB [[PC-100]] memory standard&lt;br /&gt;
* 32GB HDD&lt;br /&gt;
* [[CS4624]]/[[CS4297|CS4297A]] AC'97 Audio controller&lt;br /&gt;
* [[UltraBay|UltraBay 2000]] with one of the following:&lt;br /&gt;
** DVD-ROM drive&lt;br /&gt;
** CD-RW drive&lt;br /&gt;
* [[MiniPCI slot]] with one of the following:&lt;br /&gt;
** [[Mini-PCI Modem card]]&lt;br /&gt;
** [[Intel 10/100 Ethernet Mini-PCI Adapter with 56K Modem]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
[[image:ThinkPadA20.jpg|ThinkPad A22p]]&lt;br /&gt;
|}&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles_pdf/23p0896.pdf A2*m, A2*p, Dock (2631) - Hardware Maintenance Manual (October 2001)] (1,854,846 Bytes)&lt;br /&gt;
[[http://www.richardneill.org/a22p-mdk11-0.php Mandriva 2006 (Mandrake 11.0) on an A22p]]&lt;br /&gt;
&lt;br /&gt;
[[Category:A Series]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=High-pitch_noise_from_AC-Adapter&amp;diff=29578</id>
		<title>High-pitch noise from AC-Adapter</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=High-pitch_noise_from_AC-Adapter&amp;diff=29578"/>
		<updated>2007-05-02T23:07:12Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* High-pitch noise from AC-Adapter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== High-pitch noise from AC-Adapter ==&lt;br /&gt;
&lt;br /&gt;
This appears in some AC adapters shipped with some {{T60}}, {{T60p}}, {{Z61m}}, {{T30}} (they're possibly shipped with others, too)&lt;br /&gt;
So far, Lenovo did not offer any feedback for this problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mine (supplied with a T60p) made an unpleasant &amp;quot;crackling, whining&amp;quot; noise. My supplier (Hemini) accepted it as a warranty issue, and &lt;br /&gt;
provided me with a new one; this new one is *totally* silent (even with my ear right up to the PSU). Good switched mode PSUs should be inaudible; noisy ones are either defective, (or very cheaply constructed). --[[User:RichardNeill|RichardNeill]] 01:07, 3 May 2007 (CEST)&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=High-pitch_noise_from_AC-Adapter&amp;diff=29095</id>
		<title>High-pitch noise from AC-Adapter</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=High-pitch_noise_from_AC-Adapter&amp;diff=29095"/>
		<updated>2007-04-06T01:23:44Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* High-pitch noise from AC-Adapter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== High-pitch noise from AC-Adapter ==&lt;br /&gt;
&lt;br /&gt;
This appears in some AC adapters shipped with some {{T60}}, {{T60p}}, {{Z61m}}, {{T30}} (they're possibly shipped with others, too)&lt;br /&gt;
So far, Lenovo did not offer any feedback for this problem.&lt;br /&gt;
&lt;br /&gt;
I haven't actually returned mine yet, but according to my supplier (Hemini), this is not good enough, and they will replace it.--[[User:RichardNeill|RichardNeill]] 03:23, 6 April 2007 (CEST)&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:How_to_configure_the_TrackPoint&amp;diff=29033</id>
		<title>Talk:How to configure the TrackPoint</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:How_to_configure_the_TrackPoint&amp;diff=29033"/>
		<updated>2007-04-04T01:22:51Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* TrackPoint scrolling inverted in Firefox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== /sys-configuration files ====&lt;br /&gt;
where can i find documentation of the other files (thresh, upthresh, skipback, reach, inertia...)? [[User:Blerp|Blerp]] 01:01, 9 March 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
==== shifting /sys-paths ====&lt;br /&gt;
2007-03-13&lt;br /&gt;
On my Thinkpad R60 with kernel 2.6.20, the path is {{path|/sys/devices/platform/i8042/serio1/serio2}}.&lt;br /&gt;
&lt;br /&gt;
On {{Fedora}} 5, with kernels 2.6.15 and forward, the path does not include &lt;br /&gt;
{{path|serio2}}; it stops at {{path|serio0}}. &lt;br /&gt;
&lt;br /&gt;
Same thing on a {{Ubuntu}} Dapper install on an {{X31}}, again with kernel 2.6.15 (maybe that's the reason? [[User:Piccobello|Piccobello]] 17:02, 26 November 2006 (CET)).&lt;br /&gt;
&lt;br /&gt;
2006-07-18&lt;br /&gt;
On {{Fedora}} 5, with kernels 2.6.16 and forward, the path is {{path|/sys/devices/platform/i8042/serio0/serio2}}&lt;br /&gt;
&lt;br /&gt;
2005-11-07&lt;br /&gt;
OpenSuSE 10.0 has a kernel based on 2.6.13 (probably heavily patched), but the directory /sys/devices/platform/i8042/serio0/serio2 does not exist.&lt;br /&gt;
instead, it looks like this:&lt;br /&gt;
 hoppetosse:/sys/devices/platform/i8042/serio0 # ls -l&lt;br /&gt;
 total 0&lt;br /&gt;
 -rw-r--r--  1 root root 4096 Nov  7 18:38 bind_mode&lt;br /&gt;
 lrwxrwxrwx  1 root root    0 Nov  7 18:38 bus -&amp;gt; ../../../../bus/serio&lt;br /&gt;
 -r--r--r--  1 root root 4096 Nov  7 18:38 description&lt;br /&gt;
 lrwxrwxrwx  1 root root    0 Nov  7 18:38 driver -&amp;gt; ../../../../bus/serio/drivers/psmouse&lt;br /&gt;
 --w-------  1 root root 4096 Nov  7 18:38 drvctl&lt;br /&gt;
 drwxr-xr-x  2 root root    0 Nov  7 18:38 id&lt;br /&gt;
 -r--r--r--  1 root root 4096 Nov  7 18:38 modalias&lt;br /&gt;
 drwxr-xr-x  2 root root    0 Nov  7 18:38 power&lt;br /&gt;
 -rw-r--r--  1 root root 4096 Nov  7 18:38 protocol&lt;br /&gt;
 -rw-r--r--  1 root root 4096 Nov  7 18:38 rate&lt;br /&gt;
 -rw-r--r--  1 root root 4096 Nov  7 18:38 resetafter&lt;br /&gt;
 -rw-r--r--  1 root root 4096 Nov  7 18:38 resolution&lt;br /&gt;
&amp;quot;description&amp;quot; says it's an &amp;quot;i8042 Aux Port&amp;quot;. The page [[Patch to enable advanced trackpoint configuration]] seems to imply that a kernel patch is needed in order to get those features... this needs clarification.&lt;br /&gt;
hmm. where can i find out whether &amp;quot;drvctrl&amp;quot; is what i'm looking for and what options it takes? guess it's back to RTFS...&lt;br /&gt;
&lt;br /&gt;
2005-10-06&lt;br /&gt;
It seems that new version of the patch ( 2.6.12 at least ), the press to select entry in /sys is named &amp;quot;press_to_select&amp;quot; and not &amp;quot;ptson&amp;quot;. I changed the page accordingly so that it complies with the [[Patch to enable advanced trackpoint configuration]] page.&lt;br /&gt;
If you use an older version try :&lt;br /&gt;
&lt;br /&gt;
====Press to Select====&lt;br /&gt;
Press to Select allows you to tap the control stick which will simulate a left click. You can enable this feature by typing the following in to a terminal (you may need to be root):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/devices/platform/i8042/serio0/ptson}}&lt;br /&gt;
&lt;br /&gt;
Press to Select should now be enabled. You can disable it in a similar manner:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/i8042/serio0/ptson}}&lt;br /&gt;
&lt;br /&gt;
==== No mouse in {{Fedora}} Core 6 ====&lt;br /&gt;
FC6 makes an X11/xorg.conf file with no mouse section, so it's not clear how to make the TrackPoint work for scrolling. Any ideas? --[[User:Whizkid|Whizkid]] 17:36, 4 December 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
==== TrackPoint scrolling inverted in Firefox ====&lt;br /&gt;
Running Ubuntu Feisty, Firefox 2.0.0.3, I edited /etc/X11/xorg.conf like described in the article and set mousewheel.horizscroll.withnokey.action = 0; in Firefox.&lt;br /&gt;
Scrolling works perfectly in other applications. Up-Down scrolling in Firefox, too, but right-left is inverted (only in Firefox). Does anybody have an idea why this could be? [[User:Tec|Tec]] 11:15, 30 March 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
Yes: you have to configure mousewheel.horizscroll.withnokey.numlines as well. I have the value set to 1, but you may need to set it to -1.&lt;br /&gt;
There is also a mousewheel.horizscroll.withnokey.sysnumlines setting, which you must set to false. --[[User:RichardNeill|RichardNeill]] 03:22, 4 April 2007 (CEST)&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problem_with_high_pitch_noises&amp;diff=28180</id>
		<title>Problem with high pitch noises</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problem_with_high_pitch_noises&amp;diff=28180"/>
		<updated>2007-02-10T22:43:02Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Other solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Information on strange high pitch, low volume noises emitted by ThinkPads.&lt;br /&gt;
&lt;br /&gt;
==Problem description==&lt;br /&gt;
Even though ThinkPads are known as very silent notebooks, they tend to emit different, mostly high pitch noises in certain circumstances. The noises are of low volume and hence not realized by everyone or at least tolerated by most people. However, there are those with &amp;quot;bat like ears&amp;quot; that hear them and might be annoyed by that.&lt;br /&gt;
&lt;br /&gt;
==Affected Models==&lt;br /&gt;
Noises have been experienced in the following situations:&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;
! style=&amp;quot;vertical-align:top;background-color:#DDDDDD;&amp;quot; | situation&lt;br /&gt;
! style=&amp;quot;vertical-align:top;background-color:#DDDDDD;&amp;quot; | noise description&lt;br /&gt;
! style=&amp;quot;vertical-align:top;background-color:#DDDDDD;&amp;quot; | affected models&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
Plugged into AC / running at high CPU frequency&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
soft crackling, buzzing noise&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
*{{T41}}&lt;br /&gt;
**2379-DJU&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
ThinkPad suspended to RAM&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
constant high pitch noise&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
*{{T42p}}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
ThinkPad connected to power and switched off, with battery fully charged&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
constant high pitch noise&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
*{{T41p}}&lt;br /&gt;
**2373-GHG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
moving windows or just the mouse in xorg&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
strange noise like a rapid series of very short high pitch noises adding to a constant kind of whistling (only as long as the movement goes)&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
*{{T41p}}&lt;br /&gt;
**2373-GHG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
Thinkpad connected to power or working on battery, also when suspended to RAM&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
High pitch noise also when HD is powered down.&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
*{{T23}}&lt;br /&gt;
**2647-DG4&lt;br /&gt;
*{{X24}}&lt;br /&gt;
**2662-MWG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
Thinkpad connected to power battery charged less than 60%&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
High pitch noise till battery is charged more than 60%.&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
*{{T41p}}&lt;br /&gt;
**2373-GEG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
Constantly, if AC connected&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
High pitched, low volume constant noise.&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
*{{T40}}&lt;br /&gt;
**2373-88U&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
When the CPU freq jumps up to 1Ghz or above, or when the laptop is in suspend mode&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
Constant high pitched&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
*{{R50}}&lt;br /&gt;
**1829-6DM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
(May come from harddisk.)&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
continuous, intermittent, low volume, high pitched&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
*{{600X}}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
ACPI puts the processor into the C3 or C4 power saving states (i.e., the system is idle).&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
High-pitched crackling noise.&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
*{{X41}}&lt;br /&gt;
*{{T43}}&lt;br /&gt;
**2686-DGU&lt;br /&gt;
*{{T43p}}&lt;br /&gt;
*{{T60}}&lt;br /&gt;
**2007-72U&lt;br /&gt;
*{{T21}}&lt;br /&gt;
*{{T20}}&lt;br /&gt;
**2648-46U&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
Cpufreqd (or powernowd etc.) slows down the processor, for exemple at the end of an heavy task.&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
High-pitched crackling noise.&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
*{{T42}}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
When on battery&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
Noise level varies from inaudible to clearly audible, screeching sound, or sometimes beeping (when wifi is on)&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
*{{R52}}&lt;br /&gt;
**1858-A11&lt;br /&gt;
*{{T43}}&lt;br /&gt;
**2686-DGU&lt;br /&gt;
**1871-4AG&lt;br /&gt;
*{{T60}}&lt;br /&gt;
**2007-72U&lt;br /&gt;
*{{x60}}&lt;br /&gt;
*{{x31}}&lt;br /&gt;
**2673-CBU&lt;br /&gt;
*{{Z61m}}&lt;br /&gt;
**9450-3HG&lt;br /&gt;
*{{Z61t}}&lt;br /&gt;
**9440-2QU&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| CPU is used much AND laptop is on AC power AND the TFT panel is enabled.&lt;br /&gt;
| Screetching high pitch noise, like a million crickets&lt;br /&gt;
| &lt;br /&gt;
* {{X41}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Network is pluged in and networkload is ~100%.&lt;br /&gt;
| low volume highfreq. pitch noise from left speaker or cpu.&lt;br /&gt;
|&lt;br /&gt;
*{{Z60m}}, {{Z60t}}&lt;br /&gt;
*{{T40}}&lt;br /&gt;
*{{T43}}&lt;br /&gt;
**2687-DDU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Affected Operating Systems==&lt;br /&gt;
All, though Linux appears especially susceptible.&lt;br /&gt;
&lt;br /&gt;
==Possible sources==&lt;br /&gt;
&lt;br /&gt;
* '''CPU activity:''' On some models the noise is triggered by certain CPU power states or activity patterns (as proven [http://www.wisdom.weizmann.ac.il/~tromer/acoustic here]).&lt;br /&gt;
* '''Graphics processor:''' In some models from the T2x era, e.g. the {{T23}}, the problem was related to the graphics circuitry and occured especially or only while making use of DirectDraw functions. IBM was able to fix it through a BIOS upgrade.&lt;br /&gt;
* '''Hard disk:''' On some ThinkPads the processor and hard disk are adjacent and produce similar noise. For example, in the {{X41}} the sound generated by the hard disk is likely to be loudest at the vent.&lt;br /&gt;
* '''Gigabit Ethernet processor:''' In some models (e.g., {{T43}}) high ethernet activity causes a high pitch noise.&lt;br /&gt;
&lt;br /&gt;
* '''Screen brightness:''' on an {{X31}}, a hissing sound is started whenever screen brightness is not full.&lt;br /&gt;
&lt;br /&gt;
==Status==&lt;br /&gt;
&lt;br /&gt;
The problem is highly specific to operating system, model and even individual machines. There is no universal solution, but on most machines one of the following will reduce or eliminate the noise (possibly at some cost in power consumption).&lt;br /&gt;
&lt;br /&gt;
==Solutions for CPU-triggered noise==&lt;br /&gt;
&lt;br /&gt;
===Limit ACPI CPU power states===&lt;br /&gt;
&lt;br /&gt;
There are eight ACPI CPU power states, called C1 through C8 (but the ThinkPad BIOS often remaps them and uses only C1 to C4). Often only the extreme power saving modes C4 or C3 produce the noise, so the noise can be stopped by instructing the Linux ACPI code to use only lower modes.&lt;br /&gt;
&lt;br /&gt;
To forbid the ACPI driver from using C4 (this fixed the problem with on some ThinkPad {{T43}}, {{T43p}} and {{T41}}):&lt;br /&gt;
* If the ACPI processor component is compiled as built-in (&amp;lt;tt&amp;gt;CONFIG_ACPI_PROCESSOR=y&amp;lt;/tt&amp;gt;):&lt;br /&gt;
**Pass the {{bootparm|max_cstate|3}} kernel argument.&lt;br /&gt;
* If the ACPI processor component is loaded as a module (&amp;lt;tt&amp;gt;CONFIG_ACPI_PROCESSOR=m&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;processor&amp;lt;/tt&amp;gt; shows in the output of {{cmdroot|lsmod}}), do either of:&lt;br /&gt;
** Pass the {{bootparm|processor.max_cstate|3}} kernel argument (this does not work in Ubuntu 5.10 with default kernel).&lt;br /&gt;
** Add &amp;lt;code&amp;gt;options processor max_cstate=3&amp;lt;/code&amp;gt; to {{path|/etc/modprobe.conf}} (or {{path|/etc/modprobe.conf.local}}, or {{path|/etc/modprobe.d/...}}, depending on your system) (this does not work in Ubuntu 5.10 with default kernel).&lt;br /&gt;
** {{cmdroot|echo 3 &amp;gt;  /sys/module/processor/parameters/max_cstate}} (this can be changed in runtime for experimentation). (If may need to be set again upon resume from suspend, e.g., in the wakeup script.)&lt;br /&gt;
** (On Ubuntu 5.10, the default kernel uses &amp;lt;code&amp;gt;processor&amp;lt;/code&amp;gt; as a module.  Unfortunately, the script loading it, {{path|/etc/init.d/acpid}}, ignores the &amp;lt;code&amp;gt;options processor max_cstate=3&amp;lt;/code&amp;gt; setting in {{path|/etc/modprobe.d/&amp;lt;my file&amp;gt;}}.  As a solution for this specific problem, add the line &amp;lt;code&amp;gt;echo 2 &amp;gt; /sys/module/processor/parameters/max_cstate&amp;lt;/code&amp;gt; directly to {{path|/etc/init.d/acpid}}, at the end of the function &amp;lt;code&amp;gt;load_modules()&amp;lt;/code&amp;gt;, immediately after the line &amp;lt;code&amp;gt;echo &amp;quot;$PRINTK&amp;quot; &amp;gt; /proc/sys/kernel/printk&amp;lt;/code&amp;gt;.)&lt;br /&gt;
** On Gentoo: Configure your Thinkpad as described in the [http://www.gentoo.org/doc/en/power-management-guide.xml Power Management Guide].  Then as root create the files {{path|/etc/init.d/limit-sleep-states}} and {{path|/etc/conf.d/limit-sleep-states}} as below. After that just issue the command {{cmdroot|rc-update add limit-sleep-states default}} to limit the sleep states only when running on AC power, or {{cmdroot|rc-update add limit-sleep-states default battery}} to always limit the sleep states.&lt;br /&gt;
 cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/init.d/limit-sleep-states&lt;br /&gt;
 #!/sbin/runscript&lt;br /&gt;
 &lt;br /&gt;
 depend() {&lt;br /&gt;
 	need acpid&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 start() {&lt;br /&gt;
 	ebegin &amp;quot;Limiting CPU sleep state to C${LIMIT_CSTATE}&amp;quot;&lt;br /&gt;
 	echo $LIMIT_CSTATE &amp;gt; /sys/module/processor/parameters/max_cstate&lt;br /&gt;
 	eend $?&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 stop() {&lt;br /&gt;
        ebegin &amp;quot;Removing CPU sleep state limit&amp;quot;&lt;br /&gt;
        echo $REMOVE_CSTATE &amp;gt; /sys/module/processor/parameters/max_cstate&lt;br /&gt;
        eend $?&lt;br /&gt;
 }&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/conf.d/limit-sleep-states&lt;br /&gt;
 # limit CPU sleep state to the following value (adjust accordingly)&lt;br /&gt;
 LIMIT_CSTATE=3&lt;br /&gt;
 # some value which is higher than all available sleep states&lt;br /&gt;
 REMOVE_CSTATE=8&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
To also forbid the C3 state, replace &amp;quot;&amp;lt;tt&amp;gt;3&amp;lt;/tt&amp;gt;&amp;quot; with &amp;quot;&amp;lt;tt&amp;gt;2&amp;lt;/tt&amp;gt;&amp;quot; above (this fixed the problem on some ThinkPad {{X40}}, {{X41}}, {{X60}}, {{T60}}, {{Z61t}} and {{R52}}, as well as on {{T20}} where C4 is not supported at all).&lt;br /&gt;
&lt;br /&gt;
Note that these options affect power consumption when the CPU is idle. For example, here is the [[How to measure power consumption|measured power consumption]] on a ThinkPad {{T43}}:&lt;br /&gt;
* {{bootparm|processor.max_cstate|4}}: 15160mW (default, noisy)&lt;br /&gt;
* {{bootparm|processor.max_cstate|3}}: 15770mW (660mW higher, silent)&lt;br /&gt;
* {{bootparm|processor.max_cstate|2}}: 16100mW (2940mW higher, silent)&lt;br /&gt;
&lt;br /&gt;
One can control how often Linux tries to enter the C3 state by using the {{bootparm|processor.bm_history|&amp;lt;bitmask&amp;gt;}} parameter on kernels with a scheduler frequency below 800Hz (and if you have noise problems, you really should not be running the kernel at 1000Hz...).  Setting {{bootparm|processor.bm_history|0xFFFFFFFF}} will cause C3 to be entered less often.  This will waste more power as the CPU won't do C3 or C4 as often, but at least it doesn't forbid C3 and C4 permanently, unlike {{bootparm|max_cstate|2}}.&lt;br /&gt;
&lt;br /&gt;
See the [http://thinkwiki.org/wiki?title=Talk:Problem_with_high_pitch_noises discussion page] for further information and success reports.&lt;br /&gt;
&lt;br /&gt;
*Jakob Schou Pedersen: Editing the file {{path|/etc/init.d/acpid}} as described above (the last solution) worked on my T43 :-)&lt;br /&gt;
&lt;br /&gt;
===Turn off CPU power saving in the BIOS===&lt;br /&gt;
&lt;br /&gt;
Go into the BIOS and turn off the power saving processor feature that puts it into idle mode. (This worked on a ThinkPad {{T43}}, {{T21}}, {{X60s}} and {{Z61m}}). However, this also affects power consumption when the CPU is idle, it's similar to disabling the C4/C3 ACPI CPU power state. For example, on a Z61m 9450-3HG, a full charged battery with power management enabled in the BIOS provides the notebook with power for about 3.5h, if disabled, the battery-lifetime is only about 2h.&lt;br /&gt;
&lt;br /&gt;
===Disable ACPI CPU power states===&lt;br /&gt;
&lt;br /&gt;
Completely disable CPU ACPI power states. Discussion:&lt;br /&gt;
&lt;br /&gt;
*From Martin Steigerwald: I made the observation that I get at least less high pitch noises on my {{T23}} when I do not use the two ACPI modules &amp;quot;processor&amp;quot; and &amp;quot;thermal&amp;quot; (depends on the first one). I have no clue, why. Anyone with similar experiences?&lt;br /&gt;
:Omar Yasin: I've got a {{R52}} and when I load the same ACPIO modules the high pitch noises are not as loud but I can still hear them.&lt;br /&gt;
*Kaspar Schleiser: On my {{T23}} the noise is less loud when setting max_cstate to 2, but to completely silence it, I have to set it to &amp;quot;1&amp;quot;. Is that the same as removing the &amp;quot;processor&amp;quot;-module? &amp;quot;cat /proc/acpi/battery/BAT0/state&amp;quot; does not show increased power drain.&lt;br /&gt;
*Niko Ehrenfeuchter: I'm experiencing the same here on my {{X24}}. Removing the &amp;quot;processor&amp;quot; module also stops the pitch noise, which does ONLY occur when setting the CPU to maximum speed (using cpufreq). On low speed it's completely silent, even having loaded the processor module.&lt;br /&gt;
&lt;br /&gt;
*Rolf Adelsberger: I can confirm this: the high pitch noise is only remarkable (at least with my ears ;-) ) if the processor speed is set to maximum frequency.&lt;br /&gt;
&lt;br /&gt;
*Stefan Baums: My {{X41}} produced a high-pitched crackle from the processor vent on the left.  Changing HZ did nothing, and the 'processor' module could not easily be removed from the system (Ubuntu 5.04).  What solved the problem for me was adding {{bootparm|idle|halt}} to the boot command line. Unfortunately, this solution only lasts until the first hibernation or suspend - when the computer ({{X41}}) resumes, the high-pitched crackle is back.&lt;br /&gt;
&lt;br /&gt;
* The {{bootparm|idle|halt}} solution combined with setting &amp;lt;code&amp;gt;#define HZ 100&amp;lt;/code&amp;gt; in the kernel fixes the problem on a {{T43}}.&lt;br /&gt;
&lt;br /&gt;
* jhatch:  {{bootparm|idle|halt}} plus &amp;lt;code&amp;gt;#define HZ 100&amp;lt;/code&amp;gt; also worked on my {{T43}}.  It still reverts back to noisy after a suspend/resume though.  This needs to be fixed...&lt;br /&gt;
&lt;br /&gt;
===Change the timer interrupt frequency===&lt;br /&gt;
&lt;br /&gt;
Change the &amp;quot;HZ&amp;quot; kernel constants to alter the frequency of timer interrupts. Discussion:&lt;br /&gt;
&lt;br /&gt;
{{NOTE|The timer interrupt frequency (HZ) in current Linux kernels is directly tied to the kernel task scheduler.  Lower frequencies provide larger time-slices and thus also higher latencies (which may kill latency-sensitive applications like audio processing). 100Hz ended up as the recommended &amp;quot;server&amp;quot; setting (because it increases disk/CPU throughput in a latency-insensitive environment).  Higher frequencies are better for latency-sensitive applications, and improve desktop responsivity at the cost of less processor throughput. 1000Hz ended up as the recommended &amp;quot;desktop&amp;quot; setting.}}&lt;br /&gt;
&lt;br /&gt;
*Andreas Karnahl: i've read in several forums it has something to do with the &amp;quot;idle&amp;quot;-state (or &amp;quot;C3&amp;quot;) of the processor. There is a frequency called &amp;quot;timer interrupt&amp;quot; (or so mething like that). Since kernel 2.6x it is set to 1000 Hz by default (compared to 100 Hz in Kernel 2.4x). The exact reason i don't know, but it is safe to change this frequency to 100 Hz in kernel 2.6x (by the way, windows up to XP uses 100 Hz by default).&amp;lt;br /&amp;gt;Just do the following:&amp;lt;br /&amp;gt;&lt;br /&gt;
:   In {{path|[path to kernel-sources]/include/asm-i386/param.h}} find the line&lt;br /&gt;
::       &amp;lt;code&amp;gt;#define HZ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
:   and change the value of HZ to 100: &lt;br /&gt;
::       &amp;lt;code&amp;gt;#define HZ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
:Then recompile the kernel.&amp;lt;br /&amp;gt;After i changed it on my ThinkPad {{A30}} (under SuSE 9.2 and 9.3) and recompiling the kernel the high pitch noise is gone away.&lt;br /&gt;
&lt;br /&gt;
* Omar Yasin: Worked on my {{R52}}, thanks.&lt;br /&gt;
&lt;br /&gt;
* [[User:Thinker|Thinker]]: In modern kernels this constant is in the kernel configuration {{kernelconf|CONFIG_HZ|Processor type and features||Timer Frequency|||||}}.&lt;br /&gt;
&lt;br /&gt;
===Prevent idling===&lt;br /&gt;
&lt;br /&gt;
Indirectly avoid power saving states by making sure the CPU is rarely idle:&lt;br /&gt;
&lt;br /&gt;
* Paul RIVIER: Here is a really simple workaround. C3 / C4 states are mainly called when the cpu freq is higher than required, for example if your cpufreqd is lazy to slow down the frequency but quick to raise it. That is why I use powernowd with the builtin &amp;quot;passive&amp;quot; mode, which is lazy for raising frequency, but quick to go back to the lowest. Now I don't hear them as often as before, as I avoid C3/C4 states at high frequency.&lt;br /&gt;
&lt;br /&gt;
* The problem also occurs on my {{X41}} with 2.6.11. Setting up [[How to make use of Dynamic Frequency Scaling|frequency scaling]] with the &amp;lt;code&amp;gt;ondemand&amp;lt;/code&amp;gt; governor makes things a lot better, as the processor does not stay with the maximum frequency when in idle mode. It can be still heard sometimes, though.&lt;br /&gt;
&lt;br /&gt;
* On a {{T43}} the noise was gone after dropping cpufreqd and switching to the ondemand governor - maybe because of the high sampling rate? (used the default: 10ms)&lt;br /&gt;
&lt;br /&gt;
===Change the processor voltage===&lt;br /&gt;
&lt;br /&gt;
Reducing the processor voltage (when possible) may decrease or eliminate the noise. On one ThinkPad {{T43}}, [[Pentium M undervolting and underclocking|undervolting the Pentium M processor]] eliminated the high-pitched noise. Compared to the other solutions this has the benefit of lower power consumption, both due to the undervolting itself and because there is no need to forbid high APCI CPU power saving modes.&lt;br /&gt;
&lt;br /&gt;
==Solutions for screen brightness related sounds==&lt;br /&gt;
&lt;br /&gt;
===Disable BIOS brightness control===&lt;br /&gt;
&lt;br /&gt;
The sound starts when on batteries as the BIOS automatically reduces screen brightness. To disable this, simply switch Config&amp;gt;Display&amp;gt;Brightness from&lt;br /&gt;
Normal to High. See also [[User:Piccobello/Hissing sound on battery|here]].&lt;br /&gt;
&lt;br /&gt;
==Other solutions==&lt;br /&gt;
&lt;br /&gt;
===Disable UltraBay===&lt;br /&gt;
*Naheed Vora: My {{T41}} (2373-268) started to give high pitch noise ocassionally, when I upgraded to 2.6.11 kernel. I tried to unload lot of modules but finally figured out that disabling bay stops the noise. If you have [[ibm-acpi]], do (need a cleaner solution): {{cmduser|echo eject &amp;gt;/proc/acpi/ibm/bay}} .&lt;br /&gt;
&lt;br /&gt;
===Disable IrDA===&lt;br /&gt;
*Mike Perry: I was able to cure an intermittent high-pitched whine on both my {{X24}} and {{X40}} by disabling the Infrared port.&lt;br /&gt;
&lt;br /&gt;
===Disable the Linuxant Modem Driver===&lt;br /&gt;
*Joern Heissler: I made another experience. I played around with linuxant conexant [[Modem Devices|modem]] drivers. After loading them I got some noise on my {{T42p}}.&lt;br /&gt;
&lt;br /&gt;
===Media Player paused===&lt;br /&gt;
*Eilif Muller: On my {{R52}} the high-pitched noises go away if I load XMMS, play something then pause it.&lt;br /&gt;
*Jacob: On my {{T43}} DGU it goes away if I open mplayerc.exe and press play then pause it. This is the high-pitched noise that only shows up when I'm on battery.&lt;br /&gt;
&lt;br /&gt;
''I'd guess that the above tip works as when xmms or similar is running, it is uncompressing compressed audio/video, which is a processor intensive action.  Keeping this paused means that the app won't 'let go' of the processor, forcing it to stay up and running, which stops it entering the higher powersave modes.''&lt;br /&gt;
&lt;br /&gt;
===nice yes===&lt;br /&gt;
&lt;br /&gt;
Run the command:  `nice yes &amp;gt; /dev/null`. This is a good way to test whether the processor is causing the interference, since it forces the CPU to stay at full power. Of course, this will make your system get warm, and probably turn on the fan, as well as eating power.&lt;br /&gt;
&lt;br /&gt;
===Upgrade BIOS===&lt;br /&gt;
On a ThinkPad {{X60s}}, [[BIOS_Upgrade|upgrading the BIOS]] to version 1.06 eliminated the high pitch noise when running on battery.&lt;br /&gt;
&lt;br /&gt;
===Disable USB===&lt;br /&gt;
On one {{T43}} and one {{X60}}, (partially) disabling USB using {{cmdroot|rmmod uhci_hcd}} significantly reduced the noise.&lt;br /&gt;
&lt;br /&gt;
This is likely a CPU-induced noise case, as disabling USB UHCI will reduce a lot the amount of busmaster activity while the computer is idle, and thus has a direct effect on the need for ACPI C-state transitions from C3/C4 to C2 or lower states in a {{T43}} or {{X60}}.&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:UltraPort&amp;diff=28117</id>
		<title>Talk:UltraPort</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:UltraPort&amp;diff=28117"/>
		<updated>2007-02-05T15:21:05Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Power capability = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Yes, the UltraPort was available throughout all models of the T2x series. And yes, it was rarely found in models from the T30 series. But the location overview movie at the IBM web page shows the UltraPort and it mentions it on the page. So this seems to indicate that some T30 models still came with it.&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 03:57, 27 Nov 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
I have seen a lot of T30 models, and not one had the UltraPort. If the IBM webpage shows it does, that is simply a mistake. It certainly would not be the first time.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Please google for things like &amp;quot;T30 ultraport&amp;quot; or &amp;quot;A30p ultraport&amp;quot; and you will find a lot of pages indicating that there were models with ultraport. Either they all had wrong information or there were models including it. It is true that the mentioning on the locations overview page is a mistake and should obviously be UltraBay, but still you can see the ultraport in the movie picture. However, by writing &amp;quot;the time of the T30&amp;quot; i also refer to the models like the A30p and i think that there is very much stronger indication that there were A30p models with UltraPort.&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 04:14, 27 Nov 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
I double checked it in the T30 HMM, and it makes no mention of the Ultraport.&amp;lt;br&amp;gt;&lt;br /&gt;
ftp://ftp.software.ibm.com/pc/pccbbs/mobiles_pdf/92p1840.pdf&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I know because I had the UltraPort Camera II, and could no longer use it with my T30, so I gave it away.&amp;lt;br&amp;gt;&lt;br /&gt;
My wife has an X22 which does have the connector.&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing some searches on the Internet and the IBM support pages, these should be all the machines with the UltraPort connector:&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A20m&amp;lt;br&amp;gt;&lt;br /&gt;
A20p&amp;lt;br&amp;gt;&lt;br /&gt;
A21e&amp;lt;br&amp;gt;&lt;br /&gt;
A21m&amp;lt;br&amp;gt;&lt;br /&gt;
A21p&amp;lt;br&amp;gt;&lt;br /&gt;
A22e&amp;lt;br&amp;gt;&lt;br /&gt;
A22m&amp;lt;br&amp;gt;&lt;br /&gt;
A22p&amp;lt;br&amp;gt;&lt;br /&gt;
T20&amp;lt;br&amp;gt;&lt;br /&gt;
T21&amp;lt;br&amp;gt;&lt;br /&gt;
T22&amp;lt;br&amp;gt;&lt;br /&gt;
T23&amp;lt;br&amp;gt;&lt;br /&gt;
X21&amp;lt;br&amp;gt;&lt;br /&gt;
X22&amp;lt;br&amp;gt;&lt;br /&gt;
X23&amp;lt;br&amp;gt;&lt;br /&gt;
X24&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I know the T30 and R31 no longer have the connector.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Ok, i changed it to A31p. Here are three links that indicate that it still had the connector...&lt;br /&gt;
*http://web.zdnet.de/mobile/artikel/notebooks/200205/ibm_thinkpad_a31p-wc.html&lt;br /&gt;
*http://www.sleeper-service.org/a31p/a31p.html&lt;br /&gt;
*http://www.karachinsky.com/roman/linux/a31p.html&lt;br /&gt;
&lt;br /&gt;
And here is a ZDNet review that explicitly mentions the connetor for a T30...&lt;br /&gt;
*http://reviews-zdnet.com.com/IBM_ThinkPad_T30_2366___P4_M_1_8_GHz___14_1__TFT/4505-3121_16-20077786-2.html&lt;br /&gt;
&lt;br /&gt;
However, i'll remove it from the T30 category as long as we don't have a proof.&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 04:41, 27 Nov 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
== why ultraports gone? ==&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
Have you ever found any resources describing why IBM discontinued this very excellent device? I've come to find the integrated camera indispensible. BTW. I have an A31p and a22p and both have ultraports (although you had already pulled that to a pretty good conclusion)...&lt;br /&gt;
&lt;br /&gt;
David&lt;br /&gt;
&lt;br /&gt;
i thing it has gone because nobody has bought devices to connect to it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Power capability ==&lt;br /&gt;
&lt;br /&gt;
I can report success with a disembodied T22, and having soldered a normal USB socket onto the ultraport. I can use a USB Mouse OR USB network adapter fine. However, I am unable to both + an unpowered hub with this, so perhaps the ultraport can only supply 100mA of current, rather than the normal 500mA?&lt;br /&gt;
&lt;br /&gt;
Richard&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:UltraPort&amp;diff=28116</id>
		<title>Talk:UltraPort</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:UltraPort&amp;diff=28116"/>
		<updated>2007-02-05T15:20:52Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Yes, the UltraPort was available throughout all models of the T2x series. And yes, it was rarely found in models from the T30 series. But the location overview movie at the IBM web page shows the UltraPort and it mentions it on the page. So this seems to indicate that some T30 models still came with it.&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 03:57, 27 Nov 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
I have seen a lot of T30 models, and not one had the UltraPort. If the IBM webpage shows it does, that is simply a mistake. It certainly would not be the first time.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Please google for things like &amp;quot;T30 ultraport&amp;quot; or &amp;quot;A30p ultraport&amp;quot; and you will find a lot of pages indicating that there were models with ultraport. Either they all had wrong information or there were models including it. It is true that the mentioning on the locations overview page is a mistake and should obviously be UltraBay, but still you can see the ultraport in the movie picture. However, by writing &amp;quot;the time of the T30&amp;quot; i also refer to the models like the A30p and i think that there is very much stronger indication that there were A30p models with UltraPort.&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 04:14, 27 Nov 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
I double checked it in the T30 HMM, and it makes no mention of the Ultraport.&amp;lt;br&amp;gt;&lt;br /&gt;
ftp://ftp.software.ibm.com/pc/pccbbs/mobiles_pdf/92p1840.pdf&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I know because I had the UltraPort Camera II, and could no longer use it with my T30, so I gave it away.&amp;lt;br&amp;gt;&lt;br /&gt;
My wife has an X22 which does have the connector.&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing some searches on the Internet and the IBM support pages, these should be all the machines with the UltraPort connector:&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A20m&amp;lt;br&amp;gt;&lt;br /&gt;
A20p&amp;lt;br&amp;gt;&lt;br /&gt;
A21e&amp;lt;br&amp;gt;&lt;br /&gt;
A21m&amp;lt;br&amp;gt;&lt;br /&gt;
A21p&amp;lt;br&amp;gt;&lt;br /&gt;
A22e&amp;lt;br&amp;gt;&lt;br /&gt;
A22m&amp;lt;br&amp;gt;&lt;br /&gt;
A22p&amp;lt;br&amp;gt;&lt;br /&gt;
T20&amp;lt;br&amp;gt;&lt;br /&gt;
T21&amp;lt;br&amp;gt;&lt;br /&gt;
T22&amp;lt;br&amp;gt;&lt;br /&gt;
T23&amp;lt;br&amp;gt;&lt;br /&gt;
X21&amp;lt;br&amp;gt;&lt;br /&gt;
X22&amp;lt;br&amp;gt;&lt;br /&gt;
X23&amp;lt;br&amp;gt;&lt;br /&gt;
X24&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I know the T30 and R31 no longer have the connector.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Ok, i changed it to A31p. Here are three links that indicate that it still had the connector...&lt;br /&gt;
*http://web.zdnet.de/mobile/artikel/notebooks/200205/ibm_thinkpad_a31p-wc.html&lt;br /&gt;
*http://www.sleeper-service.org/a31p/a31p.html&lt;br /&gt;
*http://www.karachinsky.com/roman/linux/a31p.html&lt;br /&gt;
&lt;br /&gt;
And here is a ZDNet review that explicitly mentions the connetor for a T30...&lt;br /&gt;
*http://reviews-zdnet.com.com/IBM_ThinkPad_T30_2366___P4_M_1_8_GHz___14_1__TFT/4505-3121_16-20077786-2.html&lt;br /&gt;
&lt;br /&gt;
However, i'll remove it from the T30 category as long as we don't have a proof.&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 04:41, 27 Nov 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
== why ultraports gone? ==&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
Have you ever found any resources describing why IBM discontinued this very excellent device? I've come to find the integrated camera indispensible. BTW. I have an A31p and a22p and both have ultraports (although you had already pulled that to a pretty good conclusion)...&lt;br /&gt;
&lt;br /&gt;
David&lt;br /&gt;
&lt;br /&gt;
i thing it has gone because nobody has bought devices to connect to it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Power capability ===&lt;br /&gt;
&lt;br /&gt;
I can report success with a disembodied T22, and having soldered a normal USB socket onto the ultraport. I can use a USB Mouse OR USB network adapter fine. However, I am unable to both + an unpowered hub with this, so perhaps the ultraport can only supply 100mA of current, rather than the normal 500mA?&lt;br /&gt;
&lt;br /&gt;
Richard&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Maintenance&amp;diff=27723</id>
		<title>Maintenance</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Maintenance&amp;diff=27723"/>
		<updated>2007-01-17T21:38:09Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Recovering BIOS passwords */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
Here you can find general hints about keeping your ThinkPad in good shape. Look at your [[:Category:Models|models category page]] for IBMs official maintenance guide for that model.&lt;br /&gt;
|}&lt;br /&gt;
==Battery treatment==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|+Battery life expanding guide&lt;br /&gt;
|- style=&amp;quot;background:#efefef;white-space:nowrap;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Battery Type !! NiCd !! NiMH !! Lithium ion&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | General&lt;br /&gt;
|&lt;br /&gt;
*always do complete discharge/charge cycles&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|&lt;br /&gt;
*always do complete discharge/charge cycles&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|&lt;br /&gt;
*avoid deep discharges except when resetting fuel gague or reconditioning a battery;  partial dis-/recharges are better for the battery lifetime (note: fuel gauge will slowly get inaccurate over time)&lt;br /&gt;
*remove battery when on AC (due to heat)&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Charging&lt;br /&gt;
|&lt;br /&gt;
*discharge before charging&lt;br /&gt;
|&lt;br /&gt;
*discharge before charging&lt;br /&gt;
|&lt;br /&gt;
*avoid charging if battery is nearly full, unless you will need its full capacity soon; keep it on the 30%-85% charged range&lt;br /&gt;
*keep notebook off while charging due to heat&lt;br /&gt;
*fully discharge, then fully charge battery when needed to recalibrate fuel gauge;  newer battery pack models require this less often, old ones might need it as often as every 30 cycles&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Storage&lt;br /&gt;
| &lt;br /&gt;
*almost discharged&lt;br /&gt;
*cool and dry&lt;br /&gt;
|&lt;br /&gt;
*almost discharged&lt;br /&gt;
*cool and dry&lt;br /&gt;
|&lt;br /&gt;
*never fully charged or discharged, ideally at about 40%&lt;br /&gt;
*cool and dry, but '''do not freeze''' them. 10-15C is recommended&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Battery health===&lt;br /&gt;
Batteries, especially of the modern Li-Ion type, wear out quicker when they hold a large charge or are subject to higher temperatures (see above).&lt;br /&gt;
&lt;br /&gt;
If you use your laptop at a desk, reduce battery wear by maintaining an appropriate charge level.  When  possible, remove Li-ion batteries while operating from AC as the notebook gets hot enough inside for that to damage the battery in the long run, even if charging is stopped.&lt;br /&gt;
&lt;br /&gt;
On recent ThinkPads, charging thresholds can be configured in the bundled software.  Under Linux, this is supported on recent models by the [[tp_smapi]] driver (and even without &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;, if you have a dual-boot setup, you can set the thresholds under Windows and they will be remembered as long as you don't power off your machine with AC disconnected; suspend to RAM is OK). Have a look at [[How to use UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
If you have spare Li-ion battery packs, store them at 40% charge in a cool place (15C being a recommended temperature, do not let the batteries freeze).  If storing inside a refrigerator, beware of humidity, and be careful with cold spots that can easily freeze the battery if anything goes wrong.&lt;br /&gt;
&lt;br /&gt;
===The problem with 600 series batteries===&lt;br /&gt;
ThinkPad 600 power management causes batteries to die before they should. Read more about this on the [[Problem with ThinkPad 600 batteries|associated problem page]].&lt;br /&gt;
&lt;br /&gt;
===Reviving batteries===&lt;br /&gt;
Some people experience sudden drops in their batteries capacity.&lt;br /&gt;
&lt;br /&gt;
A way to get these batteries back to full capacity is to run the &amp;quot;Battery Rundown&amp;quot; function of IBMs &amp;quot;PC Doctor for DOS&amp;quot;.&lt;br /&gt;
The program is downloadable from IBMs support site as three floppy disk images. For those who do not have a floppy, David Smith prepared a [http://www.mypchelp.com/~dsmith/ibmutil/ibm_t22_pcdiag.iso bootable CD image] from the T22 floppy images. For newer ThinkPads there is an official [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-56222 bootable CD image].&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
* [[Battery safety]]&lt;br /&gt;
&lt;br /&gt;
===External sources===&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-50944 IBM Support - Extending battery life]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-51038 IBM Support - Battery troubleshooting]&lt;br /&gt;
* [http://www.pc.ibm.com/ww/thinkpad/batterylife/ IBM Benchmark]&lt;br /&gt;
* [http://batteryuniversity.com Battery University]&lt;br /&gt;
* [http://www.batteryuniversity.com/parttwo-34.htm BatteryUniversitys info about prolonging lithium ion batteries]&lt;br /&gt;
* [http://www.buchmann.ca/Chap10-page6.asp prolonging lithium ion batteries in Buchmanns Battery FAQ]&lt;br /&gt;
&lt;br /&gt;
==Cleaning the Display==&lt;br /&gt;
If you discover markings that look like they originate from the TrackPoint or keyboard, or for information on how to avoid these, look at [[Problem with key and trackpoint markings on the display|this page]].&lt;br /&gt;
&lt;br /&gt;
===External Sources===&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-4A2P54 Lenovo Support - LCD care and cleaning instructions]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-52190 IBM Support - System cleaning instructions]&lt;br /&gt;
&lt;br /&gt;
==Cleaning the Interior==&lt;br /&gt;
{{WARN|The following instructions are not appropriate for all ThinkPad models. Please consult the hardware maintenance guide or on-line disassembly instructions for your model.}}&lt;br /&gt;
Most ThinkPad models (particularly the A-series and the T-series) tend to accumulate a lot of interior dust which they draw from their ventilation fan.  A good dusting every few months is advised. The procedure is as follows.&lt;br /&gt;
&lt;br /&gt;
===ThinkPad T4x series===&lt;br /&gt;
See IBM's keyboard removal [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-46515 instructions] and [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-50227 movie].&lt;br /&gt;
&lt;br /&gt;
===ThinkPad T6x series===&lt;br /&gt;
See IBM's keyboard removal&lt;br /&gt;
[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-62800 instructions] and&lt;br /&gt;
[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-63912 movie].&lt;br /&gt;
&lt;br /&gt;
===Other models (which?)===&lt;br /&gt;
#Unplug the computer.&lt;br /&gt;
#Remove the battery.&lt;br /&gt;
#Turn the ThinkPad over and find two to three screws with upraised double-arrows pointing to them.&lt;br /&gt;
#Unscrew these screws and set them aside.&lt;br /&gt;
#Press the silver area underneath where the battery used to be.  The front of the keyboard will pop up.&lt;br /&gt;
#Turn the ThinkPad right side up and gently remove the keyboard, pulling it toward you.&lt;br /&gt;
#There is one connector between the ThinkPad and the keyboard.  Disconnect it, and set the keyboard aside.&lt;br /&gt;
#If there is a small black plastic separator under the keyboard, remove it and set it aside.&lt;br /&gt;
#The fan should be visible in the upper left.  That entire area will likely be dusty.  With a can of compressed air (and ''only'' with a can of compressed air), dust that area and the surrounding area.&lt;br /&gt;
#Replace the small black plastic separator, then reconnect the keyboard.&lt;br /&gt;
#Slide the keyboard back into place, then press down on the Fn and right-arrow keys until it pops into place.&lt;br /&gt;
#Replace the keyboard screws and battery.&lt;br /&gt;
&lt;br /&gt;
==Dealing with spilling accidents==&lt;br /&gt;
#Don't panic.&lt;br /&gt;
#Don't flip or tilt the computer to prevent the liquid from spreading all over the inside of the case.&lt;br /&gt;
#Shut down the OS and turn off the power:&lt;br /&gt;
##Unplug the computer.&lt;br /&gt;
##Remove the battery.&lt;br /&gt;
#Tilt the computer so that everything that leaked into the case can flow out the same way.&lt;br /&gt;
#Allow the computer to dry before switching it on again.&lt;br /&gt;
#For minor accidents this might already be sufficient. For major flooding you should either bring the computer to a dealer who knows how to open and clean it from inside. Or you can read the Hardware Maintenance Manual, open, clean, and dry the computer yourself. &lt;br /&gt;
&lt;br /&gt;
See also [http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 Act quickly, carefully if you spill on laptops] on MoneySense.ca (link broken as of 2006-09-18, the article is still available via [http://web.archive.org/web/20050221034011/http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 web.archive.org]).&lt;br /&gt;
&lt;br /&gt;
==Harddisk Backup / Upgrade==&lt;br /&gt;
*[[How to copy a Linux installation]]&lt;br /&gt;
*[[Harddrive Upgrade|How to upgrade your Thinkpad hard drive]]&lt;br /&gt;
*[[How to copy a Windows installation]]&lt;br /&gt;
===External Sources===&lt;br /&gt;
*[http://gamma.nic.fi/~point/win2copy.htm Guide on copying Windows 2000/XP to another partition]&lt;br /&gt;
&lt;br /&gt;
==Recovering BIOS passwords==&lt;br /&gt;
Password recovery procedure for IBM ThinkPads&lt;br /&gt;
using R24RF08 and IBMpass&lt;br /&gt;
&lt;br /&gt;
'''1. Introduction.'''&lt;br /&gt;
&lt;br /&gt;
The IBM ThinkPad uses a small eeprom ([[AT24RF08|ATMEL 24RF08]]) to store different OEM&lt;br /&gt;
issues like serial number, UUID, etc. The supervisor password (SVP) is also stored in this eeprom.&lt;br /&gt;
The 24RF08 is not an ordinary eeprom: it features read protection, which the BIOS uses to lock down&lt;br /&gt;
access to the eeprom contents.  Also, the password is written in a special scan code, which needs to&lt;br /&gt;
be translated to ASCII to be of any use.&lt;br /&gt;
&lt;br /&gt;
To recover the password, one can use two different programs: R24RF08 (eeprom reader) and IBMpass&lt;br /&gt;
(password revealer) available at [http://www.allservice.ro http://www.allservice.ro]. Diagrams are included in the reader kit.&lt;br /&gt;
&lt;br /&gt;
Models for which R24RF08 and IBMpass are enough to recover the password: 240, 240X, 390E, 390X, 570, 570E,&lt;br /&gt;
600e, 600X, 770Z, A20m, A21e, A21m, a22m, A30, A30p, A31, A31p, G40, G41, R30, R31, R32, R40, R50, R51, &lt;br /&gt;
Transnote, T20, T21, T22, T23, T30, T40, T40p, T41, T41p, T42, T42p, X20, X21, X22, X23, X24, X30, X31, X40, X41.&lt;br /&gt;
&lt;br /&gt;
ThinkPads featuring TPCA technology (i.e. a [[Tpm|TPM trusted platform module chip]]), especially T4x, X3x, X4x need the W24RF08 eeprom writer program to complete the password recovery procedure, if the passphrase function is enabled in BIOS setup.&lt;br /&gt;
&lt;br /&gt;
Other models such as the 380XD or 600 use 24C01 or 93C46 eeproms, which can be read without special tools.&lt;br /&gt;
The method is the same like for the models based on 24RF08, only the software to dump the eeprom is different. &lt;br /&gt;
&lt;br /&gt;
Newer T43/T43p, R52, R60, T60/p, X60 and Z60 ThinkPads can be unlocked using PC8394 programming tools that consist in RPC8394 and WPC8394 (reader and writer for TPM chips). The software is available as well on [http://www.allservice.ro http://www.allservice.ro]. IBMpass 2.0 works for any TP model without exceptions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Locating the ATMEL 24RF08 eeprom. Soldering.'''&lt;br /&gt;
&lt;br /&gt;
No need to unsolder the 24RF08 eeprom, just solder 3 wires to SDA, SCL and GND pins of the&lt;br /&gt;
eeprom. There are two eeprom layouts (see interface schematics described bellow), corresponding to 8 pin or 14 pin eeproms. Locate the eeprom first according to your model (E.g. T20-23 and T30 have the eeprom underneath TP, and can be accessed by removing the RAM modules cover, no need to dismantle the laptop.) and solder the wires using a soldering iron with a fine tip. Also, you can use 0.15 -0.20 mm enamel coated wires or similar small diameter insulated wires. These wires will be connected later to the interface.&lt;br /&gt;
Tip: You can use clips to connect the wires or you can solder on the PCB traces leading to the&lt;br /&gt;
eeprom pins. Once again, be careful and double, triple check the soldering if necessary till you are positively sure you have done the right job. In case of applying too much solder, use flux-impregnated copper-braid &amp;quot;desoldering wick&amp;quot; - this works exceptionally well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Choose and build the interface.'''&lt;br /&gt;
&lt;br /&gt;
Since version 2.0, R24RF08 and W24RF08 (eeprom writer) are compatible with a wide range of eeprom programmers. By default, both programs set the COM port signals to use direct logic level to access I2C bus. We provide here 2 schematics that are relevant for direct logic signals and for inverse logic signals (simple-i2cprog.pdf and driven-i2cprog.pdf). Also, depending of the interface you build, you can invert the logics for SDA-In, SDA-Out, and SCL COM port signals by some command line parameters described later in this document.&lt;br /&gt;
a) The file simple-i2cprog.pdf contains the schematic diagram of a simple interface (known as SIPROG)based on 2 zeners and 2 resistors. This is a classic, easy to build circuit and works with soldered or unsoldered eeproms. The purpose of the 2 zeners is to convert RS232 levels (+/- 5V) to TTL levels, needed by the eeprom. It uses direct logic signals to I2C eeprom and is powered by the COM port. However, this interface works with in-system eeproms but is dependant on COM port current and eeprom bus impedance. R24RF08 works natively with this circuit, no need to change the lines signals with command line parameters. This circuit works pretty well with almost all ThinkPads series.&lt;br /&gt;
b) The second interface is described in driven-i2cprog.pdf. The circuit uses MAX 232 as a RS232 to TTL driver and its main purpose is to work with soldered eeproms. The advantage of MAX232 is the TTL outputs that are more reliable and more powerful when work with soldered, in-system eeproms (dependency free from the COM port current). Due of the internal inverters of MAX232 the interface responds to an inverse signal logic level. R24RF08 needs /x, /d, /i switches to be specified in the command line.&lt;br /&gt;
&lt;br /&gt;
What these switches mean:&lt;br /&gt;
/x - invert serial clock, also known as SCL;&lt;br /&gt;
/d - invert serial data output, also known as SDA-Out;&lt;br /&gt;
/i - invert serial data input, also known as SDA-In.&lt;br /&gt;
All those can be used in any combination to meet any interface specification.&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;standard&amp;quot; serial port programmer probably won't work with a USB-Serial adapter, but requires the full nominal voltage of a hardware serial port. [Example: the A22p's serial port works fine here.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. Dump the EEPROM:'''&lt;br /&gt;
&lt;br /&gt;
Prepare your technician PC by connecting the interface to the COM1 port (donâ€™t connect the wires to eeprom yet). Turn on the ThinkPad and press F1 to enter BIOS Setup. When you are prompted for the password and thereâ€™s no other activity like HDD access or so, connect the wires (GND first!, SDA, SCL) to the corresponding wires from the interface (attached before to COM1) and execute R24RF08:&lt;br /&gt;
&lt;br /&gt;
-for SI-PROG interface (as described in 3.a above):&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt;. where filename.ext is the file where eeprom content will be stored.&lt;br /&gt;
Example: r24rf08 mytp.bin&lt;br /&gt;
&lt;br /&gt;
-for MAX232 driven I2C interface (as described in 3.b above):&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt; /x /d /i. where /x /d /i are command line parameters (switches) for this kind of interface.&lt;br /&gt;
Example: r24rf08 mytp2.bin /x /d /i&lt;br /&gt;
&lt;br /&gt;
Use exactly the instructed switches to avoid possible damages to your eeprom data!&lt;br /&gt;
The file should be created in the same folder. Finally, disconnect the wires (GND last!) and turn off the ThinkPad by pressing on/off switch.&lt;br /&gt;
&lt;br /&gt;
Dump the EEPROM data at least twice, and do a bytewise compare with `cmp`. Both files should be identical, and 1024 bytes long. Otherwise, you probably have a serial port problem.&lt;br /&gt;
&lt;br /&gt;
Note: the r24rf08.exe program automatically sets the serial port parameters. It also works fine with Wine under Linux - provided that a symlink (com1) exists in the .wine/dos_devices directory, and points to the /dev/ttySX for the actual serial port.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Reveal the password.'''&lt;br /&gt;
&lt;br /&gt;
Now, you have the .bin file but you need to dump in scan code to retrieve the password. IBMpass 2.0 Lite is a free tool that will do the job. Just open the eeprom dump youâ€™ve created before and search for 0x330, 0x340 lines. The password is located on 0x338 (and 0x340 depending on model) in scan code. For 24C01 eeproms the password is located at 0x38, 0x40. If the password won't work for the very first time then your eeprom may use newer IBM scancodes. In this case switch to alternate scan codes to find it. For those who want quick answers the recommended version is IBMpass 1.1. Usage for IBMpass 1.1 (command line only):&lt;br /&gt;
&lt;br /&gt;
ibmpass mytp.bin â€“ use â€œ/aâ€ switch to see in alternate scan code if needed:&lt;br /&gt;
ibmpass mytp.bin /a&lt;br /&gt;
&lt;br /&gt;
For some old models like 570 or 770Z you need to execute the eeprom patcher first. This will reset the read protection on the password offset. To do that just execute patcher.exe before the reading operation, without rebooting the laptop:&lt;br /&gt;
&lt;br /&gt;
-for SI-PROG:&lt;br /&gt;
patcher.exe , then immediately&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-for Driven-I2C (Max232) you must insert the switches:&lt;br /&gt;
patcher.exe /x /d /i, then immediately&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt; /x /d /i&lt;br /&gt;
&lt;br /&gt;
W24RF08, the writer version, has included the complete APP reset operation you donâ€™t need to use patcher.&lt;br /&gt;
&lt;br /&gt;
Moreover, there are a new encrypting algos used with some new security chips (AT97SC3201, AT97SC3203) that are very secured. The password is not in scancode and in some cases not even in the eeprom. To unlock the machine, the dump should suffer some changes and the eeprom must be reprogrammed using W24RF08. This operation works for all IBM TCG/TCPA secured laptops w/o exceptions. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember, use 3 wires from the interface and 3 wires from eeprom! Connect them after your&lt;br /&gt;
ThinkPad is powered and disconnect them right after you read the content, before you switch off the laptop.&lt;br /&gt;
&lt;br /&gt;
'''6. Password format'''&lt;br /&gt;
&lt;br /&gt;
The thinkpad power-on/supervisor passwords are a maximum of 7 characters, and are NOT case-sensitive. The allowed characters are restricted to A-Z, 0-9, semicolon, _, - (and perhaps a few others).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===External Sources===&lt;br /&gt;
* [http://www.allservice.ro R24RF08/W24RF08, PC8394 programming tools &amp;amp; IBMpass author's webpage.]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-59377 IBM Support - Lost or forgotten password]&lt;br /&gt;
* [http://www.allservice.ro/forum/viewforum.php?f=12 Full Service of all ThinkPad models including free password recovery]&lt;br /&gt;
* [http://sodoityourself.com/hacking-ibm-thinkpad-bios-password/ A tutorial on how to do this]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Maintenance&amp;diff=27722</id>
		<title>Maintenance</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Maintenance&amp;diff=27722"/>
		<updated>2007-01-17T21:32:58Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Recovering BIOS passwords */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
Here you can find general hints about keeping your ThinkPad in good shape. Look at your [[:Category:Models|models category page]] for IBMs official maintenance guide for that model.&lt;br /&gt;
|}&lt;br /&gt;
==Battery treatment==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|+Battery life expanding guide&lt;br /&gt;
|- style=&amp;quot;background:#efefef;white-space:nowrap;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Battery Type !! NiCd !! NiMH !! Lithium ion&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | General&lt;br /&gt;
|&lt;br /&gt;
*always do complete discharge/charge cycles&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|&lt;br /&gt;
*always do complete discharge/charge cycles&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|&lt;br /&gt;
*avoid deep discharges except when resetting fuel gague or reconditioning a battery;  partial dis-/recharges are better for the battery lifetime (note: fuel gauge will slowly get inaccurate over time)&lt;br /&gt;
*remove battery when on AC (due to heat)&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Charging&lt;br /&gt;
|&lt;br /&gt;
*discharge before charging&lt;br /&gt;
|&lt;br /&gt;
*discharge before charging&lt;br /&gt;
|&lt;br /&gt;
*avoid charging if battery is nearly full, unless you will need its full capacity soon; keep it on the 30%-85% charged range&lt;br /&gt;
*keep notebook off while charging due to heat&lt;br /&gt;
*fully discharge, then fully charge battery when needed to recalibrate fuel gauge;  newer battery pack models require this less often, old ones might need it as often as every 30 cycles&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Storage&lt;br /&gt;
| &lt;br /&gt;
*almost discharged&lt;br /&gt;
*cool and dry&lt;br /&gt;
|&lt;br /&gt;
*almost discharged&lt;br /&gt;
*cool and dry&lt;br /&gt;
|&lt;br /&gt;
*never fully charged or discharged, ideally at about 40%&lt;br /&gt;
*cool and dry, but '''do not freeze''' them. 10-15C is recommended&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Battery health===&lt;br /&gt;
Batteries, especially of the modern Li-Ion type, wear out quicker when they hold a large charge or are subject to higher temperatures (see above).&lt;br /&gt;
&lt;br /&gt;
If you use your laptop at a desk, reduce battery wear by maintaining an appropriate charge level.  When  possible, remove Li-ion batteries while operating from AC as the notebook gets hot enough inside for that to damage the battery in the long run, even if charging is stopped.&lt;br /&gt;
&lt;br /&gt;
On recent ThinkPads, charging thresholds can be configured in the bundled software.  Under Linux, this is supported on recent models by the [[tp_smapi]] driver (and even without &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;, if you have a dual-boot setup, you can set the thresholds under Windows and they will be remembered as long as you don't power off your machine with AC disconnected; suspend to RAM is OK). Have a look at [[How to use UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
If you have spare Li-ion battery packs, store them at 40% charge in a cool place (15C being a recommended temperature, do not let the batteries freeze).  If storing inside a refrigerator, beware of humidity, and be careful with cold spots that can easily freeze the battery if anything goes wrong.&lt;br /&gt;
&lt;br /&gt;
===The problem with 600 series batteries===&lt;br /&gt;
ThinkPad 600 power management causes batteries to die before they should. Read more about this on the [[Problem with ThinkPad 600 batteries|associated problem page]].&lt;br /&gt;
&lt;br /&gt;
===Reviving batteries===&lt;br /&gt;
Some people experience sudden drops in their batteries capacity.&lt;br /&gt;
&lt;br /&gt;
A way to get these batteries back to full capacity is to run the &amp;quot;Battery Rundown&amp;quot; function of IBMs &amp;quot;PC Doctor for DOS&amp;quot;.&lt;br /&gt;
The program is downloadable from IBMs support site as three floppy disk images. For those who do not have a floppy, David Smith prepared a [http://www.mypchelp.com/~dsmith/ibmutil/ibm_t22_pcdiag.iso bootable CD image] from the T22 floppy images. For newer ThinkPads there is an official [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-56222 bootable CD image].&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
* [[Battery safety]]&lt;br /&gt;
&lt;br /&gt;
===External sources===&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-50944 IBM Support - Extending battery life]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-51038 IBM Support - Battery troubleshooting]&lt;br /&gt;
* [http://www.pc.ibm.com/ww/thinkpad/batterylife/ IBM Benchmark]&lt;br /&gt;
* [http://batteryuniversity.com Battery University]&lt;br /&gt;
* [http://www.batteryuniversity.com/parttwo-34.htm BatteryUniversitys info about prolonging lithium ion batteries]&lt;br /&gt;
* [http://www.buchmann.ca/Chap10-page6.asp prolonging lithium ion batteries in Buchmanns Battery FAQ]&lt;br /&gt;
&lt;br /&gt;
==Cleaning the Display==&lt;br /&gt;
If you discover markings that look like they originate from the TrackPoint or keyboard, or for information on how to avoid these, look at [[Problem with key and trackpoint markings on the display|this page]].&lt;br /&gt;
&lt;br /&gt;
===External Sources===&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-4A2P54 Lenovo Support - LCD care and cleaning instructions]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-52190 IBM Support - System cleaning instructions]&lt;br /&gt;
&lt;br /&gt;
==Cleaning the Interior==&lt;br /&gt;
{{WARN|The following instructions are not appropriate for all ThinkPad models. Please consult the hardware maintenance guide or on-line disassembly instructions for your model.}}&lt;br /&gt;
Most ThinkPad models (particularly the A-series and the T-series) tend to accumulate a lot of interior dust which they draw from their ventilation fan.  A good dusting every few months is advised. The procedure is as follows.&lt;br /&gt;
&lt;br /&gt;
===ThinkPad T4x series===&lt;br /&gt;
See IBM's keyboard removal [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-46515 instructions] and [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-50227 movie].&lt;br /&gt;
&lt;br /&gt;
===ThinkPad T6x series===&lt;br /&gt;
See IBM's keyboard removal&lt;br /&gt;
[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-62800 instructions] and&lt;br /&gt;
[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-63912 movie].&lt;br /&gt;
&lt;br /&gt;
===Other models (which?)===&lt;br /&gt;
#Unplug the computer.&lt;br /&gt;
#Remove the battery.&lt;br /&gt;
#Turn the ThinkPad over and find two to three screws with upraised double-arrows pointing to them.&lt;br /&gt;
#Unscrew these screws and set them aside.&lt;br /&gt;
#Press the silver area underneath where the battery used to be.  The front of the keyboard will pop up.&lt;br /&gt;
#Turn the ThinkPad right side up and gently remove the keyboard, pulling it toward you.&lt;br /&gt;
#There is one connector between the ThinkPad and the keyboard.  Disconnect it, and set the keyboard aside.&lt;br /&gt;
#If there is a small black plastic separator under the keyboard, remove it and set it aside.&lt;br /&gt;
#The fan should be visible in the upper left.  That entire area will likely be dusty.  With a can of compressed air (and ''only'' with a can of compressed air), dust that area and the surrounding area.&lt;br /&gt;
#Replace the small black plastic separator, then reconnect the keyboard.&lt;br /&gt;
#Slide the keyboard back into place, then press down on the Fn and right-arrow keys until it pops into place.&lt;br /&gt;
#Replace the keyboard screws and battery.&lt;br /&gt;
&lt;br /&gt;
==Dealing with spilling accidents==&lt;br /&gt;
#Don't panic.&lt;br /&gt;
#Don't flip or tilt the computer to prevent the liquid from spreading all over the inside of the case.&lt;br /&gt;
#Shut down the OS and turn off the power:&lt;br /&gt;
##Unplug the computer.&lt;br /&gt;
##Remove the battery.&lt;br /&gt;
#Tilt the computer so that everything that leaked into the case can flow out the same way.&lt;br /&gt;
#Allow the computer to dry before switching it on again.&lt;br /&gt;
#For minor accidents this might already be sufficient. For major flooding you should either bring the computer to a dealer who knows how to open and clean it from inside. Or you can read the Hardware Maintenance Manual, open, clean, and dry the computer yourself. &lt;br /&gt;
&lt;br /&gt;
See also [http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 Act quickly, carefully if you spill on laptops] on MoneySense.ca (link broken as of 2006-09-18, the article is still available via [http://web.archive.org/web/20050221034011/http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 web.archive.org]).&lt;br /&gt;
&lt;br /&gt;
==Harddisk Backup / Upgrade==&lt;br /&gt;
*[[How to copy a Linux installation]]&lt;br /&gt;
*[[Harddrive Upgrade|How to upgrade your Thinkpad hard drive]]&lt;br /&gt;
*[[How to copy a Windows installation]]&lt;br /&gt;
===External Sources===&lt;br /&gt;
*[http://gamma.nic.fi/~point/win2copy.htm Guide on copying Windows 2000/XP to another partition]&lt;br /&gt;
&lt;br /&gt;
==Recovering BIOS passwords==&lt;br /&gt;
Password recovery procedure for IBM ThinkPads&lt;br /&gt;
using R24RF08 and IBMpass&lt;br /&gt;
&lt;br /&gt;
'''1. Introduction.'''&lt;br /&gt;
&lt;br /&gt;
The IBM ThinkPad uses a small eeprom ([[AT24RF08|ATMEL 24RF08]]) to store different OEM&lt;br /&gt;
issues like serial number, UUID, etc. The supervisor password (SVP) is also stored in this eeprom.&lt;br /&gt;
The 24RF08 is not an ordinary eeprom: it features read protection, which the BIOS uses to lock down&lt;br /&gt;
access to the eeprom contents.  Also, the password is written in a special scan code, which needs to&lt;br /&gt;
be translated to ASCII to be of any use.&lt;br /&gt;
&lt;br /&gt;
To recover the password, one can use two different programs: R24RF08 (eeprom reader) and IBMpass&lt;br /&gt;
(password revealer) available at [http://www.allservice.ro http://www.allservice.ro]. Diagrams are included in the reader kit.&lt;br /&gt;
&lt;br /&gt;
Models for which R24RF08 and IBMpass are enough to recover the password: 240, 240X, 390E, 390X, 570, 570E,&lt;br /&gt;
600e, 600X, 770Z, A20m, A21e, A21m, a22m, A30, A30p, A31, A31p, G40, G41, R30, R31, R32, R40, R50, R51, &lt;br /&gt;
Transnote, T20, T21, T22, T23, T30, T40, T40p, T41, T41p, T42, T42p, X20, X21, X22, X23, X24, X30, X31, X40, X41.&lt;br /&gt;
&lt;br /&gt;
ThinkPads featuring TPCA technology (i.e. a [[Tpm|TPM trusted platform module chip]]), especially T4x, X3x, X4x need the W24RF08 eeprom writer program to complete the password recovery procedure, if the passphrase function is enabled in BIOS setup.&lt;br /&gt;
&lt;br /&gt;
Other models such as the 380XD or 600 use 24C01 or 93C46 eeproms, which can be read without special tools.&lt;br /&gt;
The method is the same like for the models based on 24RF08, only the software to dump the eeprom is different. &lt;br /&gt;
&lt;br /&gt;
Newer T43/T43p, R52, R60, T60/p, X60 and Z60 ThinkPads can be unlocked using PC8394 programming tools that consist in RPC8394 and WPC8394 (reader and writer for TPM chips). The software is available as well on [http://www.allservice.ro http://www.allservice.ro]. IBMpass 2.0 works for any TP model without exceptions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Locating the ATMEL 24RF08 eeprom. Soldering.'''&lt;br /&gt;
&lt;br /&gt;
No need to unsolder the 24RF08 eeprom, just solder 3 wires to SDA, SCL and GND pins of the&lt;br /&gt;
eeprom. There are two eeprom layouts (see interface schematics described bellow), corresponding to 8 pin or 14 pin eeproms. Locate the eeprom first according to your model (E.g. T20-23 and T30 have the eeprom underneath TP, and can be accessed by removing the RAM modules cover, no need to dismantle the laptop.) and solder the wires using a soldering iron with a fine tip. Also, you can use 0.15 -0.20 mm enamel coated wires or similar small diameter insulated wires. These wires will be connected later to the interface.&lt;br /&gt;
Tip: You can use clips to connect the wires or you can solder on the PCB traces leading to the&lt;br /&gt;
eeprom pins. Once again, be careful and double, triple check the soldering if necessary till you are positively sure you have done the right job. In case of applying too much solder, use flux-impregnated copper-braid &amp;quot;desoldering wick&amp;quot; - this works exceptionally well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Choose and build the interface.'''&lt;br /&gt;
&lt;br /&gt;
Since version 2.0, R24RF08 and W24RF08 (eeprom writer) are compatible with a wide range of eeprom programmers. By default, both programs set the COM port signals to use direct logic level to access I2C bus. We provide here 2 schematics that are relevant for direct logic signals and for inverse logic signals (simple-i2cprog.pdf and driven-i2cprog.pdf). Also, depending of the interface you build, you can invert the logics for SDA-In, SDA-Out, and SCL COM port signals by some command line parameters described later in this document.&lt;br /&gt;
a) The file simple-i2cprog.pdf contains the schematic diagram of a simple interface (known as SIPROG)based on 2 zeners and 2 resistors. This is a classic, easy to build circuit and works with soldered or unsoldered eeproms. The purpose of the 2 zeners is to convert RS232 levels (+/- 5V) to TTL levels, needed by the eeprom. It uses direct logic signals to I2C eeprom and is powered by the COM port. However, this interface works with in-system eeproms but is dependant on COM port current and eeprom bus impedance. R24RF08 works natively with this circuit, no need to change the lines signals with command line parameters. This circuit works pretty well with almost all ThinkPads series.&lt;br /&gt;
b) The second interface is described in driven-i2cprog.pdf. The circuit uses MAX 232 as a RS232 to TTL driver and its main purpose is to work with soldered eeproms. The advantage of MAX232 is the TTL outputs that are more reliable and more powerful when work with soldered, in-system eeproms (dependency free from the COM port current). Due of the internal inverters of MAX232 the interface responds to an inverse signal logic level. R24RF08 needs /x, /d, /i switches to be specified in the command line.&lt;br /&gt;
&lt;br /&gt;
What these switches mean:&lt;br /&gt;
/x - invert serial clock, also known as SCL;&lt;br /&gt;
/d - invert serial data output, also known as SDA-Out;&lt;br /&gt;
/i - invert serial data input, also known as SDA-In.&lt;br /&gt;
All those can be used in any combination to meet any interface specification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. Dump the EEPROM:'''&lt;br /&gt;
&lt;br /&gt;
Prepare your technician PC by connecting the interface to the COM1 port (donâ€™t connect the wires to eeprom yet). Turn on the ThinkPad and press F1 to enter BIOS Setup. When you are prompted for the password and thereâ€™s no other activity like HDD access or so, connect the wires (GND first!, SDA, SCL) to the corresponding wires from the interface (attached before to COM1) and execute R24RF08:&lt;br /&gt;
&lt;br /&gt;
-for SI-PROG interface (as described in 3.a above):&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt;. where filename.ext is the file where eeprom content will be stored.&lt;br /&gt;
Example: r24rf08 mytp.bin&lt;br /&gt;
&lt;br /&gt;
-for MAX232 driven I2C interface (as described in 3.b above):&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt; /x /d /i. where /x /d /i are command line parameters (switches) for this kind of interface.&lt;br /&gt;
Example: r24rf08 mytp2.bin /x /d /i&lt;br /&gt;
&lt;br /&gt;
Use exactly the instructed switches to avoid possible damages to your eeprom data!&lt;br /&gt;
The file should be created in the same folder. Finally, disconnect the wires (GND last!) and turn off the ThinkPad by pressing on/off switch.&lt;br /&gt;
&lt;br /&gt;
Dump the EEPROM data at least twice, and do a bytewise compare with `cmp`. Both files should be identical, and 1024 bytes long. Otherwise, you probably have a serial port problem.&lt;br /&gt;
&lt;br /&gt;
Note: the r24rf08.exe program automatically sets the serial port parameters. It also works fine with Wine under Linux - provided that a symlink (com1) exists in the .wine/dos_devices directory, and points to the /dev/ttySX for the actual serial port.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Reveal the password.'''&lt;br /&gt;
&lt;br /&gt;
Now, you have the .bin file but you need to dump in scan code to retrieve the password. IBMpass 2.0 Lite is a free tool that will do the job. Just open the eeprom dump youâ€™ve created before and search for 0x330, 0x340 lines. The password is located on 0x338 (and 0x340 depending on model) in scan code. For 24C01 eeproms the password is located at 0x38, 0x40. If the password won't work for the very first time then your eeprom may use newer IBM scancodes. In this case switch to alternate scan codes to find it. For those who want quick answers the recommended version is IBMpass 1.1. Usage for IBMpass 1.1 (command line only):&lt;br /&gt;
&lt;br /&gt;
ibmpass mytp.bin â€“ use â€œ/aâ€ switch to see in alternate scan code if needed:&lt;br /&gt;
ibmpass mytp.bin /a&lt;br /&gt;
&lt;br /&gt;
For some old models like 570 or 770Z you need to execute the eeprom patcher first. This will reset the read protection on the password offset. To do that just execute patcher.exe before the reading operation, without rebooting the laptop:&lt;br /&gt;
&lt;br /&gt;
-for SI-PROG:&lt;br /&gt;
patcher.exe , then immediately&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-for Driven-I2C (Max232) you must insert the switches:&lt;br /&gt;
patcher.exe /x /d /i, then immediately&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt; /x /d /i&lt;br /&gt;
&lt;br /&gt;
W24RF08, the writer version, has included the complete APP reset operation you donâ€™t need to use patcher.&lt;br /&gt;
&lt;br /&gt;
Moreover, there are a new encrypting algos used with some new security chips (AT97SC3201, AT97SC3203) that are very secured. The password is not in scancode and in some cases not even in the eeprom. To unlock the machine, the dump should suffer some changes and the eeprom must be reprogrammed using W24RF08. This operation works for all IBM TCG/TCPA secured laptops w/o exceptions. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember, use 3 wires from the interface and 3 wires from eeprom! Connect them after your&lt;br /&gt;
ThinkPad is powered and disconnect them right after you read the content, before you switch off the laptop.&lt;br /&gt;
&lt;br /&gt;
===External Sources===&lt;br /&gt;
* [http://www.allservice.ro R24RF08/W24RF08, PC8394 programming tools &amp;amp; IBMpass author's webpage.]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-59377 IBM Support - Lost or forgotten password]&lt;br /&gt;
* [http://www.allservice.ro/forum/viewforum.php?f=12 Full Service of all ThinkPad models including free password recovery]&lt;br /&gt;
* [http://sodoityourself.com/hacking-ibm-thinkpad-bios-password/ A tutorial on how to do this]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Maintenance&amp;diff=27721</id>
		<title>Maintenance</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Maintenance&amp;diff=27721"/>
		<updated>2007-01-17T21:28:21Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /*solder braid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
Here you can find general hints about keeping your ThinkPad in good shape. Look at your [[:Category:Models|models category page]] for IBMs official maintenance guide for that model.&lt;br /&gt;
|}&lt;br /&gt;
==Battery treatment==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|+Battery life expanding guide&lt;br /&gt;
|- style=&amp;quot;background:#efefef;white-space:nowrap;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Battery Type !! NiCd !! NiMH !! Lithium ion&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | General&lt;br /&gt;
|&lt;br /&gt;
*always do complete discharge/charge cycles&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|&lt;br /&gt;
*always do complete discharge/charge cycles&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|&lt;br /&gt;
*avoid deep discharges except when resetting fuel gague or reconditioning a battery;  partial dis-/recharges are better for the battery lifetime (note: fuel gauge will slowly get inaccurate over time)&lt;br /&gt;
*remove battery when on AC (due to heat)&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Charging&lt;br /&gt;
|&lt;br /&gt;
*discharge before charging&lt;br /&gt;
|&lt;br /&gt;
*discharge before charging&lt;br /&gt;
|&lt;br /&gt;
*avoid charging if battery is nearly full, unless you will need its full capacity soon; keep it on the 30%-85% charged range&lt;br /&gt;
*keep notebook off while charging due to heat&lt;br /&gt;
*fully discharge, then fully charge battery when needed to recalibrate fuel gauge;  newer battery pack models require this less often, old ones might need it as often as every 30 cycles&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Storage&lt;br /&gt;
| &lt;br /&gt;
*almost discharged&lt;br /&gt;
*cool and dry&lt;br /&gt;
|&lt;br /&gt;
*almost discharged&lt;br /&gt;
*cool and dry&lt;br /&gt;
|&lt;br /&gt;
*never fully charged or discharged, ideally at about 40%&lt;br /&gt;
*cool and dry, but '''do not freeze''' them. 10-15C is recommended&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Battery health===&lt;br /&gt;
Batteries, especially of the modern Li-Ion type, wear out quicker when they hold a large charge or are subject to higher temperatures (see above).&lt;br /&gt;
&lt;br /&gt;
If you use your laptop at a desk, reduce battery wear by maintaining an appropriate charge level.  When  possible, remove Li-ion batteries while operating from AC as the notebook gets hot enough inside for that to damage the battery in the long run, even if charging is stopped.&lt;br /&gt;
&lt;br /&gt;
On recent ThinkPads, charging thresholds can be configured in the bundled software.  Under Linux, this is supported on recent models by the [[tp_smapi]] driver (and even without &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;, if you have a dual-boot setup, you can set the thresholds under Windows and they will be remembered as long as you don't power off your machine with AC disconnected; suspend to RAM is OK). Have a look at [[How to use UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
If you have spare Li-ion battery packs, store them at 40% charge in a cool place (15C being a recommended temperature, do not let the batteries freeze).  If storing inside a refrigerator, beware of humidity, and be careful with cold spots that can easily freeze the battery if anything goes wrong.&lt;br /&gt;
&lt;br /&gt;
===The problem with 600 series batteries===&lt;br /&gt;
ThinkPad 600 power management causes batteries to die before they should. Read more about this on the [[Problem with ThinkPad 600 batteries|associated problem page]].&lt;br /&gt;
&lt;br /&gt;
===Reviving batteries===&lt;br /&gt;
Some people experience sudden drops in their batteries capacity.&lt;br /&gt;
&lt;br /&gt;
A way to get these batteries back to full capacity is to run the &amp;quot;Battery Rundown&amp;quot; function of IBMs &amp;quot;PC Doctor for DOS&amp;quot;.&lt;br /&gt;
The program is downloadable from IBMs support site as three floppy disk images. For those who do not have a floppy, David Smith prepared a [http://www.mypchelp.com/~dsmith/ibmutil/ibm_t22_pcdiag.iso bootable CD image] from the T22 floppy images. For newer ThinkPads there is an official [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-56222 bootable CD image].&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
* [[Battery safety]]&lt;br /&gt;
&lt;br /&gt;
===External sources===&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-50944 IBM Support - Extending battery life]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-51038 IBM Support - Battery troubleshooting]&lt;br /&gt;
* [http://www.pc.ibm.com/ww/thinkpad/batterylife/ IBM Benchmark]&lt;br /&gt;
* [http://batteryuniversity.com Battery University]&lt;br /&gt;
* [http://www.batteryuniversity.com/parttwo-34.htm BatteryUniversitys info about prolonging lithium ion batteries]&lt;br /&gt;
* [http://www.buchmann.ca/Chap10-page6.asp prolonging lithium ion batteries in Buchmanns Battery FAQ]&lt;br /&gt;
&lt;br /&gt;
==Cleaning the Display==&lt;br /&gt;
If you discover markings that look like they originate from the TrackPoint or keyboard, or for information on how to avoid these, look at [[Problem with key and trackpoint markings on the display|this page]].&lt;br /&gt;
&lt;br /&gt;
===External Sources===&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-4A2P54 Lenovo Support - LCD care and cleaning instructions]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-52190 IBM Support - System cleaning instructions]&lt;br /&gt;
&lt;br /&gt;
==Cleaning the Interior==&lt;br /&gt;
{{WARN|The following instructions are not appropriate for all ThinkPad models. Please consult the hardware maintenance guide or on-line disassembly instructions for your model.}}&lt;br /&gt;
Most ThinkPad models (particularly the A-series and the T-series) tend to accumulate a lot of interior dust which they draw from their ventilation fan.  A good dusting every few months is advised. The procedure is as follows.&lt;br /&gt;
&lt;br /&gt;
===ThinkPad T4x series===&lt;br /&gt;
See IBM's keyboard removal [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-46515 instructions] and [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-50227 movie].&lt;br /&gt;
&lt;br /&gt;
===ThinkPad T6x series===&lt;br /&gt;
See IBM's keyboard removal&lt;br /&gt;
[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-62800 instructions] and&lt;br /&gt;
[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-63912 movie].&lt;br /&gt;
&lt;br /&gt;
===Other models (which?)===&lt;br /&gt;
#Unplug the computer.&lt;br /&gt;
#Remove the battery.&lt;br /&gt;
#Turn the ThinkPad over and find two to three screws with upraised double-arrows pointing to them.&lt;br /&gt;
#Unscrew these screws and set them aside.&lt;br /&gt;
#Press the silver area underneath where the battery used to be.  The front of the keyboard will pop up.&lt;br /&gt;
#Turn the ThinkPad right side up and gently remove the keyboard, pulling it toward you.&lt;br /&gt;
#There is one connector between the ThinkPad and the keyboard.  Disconnect it, and set the keyboard aside.&lt;br /&gt;
#If there is a small black plastic separator under the keyboard, remove it and set it aside.&lt;br /&gt;
#The fan should be visible in the upper left.  That entire area will likely be dusty.  With a can of compressed air (and ''only'' with a can of compressed air), dust that area and the surrounding area.&lt;br /&gt;
#Replace the small black plastic separator, then reconnect the keyboard.&lt;br /&gt;
#Slide the keyboard back into place, then press down on the Fn and right-arrow keys until it pops into place.&lt;br /&gt;
#Replace the keyboard screws and battery.&lt;br /&gt;
&lt;br /&gt;
==Dealing with spilling accidents==&lt;br /&gt;
#Don't panic.&lt;br /&gt;
#Don't flip or tilt the computer to prevent the liquid from spreading all over the inside of the case.&lt;br /&gt;
#Shut down the OS and turn off the power:&lt;br /&gt;
##Unplug the computer.&lt;br /&gt;
##Remove the battery.&lt;br /&gt;
#Tilt the computer so that everything that leaked into the case can flow out the same way.&lt;br /&gt;
#Allow the computer to dry before switching it on again.&lt;br /&gt;
#For minor accidents this might already be sufficient. For major flooding you should either bring the computer to a dealer who knows how to open and clean it from inside. Or you can read the Hardware Maintenance Manual, open, clean, and dry the computer yourself. &lt;br /&gt;
&lt;br /&gt;
See also [http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 Act quickly, carefully if you spill on laptops] on MoneySense.ca (link broken as of 2006-09-18, the article is still available via [http://web.archive.org/web/20050221034011/http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 web.archive.org]).&lt;br /&gt;
&lt;br /&gt;
==Harddisk Backup / Upgrade==&lt;br /&gt;
*[[How to copy a Linux installation]]&lt;br /&gt;
*[[Harddrive Upgrade|How to upgrade your Thinkpad hard drive]]&lt;br /&gt;
*[[How to copy a Windows installation]]&lt;br /&gt;
===External Sources===&lt;br /&gt;
*[http://gamma.nic.fi/~point/win2copy.htm Guide on copying Windows 2000/XP to another partition]&lt;br /&gt;
&lt;br /&gt;
==Recovering BIOS passwords==&lt;br /&gt;
Password recovery procedure for IBM ThinkPads&lt;br /&gt;
using R24RF08 and IBMpass&lt;br /&gt;
&lt;br /&gt;
'''1. Introduction.'''&lt;br /&gt;
&lt;br /&gt;
The IBM ThinkPad uses a small eeprom ([[AT24RF08|ATMEL 24RF08]]) to store different OEM&lt;br /&gt;
issues like serial number, UUID, etc. The supervisor password (SVP) is also stored in this eeprom.&lt;br /&gt;
The 24RF08 is not an ordinary eeprom: it features read protection, which the BIOS uses to lock down&lt;br /&gt;
access to the eeprom contents.  Also, the password is written in a special scan code, which needs to&lt;br /&gt;
be translated to ASCII to be of any use.&lt;br /&gt;
&lt;br /&gt;
To recover the password, one can use two different programs: R24RF08 (eeprom reader) and IBMpass&lt;br /&gt;
(password revealer) available at [http://www.allservice.ro http://www.allservice.ro]. Diagrams are included in the reader kit.&lt;br /&gt;
&lt;br /&gt;
Models for which R24RF08 and IBMpass are enough to recover the password: 240, 240X, 390E, 390X, 570, 570E,&lt;br /&gt;
600e, 600X, 770Z, A20m, A21e, A21m, a22m, A30, A30p, A31, A31p, G40, G41, R30, R31, R32, R40, R50, R51, &lt;br /&gt;
Transnote, T20, T21, T22, T23, T30, T40, T40p, T41, T41p, T42, T42p, X20, X21, X22, X23, X24, X30, X31, X40, X41.&lt;br /&gt;
&lt;br /&gt;
ThinkPads featuring TPCA technology (i.e. a [[Tpm|TPM trusted platform module chip]]), especially T4x, X3x, X4x need the W24RF08 eeprom writer program to complete the password recovery procedure, if the passphrase function is enabled in BIOS setup.&lt;br /&gt;
&lt;br /&gt;
Other models such as the 380XD or 600 use 24C01 or 93C46 eeproms, which can be read without special tools.&lt;br /&gt;
The method is the same like for the models based on 24RF08, only the software to dump the eeprom is different. &lt;br /&gt;
&lt;br /&gt;
Newer T43/T43p, R52, R60, T60/p, X60 and Z60 ThinkPads can be unlocked using PC8394 programming tools that consist in RPC8394 and WPC8394 (reader and writer for TPM chips). The software is available as well on [http://www.allservice.ro http://www.allservice.ro]. IBMpass 2.0 works for any TP model without exceptions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Locating the ATMEL 24RF08 eeprom. Soldering.'''&lt;br /&gt;
&lt;br /&gt;
No need to unsolder the 24RF08 eeprom, just solder 3 wires to SDA, SCL and GND pins of the&lt;br /&gt;
eeprom. There are two eeprom layouts (see interface schematics described bellow), orresponding to 8 pin or 14 pin eeproms. Locate the eeprom first according to your model (E.g. T20-23 and T30 have the eeprom underneath TP, and can be accessed by removing the RAM modules cover, no need to dismantle the laptop.) and solder the wires using a soldering iron with a fine tip. Also, you can use 0.15 -0.20 mm enamel coated wires or similar small diameter insulated wires. These wires will be connected later to the interface.&lt;br /&gt;
Tip: You can use clips to connect the wires or you can solder on the PCB traces leading to the&lt;br /&gt;
eeprom pins. Once again, be careful and double, triple check the soldering if necessary till you are positively sure you have done the right job. In case of applying too much solder, use flux-impregnated copper-braid &amp;quot;desoldering wick&amp;quot; - this works exceptionally well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Choose and build the interface.'''&lt;br /&gt;
&lt;br /&gt;
Since version 2.0, R24RF08 and W24RF08(eeprom writer) are compatible with a wide range of eeprom programmers. By default, both programs set the COM port signals to use direct logic level to access I2C bus. We provide here 2 schematics that are relevant for direct logic signals and for inverse logic signals (simple-i2cprog.pdf and driven-i2cprog.pdf). Also, depending of the interface you build, you can invert the logics for SDA-In, SDA-Out, and SCL COM port signals by some command line parameters described later in this document.&lt;br /&gt;
a) The file simple-i2cprog.pdf contains the schematic diagram of a simple interface (known as SIPROG)based on 2 zeners and 2 resistors. This is a classic, easy to build circuit and works with soldered or unsoldered eeproms. The purpose of the 2 zeners is to convert RS232 levels (+/- 5V) to TTL levels, needed by the eeprom. It uses direct logic signals to I2C eeprom and is powered by the COM port. However, this interface works with in-system eeproms but is dependant on COM port current and eeprom bus impedance. R24RF08 works natively with this circuit, no need to change the lines signals with command line parameters. This circuit works pretty well with almost all ThinkPads series.&lt;br /&gt;
b) The second interface is described in driven-i2cprog.pdf. The circuit uses MAX 232 as a RS232 to TTL driver and its main purpose is to work with soldered eeproms. The advantage of MAX232 is the TTL outputs that are more reliable and more powerful when work with soldered, in-system eeproms (dependency free from the COM port current). Due of the internal inverters of MAX232 the interface responds to an inverse signal logic level. R24RF08 needs /x, /d, /i switches to be specified in the command line.&lt;br /&gt;
&lt;br /&gt;
What these switches mean:&lt;br /&gt;
/x - invert serial clock, also known as SCL;&lt;br /&gt;
/d - invert serial data output, also known as SDA-Out;&lt;br /&gt;
/i - invert serial data input, also known as SDA-In.&lt;br /&gt;
All those can be used in any combination to meet any interface specification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. How is it working:'''&lt;br /&gt;
&lt;br /&gt;
Prepare your technician PC by connecting the interface to the COM1 port (donâ€™t connect the wires to eeprom yet). Turn on the ThinkPad and press F1 to enter BIOS Setup. When you are prompted for the password and thereâ€™s no other activity like HDD access or so, connect the wires (GND first!, SDA, SCL) to the corresponding wires from the interface (attached before to COM1) and execute R24RF08:&lt;br /&gt;
&lt;br /&gt;
-for SI-PROG interface (as described in 3.a above):&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt;. where filename.ext is the file where eeprom content will be stored.&lt;br /&gt;
Example: r24rf08 mytp.bin&lt;br /&gt;
&lt;br /&gt;
-for MAX232 driven I2C interface (as described in 3.b above):&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt; /x /d /i. where /x /d /i are command line parameters (switches) for this kind of interface.&lt;br /&gt;
Example: r24rf08 mytp2.bin /x /d /i&lt;br /&gt;
&lt;br /&gt;
Use exactly the instructed switches to avoid possible damages to your eeprom data!&lt;br /&gt;
The file should be created in the same folder. Finally, disconnect the wires (GND last!) and turn off the ThinkPad by pressing on/off switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Reveal the password.'''&lt;br /&gt;
&lt;br /&gt;
Now, you have the .bin file but you need to dump in scan code to retrieve the password. IBMpass 2.0 Lite is a free tool that will do the job. Just open the eeprom dump youâ€™ve created before and search for 0x330, 0x340 lines. The password is located on 0x338 (and 0x340 depending on model) in scan code. For 24C01 eeproms the password is located at 0x38, 0x40. If the password won't work for the very first time then your eeprom may use newer IBM scancodes. In this case switch to alternate scan codes to find it. For those who want quick answers the recommended version is IBMpass 1.1. Usage for IBMpass 1.1 (command line only):&lt;br /&gt;
&lt;br /&gt;
ibmpass mytp.bin â€“ use â€œ/aâ€ switch to see in alternate scan code if needed:&lt;br /&gt;
ibmpass mytp.bin /a&lt;br /&gt;
&lt;br /&gt;
For some old models like 570 or 770Z you need to execute the eeprom patcher first. This will reset the read protection on the password offset. To do that just execute patcher.exe before the reading operation, without rebooting the laptop:&lt;br /&gt;
&lt;br /&gt;
-for SI-PROG:&lt;br /&gt;
patcher.exe , then immediately&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-for Driven-I2C (Max232) you must insert the switches:&lt;br /&gt;
patcher.exe /x /d /i, then immediately&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt; /x /d /i&lt;br /&gt;
&lt;br /&gt;
W24RF08, the writer version, has included the complete APP reset operation you donâ€™t need to use patcher.&lt;br /&gt;
&lt;br /&gt;
Moreover, there are a new encrypting algos used with some new security chips (AT97SC3201, AT97SC3203) that are very secured. The password is not in scancode and in some cases not even in the eeprom. To unlock the machine, the dump should suffer some changes and the eeprom must be reprogrammed using W24RF08. This operation works for all IBM TCG/TCPA secured laptops w/o exceptions. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember, use 3 wires from the interface and 3 wires from eeprom! Connect them after your&lt;br /&gt;
ThinkPad is powered and disconnect them right after you read the content, before you switch off the laptop.&lt;br /&gt;
&lt;br /&gt;
===External Sources===&lt;br /&gt;
* [http://www.allservice.ro R24RF08/W24RF08, PC8394 programming tools &amp;amp; IBMpass author's webpage.]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-59377 IBM Support - Lost or forgotten password]&lt;br /&gt;
* [http://www.allservice.ro/forum/viewforum.php?f=12 Full Service of all ThinkPad models including free password recovery]&lt;br /&gt;
* [http://sodoityourself.com/hacking-ibm-thinkpad-bios-password/ A tutorial on how to do this]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Maintenance&amp;diff=27720</id>
		<title>Maintenance</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Maintenance&amp;diff=27720"/>
		<updated>2007-01-17T21:00:40Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Add tutorial link */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
Here you can find general hints about keeping your ThinkPad in good shape. Look at your [[:Category:Models|models category page]] for IBMs official maintenance guide for that model.&lt;br /&gt;
|}&lt;br /&gt;
==Battery treatment==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|+Battery life expanding guide&lt;br /&gt;
|- style=&amp;quot;background:#efefef;white-space:nowrap;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Battery Type !! NiCd !! NiMH !! Lithium ion&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | General&lt;br /&gt;
|&lt;br /&gt;
*always do complete discharge/charge cycles&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|&lt;br /&gt;
*always do complete discharge/charge cycles&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|&lt;br /&gt;
*avoid deep discharges except when resetting fuel gague or reconditioning a battery;  partial dis-/recharges are better for the battery lifetime (note: fuel gauge will slowly get inaccurate over time)&lt;br /&gt;
*remove battery when on AC (due to heat)&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Charging&lt;br /&gt;
|&lt;br /&gt;
*discharge before charging&lt;br /&gt;
|&lt;br /&gt;
*discharge before charging&lt;br /&gt;
|&lt;br /&gt;
*avoid charging if battery is nearly full, unless you will need its full capacity soon; keep it on the 30%-85% charged range&lt;br /&gt;
*keep notebook off while charging due to heat&lt;br /&gt;
*fully discharge, then fully charge battery when needed to recalibrate fuel gauge;  newer battery pack models require this less often, old ones might need it as often as every 30 cycles&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Storage&lt;br /&gt;
| &lt;br /&gt;
*almost discharged&lt;br /&gt;
*cool and dry&lt;br /&gt;
|&lt;br /&gt;
*almost discharged&lt;br /&gt;
*cool and dry&lt;br /&gt;
|&lt;br /&gt;
*never fully charged or discharged, ideally at about 40%&lt;br /&gt;
*cool and dry, but '''do not freeze''' them. 10-15C is recommended&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Battery health===&lt;br /&gt;
Batteries, especially of the modern Li-Ion type, wear out quicker when they hold a large charge or are subject to higher temperatures (see above).&lt;br /&gt;
&lt;br /&gt;
If you use your laptop at a desk, reduce battery wear by maintaining an appropriate charge level.  When  possible, remove Li-ion batteries while operating from AC as the notebook gets hot enough inside for that to damage the battery in the long run, even if charging is stopped.&lt;br /&gt;
&lt;br /&gt;
On recent ThinkPads, charging thresholds can be configured in the bundled software.  Under Linux, this is supported on recent models by the [[tp_smapi]] driver (and even without &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;, if you have a dual-boot setup, you can set the thresholds under Windows and they will be remembered as long as you don't power off your machine with AC disconnected; suspend to RAM is OK). Have a look at [[How to use UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
If you have spare Li-ion battery packs, store them at 40% charge in a cool place (15C being a recommended temperature, do not let the batteries freeze).  If storing inside a refrigerator, beware of humidity, and be careful with cold spots that can easily freeze the battery if anything goes wrong.&lt;br /&gt;
&lt;br /&gt;
===The problem with 600 series batteries===&lt;br /&gt;
ThinkPad 600 power management causes batteries to die before they should. Read more about this on the [[Problem with ThinkPad 600 batteries|associated problem page]].&lt;br /&gt;
&lt;br /&gt;
===Reviving batteries===&lt;br /&gt;
Some people experience sudden drops in their batteries capacity.&lt;br /&gt;
&lt;br /&gt;
A way to get these batteries back to full capacity is to run the &amp;quot;Battery Rundown&amp;quot; function of IBMs &amp;quot;PC Doctor for DOS&amp;quot;.&lt;br /&gt;
The program is downloadable from IBMs support site as three floppy disk images. For those who do not have a floppy, David Smith prepared a [http://www.mypchelp.com/~dsmith/ibmutil/ibm_t22_pcdiag.iso bootable CD image] from the T22 floppy images. For newer ThinkPads there is an official [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-56222 bootable CD image].&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
* [[Battery safety]]&lt;br /&gt;
&lt;br /&gt;
===External sources===&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-50944 IBM Support - Extending battery life]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-51038 IBM Support - Battery troubleshooting]&lt;br /&gt;
* [http://www.pc.ibm.com/ww/thinkpad/batterylife/ IBM Benchmark]&lt;br /&gt;
* [http://batteryuniversity.com Battery University]&lt;br /&gt;
* [http://www.batteryuniversity.com/parttwo-34.htm BatteryUniversitys info about prolonging lithium ion batteries]&lt;br /&gt;
* [http://www.buchmann.ca/Chap10-page6.asp prolonging lithium ion batteries in Buchmanns Battery FAQ]&lt;br /&gt;
&lt;br /&gt;
==Cleaning the Display==&lt;br /&gt;
If you discover markings that look like they originate from the TrackPoint or keyboard, or for information on how to avoid these, look at [[Problem with key and trackpoint markings on the display|this page]].&lt;br /&gt;
&lt;br /&gt;
===External Sources===&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-4A2P54 Lenovo Support - LCD care and cleaning instructions]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-52190 IBM Support - System cleaning instructions]&lt;br /&gt;
&lt;br /&gt;
==Cleaning the Interior==&lt;br /&gt;
{{WARN|The following instructions are not appropriate for all ThinkPad models. Please consult the hardware maintenance guide or on-line disassembly instructions for your model.}}&lt;br /&gt;
Most ThinkPad models (particularly the A-series and the T-series) tend to accumulate a lot of interior dust which they draw from their ventilation fan.  A good dusting every few months is advised. The procedure is as follows.&lt;br /&gt;
&lt;br /&gt;
===ThinkPad T4x series===&lt;br /&gt;
See IBM's keyboard removal [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-46515 instructions] and [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-50227 movie].&lt;br /&gt;
&lt;br /&gt;
===ThinkPad T6x series===&lt;br /&gt;
See IBM's keyboard removal&lt;br /&gt;
[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-62800 instructions] and&lt;br /&gt;
[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-63912 movie].&lt;br /&gt;
&lt;br /&gt;
===Other models (which?)===&lt;br /&gt;
#Unplug the computer.&lt;br /&gt;
#Remove the battery.&lt;br /&gt;
#Turn the ThinkPad over and find two to three screws with upraised double-arrows pointing to them.&lt;br /&gt;
#Unscrew these screws and set them aside.&lt;br /&gt;
#Press the silver area underneath where the battery used to be.  The front of the keyboard will pop up.&lt;br /&gt;
#Turn the ThinkPad right side up and gently remove the keyboard, pulling it toward you.&lt;br /&gt;
#There is one connector between the ThinkPad and the keyboard.  Disconnect it, and set the keyboard aside.&lt;br /&gt;
#If there is a small black plastic separator under the keyboard, remove it and set it aside.&lt;br /&gt;
#The fan should be visible in the upper left.  That entire area will likely be dusty.  With a can of compressed air (and ''only'' with a can of compressed air), dust that area and the surrounding area.&lt;br /&gt;
#Replace the small black plastic separator, then reconnect the keyboard.&lt;br /&gt;
#Slide the keyboard back into place, then press down on the Fn and right-arrow keys until it pops into place.&lt;br /&gt;
#Replace the keyboard screws and battery.&lt;br /&gt;
&lt;br /&gt;
==Dealing with spilling accidents==&lt;br /&gt;
#Don't panic.&lt;br /&gt;
#Don't flip or tilt the computer to prevent the liquid from spreading all over the inside of the case.&lt;br /&gt;
#Shut down the OS and turn off the power:&lt;br /&gt;
##Unplug the computer.&lt;br /&gt;
##Remove the battery.&lt;br /&gt;
#Tilt the computer so that everything that leaked into the case can flow out the same way.&lt;br /&gt;
#Allow the computer to dry before switching it on again.&lt;br /&gt;
#For minor accidents this might already be sufficient. For major flooding you should either bring the computer to a dealer who knows how to open and clean it from inside. Or you can read the Hardware Maintenance Manual, open, clean, and dry the computer yourself. &lt;br /&gt;
&lt;br /&gt;
See also [http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 Act quickly, carefully if you spill on laptops] on MoneySense.ca (link broken as of 2006-09-18, the article is still available via [http://web.archive.org/web/20050221034011/http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 web.archive.org]).&lt;br /&gt;
&lt;br /&gt;
==Harddisk Backup / Upgrade==&lt;br /&gt;
*[[How to copy a Linux installation]]&lt;br /&gt;
*[[Harddrive Upgrade|How to upgrade your Thinkpad hard drive]]&lt;br /&gt;
*[[How to copy a Windows installation]]&lt;br /&gt;
===External Sources===&lt;br /&gt;
*[http://gamma.nic.fi/~point/win2copy.htm Guide on copying Windows 2000/XP to another partition]&lt;br /&gt;
&lt;br /&gt;
==Recovering BIOS passwords==&lt;br /&gt;
Password recovery procedure for IBM ThinkPads&lt;br /&gt;
using R24RF08 and IBMpass&lt;br /&gt;
&lt;br /&gt;
'''1. Introduction.'''&lt;br /&gt;
&lt;br /&gt;
The IBM ThinkPad uses a small eeprom ([[AT24RF08|ATMEL 24RF08]]) to store different OEM&lt;br /&gt;
issues like serial number, UUID, etc. The supervisor password (SVP) is also stored in this eeprom.&lt;br /&gt;
The 24RF08 is not an ordinary eeprom: it features read protection, which the BIOS uses to lock down&lt;br /&gt;
access to the eeprom contents.  Also, the password is written in a special scan code, which needs to&lt;br /&gt;
be translated to ASCII to be of any use.&lt;br /&gt;
&lt;br /&gt;
To recover the password, one can use two different programs: R24RF08 (eeprom reader) and IBMpass&lt;br /&gt;
(password revealer) available at [http://www.allservice.ro http://www.allservice.ro]. Diagrams are included in the reader kit.&lt;br /&gt;
&lt;br /&gt;
Models for which R24RF08 and IBMpass are enough to recover the password: 240, 240X, 390E, 390X, 570, 570E,&lt;br /&gt;
600e, 600X, 770Z, A20m, A21e, A21m, a22m, A30, A30p, A31, A31p, G40, G41, R30, R31, R32, R40, R50, R51, &lt;br /&gt;
Transnote, T20, T21, T22, T23, T30, T40, T40p, T41, T41p, T42, T42p, X20, X21, X22, X23, X24, X30, X31, X40, X41.&lt;br /&gt;
&lt;br /&gt;
ThinkPads featuring TPCA technology (i.e. a [[Tpm|TPM trusted platform module chip]]), especially T4x, X3x, X4x need the W24RF08 eeprom writer program to complete the password recovery procedure, if the passphrase function is enabled in BIOS setup.&lt;br /&gt;
&lt;br /&gt;
Other models such as the 380XD or 600 use 24C01 or 93C46 eeproms, which can be read without special tools.&lt;br /&gt;
The method is the same like for the models based on 24RF08, only the software to dump the eeprom is different. &lt;br /&gt;
&lt;br /&gt;
Newer T43/T43p, R52, R60, T60/p, X60 and Z60 ThinkPads can be unlocked using PC8394 programming tools that consist in RPC8394 and WPC8394 (reader and writer for TPM chips). The software is available as well on [http://www.allservice.ro http://www.allservice.ro]. IBMpass 2.0 works for any TP model without exceptions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Locating the ATMEL 24RF08 eeprom. Soldering.'''&lt;br /&gt;
&lt;br /&gt;
No need to unsolder the 24RF08 eeprom, just solder 3 wires to SDA, SCL and GND pins of the&lt;br /&gt;
eeprom. There are two eeprom layouts (see interface schematics described bellow), orresponding to 8 pin or 14 pin eeproms. Locate the eeprom first according to your model (E.g. T20-23 and T30 have the eeprom underneath TP, and can be accessed by removing the RAM modules cover, no need to dismantle the laptop.) and solder the wires using a soldering iron with a fine tip. Also, you can use 0.15 -0.20 mm enamel coated wires or similar small diameter insulated wires. These wires will be connected later to the interface.&lt;br /&gt;
Tip: You can use clips to connect the wires or you can solder on the PCB traces leading to the&lt;br /&gt;
eeprom pins. Once again, be careful and double, triple check the soldering if necessary till you are positively sure you have done the right job.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Choose and build the interface.'''&lt;br /&gt;
&lt;br /&gt;
Since version 2.0, R24RF08 and W24RF08(eeprom writer) are compatible with a wide range of eeprom programmers. By default, both programs set the COM port signals to use direct logic level to access I2C bus. We provide here 2 schematics that are relevant for direct logic signals and for inverse logic signals (simple-i2cprog.pdf and driven-i2cprog.pdf). Also, depending of the interface you build, you can invert the logics for SDA-In, SDA-Out, and SCL COM port signals by some command line parameters described later in this document.&lt;br /&gt;
a) The file simple-i2cprog.pdf contains the schematic diagram of a simple interface (known as SIPROG)based on 2 zeners and 2 resistors. This is a classic, easy to build circuit and works with soldered or unsoldered eeproms. The purpose of the 2 zeners is to convert RS232 levels (+/- 5V) to TTL levels, needed by the eeprom. It uses direct logic signals to I2C eeprom and is powered by the COM port. However, this interface works with in-system eeproms but is dependant on COM port current and eeprom bus impedance. R24RF08 works natively with this circuit, no need to change the lines signals with command line parameters. This circuit works pretty well with almost all ThinkPads series.&lt;br /&gt;
b) The second interface is described in driven-i2cprog.pdf. The circuit uses MAX 232 as a RS232 to TTL driver and its main purpose is to work with soldered eeproms. The advantage of MAX232 is the TTL outputs that are more reliable and more powerful when work with soldered, in-system eeproms (dependency free from the COM port current). Due of the internal inverters of MAX232 the interface responds to an inverse signal logic level. R24RF08 needs /x, /d, /i switches to be specified in the command line.&lt;br /&gt;
&lt;br /&gt;
What these switches mean:&lt;br /&gt;
/x - invert serial clock, also known as SCL;&lt;br /&gt;
/d - invert serial data output, also known as SDA-Out;&lt;br /&gt;
/i - invert serial data input, also known as SDA-In.&lt;br /&gt;
All those can be used in any combination to meet any interface specification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. How is it working:'''&lt;br /&gt;
&lt;br /&gt;
Prepare your technician PC by connecting the interface to the COM1 port (donâ€™t connect the wires to eeprom yet). Turn on the ThinkPad and press F1 to enter BIOS Setup. When you are prompted for the password and thereâ€™s no other activity like HDD access or so, connect the wires (GND first!, SDA, SCL) to the corresponding wires from the interface (attached before to COM1) and execute R24RF08:&lt;br /&gt;
&lt;br /&gt;
-for SI-PROG interface (as described in 3.a above):&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt;. where filename.ext is the file where eeprom content will be stored.&lt;br /&gt;
Example: r24rf08 mytp.bin&lt;br /&gt;
&lt;br /&gt;
-for MAX232 driven I2C interface (as described in 3.b above):&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt; /x /d /i. where /x /d /i are command line parameters (switches) for this kind of interface.&lt;br /&gt;
Example: r24rf08 mytp2.bin /x /d /i&lt;br /&gt;
&lt;br /&gt;
Use exactly the instructed switches to avoid possible damages to your eeprom data!&lt;br /&gt;
The file should be created in the same folder. Finally, disconnect the wires (GND last!) and turn off the ThinkPad by pressing on/off switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Reveal the password.'''&lt;br /&gt;
&lt;br /&gt;
Now, you have the .bin file but you need to dump in scan code to retrieve the password. IBMpass 2.0 Lite is a free tool that will do the job. Just open the eeprom dump youâ€™ve created before and search for 0x330, 0x340 lines. The password is located on 0x338 (and 0x340 depending on model) in scan code. For 24C01 eeproms the password is located at 0x38, 0x40. If the password won't work for the very first time then your eeprom may use newer IBM scancodes. In this case switch to alternate scan codes to find it. For those who want quick answers the recommended version is IBMpass 1.1. Usage for IBMpass 1.1 (command line only):&lt;br /&gt;
&lt;br /&gt;
ibmpass mytp.bin â€“ use â€œ/aâ€ switch to see in alternate scan code if needed:&lt;br /&gt;
ibmpass mytp.bin /a&lt;br /&gt;
&lt;br /&gt;
For some old models like 570 or 770Z you need to execute the eeprom patcher first. This will reset the read protection on the password offset. To do that just execute patcher.exe before the reading operation, without rebooting the laptop:&lt;br /&gt;
&lt;br /&gt;
-for SI-PROG:&lt;br /&gt;
patcher.exe , then immediately&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-for Driven-I2C (Max232) you must insert the switches:&lt;br /&gt;
patcher.exe /x /d /i, then immediately&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt; /x /d /i&lt;br /&gt;
&lt;br /&gt;
W24RF08, the writer version, has included the complete APP reset operation you donâ€™t need to use patcher.&lt;br /&gt;
&lt;br /&gt;
Moreover, there are a new encrypting algos used with some new security chips (AT97SC3201, AT97SC3203) that are very secured. The password is not in scancode and in some cases not even in the eeprom. To unlock the machine, the dump should suffer some changes and the eeprom must be reprogrammed using W24RF08. This operation works for all IBM TCG/TCPA secured laptops w/o exceptions. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember, use 3 wires from the interface and 3 wires from eeprom! Connect them after your&lt;br /&gt;
ThinkPad is powered and disconnect them right after you read the content, before you switch off the laptop.&lt;br /&gt;
&lt;br /&gt;
===External Sources===&lt;br /&gt;
* [http://www.allservice.ro R24RF08/W24RF08, PC8394 programming tools &amp;amp; IBMpass author's webpage.]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-59377 IBM Support - Lost or forgotten password]&lt;br /&gt;
* [http://www.allservice.ro/forum/viewforum.php?f=12 Full Service of all ThinkPad models including free password recovery]&lt;br /&gt;
* [http://sodoityourself.com/hacking-ibm-thinkpad-bios-password/ A tutorial on how to do this]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Script_for_theft_alarm_using_HDAPS&amp;diff=27369</id>
		<title>Script for theft alarm using HDAPS</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Script_for_theft_alarm_using_HDAPS&amp;diff=27369"/>
		<updated>2006-12-29T19:29:09Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* wrong paths on ubuntu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==General==&lt;br /&gt;
&lt;br /&gt;
Recent ThinkPad models include a built-in two-axis accelerometer, as part of the [[HDAPS]] feature. This accelerometer can be put to another use: as a laptop theft deterrent. The following scripts detect when the laptop is moved, and emits a loud audio alarm. &lt;br /&gt;
&lt;br /&gt;
This alarm can be an effective deterrent against a casual laptop-snatcher in a populated environment (e.g., typical office space). It's also useful when you're across the room from the laptop and want to know if someone fiddles with it.&lt;br /&gt;
&lt;br /&gt;
Note that the alarm is disabled when the laptop is suspended or powered off. You can buy external (hardware) motion detector alarms to handle those cases.&lt;br /&gt;
&lt;br /&gt;
{{WARN|The audio alarm is played at a very high volume. Never enable the alarm while wearing headphones connected to the laptop's speaker output or when the laptop is connected to a high-power amplifier.}}&lt;br /&gt;
&lt;br /&gt;
==A comprehensive script==&lt;br /&gt;
&lt;br /&gt;
This Perl script periodically samples the tilt data reported by the accelerometer, computes the variance over recent samples, and triggers the alarm when the variance exceeds a given threshold.&lt;br /&gt;
&lt;br /&gt;
On a ThinkPad with [[Active Protection System]] running a modern Linux installation with the [[HDAPS|hdaps]] kernel module loaded, the script should work as is. Just run {{cmdroot|tp-theft --arm}} and see (or rather, hear) what happens when you tilt your laptop. &lt;br /&gt;
&lt;br /&gt;
The volume and alarm sound can be adjusted at the top of the script. On a ThinkPad {{T43}}, the synthetic siren at &amp;lt;tt&amp;gt;$alarm_volume=100&amp;lt;/tt&amp;gt; (up from the default 70) is quite ear-splitting, and combined with &amp;lt;tt&amp;gt;$acpi_volume=15&amp;lt;/tt&amp;gt; it is dangerously loud.&lt;br /&gt;
&lt;br /&gt;
The script is designed to run continuously in the background, so by default the alarm will be activated only when the KDE screen saver is locked. If you you open the laptop lid (or press the lid button) shortly before or after the beginning of movement, the alarm will be suspended (except for a brief warning) and you will get a few seconds of grace to unlock the screen saver (preferably, [[How to enable the fingerprint reader|using the integrated fingerprint reader]]!). You can disable this functionality by passing the &amp;lt;tt&amp;gt;--arm&amp;lt;/tt&amp;gt; parameter, by setting &amp;lt;tt&amp;gt;$use_kde=0&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$use_lid=0&amp;lt;/tt&amp;gt;, or by using the simpler script below.&lt;br /&gt;
&lt;br /&gt;
===Prerequisites===&lt;br /&gt;
&lt;br /&gt;
* ThinkPad with [[Active Protection System]]&lt;br /&gt;
* [[HDAPS|hdaps]] kernel module loaded (included in kernel 2.6.14 and later)&lt;br /&gt;
* Optional: [[ibm-acpi|ibm_acpi]] module loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; parameter (included in kernel 2.6.14 and later; needed only for full volume control)&lt;br /&gt;
The following are included in all modern Linux distributions:&lt;br /&gt;
* ALSA sound system, &amp;lt;tt&amp;gt;alsactl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;aplay&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;amixer&amp;lt;/tt&amp;gt; )&lt;br /&gt;
* &amp;lt;tt&amp;gt;sox&amp;lt;/tt&amp;gt; (SOund eXchange) sound utility&lt;br /&gt;
&lt;br /&gt;
===The script===&lt;br /&gt;
{{CodeRef|tp-theft}}&lt;br /&gt;
&lt;br /&gt;
==A basic script==&lt;br /&gt;
&lt;br /&gt;
This is a simpler version of the above script, which omits the fancier functionality such as KDE screensaver detection, lid detection and state machine.&lt;br /&gt;
&lt;br /&gt;
===Prerequisites===&lt;br /&gt;
&lt;br /&gt;
* ThinkPad with [[Active Protection System]]&lt;br /&gt;
* [[HDAPS|hdaps]] kernel module loaded (included in kernel 2.6.14 and later)&lt;br /&gt;
* &amp;lt;tt&amp;gt;aumix&amp;lt;/tt&amp;gt; mixer control utility (included in all modern Linux distributions)&lt;br /&gt;
* &amp;lt;tt&amp;gt;sox&amp;lt;/tt&amp;gt; (SOund eXchange) sound utility (included in all modern Linux distributions)&lt;br /&gt;
&lt;br /&gt;
===The script===&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|tp-theft-basic}}&lt;br /&gt;
&lt;br /&gt;
==Ideas for improvement==&lt;br /&gt;
Features awaiting contribution:&lt;br /&gt;
* Disable the alarm when headphones are plugged in -- it may cause hearing damage (if the user ignores the initial warning), and won't be effective anyway. '''Can we detect whether the something is plugged into the headphones/line-out socket?'''&lt;br /&gt;
* Start out quietly, and increase siren duration and volume if movement persists. Reset after a period of no movement.&lt;br /&gt;
* Gnome and xscreensaver support (similarly to [http://fdd.com/software/radeon/lightwatch.pl lightwatch.pl]?)&lt;br /&gt;
* Report theft via network (if you get a chance to).&lt;br /&gt;
* Monitor AC power and take it into account for alarm activation -- thieves seldom carry a UPS.&lt;br /&gt;
* Monitor proximity to a bluetooth device carried by the owner, and take it into account for alarm activation. I'll implement this if you get [[User:Thinker|me]] a  [[IBM Integrated Bluetooth IV with 56K Modem (BMDC-3)|BMDC-3]] Bluetooth card.&lt;br /&gt;
* Don't arm the alarm if movement of similar magnitude was happening also before the screensaver was auto-locked (the owner might be in a moving vehicle, etc.).&lt;br /&gt;
* Theft attempts may be accompanied by rough handling, especially when the siren kicks in. So when starting an alarm also park the disk heads. Release the parking when a key is pressed (according {{path|/sys/bus/platform/drivers/hdaps/hdaps/keyboard_activity}}) so that the login prompt can start up. This requires kernel support for disk head parking and queue freezing, currently developed for the (original) HDAPS functionality.&lt;br /&gt;
* When the alarm is triggered, also show a visual warning on the display. Override screensaver/powersaving if necessary.&lt;br /&gt;
* Disarm the alarm (or hold it off for a few seconds, as already implemented for lid open) based on voice/sound recognition using the built-in microphone.&lt;br /&gt;
* Implement this functionality in the embedded controller, so that the alarm will work even when the laptop is suspended. It may be possible to do so without IBM/Lenovo's involvement, using the [http://forum.thinkpads.com/viewtopic.php?t=20958 embedded controller disassembly].&lt;br /&gt;
* Disable the volume buttons when the script is running so that a thief can't just turn the volume down. (Not an issue when &amp;lt;tt&amp;gt;ibm_acpi&amp;lt;/tt&amp;gt; volume control is available - see [[#Prerequisites|Prerequisites]].)&lt;br /&gt;
* Disable suspend and poweroff (to the extent possible) when the alarm is on (it may take a while for a casual thief to actully remove the battery). Better spin down the disks (see above), we could be in for a rough ride.&lt;br /&gt;
* On Ubuntu, some of the paths don't work. alsactl is in /sbin, not /usr/sbin, and pidof is in /bin, not /sbin. These probably shouldn't be hardcoded paths. (Fix: create symlinks)&lt;br /&gt;
&lt;br /&gt;
==Another Script (plugin-based)==&lt;br /&gt;
there's another script with the same intention available at http://www.informatik.hu-berlin.de/~pilop/HOWTO_Gentoo_T43/#TheftAlarm&lt;br /&gt;
&lt;br /&gt;
it uses a plugin-architecture for different checks (HDAPS, ethernet, power, lid, ...)&lt;br /&gt;
&lt;br /&gt;
==Yet another script (python/gtk based)==&lt;br /&gt;
You can find yet another version of this script at&lt;br /&gt;
&lt;br /&gt;
http://r3blog.nl/index.php/thinkpad-theft&lt;br /&gt;
&lt;br /&gt;
It has almost the same features as the comprehensive script above, with a few improvements. It uses dbus to query the screensaver status and gconf for storing configuration value. To improve the delay before the alarm sounds, it has a built-in wav player, and it opens the file-descriptor of the wav at startup time (thereby removing the need to spawn an application to play the alarm; imagine someone stealing your laptop while you're doing heavy disk io). Furthermore, it has a trayicon allowing you to manipulate most settings stored in gconf aswell as showing you the current status of the alarm. The 0.2 release features activation on missing presence of a bluetooth or usb device.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Fglrx&amp;diff=27348</id>
		<title>Fglrx</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Fglrx&amp;diff=27348"/>
		<updated>2006-12-29T00:59:16Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Explained how to disable composite. */&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;
*{{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;
&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.32.5 (13th December 2006).&lt;br /&gt;
Major changes:&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;
&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>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installation_on_ThinkPads_without_CD-ROM_drive&amp;diff=26131</id>
		<title>Installation on ThinkPads without CD-ROM drive</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installation_on_ThinkPads_without_CD-ROM_drive&amp;diff=26131"/>
		<updated>2006-10-31T22:08:36Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* External Sources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
Some ThinkPads (e.g. the whole X series) come without a CD-ROM drive by default. Even though there are options to buy a solution like the UltraBase, a full dock or simply an external CD-ROM drive{{footnote|1}}, this is not the cheapest option and might not always be neccessary. Also, with some external CD-ROMs the problem might arise that the ThinkPad is not able to boot from them. See our [[Supported Boot Devices|List of supported boot devices]] for various ThinkPads.&lt;br /&gt;
&lt;br /&gt;
So the question arises how to get your system of choice onto that precious piece of hardware. This page should tell you about the possible solutions.&lt;br /&gt;
&lt;br /&gt;
Since in most cases the installation base packages come on CD, you'll need a second computer, equipped with a CD-ROM drive, for all of those solutions.&lt;br /&gt;
&lt;br /&gt;
Many older ThinkPads came with only a floppy drive and cannot boot from any CD drive at all. For those machines, booting from floppy is the only option. Then one can install from CD, over a network, or from the hard drive.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Installation from USB drive==&lt;br /&gt;
Note: Not all thinkpads have a BIOS that [[Supported_Boot_Devices|supports USB booting]].&lt;br /&gt;
&lt;br /&gt;
This is probably the easiest approach.&lt;br /&gt;
*Connect the USB drive{{footnote|2}} to the host and format it.&lt;br /&gt;
*Get a bootable system and all needed installation files onto the USB drive, i.e. by copying the complete filesystem from your installation CD-ROM to the USB drive. Of course if your USB drive is not big enough for that you'll have to make more sophisticated choices about what to copy and what to leave behind. Here are [http://wiki.debian.org/BootUsb some instructions] for converting a LiveCD .iso image onto a pendrive, and making it bootable.{{footnote|3}} &lt;br /&gt;
&lt;br /&gt;
*Insert the USB drive into the USB port of your ThinkPad.&lt;br /&gt;
*Power on the ThinkPad an press F12 to get to the boot menu. Sometimes (X24 comes to mind) you need to go into the BIOS and change the boot sequence before USB devices are shown after F12.&lt;br /&gt;
*Select the USB drive as boot media and boot.&lt;br /&gt;
*Follow the installation process.&lt;br /&gt;
&lt;br /&gt;
It seems some bioses don't use the code on MBR (sda), or at least skip it when it's blanked and needs a Extended-IPL boot loaderm, can be found here: http://www.tsden.org/ryutaroh/extipl/&lt;br /&gt;
* ''dd if=/dev/zero of=/dev/sda bs=1 count=446&amp;quot;''&lt;br /&gt;
* ''dd if=/usr/lib/extipl/aldebaran.bin of=/dev/sda''&lt;br /&gt;
&lt;br /&gt;
==Installation via network boot==&lt;br /&gt;
Thinkpads support PXE to boot off another system that is connected via [[Ethernet]]. In this case the ThinkPad acts as a network boot client, the other system as server. The idea is to boot a system on the server that the ThinkPad can boot into then by loading all required data directly from that server.&lt;br /&gt;
&lt;br /&gt;
For this to work you will have to either have both the server and the ThinkPad connected in the same subnet of your LAN, or have them connected directly via a crossed Ethernet cable.&lt;br /&gt;
&lt;br /&gt;
===using Windows as a server===&lt;br /&gt;
To get your Thinkpad to boot over a network, you must set up a DHCP and a TFTP server.  For Windows, the freeware program [http://tftpd32.jounin.net TFTPD32] does both.&lt;br /&gt;
*Create a directory that will contain the PXE boot code.&lt;br /&gt;
*Copy the boot code into that directory.  (For a Debian Sarge install, for example, you can find code to initiate a network install under &amp;lt;code&amp;gt;debian/dists/sarge/main/installer-i386/current/images/netboot/&amp;lt;/code&amp;gt; from a Debian mirror -- copy files to simulate symlinks for &amp;lt;code&amp;gt;pxelinux.0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pxelinux.cfg/&amp;lt;/code&amp;gt;)&lt;br /&gt;
*Launch the TFTPD32 program.&lt;br /&gt;
*&amp;quot;Browse&amp;quot; to set the current directory to the directory containing the PXE boot code (i.e. the directory you created in the first step, above).&lt;br /&gt;
*On the DHCP server tab, set:&lt;br /&gt;
**&amp;lt;code&amp;gt;IP pool starting address&amp;lt;/code&amp;gt; to something appropriate for your network&lt;br /&gt;
**&amp;lt;code&amp;gt;Size of pool&amp;lt;/code&amp;gt; to a non-zero value (all you really need is 1)&lt;br /&gt;
**&amp;lt;code&amp;gt;Boot file&amp;lt;/code&amp;gt; to the PXE boot image (from Debian, the filename is &amp;lt;code&amp;gt;pxelinux.0&amp;lt;/code&amp;gt;)&lt;br /&gt;
**&amp;lt;code&amp;gt;WINS/DNS Server&amp;lt;/code&amp;gt; to the DNS server used by your network&lt;br /&gt;
**&amp;lt;code&amp;gt;Default router&amp;lt;/code&amp;gt; to the IP of your default gateway&lt;br /&gt;
**&amp;lt;code&amp;gt;Mask&amp;lt;/code&amp;gt; to your network's netmask&lt;br /&gt;
**&amp;lt;code&amp;gt;Domain Name&amp;lt;/code&amp;gt; to your network's domain&lt;br /&gt;
*Disable any other DHCP servers on your network&lt;br /&gt;
*Boot your Thinkpad, and press {{key|F12}} to select an alternate boot device&lt;br /&gt;
*Use &amp;quot;&amp;lt;code&amp;gt;Intel(R) Boot Agent Version 4.0.17&amp;lt;/code&amp;gt;&amp;quot; (or similar -- on the Transnote used to make this guide, &amp;quot;&amp;lt;code&amp;gt;Network Boot&amp;lt;/code&amp;gt;&amp;quot; did not work while the Boot Agent option did)&lt;br /&gt;
The TFTPD32 server window should show activity as the Thinkpad downloads files.&lt;br /&gt;
Once the first stage has installed and the Thinkpad is ready to boot from its own hard drive, shut down TFTPD32 and re-enable your permanent DHCP server.&lt;br /&gt;
&lt;br /&gt;
===using [[:Category:Knoppix|Knoppix]] on the server side===&lt;br /&gt;
*Insert the Knoppix CD into the server and boot it up.&lt;br /&gt;
*Make sure to boot with the 2.6 kernel by giving the &amp;lt;code&amp;gt;kernel26&amp;lt;/code&amp;gt; boot option.&lt;br /&gt;
*Once your KDE desktop is loaded, look in the K-Menu hierarchy for the link to the terminal server setup.&lt;br /&gt;
*Launch the Terminal Server and make it use the appropriate network device.&lt;br /&gt;
*Power on your ThinkPad and press F12 to get to the boot menu.&lt;br /&gt;
*Select the ThinkPads network adapter as the boot media.&lt;br /&gt;
*The ThinkPad should now boot from the Knoppix Terminal Server directly.&lt;br /&gt;
&lt;br /&gt;
===Using any Linux on the server side===&lt;br /&gt;
{{Todo|needs better formating, maybe a list where to find the kernel/initrd images on other distros and a hint to speed up booting}}&lt;br /&gt;
&lt;br /&gt;
# TFTP Server&lt;br /&gt;
#* Download and install an tftp Server&lt;br /&gt;
#* Configure it to serve {{path|/tftpboot}}&lt;br /&gt;
# Get the kernel and initrd image from your distribution&lt;br /&gt;
#* For fedora-core they are in {{path|os/images/pxeboot}}&lt;br /&gt;
#* Copy both to {{path|/tftpboot/vmlinuz}} resp. {{path|/tftpboot/initrd.img}}&lt;br /&gt;
# [http://www.kernel.org/pub/linux/boot/syslinux/ Bootloader]&lt;br /&gt;
#* Download the current syslinux-X.YZ.tar.bz2 tarball&lt;br /&gt;
#* Copy the included pxelinux.0 to {{path|/tftpboot/pxelinux.0}}&lt;br /&gt;
#* Create a directory for the configuration with {{cmdroot|mkdir /tftpboot/pxelinux.cfg}}&lt;br /&gt;
#* Create the file {{path|/tftpboot/pxelinux.cfg/default}} with the following contents:&lt;br /&gt;
 DEFAULT install&lt;br /&gt;
 PROMPT 1&lt;br /&gt;
 TIMEOUT 0&lt;br /&gt;
 LABEL install&lt;br /&gt;
         kernel vmlinuz&lt;br /&gt;
         append initrd.img  --&lt;br /&gt;
# DHCP Server&lt;br /&gt;
#* Download and install an DHCP Server&lt;br /&gt;
#* Configure it to for your Thinkpad, the following configuration assumes that the MAC-address of your Thinkpad is DE:AD:BE:EF:00:00 and should use the IP 192.168.0.2 with namesever/router/tftpserver 192.168.0.1&lt;br /&gt;
 allow booting;&lt;br /&gt;
 allow bootp;&lt;br /&gt;
 host thinkpad {&lt;br /&gt;
    hardware ethernet DE:AD:BE:EF:00:00;&lt;br /&gt;
    fixed-address 192.168.0.2;&lt;br /&gt;
    option domain-name-servers 192.168.0.1;&lt;br /&gt;
    option routers 192.168.0.1;&lt;br /&gt;
    default-lease-time 28800;&lt;br /&gt;
    filename &amp;quot;pxelinux.0&amp;quot;;&lt;br /&gt;
    next-server 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
#* Now you can boot your thinkpad via lan&lt;br /&gt;
&lt;br /&gt;
==Installation from the internal harddrive==&lt;br /&gt;
The idea here is to have all required files allready on the internal harddrive when you power up your ThinkPad for installation, including of course a minimal system to boot up and start the installation process.&lt;br /&gt;
&lt;br /&gt;
Convenient, but how do you get the files there?&lt;br /&gt;
*One option is to copy them via network boot (see above).&lt;br /&gt;
*Some Linux distributions offer ways to download the installation files from a FTP server and to choose this directory as installation source instead of a CD-ROM.&lt;br /&gt;
*A second way, if you already have a 'working' copy of DOS or MS Windows installed, is to start the installer from loadlin or GRUB. This is detailed [http://marc.herbert.free.fr/linux/win2linstall.html here].&lt;br /&gt;
*Another one is to remove the harddrive from the ThinkPad and connect it to the other machine. Again, this can be achieved in several ways:&lt;br /&gt;
**putting the harddrive into an UltraBay secondary HDD adapter of a second ThinkPad&lt;br /&gt;
**putting the harddrive into an external casing and connect it to the second machine via USB, PCMCIA or whatever&lt;br /&gt;
**connecting the harddrive via a 2.5&amp;quot; (laptop) to 3.5&amp;quot; (desktop) harddrive adapter&lt;br /&gt;
&lt;br /&gt;
Follow one of the following instructions.&lt;br /&gt;
&lt;br /&gt;
===Installing [[:Category:Windows|Windows]] 2000 or XP===&lt;br /&gt;
*Attach the harddrive to the host computer and install a minimal bootable DOS system i.e. by booting a Win98 Emergency Boot Disk and performing the command &amp;quot;SYS X:&amp;quot; (where X = the laptop's harddrive).&lt;br /&gt;
*Copy FDISK.EXE to the laptop harddrive.&lt;br /&gt;
*Return the harddrive to the laptop and boot to DOS. (If you have Win98 installed by default, you can skip the first two steps and simply reboot in Windows to DOS.)&lt;br /&gt;
*Run FDISK and set up your new Windows system partition on this laptop. (If you do not do this on the laptop, after reboot you will receive the infamous &amp;quot;NTLDR IS MISSING&amp;quot; error. This error may still occur if the partition is greater than 7.8gb in size)&lt;br /&gt;
*Then return the drive to the host and format the drive as FAT32. (DO NOT format as NTFS.)&lt;br /&gt;
*Repeat the &amp;quot;SYS X:&amp;quot; step to make the new partition bootable.&lt;br /&gt;
*Copy Himem.sys and Config.sys, too. Otherwise SMARTDRIVE.EXE won't run&lt;br /&gt;
*Get SMARTDRV.EXE from the internet and copy it to your Thinkpads harddrive.&lt;br /&gt;
*Also, from the Win2K or WinXP CD, copy the I386 folder to the harddrive.&lt;br /&gt;
*Return the laptop's harddrive to the Thinkpad one final time and boot to DOS.&lt;br /&gt;
*Run SMARTDRV.EXE first, then change directories to I386 and run WINNT.EXE, this will allow the installation to begin.&lt;br /&gt;
*During installation, choose NOT to format the destination partition, since it contains the installation files. If you want that filesystem to be NTFS you can convert it after installation from within Windows.&lt;br /&gt;
&lt;br /&gt;
==Installation from Diskette==&lt;br /&gt;
===Installing from CD===&lt;br /&gt;
Many distributions have software on CD that will make a boot floppy that will allow you to install from an unbootable CD drive.&lt;br /&gt;
&lt;br /&gt;
===Installing over a network===&lt;br /&gt;
Some distributions have a set of diskettes that will allow you to boot a machine, enable a network device and start installation over a network. For example, {{Slackware}} supports installing via an NFS mount. An unofficial add-on adds an option to install over FTP.&lt;br /&gt;
&lt;br /&gt;
===Installing from floppy===&lt;br /&gt;
Some distributions did allow for a complete installation from diskette. As the size of distributions and the number of required diskettes has grown, and the ubiquity of optical storage increased, support for floppy installation has diminished.&lt;br /&gt;
&lt;br /&gt;
However, there are still some Linux distributions that fit on as few as one diskette - with very limited functionality, of course.&lt;br /&gt;
&lt;br /&gt;
==Installation from an ISO image==&lt;br /&gt;
Some distributions offer a way of installing directly from the downloadable ISO image, residing on your harddisk. Examples are VectorLinux 5.1 and {{SUSE}} 10. The individual distributions installation manuals will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
*[http://www.gentoo.org/doc/en/altinstall.xml Gentoo alternative installation method HOWTO]&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#External CD-ROM drives typically are connected through USB or [[PCMCIA]]. Be aware that not all of these drives are [[Supported Boot Devices|capable of booting]]. USB connected drives are more likely to be bootable on a ThinkPad than PCMCIA connected ones.&lt;br /&gt;
#USB drive here means any kind of USB connected bootable data storage device, including external harddisk drives, memory card readers or pendrives.&lt;br /&gt;
#Most USB keys are already bootable. If it won't work, use lilo to write to the USB key's MBR: See the section &amp;quot;Master Boot Record&amp;quot; [http://wiki.debian.org/BootUsb here].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:TransNote]] [[Category:560]] [[Category:560E]] [[Category:560X]] [[Category:560Z]] [[Category:570]] [[Category:570E]] [[Category:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:Knoppix]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installation_on_ThinkPads_without_CD-ROM_drive&amp;diff=26130</id>
		<title>Installation on ThinkPads without CD-ROM drive</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installation_on_ThinkPads_without_CD-ROM_drive&amp;diff=26130"/>
		<updated>2006-10-31T22:08:17Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* MBR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
Some ThinkPads (e.g. the whole X series) come without a CD-ROM drive by default. Even though there are options to buy a solution like the UltraBase, a full dock or simply an external CD-ROM drive{{footnote|1}}, this is not the cheapest option and might not always be neccessary. Also, with some external CD-ROMs the problem might arise that the ThinkPad is not able to boot from them. See our [[Supported Boot Devices|List of supported boot devices]] for various ThinkPads.&lt;br /&gt;
&lt;br /&gt;
So the question arises how to get your system of choice onto that precious piece of hardware. This page should tell you about the possible solutions.&lt;br /&gt;
&lt;br /&gt;
Since in most cases the installation base packages come on CD, you'll need a second computer, equipped with a CD-ROM drive, for all of those solutions.&lt;br /&gt;
&lt;br /&gt;
Many older ThinkPads came with only a floppy drive and cannot boot from any CD drive at all. For those machines, booting from floppy is the only option. Then one can install from CD, over a network, or from the hard drive.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Installation from USB drive==&lt;br /&gt;
Note: Not all thinkpads have a BIOS that [[Supported_Boot_Devices|supports USB booting]].&lt;br /&gt;
&lt;br /&gt;
This is probably the easiest approach.&lt;br /&gt;
*Connect the USB drive{{footnote|2}} to the host and format it.&lt;br /&gt;
*Get a bootable system and all needed installation files onto the USB drive, i.e. by copying the complete filesystem from your installation CD-ROM to the USB drive. Of course if your USB drive is not big enough for that you'll have to make more sophisticated choices about what to copy and what to leave behind. Here are [http://wiki.debian.org/BootUsb some instructions] for converting a LiveCD .iso image onto a pendrive, and making it bootable.{{footnote|3}} &lt;br /&gt;
&lt;br /&gt;
*Insert the USB drive into the USB port of your ThinkPad.&lt;br /&gt;
*Power on the ThinkPad an press F12 to get to the boot menu. Sometimes (X24 comes to mind) you need to go into the BIOS and change the boot sequence before USB devices are shown after F12.&lt;br /&gt;
*Select the USB drive as boot media and boot.&lt;br /&gt;
*Follow the installation process.&lt;br /&gt;
&lt;br /&gt;
It seems some bioses don't use the code on MBR (sda), or at least skip it when it's blanked and needs a Extended-IPL boot loaderm, can be found here: http://www.tsden.org/ryutaroh/extipl/&lt;br /&gt;
* ''dd if=/dev/zero of=/dev/sda bs=1 count=446&amp;quot;''&lt;br /&gt;
* ''dd if=/usr/lib/extipl/aldebaran.bin of=/dev/sda''&lt;br /&gt;
&lt;br /&gt;
==Installation via network boot==&lt;br /&gt;
Thinkpads support PXE to boot off another system that is connected via [[Ethernet]]. In this case the ThinkPad acts as a network boot client, the other system as server. The idea is to boot a system on the server that the ThinkPad can boot into then by loading all required data directly from that server.&lt;br /&gt;
&lt;br /&gt;
For this to work you will have to either have both the server and the ThinkPad connected in the same subnet of your LAN, or have them connected directly via a crossed Ethernet cable.&lt;br /&gt;
&lt;br /&gt;
===using Windows as a server===&lt;br /&gt;
To get your Thinkpad to boot over a network, you must set up a DHCP and a TFTP server.  For Windows, the freeware program [http://tftpd32.jounin.net TFTPD32] does both.&lt;br /&gt;
*Create a directory that will contain the PXE boot code.&lt;br /&gt;
*Copy the boot code into that directory.  (For a Debian Sarge install, for example, you can find code to initiate a network install under &amp;lt;code&amp;gt;debian/dists/sarge/main/installer-i386/current/images/netboot/&amp;lt;/code&amp;gt; from a Debian mirror -- copy files to simulate symlinks for &amp;lt;code&amp;gt;pxelinux.0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pxelinux.cfg/&amp;lt;/code&amp;gt;)&lt;br /&gt;
*Launch the TFTPD32 program.&lt;br /&gt;
*&amp;quot;Browse&amp;quot; to set the current directory to the directory containing the PXE boot code (i.e. the directory you created in the first step, above).&lt;br /&gt;
*On the DHCP server tab, set:&lt;br /&gt;
**&amp;lt;code&amp;gt;IP pool starting address&amp;lt;/code&amp;gt; to something appropriate for your network&lt;br /&gt;
**&amp;lt;code&amp;gt;Size of pool&amp;lt;/code&amp;gt; to a non-zero value (all you really need is 1)&lt;br /&gt;
**&amp;lt;code&amp;gt;Boot file&amp;lt;/code&amp;gt; to the PXE boot image (from Debian, the filename is &amp;lt;code&amp;gt;pxelinux.0&amp;lt;/code&amp;gt;)&lt;br /&gt;
**&amp;lt;code&amp;gt;WINS/DNS Server&amp;lt;/code&amp;gt; to the DNS server used by your network&lt;br /&gt;
**&amp;lt;code&amp;gt;Default router&amp;lt;/code&amp;gt; to the IP of your default gateway&lt;br /&gt;
**&amp;lt;code&amp;gt;Mask&amp;lt;/code&amp;gt; to your network's netmask&lt;br /&gt;
**&amp;lt;code&amp;gt;Domain Name&amp;lt;/code&amp;gt; to your network's domain&lt;br /&gt;
*Disable any other DHCP servers on your network&lt;br /&gt;
*Boot your Thinkpad, and press {{key|F12}} to select an alternate boot device&lt;br /&gt;
*Use &amp;quot;&amp;lt;code&amp;gt;Intel(R) Boot Agent Version 4.0.17&amp;lt;/code&amp;gt;&amp;quot; (or similar -- on the Transnote used to make this guide, &amp;quot;&amp;lt;code&amp;gt;Network Boot&amp;lt;/code&amp;gt;&amp;quot; did not work while the Boot Agent option did)&lt;br /&gt;
The TFTPD32 server window should show activity as the Thinkpad downloads files.&lt;br /&gt;
Once the first stage has installed and the Thinkpad is ready to boot from its own hard drive, shut down TFTPD32 and re-enable your permanent DHCP server.&lt;br /&gt;
&lt;br /&gt;
===using [[:Category:Knoppix|Knoppix]] on the server side===&lt;br /&gt;
*Insert the Knoppix CD into the server and boot it up.&lt;br /&gt;
*Make sure to boot with the 2.6 kernel by giving the &amp;lt;code&amp;gt;kernel26&amp;lt;/code&amp;gt; boot option.&lt;br /&gt;
*Once your KDE desktop is loaded, look in the K-Menu hierarchy for the link to the terminal server setup.&lt;br /&gt;
*Launch the Terminal Server and make it use the appropriate network device.&lt;br /&gt;
*Power on your ThinkPad and press F12 to get to the boot menu.&lt;br /&gt;
*Select the ThinkPads network adapter as the boot media.&lt;br /&gt;
*The ThinkPad should now boot from the Knoppix Terminal Server directly.&lt;br /&gt;
&lt;br /&gt;
===Using any Linux on the server side===&lt;br /&gt;
{{Todo|needs better formating, maybe a list where to find the kernel/initrd images on other distros and a hint to speed up booting}}&lt;br /&gt;
&lt;br /&gt;
# TFTP Server&lt;br /&gt;
#* Download and install an tftp Server&lt;br /&gt;
#* Configure it to serve {{path|/tftpboot}}&lt;br /&gt;
# Get the kernel and initrd image from your distribution&lt;br /&gt;
#* For fedora-core they are in {{path|os/images/pxeboot}}&lt;br /&gt;
#* Copy both to {{path|/tftpboot/vmlinuz}} resp. {{path|/tftpboot/initrd.img}}&lt;br /&gt;
# [http://www.kernel.org/pub/linux/boot/syslinux/ Bootloader]&lt;br /&gt;
#* Download the current syslinux-X.YZ.tar.bz2 tarball&lt;br /&gt;
#* Copy the included pxelinux.0 to {{path|/tftpboot/pxelinux.0}}&lt;br /&gt;
#* Create a directory for the configuration with {{cmdroot|mkdir /tftpboot/pxelinux.cfg}}&lt;br /&gt;
#* Create the file {{path|/tftpboot/pxelinux.cfg/default}} with the following contents:&lt;br /&gt;
 DEFAULT install&lt;br /&gt;
 PROMPT 1&lt;br /&gt;
 TIMEOUT 0&lt;br /&gt;
 LABEL install&lt;br /&gt;
         kernel vmlinuz&lt;br /&gt;
         append initrd.img  --&lt;br /&gt;
# DHCP Server&lt;br /&gt;
#* Download and install an DHCP Server&lt;br /&gt;
#* Configure it to for your Thinkpad, the following configuration assumes that the MAC-address of your Thinkpad is DE:AD:BE:EF:00:00 and should use the IP 192.168.0.2 with namesever/router/tftpserver 192.168.0.1&lt;br /&gt;
 allow booting;&lt;br /&gt;
 allow bootp;&lt;br /&gt;
 host thinkpad {&lt;br /&gt;
    hardware ethernet DE:AD:BE:EF:00:00;&lt;br /&gt;
    fixed-address 192.168.0.2;&lt;br /&gt;
    option domain-name-servers 192.168.0.1;&lt;br /&gt;
    option routers 192.168.0.1;&lt;br /&gt;
    default-lease-time 28800;&lt;br /&gt;
    filename &amp;quot;pxelinux.0&amp;quot;;&lt;br /&gt;
    next-server 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
#* Now you can boot your thinkpad via lan&lt;br /&gt;
&lt;br /&gt;
==Installation from the internal harddrive==&lt;br /&gt;
The idea here is to have all required files allready on the internal harddrive when you power up your ThinkPad for installation, including of course a minimal system to boot up and start the installation process.&lt;br /&gt;
&lt;br /&gt;
Convenient, but how do you get the files there?&lt;br /&gt;
*One option is to copy them via network boot (see above).&lt;br /&gt;
*Some Linux distributions offer ways to download the installation files from a FTP server and to choose this directory as installation source instead of a CD-ROM.&lt;br /&gt;
*A second way, if you already have a 'working' copy of DOS or MS Windows installed, is to start the installer from loadlin or GRUB. This is detailed [http://marc.herbert.free.fr/linux/win2linstall.html here].&lt;br /&gt;
*Another one is to remove the harddrive from the ThinkPad and connect it to the other machine. Again, this can be achieved in several ways:&lt;br /&gt;
**putting the harddrive into an UltraBay secondary HDD adapter of a second ThinkPad&lt;br /&gt;
**putting the harddrive into an external casing and connect it to the second machine via USB, PCMCIA or whatever&lt;br /&gt;
**connecting the harddrive via a 2.5&amp;quot; (laptop) to 3.5&amp;quot; (desktop) harddrive adapter&lt;br /&gt;
&lt;br /&gt;
Follow one of the following instructions.&lt;br /&gt;
&lt;br /&gt;
===Installing [[:Category:Windows|Windows]] 2000 or XP===&lt;br /&gt;
*Attach the harddrive to the host computer and install a minimal bootable DOS system i.e. by booting a Win98 Emergency Boot Disk and performing the command &amp;quot;SYS X:&amp;quot; (where X = the laptop's harddrive).&lt;br /&gt;
*Copy FDISK.EXE to the laptop harddrive.&lt;br /&gt;
*Return the harddrive to the laptop and boot to DOS. (If you have Win98 installed by default, you can skip the first two steps and simply reboot in Windows to DOS.)&lt;br /&gt;
*Run FDISK and set up your new Windows system partition on this laptop. (If you do not do this on the laptop, after reboot you will receive the infamous &amp;quot;NTLDR IS MISSING&amp;quot; error. This error may still occur if the partition is greater than 7.8gb in size)&lt;br /&gt;
*Then return the drive to the host and format the drive as FAT32. (DO NOT format as NTFS.)&lt;br /&gt;
*Repeat the &amp;quot;SYS X:&amp;quot; step to make the new partition bootable.&lt;br /&gt;
*Copy Himem.sys and Config.sys, too. Otherwise SMARTDRIVE.EXE won't run&lt;br /&gt;
*Get SMARTDRV.EXE from the internet and copy it to your Thinkpads harddrive.&lt;br /&gt;
*Also, from the Win2K or WinXP CD, copy the I386 folder to the harddrive.&lt;br /&gt;
*Return the laptop's harddrive to the Thinkpad one final time and boot to DOS.&lt;br /&gt;
*Run SMARTDRV.EXE first, then change directories to I386 and run WINNT.EXE, this will allow the installation to begin.&lt;br /&gt;
*During installation, choose NOT to format the destination partition, since it contains the installation files. If you want that filesystem to be NTFS you can convert it after installation from within Windows.&lt;br /&gt;
&lt;br /&gt;
==Installation from Diskette==&lt;br /&gt;
===Installing from CD===&lt;br /&gt;
Many distributions have software on CD that will make a boot floppy that will allow you to install from an unbootable CD drive.&lt;br /&gt;
&lt;br /&gt;
===Installing over a network===&lt;br /&gt;
Some distributions have a set of diskettes that will allow you to boot a machine, enable a network device and start installation over a network. For example, {{Slackware}} supports installing via an NFS mount. An unofficial add-on adds an option to install over FTP.&lt;br /&gt;
&lt;br /&gt;
===Installing from floppy===&lt;br /&gt;
Some distributions did allow for a complete installation from diskette. As the size of distributions and the number of required diskettes has grown, and the ubiquity of optical storage increased, support for floppy installation has diminished.&lt;br /&gt;
&lt;br /&gt;
However, there are still some Linux distributions that fit on as few as one diskette - with very limited functionality, of course.&lt;br /&gt;
&lt;br /&gt;
==Installation from an ISO image==&lt;br /&gt;
Some distributions offer a way of installing directly from the downloadable ISO image, residing on your harddisk. Examples are VectorLinux 5.1 and {{SUSE}} 10. The individual distributions installation manuals will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
*[http://www.gentoo.org/doc/en/altinstall.xml Gentoo alternative installation method HOWTO]&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#External CD-ROM drives typically are connected through USB or [[PCMCIA]]. Be aware that not all of these drives are [[Supported Boot Devices|capable of booting]]. USB connected drives are more likely to be bootable on a ThinkPad than PCMCIA connected ones.&lt;br /&gt;
#USB drive here means any kind of USB connected bootable data storage device, including external harddisk drives, memory card readers or pendrives.&lt;br /&gt;
#Most USB keys are already bootable. If it won't work, use lilo to write to the USB key's MBR: See the section &amp;quot;Master Boot Record&amp;quot; &lt;br /&gt;
[http://wiki.debian.org/BootUsb here].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:TransNote]] [[Category:560]] [[Category:560E]] [[Category:560X]] [[Category:560Z]] [[Category:570]] [[Category:570E]] [[Category:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:Knoppix]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installation_on_ThinkPads_without_CD-ROM_drive&amp;diff=26129</id>
		<title>Installation on ThinkPads without CD-ROM drive</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installation_on_ThinkPads_without_CD-ROM_drive&amp;diff=26129"/>
		<updated>2006-10-31T22:06:51Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* How to take a bootable iso image, and transfer it to USB key. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
Some ThinkPads (e.g. the whole X series) come without a CD-ROM drive by default. Even though there are options to buy a solution like the UltraBase, a full dock or simply an external CD-ROM drive{{footnote|1}}, this is not the cheapest option and might not always be neccessary. Also, with some external CD-ROMs the problem might arise that the ThinkPad is not able to boot from them. See our [[Supported Boot Devices|List of supported boot devices]] for various ThinkPads.&lt;br /&gt;
&lt;br /&gt;
So the question arises how to get your system of choice onto that precious piece of hardware. This page should tell you about the possible solutions.&lt;br /&gt;
&lt;br /&gt;
Since in most cases the installation base packages come on CD, you'll need a second computer, equipped with a CD-ROM drive, for all of those solutions.&lt;br /&gt;
&lt;br /&gt;
Many older ThinkPads came with only a floppy drive and cannot boot from any CD drive at all. For those machines, booting from floppy is the only option. Then one can install from CD, over a network, or from the hard drive.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Installation from USB drive==&lt;br /&gt;
Note: Not all thinkpads have a BIOS that [[Supported_Boot_Devices|supports USB booting]].&lt;br /&gt;
&lt;br /&gt;
This is probably the easiest approach.&lt;br /&gt;
*Connect the USB drive{{footnote|2}} to the host and format it.&lt;br /&gt;
*Get a bootable system and all needed installation files onto the USB drive, i.e. by copying the complete filesystem from your installation CD-ROM to the USB drive. Of course if your USB drive is not big enough for that you'll have to make more sophisticated choices about what to copy and what to leave behind. Here are [http://wiki.debian.org/BootUsb some instructions] for converting a LiveCD .iso image onto a pendrive, and making it bootable.{{footnote|3}} &lt;br /&gt;
&lt;br /&gt;
*Insert the USB drive into the USB port of your ThinkPad.&lt;br /&gt;
*Power on the ThinkPad an press F12 to get to the boot menu. Sometimes (X24 comes to mind) you need to go into the BIOS and change the boot sequence before USB devices are shown after F12.&lt;br /&gt;
*Select the USB drive as boot media and boot.&lt;br /&gt;
*Follow the installation process.&lt;br /&gt;
&lt;br /&gt;
It seems some bioses don't use the code on MBR (sda), or at least skip it when it's blanked and needs a Extended-IPL boot loaderm, can be found here: http://www.tsden.org/ryutaroh/extipl/&lt;br /&gt;
* ''dd if=/dev/zero of=/dev/sda bs=1 count=446&amp;quot;''&lt;br /&gt;
* ''dd if=/usr/lib/extipl/aldebaran.bin of=/dev/sda''&lt;br /&gt;
&lt;br /&gt;
==Installation via network boot==&lt;br /&gt;
Thinkpads support PXE to boot off another system that is connected via [[Ethernet]]. In this case the ThinkPad acts as a network boot client, the other system as server. The idea is to boot a system on the server that the ThinkPad can boot into then by loading all required data directly from that server.&lt;br /&gt;
&lt;br /&gt;
For this to work you will have to either have both the server and the ThinkPad connected in the same subnet of your LAN, or have them connected directly via a crossed Ethernet cable.&lt;br /&gt;
&lt;br /&gt;
===using Windows as a server===&lt;br /&gt;
To get your Thinkpad to boot over a network, you must set up a DHCP and a TFTP server.  For Windows, the freeware program [http://tftpd32.jounin.net TFTPD32] does both.&lt;br /&gt;
*Create a directory that will contain the PXE boot code.&lt;br /&gt;
*Copy the boot code into that directory.  (For a Debian Sarge install, for example, you can find code to initiate a network install under &amp;lt;code&amp;gt;debian/dists/sarge/main/installer-i386/current/images/netboot/&amp;lt;/code&amp;gt; from a Debian mirror -- copy files to simulate symlinks for &amp;lt;code&amp;gt;pxelinux.0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pxelinux.cfg/&amp;lt;/code&amp;gt;)&lt;br /&gt;
*Launch the TFTPD32 program.&lt;br /&gt;
*&amp;quot;Browse&amp;quot; to set the current directory to the directory containing the PXE boot code (i.e. the directory you created in the first step, above).&lt;br /&gt;
*On the DHCP server tab, set:&lt;br /&gt;
**&amp;lt;code&amp;gt;IP pool starting address&amp;lt;/code&amp;gt; to something appropriate for your network&lt;br /&gt;
**&amp;lt;code&amp;gt;Size of pool&amp;lt;/code&amp;gt; to a non-zero value (all you really need is 1)&lt;br /&gt;
**&amp;lt;code&amp;gt;Boot file&amp;lt;/code&amp;gt; to the PXE boot image (from Debian, the filename is &amp;lt;code&amp;gt;pxelinux.0&amp;lt;/code&amp;gt;)&lt;br /&gt;
**&amp;lt;code&amp;gt;WINS/DNS Server&amp;lt;/code&amp;gt; to the DNS server used by your network&lt;br /&gt;
**&amp;lt;code&amp;gt;Default router&amp;lt;/code&amp;gt; to the IP of your default gateway&lt;br /&gt;
**&amp;lt;code&amp;gt;Mask&amp;lt;/code&amp;gt; to your network's netmask&lt;br /&gt;
**&amp;lt;code&amp;gt;Domain Name&amp;lt;/code&amp;gt; to your network's domain&lt;br /&gt;
*Disable any other DHCP servers on your network&lt;br /&gt;
*Boot your Thinkpad, and press {{key|F12}} to select an alternate boot device&lt;br /&gt;
*Use &amp;quot;&amp;lt;code&amp;gt;Intel(R) Boot Agent Version 4.0.17&amp;lt;/code&amp;gt;&amp;quot; (or similar -- on the Transnote used to make this guide, &amp;quot;&amp;lt;code&amp;gt;Network Boot&amp;lt;/code&amp;gt;&amp;quot; did not work while the Boot Agent option did)&lt;br /&gt;
The TFTPD32 server window should show activity as the Thinkpad downloads files.&lt;br /&gt;
Once the first stage has installed and the Thinkpad is ready to boot from its own hard drive, shut down TFTPD32 and re-enable your permanent DHCP server.&lt;br /&gt;
&lt;br /&gt;
===using [[:Category:Knoppix|Knoppix]] on the server side===&lt;br /&gt;
*Insert the Knoppix CD into the server and boot it up.&lt;br /&gt;
*Make sure to boot with the 2.6 kernel by giving the &amp;lt;code&amp;gt;kernel26&amp;lt;/code&amp;gt; boot option.&lt;br /&gt;
*Once your KDE desktop is loaded, look in the K-Menu hierarchy for the link to the terminal server setup.&lt;br /&gt;
*Launch the Terminal Server and make it use the appropriate network device.&lt;br /&gt;
*Power on your ThinkPad and press F12 to get to the boot menu.&lt;br /&gt;
*Select the ThinkPads network adapter as the boot media.&lt;br /&gt;
*The ThinkPad should now boot from the Knoppix Terminal Server directly.&lt;br /&gt;
&lt;br /&gt;
===Using any Linux on the server side===&lt;br /&gt;
{{Todo|needs better formating, maybe a list where to find the kernel/initrd images on other distros and a hint to speed up booting}}&lt;br /&gt;
&lt;br /&gt;
# TFTP Server&lt;br /&gt;
#* Download and install an tftp Server&lt;br /&gt;
#* Configure it to serve {{path|/tftpboot}}&lt;br /&gt;
# Get the kernel and initrd image from your distribution&lt;br /&gt;
#* For fedora-core they are in {{path|os/images/pxeboot}}&lt;br /&gt;
#* Copy both to {{path|/tftpboot/vmlinuz}} resp. {{path|/tftpboot/initrd.img}}&lt;br /&gt;
# [http://www.kernel.org/pub/linux/boot/syslinux/ Bootloader]&lt;br /&gt;
#* Download the current syslinux-X.YZ.tar.bz2 tarball&lt;br /&gt;
#* Copy the included pxelinux.0 to {{path|/tftpboot/pxelinux.0}}&lt;br /&gt;
#* Create a directory for the configuration with {{cmdroot|mkdir /tftpboot/pxelinux.cfg}}&lt;br /&gt;
#* Create the file {{path|/tftpboot/pxelinux.cfg/default}} with the following contents:&lt;br /&gt;
 DEFAULT install&lt;br /&gt;
 PROMPT 1&lt;br /&gt;
 TIMEOUT 0&lt;br /&gt;
 LABEL install&lt;br /&gt;
         kernel vmlinuz&lt;br /&gt;
         append initrd.img  --&lt;br /&gt;
# DHCP Server&lt;br /&gt;
#* Download and install an DHCP Server&lt;br /&gt;
#* Configure it to for your Thinkpad, the following configuration assumes that the MAC-address of your Thinkpad is DE:AD:BE:EF:00:00 and should use the IP 192.168.0.2 with namesever/router/tftpserver 192.168.0.1&lt;br /&gt;
 allow booting;&lt;br /&gt;
 allow bootp;&lt;br /&gt;
 host thinkpad {&lt;br /&gt;
    hardware ethernet DE:AD:BE:EF:00:00;&lt;br /&gt;
    fixed-address 192.168.0.2;&lt;br /&gt;
    option domain-name-servers 192.168.0.1;&lt;br /&gt;
    option routers 192.168.0.1;&lt;br /&gt;
    default-lease-time 28800;&lt;br /&gt;
    filename &amp;quot;pxelinux.0&amp;quot;;&lt;br /&gt;
    next-server 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
#* Now you can boot your thinkpad via lan&lt;br /&gt;
&lt;br /&gt;
==Installation from the internal harddrive==&lt;br /&gt;
The idea here is to have all required files allready on the internal harddrive when you power up your ThinkPad for installation, including of course a minimal system to boot up and start the installation process.&lt;br /&gt;
&lt;br /&gt;
Convenient, but how do you get the files there?&lt;br /&gt;
*One option is to copy them via network boot (see above).&lt;br /&gt;
*Some Linux distributions offer ways to download the installation files from a FTP server and to choose this directory as installation source instead of a CD-ROM.&lt;br /&gt;
*A second way, if you already have a 'working' copy of DOS or MS Windows installed, is to start the installer from loadlin or GRUB. This is detailed [http://marc.herbert.free.fr/linux/win2linstall.html here].&lt;br /&gt;
*Another one is to remove the harddrive from the ThinkPad and connect it to the other machine. Again, this can be achieved in several ways:&lt;br /&gt;
**putting the harddrive into an UltraBay secondary HDD adapter of a second ThinkPad&lt;br /&gt;
**putting the harddrive into an external casing and connect it to the second machine via USB, PCMCIA or whatever&lt;br /&gt;
**connecting the harddrive via a 2.5&amp;quot; (laptop) to 3.5&amp;quot; (desktop) harddrive adapter&lt;br /&gt;
&lt;br /&gt;
Follow one of the following instructions.&lt;br /&gt;
&lt;br /&gt;
===Installing [[:Category:Windows|Windows]] 2000 or XP===&lt;br /&gt;
*Attach the harddrive to the host computer and install a minimal bootable DOS system i.e. by booting a Win98 Emergency Boot Disk and performing the command &amp;quot;SYS X:&amp;quot; (where X = the laptop's harddrive).&lt;br /&gt;
*Copy FDISK.EXE to the laptop harddrive.&lt;br /&gt;
*Return the harddrive to the laptop and boot to DOS. (If you have Win98 installed by default, you can skip the first two steps and simply reboot in Windows to DOS.)&lt;br /&gt;
*Run FDISK and set up your new Windows system partition on this laptop. (If you do not do this on the laptop, after reboot you will receive the infamous &amp;quot;NTLDR IS MISSING&amp;quot; error. This error may still occur if the partition is greater than 7.8gb in size)&lt;br /&gt;
*Then return the drive to the host and format the drive as FAT32. (DO NOT format as NTFS.)&lt;br /&gt;
*Repeat the &amp;quot;SYS X:&amp;quot; step to make the new partition bootable.&lt;br /&gt;
*Copy Himem.sys and Config.sys, too. Otherwise SMARTDRIVE.EXE won't run&lt;br /&gt;
*Get SMARTDRV.EXE from the internet and copy it to your Thinkpads harddrive.&lt;br /&gt;
*Also, from the Win2K or WinXP CD, copy the I386 folder to the harddrive.&lt;br /&gt;
*Return the laptop's harddrive to the Thinkpad one final time and boot to DOS.&lt;br /&gt;
*Run SMARTDRV.EXE first, then change directories to I386 and run WINNT.EXE, this will allow the installation to begin.&lt;br /&gt;
*During installation, choose NOT to format the destination partition, since it contains the installation files. If you want that filesystem to be NTFS you can convert it after installation from within Windows.&lt;br /&gt;
&lt;br /&gt;
==Installation from Diskette==&lt;br /&gt;
===Installing from CD===&lt;br /&gt;
Many distributions have software on CD that will make a boot floppy that will allow you to install from an unbootable CD drive.&lt;br /&gt;
&lt;br /&gt;
===Installing over a network===&lt;br /&gt;
Some distributions have a set of diskettes that will allow you to boot a machine, enable a network device and start installation over a network. For example, {{Slackware}} supports installing via an NFS mount. An unofficial add-on adds an option to install over FTP.&lt;br /&gt;
&lt;br /&gt;
===Installing from floppy===&lt;br /&gt;
Some distributions did allow for a complete installation from diskette. As the size of distributions and the number of required diskettes has grown, and the ubiquity of optical storage increased, support for floppy installation has diminished.&lt;br /&gt;
&lt;br /&gt;
However, there are still some Linux distributions that fit on as few as one diskette - with very limited functionality, of course.&lt;br /&gt;
&lt;br /&gt;
==Installation from an ISO image==&lt;br /&gt;
Some distributions offer a way of installing directly from the downloadable ISO image, residing on your harddisk. Examples are VectorLinux 5.1 and {{SUSE}} 10. The individual distributions installation manuals will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
*[http://www.gentoo.org/doc/en/altinstall.xml Gentoo alternative installation method HOWTO]&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#External CD-ROM drives typically are connected through USB or [[PCMCIA]]. Be aware that not all of these drives are [[Supported Boot Devices|capable of booting]]. USB connected drives are more likely to be bootable on a ThinkPad than PCMCIA connected ones.&lt;br /&gt;
#USB drive here means any kind of USB connected bootable data storage device, including external harddisk drives, memory card readers or pendrives.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:TransNote]] [[Category:560]] [[Category:560E]] [[Category:560X]] [[Category:560Z]] [[Category:570]] [[Category:570E]] [[Category:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:Knoppix]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installation_on_ThinkPads_without_CD-ROM_drive&amp;diff=26128</id>
		<title>Installation on ThinkPads without CD-ROM drive</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installation_on_ThinkPads_without_CD-ROM_drive&amp;diff=26128"/>
		<updated>2006-10-31T22:00:23Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Memory stick -&amp;gt; Pendrive. (A &amp;quot;memory stick&amp;quot; is a Sony specific thing, which doesn't have USB anyway)*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
Some ThinkPads (e.g. the whole X series) come without a CD-ROM drive by default. Even though there are options to buy a solution like the UltraBase, a full dock or simply an external CD-ROM drive{{footnote|1}}, this is not the cheapest option and might not always be neccessary. Also, with some external CD-ROMs the problem might arise that the ThinkPad is not able to boot from them. See our [[Supported Boot Devices|List of supported boot devices]] for various ThinkPads.&lt;br /&gt;
&lt;br /&gt;
So the question arises how to get your system of choice onto that precious piece of hardware. This page should tell you about the possible solutions.&lt;br /&gt;
&lt;br /&gt;
Since in most cases the installation base packages come on CD, you'll need a second computer, equipped with a CD-ROM drive, for all of those solutions.&lt;br /&gt;
&lt;br /&gt;
Many older ThinkPads came with only a floppy drive and cannot boot from any CD drive at all. For those machines, booting from floppy is the only option. Then one can install from CD, over a network, or from the hard drive.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Installation from USB drive==&lt;br /&gt;
Note: Not all thinkpads have a BIOS that [[Supported_Boot_Devices|supports USB booting]].&lt;br /&gt;
&lt;br /&gt;
This is probably the easiest approach.&lt;br /&gt;
*Connect the USB drive{{footnote|2}} to the host and format it.&lt;br /&gt;
*Get a bootable system and all needed installation files onto the USB drive, i.e. by copying the complete filesystem from your installation CD-ROM to the USB drive. Of course if your USB drive is not big enough for that you'll have to make more sofisticated choices about what to copy and what to leave behind.&lt;br /&gt;
*Insert the USB drive into the USB port of your ThinkPad.&lt;br /&gt;
*Power on the ThinkPad an press F12 to get to the boot menu. Sometimes (X24 comes to mind) you need to go into the BIOS and change the boot sequence before USB devices are shown after F12.&lt;br /&gt;
*Select the USB drive as boot media and boot.&lt;br /&gt;
*Follow the installation process.&lt;br /&gt;
&lt;br /&gt;
It seems some bioses don't use the code on MBR (sda), or at least skip it when it's blanked and needs a Extended-IPL boot loaderm, can be found here: http://www.tsden.org/ryutaroh/extipl/&lt;br /&gt;
* ''dd if=/dev/zero of=/dev/sda bs=1 count=446&amp;quot;''&lt;br /&gt;
* ''dd if=/usr/lib/extipl/aldebaran.bin of=/dev/sda''&lt;br /&gt;
&lt;br /&gt;
==Installation via network boot==&lt;br /&gt;
Thinkpads support PXE to boot off another system that is connected via [[Ethernet]]. In this case the ThinkPad acts as a network boot client, the other system as server. The idea is to boot a system on the server that the ThinkPad can boot into then by loading all required data directly from that server.&lt;br /&gt;
&lt;br /&gt;
For this to work you will have to either have both the server and the ThinkPad connected in the same subnet of your LAN, or have them connected directly via a crossed Ethernet cable.&lt;br /&gt;
&lt;br /&gt;
===using Windows as a server===&lt;br /&gt;
To get your Thinkpad to boot over a network, you must set up a DHCP and a TFTP server.  For Windows, the freeware program [http://tftpd32.jounin.net TFTPD32] does both.&lt;br /&gt;
*Create a directory that will contain the PXE boot code.&lt;br /&gt;
*Copy the boot code into that directory.  (For a Debian Sarge install, for example, you can find code to initiate a network install under &amp;lt;code&amp;gt;debian/dists/sarge/main/installer-i386/current/images/netboot/&amp;lt;/code&amp;gt; from a Debian mirror -- copy files to simulate symlinks for &amp;lt;code&amp;gt;pxelinux.0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pxelinux.cfg/&amp;lt;/code&amp;gt;)&lt;br /&gt;
*Launch the TFTPD32 program.&lt;br /&gt;
*&amp;quot;Browse&amp;quot; to set the current directory to the directory containing the PXE boot code (i.e. the directory you created in the first step, above).&lt;br /&gt;
*On the DHCP server tab, set:&lt;br /&gt;
**&amp;lt;code&amp;gt;IP pool starting address&amp;lt;/code&amp;gt; to something appropriate for your network&lt;br /&gt;
**&amp;lt;code&amp;gt;Size of pool&amp;lt;/code&amp;gt; to a non-zero value (all you really need is 1)&lt;br /&gt;
**&amp;lt;code&amp;gt;Boot file&amp;lt;/code&amp;gt; to the PXE boot image (from Debian, the filename is &amp;lt;code&amp;gt;pxelinux.0&amp;lt;/code&amp;gt;)&lt;br /&gt;
**&amp;lt;code&amp;gt;WINS/DNS Server&amp;lt;/code&amp;gt; to the DNS server used by your network&lt;br /&gt;
**&amp;lt;code&amp;gt;Default router&amp;lt;/code&amp;gt; to the IP of your default gateway&lt;br /&gt;
**&amp;lt;code&amp;gt;Mask&amp;lt;/code&amp;gt; to your network's netmask&lt;br /&gt;
**&amp;lt;code&amp;gt;Domain Name&amp;lt;/code&amp;gt; to your network's domain&lt;br /&gt;
*Disable any other DHCP servers on your network&lt;br /&gt;
*Boot your Thinkpad, and press {{key|F12}} to select an alternate boot device&lt;br /&gt;
*Use &amp;quot;&amp;lt;code&amp;gt;Intel(R) Boot Agent Version 4.0.17&amp;lt;/code&amp;gt;&amp;quot; (or similar -- on the Transnote used to make this guide, &amp;quot;&amp;lt;code&amp;gt;Network Boot&amp;lt;/code&amp;gt;&amp;quot; did not work while the Boot Agent option did)&lt;br /&gt;
The TFTPD32 server window should show activity as the Thinkpad downloads files.&lt;br /&gt;
Once the first stage has installed and the Thinkpad is ready to boot from its own hard drive, shut down TFTPD32 and re-enable your permanent DHCP server.&lt;br /&gt;
&lt;br /&gt;
===using [[:Category:Knoppix|Knoppix]] on the server side===&lt;br /&gt;
*Insert the Knoppix CD into the server and boot it up.&lt;br /&gt;
*Make sure to boot with the 2.6 kernel by giving the &amp;lt;code&amp;gt;kernel26&amp;lt;/code&amp;gt; boot option.&lt;br /&gt;
*Once your KDE desktop is loaded, look in the K-Menu hierarchy for the link to the terminal server setup.&lt;br /&gt;
*Launch the Terminal Server and make it use the appropriate network device.&lt;br /&gt;
*Power on your ThinkPad and press F12 to get to the boot menu.&lt;br /&gt;
*Select the ThinkPads network adapter as the boot media.&lt;br /&gt;
*The ThinkPad should now boot from the Knoppix Terminal Server directly.&lt;br /&gt;
&lt;br /&gt;
===Using any Linux on the server side===&lt;br /&gt;
{{Todo|needs better formating, maybe a list where to find the kernel/initrd images on other distros and a hint to speed up booting}}&lt;br /&gt;
&lt;br /&gt;
# TFTP Server&lt;br /&gt;
#* Download and install an tftp Server&lt;br /&gt;
#* Configure it to serve {{path|/tftpboot}}&lt;br /&gt;
# Get the kernel and initrd image from your distribution&lt;br /&gt;
#* For fedora-core they are in {{path|os/images/pxeboot}}&lt;br /&gt;
#* Copy both to {{path|/tftpboot/vmlinuz}} resp. {{path|/tftpboot/initrd.img}}&lt;br /&gt;
# [http://www.kernel.org/pub/linux/boot/syslinux/ Bootloader]&lt;br /&gt;
#* Download the current syslinux-X.YZ.tar.bz2 tarball&lt;br /&gt;
#* Copy the included pxelinux.0 to {{path|/tftpboot/pxelinux.0}}&lt;br /&gt;
#* Create a directory for the configuration with {{cmdroot|mkdir /tftpboot/pxelinux.cfg}}&lt;br /&gt;
#* Create the file {{path|/tftpboot/pxelinux.cfg/default}} with the following contents:&lt;br /&gt;
 DEFAULT install&lt;br /&gt;
 PROMPT 1&lt;br /&gt;
 TIMEOUT 0&lt;br /&gt;
 LABEL install&lt;br /&gt;
         kernel vmlinuz&lt;br /&gt;
         append initrd.img  --&lt;br /&gt;
# DHCP Server&lt;br /&gt;
#* Download and install an DHCP Server&lt;br /&gt;
#* Configure it to for your Thinkpad, the following configuration assumes that the MAC-address of your Thinkpad is DE:AD:BE:EF:00:00 and should use the IP 192.168.0.2 with namesever/router/tftpserver 192.168.0.1&lt;br /&gt;
 allow booting;&lt;br /&gt;
 allow bootp;&lt;br /&gt;
 host thinkpad {&lt;br /&gt;
    hardware ethernet DE:AD:BE:EF:00:00;&lt;br /&gt;
    fixed-address 192.168.0.2;&lt;br /&gt;
    option domain-name-servers 192.168.0.1;&lt;br /&gt;
    option routers 192.168.0.1;&lt;br /&gt;
    default-lease-time 28800;&lt;br /&gt;
    filename &amp;quot;pxelinux.0&amp;quot;;&lt;br /&gt;
    next-server 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
#* Now you can boot your thinkpad via lan&lt;br /&gt;
&lt;br /&gt;
==Installation from the internal harddrive==&lt;br /&gt;
The idea here is to have all required files allready on the internal harddrive when you power up your ThinkPad for installation, including of course a minimal system to boot up and start the installation process.&lt;br /&gt;
&lt;br /&gt;
Convenient, but how do you get the files there?&lt;br /&gt;
*One option is to copy them via network boot (see above).&lt;br /&gt;
*Some Linux distributions offer ways to download the installation files from a FTP server and to choose this directory as installation source instead of a CD-ROM.&lt;br /&gt;
*A second way, if you already have a 'working' copy of DOS or MS Windows installed, is to start the installer from loadlin or GRUB. This is detailed [http://marc.herbert.free.fr/linux/win2linstall.html here].&lt;br /&gt;
*Another one is to remove the harddrive from the ThinkPad and connect it to the other machine. Again, this can be achieved in several ways:&lt;br /&gt;
**putting the harddrive into an UltraBay secondary HDD adapter of a second ThinkPad&lt;br /&gt;
**putting the harddrive into an external casing and connect it to the second machine via USB, PCMCIA or whatever&lt;br /&gt;
**connecting the harddrive via a 2.5&amp;quot; (laptop) to 3.5&amp;quot; (desktop) harddrive adapter&lt;br /&gt;
&lt;br /&gt;
Follow one of the following instructions.&lt;br /&gt;
&lt;br /&gt;
===Installing [[:Category:Windows|Windows]] 2000 or XP===&lt;br /&gt;
*Attach the harddrive to the host computer and install a minimal bootable DOS system i.e. by booting a Win98 Emergency Boot Disk and performing the command &amp;quot;SYS X:&amp;quot; (where X = the laptop's harddrive).&lt;br /&gt;
*Copy FDISK.EXE to the laptop harddrive.&lt;br /&gt;
*Return the harddrive to the laptop and boot to DOS. (If you have Win98 installed by default, you can skip the first two steps and simply reboot in Windows to DOS.)&lt;br /&gt;
*Run FDISK and set up your new Windows system partition on this laptop. (If you do not do this on the laptop, after reboot you will receive the infamous &amp;quot;NTLDR IS MISSING&amp;quot; error. This error may still occur if the partition is greater than 7.8gb in size)&lt;br /&gt;
*Then return the drive to the host and format the drive as FAT32. (DO NOT format as NTFS.)&lt;br /&gt;
*Repeat the &amp;quot;SYS X:&amp;quot; step to make the new partition bootable.&lt;br /&gt;
*Copy Himem.sys and Config.sys, too. Otherwise SMARTDRIVE.EXE won't run&lt;br /&gt;
*Get SMARTDRV.EXE from the internet and copy it to your Thinkpads harddrive.&lt;br /&gt;
*Also, from the Win2K or WinXP CD, copy the I386 folder to the harddrive.&lt;br /&gt;
*Return the laptop's harddrive to the Thinkpad one final time and boot to DOS.&lt;br /&gt;
*Run SMARTDRV.EXE first, then change directories to I386 and run WINNT.EXE, this will allow the installation to begin.&lt;br /&gt;
*During installation, choose NOT to format the destination partition, since it contains the installation files. If you want that filesystem to be NTFS you can convert it after installation from within Windows.&lt;br /&gt;
&lt;br /&gt;
==Installation from Diskette==&lt;br /&gt;
===Installing from CD===&lt;br /&gt;
Many distributions have software on CD that will make a boot floppy that will allow you to install from an unbootable CD drive.&lt;br /&gt;
&lt;br /&gt;
===Installing over a network===&lt;br /&gt;
Some distributions have a set of diskettes that will allow you to boot a machine, enable a network device and start installation over a network. For example, {{Slackware}} supports installing via an NFS mount. An unofficial add-on adds an option to install over FTP.&lt;br /&gt;
&lt;br /&gt;
===Installing from floppy===&lt;br /&gt;
Some distributions did allow for a complete installation from diskette. As the size of distributions and the number of required diskettes has grown, and the ubiquity of optical storage increased, support for floppy installation has diminished.&lt;br /&gt;
&lt;br /&gt;
However, there are still some Linux distributions that fit on as few as one diskette - with very limited functionality, of course.&lt;br /&gt;
&lt;br /&gt;
==Installation from an ISO image==&lt;br /&gt;
Some distributions offer a way of installing directly from the downloadable ISO image, residing on your harddisk. Examples are VectorLinux 5.1 and {{SUSE}} 10. The individual distributions installation manuals will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
*[http://www.gentoo.org/doc/en/altinstall.xml Gentoo alternative installation method HOWTO]&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#External CD-ROM drives typically are connected through USB or [[PCMCIA]]. Be aware that not all of these drives are [[Supported Boot Devices|capable of booting]]. USB connected drives are more likely to be bootable on a ThinkPad than PCMCIA connected ones.&lt;br /&gt;
#USB drive here means any kind of USB connected bootable data storage device, including external harddisk drives, memory card readers or pendrives.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:TransNote]] [[Category:560]] [[Category:560E]] [[Category:560X]] [[Category:560Z]] [[Category:570]] [[Category:570E]] [[Category:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:Knoppix]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problem_with_ALSA_audio_output&amp;diff=23861</id>
		<title>Problem with ALSA audio output</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problem_with_ALSA_audio_output&amp;diff=23861"/>
		<updated>2006-07-29T21:04:17Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you have problem with sound, disable &amp;quot;Headphone Jack Sense&amp;quot; and &amp;quot;Line Jack Sense&amp;quot; from mixer.&lt;br /&gt;
&lt;br /&gt;
Also, try running an &amp;quot;advanced&amp;quot; mixer such as gnome-alsamixer, or alsamixergui. These display all the &amp;quot;switches&amp;quot;, and you may&lt;br /&gt;
find that 5.1 channel audio is misconfigured. For example, the Mic-in jack may be configured as Rear_out.&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problem_with_key_and_trackpoint_markings_on_the_display&amp;diff=23860</id>
		<title>Problem with key and trackpoint markings on the display</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problem_with_key_and_trackpoint_markings_on_the_display&amp;diff=23860"/>
		<updated>2006-07-29T21:02:03Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Problem Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Description==&lt;br /&gt;
You may discover markings on your display that match the positions of the [[TrackPoint]] or/and some of the keys.&lt;br /&gt;
&lt;br /&gt;
This is a known phenomenon that is caused by the display having contact with the TrackPoint or keyboard. The input elements of your ThinkPad gather oil from your fingers. When you carry your ThinkPad around with the display closed, i.e. in a bag, it is very likely and normal, that the display is exposed to small amounts of pressure. Since the space between display panel and keyboard is very tiny, it can happen that they have contact. In that case, parts of the oil on your keys and TrackPoint are transferred to the display. If this happens often, you get harder to remove markings on the display.&lt;br /&gt;
&lt;br /&gt;
==Affected Models==&lt;br /&gt;
*all models except TransNote&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
===Prevention===&lt;br /&gt;
You can avoid getting these markings by putting a very thin layer of textile or paper between your keyboard and the display before closing it. Take care that the layer you put in between is thin enough to not put pressure on the display panel.&lt;br /&gt;
&lt;br /&gt;
Another option is to use a transparent LCD protection film that attaches to the screen. These can be found from around $10. They won't prevent the markings from appearing but they will appear on the film and not the screen itself so you can just replace the film to get rid of them, and you don't need to insert and remove a sheet of textile or papaer each time you open and close the laptop. On the downside, a protective film may affect the visual quality of the screen.&lt;br /&gt;
&lt;br /&gt;
===Removal===&lt;br /&gt;
*Wipe the display gently with a soft patch of dry, lint-free textile. Make sure the textile is clean, since hard particles of dirt will cause scratches.&lt;br /&gt;
*If the markings are too resistant, moisten the textile with LCD-Cleaner. If you don't have LCD-Cleaner, water is ok, as well, but don't wetten the textile, you don't want any liquid to drop or flow into the casing. Remember to wipe the display dry afterwards.&lt;br /&gt;
*If the markings still resist, DON'T increase the pressure, but be patient and wipe longer. Switching between moist and dry wiping might help as well.&lt;br /&gt;
*A camera lens cleaning kit is also helpful - the cleaner is designed to be gentle on coated optics, and won't attack plastics.&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
*[http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4A2P54 IBMs LCD care and cleaning instructions]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problem_with_key_and_trackpoint_markings_on_the_display&amp;diff=23859</id>
		<title>Problem with key and trackpoint markings on the display</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problem_with_key_and_trackpoint_markings_on_the_display&amp;diff=23859"/>
		<updated>2006-07-29T21:01:47Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Removal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Description==&lt;br /&gt;
You may discover markings on your display that match the positions of the [[TrackPoint]] or/and some of the keys.&lt;br /&gt;
&lt;br /&gt;
This is a known phenomena that is caused by the display having contact with the TrackPoint or keyboard. The input elements of your ThinkPad gather oil from your fingers. When you carry your ThinkPad around with the display closed, i.e. in a bag, it is very likely and normal, that the display is exposed to small amounts of pressure. Since the space between display panel and keyboard is very tiny, it can happen that they have contact. In that case, parts of the oil on your keys and TrackPoint are transferred to the display. If this happens often, you get harder to remove markings on the display.&lt;br /&gt;
&lt;br /&gt;
==Affected Models==&lt;br /&gt;
*all models except TransNote&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
===Prevention===&lt;br /&gt;
You can avoid getting these markings by putting a very thin layer of textile or paper between your keyboard and the display before closing it. Take care that the layer you put in between is thin enough to not put pressure on the display panel.&lt;br /&gt;
&lt;br /&gt;
Another option is to use a transparent LCD protection film that attaches to the screen. These can be found from around $10. They won't prevent the markings from appearing but they will appear on the film and not the screen itself so you can just replace the film to get rid of them, and you don't need to insert and remove a sheet of textile or papaer each time you open and close the laptop. On the downside, a protective film may affect the visual quality of the screen.&lt;br /&gt;
&lt;br /&gt;
===Removal===&lt;br /&gt;
*Wipe the display gently with a soft patch of dry, lint-free textile. Make sure the textile is clean, since hard particles of dirt will cause scratches.&lt;br /&gt;
*If the markings are too resistant, moisten the textile with LCD-Cleaner. If you don't have LCD-Cleaner, water is ok, as well, but don't wetten the textile, you don't want any liquid to drop or flow into the casing. Remember to wipe the display dry afterwards.&lt;br /&gt;
*If the markings still resist, DON'T increase the pressure, but be patient and wipe longer. Switching between moist and dry wiping might help as well.&lt;br /&gt;
*A camera lens cleaning kit is also helpful - the cleaner is designed to be gentle on coated optics, and won't attack plastics.&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
*[http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4A2P54 IBMs LCD care and cleaning instructions]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problem_with_Pixel_Error&amp;diff=23858</id>
		<title>Problem with Pixel Error</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problem_with_Pixel_Error&amp;diff=23858"/>
		<updated>2006-07-29T20:58:45Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides information about pixel and subpixel errors.&lt;br /&gt;
&lt;br /&gt;
==What are dead pixels or dead subpixels?==&lt;br /&gt;
Dead Pixels are a phenomenon caused by the technology of LCD displays. TFT displays consist of a huge number of individual display cells, each controlled by its own transistor. I.E. a display with a resolution of 1024x768 pixels consists of 1024x768x3 = 2,36 million cells. A such enormous number makes the production of a display without any faulty cell difficult. The more strict the quality restrictions are, the more expensive the panels get, because this simply means raising the number of garbage panels.&lt;br /&gt;
&lt;br /&gt;
==Types of pixel errors==&lt;br /&gt;
Here is a listing of possible types of dead pixels / subpixels:&lt;br /&gt;
{| cellspacing=0 cellpadding=2 border=1 style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
! pixel type&amp;lt;hr /&amp;gt;state type !! pixel !! red subpixel !! green subpixel !! blue subpixel&lt;br /&gt;
|-&lt;br /&gt;
| always lit || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:black;color:white;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:black;color:#ff0000;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:black;color:#00ff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:black;color:#0000ff;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| always unlit || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:white;color:#000000;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:white;color:#00ffff;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:#ff0000;color:#000000;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:white;color:#ff00ff;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:#00ff00;color:#000000;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:white;color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:#0000ff;color:#000000;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can notice here, that always lit complete pixels, red subpixels and green subpixels are the most annoying ones. Also, dead pixels located closer to the center of the screen are more annoying than such located closer to the edge of the screen.&lt;br /&gt;
&lt;br /&gt;
Dead pixels do not always have to be a constant phenomena. You might in fact experience your pixel in question be faulty at times and working perfectly at other times. Or you might experience it to be a little flickering. This is only logical since a faulty transistor might sometimes work and sometimes not, depending on environmental conditions or even just randomly.&lt;br /&gt;
&lt;br /&gt;
{{HINT|The table above also shows you a way of detecting dead pixels and subpixels. Just use plain colored screens.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The ISO 13406-2 norm==&lt;br /&gt;
However, to give the concerned customer more transparency when buying LCD displays, the ISO norm 13406-2 was introduced, providing a basis for warranty claims. By assuring one of the classes of this specification, the producer is bound to keep that quality standard throughout the whole production series. However, Manufacturers are not necessarily going with this standard. For values for IBM displays look at [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4U9P53 this page].&lt;br /&gt;
&lt;br /&gt;
The values in the following table state the acceptable errors per 1 million pixels. Dead pixels form a cluster when they are within a square of 5x5 pixels.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=0 cellpadding=2 border=1 style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
! Error class !! Type 1&amp;lt;br /&amp;gt;(always lit pixel) !! Type 2&amp;lt;br /&amp;gt;(always unlit pixel) !! Type 3&amp;lt;br /&amp;gt;(always lit or always unlit subpixel) !! Type 4&amp;lt;br /&amp;gt;(clusters with more than one Type 1 or Type 3 faults) !! Type 4&amp;lt;br /&amp;gt; (clusters of Type 3 faults)&lt;br /&gt;
|-&lt;br /&gt;
| I || 0 || 0 || 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| II || 2 || 2 || 5 || 0 || 2&lt;br /&gt;
|-&lt;br /&gt;
| III || 5 || 15 || 50 || 0 || 5&lt;br /&gt;
|-&lt;br /&gt;
| IV || 50 || 150 || 500 || 5 || 50&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Causes for dead pixels/subpixels==&lt;br /&gt;
* As stated above, dead pixels are an inherent feature of the technology/production process of TFT displays. How many of them are in the final displays sold is just a matter of quality control standards.&lt;br /&gt;
* Furthermore, they can also accur at random time after production. Transistors can have faults that are not recognizable at production time. These faults may make the transistor stop working after it has been in use for a certain amount of time.&lt;br /&gt;
* Mechanical or environmental stress (i.e. heat) can possibly damage a transistor, leading to pixel errors.&lt;br /&gt;
&lt;br /&gt;
==Don't panic!==&lt;br /&gt;
Dead pixels are a really common phenomena on TFT displays. In fact there are other things about TFT displays that matter a lot more, like brightness and contrast, picture stability, color reproduction and response time. People just tend to focus on those things that are the most obvious, that's why everyone cries for dead pixels and response time when it comes to TFT displays.&lt;br /&gt;
&lt;br /&gt;
However, as stated above there can be truely annoying types of dead pixels. If their count is higher than the displays quality class permits you might get the device replaced under warranty.&lt;br /&gt;
The best thing, however, is to look for dead pixels right after purchase (you might have a chance to return it without special reason then):&lt;br /&gt;
* Do it three times over two days - different moods and different environemental light have an influence on your perception.&lt;br /&gt;
* [http://freshmeat.net/projects/lcdtest lcdtest] utility can generate predefined patterns, and may help you to detect damaged pixels.&lt;br /&gt;
* Be concious about how hard it was to find the dead pixel - if it was really hard it can't be too bothering.&lt;br /&gt;
* Also make sure that what you consider a dead pixel isn't just a piece of dirt or dust.&lt;br /&gt;
* Try pressing the (blue) scroll button on the UltraNav. There is a bug in the UltraNav driver which causes fake Bright pixels to appear on the screen.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Besides some april jokes there isn't really any solution except looking for a replacement.&lt;br /&gt;
&lt;br /&gt;
However, for {{Windows}} an interesting program exists that can help you making annoying subpixels and pixels more bearable. It works by trying to compensate a dead subpixel by adjusting the values for the remaining working subpixels. This way you can i.e. get rid of a most annoying always lit red subpixel. The program is german only and a download link can be found in its german [http://www.prad.de/board/thread.php?threadid=11797 PixChanger discussion].&lt;br /&gt;
&lt;br /&gt;
If you have a '''line''' of dead (bright or dark) pixels, this is usually caused by a failure of one of the address-lines where it contacts the edge of the panel. You can sometimes restore it by (''carefully''!!) flexing the display. Find the point on the bezel where the line ends, then push it gently with a thumb (or from behind) while supporting the outer edges of the display with 2 fingers. The LCD needs to be&lt;br /&gt;
&amp;quot;folded&amp;quot; by about 1 degree; the fold direction depends on the problem. I can report success with an X20. Note that this is a last resort; it '''might destroy your LCD''', and the LCD should thereafter be treated exceptionally gently!&lt;br /&gt;
&lt;br /&gt;
==External sources==&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4U9P53 IBMs page on defective pixel display replacement criteria]&lt;br /&gt;
* [http://graphics.tomshardware.com/display/20030319/index.html &amp;quot;An autopsy of Dead Pixels&amp;quot; at Tom's Hardware Guide]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problem_with_Pixel_Error&amp;diff=23857</id>
		<title>Problem with Pixel Error</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problem_with_Pixel_Error&amp;diff=23857"/>
		<updated>2006-07-29T20:57:29Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Try bending it */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides information about pixel and subpixel errors.&lt;br /&gt;
&lt;br /&gt;
==What are dead pixels or dead subpixels?==&lt;br /&gt;
Dead Pixels are a phenomenon caused by the technology of LCD displays. TFT displays consist of a huge number of individual display cells, each controlled by its own transistor. I.E. a display with a resolution of 1024x768 pixels consists of 1024x768x3 = 2,36 million cells. A such enormous number makes the production of a display without any faulty cell difficult. The more strict the quality restrictions are, the more expensive the panels get, because this simply means raising the number of garbage panels.&lt;br /&gt;
&lt;br /&gt;
==Types of pixel errors==&lt;br /&gt;
Here is a listing of possible types of dead pixels / subpixels:&lt;br /&gt;
{| cellspacing=0 cellpadding=2 border=1 style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
! pixel type&amp;lt;hr /&amp;gt;state type !! pixel !! red subpixel !! green subpixel !! blue subpixel&lt;br /&gt;
|-&lt;br /&gt;
| always lit || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:black;color:white;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:black;color:#ff0000;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:black;color:#00ff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:black;color:#0000ff;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| always unlit || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:white;color:#000000;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:white;color:#00ffff;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:#ff0000;color:#000000;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:white;color:#ff00ff;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:#00ff00;color:#000000;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:white;color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;width:15px;height:15px;border:1px solid black;background-color:#0000ff;color:#000000;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#183;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can notice here, that always lit complete pixels, red subpixels and green subpixels are the most annoying ones. Also, dead pixels located closer to the center of the screen are more annoying than such located closer to the edge of the screen.&lt;br /&gt;
&lt;br /&gt;
Dead pixels do not always have to be a constant phenomena. You might in fact experience your pixel in question be faulty at times and working perfectly at other times. Or you might experience it to be a little flickering. This is only logical since a faulty transistor might sometimes work and sometimes not, depending on environmental conditions or even just randomly.&lt;br /&gt;
&lt;br /&gt;
{{HINT|The table above also shows you a way of detecting dead pixels and subpixels. Just use plain colored screens.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The ISO 13406-2 norm==&lt;br /&gt;
However, to give the concerned customer more transparency when buying LCD displays, the ISO norm 13406-2 was introduced, providing a basis for warranty claims. By assuring one of the classes of this specification, the producer is bound to keep that quality standard throughout the whole production series. However, Manufacturers are not necessarily going with this standard. For values for IBM displays look at [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4U9P53 this page].&lt;br /&gt;
&lt;br /&gt;
The values in the following table state the acceptable errors per 1 million pixels. Dead pixels form a cluster when they are within a square of 5x5 pixels.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=0 cellpadding=2 border=1 style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
! Error class !! Type 1&amp;lt;br /&amp;gt;(always lit pixel) !! Type 2&amp;lt;br /&amp;gt;(always unlit pixel) !! Type 3&amp;lt;br /&amp;gt;(always lit or always unlit subpixel) !! Type 4&amp;lt;br /&amp;gt;(clusters with more than one Type 1 or Type 3 faults) !! Type 4&amp;lt;br /&amp;gt; (clusters of Type 3 faults)&lt;br /&gt;
|-&lt;br /&gt;
| I || 0 || 0 || 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| II || 2 || 2 || 5 || 0 || 2&lt;br /&gt;
|-&lt;br /&gt;
| III || 5 || 15 || 50 || 0 || 5&lt;br /&gt;
|-&lt;br /&gt;
| IV || 50 || 150 || 500 || 5 || 50&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Causes for dead pixels/subpixels==&lt;br /&gt;
* As stated above, dead pixels are an inherent feature of the technology/production process of TFT displays. How many of them are in the final displays sold is just a mater of quality control standards.&lt;br /&gt;
* Furthermore, they can also accur at random time after production. Transistors can have faults that are not recognizable at production time. These faults may make the transistor stop working after it has been in use for a certain amount of time.&lt;br /&gt;
* Mechanical or environmental stress (i.e. heat) can possibly damage a transistor, leading to pixel errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Don't panic!==&lt;br /&gt;
Dead pixels are a really common phenomena on TFT displays. In fact there are other things about TFT displays that matter a lot more, like brightness and contrast, picture stability, color reproduction and response time. People just tend to focus on those things that are the most obvious, that's why everyone cries for dead pixels and response time when it comes to TFT displays.&lt;br /&gt;
&lt;br /&gt;
However, as stated above there can be truely annoying types of dead pixels. If their count is higher than the displays quality class permits you might get the device replaced under warranty.&lt;br /&gt;
The best thing, however, is to look for dead pixels right after purchase (you might have a chance to return it without special reason then):&lt;br /&gt;
* Do it three times over two days - different moods and different environemental light have an influence on your perception.&lt;br /&gt;
* [http://freshmeat.net/projects/lcdtest lcdtest] utility can generate predefined patterns, and may help you to detect damaged pixels.&lt;br /&gt;
* Be concious about how hard it was to find the dead pixel - if it was really hard it can't be too bothering.&lt;br /&gt;
* Also make sure that what you consider a dead pixel isn't just a piece of dirt or dust.&lt;br /&gt;
* Try pressing the (blue) scroll button on the UltraNav. There is a bug in the UltraNav driver which causes fake Bright pixels to appear on the screen.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Besides some april jokes there isn't really any solution except looking for a replacement.&lt;br /&gt;
&lt;br /&gt;
However, for {{Windows}} an interesting program exists that can help you making annoying subpixels and pixels more bearable. It works by trying to compensate a dead subpixel by adjusting the values for the remaining working subpixels. This way you can i.e. get rid of a most annoying always lit red subpixel. The program is german only and a download link can be found in its german [http://www.prad.de/board/thread.php?threadid=11797 PixChanger discussion].&lt;br /&gt;
&lt;br /&gt;
If you have a '''line''' of dead (bright or dark) pixels, this is usually caused by a failure of one of the address-lines where it contacts the edge of the panel. You can sometimes restore it by (''carefully''!!) flexing the display. Find the point on the bezel where the line ends, then push it gently with a thumb (or from behind) while supporting the outer edges of the display with 2 fingers. The LCD needs to be&lt;br /&gt;
&amp;quot;folded&amp;quot; by about 1 degree; the fold direction depends on the problem. I can report success with an X20. Note that this is a last resort; it '''might destroy your LCD''', and the LCD should thereafter be treated exceptionally gently!&lt;br /&gt;
&lt;br /&gt;
==External sources==&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-4U9P53 IBMs page on defective pixel display replacement criteria]&lt;br /&gt;
* [http://graphics.tomshardware.com/display/20030319/index.html &amp;quot;An autopsy of Dead Pixels&amp;quot; at Tom's Hardware Guide]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_get_SpeedStep_working_on_Coppermine-piix4-smi_based_ThinkPads&amp;diff=23855</id>
		<title>How to get SpeedStep working on Coppermine-piix4-smi based ThinkPads</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_get_SpeedStep_working_on_Coppermine-piix4-smi_based_ThinkPads&amp;diff=23855"/>
		<updated>2006-07-29T20:43:28Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Avoid speedstep_smi on X20 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Foreword==&lt;br /&gt;
APPLYING THIS HOWTO MAY MAKE YOU DUMB, CRASH YOUR CPU, YOUR MOTHERBOARD, MAKE YOUR GIRLFRIEND LEAVE YOU, OR MAYBE WORSE, USE IT AT YOUR OWN RISKS, I'M NOTHING OF A KERNEL HACKER, NEITHER A SMART GUY, THIS IS HOW I TRYED TO GET IT WORK, AND TILL NOW IT IS WORKING, MY PROPOSITION ARE ALMOST GUARANTED TO BE DUMB.&lt;br /&gt;
&lt;br /&gt;
This HowTo is intended for people having trouble getting SpeedStep working via CpuFreq on their Coppermine CPU with a piix4 mainboard. &lt;br /&gt;
ThinkPads known to have this configuration are the {{X20}}, {{X21}}, {{T20}}, {{T21}}, {{T22}}, {{TransNote}} and possibly {{A20m}}, {{A20p}}, {{A21e}}, {{A21m}}, {{A21p}}, {{A22e}}, {{A22m}}, {{A22p}} models.&lt;br /&gt;
&lt;br /&gt;
The issue is that these CPUs do not repport correctly that they are SpeedStep capable.&lt;br /&gt;
&lt;br /&gt;
This Document is under the GNU/GPL v2+ Licence.&lt;br /&gt;
&lt;br /&gt;
==My case==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==============================================================================&lt;br /&gt;
 (this part is intended for Google matching of people having the same logs ). &lt;br /&gt;
==============================================================================&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
This is what i get:&lt;br /&gt;
I have a x21 IBM ThinkPad, and when trying the SpeedStep implementation of 2.6 kernels i got:&lt;br /&gt;
:{{cmduser|sudo modprobe speedstep-smi}}&lt;br /&gt;
:{{cmdresult|FATAL: Error inserting speedstep_smi    (/lib/modules/2.6.10-rc1-mm4-xa1/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-smi.ko): No such device}}&lt;br /&gt;
&lt;br /&gt;
Rebooting with &amp;lt;tt&amp;gt;cpufreq.debug=7&amp;lt;/tt&amp;gt; ( 1 is for core, 2 is for ??, and 4 is for drivers, 7 = 1 + 2 + 4 ) gave:&lt;br /&gt;
:{{cmduser|sudo modprobe speedstep-smi}}&lt;br /&gt;
:{{cmdresult|FATAL: Error inserting speedstep_smi   (/lib/modules/2.6.10-rc1-mm4-xa1/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-smi.ko): No such device}}&lt;br /&gt;
:{{cmduser|sudo tail /var/log/syslog}}&lt;br /&gt;
:{{cmdresult|[...]}}&lt;br /&gt;
:{{cmdresult|Nov 11 19:54:20 localhost kernel: speedstep-lib: x86: 6, model: 8}}&lt;br /&gt;
:{{cmdresult|Nov 11 19:54:20 localhost kernel: speedstep-lib: Coppermine: MSR_IA32_EBL_CR_POWERON is 0x44080020, 0x0}}&lt;br /&gt;
:{{cmdresult|Nov 11 19:54:20 localhost kernel: speedstep-lib: Coppermine: MSR_IA32_PLATFORM ID is 0x0, 0x540000}}&lt;br /&gt;
:{{cmdresult|Nov 11 19:54:20 localhost kernel: speedstep-smi: No supported Intel CPU detected.}}&lt;br /&gt;
&lt;br /&gt;
==How to get it work==&lt;br /&gt;
Note: to get this working on recent kernels you'll need:&lt;br /&gt;
 CONFIG_X86_SPEEDSTEP_RELAXED_CHECK = y&lt;br /&gt;
Disable the speedstep-lib checks&lt;br /&gt;
:{{cmduser|1=sudo modprobe speedstep-lib relaxed_check=1}}&lt;br /&gt;
:{{cmduser|sudo modprobe speedstep-smi}}&lt;br /&gt;
&lt;br /&gt;
In Debian ( and probably with others, please confirm ), you can automate the module parmeters by creating a {{path|/etc/modprobe.d/speedstep-lib}} file with:&lt;br /&gt;
 options speedstep-lib relaxed_check=1&lt;br /&gt;
&lt;br /&gt;
And then, you may add  these 2 lines to {{path|/etc/modules}}:&lt;br /&gt;
 speedstep-lib&lt;br /&gt;
 speedstep-smi&lt;br /&gt;
&lt;br /&gt;
==How to use it==&lt;br /&gt;
[[How to make use of Dynamic Frequency Scaling]]&lt;br /&gt;
&lt;br /&gt;
==What's not working==&lt;br /&gt;
&lt;br /&gt;
On an X20, speedstep_smi messes up acpi and nvram. Best not to use it. See [http://bugzilla.kernel.org/show_bug.cgi?id=6847 Kernel bug 6847]&lt;br /&gt;
&lt;br /&gt;
The speeds shown may be erroneous, which has dramatic consequances if you try to watch movies or applications that are (exact) time-depending (as the timer is all dizzy).&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=User:RichardNeill&amp;diff=23615</id>
		<title>User:RichardNeill</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=User:RichardNeill&amp;diff=23615"/>
		<updated>2006-07-25T14:59:41Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Richard Neill ==&lt;br /&gt;
&lt;br /&gt;
See also my website, for various linux bits, howtos, and contact details.&lt;br /&gt;
http://www.richardneill.org&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=User:RichardNeill&amp;diff=23614</id>
		<title>User:RichardNeill</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=User:RichardNeill&amp;diff=23614"/>
		<updated>2006-07-25T14:59:13Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Richard Neill ==&lt;br /&gt;
&lt;br /&gt;
See also my website, for various linux bits, howtos, and contact details.&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:How_to_enable_integrated_fingerprint_reader_with_BioAPI&amp;diff=23613</id>
		<title>Talk:How to enable integrated fingerprint reader with BioAPI</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:How_to_enable_integrated_fingerprint_reader_with_BioAPI&amp;diff=23613"/>
		<updated>2006-07-25T14:58:19Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: Is it any good?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Removing the GUI Prompt ==&lt;br /&gt;
For all of you that have had the oppertunity to see the fingerprint image, I think we can all agree that this needs to be changed at ounce. A couple of ideas come to mind, first is to trick bioapi to think that X is not running, and secound is to figure out where the images are being pulled from and then edit them. The later would be nice, but I have been experimenting with strace for several hours and have came up with nothing. Any other ideas?&lt;br /&gt;
&lt;br /&gt;
--[[User:Paul Strefling|Paul Strefling]] 18:42, 18 July 2006 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== chmod 777 -R /usr/local/var/bioapi/ ==&lt;br /&gt;
&lt;br /&gt;
Is the above necessary? I just made a debian package of xscreensaver with the patch applied, and when using the bioapi debian pacakge from [http://www.qrivy.net/~michael/temp/ Michael R. Crusoe's site] which has this directory put in /usr/var/bioapi I had not to change the permissions to world-writeable there. Write access to the logfile and usb device are necessary, but that directory works with 755 as well (even though it comes with 777 in Michael's package), and all files and subdirectories are 644/755 too.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 00:08, 11 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Qt Compilation Success ==&lt;br /&gt;
&lt;br /&gt;
Here it worked with qt ;)&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
I didn't get it to work anyway, but I'm curious about your Qt version(s) as it seemed to want Qt 3 when I was playing with it.&lt;br /&gt;
&lt;br /&gt;
--[[User:Keegan|keegan]] 05:07, 24 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
== using absolute paths for commands ==&lt;br /&gt;
&lt;br /&gt;
I don't know whether using absolute paths in the articles is a good idea, at least not for tools like {{cmd|lsusb|}} which are not established utilities (i.e. used for more than a decade or something ;)) and happen to be in different locations in different distributions. E.g. said {{cmd|lsusb|}} resides in {{path|/usr/sbin|}} on Debian systems.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 16:45, 12 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I'm using debian testing and it's in {{path|/usr/bin|}}.  I agree that the confusion is bad; dropping the absolute paths and adding a general note about checking {{cmd|$PATH|}} in case of problems is probably good.&lt;br /&gt;
&lt;br /&gt;
--[[User:keegan|keegan]]&lt;br /&gt;
&lt;br /&gt;
== BioAPI error #3 ==&lt;br /&gt;
&lt;br /&gt;
Its kind of strage it used to work with everythig (kdm,console,lock,etc)&lt;br /&gt;
Now it only works with kdm. It allways gives back:&lt;br /&gt;
&lt;br /&gt;
pam_bioapi[8113]: Unable to initialize Bioapi framework, BioAPI error #:3.&lt;br /&gt;
&lt;br /&gt;
Even when I set the right permissions on /proc/bus/usb.&lt;br /&gt;
&lt;br /&gt;
I am able to run the Sample program as normal user after setting the permissions, but when I change within a user session by su I amnot able to run the Sample program a also get an error Code #3.&lt;br /&gt;
&lt;br /&gt;
From an other terminal (alt+strg+Fx) I am able to run the Sample program but at the login I still get the error #3.&lt;br /&gt;
&lt;br /&gt;
I cant remember to have changed anything an d bevor I was able to login in a console with my fingerprint now only kdm is working even kde lock-session       &lt;br /&gt;
isnt working anymore.&lt;br /&gt;
&lt;br /&gt;
Any suggestions ?&lt;br /&gt;
&lt;br /&gt;
==Permission errors exclusive to xscreensaver==&lt;br /&gt;
&lt;br /&gt;
I followed the instructions above and got everything working, including non-root programs like xscreensaver.  However, the script to change usbfs permissions is finicky and fails to work with a lot of things like suspend/resume.  Therefore, I switched to specifying &amp;lt;tt&amp;gt;devgid=108,devmode=0660,busgid=108,busmode=0770,listgid=108,listmode=0660&amp;lt;/tt&amp;gt; as mount parameters for usbfs, where group 108 is a group I created and added my normal user to.  This seems like a much better way of doing things, and it almost works.  However, xscreensaver (using the newer patch) gives the familiar &amp;lt;tt&amp;gt;Unable to load BioAPI BSP with UUID of &amp;lt;nowiki&amp;gt;{&amp;lt;/nowiki&amp;gt;5550454b-2054-464d-2f45-535320425350&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;, BioAPI error #194d.&amp;lt;/tt&amp;gt; error in {{path|/var/log/auth.log|}}.  I don't think this is a straightfoward permissions problem because&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;the permissions in {{path|/proc/bus/usb|}} are correct by inspection&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;I can write to the device file as my normal user&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;other programs like {{cmd|test_verify-pam_bioapi|}} and [http://pamtester.sourceforge.net/ {{cmd|pamtester|}}] work as my normal user&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;the weirdest one: xscreensaver works when the {{cmd|xscreensaver|}} daemon is launched from within {{cmd|strace|}}.  It's still running as my normal user ({{cmd|strace|}} is not setuid root).  I have absolutely no idea what would cause this.  I thought it might be an environment issue, but the difference in environment between the {{cmd|strace|}} session and my normal session is trivial.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point I'm hoping it's something dumb, but I'm out of ideas.  The {{cmd|xscreensaver|}} error is &amp;lt;tt&amp;gt;pam_authenticate (...) ==&amp;amp;gt; 7 (Authentication failure)&amp;lt;/tt&amp;gt;, for the record.&lt;br /&gt;
&lt;br /&gt;
--[[User:keegan|keegan]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Could you provide all the log lines between pam_start and pam_end when running {{cmd|xscreensaver -verbose|}}?&lt;br /&gt;
&lt;br /&gt;
BTW, the idea with using the mount options for usbfs is very good, maybe you should add that info to the article page? I use the permission changing script without problems, also after resume, but the usbfs version is probably easier to set up, most people will be able to find {{path|/etc/fstab|}}.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 10:12, 23 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xscreensaver: 20:56:01: alternative_pam:  1 -&amp;gt; pam service: xscreensaver-alternative&lt;br /&gt;
xscreensaver: 20:56:01: pam_start (&amp;quot;xscreensaver-alternative&amp;quot;, &amp;quot;keegan&amp;quot;, ...) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:01:   pam_set_item (p, PAM_TTY, &amp;quot;:0.0&amp;quot;) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:01:     PAM ECHO_OFF(&amp;quot;Password: &amp;quot;) ==&amp;gt; password&lt;br /&gt;
xscreensaver: 20:56:03:   pam_authenticate (...) ==&amp;gt; 7 (Authentication failure)&lt;br /&gt;
xscreensaver: 20:56:03: pam_end (...) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:03: prompting for password.&lt;br /&gt;
xscreensaver: 20:56:03: 0: creating password dialog.&lt;br /&gt;
xscreensaver: 20:56:03: 0: mouse is at 442,412.&lt;br /&gt;
xscreensaver: 20:56:03: grabbing server...&lt;br /&gt;
xscreensaver: 20:56:03: 0: ungrabbing mouse (was 0x48).&lt;br /&gt;
xscreensaver: 20:56:03: 0: grabbing mouse on 0xe0002b... GrabSuccess.&lt;br /&gt;
xscreensaver: 20:56:03: ungrabbing server.&lt;br /&gt;
xscreensaver: 20:56:05: alternative_pam:  12582928 -&amp;gt; pam service: xscreensaver&lt;br /&gt;
xscreensaver: 20:56:05: pam_start (&amp;quot;xscreensaver&amp;quot;, &amp;quot;keegan&amp;quot;, ...) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:05:   pam_set_item (p, PAM_TTY, &amp;quot;:0.0&amp;quot;) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:05:     PAM ECHO_OFF(&amp;quot;Password: &amp;quot;) ==&amp;gt; password&lt;br /&gt;
xscreensaver: 20:56:05:   pam_authenticate (...) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:05:   pam_acct_mgmt (...) ==&amp;gt; 9 (Authentication service cannot retrieve authentication info.)&lt;br /&gt;
xscreensaver: 20:56:05:   pam_setcred (...) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:05: pam_end (...) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:05: password correct.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
So we've got the first attempt with {{cmd|pam_bioapi|}}, which fails immediately (no sign of the GUI fingerprint prompt, nor a &amp;quot;silent&amp;quot; chance to swipe the finger as with xdm), then the fallback to {{cmd|pam_unix|}} which succeeds.  Earlier I had xscreensaver set up to only try {{cmd|pam_bioapi|}}, with essentially the same result -- it gives up on pam entirely and does unix auth itself.&lt;br /&gt;
&lt;br /&gt;
I'd really like to strace the pam module and see what it's attempting to do to {{path|/proc/bus/usb|}}, but as that actually fixes the problem I'm kinda at a loss.  Maybe there's some kernel option to print debugging info for usbfs?  I'd be all for changing the article to suggest using mount options in {{path|/etc/fstab|}}, if it weren't for this one weird bug.  Has anyone else had the same problem?&lt;br /&gt;
&lt;br /&gt;
-- [[User:keegan|keegan]]&lt;br /&gt;
&lt;br /&gt;
Same here, I had the whole setup workin flawlessly (I really need to get that 'never-touch-a-running-system' mantra burnt into the back of my hands), but after a fresh install of the same distro (Ubuntu) and following the same procedure to get things working i get exactly this behaviour. Login works (now even with multifinger, although there are other issues with that), I can use test_verify-pam_bioapi as a user. and the stock xscreensaver works, albeit only after entering a bogus password first.&lt;br /&gt;
The patched xscreensaver works when run within a strace (Now that sucks) but fails otherwise. And as i said before, I had this working...&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
open(&amp;quot;/dev/bus/usb&amp;quot;, O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 13&lt;br /&gt;
fstat64(13, {st_mode=S_IFDIR|0755, st_size=140, ...}) = 0&lt;br /&gt;
fcntl64(13, F_SETFD, FD_CLOEXEC)        = 0&lt;br /&gt;
getdents64(13, /* 7 entries */, 4096)   = 168&lt;br /&gt;
getdents64(13, /* 0 entries */, 4096)   = 0&lt;br /&gt;
close(13)                               = 0&lt;br /&gt;
open(&amp;quot;/dev/bus/usb/003&amp;quot;, O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 13&lt;br /&gt;
fstat64(13, {st_mode=S_IFDIR|0755, st_size=80, ...}) = 0&lt;br /&gt;
fcntl64(13, F_SETFD, FD_CLOEXEC)        = 0&lt;br /&gt;
getdents64(13, /* 4 entries */, 4096)   = 96&lt;br /&gt;
open(&amp;quot;/dev/bus/usb/003/002&amp;quot;, O_RDWR)    = -1 EACCES (Permission denied)&lt;br /&gt;
open(&amp;quot;/dev/bus/usb/003/002&amp;quot;, O_RDONLY)  = 14&lt;br /&gt;
ioctl(14, USBDEVFS_CONNECTINFO, 0xafd5bd34) = -1 EPERM (Operation not permitted)&lt;br /&gt;
read(14, &amp;quot;\22\1\0\1\0\0\0\10\203\4\26 \1\0\1\2\0\1&amp;quot;, 18) = 18&lt;br /&gt;
read(14, &amp;quot;\t\2\'\0\1\1\0\240&amp;quot;, 8)       = 8&lt;br /&gt;
read(14, &amp;quot;2\t\4\0\0\3\377\0\0\0\7\5\201\2@\0\0\7\5\2\2@\0\0\7\5\203&amp;quot;..., 31) = 31&lt;br /&gt;
close(14)                               = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is all the excitement from the strace on xscreensaver.  As I originally thought, you cannot get away with just playing with the proc entries :P  You also need to deal with the counterpart in /dev.  We can wrap up all the permissions issues with a single UDEV rule:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# fingerprint fun&lt;br /&gt;
BUS==&amp;quot;usb&amp;quot;, DRIVER==&amp;quot;usb&amp;quot;, SYSFS{product}==&amp;quot;Biometric Coprocessor&amp;quot;, GROUP=&amp;quot;bioapi&amp;quot;, SYMLINK=&amp;quot;misc/fingerprint&amp;quot;, RUN+=&amp;quot;/bin/sh -c 'chgrp bioapi /proc/$RESULT; chmod g+rw /proc/$RESULT'&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I created a 'bioapi' group and configured pam to add groups to anyone logging in ''locally''.  Now all you need to do is amend the pam configuraion files below.  We use 'wdm', but of course its as applicable for all those resource hungry touchy-feely gdm/kdm folk out there too ;)&lt;br /&gt;
&lt;br /&gt;
/etc/security/group.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# local group settings&lt;br /&gt;
login; tty*; *; al0000-2400; audio,floppy,video,cdrom,nvram,plugdev,bioapi&lt;br /&gt;
wdm; :*; *; al0000-2400; audio,floppy,video,cdrom,nvram,plugdev,bioapi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/pam.d/login&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[snipped]&lt;br /&gt;
&lt;br /&gt;
# group *has* to go here&lt;br /&gt;
auth       optional   pam_group.so&lt;br /&gt;
&lt;br /&gt;
# fingerprint action&lt;br /&gt;
auth       sufficient /usr/local/lib/security/pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/&lt;br /&gt;
&lt;br /&gt;
# Standard Un*x authentication.&lt;br /&gt;
@include common-auth&lt;br /&gt;
&lt;br /&gt;
# This allows certain extra groups to be granted to a user&lt;br /&gt;
# based on things like time of day, tty, service, and user.&lt;br /&gt;
# Please edit /etc/security/group.conf to fit your needs&lt;br /&gt;
# (Replaces the `CONSOLE_GROUPS' option in login.defs)&lt;br /&gt;
#auth       optional   pam_group.so&lt;br /&gt;
&lt;br /&gt;
[snipped]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/pam.d/wdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#%PAM-1.0&lt;br /&gt;
auth            required        pam_nologin.so&lt;br /&gt;
auth            required        pam_env.so&lt;br /&gt;
&lt;br /&gt;
# local tweak&lt;br /&gt;
auth       optional   pam_group.so&lt;br /&gt;
&lt;br /&gt;
# fingerprint action&lt;br /&gt;
auth       sufficient /usr/local/lib/security/pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/&lt;br /&gt;
&lt;br /&gt;
@include common-auth&lt;br /&gt;
@include common-account&lt;br /&gt;
@include common-session&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''N.B.''' as with all pam related things, the order is important&lt;br /&gt;
&lt;br /&gt;
-- [[User:Jim diGriz|Jim diGriz]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Driver Expiring!!!==&lt;br /&gt;
Don't anyone notice that both betas of the UPEK driver is expiring in&lt;br /&gt;
about a month in the new year, Jan 1st 2006? They really mean it! &lt;br /&gt;
I set my computer date to next year and get a message &amp;quot;the driver has expired&amp;quot; when using fingerprint reader! This is a grave threat to our computer lifestyle, i.e. for those of us who got it working and use it&lt;br /&gt;
daily:) &lt;br /&gt;
Is there any workaround other than setting the date back a year when&lt;br /&gt;
new year come and wait for new driver? Is there a way to figure out where exactly in the driver it checked the date and how? The must have set it &lt;br /&gt;
somewhere in file libtfmessbsp.so, but it is binary and I can't figure out how to Reverse Engineer it.&lt;br /&gt;
&lt;br /&gt;
---Jiang&lt;br /&gt;
&lt;br /&gt;
Yes, the beta driver will expire. The final version (which is due REALLY soon now) will not.&lt;br /&gt;
&lt;br /&gt;
Sumedha&lt;br /&gt;
&lt;br /&gt;
Any news? Just 9 days left to expiry. --[[User:Thinker|Thinker]] 21:36, 22 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
The final is out, get it at [http://www.upek.com/support/dl_linux_bsp.asp UPEK's download page]. And how does one edit the industry watch section of the main page?&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 21:39, 22 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
Ah, great! Both the article page and the driver page it points to are out of date... For the news, just follow the &amp;quot;[[ThinkWiki:News|News]]&amp;quot; link in the main page. &lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:44, 22 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
As this is now very soon I've updated the article page to link to the final driver, which is better in a few ways anyway.  This is unless anyone minds (are there any unresolved issues with the final that don't exist in the betas?).&lt;br /&gt;
&lt;br /&gt;
--[[User:Keegan|keegan]] 05:06, 24 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
== Updated xscreensaver patch ==&lt;br /&gt;
&lt;br /&gt;
I've tried to address some usability issues with the old patch, e.g. that it calls the PAM bioapi module twice before falling back to the normal authentication methods. It can be found on my [http://linux.spiney.org/debian_gnu_linux_on_an_ibm_thinkpad_t43p_fingerprint_reader Fingerprint Reader] page, feedback is very welcome.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 20:36, 22 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fingerprint or password ==&lt;br /&gt;
&lt;br /&gt;
Is there any way to have PAM accept either a password or a finger swipe, right away? Sometimes one is more convenient, sometimes the other, so and it's a lot of trouble to wait for the UPEK scanner prompt and then cancel it in order to reach the password entry.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 19:27, 24 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
== KDE screensaver ==&lt;br /&gt;
&lt;br /&gt;
If you get the following in {{path|/var/log/secure}} when you try to unlock the KDE screensaver, it means you forgot to set the USB device permissions.&lt;br /&gt;
 localhost pam_bioapi[24981]: Unable to load BioAPI BSP with UUID of {5550454b-2054-464d-2f45-535320425350}, BioAPI error #194d.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:21, 24 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== fingerprint reader in action. ==&lt;br /&gt;
&lt;br /&gt;
small video with fingerprint reader in action with login: http://chao.ch/tmp/mov01302.mpg&lt;br /&gt;
&lt;br /&gt;
--[[User:62.202.35.30|62.202.35.30]] 17:57, 29 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
==A little feedback...==&lt;br /&gt;
...for all the editors of this article:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;[[How to enable the fingerprint reader]] over at ThinkWiki.org is some real exhaustive documentation for getting the fingerprint scanner working on the ThinkPads. There is also a troubleshooting section towards the end that might be very useful to anyone messing around with it.&lt;br /&gt;
&lt;br /&gt;
Thanks to those responsible for taking the time to write up this excellent guide.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Those thanks come from [http://linuxbiometrics.com/modules/news/ LinuxBiometrics.com]&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 01:24, 9 Jan 2006 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==pam_bioapi.so is not linked to libbioapi100.so==&lt;br /&gt;
I downloaded the pam_bioapi package and patched the file by following the wiki. However, I got the following result:&lt;br /&gt;
&lt;br /&gt;
    ~/soft/thinkpad/pam_bioapi-0.2.1/libpam_bioapi/.libs$ ls -la&lt;br /&gt;
    total 48&lt;br /&gt;
    drwxr-xr-x  2 louis users   248 2006-01-12 01:18 ./&lt;br /&gt;
    drwxr-xr-x  4 louis users   312 2006-01-12 01:18 ../&lt;br /&gt;
    lrwxrwxrwx  1 louis users    16 2006-01-12 01:18 pam_bioapi.la -&amp;gt; ../pam_bioapi.la&lt;br /&gt;
    -rw-r--r--  1 louis users   824 2006-01-12 01:18 pam_bioapi.lai&lt;br /&gt;
    -rw-r--r--  1 louis users 19716 2006-01-12 01:18 pam_bioapi.o&lt;br /&gt;
    lrwxrwxrwx  1 louis users    19 2006-01-12 01:18 pam_bioapi.so -&amp;gt; pam_bioapi.so.0.0.0*&lt;br /&gt;
    lrwxrwxrwx  1 louis users    19 2006-01-12 01:18 pam_bioapi.so.0 -&amp;gt; pam_bioapi.so.0.0.0*&lt;br /&gt;
    -rwxr-xr-x  1 louis users 21789 2006-01-12 01:18 pam_bioapi.so.0.0.0*&lt;br /&gt;
    &lt;br /&gt;
    ~/soft/thinkpad/pam_bioapi-0.2.1/libpam_bioapi/.libs$ ldd pam_bioapi.so&lt;br /&gt;
            linux-gate.so.1 =&amp;gt;  (0xffffe000)&lt;br /&gt;
            libc.so.6 =&amp;gt; /lib/tls/libc.so.6 (0x40025000)&lt;br /&gt;
            /lib/ld-linux.so.2 (0x80000000)&lt;br /&gt;
    ~/soft/thinkpad/pam_bioapi-0.2.1/libpam_bioapi/.libs$&lt;br /&gt;
&lt;br /&gt;
pam_bioapi.so is NOT linked to libbioapi100.so. The latter is in the ld path:&lt;br /&gt;
&lt;br /&gt;
    ~/soft/thinkpad/pam_bioapi-0.2.1/libpam_bioapi/.libs$ ldconfig -p |grep bioapi&lt;br /&gt;
            libtfmessbsp.so (libc6) =&amp;gt; /opt/bioapi/lib/libtfmessbsp.so&lt;br /&gt;
            libpwbsp.so.0 (libc6) =&amp;gt; /opt/bioapi/lib/libpwbsp.so.0&lt;br /&gt;
            libpwbsp.so (libc6) =&amp;gt; /opt/bioapi/lib/libpwbsp.so&lt;br /&gt;
            libmds_util.so.0 (libc6) =&amp;gt; /opt/bioapi/lib/libmds_util.so.0&lt;br /&gt;
            libmds_util.so (libc6) =&amp;gt; /opt/bioapi/lib/libmds_util.so&lt;br /&gt;
            libbioapi100.so.0 (libc6) =&amp;gt; /opt/bioapi/lib/libbioapi100.so.0&lt;br /&gt;
            libbioapi100.so (libc6) =&amp;gt; /opt/bioapi/lib/libbioapi100.so&lt;br /&gt;
            libbioapi_mds300.so.0 (libc6) =&amp;gt; /opt/bioapi/lib/libbioapi_mds300.so.0&lt;br /&gt;
            libbioapi_mds300.so (libc6) =&amp;gt; /opt/bioapi/lib/libbioapi_mds300.so&lt;br /&gt;
            libbioapi_dummy100.so.0 (libc6) =&amp;gt; /opt/bioapi/lib/libbioapi_dummy100.so.0&lt;br /&gt;
            libbioapi_dummy100.so (libc6) =&amp;gt; /opt/bioapi/lib/libbioapi_dummy100.so&lt;br /&gt;
&lt;br /&gt;
and the Sample program also works allowing me to enroll and test a fingerprint.&lt;br /&gt;
&lt;br /&gt;
My system is SuSE 10 with the kernel of 2.6.13-15. Any ideas?&lt;br /&gt;
&lt;br /&gt;
Thanks.&lt;br /&gt;
&lt;br /&gt;
--[[User:Tyne|Tyne]] 09:51, 12 Jan 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
==xscreensaver 4.23+fingerprint.patch causes xscreensaver-gl to crash kernel==&lt;br /&gt;
&lt;br /&gt;
I've gotten bioapi and 'Sample' to allow me to enroll my fingerprint, and I've also experienced the 'two logon' issue. &lt;br /&gt;
&lt;br /&gt;
I compiled xscreensaver 4.23 (though it seemed that apt came with 4.24) and applied the patch. My goal was to have the fingerprint prompt come up and to see the &amp;quot;bad image&amp;quot; of the fingerprint scan.&lt;br /&gt;
&lt;br /&gt;
The first time I did this, xscreensaver-gl took a dump and was causing kernel crashes. So I went and got the newest xscreensaver source and patches, and applied the bioapi patch to those. It worked (meaning it didnt crash the kernel anymore ;b )&lt;br /&gt;
&lt;br /&gt;
It would seem that there is a /etc/pam.d/xscreensaver, so I commented everything out of that except the bioapi line. &lt;br /&gt;
&lt;br /&gt;
Locking xscreensaver, then attempting to unlock didnt show me any fingerprint requirements, and my password didnt work.&lt;br /&gt;
&lt;br /&gt;
I'm wondering if theres something that was left out of the xscreensaver howto? or if theres anyone out there who's gotten the xscreensaver portion of this to work, who would be willing to help me out :)&lt;br /&gt;
&lt;br /&gt;
--[[User:Viss|Viss]] 11:15am, 5 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== gdm hangs on kde logout ==&lt;br /&gt;
&lt;br /&gt;
Hi.&lt;br /&gt;
&lt;br /&gt;
I am using a Thinkpad t43, installed with gentoo.&lt;br /&gt;
I run gdm as the login manager, with kde 3.4 and enlightenment dr16 as the window manager.&lt;br /&gt;
&lt;br /&gt;
I followed the steps in the wiki, and the biometric scanner is now working fine, appart from the fact that when I close/end the session I just get a blank screen, in place of the gdm login screen.&lt;br /&gt;
&lt;br /&gt;
Disabling the biometrics (by setting the pam.d file back to their originals), the session ends fine. I do this for a few times, and then set the biometrics back again, and it work fine for a few logouts, and then back to the blank screen again.&lt;br /&gt;
&lt;br /&gt;
I can do ctrl+shift+f1 to get to a console window and from there I can issue a shutdown.&lt;br /&gt;
Although this works ok, it is a bit of a pain.&lt;br /&gt;
&lt;br /&gt;
Any ideas ?&lt;br /&gt;
&lt;br /&gt;
== 'gksudo' Doesn't show biopam finger swipe prompt... ==&lt;br /&gt;
&lt;br /&gt;
Hey all,&lt;br /&gt;
&lt;br /&gt;
First off... this is an excellent how-to!  I have no real interest in using fingerprint scanner with xscreensaver, but it was up and working with everything else on my system pretty much effortlessly.&lt;br /&gt;
&lt;br /&gt;
I'm running Ubuntu Breezy Badger 5.10 on an IBM T43p (2678) and have run into two oddities:&lt;br /&gt;
1) /etc/pam.d/xscreensaver - as it is initially configured, if you have an xscreensaver session set to require password (or xlock with screensaver) then you get prompted for the normal text-password entry and then will be prompted to swipe your finger... This is easily fixed by commenting out the '@include common-auth' line in /etc/pam.d/xscreensaver and adding the line 'auth required pam_unix.so nullok_secure'.  After that change it only prompts for the text-password entry challenge.&lt;br /&gt;
&lt;br /&gt;
2) gksudo - This is more of a pain... I can use the fingerprint scanner with gksudo, but gksudo doesn't prompt with the (ugly-but-functional) finger swipe dialog the way that gdm does during login or xscreensaver does when configured as mentioned above (pre-fix).  So, if I start a Gnome app launcher that is prepended with gksudo, nothing appears to happen until I swipe my finger and then the app gets launched.  That's cool and all, but there are times (esp. when multi-tasking) when I forget to swipe and then go &amp;quot;what happened to xxxxx? oh yeah...&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Anyway... does anyone have an idea of what I can do to get the dialog to appear?&lt;br /&gt;
&lt;br /&gt;
thanx&lt;br /&gt;
&lt;br /&gt;
--[[User:JELaVallee|JELaVallee]] 05:56, 20 February 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
The gksudo problem is a restriction from the X server. It doesn't allow to grab the display for other users than the logged-in one. And the pam_bioapi is invoked as root.&lt;br /&gt;
&lt;br /&gt;
--[[User:Whoopie|Whoopie]] 13:10, 20 February 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
That makes sense... so, now I have to wonder, is there a patchable work-around like the xscreensaver one that could allow for this to work?  Where should I research such?  gksu's project or is this more an issue at the X11-level?&lt;br /&gt;
&lt;br /&gt;
--[[User:JELaVallee|JELaVallee]] 19:38, 27 February 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
I got it working. Grab out the newer pam-bioapi from CVS (http://savannah.nongnu.org/cvs/?group=pam-bioapi). This version supports &amp;quot;multi-finger&amp;quot; when using the sqlite3 database. And it supports defining the used display.&lt;br /&gt;
Change your line in your /etc/pam.d/ files like this:&lt;br /&gt;
&lt;br /&gt;
auth            sufficient      pam_bioapi.so   {5550454b-2054-464d-2f45-535320425350}  /etc/bioapi/pam/bioshadow.db :0&lt;br /&gt;
&lt;br /&gt;
--[[User:Whoopie|Whoopie]] 14:27, 1 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Very cool... Did you run into any issues rebuilding/installing this?  I'll give it a shot this evening... THANKS!&lt;br /&gt;
&lt;br /&gt;
--[[User:JELaVallee|JELaVallee]] 21:07, 1 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Invoke 'xhost +local:' should be able to let gksudo work. Or just blindly sweap the finger. ;)&lt;br /&gt;
&lt;br /&gt;
--[[User:YChao|YChao]] 21:25, 7 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== Multifinger ==&lt;br /&gt;
&lt;br /&gt;
Wow, theres a new version of pam_bioapi which supports multifinger enrollment and user identification.&lt;br /&gt;
I'll break my system with that this evening :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yes, but I'm searching the patch for xdm. The download page from Josef Hajas (http://nax.hn.org/pub/bioapi/) is down. Does anybody have it?&lt;br /&gt;
&lt;br /&gt;
Update: The patch can be found here: http://www.qrivy.net/~michael/blua/xdm_bio.patch&lt;br /&gt;
&lt;br /&gt;
--[[User:Whoopie|Whoopie]] 17:43, 1 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Tried the newest pam-bioapi from CVS (http://savannah.nongnu.org/cvs/?group=pam-bioapi) on FC3. Failed on enrolling fingerprints: ({{path|/var/log/secure|}})&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Mar  9 15:30:40 localhost pam_bioapi[32407]: Can't open database: library routine called out of&lt;br /&gt;
sequence&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Could anyone help?&lt;br /&gt;
&lt;br /&gt;
--[[User:Ychao|Ychao]] 00:38, 10 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
I don't know how to solve it. It seems to be a problem with sqlite3. Which version do you use? Under Ubuntu Breezy, it's 3.2.1.&lt;br /&gt;
&lt;br /&gt;
--[[User:Whoopie|Whoopie]] 12:27, 10 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Did anybody tried multifinger with BioAPI? I am interested in multifinger at all, not only PAM.&lt;br /&gt;
&lt;br /&gt;
Updated:&lt;br /&gt;
&lt;br /&gt;
succesfully installed pam_bioapi with multifinger support, some info:&lt;br /&gt;
&lt;br /&gt;
use: &amp;lt;code&amp;gt;auth sufficient pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi/pam/bioshadow.db :0&amp;lt;/code&amp;gt; in pam.d, the bioshadow column is path to bioapi sqlite database.&lt;br /&gt;
&lt;br /&gt;
if authentication doesn't work, edit /etc/syslog.conf and write line *.alert /var/log/syslog, so you see pam_bioapi messages in /var/log/syslog&lt;br /&gt;
most common error is missing biodata table, newest pam_bioapi version should create it automatically, but if it doesn't, go to /etc/bioapi/pam/ and run command &amp;lt;code&amp;gt;sqlite3 bioshadow.db&amp;lt;/code&amp;gt;, then insert this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;CREATE TABLE biodata (id INTEGER PRIMARY KEY,uid INTEGER,uuid TEXT,header BLOB,data BLOB,signature BLOB,type INTEGER,other BLOB);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you must then enroll at least one fingerprint to the database, do it using test_enroll-pam_bioapi from pam_bioapi distribution. note that you must have root user enrolled in order to use &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
--[[User:MeBa|MeBa]] 16:58, 22 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== GNOME Screensaver support ==&lt;br /&gt;
&lt;br /&gt;
Did anybody try to port the xscreensaver patch to gnome-screensaver? Since Ubuntu Dapper will be shiped with it, it would be nice to have it working then with the fingerprint reader.&lt;br /&gt;
&lt;br /&gt;
Update: Initial support can be found in gnome-screensaver CVS. See [http://bugzilla.gnome.org/show_bug.cgi?id=338635 bugreport].&lt;br /&gt;
&lt;br /&gt;
--[[User:Whoopie|Whoopie]] 12:36, 16 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
I'm just working on changes in pam_bioapi which makes gui callbacks from gnome-screensaver possible. But first I have to debug BioAPI error #194d after hibernation because gnome-screensaver is one of the applications returning this error.&lt;br /&gt;
&lt;br /&gt;
--[[User:Nax|nax]] 23:59, 9 July 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== No sources for bioapi 1.2.3 ==&lt;br /&gt;
&lt;br /&gt;
There doesn't seem to be any sources available for the recommended Debian package bioapi-1.2.3.  That's rather distressing since this is security-related software.  A google search doesn't seem to be turning up anything, either.  Anybody have a lead on where to find sources?&lt;br /&gt;
&lt;br /&gt;
--[[User:TedTso|TedTso]] 7:47, 29 Apri 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Strange issue on GDM login ==&lt;br /&gt;
&lt;br /&gt;
I successfully have the fingerprint reader running. Everything is working nicely, except when I try to login with GDM for the first time. The login seems to work fine (the PAM_BIOAPI seems to return true) but GDM hangs then. This issue does not occur when I already logged in using password and logged out again or if I kill GDM when it hangs after the first attempt. Anyone an idea on this?&lt;br /&gt;
&lt;br /&gt;
--[[User:Dotxp|dotxp]] 22:54, 2 May 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Don't ask for finger scan when lid closed ==&lt;br /&gt;
&lt;br /&gt;
When using an external CRT+keyboard+mouse with the LD lid closed, it's quiet annoying to have to reach over and open the lid in order to do a finger scan.&lt;br /&gt;
Any idea how to make PAM use the fingerprint reader when the lid is open, but skip it when the lid is closed?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 13:30, 7 May 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
I edited my /etc/gdm/Init/Default script in a way, that it changes /etc/pam.d/common-auth depending on the lid state: When the lid is closed, the file is replaced by a version without the lines for the finterprint reader, and of course the opposite action when the lid is open.&lt;br /&gt;
&lt;br /&gt;
--[[User:Aerials|Aerials]] 15:52, 9 July 2006 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Unable to initialize Bioapi framework, BioAPI error #:3 ==&lt;br /&gt;
&lt;br /&gt;
I see some other discussion on this page about the dreaded &amp;quot;Unable to initialize Bioapi framework, BioAPI error #:3&amp;quot; error, but the only solution i can see seems really complicated -- adding users to groups when they log in, etc. Is that really the simplest way to make xscreensaver work? I'm the only user of my laptop -- the only account who will ever log in, the only fingerprint in the database, the only person who will ever run xscreensaver. Is there some quick easy way to make xscreensaver unlock when i swipe my finger?&lt;br /&gt;
&lt;br /&gt;
-- [[User:Mike Schiraldi|Mike Schiraldi]] 19:52, 16 May 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Security level ==&lt;br /&gt;
&lt;br /&gt;
[http://www.upek.com/support/pdf/BioAPI_PerfectMatchBSP1.7.pdf UPEK PerfectMatch Algorithm]&lt;br /&gt;
According to this link, highest security level is 0 which is opposite to 5 mentioned in the article. What is correct?&lt;br /&gt;
&lt;br /&gt;
Update: Well,TFMESS_BSP_LIN.pdf, i downloaded somewhere stated 5 as highest security level. So, ?&lt;br /&gt;
&lt;br /&gt;
== How good is it? ==&lt;br /&gt;
&lt;br /&gt;
How strong is the security that results? Is it actually as good as, say, a 10-character password, or is it the sort of thing you can fool&lt;br /&gt;
with some gelatin and a used glass? My inclination is not to trust it - but perhaps someone more knowledgeable would care to comment?&lt;br /&gt;
-- [[User:RichardNeill|RichardNeill]] 16:58, 25 July 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Integrated_Fingerprint_Reader&amp;diff=23612</id>
		<title>Integrated Fingerprint Reader</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Integrated_Fingerprint_Reader&amp;diff=23612"/>
		<updated>2006-07-25T14:49:20Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Linux Support  added GPL driver link */&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:fingerprintreader.jpg|IBM Integrated Fingerprint Reader]] __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;
===Integrated Fingerprint Reader===&lt;br /&gt;
IBM released a second generation of T42 models in Autumn 2004 featuring Intel Pentium M 765 processors and an integrated fingerprint reader.&lt;br /&gt;
&lt;br /&gt;
The fingerprint reader is produced by a company called UPEK, which specializes in the manufacture of fingerprint readers.&lt;br /&gt;
&lt;br /&gt;
It seems to be integrated as a USB device.&lt;br /&gt;
&lt;br /&gt;
Furthermore, IBM states that there's an interface with the [[Embedded Security Subsystem]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Linux Support==&lt;br /&gt;
&lt;br /&gt;
There is a new GPL driver here: http://pavelmachek.livejournal.com/25060.html&lt;br /&gt;
&lt;br /&gt;
A closed source driver from the vendor has been released.  It interfaces to the hardware as a user-space USB driver through {{path|/proc/bus/usb|}} and provides a BioAPI 1.10 device, which can then be interfaced to pam for authentication by user programs.  The driver can be downloaded from http://www.upek.com/support/dl_linux_bsp.asp; see the [[How to enable the fingerprint reader|corresponding HOWTO]] for detailed instructions.&lt;br /&gt;
&lt;br /&gt;
==Related Links==&lt;br /&gt;
* [http://www.upek.com/customers/ct_notebook_ibm.asp UPEK customer report about the deal with IBM]&lt;br /&gt;
* [http://www.trustedreviews.com/article.aspx?page=1643&amp;amp;head=36 Review from TrustedReviews of the fingerprint scanner]&lt;br /&gt;
* [http://biomark.org.ru/en/ A (Russian) project that provides support for a (different model) of fingerprint scanner] (also a USB device, though)&lt;br /&gt;
* [http://linuxbiometrics.com/modules/newbb/viewtopic.php?topic_id=8&amp;amp;forum=1 Discussion of the T42/T42p fingerprint scanner on the Linux Biometrics site]  ''(Linux Biometrics site has blown up so for now this link does not work)''&lt;br /&gt;
* [http://linuxbiometrics.com/modules/news/article.php?storyid=16 UPEK announcement (planned, closed-source) support for BioAPI on Linux] The first release was scheduled for September 2005; the final driver came out in December 2005.&lt;br /&gt;
&lt;br /&gt;
==Models featuring this Technology==&lt;br /&gt;
*ThinkPad {{T42}}, {{T42p}}, {{T43}}, {{T43p}}, {{T60}}, {{T60p}}&lt;br /&gt;
*ThinkPad {{X41}}, {{X41T}}, {{X60}}, {{X60s}}&lt;br /&gt;
*ThinkPad {{Z60m}}, {{Z60t}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Glossary]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23198</id>
		<title>How to hotswap the UltraBase</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23198"/>
		<updated>2006-07-14T23:26:26Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here is how I set up an {{X22}} to allow hot ejection/removal of the ultrabase. See also [[How_to_hotswap_UltraBay_devices|this related page]] for the UltraBay. These instructions are well-tested, but ymmv.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* Uses lt_hotswap to preserve DMA on re-insert&lt;br /&gt;
* Idiot-proof (relatively)&lt;br /&gt;
* Scripts also work without lt_hotswap (using the older way, idectl).&lt;br /&gt;
* Makes use of thinkpad beeps to inform user.&lt;br /&gt;
&lt;br /&gt;
===System===&lt;br /&gt;
&lt;br /&gt;
* X22 thinkpad + ultrabase + DVD-R&lt;br /&gt;
* [[lt_hotswap]] version 0.3.9&lt;br /&gt;
* kernel-2.6.17.1&lt;br /&gt;
* xorg 6.9.0&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
===rc.local===&lt;br /&gt;
First, make sure the lt_hotswap module is loaded. Add this to /etc/rc.local (or use modprobe.preload, if you prefer)&lt;br /&gt;
 echo &amp;quot;Loading lt_hotswap module&amp;quot;&lt;br /&gt;
 modprobe lt_hotswap hdc_dock=1&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/lths===&lt;br /&gt;
&lt;br /&gt;
Disable the existing lths script. Here is the modified /etc/acpi/events/lths:&lt;br /&gt;
 # Call the LTHS script&lt;br /&gt;
 event=lths.*&lt;br /&gt;
 #action=/usr/local/sbin/lths.sh %e&lt;br /&gt;
 action=echo &amp;quot;Not invoking lths.sh; this is now done by the ultrabase_eject and insert scripts instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_eject===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase eject event. Here is /etc/acpi/events/ultrabase_eject&lt;br /&gt;
 #Ultrabase eject button has been pressed&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000003.00000000&lt;br /&gt;
 event=lths.MSTR.00000003.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_insert===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase insert event. Here is /etc/acpi/events/ultrabase_insert&lt;br /&gt;
 #Ultrabase has been re-inserted&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000001.00000000&lt;br /&gt;
 event=lths.MSTR.00000001.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_eject.sh===&lt;br /&gt;
&lt;br /&gt;
This is the actual script which does the ejection. It is /etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
* Note the dependency on '''cddb-id'''.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;syncing disks for safety&amp;quot;&lt;br /&gt;
 sync&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Unregistering IDE interface for CDROM and preparing to eject.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #Note: the BIOS will already deal with the ultrabay LED (number 3). It will:&lt;br /&gt;
 #  * turn it on when the bay is loaded&lt;br /&gt;
 #  * turn it off when the bay is unloaded&lt;br /&gt;
 #  * blink it when it is waiting between an eject request and an eject. (Linux never takes long enough to see this!)&lt;br /&gt;
 &lt;br /&gt;
 #What if there is a disk in the drive?&lt;br /&gt;
 #Case 1: there is an umounted CDROM, or an AudioCD/DVD which is NOT playing.&lt;br /&gt;
 # =&amp;gt; It's OK to proceed.&lt;br /&gt;
 &lt;br /&gt;
 #Case 2: there is a mounted CDROM. &lt;br /&gt;
 # =&amp;gt; we MUST unmount it, or give up on ejecting.&lt;br /&gt;
 if grep hdc /proc/mounts &amp;gt;/dev/null; then&lt;br /&gt;
        echo &amp;quot;There is a mounted filesystem on /dev/hdc. Trying to unmount it&amp;quot;&lt;br /&gt;
        umount /dev/hdc&lt;br /&gt;
        if [ $? == 0 ]; then&lt;br /&gt;
                echo &amp;quot;Successfully unmounted the CDROM.&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo &amp;quot;The CDROM is busy; can't unmount. Do not try to undock.&amp;quot;&lt;br /&gt;
                echo 9 &amp;gt; /proc/acpi/ibm/beep   #This is an &amp;quot;unhappy, warning beep&amp;quot;&lt;br /&gt;
                exit 1&lt;br /&gt;
        fi&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Case 3: there is a AudioCD/DVD which is currently playing.&lt;br /&gt;
 #How do we detect this? It could be just using cdplay (which has no associated process)&lt;br /&gt;
 #The following methd is ugly, and it requires the cddb-id program. However, it does work.&lt;br /&gt;
 #Assuming that we have already ruled out a mounted filesystem, then...&lt;br /&gt;
 CDDBID=$(cddb-id /dev/hdc 2&amp;gt;/dev/null)&lt;br /&gt;
 if [ -n &amp;quot;$CDDBID&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;There is a CD in the drive. Ejecting it&amp;quot;&lt;br /&gt;
        eject /dev/hdc   #Buglet: we don't necessarily want to eject the disk; we just want to be sure it has stopped playing.&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #We're now OK to proceed.&lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
         #Eject the bay using lths.&lt;br /&gt;
        echo -n &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths&lt;br /&gt;
 else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
         #Unregister IDE interface 1. This WILL cause a kernel panic if there is anything in the drive!&lt;br /&gt;
        idectl 1 off&lt;br /&gt;
         #Tell the thinkpad the bay is to be ejected&lt;br /&gt;
        echo eject &amp;gt; /proc/acpi/ibm/bay&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Beep happily&lt;br /&gt;
 echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 echo &amp;quot;OK to undock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_insert.sh===&lt;br /&gt;
&lt;br /&gt;
This script is called on insertion. It is /etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;Ultrabase has been inserted. Re-registering IDE interface for CDROM.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
        echo &amp;quot;Enabling DMA on /dev/hdc&amp;quot;&lt;br /&gt;
        hdparm -d 1 -u 1 -c 1 /dev/hdc&lt;br /&gt;
 &lt;br /&gt;
        #LTHS already beeps; no beep required here.&lt;br /&gt;
 else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        #Register IDE interface 1&lt;br /&gt;
        idectl 1 rescan&lt;br /&gt;
        #Turn DMA on again. But this is probably a vain attempt; it will fail unless we are using lt_hotswap.&lt;br /&gt;
        sleep 2&lt;br /&gt;
        hdparm -d1 /dev/hdc || echo &amp;quot;WARNING: DMA cannot be re-enabled for hdc after insert. You'll have to reboot for now.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        #Beep happily&lt;br /&gt;
        echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Redocked successfully&amp;quot;&lt;br /&gt;
 echo &amp;quot;Note: KDE's volume manager might not work anymore with the CD/DVD drive.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Debugging==&lt;br /&gt;
&lt;br /&gt;
* The easiest way to check what is happening is:&lt;br /&gt;
 tail -f /var/log/acpid&lt;br /&gt;
&lt;br /&gt;
* Remember, after modifying anything in /etc/acpi/events, to reload the acpid rules:&lt;br /&gt;
 killall -HUP acpid&lt;br /&gt;
&lt;br /&gt;
* Note that stdout from all scripts ends up in /var/log/acpid. But to communicate a message with the user, it's best to use either the various thinkpad beeps, or perhaps the thinklight.&lt;br /&gt;
&lt;br /&gt;
* Note: idectl and lt_hotswap '''really''' don't get along together. You will lock the system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
 0) Save your files; this could (possibly) crash the kernel.&lt;br /&gt;
 1) Press the &amp;quot;Request ejection&amp;quot; button, which is on the front of the ultrabase (located between CD drive and floppy).&lt;br /&gt;
 2) The thinkpad should beep happily (high-low). If so, proceed. Otherwise, if it beeps unhappily (3 very short high beeps), it was unable to unmount a busy filesystem in the optical drive.&lt;br /&gt;
 3) Gently pull the release handles (back left/right of the ultrabase). If it beeps unhappily (long, high), stop pulling. &lt;br /&gt;
 4) Pull the handles harder to physically eject the thinkpad.&lt;br /&gt;
 5) Later, reseat the thinkpad with a firm push.&lt;br /&gt;
&lt;br /&gt;
Note: If you change your mind after the thinkpad has beeped happily at (2), you should eject the laptop, and then re-insert.&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23197</id>
		<title>How to hotswap the UltraBase</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23197"/>
		<updated>2006-07-14T23:24:01Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: Usage.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here is how I set up an {{X22}} to allow hot ejection/removal of the ultrabase. See also [[How_to_hotswap_UltraBay_devices|this related page]] for the UltraBay. These instructions are well-tested, but ymmv.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* Uses lt_hotswap to preserve DMA on re-insert&lt;br /&gt;
* Idiot-proof (relatively)&lt;br /&gt;
* Scripts also work without lt_hotswap (using the older way, idectl).&lt;br /&gt;
* Makes use of thinkpad beeps to inform user.&lt;br /&gt;
&lt;br /&gt;
===System===&lt;br /&gt;
&lt;br /&gt;
* X22 thinkpad + ultrabase + DVD-R&lt;br /&gt;
* [[lt_hotswap]] version 0.3.9&lt;br /&gt;
* kernel-2.6.17.1&lt;br /&gt;
* xorg 6.9.0&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
===rc.local===&lt;br /&gt;
First, make sure the lt_hotswap module is loaded. Add this to /etc/rc.local (or use modprobe.preload, if you prefer)&lt;br /&gt;
 echo &amp;quot;Loading lt_hotswap module&amp;quot;&lt;br /&gt;
 modprobe lt_hotswap hdc_dock=1&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/lths===&lt;br /&gt;
&lt;br /&gt;
Disable the existing lths script. Here is the modified /etc/acpi/events/lths:&lt;br /&gt;
 # Call the LTHS script&lt;br /&gt;
 event=lths.*&lt;br /&gt;
 #action=/usr/local/sbin/lths.sh %e&lt;br /&gt;
 action=echo &amp;quot;Not invoking lths.sh; this is now done by the ultrabase_eject and insert scripts instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_eject===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase eject event. Here is /etc/acpi/events/ultrabase_eject&lt;br /&gt;
 #Ultrabase eject button has been pressed&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000003.00000000&lt;br /&gt;
 event=lths.MSTR.00000003.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_insert===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase insert event. Here is /etc/acpi/events/ultrabase_insert&lt;br /&gt;
 #Ultrabase has been re-inserted&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000001.00000000&lt;br /&gt;
 event=lths.MSTR.00000001.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_eject.sh===&lt;br /&gt;
&lt;br /&gt;
This is the actual script which does the ejection. It is /etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
* Note the dependency on '''cddb-id'''.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;syncing disks for safety&amp;quot;&lt;br /&gt;
 sync&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Unregistering IDE interface for CDROM and preparing to eject.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #Note: the BIOS will already deal with the ultrabay LED (number 3). It will:&lt;br /&gt;
 #  * turn it on when the bay is loaded&lt;br /&gt;
 #  * turn it off when the bay is unloaded&lt;br /&gt;
 #  * blink it when it is waiting between an eject request and an eject. (Linux never takes long enough to see this!)&lt;br /&gt;
 &lt;br /&gt;
 #What if there is a disk in the drive?&lt;br /&gt;
 #Case 1: there is an umounted CDROM, or an AudioCD/DVD which is NOT playing.&lt;br /&gt;
 # =&amp;gt; It's OK to proceed.&lt;br /&gt;
 &lt;br /&gt;
 #Case 2: there is a mounted CDROM. &lt;br /&gt;
 # =&amp;gt; we MUST unmount it, or give up on ejecting.&lt;br /&gt;
 if grep hdc /proc/mounts &amp;gt;/dev/null; then&lt;br /&gt;
        echo &amp;quot;There is a mounted filesystem on /dev/hdc. Trying to unmount it&amp;quot;&lt;br /&gt;
        umount /dev/hdc&lt;br /&gt;
        if [ $? == 0 ]; then&lt;br /&gt;
                echo &amp;quot;Successfully unmounted the CDROM.&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo &amp;quot;The CDROM is busy; can't unmount. Do not try to undock.&amp;quot;&lt;br /&gt;
                echo 9 &amp;gt; /proc/acpi/ibm/beep   #This is an &amp;quot;unhappy, warning beep&amp;quot;&lt;br /&gt;
                exit 1&lt;br /&gt;
        fi&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Case 3: there is a AudioCD/DVD which is currently playing.&lt;br /&gt;
 #How do we detect this? It could be just using cdplay (which has no associated process)&lt;br /&gt;
 #The following methd is ugly, and it requires the cddb-id program. However, it does work.&lt;br /&gt;
 #Assuming that we have already ruled out a mounted filesystem, then...&lt;br /&gt;
 CDDBID=$(cddb-id /dev/hdc 2&amp;gt;/dev/null)&lt;br /&gt;
 if [ -n &amp;quot;$CDDBID&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;There is a CD in the drive. Ejecting it&amp;quot;&lt;br /&gt;
        eject /dev/hdc   #Buglet: we don't necessarily want to eject the disk; we just want to be sure it has stopped playing.&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #We're now OK to proceed.&lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
         #Eject the bay using lths.&lt;br /&gt;
        echo -n &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths&lt;br /&gt;
 else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
         #Unregister IDE interface 1. This WILL cause a kernel panic if there is anything in the drive!&lt;br /&gt;
        idectl 1 off&lt;br /&gt;
         #Tell the thinkpad the bay is to be ejected&lt;br /&gt;
        echo eject &amp;gt; /proc/acpi/ibm/bay&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Beep happily&lt;br /&gt;
 echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 echo &amp;quot;OK to undock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_insert.sh===&lt;br /&gt;
&lt;br /&gt;
This script is called on insertion. It is /etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;Ultrabase has been inserted. Re-registering IDE interface for CDROM.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
        echo &amp;quot;Enabling DMA on /dev/hdc&amp;quot;&lt;br /&gt;
        hdparm -d 1 -u 1 -c 1 /dev/hdc&lt;br /&gt;
 &lt;br /&gt;
        #LTHS already beeps; no beep required here.&lt;br /&gt;
 else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        #Register IDE interface 1&lt;br /&gt;
        idectl 1 rescan&lt;br /&gt;
        #Turn DMA on again. But this is probably a vain attempt; it will fail unless we are using lt_hotswap.&lt;br /&gt;
        sleep 2&lt;br /&gt;
        hdparm -d1 /dev/hdc || echo &amp;quot;WARNING: DMA cannot be re-enabled for hdc after insert. You'll have to reboot for now.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        #Beep happily&lt;br /&gt;
        echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Redocked successfully&amp;quot;&lt;br /&gt;
 echo &amp;quot;Note: KDE's volume manager might not work anymore with the CD/DVD drive.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Debugging==&lt;br /&gt;
&lt;br /&gt;
* The easiest way to check what is happening is:&lt;br /&gt;
 tail -f /var/log/acpid&lt;br /&gt;
&lt;br /&gt;
* Remember, after modifying anything in /etc/acpi/events, to reload the acpid rules:&lt;br /&gt;
 killall -HUP acpid&lt;br /&gt;
&lt;br /&gt;
* Note that stdout from all scripts ends up in /var/log/acpid. But to communicate a message with the user, it's best to use either the various thinkpad beeps, or perhaps the thinklight.&lt;br /&gt;
&lt;br /&gt;
* Note: idectl and lt_hotswap '''really''' don't get along together. You will lock the system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
0) Save your files; this could (possibly) crash the kernel.&lt;br /&gt;
1) Press the &amp;quot;Request ejection&amp;quot; button, which is on the front of the ultrabase (located between CD drive and floppy).&lt;br /&gt;
2) The thinkpad should beep happily (high-low). If so, proceed. Otherwise, if it beeps unhappily (3 very short high beeps), it was unable&lt;br /&gt;
to unmount a busy filesystem in the optical drive.&lt;br /&gt;
3) Gently pull the release handles (back left/right of the ultrabase). If it beeps unhappily (long, high), stop pulling. &lt;br /&gt;
4) Pull the handles harder to physically eject the thinkpad.&lt;br /&gt;
...&lt;br /&gt;
5) Reseat the thinkpad with a firm push.&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23196</id>
		<title>How to hotswap the UltraBase</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23196"/>
		<updated>2006-07-14T23:19:09Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here is how I set up an {{X22}} to allow hot ejection/removal of the ultrabase. See also [[How_to_hotswap_UltraBay_devices|this related page]] for the UltraBay. These instructions are well-tested, but ymmv.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* Uses lt_hotswap to preserve DMA on re-insert&lt;br /&gt;
* Idiot-proof (relatively)&lt;br /&gt;
* Scripts also work without lt_hotswap (using the older way, idectl).&lt;br /&gt;
* Makes use of thinkpad beeps to inform user.&lt;br /&gt;
&lt;br /&gt;
===System===&lt;br /&gt;
&lt;br /&gt;
* X22 thinkpad + ultrabase + DVD-R&lt;br /&gt;
* [[lt_hotswap]] version 0.3.9&lt;br /&gt;
* kernel-2.6.17.1&lt;br /&gt;
* xorg 6.9.0&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
===rc.local===&lt;br /&gt;
First, make sure the lt_hotswap module is loaded. Add this to /etc/rc.local (or use modprobe.preload, if you prefer)&lt;br /&gt;
 echo &amp;quot;Loading lt_hotswap module&amp;quot;&lt;br /&gt;
 modprobe lt_hotswap hdc_dock=1&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/lths===&lt;br /&gt;
&lt;br /&gt;
Disable the existing lths script. Here is the modified /etc/acpi/events/lths:&lt;br /&gt;
 # Call the LTHS script&lt;br /&gt;
 event=lths.*&lt;br /&gt;
 #action=/usr/local/sbin/lths.sh %e&lt;br /&gt;
 action=echo &amp;quot;Not invoking lths.sh; this is now done by the ultrabase_eject and insert scripts instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_eject===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase eject event. Here is /etc/acpi/events/ultrabase_eject&lt;br /&gt;
 #Ultrabase eject button has been pressed&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000003.00000000&lt;br /&gt;
 event=lths.MSTR.00000003.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_insert===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase insert event. Here is /etc/acpi/events/ultrabase_insert&lt;br /&gt;
 #Ultrabase has been re-inserted&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000001.00000000&lt;br /&gt;
 event=lths.MSTR.00000001.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_eject.sh===&lt;br /&gt;
&lt;br /&gt;
This is the actual script which does the ejection. It is /etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
* Note the dependency on '''cddb-id'''.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;syncing disks for safety&amp;quot;&lt;br /&gt;
 sync&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Unregistering IDE interface for CDROM and preparing to eject.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #Note: the BIOS will already deal with the ultrabay LED (number 3). It will:&lt;br /&gt;
 #  * turn it on when the bay is loaded&lt;br /&gt;
 #  * turn it off when the bay is unloaded&lt;br /&gt;
 #  * blink it when it is waiting between an eject request and an eject. (Linux never takes long enough to see this!)&lt;br /&gt;
 &lt;br /&gt;
 #What if there is a disk in the drive?&lt;br /&gt;
 #Case 1: there is an umounted CDROM, or an AudioCD/DVD which is NOT playing.&lt;br /&gt;
 # =&amp;gt; It's OK to proceed.&lt;br /&gt;
 &lt;br /&gt;
 #Case 2: there is a mounted CDROM. &lt;br /&gt;
 # =&amp;gt; we MUST unmount it, or give up on ejecting.&lt;br /&gt;
 if grep hdc /proc/mounts &amp;gt;/dev/null; then&lt;br /&gt;
        echo &amp;quot;There is a mounted filesystem on /dev/hdc. Trying to unmount it&amp;quot;&lt;br /&gt;
        umount /dev/hdc&lt;br /&gt;
        if [ $? == 0 ]; then&lt;br /&gt;
                echo &amp;quot;Successfully unmounted the CDROM.&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo &amp;quot;The CDROM is busy; can't unmount. Do not try to undock.&amp;quot;&lt;br /&gt;
                echo 9 &amp;gt; /proc/acpi/ibm/beep   #This is an &amp;quot;unhappy, warning beep&amp;quot;&lt;br /&gt;
                exit 1&lt;br /&gt;
        fi&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Case 3: there is a AudioCD/DVD which is currently playing.&lt;br /&gt;
 #How do we detect this? It could be just using cdplay (which has no associated process)&lt;br /&gt;
 #The following methd is ugly, and it requires the cddb-id program. However, it does work.&lt;br /&gt;
 #Assuming that we have already ruled out a mounted filesystem, then...&lt;br /&gt;
 CDDBID=$(cddb-id /dev/hdc 2&amp;gt;/dev/null)&lt;br /&gt;
 if [ -n &amp;quot;$CDDBID&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;There is a CD in the drive. Ejecting it&amp;quot;&lt;br /&gt;
        eject /dev/hdc   #Buglet: we don't necessarily want to eject the disk; we just want to be sure it has stopped playing.&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #We're now OK to proceed.&lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
         #Eject the bay using lths.&lt;br /&gt;
        echo -n &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths&lt;br /&gt;
 else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
         #Unregister IDE interface 1. This WILL cause a kernel panic if there is anything in the drive!&lt;br /&gt;
        idectl 1 off&lt;br /&gt;
         #Tell the thinkpad the bay is to be ejected&lt;br /&gt;
        echo eject &amp;gt; /proc/acpi/ibm/bay&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Beep happily&lt;br /&gt;
 echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 echo &amp;quot;OK to undock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_insert.sh===&lt;br /&gt;
&lt;br /&gt;
This script is called on insertion. It is /etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;Ultrabase has been inserted. Re-registering IDE interface for CDROM.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
        echo &amp;quot;Enabling DMA on /dev/hdc&amp;quot;&lt;br /&gt;
        hdparm -d 1 -u 1 -c 1 /dev/hdc&lt;br /&gt;
 &lt;br /&gt;
        #LTHS already beeps; no beep required here.&lt;br /&gt;
 else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        #Register IDE interface 1&lt;br /&gt;
        idectl 1 rescan&lt;br /&gt;
        #Turn DMA on again. But this is probably a vain attempt; it will fail unless we are using lt_hotswap.&lt;br /&gt;
        sleep 2&lt;br /&gt;
        hdparm -d1 /dev/hdc || echo &amp;quot;WARNING: DMA cannot be re-enabled for hdc after insert. You'll have to reboot for now.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        #Beep happily&lt;br /&gt;
        echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Redocked successfully&amp;quot;&lt;br /&gt;
 echo &amp;quot;Note: KDE's volume manager might not work anymore with the CD/DVD drive.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Debugging==&lt;br /&gt;
&lt;br /&gt;
* The easiest way to check what is happening is:&lt;br /&gt;
 tail -f /var/log/acpid&lt;br /&gt;
&lt;br /&gt;
* Remember, after modifying anything in /etc/acpi/events, to reload the acpid rules:&lt;br /&gt;
 killall -HUP acpid&lt;br /&gt;
&lt;br /&gt;
* Note that stdout from all scripts ends up in /var/log/acpid. But to communicate a message with the user, it's best to use either the various thinkpad beeps, or perhaps the thinklight.&lt;br /&gt;
&lt;br /&gt;
* Note: idectl and lt_hotswap '''really''' don't get along together. You will lock the system.&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23195</id>
		<title>How to hotswap the UltraBase</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23195"/>
		<updated>2006-07-14T23:18:27Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* Debugging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here is how I set up an {{X22}} to allow hot ejection/removal of the ultrabase. See also [[How_to_hotswap_UltraBay_devices|this related page]] for the UltraBay. These instructions are well-tested, but ymmv.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* Uses lt_hotswap to preserve DMA on re-insert&lt;br /&gt;
* Idiot-proof (relatively)&lt;br /&gt;
* Scripts also work without lt_hotswap (using the older way, idectl).&lt;br /&gt;
&lt;br /&gt;
===System===&lt;br /&gt;
&lt;br /&gt;
* X22 thinkpad + ultrabase + DVD-R&lt;br /&gt;
* [[lt_hotswap]] version 0.3.9&lt;br /&gt;
* kernel-2.6.17.1&lt;br /&gt;
* xorg 6.9.0&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
===rc.local===&lt;br /&gt;
First, make sure the lt_hotswap module is loaded. Add this to /etc/rc.local (or use modprobe.preload, if you prefer)&lt;br /&gt;
 echo &amp;quot;Loading lt_hotswap module&amp;quot;&lt;br /&gt;
 modprobe lt_hotswap hdc_dock=1&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/lths===&lt;br /&gt;
&lt;br /&gt;
Disable the existing lths script. Here is the modified /etc/acpi/events/lths:&lt;br /&gt;
 # Call the LTHS script&lt;br /&gt;
 event=lths.*&lt;br /&gt;
 #action=/usr/local/sbin/lths.sh %e&lt;br /&gt;
 action=echo &amp;quot;Not invoking lths.sh; this is now done by the ultrabase_eject and insert scripts instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_eject===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase eject event. Here is /etc/acpi/events/ultrabase_eject&lt;br /&gt;
 #Ultrabase eject button has been pressed&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000003.00000000&lt;br /&gt;
 event=lths.MSTR.00000003.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_insert===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase insert event. Here is /etc/acpi/events/ultrabase_insert&lt;br /&gt;
 #Ultrabase has been re-inserted&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000001.00000000&lt;br /&gt;
 event=lths.MSTR.00000001.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_eject.sh===&lt;br /&gt;
&lt;br /&gt;
This is the actual script which does the ejection. It is /etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
* Note the dependency on '''cddb-id'''.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;syncing disks for safety&amp;quot;&lt;br /&gt;
 sync&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Unregistering IDE interface for CDROM and preparing to eject.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #Note: the BIOS will already deal with the ultrabay LED (number 3). It will:&lt;br /&gt;
 #  * turn it on when the bay is loaded&lt;br /&gt;
 #  * turn it off when the bay is unloaded&lt;br /&gt;
 #  * blink it when it is waiting between an eject request and an eject. (Linux never takes long enough to see this!)&lt;br /&gt;
 &lt;br /&gt;
 #What if there is a disk in the drive?&lt;br /&gt;
 #Case 1: there is an umounted CDROM, or an AudioCD/DVD which is NOT playing.&lt;br /&gt;
 # =&amp;gt; It's OK to proceed.&lt;br /&gt;
 &lt;br /&gt;
 #Case 2: there is a mounted CDROM. &lt;br /&gt;
 # =&amp;gt; we MUST unmount it, or give up on ejecting.&lt;br /&gt;
 if grep hdc /proc/mounts &amp;gt;/dev/null; then&lt;br /&gt;
        echo &amp;quot;There is a mounted filesystem on /dev/hdc. Trying to unmount it&amp;quot;&lt;br /&gt;
        umount /dev/hdc&lt;br /&gt;
        if [ $? == 0 ]; then&lt;br /&gt;
                echo &amp;quot;Successfully unmounted the CDROM.&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo &amp;quot;The CDROM is busy; can't unmount. Do not try to undock.&amp;quot;&lt;br /&gt;
                echo 9 &amp;gt; /proc/acpi/ibm/beep   #This is an &amp;quot;unhappy, warning beep&amp;quot;&lt;br /&gt;
                exit 1&lt;br /&gt;
        fi&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Case 3: there is a AudioCD/DVD which is currently playing.&lt;br /&gt;
 #How do we detect this? It could be just using cdplay (which has no associated process)&lt;br /&gt;
 #The following methd is ugly, and it requires the cddb-id program. However, it does work.&lt;br /&gt;
 #Assuming that we have already ruled out a mounted filesystem, then...&lt;br /&gt;
 CDDBID=$(cddb-id /dev/hdc 2&amp;gt;/dev/null)&lt;br /&gt;
 if [ -n &amp;quot;$CDDBID&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;There is a CD in the drive. Ejecting it&amp;quot;&lt;br /&gt;
        eject /dev/hdc   #Buglet: we don't necessarily want to eject the disk; we just want to be sure it has stopped playing.&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #We're now OK to proceed.&lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
         #Eject the bay using lths.&lt;br /&gt;
        echo -n &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths&lt;br /&gt;
 else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
         #Unregister IDE interface 1. This WILL cause a kernel panic if there is anything in the drive!&lt;br /&gt;
        idectl 1 off&lt;br /&gt;
         #Tell the thinkpad the bay is to be ejected&lt;br /&gt;
        echo eject &amp;gt; /proc/acpi/ibm/bay&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Beep happily&lt;br /&gt;
 echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 echo &amp;quot;OK to undock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_insert.sh===&lt;br /&gt;
&lt;br /&gt;
This script is called on insertion. It is /etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;Ultrabase has been inserted. Re-registering IDE interface for CDROM.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
        echo &amp;quot;Enabling DMA on /dev/hdc&amp;quot;&lt;br /&gt;
        hdparm -d 1 -u 1 -c 1 /dev/hdc&lt;br /&gt;
 &lt;br /&gt;
        #LTHS already beeps; no beep required here.&lt;br /&gt;
 else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        #Register IDE interface 1&lt;br /&gt;
        idectl 1 rescan&lt;br /&gt;
        #Turn DMA on again. But this is probably a vain attempt; it will fail unless we are using lt_hotswap.&lt;br /&gt;
        sleep 2&lt;br /&gt;
        hdparm -d1 /dev/hdc || echo &amp;quot;WARNING: DMA cannot be re-enabled for hdc after insert. You'll have to reboot for now.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        #Beep happily&lt;br /&gt;
        echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Redocked successfully&amp;quot;&lt;br /&gt;
 echo &amp;quot;Note: KDE's volume manager might not work anymore with the CD/DVD drive.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Debugging==&lt;br /&gt;
&lt;br /&gt;
* The easiest way to check what is happening is:&lt;br /&gt;
 tail -f /var/log/acpid&lt;br /&gt;
&lt;br /&gt;
* Remember, after modifying anything in /etc/acpi/events, to reload the acpid rules:&lt;br /&gt;
 killall -HUP acpid&lt;br /&gt;
&lt;br /&gt;
* Note that stdout from all scripts ends up in /var/log/acpid. But to communicate a message with the user, it's best to use either the various thinkpad beeps, or perhaps the thinklight.&lt;br /&gt;
&lt;br /&gt;
* Note: idectl and lt_hotswap '''really''' don't get along together. You will lock the system.&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23194</id>
		<title>How to hotswap the UltraBase</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23194"/>
		<updated>2006-07-14T23:18:01Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* /etc/acpi/actions/ultrabase_insert.sh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here is how I set up an {{X22}} to allow hot ejection/removal of the ultrabase. See also [[How_to_hotswap_UltraBay_devices|this related page]] for the UltraBay. These instructions are well-tested, but ymmv.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* Uses lt_hotswap to preserve DMA on re-insert&lt;br /&gt;
* Idiot-proof (relatively)&lt;br /&gt;
* Scripts also work without lt_hotswap (using the older way, idectl).&lt;br /&gt;
&lt;br /&gt;
===System===&lt;br /&gt;
&lt;br /&gt;
* X22 thinkpad + ultrabase + DVD-R&lt;br /&gt;
* [[lt_hotswap]] version 0.3.9&lt;br /&gt;
* kernel-2.6.17.1&lt;br /&gt;
* xorg 6.9.0&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
===rc.local===&lt;br /&gt;
First, make sure the lt_hotswap module is loaded. Add this to /etc/rc.local (or use modprobe.preload, if you prefer)&lt;br /&gt;
 echo &amp;quot;Loading lt_hotswap module&amp;quot;&lt;br /&gt;
 modprobe lt_hotswap hdc_dock=1&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/lths===&lt;br /&gt;
&lt;br /&gt;
Disable the existing lths script. Here is the modified /etc/acpi/events/lths:&lt;br /&gt;
 # Call the LTHS script&lt;br /&gt;
 event=lths.*&lt;br /&gt;
 #action=/usr/local/sbin/lths.sh %e&lt;br /&gt;
 action=echo &amp;quot;Not invoking lths.sh; this is now done by the ultrabase_eject and insert scripts instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_eject===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase eject event. Here is /etc/acpi/events/ultrabase_eject&lt;br /&gt;
 #Ultrabase eject button has been pressed&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000003.00000000&lt;br /&gt;
 event=lths.MSTR.00000003.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_insert===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase insert event. Here is /etc/acpi/events/ultrabase_insert&lt;br /&gt;
 #Ultrabase has been re-inserted&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000001.00000000&lt;br /&gt;
 event=lths.MSTR.00000001.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_eject.sh===&lt;br /&gt;
&lt;br /&gt;
This is the actual script which does the ejection. It is /etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
* Note the dependency on '''cddb-id'''.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;syncing disks for safety&amp;quot;&lt;br /&gt;
 sync&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Unregistering IDE interface for CDROM and preparing to eject.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #Note: the BIOS will already deal with the ultrabay LED (number 3). It will:&lt;br /&gt;
 #  * turn it on when the bay is loaded&lt;br /&gt;
 #  * turn it off when the bay is unloaded&lt;br /&gt;
 #  * blink it when it is waiting between an eject request and an eject. (Linux never takes long enough to see this!)&lt;br /&gt;
 &lt;br /&gt;
 #What if there is a disk in the drive?&lt;br /&gt;
 #Case 1: there is an umounted CDROM, or an AudioCD/DVD which is NOT playing.&lt;br /&gt;
 # =&amp;gt; It's OK to proceed.&lt;br /&gt;
 &lt;br /&gt;
 #Case 2: there is a mounted CDROM. &lt;br /&gt;
 # =&amp;gt; we MUST unmount it, or give up on ejecting.&lt;br /&gt;
 if grep hdc /proc/mounts &amp;gt;/dev/null; then&lt;br /&gt;
        echo &amp;quot;There is a mounted filesystem on /dev/hdc. Trying to unmount it&amp;quot;&lt;br /&gt;
        umount /dev/hdc&lt;br /&gt;
        if [ $? == 0 ]; then&lt;br /&gt;
                echo &amp;quot;Successfully unmounted the CDROM.&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo &amp;quot;The CDROM is busy; can't unmount. Do not try to undock.&amp;quot;&lt;br /&gt;
                echo 9 &amp;gt; /proc/acpi/ibm/beep   #This is an &amp;quot;unhappy, warning beep&amp;quot;&lt;br /&gt;
                exit 1&lt;br /&gt;
        fi&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Case 3: there is a AudioCD/DVD which is currently playing.&lt;br /&gt;
 #How do we detect this? It could be just using cdplay (which has no associated process)&lt;br /&gt;
 #The following methd is ugly, and it requires the cddb-id program. However, it does work.&lt;br /&gt;
 #Assuming that we have already ruled out a mounted filesystem, then...&lt;br /&gt;
 CDDBID=$(cddb-id /dev/hdc 2&amp;gt;/dev/null)&lt;br /&gt;
 if [ -n &amp;quot;$CDDBID&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;There is a CD in the drive. Ejecting it&amp;quot;&lt;br /&gt;
        eject /dev/hdc   #Buglet: we don't necessarily want to eject the disk; we just want to be sure it has stopped playing.&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #We're now OK to proceed.&lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
         #Eject the bay using lths.&lt;br /&gt;
        echo -n &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths&lt;br /&gt;
 else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
         #Unregister IDE interface 1. This WILL cause a kernel panic if there is anything in the drive!&lt;br /&gt;
        idectl 1 off&lt;br /&gt;
         #Tell the thinkpad the bay is to be ejected&lt;br /&gt;
        echo eject &amp;gt; /proc/acpi/ibm/bay&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Beep happily&lt;br /&gt;
 echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 echo &amp;quot;OK to undock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_insert.sh===&lt;br /&gt;
&lt;br /&gt;
This script is called on insertion. It is /etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;Ultrabase has been inserted. Re-registering IDE interface for CDROM.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
        echo &amp;quot;Enabling DMA on /dev/hdc&amp;quot;&lt;br /&gt;
        hdparm -d 1 -u 1 -c 1 /dev/hdc&lt;br /&gt;
 &lt;br /&gt;
        #LTHS already beeps; no beep required here.&lt;br /&gt;
 else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        #Register IDE interface 1&lt;br /&gt;
        idectl 1 rescan&lt;br /&gt;
        #Turn DMA on again. But this is probably a vain attempt; it will fail unless we are using lt_hotswap.&lt;br /&gt;
        sleep 2&lt;br /&gt;
        hdparm -d1 /dev/hdc || echo &amp;quot;WARNING: DMA cannot be re-enabled for hdc after insert. You'll have to reboot for now.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        #Beep happily&lt;br /&gt;
        echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Redocked successfully&amp;quot;&lt;br /&gt;
 echo &amp;quot;Note: KDE's volume manager might not work anymore with the CD/DVD drive.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Debugging==&lt;br /&gt;
&lt;br /&gt;
* The easiest way to check what is happening is:&lt;br /&gt;
 tail -f /var/log/acpid&lt;br /&gt;
&lt;br /&gt;
* Remember, after modifying anything in /etc/acpi/events, to reload the acpid rules:&lt;br /&gt;
 killall -HUP acpid&lt;br /&gt;
&lt;br /&gt;
* Note that stdout from all scripts ends up in /var/log/acpid. But to communicate a message with the user, it's best to use either&lt;br /&gt;
the various thinkpad beeps, or perhaps the thinklight.&lt;br /&gt;
&lt;br /&gt;
* Note: idectl and lt_hotswap '''really''' don't get along together. You will lock the system.&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23193</id>
		<title>How to hotswap the UltraBase</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23193"/>
		<updated>2006-07-14T23:17:29Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here is how I set up an {{X22}} to allow hot ejection/removal of the ultrabase. See also [[How_to_hotswap_UltraBay_devices|this related page]] for the UltraBay. These instructions are well-tested, but ymmv.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* Uses lt_hotswap to preserve DMA on re-insert&lt;br /&gt;
* Idiot-proof (relatively)&lt;br /&gt;
* Scripts also work without lt_hotswap (using the older way, idectl).&lt;br /&gt;
&lt;br /&gt;
===System===&lt;br /&gt;
&lt;br /&gt;
* X22 thinkpad + ultrabase + DVD-R&lt;br /&gt;
* [[lt_hotswap]] version 0.3.9&lt;br /&gt;
* kernel-2.6.17.1&lt;br /&gt;
* xorg 6.9.0&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
===rc.local===&lt;br /&gt;
First, make sure the lt_hotswap module is loaded. Add this to /etc/rc.local (or use modprobe.preload, if you prefer)&lt;br /&gt;
 echo &amp;quot;Loading lt_hotswap module&amp;quot;&lt;br /&gt;
 modprobe lt_hotswap hdc_dock=1&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/lths===&lt;br /&gt;
&lt;br /&gt;
Disable the existing lths script. Here is the modified /etc/acpi/events/lths:&lt;br /&gt;
 # Call the LTHS script&lt;br /&gt;
 event=lths.*&lt;br /&gt;
 #action=/usr/local/sbin/lths.sh %e&lt;br /&gt;
 action=echo &amp;quot;Not invoking lths.sh; this is now done by the ultrabase_eject and insert scripts instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_eject===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase eject event. Here is /etc/acpi/events/ultrabase_eject&lt;br /&gt;
 #Ultrabase eject button has been pressed&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000003.00000000&lt;br /&gt;
 event=lths.MSTR.00000003.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_insert===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase insert event. Here is /etc/acpi/events/ultrabase_insert&lt;br /&gt;
 #Ultrabase has been re-inserted&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000001.00000000&lt;br /&gt;
 event=lths.MSTR.00000001.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_eject.sh===&lt;br /&gt;
&lt;br /&gt;
This is the actual script which does the ejection. It is /etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
* Note the dependency on '''cddb-id'''.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;syncing disks for safety&amp;quot;&lt;br /&gt;
 sync&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Unregistering IDE interface for CDROM and preparing to eject.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #Note: the BIOS will already deal with the ultrabay LED (number 3). It will:&lt;br /&gt;
 #  * turn it on when the bay is loaded&lt;br /&gt;
 #  * turn it off when the bay is unloaded&lt;br /&gt;
 #  * blink it when it is waiting between an eject request and an eject. (Linux never takes long enough to see this!)&lt;br /&gt;
 &lt;br /&gt;
 #What if there is a disk in the drive?&lt;br /&gt;
 #Case 1: there is an umounted CDROM, or an AudioCD/DVD which is NOT playing.&lt;br /&gt;
 # =&amp;gt; It's OK to proceed.&lt;br /&gt;
 &lt;br /&gt;
 #Case 2: there is a mounted CDROM. &lt;br /&gt;
 # =&amp;gt; we MUST unmount it, or give up on ejecting.&lt;br /&gt;
 if grep hdc /proc/mounts &amp;gt;/dev/null; then&lt;br /&gt;
        echo &amp;quot;There is a mounted filesystem on /dev/hdc. Trying to unmount it&amp;quot;&lt;br /&gt;
        umount /dev/hdc&lt;br /&gt;
        if [ $? == 0 ]; then&lt;br /&gt;
                echo &amp;quot;Successfully unmounted the CDROM.&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo &amp;quot;The CDROM is busy; can't unmount. Do not try to undock.&amp;quot;&lt;br /&gt;
                echo 9 &amp;gt; /proc/acpi/ibm/beep   #This is an &amp;quot;unhappy, warning beep&amp;quot;&lt;br /&gt;
                exit 1&lt;br /&gt;
        fi&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Case 3: there is a AudioCD/DVD which is currently playing.&lt;br /&gt;
 #How do we detect this? It could be just using cdplay (which has no associated process)&lt;br /&gt;
 #The following methd is ugly, and it requires the cddb-id program. However, it does work.&lt;br /&gt;
 #Assuming that we have already ruled out a mounted filesystem, then...&lt;br /&gt;
 CDDBID=$(cddb-id /dev/hdc 2&amp;gt;/dev/null)&lt;br /&gt;
 if [ -n &amp;quot;$CDDBID&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;There is a CD in the drive. Ejecting it&amp;quot;&lt;br /&gt;
        eject /dev/hdc   #Buglet: we don't necessarily want to eject the disk; we just want to be sure it has stopped playing.&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #We're now OK to proceed.&lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
         #Eject the bay using lths.&lt;br /&gt;
        echo -n &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths&lt;br /&gt;
 else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
         #Unregister IDE interface 1. This WILL cause a kernel panic if there is anything in the drive!&lt;br /&gt;
        idectl 1 off&lt;br /&gt;
         #Tell the thinkpad the bay is to be ejected&lt;br /&gt;
        echo eject &amp;gt; /proc/acpi/ibm/bay&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Beep happily&lt;br /&gt;
 echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 echo &amp;quot;OK to undock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_insert.sh===&lt;br /&gt;
&lt;br /&gt;
This script is called on insertion. It is /etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;Ultrabase has been inserted. Re-registering IDE interface for CDROM.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
        echo &amp;quot;Enabling DMA on /dev/hdc&amp;quot;&lt;br /&gt;
        hdparm -d 1 -u 1 -c 1 /dev/hdc&lt;br /&gt;
 &lt;br /&gt;
        #LTHS already beeps; no beep required here.&lt;br /&gt;
 else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        #Register IDE interface 1&lt;br /&gt;
        idectl 1 rescan&lt;br /&gt;
        #Turn DMA on again. But this is probably a vain attempt; it will fail unless we are using lt_hotswap.&lt;br /&gt;
        sleep 2&lt;br /&gt;
        hdparm -d1 /dev/hdc || echo &amp;quot;WARNING: DMA cannot be re-enabled for hdc after insert. You'll have to reboot for now.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        #Beep happily&lt;br /&gt;
        echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Redocked successfully&amp;quot;&lt;br /&gt;
 echo &amp;quot;Note: KDE's volume manager might not work anymore with the CD/DVD drive.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging==&lt;br /&gt;
&lt;br /&gt;
* The easiest way to check what is happening is:&lt;br /&gt;
 tail -f /var/log/acpid&lt;br /&gt;
&lt;br /&gt;
* Remember, after modifying anything in /etc/acpi/events, to reload the acpid rules:&lt;br /&gt;
 killall -HUP acpid&lt;br /&gt;
&lt;br /&gt;
* Note that stdout from all scripts ends up in /var/log/acpid. But to communicate a message with the user, it's best to use either&lt;br /&gt;
the various thinkpad beeps, or perhaps the thinklight.&lt;br /&gt;
&lt;br /&gt;
* Note: idectl and lt_hotswap '''really''' don't get along together. You will lock the system.&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Lt_hotswap&amp;diff=23192</id>
		<title>Lt hotswap</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Lt_hotswap&amp;diff=23192"/>
		<updated>2006-07-14T23:16:28Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* typo */&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;
=== lt_hotswap ===&lt;br /&gt;
The &amp;lt;tt&amp;gt;lt_hotswap&amp;lt;/tt&amp;gt; kernel module enables hot-swapping of UltraBay disk drives under Linux, with DMA support.&lt;br /&gt;
|}&lt;br /&gt;
===Features===&lt;br /&gt;
*enable hotswapping of [[UltraBay]] drives&lt;br /&gt;
*automatic IDE unregistering on [[ibm-acpi]] eject event&lt;br /&gt;
*leaves DMA support intact&lt;br /&gt;
&lt;br /&gt;
===Limitations===&lt;br /&gt;
* Requires [[ibm-acpi]] to be running (does not work with [[APM]]).&lt;br /&gt;
* Works only in conjunction with the &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; driver (recent ThinkPad models use &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; instead). &lt;br /&gt;
* Does '''not''' get on well with idectl. Use one, or the other, or crash.&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
*Project page: http://www.sourceforge.net/projects/lths&lt;br /&gt;
*Latest version: http://prdownloads.sourceforge.net/lths/lt_hotswap-0.3.6.tar.gz?download&lt;br /&gt;
&lt;br /&gt;
Development and discussion of lt_hotswap is currently being held in &lt;br /&gt;
[[Mailinglists#Linux-ThinkPad Mailinglist|Linux-ThinkPad Mailinglist]].&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
In order to use the driver you must use ACPI and also have the [[ibm-acpi]] driver linked to your kernel (module or compiled).  &lt;br /&gt;
&lt;br /&gt;
When loading the hotswap module, you can use the module parameter: {{bootparm|auto_eject|1}} to automatically unregister the drives IDE interface.  This will happen upon popping out the [[UltraBay]] lever.&lt;br /&gt;
&lt;br /&gt;
===Supported models===&lt;br /&gt;
The driver has been explicitly reported to work on the following models. It should work on many others as well:&lt;br /&gt;
*ThinkPad {{A31p}} (warmswap), {{X22}}, {{T30}}, {{T22}}, {{T23}}, {{T40}}, {{T42}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lt_hotswap&amp;lt;/tt&amp;gt; does '''not''' work well on models that require  the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver rather than the generic &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; IDE driver. See [[problems with SATA and Linux]] for a list, and [[How to hotswap UltraBay devices]] for an alternative solution on these models.&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[How to hotswap UltraBay devices]]&lt;br /&gt;
* [[How_to_hotswap_the_UltraBase]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Lt_hotswap&amp;diff=23191</id>
		<title>Lt hotswap</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Lt_hotswap&amp;diff=23191"/>
		<updated>2006-07-14T23:16:12Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: Warning: idectl.&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;
=== lt_hotswap ===&lt;br /&gt;
The &amp;lt;tt&amp;gt;lt_hotswap&amp;lt;/tt&amp;gt; kernel module enables hot-swapping of UltraBay disk drives under Linux, with DMA support.&lt;br /&gt;
|}&lt;br /&gt;
===Features===&lt;br /&gt;
*enable hotswapping of [[UltraBay]] drives&lt;br /&gt;
*automatic IDE unregistering on [[ibm-acpi]] eject event&lt;br /&gt;
*leaves DMA support intact&lt;br /&gt;
&lt;br /&gt;
===Limitations===&lt;br /&gt;
* Requires [[ibm-acpi]] to be running (does not work with [[APM]]).&lt;br /&gt;
* Works only in conjunction with the &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; driver (recent ThinkPad models use &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; instead). &lt;br /&gt;
* Does '''not''' get on well with idectl. Use on, or the other, or crash.&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
*Project page: http://www.sourceforge.net/projects/lths&lt;br /&gt;
*Latest version: http://prdownloads.sourceforge.net/lths/lt_hotswap-0.3.6.tar.gz?download&lt;br /&gt;
&lt;br /&gt;
Development and discussion of lt_hotswap is currently being held in &lt;br /&gt;
[[Mailinglists#Linux-ThinkPad Mailinglist|Linux-ThinkPad Mailinglist]].&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
In order to use the driver you must use ACPI and also have the [[ibm-acpi]] driver linked to your kernel (module or compiled).  &lt;br /&gt;
&lt;br /&gt;
When loading the hotswap module, you can use the module parameter: {{bootparm|auto_eject|1}} to automatically unregister the drives IDE interface.  This will happen upon popping out the [[UltraBay]] lever.&lt;br /&gt;
&lt;br /&gt;
===Supported models===&lt;br /&gt;
The driver has been explicitly reported to work on the following models. It should work on many others as well:&lt;br /&gt;
*ThinkPad {{A31p}} (warmswap), {{X22}}, {{T30}}, {{T22}}, {{T23}}, {{T40}}, {{T42}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lt_hotswap&amp;lt;/tt&amp;gt; does '''not''' work well on models that require  the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver rather than the generic &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; IDE driver. See [[problems with SATA and Linux]] for a list, and [[How to hotswap UltraBay devices]] for an alternative solution on these models.&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[How to hotswap UltraBay devices]]&lt;br /&gt;
* [[How_to_hotswap_the_UltraBase]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Lt_hotswap&amp;diff=23190</id>
		<title>Lt hotswap</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Lt_hotswap&amp;diff=23190"/>
		<updated>2006-07-14T23:15:16Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: /* See also */&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;
=== lt_hotswap ===&lt;br /&gt;
The &amp;lt;tt&amp;gt;lt_hotswap&amp;lt;/tt&amp;gt; kernel module enables hot-swapping of UltraBay disk drives under Linux, with DMA support.&lt;br /&gt;
|}&lt;br /&gt;
===Features===&lt;br /&gt;
*enable hotswapping of [[UltraBay]] drives&lt;br /&gt;
*automatic IDE unregistering on [[ibm-acpi]] eject event&lt;br /&gt;
*leaves DMA support intact&lt;br /&gt;
&lt;br /&gt;
===Limitations===&lt;br /&gt;
* Requires [[ibm-acpi]] to be running (does not work with [[APM]]).&lt;br /&gt;
* Works only in conjunction with the &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; driver (recent ThinkPad models use &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; instead). &lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
*Project page: http://www.sourceforge.net/projects/lths&lt;br /&gt;
*Latest version: http://prdownloads.sourceforge.net/lths/lt_hotswap-0.3.6.tar.gz?download&lt;br /&gt;
&lt;br /&gt;
Development and discussion of lt_hotswap is currently being held in &lt;br /&gt;
[[Mailinglists#Linux-ThinkPad Mailinglist|Linux-ThinkPad Mailinglist]].&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
In order to use the driver you must use ACPI and also have the [[ibm-acpi]] driver linked to your kernel (module or compiled).  &lt;br /&gt;
&lt;br /&gt;
When loading the hotswap module, you can use the module parameter: {{bootparm|auto_eject|1}} to automatically unregister the drives IDE interface.  This will happen upon popping out the [[UltraBay]] lever.&lt;br /&gt;
&lt;br /&gt;
===Supported models===&lt;br /&gt;
The driver has been explicitly reported to work on the following models. It should work on many others as well:&lt;br /&gt;
*ThinkPad {{A31p}} (warmswap), {{X22}}, {{T30}}, {{T22}}, {{T23}}, {{T40}}, {{T42}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lt_hotswap&amp;lt;/tt&amp;gt; does '''not''' work well on models that require  the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver rather than the generic &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; IDE driver. See [[problems with SATA and Linux]] for a list, and [[How to hotswap UltraBay devices]] for an alternative solution on these models.&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[How to hotswap UltraBay devices]]&lt;br /&gt;
* [[How_to_hotswap_the_UltraBase]]&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23189</id>
		<title>How to hotswap the UltraBase</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23189"/>
		<updated>2006-07-14T23:10:20Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here is how I set up an {{X22}} to allow hot ejection/removal of the ultrabase. See also [[How_to_hotswap_UltraBay_devices|this related page]] for the UltraBay. These instructions are well-tested, but ymmv.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* Uses lt_hotswap to preserve DMA on re-insert&lt;br /&gt;
* Idiot-proof (relatively)&lt;br /&gt;
&lt;br /&gt;
===System===&lt;br /&gt;
&lt;br /&gt;
* X22 thinkpad + ultrabase + DVD-R&lt;br /&gt;
* [[lt_hotswap]] version 0.3.9&lt;br /&gt;
* kernel-2.6.17.1&lt;br /&gt;
* xorg 6.9.0&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
===rc.local===&lt;br /&gt;
First, make sure the lt_hotswap module is loaded. Add this to /etc/rc.local (or use modprobe.preload, if you prefer)&lt;br /&gt;
 echo &amp;quot;Loading lt_hotswap module&amp;quot;&lt;br /&gt;
 modprobe lt_hotswap hdc_dock=1&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/lths===&lt;br /&gt;
&lt;br /&gt;
Disable the existing lths script. Here is the modified /etc/acpi/events/lths:&lt;br /&gt;
 # Call the LTHS script&lt;br /&gt;
 event=lths.*&lt;br /&gt;
 #action=/usr/local/sbin/lths.sh %e&lt;br /&gt;
 action=echo &amp;quot;Not invoking lths.sh; this is now done by the ultrabase_eject and insert scripts instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_eject===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase eject event. Here is /etc/acpi/events/ultrabase_eject&lt;br /&gt;
 #Ultrabase eject button has been pressed&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000003.00000000&lt;br /&gt;
 event=lths.MSTR.00000003.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_insert===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase insert event. Here is /etc/acpi/events/ultrabase_insert&lt;br /&gt;
 #Ultrabase has been re-inserted&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000001.00000000&lt;br /&gt;
 event=lths.MSTR.00000001.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_eject.sh===&lt;br /&gt;
&lt;br /&gt;
This is the actual script which does the ejection. It is /etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
* Note the dependency on '''cddb-id'''.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;syncing disks for safety&amp;quot;&lt;br /&gt;
 sync&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Unregistering IDE interface for CDROM and preparing to eject.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #Note: the BIOS will already deal with the ultrabay LED (number 3). It will:&lt;br /&gt;
 #  * turn it on when the bay is loaded&lt;br /&gt;
 #  * turn it off when the bay is unloaded&lt;br /&gt;
 #  * blink it when it is waiting between an eject request and an eject. (Linux never takes long enough to see this!)&lt;br /&gt;
 &lt;br /&gt;
 #What if there is a disk in the drive?&lt;br /&gt;
 #Case 1: there is an umounted CDROM, or an AudioCD/DVD which is NOT playing.&lt;br /&gt;
 # =&amp;gt; It's OK to proceed.&lt;br /&gt;
 &lt;br /&gt;
 #Case 2: there is a mounted CDROM. &lt;br /&gt;
 # =&amp;gt; we MUST unmount it, or give up on ejecting.&lt;br /&gt;
 if grep hdc /proc/mounts &amp;gt;/dev/null; then&lt;br /&gt;
        echo &amp;quot;There is a mounted filesystem on /dev/hdc. Trying to unmount it&amp;quot;&lt;br /&gt;
        umount /dev/hdc&lt;br /&gt;
        if [ $? == 0 ]; then&lt;br /&gt;
                echo &amp;quot;Successfully unmounted the CDROM.&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo &amp;quot;The CDROM is busy; can't unmount. Do not try to undock.&amp;quot;&lt;br /&gt;
                echo 9 &amp;gt; /proc/acpi/ibm/beep   #This is an &amp;quot;unhappy, warning beep&amp;quot;&lt;br /&gt;
                exit 1&lt;br /&gt;
        fi&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Case 3: there is a AudioCD/DVD which is currently playing.&lt;br /&gt;
 #How do we detect this? It could be just using cdplay (which has no associated process)&lt;br /&gt;
 #The following methd is ugly, and it requires the cddb-id program. However, it does work.&lt;br /&gt;
 #Assuming that we have already ruled out a mounted filesystem, then...&lt;br /&gt;
 CDDBID=$(cddb-id /dev/hdc 2&amp;gt;/dev/null)&lt;br /&gt;
 if [ -n &amp;quot;$CDDBID&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;There is a CD in the drive. Ejecting it&amp;quot;&lt;br /&gt;
        eject /dev/hdc   #Buglet: we don't necessarily want to eject the disk; we just want to be sure it has stopped playing.&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #We're now OK to proceed.&lt;br /&gt;
 if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
         #Eject the bay using lths.&lt;br /&gt;
        echo -n &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
         #Unregister IDE interface 1. This WILL cause a kernel panic if there is anything in the drive!&lt;br /&gt;
        idectl 1 off&lt;br /&gt;
         #Tell the thinkpad the bay is to be ejected&lt;br /&gt;
        echo eject &amp;gt; /proc/acpi/ibm/bay&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #Beep happily&lt;br /&gt;
 echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
 echo &amp;quot;OK to undock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_insert.sh===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ultrabase_eject.sh   ultrabase_insert.sh&lt;br /&gt;
[rjn@mocha actions]$ cat ultrabase_insert.sh&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo &amp;quot;Ultrabase has been inserted. Re-registering IDE interface for CDROM.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
        echo &amp;quot;Enabling DMA on /dev/hdc&amp;quot;&lt;br /&gt;
        hdparm -d 1 -u 1 -c 1 /dev/hdc&lt;br /&gt;
&lt;br /&gt;
        #LTHS already beeps; no beep required here.&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        #Register IDE interface 1&lt;br /&gt;
        idectl 1 rescan&lt;br /&gt;
&lt;br /&gt;
        #Turn DMA on again. But this is a vain attempt; it will fail unless we use lt_hotswap.&lt;br /&gt;
        sleep 2&lt;br /&gt;
        hdparm -d1 /dev/hdc || echo &amp;quot;WARNING: DMA cannot be re-enabled for hdc after insert. You'll have to reboot for now.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        #Beep happily&lt;br /&gt;
        echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Redocked successfully&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Note: KDE's volume manager may or may not work anymore.&amp;quot;&lt;br /&gt;
[rjn@mocha actions]$        &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging==&lt;br /&gt;
&lt;br /&gt;
* The easiest way to check what is happening is:&lt;br /&gt;
 tail -f /var/log/acpid&lt;br /&gt;
&lt;br /&gt;
* Remember, after modifying anything in /etc/acpi/events, to reload the acpid rules:&lt;br /&gt;
 killall -HUP acpid&lt;br /&gt;
&lt;br /&gt;
* Note that stdout from all scripts ends up in /var/log/acpid. But to communicate a message with the user, it's best to use either&lt;br /&gt;
the various thinkpad beeps, or perhaps the thinklight.&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23188</id>
		<title>How to hotswap the UltraBase</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23188"/>
		<updated>2006-07-14T23:04:04Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here is how I set up an {{X22}} to allow hot ejection/removal of the ultrabase. See also [[How_to_hotswap_UltraBay_devices|this related page]] for the UltraBay. These instructions are well-tested, but ymmv.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* Uses lt_hotswap to preserve DMA on re-insert&lt;br /&gt;
* Idiot-proof (relatively)&lt;br /&gt;
&lt;br /&gt;
===System===&lt;br /&gt;
&lt;br /&gt;
* X22 thinkpad + ultrabase + DVD-R&lt;br /&gt;
* [[lt_hotswap]] version 0.3.9&lt;br /&gt;
* kernel-2.6.17.1&lt;br /&gt;
* xorg 6.9.0&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
===rc.local===&lt;br /&gt;
First, make sure the lt_hotswap module is loaded. Add this to /etc/rc.local (or use modprobe.preload, if you prefer)&lt;br /&gt;
 echo &amp;quot;Loading lt_hotswap module&amp;quot;&lt;br /&gt;
 modprobe lt_hotswap hdc_dock=1&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/lths===&lt;br /&gt;
&lt;br /&gt;
Disable the existing lths script. Here is the modified /etc/acpi/events/lths:&lt;br /&gt;
 # Call the LTHS script&lt;br /&gt;
 event=lths.*&lt;br /&gt;
 #action=/usr/local/sbin/lths.sh %e&lt;br /&gt;
 action=echo &amp;quot;Not invoking lths.sh; this is now done by the ultrabase_eject and insert scripts instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_eject===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase eject event. Here is /etc/acpi/events/ultrabase_eject&lt;br /&gt;
 #Ultrabase eject button has been pressed&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000003.00000000&lt;br /&gt;
 event=lths.MSTR.00000003.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_insert===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase insert event. Here is /etc/acpi/events/ultrabase_insert&lt;br /&gt;
 #Ultrabase has been re-inserted&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000001.00000000&lt;br /&gt;
 event=lths.MSTR.00000001.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_eject.sh===&lt;br /&gt;
&lt;br /&gt;
This is the actual script which does the ejection. It is /etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;syncing disks for safety&amp;quot;&lt;br /&gt;
 sync&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Unregistering IDE interface for CDROM and preparing to eject.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #Note: the BIOS will already deal with the ultrabay LED (number 3). It will&lt;br /&gt;
 #  turn it on when the bay is loaded&lt;br /&gt;
 #  turn it off when the bay is unloaded&lt;br /&gt;
 #  blink it when it is waiting between an eject request and an eject. (Linux never takes long enough to see this!)&lt;br /&gt;
&lt;br /&gt;
 #What if there is a disk in the drive?&lt;br /&gt;
 #Case 1: there is an umounted CDROM, or an AudioCD/DVD which is NOT playing.&lt;br /&gt;
 # =&amp;gt; It's OK to proceed.&lt;br /&gt;
 &lt;br /&gt;
 #Case 2: there is a mounted CDROM.&lt;br /&gt;
 if grep hdc /proc/mounts &amp;gt;/dev/null; then&lt;br /&gt;
        echo &amp;quot;There is a mounted filesystem on /dev/hdc. Trying to unmount it&amp;quot;&lt;br /&gt;
        umount /dev/hdc&lt;br /&gt;
        if [ $? == 0 ]; then&lt;br /&gt;
                echo &amp;quot;Successfully unmounted the CDROM.&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo &amp;quot;The CDROM is busy; can't unmount. Do not try to undock.&amp;quot;&lt;br /&gt;
                echo 9 &amp;gt; /proc/acpi/ibm/beep   #This is an &amp;quot;unhappy, warning beep&amp;quot;&lt;br /&gt;
                exit 1&lt;br /&gt;
        fi&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
#Case 3: there is a AudioCD/DVD which is currently playing.&lt;br /&gt;
#How do we detect this? It could be just using cdplay (which has no process)&lt;br /&gt;
#Assuming that we have already ruled out a mounted filesystem, then...&lt;br /&gt;
CDDBID=$(cddb-id /dev/hdc 2&amp;gt;/dev/null)&lt;br /&gt;
if [ -n &amp;quot;$CDDBID&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;There is a CD in the drive. Ejecting it&amp;quot;&lt;br /&gt;
        eject /dev/hdc&lt;br /&gt;
        #This has the bug that we don't really want to eject the disk; we merely want to stop it playing.&lt;br /&gt;
        #We're now OK to proceed.&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        #Eject the bay using lths.&lt;br /&gt;
        echo -n &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        #Unregister IDE interface 1. This WILL cause a kernel panic if there is anything in the drive!&lt;br /&gt;
        idectl 1 off&lt;br /&gt;
&lt;br /&gt;
        #Tell the thinkpad the bay is to be ejected&lt;br /&gt;
        echo eject &amp;gt; /proc/acpi/ibm/bay&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Beep happily&lt;br /&gt;
echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;OK to undock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_insert.sh===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ultrabase_eject.sh   ultrabase_insert.sh&lt;br /&gt;
[rjn@mocha actions]$ cat ultrabase_insert.sh&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo &amp;quot;Ultrabase has been inserted. Re-registering IDE interface for CDROM.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
        echo &amp;quot;Enabling DMA on /dev/hdc&amp;quot;&lt;br /&gt;
        hdparm -d 1 -u 1 -c 1 /dev/hdc&lt;br /&gt;
&lt;br /&gt;
        #LTHS already beeps; no beep required here.&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        #Register IDE interface 1&lt;br /&gt;
        idectl 1 rescan&lt;br /&gt;
&lt;br /&gt;
        #Turn DMA on again. But this is a vain attempt; it will fail unless we use lt_hotswap.&lt;br /&gt;
        sleep 2&lt;br /&gt;
        hdparm -d1 /dev/hdc || echo &amp;quot;WARNING: DMA cannot be re-enabled for hdc after insert. You'll have to reboot for now.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        #Beep happily&lt;br /&gt;
        echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Redocked successfully&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Note: KDE's volume manager may or may not work anymore.&amp;quot;&lt;br /&gt;
[rjn@mocha actions]$        &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging==&lt;br /&gt;
&lt;br /&gt;
The easiest way to check what is happening is:&lt;br /&gt;
 tail -f /var/log/acpid&lt;br /&gt;
&lt;br /&gt;
Remember, after modifying anything in /etc/acpi/events, to reload the acpid rules:&lt;br /&gt;
 killall -HUP acpid&lt;br /&gt;
&lt;br /&gt;
Note that stdout from all scripts ends up in /var/log/acpid. But to communicate a message with the user, it's best to use either&lt;br /&gt;
the various thinkpad beeps, or perhaps the thinklight.&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23187</id>
		<title>How to hotswap the UltraBase</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23187"/>
		<updated>2006-07-14T22:59:06Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here is how I set up an {{X22}} to allow hot ejection/removal of the ultrabase. See also [[How_to_hotswap_UltraBay_devices|this related page]] for the UltraBay. These instructions are well-tested, but ymmv.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* Uses lt_hotswap to preserve DMA on re-insert&lt;br /&gt;
* Idiot-proof (relatively)&lt;br /&gt;
&lt;br /&gt;
===System===&lt;br /&gt;
&lt;br /&gt;
* X22 thinkpad + ultrabase + DVD-R&lt;br /&gt;
* [[lt_hotswap]] version 0.3.9&lt;br /&gt;
* kernel-2.6.17.1&lt;br /&gt;
* xorg 6.9.0&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
===rc.local===&lt;br /&gt;
First, make sure the lt_hotswap module is loaded. Add this to /etc/rc.local (or use modprobe.preload, if you prefer)&lt;br /&gt;
 echo &amp;quot;Loading lt_hotswap module&amp;quot;&lt;br /&gt;
 modprobe lt_hotswap hdc_dock=1&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/lths===&lt;br /&gt;
&lt;br /&gt;
Disable the existing lths script. Here is the modified /etc/acpi/events/lths:&lt;br /&gt;
 # Call the LTHS script&lt;br /&gt;
 event=lths.*&lt;br /&gt;
 #action=/usr/local/sbin/lths.sh %e&lt;br /&gt;
 action=echo &amp;quot;Not invoking lths.sh; this is now done by the ultrabase_eject and insert scripts instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_eject===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase eject event. Here is /etc/acpi/events/ultrabase_eject&lt;br /&gt;
 #Ultrabase eject button has been pressed&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000003.00000000&lt;br /&gt;
 event=lths.MSTR.00000003.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_insert===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase insert event. Here is /etc/acpi/events/ultrabase_insert&lt;br /&gt;
 #Ultrabase has been re-inserted&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000001.00000000&lt;br /&gt;
 event=lths.MSTR.00000001.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_insert.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_eject.sh===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[rjn@mocha actions]$ cat ultrabase_eject.sh&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo &amp;quot;syncing disks for safety&amp;quot;&lt;br /&gt;
sync&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Unregistering IDE interface for CDROM and preparing to eject.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Note: the BIOS will handle the ultrabay LED (number 3). It will&lt;br /&gt;
#   turn it on when the bay is loaded&lt;br /&gt;
#   turn it off when the bay is unloaded&lt;br /&gt;
#   blink it when it is waiting between an eject request and an eject. (Linux never takes long enough to see this!)&lt;br /&gt;
&lt;br /&gt;
#What if there is a disk in the drive?&lt;br /&gt;
#Case 1: there is an umounted CDROM, or an AudioCD/DVD which is NOT playing.&lt;br /&gt;
#OK to proceed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Case 2: there is a mounted CDROM.&lt;br /&gt;
if grep hdc /proc/mounts &amp;gt;/dev/null; then&lt;br /&gt;
        echo &amp;quot;There is a mounted filesystem on /dev/hdc. Trying to unmount it&amp;quot;&lt;br /&gt;
        umount /dev/hdc&lt;br /&gt;
        if [ $? == 0 ]; then&lt;br /&gt;
                echo &amp;quot;Successfully unmounted the CDROM.&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo &amp;quot;The CDROM is busy; can't unmount. Do not try to undock.&amp;quot;&lt;br /&gt;
                echo 9 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
                exit 1&lt;br /&gt;
        fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Case 3: there is a AudioCD/DVD which is currently playing.&lt;br /&gt;
#How do we detect this? It could be just using cdplay (which has no process)&lt;br /&gt;
#Assuming that we have already ruled out a mounted filesystem, then...&lt;br /&gt;
CDDBID=$(cddb-id /dev/hdc 2&amp;gt;/dev/null)&lt;br /&gt;
if [ -n &amp;quot;$CDDBID&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;There is a CD in the drive. Ejecting it&amp;quot;&lt;br /&gt;
        eject /dev/hdc&lt;br /&gt;
        #This has the bug that we don't really want to eject the disk; we merely want to stop it playing.&lt;br /&gt;
        #We're now OK to proceed.&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        #Eject the bay using lths.&lt;br /&gt;
        echo -n &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        #Unregister IDE interface 1. This WILL cause a kernel panic if there is anything in the drive!&lt;br /&gt;
        idectl 1 off&lt;br /&gt;
&lt;br /&gt;
        #Tell the thinkpad the bay is to be ejected&lt;br /&gt;
        echo eject &amp;gt; /proc/acpi/ibm/bay&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Beep happily&lt;br /&gt;
echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;OK to undock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/actions/ultrabase_insert.sh===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ultrabase_eject.sh   ultrabase_insert.sh&lt;br /&gt;
[rjn@mocha actions]$ cat ultrabase_insert.sh&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo &amp;quot;Ultrabase has been inserted. Re-registering IDE interface for CDROM.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if /sbin/lsmod | grep lt_hotswap &amp;gt; /dev/null ; then&lt;br /&gt;
        echo &amp;quot;We are using lt_hotswap&amp;quot;&lt;br /&gt;
        echo &amp;quot;Enabling DMA on /dev/hdc&amp;quot;&lt;br /&gt;
        hdparm -d 1 -u 1 -c 1 /dev/hdc&lt;br /&gt;
&lt;br /&gt;
        #LTHS already beeps; no beep required here.&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;We are not using lt_hotswap. Do it the old way with idectl.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        #Register IDE interface 1&lt;br /&gt;
        idectl 1 rescan&lt;br /&gt;
&lt;br /&gt;
        #Turn DMA on again. But this is a vain attempt; it will fail unless we use lt_hotswap.&lt;br /&gt;
        sleep 2&lt;br /&gt;
        hdparm -d1 /dev/hdc || echo &amp;quot;WARNING: DMA cannot be re-enabled for hdc after insert. You'll have to reboot for now.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        #Beep happily&lt;br /&gt;
        echo 6 &amp;gt; /proc/acpi/ibm/beep&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Redocked successfully&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Note: KDE's volume manager may or may not work anymore.&amp;quot;&lt;br /&gt;
[rjn@mocha actions]$        &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging==&lt;br /&gt;
&lt;br /&gt;
The easiest way to check what is happening is:&lt;br /&gt;
 tail -f /var/log/acpid&lt;br /&gt;
&lt;br /&gt;
Remember, after modifying anything in /etc/acpi/events, to reload the acpid rules:&lt;br /&gt;
 killall -HUP acpid&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23186</id>
		<title>How to hotswap the UltraBase</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23186"/>
		<updated>2006-07-14T22:56:38Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here is how I set up an {{X22}} to allow hot ejection/removal of the ultrabase. See also [[How_to_hotswap_UltraBay_devices|this related page]] for the UltraBay. These instructions are well-tested, but ymmv.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* Uses lt_hotswap to preserve DMA on re-insert&lt;br /&gt;
* Idiot-proof (relatively)&lt;br /&gt;
&lt;br /&gt;
===System===&lt;br /&gt;
&lt;br /&gt;
* X22 thinkpad + ultrabase + DVD-R&lt;br /&gt;
* [[lt_hotswap]] version 0.3.9&lt;br /&gt;
* kernel-2.6.17.1&lt;br /&gt;
* xorg 6.9.0&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
===rc.local===&lt;br /&gt;
First, make sure the lt_hotswap module is loaded. Add this to /etc/rc.local (or use modprobe.preload, if you prefer)&lt;br /&gt;
 echo &amp;quot;Loading lt_hotswap module&amp;quot;&lt;br /&gt;
 modprobe lt_hotswap hdc_dock=1&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/lths===&lt;br /&gt;
&lt;br /&gt;
Disable the existing lths script. Here is the modified /etc/acpi/events/lths:&lt;br /&gt;
 # Call the LTHS script&lt;br /&gt;
 event=lths.*&lt;br /&gt;
 #action=/usr/local/sbin/lths.sh %e&lt;br /&gt;
 action=echo &amp;quot;Not invoking lths.sh; this is now done by the ultrabase_eject and insert scripts instead.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_eject===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase eject event. Here is /etc/acpi/events/ultrabase_eject&lt;br /&gt;
 #Ultrabase eject button has been pressed&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000003.00000000&lt;br /&gt;
 event=lths.MSTR.00000003.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_eject.sh&lt;br /&gt;
&lt;br /&gt;
===/etc/acpi/events/ultrabase_insert===&lt;br /&gt;
&lt;br /&gt;
Respond to an ultrabase insert event. Here is /etc/acpi/events/ultrabase_insert&lt;br /&gt;
 #Ultrabase has been re-inserted&lt;br /&gt;
 #We can be triggered by an ibm/bay event if NOT using lt_hotswap, or an lt_hotswap event if we are.&lt;br /&gt;
 event=ibm/bay.MSTR.00000001.00000000&lt;br /&gt;
 event=lths.MSTR.00000001.00000000&lt;br /&gt;
 action=/etc/acpi/actions/ultrabase_insert.sh&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23185</id>
		<title>How to hotswap the UltraBase</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_hotswap_the_UltraBase&amp;diff=23185"/>
		<updated>2006-07-14T22:49:45Z</updated>

		<summary type="html">&lt;p&gt;RichardNeill: Created page with instructions.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here is how I set up an X22 to allow hot ejection/removal of the ultrabase. See also [[How_to_hotswap_UltraBay_devices|this related page]] for the UltraBay. These instructions are well-tested, but ymmv.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* Uses lt_hotswap to preserve DMA on re-insert&lt;br /&gt;
* Idiot-proof (relatively)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===System===&lt;br /&gt;
&lt;br /&gt;
* X22 thinkpad + ultrabase + DVD-R&lt;br /&gt;
* [[lt_hotswap]] version 0.3.9&lt;br /&gt;
* kernel-2.6.17.1&lt;br /&gt;
* xorg 6.9.0&lt;br /&gt;
&lt;br /&gt;
rc.local&lt;br /&gt;
echo &amp;quot;Loading lt_hotswap module&amp;quot;&lt;br /&gt;
modprobe lt_hotswap hdc_dock=1&lt;/div&gt;</summary>
		<author><name>RichardNeill</name></author>
		
	</entry>
</feed>