<?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=Intrigeri</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=Intrigeri"/>
	<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/wiki/Special:Contributions/Intrigeri"/>
	<updated>2026-05-27T23:56:07Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41648</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41648"/>
		<updated>2009-02-23T11:46:31Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Suspend-to-RAM */ added precisions, fixed formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, enable the &amp;lt;code&amp;gt;led&amp;lt;/code&amp;gt; option for the &amp;lt;code&amp;gt;ipw2200&amp;lt;/code&amp;gt; module by adding the following line to {{path|/etc/modprobe.d/local}}, creating this file if needed:&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Out of two slightly different Lenny installations, one had DRI working out of the box, while the other required applying the following instructions; so you first want to check wether direct rendering is already enabled, by installing the &amp;lt;code&amp;gt;mesa-utils&amp;lt;/code&amp;gt;, and run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, DRI is already working. Else, read on.&lt;br /&gt;
&lt;br /&gt;
The following instructions probably do far more than enabling DRI, but this combination of random factors does work for me, and I did not bother finding out which ones were really necessary.&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi|dedicated page]] explaining how to do so. Make sure you add a line containing &amp;lt;code&amp;gt;tp_smapi&amp;lt;/code&amp;gt; to {{path|/etc/modules}}, so that the module is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Suspend-to-disk (hibernation) ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon (that uses &amp;lt;code&amp;gt;pm-suspend&amp;lt;/code&amp;gt;, hibernate command. The default backend is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled on resume&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspend-to-RAM ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate radeontool vbetool}}.&lt;br /&gt;
&lt;br /&gt;
=== Various methods of suspending ===&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed, or are they guessed by the program?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing, using &amp;lt;code&amp;gt;pm-suspend&amp;lt;/code&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
=== High power drain while sleeping ===&lt;br /&gt;
&lt;br /&gt;
A mean instantaneous power consumption equal to 811mW was measured while sleeping for 10.5h, which is a bit too high (custom Linux kernel 2.6.28, without [[Radeonfb|radeonfb]]).&lt;br /&gt;
&lt;br /&gt;
Not tried the various workarounds described on [[Problem with high power drain in ACPI sleep]] yet.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41647</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41647"/>
		<updated>2009-02-23T11:41:41Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Suspend-to-disk (hibernation) */ precisions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, enable the &amp;lt;code&amp;gt;led&amp;lt;/code&amp;gt; option for the &amp;lt;code&amp;gt;ipw2200&amp;lt;/code&amp;gt; module by adding the following line to {{path|/etc/modprobe.d/local}}, creating this file if needed:&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Out of two slightly different Lenny installations, one had DRI working out of the box, while the other required applying the following instructions; so you first want to check wether direct rendering is already enabled, by installing the &amp;lt;code&amp;gt;mesa-utils&amp;lt;/code&amp;gt;, and run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, DRI is already working. Else, read on.&lt;br /&gt;
&lt;br /&gt;
The following instructions probably do far more than enabling DRI, but this combination of random factors does work for me, and I did not bother finding out which ones were really necessary.&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi|dedicated page]] explaining how to do so. Make sure you add a line containing &amp;lt;code&amp;gt;tp_smapi&amp;lt;/code&amp;gt; to {{path|/etc/modules}}, so that the module is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Suspend-to-disk (hibernation) ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon (that uses &amp;lt;code&amp;gt;pm-suspend&amp;lt;/code&amp;gt;, hibernate command. The default backend is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled on resume&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspend-to-RAM ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate radeontool vbetool}}.&lt;br /&gt;
&lt;br /&gt;
=== Various methods of suspending ===&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
=== High power drain while sleeping ===&lt;br /&gt;
&lt;br /&gt;
A mean instantaneous power consumption equal to 811mW was measured while sleeping for 10.5h, which is a bit too high (custom Linux kernel 2.6.28, without [[Radeonfb|radeonfb]]).&lt;br /&gt;
&lt;br /&gt;
Not tried the various workarounds described on [[Problem with high power drain in ACPI sleep]] yet.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41610</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41610"/>
		<updated>2009-02-19T15:50:22Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Direct rendering */ reworked a bit the introduction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, enable the &amp;lt;code&amp;gt;led&amp;lt;/code&amp;gt; option for the &amp;lt;code&amp;gt;ipw2200&amp;lt;/code&amp;gt; module by adding the following line to {{path|/etc/modprobe.d/local}}, creating this file if needed:&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Out of two slightly different Lenny installations, one had DRI working out of the box, while the other required applying the following instructions; so you first want to check wether direct rendering is already enabled, by installing the &amp;lt;code&amp;gt;mesa-utils&amp;lt;/code&amp;gt;, and run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, DRI is already working. Else, read on.&lt;br /&gt;
&lt;br /&gt;
The following instructions probably do far more than enabling DRI, but this combination of random factors does work for me, and I did not bother finding out which ones were really necessary.&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi|dedicated page]] explaining how to do so. Make sure you add a line containing &amp;lt;code&amp;gt;tp_smapi&amp;lt;/code&amp;gt; to {{path|/etc/modules}}, so that the module is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Suspend-to-disk (hibernation) ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspend-to-RAM ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate radeontool vbetool}}.&lt;br /&gt;
&lt;br /&gt;
=== Various methods of suspending ===&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
=== High power drain while sleeping ===&lt;br /&gt;
&lt;br /&gt;
A mean instantaneous power consumption equal to 811mW was measured while sleeping for 10.5h, which is a bit too high (custom Linux kernel 2.6.28, without [[Radeonfb|radeonfb]]).&lt;br /&gt;
&lt;br /&gt;
Not tried the various workarounds described on [[Problem with high power drain in ACPI sleep]] yet.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41609</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41609"/>
		<updated>2009-02-19T13:29:52Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* High power drain while sleeping */ this is actually a problem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, enable the &amp;lt;code&amp;gt;led&amp;lt;/code&amp;gt; option for the &amp;lt;code&amp;gt;ipw2200&amp;lt;/code&amp;gt; module by adding the following line to {{path|/etc/modprobe.d/local}}, creating this file if needed:&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi|dedicated page]] explaining how to do so. Make sure you add a line containing &amp;lt;code&amp;gt;tp_smapi&amp;lt;/code&amp;gt; to {{path|/etc/modules}}, so that the module is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Suspend-to-disk (hibernation) ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspend-to-RAM ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate radeontool vbetool}}.&lt;br /&gt;
&lt;br /&gt;
=== Various methods of suspending ===&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
=== High power drain while sleeping ===&lt;br /&gt;
&lt;br /&gt;
A mean instantaneous power consumption equal to 811mW was measured while sleeping for 10.5h, which is a bit too high (custom Linux kernel 2.6.28, without [[Radeonfb|radeonfb]]).&lt;br /&gt;
&lt;br /&gt;
Not tried the various workarounds described on [[Problem with high power drain in ACPI sleep]] yet.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41608</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41608"/>
		<updated>2009-02-19T13:26:55Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* High power drain while sleeping */ precisions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, enable the &amp;lt;code&amp;gt;led&amp;lt;/code&amp;gt; option for the &amp;lt;code&amp;gt;ipw2200&amp;lt;/code&amp;gt; module by adding the following line to {{path|/etc/modprobe.d/local}}, creating this file if needed:&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi|dedicated page]] explaining how to do so. Make sure you add a line containing &amp;lt;code&amp;gt;tp_smapi&amp;lt;/code&amp;gt; to {{path|/etc/modules}}, so that the module is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Suspend-to-disk (hibernation) ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspend-to-RAM ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate radeontool vbetool}}.&lt;br /&gt;
&lt;br /&gt;
=== Various methods of suspending ===&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
=== High power drain while sleeping ===&lt;br /&gt;
&lt;br /&gt;
A mean instantaneous power consumption equal to 811 mW was measured while sleeping 10.5h, which may be considered as normal or not (custom Linux kernel 2.6.28, without [[Radeonfb|radeonfb]]).&lt;br /&gt;
&lt;br /&gt;
Not tried the various workarounds described on [[Problem with high power drain in ACPI sleep]] yet.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41607</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41607"/>
		<updated>2009-02-19T12:40:45Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: added note about high power drain while sleeping&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, enable the &amp;lt;code&amp;gt;led&amp;lt;/code&amp;gt; option for the &amp;lt;code&amp;gt;ipw2200&amp;lt;/code&amp;gt; module by adding the following line to {{path|/etc/modprobe.d/local}}, creating this file if needed:&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi|dedicated page]] explaining how to do so. Make sure you add a line containing &amp;lt;code&amp;gt;tp_smapi&amp;lt;/code&amp;gt; to {{path|/etc/modules}}, so that the module is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Suspend-to-disk (hibernation) ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspend-to-RAM ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate radeontool vbetool}}.&lt;br /&gt;
&lt;br /&gt;
=== Various methods of suspending ===&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
=== High power drain while sleeping ===&lt;br /&gt;
&lt;br /&gt;
A mean instantaneous power consumption equal to 811 mW was measured while sleeping 10.5h, which may be considered as normal or not (custom Linux kernel 2.6.28).&lt;br /&gt;
This possible problem is thoroughly [[Problem_with_high_power_drain_in_ACPI_sleep|discussed on this wiki]].&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41582</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41582"/>
		<updated>2009-02-18T00:55:48Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Modem */ error correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, enable the &amp;lt;code&amp;gt;led&amp;lt;/code&amp;gt; option for the &amp;lt;code&amp;gt;ipw2200&amp;lt;/code&amp;gt; module by adding the following line to {{path|/etc/modprobe.d/local}}, creating this file if needed:&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi|dedicated page]] explaining how to do so. Make sure you add a line containing &amp;lt;code&amp;gt;tp_smapi&amp;lt;/code&amp;gt; to {{path|/etc/modules}}, so that the module is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the &amp;lt;code&amp;gt;radeontool&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vbetool&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41581</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41581"/>
		<updated>2009-02-18T00:47:53Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Suspend-to-disk (hibernation) */ removed unnecessary instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, enable the &amp;lt;code&amp;gt;led&amp;lt;/code&amp;gt; option for the &amp;lt;code&amp;gt;ipw2200&amp;lt;/code&amp;gt; module by adding the following line to {{path|/etc/modprobe.d/local}}, creating this file if needed:&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi|dedicated page]] explaining how to do so. Make sure you add a line containing &amp;lt;code&amp;gt;tp_smapi&amp;lt;/code&amp;gt; to {{path|/etc/modules}}, so that the module is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the &amp;lt;code&amp;gt;radeontool&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vbetool&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module and userspace daemon.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41580</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41580"/>
		<updated>2009-02-18T00:38:40Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* SMAPI support */ explain how to have tho module loaded at boot time&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, enable the &amp;lt;code&amp;gt;led&amp;lt;/code&amp;gt; option for the &amp;lt;code&amp;gt;ipw2200&amp;lt;/code&amp;gt; module by adding the following line to {{path|/etc/modprobe.d/local}}, creating this file if needed:&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi|dedicated page]] explaining how to do so. Make sure you add a line containing &amp;lt;code&amp;gt;tp_smapi&amp;lt;/code&amp;gt; to {{path|/etc/modules}}, so that the module is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;SwitchToTextMode yes&amp;lt;/code&amp;gt;&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the &amp;lt;code&amp;gt;radeontool&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vbetool&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module and userspace daemon.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=41579</id>
		<title>Tp smapi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=41579"/>
		<updated>2009-02-18T00:37:27Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Installation on Debian unstable (sid), testing (squeeze) or stable (lenny) */ future-proof instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module exposes some features of the ThinkPad hardware/firmware via a &amp;lt;tt&amp;gt;sysfs&amp;lt;/tt&amp;gt; interface. Currently, the main implemented functionality is control of battery charging and extended battery status. The tp_smapi software package also includes an improved version of the [[HDAPS]] driver. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.&lt;br /&gt;
&lt;br /&gt;
This driver uses undocumented features and direct hardware access, so it may work unreliably or even damage your hardware; but so far no such damage has been reported.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
*Battery charge/discharge control&lt;br /&gt;
*Battery status information&lt;br /&gt;
*Modified [[HDAPS]] driver with improved stability, model support and functionality&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=171579 download] only the &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
====Installation from source====&lt;br /&gt;
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|tar xzvf tp_smapi-0.39.tgz}}&lt;br /&gt;
:{{cmdroot|cd tp_smapi-0.39}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then, either compile and load the driver within the current working directory (for testing):&lt;br /&gt;
:{{cmdroot|make load}}&lt;br /&gt;
OR compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, add &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; to also patch the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; for compatibility with &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (this requires a kernel source tree matching the current kernel).&lt;br /&gt;
Again, either load the driver within the current working directory:&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
OR install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prepare a stand-alone patch against the current kernel tree (including&lt;br /&gt;
a patch against &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; and new &amp;lt;tt&amp;gt;Kconfig&amp;lt;/tt&amp;gt; entries):&lt;br /&gt;
:{{cmdroot|make patch}}&lt;br /&gt;
&lt;br /&gt;
To delete all autogenerated files:&lt;br /&gt;
:{{cmdroot|make clean}}&lt;br /&gt;
&lt;br /&gt;
The original kernel tree is never modified by any these commands. &lt;br /&gt;
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.&lt;br /&gt;
&lt;br /&gt;
====Installation in Gentoo====&lt;br /&gt;
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/package/app-laptop/tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, do this first:&lt;br /&gt;
&lt;br /&gt;
* Disable the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; module in your kernel configuration (Device Drivers &amp;amp;rarr; Hardware Monitoring Support &amp;amp;rarr; IBM Hard Drive Active Protection System)&lt;br /&gt;
* Rebuild and install the kernel&lt;br /&gt;
* Add the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; use flag in {{path|/etc/make.conf}}&lt;br /&gt;
* {{cmdroot|rmmod hdaps}}&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)&lt;br /&gt;
* {{cmdroot|echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
* {{cmdroot|echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
&lt;br /&gt;
Then reboot, or run:&lt;br /&gt;
* {{cmdroot|modprobe tp_smapi}}&lt;br /&gt;
* {{cmdroot|modprobe hdaps}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Debian unstable (sid), testing (squeeze) or stable (lenny)====&lt;br /&gt;
Debian now contains the [http://packages.debian.org/tp-smapi packaged module source] and prebuilt modules for Debian kernels.&lt;br /&gt;
&lt;br /&gt;
If you use a stock Debian kernel, you can install the tp_smapi modules with:&lt;br /&gt;
* {{cmdroot|apt-get install tp-smapi-modules-`uname -r`}}&lt;br /&gt;
* in order to make sure the modules package is kept in sync with the kernel one, you may also want to install the &amp;lt;code&amp;gt;tm-smapi-modules-2.6-686&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;tm-smapi-modules-2.6-amd64&amp;lt;/code&amp;gt; package, depending on your architecture &lt;br /&gt;
&lt;br /&gt;
If you use a custom kernel, you can build tp_smapi with module-assistant:&lt;br /&gt;
* {{cmdroot|aptitude install tp-smapi-source}}&lt;br /&gt;
* {{cmdroot|m-a -t a-i tp-smapi}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Ubuntu Hardy====&lt;br /&gt;
Ubuntu ships tp_smapi in their linux-ubuntu-modules Package since Hardy, so you don't have to build it yourself. Please note that they have renamed tp_smapi's modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; module to &amp;lt;tt&amp;gt;hdaps_ec&amp;lt;/tt&amp;gt;. You should load &amp;lt;tt&amp;gt;hdaps_ec&amp;lt;/tt&amp;gt;, not &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Some Ubuntu packages lack the &amp;lt;tt&amp;gt;hdaps_ec&amp;lt;/tt&amp;gt; module, as reported [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/297213 here].&lt;br /&gt;
&lt;br /&gt;
====Installation on older Ubuntu/Debian====&lt;br /&gt;
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:&lt;br /&gt;
&lt;br /&gt;
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install build-essential&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;uname -r&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you the version of your current kernel. &lt;br /&gt;
Debian users execute the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install linux-source-`uname -r`&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubuntu users execute the following using the kernel-version only (exclude -XX-generic; e.g. 'linux-source-2.6.20'):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install linux-source-`uname -r`&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be sure to unpack the source file. The easiest way is to open Nautilus as root:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;sudo nautilus&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then browse to /usr/src/ and extract the source file to that directory.&lt;br /&gt;
&lt;br /&gt;
Now change to the tp_smapi dir:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cd tp_smapi-X.YY&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt; (X.YY being the version-number of [[tp_smapi]])&lt;br /&gt;
and make and install tp_smapi as instructed above.&lt;br /&gt;
&lt;br /&gt;
If you get an error that the kernel version isn't matching (or that you need to set KSRC/KBUILD), please check that there is a symlink from the modules dir to the kernel source:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ls -l /lib/modules/2.6.20-16-generic&lt;br /&gt;
lrwxrwxrwx  1 root root     28 2007-02-02 08:39 build -&amp;gt; /usr/src/linux-source-2.6.20&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create the link if the line above is not existent:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-16-generic/build&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the following will build and install the correct modules to their locations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;make install HDAPS=1&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make sure your system loads the modules at boot time, do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules&lt;br /&gt;
echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
and update your initramfs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;update-initramfs -u&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi running now, just load the modules:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;modprobe -a tp_smapi hdaps&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.&lt;br /&gt;
&lt;br /&gt;
'''EDIT:''' Works on Kubuntu 7.10 (&amp;quot;Gutsy Gibbon&amp;quot;), too&lt;br /&gt;
&lt;br /&gt;
===Battery charge control features===&lt;br /&gt;
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):&lt;br /&gt;
:{{cmdroot|echo 40 &amp;gt; /sys/devices/platform/smapi/BAT0/start_charge_thresh}}&lt;br /&gt;
:{{cmdroot|echo 70 &amp;gt; /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}&lt;br /&gt;
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}&lt;br /&gt;
To prevent charging for 17 minutes (regardless of thresholds):&lt;br /&gt;
:{{cmdroot|echo 17 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel charging preventation:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
&lt;br /&gt;
To force battery discharging (even if connected to AC):&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel forced discharge:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
&lt;br /&gt;
===Battery status features===&lt;br /&gt;
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/installed&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/state       # idle/charging/discharging&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/cycle_count&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_now   # instantaneous power&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_avg   # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_percent&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/design_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/voltage&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/design_voltage&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacturer&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/model&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/barcoding&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/chemistry&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/serial&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacture_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/first_use_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius&lt;br /&gt;
# cat /sys/devices/platform/smapi/ac_connected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The raw status data is also available, including some fields not listed above (in case you can figure them out):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/dump}}&lt;br /&gt;
&lt;br /&gt;
In all of the above, replace &amp;lt;tt&amp;gt;BAT0&amp;lt;/tt&amp;gt; with &amp;lt;tt&amp;gt;BAT1&amp;lt;/tt&amp;gt; to address the 2nd battery.&lt;br /&gt;
&lt;br /&gt;
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; you will need to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).&lt;br /&gt;
&lt;br /&gt;
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
Some scripts can make it easier to grep the information you need from tp_smapi&lt;br /&gt;
* [[battery.rb]]&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
&lt;br /&gt;
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:&lt;br /&gt;
 # echo '211a 100 0 0' &amp;gt; /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request&lt;br /&gt;
 211a 34b b2 0 0 0 'OK'&lt;br /&gt;
The &amp;quot;4b&amp;quot; in the 2nd value, converted to decimal, is 75: the current charging stop threshold (stop_charge_thresh).&lt;br /&gt;
&lt;br /&gt;
===Bundled &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver===&lt;br /&gt;
&lt;br /&gt;
The tp_smapi package includes a modified version of the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; Linux kernel driver used by the [[HDAPS]] system. To use &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; concurrently, you '''must''' use the modified version.&lt;br /&gt;
&lt;br /&gt;
To build the modified version, simply append the &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; parameter to the &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; command (see [[#Installation|Installation]] above):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
If you don't do that, you will not be able to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (and its support module &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;) when &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; is loaded, and vice versa. You can use &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; to switch between these modules.&lt;br /&gt;
&lt;br /&gt;
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; has several changes:&lt;br /&gt;
* The &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; coordinates this access through the bundled &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; driver.&lt;br /&gt;
* The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.&lt;br /&gt;
* Several other improvements, such as the ability to control the polling rate.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
==== &amp;lt;tt&amp;gt;thinkpad_ec: cannot claim io ports 0x1600-0x161f&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
The &amp;quot;&amp;lt;tt&amp;gt;thinkpad_ec: cannot claim io ports 0x1600-0x161f!&amp;lt;/tt&amp;gt;&amp;quot; error message is printed when loading the &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; module on some recent ThinkPad models.  This occurs because the ACPI BIOS DSDT is reserving ports used by tp_smapi.&lt;br /&gt;
&lt;br /&gt;
As a workaround, add the &amp;lt;tt&amp;gt;force_io=1&amp;lt;/tt&amp;gt; module parameter to &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; in {{path|/etc/modprobe.conf}} (or your distribution's equivalent). For transient testing, load the modules as follows:&lt;br /&gt;
&lt;br /&gt;
: {{cmdroot|1=make load HDAPS=1 FORCE_IO=1}}&lt;br /&gt;
&lt;br /&gt;
Note: force_io option was added in tp_smapi v0.40 (released 2008-12-16).&lt;br /&gt;
&lt;br /&gt;
Models which need this option include:&lt;br /&gt;
* ThinkPad {{T400}}&lt;br /&gt;
* ThinkPad {{T500}}&lt;br /&gt;
* ThinkPad {{X200}}&lt;br /&gt;
&lt;br /&gt;
More information:&lt;br /&gt;
* http://bugzilla.kernel.org/show_bug.cgi?id=12221&lt;br /&gt;
* http://www.nabble.com/thinkpad_ec-fails-to-load-on-Thinkpad-T500-td19932985.html&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;tt&amp;gt;thinkpad_ec: no ThinkPad embedded controller!&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
If you get &amp;quot;&amp;lt;tt&amp;gt;thinkpad_ec: no ThinkPad embedded controller!&amp;lt;/tt&amp;gt;&amp;quot; when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.&lt;br /&gt;
&lt;br /&gt;
===Model-specific status===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 92%&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; feature support matrix&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; | &lt;br /&gt;
=====A series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{A22p}} 2629-USG&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{A30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====G series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{G41}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====R series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{R31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || || No SMAPI BIOS&lt;br /&gt;
|-&lt;br /&gt;
! {{R40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50}}&lt;br /&gt;
| {{Cunk}} || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50e}} 1834-JAG&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50e}} 1834-5US&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}} 18*&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.32 || 3.22 || || Machine types 1829, 1830, 1831 and 1836&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}} 28*&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      || 1.29 || || Machine types 2883, 2887, 2888, 2889, 2894 and 2495&lt;br /&gt;
|-&lt;br /&gt;
! {{R52}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.33 || 1.29 || 1.06 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}}  || {{Cno|text=}} 1 || 0.33 || || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R61}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||{{Cyes}}  || {{Cyes|text=}} 1 || 0.35-test1 || 7KETA7WW 2.07 || 7KHT24WW 1.08 || Machine type 8918 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R61i}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||{{Cunk}}  || {{Cunk}}  ||    ||   ||   || Machine type 8250 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R400}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||{{Cunk}}  || {{Cunk}}  || 0.37-6   ||   ||   || Machine type 7443; added pnpacpi=off to grub boot menu.lst; force_io=yes only supported in tp_smapi v0.40 ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====T series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{T20}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T22}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T23}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41p}} 2373-AM9&lt;br /&gt;
| {{Cno}} || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.32 || 3.20 || v3.04 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KXU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.32 || 3.21 || || Stop charge threshold works in Windows, but dmesg says &amp;quot;__get_real_thresh: cannot get stop_thresh of bat=0: Function is not supported by SMAPI BIOS&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KUU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43}} 2686&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.33 || 1.27 || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes|text=}} 0 ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 7 || 0.32 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 1 || 0.34 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}} 1951-24G&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || 0.36 || 1.09a || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60p}} 8743-CTO&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.32 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T61}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 1 || 0.32 ||  || || [http://ubuntuforums.org/showthread.php?p=3146719 ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{T61p}} 6457-7XG&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 1 || 0.32 ||  || || [http://ubuntuforums.org/showthread.php?p=3146719 ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{T400}} and {{T500}}&lt;br /&gt;
| {{Cunk}}  || {{Cunk}}  || {{Cunk}}  || {{Cunk}}  || {{Cunk}}  || {{Cunk}}  || {{Cunk}}  1 || 0.40 || 1.19 || || Requires &amp;lt;tt&amp;gt;force_io=1&amp;lt;/tt&amp;gt; parameter to &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====X series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{X20}} 2662-31G&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X24}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || 0.34  || 1.09 || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X32}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X40}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.32 || 2.08 || 1.62 || &lt;br /&gt;
|-&lt;br /&gt;
! {{X41}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.32 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X41_Tablet}}&lt;br /&gt;
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}}   || {{Cno|text=}} (see ref) || 0.32  || || [http://sourceforge.net/mailarchive/message.php?msg_name=4757BD30.8080808%40ugcs.caltech.edu ref] || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 ||      || 2.07 || 1.10 || 2.6.20 issue (see discussion)&lt;br /&gt;
|-&lt;br /&gt;
! {{X60_Tablet}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.34  || 7JET25WW (1.10 )  || 7JHT13WW 1.04 || [http://luke.no-ip.org/x60tablet/ ref] [http://rad.bioinfo.ulaval.ca/hardware/x60tablet ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{X60s}} 1704-5UG&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cno|text=}} 3 || 0.34 || 7BETD2WW 2.13 || 7BHT40WW 1.13 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61}} 7673-CTO&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || 0.37 || 7NETB9WW (2.19) || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61}} 7675-CTO&lt;br /&gt;
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cno|text=}} 6 || 0.35-test1       ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61}} 7675-4KU&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 || 0.34 || 7NET30WW (1.11 ) || 7MHT24WW-1.02 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61_Tablet}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 || 0.32  ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61s}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 / 3 || 0.32 ||  || || [http://www.slackwiki.org/ThinkPad_X61s ref] says 3 but conflicting report received&lt;br /&gt;
|-&lt;br /&gt;
! {{X200}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 7 || 0.40 || 6DET38WW (2.02 ) || 7XHT21WW-1.03 || Requires &amp;lt;tt&amp;gt;force_io=1&amp;lt;/tt&amp;gt; parameter to &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! {{X300}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || 0.37 || 7TET25WW (1.02 ) || 7THT15WW-1.00c ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====Z series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.32 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} ||      ||  || || [https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/45014 ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====SL series and IdeaPad=====&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:left&amp;quot; |&lt;br /&gt;
The ThinkPad SL series and IdeaPad series have firmware that is completely different from other ThinkPad models. Neither [[tp_smapi]] nor [[thinkpad-acpi]] support these models.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SMAPI capabilities may depend on the BIOS version as well, so upgrading to the latest version of the BIOS might provide more SMAPI functions (especially true for long-lived BIOS with lots of releases, like the TP-1R).&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:tp_smapi|discussion]] page. If the module loads but gives a &amp;quot;&amp;lt;tt&amp;gt;not supported&amp;lt;/tt&amp;gt;&amp;quot; or &amp;quot;&amp;lt;tt&amp;gt;not implementeded&amp;lt;/tt&amp;gt;&amp;quot; error when you try to use some specific file in {{path|/sys/devices/platform/smapi/}}, please report the &amp;lt;tt&amp;gt;dmesg&amp;lt;/tt&amp;gt; output and whether the corresponding functionality is available under Windows - maybe your ThinkPad just can't do that. &lt;br /&gt;
&lt;br /&gt;
While at it, you may also want to add your laptop to the [[list of DMI IDs]].&lt;br /&gt;
&lt;br /&gt;
=====HDAPS axis orientation=====&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; The HDAPS axis orientation is set using the &amp;lt;tt&amp;gt;invert&amp;lt;/tt&amp;gt; module parameter (at load time) or sysfs attribute (at runtime). The &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver of tp_smapi supports all 8 possible sensor orientations (inversion and swapping). You can use [[HDAPS#Visualisation_of_ThinkPad_orientation|hdaps visualisation]] to check if the settings is correct.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;invert&amp;lt;/tt&amp;gt; parameter is an integer between 0 and 7, whose meaning is defined below. (This is confusing. Most people will find it easier to just try all 8 possibilities.)&lt;br /&gt;
&lt;br /&gt;
Let &amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Y&amp;lt;/tt&amp;gt; denote the hardware readouts. Let &amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt; denote the laptop's roll (tilt left/right), and let &amp;lt;tt&amp;gt;P&amp;lt;/tt&amp;gt; denote the laptop's pitch (tilt forward/backward). The possible values are as follows:&lt;br /&gt;
    invert=0:   R= X  P= Y   (same as mainline)&lt;br /&gt;
    invert=1:   R=-X  P=-Y   (same as mainline)&lt;br /&gt;
    invert=2:   R=-X  P= Y   (new)&lt;br /&gt;
    invert=3:   R= X  P=-Y   (new)&lt;br /&gt;
    invert=4:   R= Y  P= X   (new)&lt;br /&gt;
    invert=5:   R=-Y  P=-X   (new)&lt;br /&gt;
    invert=6:   R=-Y  P= X   (new)&lt;br /&gt;
    invert=7:   R= Y  P=-X   (new)&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
===Tools using this driver===&lt;br /&gt;
&lt;br /&gt;
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:&lt;br /&gt;
* [[KThinkBat]] - display battery status on the KDE &amp;lt;tt&amp;gt;kicker&amp;lt;/tt&amp;gt; panel.&lt;br /&gt;
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2&lt;br /&gt;
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=41578</id>
		<title>Tp smapi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=41578"/>
		<updated>2009-02-18T00:32:31Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Installation on Debian unstable (sid), testing (squeeze) or stable (lenny) */  newbie-compliancy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module exposes some features of the ThinkPad hardware/firmware via a &amp;lt;tt&amp;gt;sysfs&amp;lt;/tt&amp;gt; interface. Currently, the main implemented functionality is control of battery charging and extended battery status. The tp_smapi software package also includes an improved version of the [[HDAPS]] driver. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.&lt;br /&gt;
&lt;br /&gt;
This driver uses undocumented features and direct hardware access, so it may work unreliably or even damage your hardware; but so far no such damage has been reported.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
*Battery charge/discharge control&lt;br /&gt;
*Battery status information&lt;br /&gt;
*Modified [[HDAPS]] driver with improved stability, model support and functionality&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=171579 download] only the &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
====Installation from source====&lt;br /&gt;
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|tar xzvf tp_smapi-0.39.tgz}}&lt;br /&gt;
:{{cmdroot|cd tp_smapi-0.39}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then, either compile and load the driver within the current working directory (for testing):&lt;br /&gt;
:{{cmdroot|make load}}&lt;br /&gt;
OR compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, add &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; to also patch the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; for compatibility with &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (this requires a kernel source tree matching the current kernel).&lt;br /&gt;
Again, either load the driver within the current working directory:&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
OR install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prepare a stand-alone patch against the current kernel tree (including&lt;br /&gt;
a patch against &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; and new &amp;lt;tt&amp;gt;Kconfig&amp;lt;/tt&amp;gt; entries):&lt;br /&gt;
:{{cmdroot|make patch}}&lt;br /&gt;
&lt;br /&gt;
To delete all autogenerated files:&lt;br /&gt;
:{{cmdroot|make clean}}&lt;br /&gt;
&lt;br /&gt;
The original kernel tree is never modified by any these commands. &lt;br /&gt;
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.&lt;br /&gt;
&lt;br /&gt;
====Installation in Gentoo====&lt;br /&gt;
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/package/app-laptop/tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, do this first:&lt;br /&gt;
&lt;br /&gt;
* Disable the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; module in your kernel configuration (Device Drivers &amp;amp;rarr; Hardware Monitoring Support &amp;amp;rarr; IBM Hard Drive Active Protection System)&lt;br /&gt;
* Rebuild and install the kernel&lt;br /&gt;
* Add the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; use flag in {{path|/etc/make.conf}}&lt;br /&gt;
* {{cmdroot|rmmod hdaps}}&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)&lt;br /&gt;
* {{cmdroot|echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
* {{cmdroot|echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
&lt;br /&gt;
Then reboot, or run:&lt;br /&gt;
* {{cmdroot|modprobe tp_smapi}}&lt;br /&gt;
* {{cmdroot|modprobe hdaps}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Debian unstable (sid), testing (squeeze) or stable (lenny)====&lt;br /&gt;
Debian now contains the [http://packages.debian.org/tp-smapi packaged module source] and prebuilt modules for Debian kernels.&lt;br /&gt;
&lt;br /&gt;
If you use a stock Debian kernel, you can install the tp_smapi modules with:&lt;br /&gt;
* {{cmdroot|apt-get install tp-smapi-modules-`uname -r`}}&lt;br /&gt;
&lt;br /&gt;
If you use a custom kernel, you can build tp_smapi with module-assistant:&lt;br /&gt;
* {{cmdroot|aptitude install tp-smapi-source}}&lt;br /&gt;
* {{cmdroot|m-a -t a-i tp-smapi}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Ubuntu Hardy====&lt;br /&gt;
Ubuntu ships tp_smapi in their linux-ubuntu-modules Package since Hardy, so you don't have to build it yourself. Please note that they have renamed tp_smapi's modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; module to &amp;lt;tt&amp;gt;hdaps_ec&amp;lt;/tt&amp;gt;. You should load &amp;lt;tt&amp;gt;hdaps_ec&amp;lt;/tt&amp;gt;, not &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Some Ubuntu packages lack the &amp;lt;tt&amp;gt;hdaps_ec&amp;lt;/tt&amp;gt; module, as reported [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/297213 here].&lt;br /&gt;
&lt;br /&gt;
====Installation on older Ubuntu/Debian====&lt;br /&gt;
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:&lt;br /&gt;
&lt;br /&gt;
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install build-essential&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;uname -r&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you the version of your current kernel. &lt;br /&gt;
Debian users execute the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install linux-source-`uname -r`&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubuntu users execute the following using the kernel-version only (exclude -XX-generic; e.g. 'linux-source-2.6.20'):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install linux-source-`uname -r`&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be sure to unpack the source file. The easiest way is to open Nautilus as root:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;sudo nautilus&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then browse to /usr/src/ and extract the source file to that directory.&lt;br /&gt;
&lt;br /&gt;
Now change to the tp_smapi dir:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cd tp_smapi-X.YY&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt; (X.YY being the version-number of [[tp_smapi]])&lt;br /&gt;
and make and install tp_smapi as instructed above.&lt;br /&gt;
&lt;br /&gt;
If you get an error that the kernel version isn't matching (or that you need to set KSRC/KBUILD), please check that there is a symlink from the modules dir to the kernel source:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ls -l /lib/modules/2.6.20-16-generic&lt;br /&gt;
lrwxrwxrwx  1 root root     28 2007-02-02 08:39 build -&amp;gt; /usr/src/linux-source-2.6.20&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create the link if the line above is not existent:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-16-generic/build&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the following will build and install the correct modules to their locations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;make install HDAPS=1&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make sure your system loads the modules at boot time, do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules&lt;br /&gt;
echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
and update your initramfs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;update-initramfs -u&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi running now, just load the modules:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;modprobe -a tp_smapi hdaps&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.&lt;br /&gt;
&lt;br /&gt;
'''EDIT:''' Works on Kubuntu 7.10 (&amp;quot;Gutsy Gibbon&amp;quot;), too&lt;br /&gt;
&lt;br /&gt;
===Battery charge control features===&lt;br /&gt;
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):&lt;br /&gt;
:{{cmdroot|echo 40 &amp;gt; /sys/devices/platform/smapi/BAT0/start_charge_thresh}}&lt;br /&gt;
:{{cmdroot|echo 70 &amp;gt; /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}&lt;br /&gt;
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}&lt;br /&gt;
To prevent charging for 17 minutes (regardless of thresholds):&lt;br /&gt;
:{{cmdroot|echo 17 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel charging preventation:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
&lt;br /&gt;
To force battery discharging (even if connected to AC):&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel forced discharge:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
&lt;br /&gt;
===Battery status features===&lt;br /&gt;
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/installed&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/state       # idle/charging/discharging&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/cycle_count&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_now   # instantaneous power&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_avg   # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_percent&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/design_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/voltage&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/design_voltage&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacturer&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/model&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/barcoding&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/chemistry&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/serial&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacture_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/first_use_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius&lt;br /&gt;
# cat /sys/devices/platform/smapi/ac_connected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The raw status data is also available, including some fields not listed above (in case you can figure them out):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/dump}}&lt;br /&gt;
&lt;br /&gt;
In all of the above, replace &amp;lt;tt&amp;gt;BAT0&amp;lt;/tt&amp;gt; with &amp;lt;tt&amp;gt;BAT1&amp;lt;/tt&amp;gt; to address the 2nd battery.&lt;br /&gt;
&lt;br /&gt;
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; you will need to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).&lt;br /&gt;
&lt;br /&gt;
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
Some scripts can make it easier to grep the information you need from tp_smapi&lt;br /&gt;
* [[battery.rb]]&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
&lt;br /&gt;
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:&lt;br /&gt;
 # echo '211a 100 0 0' &amp;gt; /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request&lt;br /&gt;
 211a 34b b2 0 0 0 'OK'&lt;br /&gt;
The &amp;quot;4b&amp;quot; in the 2nd value, converted to decimal, is 75: the current charging stop threshold (stop_charge_thresh).&lt;br /&gt;
&lt;br /&gt;
===Bundled &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver===&lt;br /&gt;
&lt;br /&gt;
The tp_smapi package includes a modified version of the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; Linux kernel driver used by the [[HDAPS]] system. To use &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; concurrently, you '''must''' use the modified version.&lt;br /&gt;
&lt;br /&gt;
To build the modified version, simply append the &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; parameter to the &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; command (see [[#Installation|Installation]] above):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
If you don't do that, you will not be able to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (and its support module &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;) when &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; is loaded, and vice versa. You can use &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; to switch between these modules.&lt;br /&gt;
&lt;br /&gt;
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; has several changes:&lt;br /&gt;
* The &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; coordinates this access through the bundled &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; driver.&lt;br /&gt;
* The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.&lt;br /&gt;
* Several other improvements, such as the ability to control the polling rate.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
==== &amp;lt;tt&amp;gt;thinkpad_ec: cannot claim io ports 0x1600-0x161f&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
The &amp;quot;&amp;lt;tt&amp;gt;thinkpad_ec: cannot claim io ports 0x1600-0x161f!&amp;lt;/tt&amp;gt;&amp;quot; error message is printed when loading the &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; module on some recent ThinkPad models.  This occurs because the ACPI BIOS DSDT is reserving ports used by tp_smapi.&lt;br /&gt;
&lt;br /&gt;
As a workaround, add the &amp;lt;tt&amp;gt;force_io=1&amp;lt;/tt&amp;gt; module parameter to &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; in {{path|/etc/modprobe.conf}} (or your distribution's equivalent). For transient testing, load the modules as follows:&lt;br /&gt;
&lt;br /&gt;
: {{cmdroot|1=make load HDAPS=1 FORCE_IO=1}}&lt;br /&gt;
&lt;br /&gt;
Note: force_io option was added in tp_smapi v0.40 (released 2008-12-16).&lt;br /&gt;
&lt;br /&gt;
Models which need this option include:&lt;br /&gt;
* ThinkPad {{T400}}&lt;br /&gt;
* ThinkPad {{T500}}&lt;br /&gt;
* ThinkPad {{X200}}&lt;br /&gt;
&lt;br /&gt;
More information:&lt;br /&gt;
* http://bugzilla.kernel.org/show_bug.cgi?id=12221&lt;br /&gt;
* http://www.nabble.com/thinkpad_ec-fails-to-load-on-Thinkpad-T500-td19932985.html&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;tt&amp;gt;thinkpad_ec: no ThinkPad embedded controller!&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
If you get &amp;quot;&amp;lt;tt&amp;gt;thinkpad_ec: no ThinkPad embedded controller!&amp;lt;/tt&amp;gt;&amp;quot; when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.&lt;br /&gt;
&lt;br /&gt;
===Model-specific status===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 92%&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; feature support matrix&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; | &lt;br /&gt;
=====A series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{A22p}} 2629-USG&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{A30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====G series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{G41}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====R series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{R31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || || No SMAPI BIOS&lt;br /&gt;
|-&lt;br /&gt;
! {{R40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50}}&lt;br /&gt;
| {{Cunk}} || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50e}} 1834-JAG&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50e}} 1834-5US&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}} 18*&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.32 || 3.22 || || Machine types 1829, 1830, 1831 and 1836&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}} 28*&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      || 1.29 || || Machine types 2883, 2887, 2888, 2889, 2894 and 2495&lt;br /&gt;
|-&lt;br /&gt;
! {{R52}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.33 || 1.29 || 1.06 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}}  || {{Cno|text=}} 1 || 0.33 || || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R61}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||{{Cyes}}  || {{Cyes|text=}} 1 || 0.35-test1 || 7KETA7WW 2.07 || 7KHT24WW 1.08 || Machine type 8918 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R61i}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||{{Cunk}}  || {{Cunk}}  ||    ||   ||   || Machine type 8250 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R400}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||{{Cunk}}  || {{Cunk}}  || 0.37-6   ||   ||   || Machine type 7443; added pnpacpi=off to grub boot menu.lst; force_io=yes only supported in tp_smapi v0.40 ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====T series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{T20}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T22}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T23}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41p}} 2373-AM9&lt;br /&gt;
| {{Cno}} || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.32 || 3.20 || v3.04 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KXU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.32 || 3.21 || || Stop charge threshold works in Windows, but dmesg says &amp;quot;__get_real_thresh: cannot get stop_thresh of bat=0: Function is not supported by SMAPI BIOS&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KUU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43}} 2686&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.33 || 1.27 || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes|text=}} 0 ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 7 || 0.32 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 1 || 0.34 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}} 1951-24G&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || 0.36 || 1.09a || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60p}} 8743-CTO&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.32 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T61}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 1 || 0.32 ||  || || [http://ubuntuforums.org/showthread.php?p=3146719 ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{T61p}} 6457-7XG&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 1 || 0.32 ||  || || [http://ubuntuforums.org/showthread.php?p=3146719 ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{T400}} and {{T500}}&lt;br /&gt;
| {{Cunk}}  || {{Cunk}}  || {{Cunk}}  || {{Cunk}}  || {{Cunk}}  || {{Cunk}}  || {{Cunk}}  1 || 0.40 || 1.19 || || Requires &amp;lt;tt&amp;gt;force_io=1&amp;lt;/tt&amp;gt; parameter to &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====X series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{X20}} 2662-31G&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X24}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || 0.34  || 1.09 || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X32}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X40}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.32 || 2.08 || 1.62 || &lt;br /&gt;
|-&lt;br /&gt;
! {{X41}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.32 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X41_Tablet}}&lt;br /&gt;
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}}   || {{Cno|text=}} (see ref) || 0.32  || || [http://sourceforge.net/mailarchive/message.php?msg_name=4757BD30.8080808%40ugcs.caltech.edu ref] || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 ||      || 2.07 || 1.10 || 2.6.20 issue (see discussion)&lt;br /&gt;
|-&lt;br /&gt;
! {{X60_Tablet}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.34  || 7JET25WW (1.10 )  || 7JHT13WW 1.04 || [http://luke.no-ip.org/x60tablet/ ref] [http://rad.bioinfo.ulaval.ca/hardware/x60tablet ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{X60s}} 1704-5UG&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cno|text=}} 3 || 0.34 || 7BETD2WW 2.13 || 7BHT40WW 1.13 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61}} 7673-CTO&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || 0.37 || 7NETB9WW (2.19) || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61}} 7675-CTO&lt;br /&gt;
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cno|text=}} 6 || 0.35-test1       ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61}} 7675-4KU&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 || 0.34 || 7NET30WW (1.11 ) || 7MHT24WW-1.02 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61_Tablet}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 || 0.32  ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61s}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 / 3 || 0.32 ||  || || [http://www.slackwiki.org/ThinkPad_X61s ref] says 3 but conflicting report received&lt;br /&gt;
|-&lt;br /&gt;
! {{X200}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 7 || 0.40 || 6DET38WW (2.02 ) || 7XHT21WW-1.03 || Requires &amp;lt;tt&amp;gt;force_io=1&amp;lt;/tt&amp;gt; parameter to &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! {{X300}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || 0.37 || 7TET25WW (1.02 ) || 7THT15WW-1.00c ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====Z series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.32 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} ||      ||  || || [https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/45014 ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====SL series and IdeaPad=====&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:left&amp;quot; |&lt;br /&gt;
The ThinkPad SL series and IdeaPad series have firmware that is completely different from other ThinkPad models. Neither [[tp_smapi]] nor [[thinkpad-acpi]] support these models.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SMAPI capabilities may depend on the BIOS version as well, so upgrading to the latest version of the BIOS might provide more SMAPI functions (especially true for long-lived BIOS with lots of releases, like the TP-1R).&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:tp_smapi|discussion]] page. If the module loads but gives a &amp;quot;&amp;lt;tt&amp;gt;not supported&amp;lt;/tt&amp;gt;&amp;quot; or &amp;quot;&amp;lt;tt&amp;gt;not implementeded&amp;lt;/tt&amp;gt;&amp;quot; error when you try to use some specific file in {{path|/sys/devices/platform/smapi/}}, please report the &amp;lt;tt&amp;gt;dmesg&amp;lt;/tt&amp;gt; output and whether the corresponding functionality is available under Windows - maybe your ThinkPad just can't do that. &lt;br /&gt;
&lt;br /&gt;
While at it, you may also want to add your laptop to the [[list of DMI IDs]].&lt;br /&gt;
&lt;br /&gt;
=====HDAPS axis orientation=====&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; The HDAPS axis orientation is set using the &amp;lt;tt&amp;gt;invert&amp;lt;/tt&amp;gt; module parameter (at load time) or sysfs attribute (at runtime). The &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver of tp_smapi supports all 8 possible sensor orientations (inversion and swapping). You can use [[HDAPS#Visualisation_of_ThinkPad_orientation|hdaps visualisation]] to check if the settings is correct.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;invert&amp;lt;/tt&amp;gt; parameter is an integer between 0 and 7, whose meaning is defined below. (This is confusing. Most people will find it easier to just try all 8 possibilities.)&lt;br /&gt;
&lt;br /&gt;
Let &amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Y&amp;lt;/tt&amp;gt; denote the hardware readouts. Let &amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt; denote the laptop's roll (tilt left/right), and let &amp;lt;tt&amp;gt;P&amp;lt;/tt&amp;gt; denote the laptop's pitch (tilt forward/backward). The possible values are as follows:&lt;br /&gt;
    invert=0:   R= X  P= Y   (same as mainline)&lt;br /&gt;
    invert=1:   R=-X  P=-Y   (same as mainline)&lt;br /&gt;
    invert=2:   R=-X  P= Y   (new)&lt;br /&gt;
    invert=3:   R= X  P=-Y   (new)&lt;br /&gt;
    invert=4:   R= Y  P= X   (new)&lt;br /&gt;
    invert=5:   R=-Y  P=-X   (new)&lt;br /&gt;
    invert=6:   R=-Y  P= X   (new)&lt;br /&gt;
    invert=7:   R= Y  P=-X   (new)&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
===Tools using this driver===&lt;br /&gt;
&lt;br /&gt;
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:&lt;br /&gt;
* [[KThinkBat]] - display battery status on the KDE &amp;lt;tt&amp;gt;kicker&amp;lt;/tt&amp;gt; panel.&lt;br /&gt;
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2&lt;br /&gt;
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=41577</id>
		<title>Tp smapi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=41577"/>
		<updated>2009-02-18T00:31:42Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Installation on Debian unstable (sid) or testing (lenny) */ fixed Lenny version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module exposes some features of the ThinkPad hardware/firmware via a &amp;lt;tt&amp;gt;sysfs&amp;lt;/tt&amp;gt; interface. Currently, the main implemented functionality is control of battery charging and extended battery status. The tp_smapi software package also includes an improved version of the [[HDAPS]] driver. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.&lt;br /&gt;
&lt;br /&gt;
This driver uses undocumented features and direct hardware access, so it may work unreliably or even damage your hardware; but so far no such damage has been reported.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
*Battery charge/discharge control&lt;br /&gt;
*Battery status information&lt;br /&gt;
*Modified [[HDAPS]] driver with improved stability, model support and functionality&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=171579 download] only the &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
====Installation from source====&lt;br /&gt;
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|tar xzvf tp_smapi-0.39.tgz}}&lt;br /&gt;
:{{cmdroot|cd tp_smapi-0.39}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then, either compile and load the driver within the current working directory (for testing):&lt;br /&gt;
:{{cmdroot|make load}}&lt;br /&gt;
OR compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, add &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; to also patch the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; for compatibility with &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (this requires a kernel source tree matching the current kernel).&lt;br /&gt;
Again, either load the driver within the current working directory:&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
OR install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prepare a stand-alone patch against the current kernel tree (including&lt;br /&gt;
a patch against &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; and new &amp;lt;tt&amp;gt;Kconfig&amp;lt;/tt&amp;gt; entries):&lt;br /&gt;
:{{cmdroot|make patch}}&lt;br /&gt;
&lt;br /&gt;
To delete all autogenerated files:&lt;br /&gt;
:{{cmdroot|make clean}}&lt;br /&gt;
&lt;br /&gt;
The original kernel tree is never modified by any these commands. &lt;br /&gt;
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.&lt;br /&gt;
&lt;br /&gt;
====Installation in Gentoo====&lt;br /&gt;
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/package/app-laptop/tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, do this first:&lt;br /&gt;
&lt;br /&gt;
* Disable the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; module in your kernel configuration (Device Drivers &amp;amp;rarr; Hardware Monitoring Support &amp;amp;rarr; IBM Hard Drive Active Protection System)&lt;br /&gt;
* Rebuild and install the kernel&lt;br /&gt;
* Add the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; use flag in {{path|/etc/make.conf}}&lt;br /&gt;
* {{cmdroot|rmmod hdaps}}&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)&lt;br /&gt;
* {{cmdroot|echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
* {{cmdroot|echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
&lt;br /&gt;
Then reboot, or run:&lt;br /&gt;
* {{cmdroot|modprobe tp_smapi}}&lt;br /&gt;
* {{cmdroot|modprobe hdaps}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Debian unstable (sid), testing (squeeze) or stable (lenny)====&lt;br /&gt;
Debian now contains the [http://packages.debian.org/tp-smapi packaged module source] and prebuilt modules for Debian kernels.&lt;br /&gt;
&lt;br /&gt;
If you use a custom kernel, you can build tp_smapi with module-assistant:&lt;br /&gt;
* {{cmdroot|aptitude install tp-smapi-source}}&lt;br /&gt;
* {{cmdroot|m-a -t a-i tp-smapi}}&lt;br /&gt;
&lt;br /&gt;
If you use a stock Debian kernel, you can install the tp_smapi modules with:&lt;br /&gt;
* {{cmdroot|apt-get install tp-smapi-modules-`uname -r`}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Ubuntu Hardy====&lt;br /&gt;
Ubuntu ships tp_smapi in their linux-ubuntu-modules Package since Hardy, so you don't have to build it yourself. Please note that they have renamed tp_smapi's modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; module to &amp;lt;tt&amp;gt;hdaps_ec&amp;lt;/tt&amp;gt;. You should load &amp;lt;tt&amp;gt;hdaps_ec&amp;lt;/tt&amp;gt;, not &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Some Ubuntu packages lack the &amp;lt;tt&amp;gt;hdaps_ec&amp;lt;/tt&amp;gt; module, as reported [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/297213 here].&lt;br /&gt;
&lt;br /&gt;
====Installation on older Ubuntu/Debian====&lt;br /&gt;
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:&lt;br /&gt;
&lt;br /&gt;
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install build-essential&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;uname -r&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give you the version of your current kernel. &lt;br /&gt;
Debian users execute the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install linux-source-`uname -r`&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubuntu users execute the following using the kernel-version only (exclude -XX-generic; e.g. 'linux-source-2.6.20'):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;apt-get install linux-source-`uname -r`&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be sure to unpack the source file. The easiest way is to open Nautilus as root:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;sudo nautilus&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then browse to /usr/src/ and extract the source file to that directory.&lt;br /&gt;
&lt;br /&gt;
Now change to the tp_smapi dir:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;cd tp_smapi-X.YY&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt; (X.YY being the version-number of [[tp_smapi]])&lt;br /&gt;
and make and install tp_smapi as instructed above.&lt;br /&gt;
&lt;br /&gt;
If you get an error that the kernel version isn't matching (or that you need to set KSRC/KBUILD), please check that there is a symlink from the modules dir to the kernel source:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ls -l /lib/modules/2.6.20-16-generic&lt;br /&gt;
lrwxrwxrwx  1 root root     28 2007-02-02 08:39 build -&amp;gt; /usr/src/linux-source-2.6.20&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create the link if the line above is not existent:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-16-generic/build&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the following will build and install the correct modules to their locations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;make install HDAPS=1&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make sure your system loads the modules at boot time, do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules&lt;br /&gt;
echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
and update your initramfs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;update-initramfs -u&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get tp_smapi running now, just load the modules:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;modprobe -a tp_smapi hdaps&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.&lt;br /&gt;
&lt;br /&gt;
'''EDIT:''' Works on Kubuntu 7.10 (&amp;quot;Gutsy Gibbon&amp;quot;), too&lt;br /&gt;
&lt;br /&gt;
===Battery charge control features===&lt;br /&gt;
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):&lt;br /&gt;
:{{cmdroot|echo 40 &amp;gt; /sys/devices/platform/smapi/BAT0/start_charge_thresh}}&lt;br /&gt;
:{{cmdroot|echo 70 &amp;gt; /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}&lt;br /&gt;
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}&lt;br /&gt;
To prevent charging for 17 minutes (regardless of thresholds):&lt;br /&gt;
:{{cmdroot|echo 17 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel charging preventation:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
&lt;br /&gt;
To force battery discharging (even if connected to AC):&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel forced discharge:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
&lt;br /&gt;
===Battery status features===&lt;br /&gt;
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/installed&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/state       # idle/charging/discharging&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/cycle_count&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_now   # instantaneous power&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_avg   # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_percent&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/design_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/voltage&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/design_voltage&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacturer&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/model&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/barcoding&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/chemistry&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/serial&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacture_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/first_use_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius&lt;br /&gt;
# cat /sys/devices/platform/smapi/ac_connected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The raw status data is also available, including some fields not listed above (in case you can figure them out):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/dump}}&lt;br /&gt;
&lt;br /&gt;
In all of the above, replace &amp;lt;tt&amp;gt;BAT0&amp;lt;/tt&amp;gt; with &amp;lt;tt&amp;gt;BAT1&amp;lt;/tt&amp;gt; to address the 2nd battery.&lt;br /&gt;
&lt;br /&gt;
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; you will need to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).&lt;br /&gt;
&lt;br /&gt;
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
====Scripts====&lt;br /&gt;
Some scripts can make it easier to grep the information you need from tp_smapi&lt;br /&gt;
* [[battery.rb]]&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
&lt;br /&gt;
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:&lt;br /&gt;
 # echo '211a 100 0 0' &amp;gt; /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request&lt;br /&gt;
 211a 34b b2 0 0 0 'OK'&lt;br /&gt;
The &amp;quot;4b&amp;quot; in the 2nd value, converted to decimal, is 75: the current charging stop threshold (stop_charge_thresh).&lt;br /&gt;
&lt;br /&gt;
===Bundled &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver===&lt;br /&gt;
&lt;br /&gt;
The tp_smapi package includes a modified version of the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; Linux kernel driver used by the [[HDAPS]] system. To use &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; concurrently, you '''must''' use the modified version.&lt;br /&gt;
&lt;br /&gt;
To build the modified version, simply append the &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; parameter to the &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; command (see [[#Installation|Installation]] above):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
If you don't do that, you will not be able to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (and its support module &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;) when &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; is loaded, and vice versa. You can use &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; to switch between these modules.&lt;br /&gt;
&lt;br /&gt;
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; has several changes:&lt;br /&gt;
* The &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; coordinates this access through the bundled &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; driver.&lt;br /&gt;
* The modified &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.&lt;br /&gt;
* Several other improvements, such as the ability to control the polling rate.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
==== &amp;lt;tt&amp;gt;thinkpad_ec: cannot claim io ports 0x1600-0x161f&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
The &amp;quot;&amp;lt;tt&amp;gt;thinkpad_ec: cannot claim io ports 0x1600-0x161f!&amp;lt;/tt&amp;gt;&amp;quot; error message is printed when loading the &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; module on some recent ThinkPad models.  This occurs because the ACPI BIOS DSDT is reserving ports used by tp_smapi.&lt;br /&gt;
&lt;br /&gt;
As a workaround, add the &amp;lt;tt&amp;gt;force_io=1&amp;lt;/tt&amp;gt; module parameter to &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt; in {{path|/etc/modprobe.conf}} (or your distribution's equivalent). For transient testing, load the modules as follows:&lt;br /&gt;
&lt;br /&gt;
: {{cmdroot|1=make load HDAPS=1 FORCE_IO=1}}&lt;br /&gt;
&lt;br /&gt;
Note: force_io option was added in tp_smapi v0.40 (released 2008-12-16).&lt;br /&gt;
&lt;br /&gt;
Models which need this option include:&lt;br /&gt;
* ThinkPad {{T400}}&lt;br /&gt;
* ThinkPad {{T500}}&lt;br /&gt;
* ThinkPad {{X200}}&lt;br /&gt;
&lt;br /&gt;
More information:&lt;br /&gt;
* http://bugzilla.kernel.org/show_bug.cgi?id=12221&lt;br /&gt;
* http://www.nabble.com/thinkpad_ec-fails-to-load-on-Thinkpad-T500-td19932985.html&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;tt&amp;gt;thinkpad_ec: no ThinkPad embedded controller!&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
If you get &amp;quot;&amp;lt;tt&amp;gt;thinkpad_ec: no ThinkPad embedded controller!&amp;lt;/tt&amp;gt;&amp;quot; when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.&lt;br /&gt;
&lt;br /&gt;
===Model-specific status===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 92%&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; feature support matrix&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; | &lt;br /&gt;
=====A series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{A22p}} 2629-USG&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{A30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====G series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{G41}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====R series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{R31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || || No SMAPI BIOS&lt;br /&gt;
|-&lt;br /&gt;
! {{R40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50}}&lt;br /&gt;
| {{Cunk}} || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50e}} 1834-JAG&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50e}} 1834-5US&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}} 18*&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.32 || 3.22 || || Machine types 1829, 1830, 1831 and 1836&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}} 28*&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      || 1.29 || || Machine types 2883, 2887, 2888, 2889, 2894 and 2495&lt;br /&gt;
|-&lt;br /&gt;
! {{R52}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.33 || 1.29 || 1.06 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}}  || {{Cno|text=}} 1 || 0.33 || || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R61}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||{{Cyes}}  || {{Cyes|text=}} 1 || 0.35-test1 || 7KETA7WW 2.07 || 7KHT24WW 1.08 || Machine type 8918 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R61i}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||{{Cunk}}  || {{Cunk}}  ||    ||   ||   || Machine type 8250 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R400}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||{{Cunk}}  || {{Cunk}}  || 0.37-6   ||   ||   || Machine type 7443; added pnpacpi=off to grub boot menu.lst; force_io=yes only supported in tp_smapi v0.40 ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====T series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{T20}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T22}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T23}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41p}} 2373-AM9&lt;br /&gt;
| {{Cno}} || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.32 || 3.20 || v3.04 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KXU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.32 || 3.21 || || Stop charge threshold works in Windows, but dmesg says &amp;quot;__get_real_thresh: cannot get stop_thresh of bat=0: Function is not supported by SMAPI BIOS&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KUU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43}} 2686&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.33 || 1.27 || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes|text=}} 0 ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 7 || 0.32 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 1 || 0.34 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}} 1951-24G&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || 0.36 || 1.09a || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60p}} 8743-CTO&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.32 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T61}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 1 || 0.32 ||  || || [http://ubuntuforums.org/showthread.php?p=3146719 ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{T61p}} 6457-7XG&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 1 || 0.32 ||  || || [http://ubuntuforums.org/showthread.php?p=3146719 ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{T400}} and {{T500}}&lt;br /&gt;
| {{Cunk}}  || {{Cunk}}  || {{Cunk}}  || {{Cunk}}  || {{Cunk}}  || {{Cunk}}  || {{Cunk}}  1 || 0.40 || 1.19 || || Requires &amp;lt;tt&amp;gt;force_io=1&amp;lt;/tt&amp;gt; parameter to &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====X series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{X20}} 2662-31G&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X24}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || 0.34  || 1.09 || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X32}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X40}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.32 || 2.08 || 1.62 || &lt;br /&gt;
|-&lt;br /&gt;
! {{X41}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.32 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X41_Tablet}}&lt;br /&gt;
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}}   || {{Cno|text=}} (see ref) || 0.32  || || [http://sourceforge.net/mailarchive/message.php?msg_name=4757BD30.8080808%40ugcs.caltech.edu ref] || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 ||      || 2.07 || 1.10 || 2.6.20 issue (see discussion)&lt;br /&gt;
|-&lt;br /&gt;
! {{X60_Tablet}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.34  || 7JET25WW (1.10 )  || 7JHT13WW 1.04 || [http://luke.no-ip.org/x60tablet/ ref] [http://rad.bioinfo.ulaval.ca/hardware/x60tablet ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{X60s}} 1704-5UG&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cno|text=}} 3 || 0.34 || 7BETD2WW 2.13 || 7BHT40WW 1.13 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61}} 7673-CTO&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || 0.37 || 7NETB9WW (2.19) || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61}} 7675-CTO&lt;br /&gt;
| {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cno|text=}} 6 || 0.35-test1       ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61}} 7675-4KU&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 || 0.34 || 7NET30WW (1.11 ) || 7MHT24WW-1.02 ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61_Tablet}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 || 0.32  ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X61s}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 / 3 || 0.32 ||  || || [http://www.slackwiki.org/ThinkPad_X61s ref] says 3 but conflicting report received&lt;br /&gt;
|-&lt;br /&gt;
! {{X200}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 7 || 0.40 || 6DET38WW (2.02 ) || 7XHT21WW-1.03 || Requires &amp;lt;tt&amp;gt;force_io=1&amp;lt;/tt&amp;gt; parameter to &amp;lt;tt&amp;gt;thinkpad_ec&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! {{X300}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || 0.37 || 7TET25WW (1.02 ) || 7THT15WW-1.00c ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====Z series=====&lt;br /&gt;
|-&lt;br /&gt;
{{tp_smapi/model_status_table_header}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.32 ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} ||      ||  || || [https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/45014 ref]&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} ||      ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====SL series and IdeaPad=====&lt;br /&gt;
|-&lt;br /&gt;
! colspan=12 style=&amp;quot;text-align:left&amp;quot; |&lt;br /&gt;
The ThinkPad SL series and IdeaPad series have firmware that is completely different from other ThinkPad models. Neither [[tp_smapi]] nor [[thinkpad-acpi]] support these models.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SMAPI capabilities may depend on the BIOS version as well, so upgrading to the latest version of the BIOS might provide more SMAPI functions (especially true for long-lived BIOS with lots of releases, like the TP-1R).&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:tp_smapi|discussion]] page. If the module loads but gives a &amp;quot;&amp;lt;tt&amp;gt;not supported&amp;lt;/tt&amp;gt;&amp;quot; or &amp;quot;&amp;lt;tt&amp;gt;not implementeded&amp;lt;/tt&amp;gt;&amp;quot; error when you try to use some specific file in {{path|/sys/devices/platform/smapi/}}, please report the &amp;lt;tt&amp;gt;dmesg&amp;lt;/tt&amp;gt; output and whether the corresponding functionality is available under Windows - maybe your ThinkPad just can't do that. &lt;br /&gt;
&lt;br /&gt;
While at it, you may also want to add your laptop to the [[list of DMI IDs]].&lt;br /&gt;
&lt;br /&gt;
=====HDAPS axis orientation=====&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; The HDAPS axis orientation is set using the &amp;lt;tt&amp;gt;invert&amp;lt;/tt&amp;gt; module parameter (at load time) or sysfs attribute (at runtime). The &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; driver of tp_smapi supports all 8 possible sensor orientations (inversion and swapping). You can use [[HDAPS#Visualisation_of_ThinkPad_orientation|hdaps visualisation]] to check if the settings is correct.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;invert&amp;lt;/tt&amp;gt; parameter is an integer between 0 and 7, whose meaning is defined below. (This is confusing. Most people will find it easier to just try all 8 possibilities.)&lt;br /&gt;
&lt;br /&gt;
Let &amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Y&amp;lt;/tt&amp;gt; denote the hardware readouts. Let &amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt; denote the laptop's roll (tilt left/right), and let &amp;lt;tt&amp;gt;P&amp;lt;/tt&amp;gt; denote the laptop's pitch (tilt forward/backward). The possible values are as follows:&lt;br /&gt;
    invert=0:   R= X  P= Y   (same as mainline)&lt;br /&gt;
    invert=1:   R=-X  P=-Y   (same as mainline)&lt;br /&gt;
    invert=2:   R=-X  P= Y   (new)&lt;br /&gt;
    invert=3:   R= X  P=-Y   (new)&lt;br /&gt;
    invert=4:   R= Y  P= X   (new)&lt;br /&gt;
    invert=5:   R=-Y  P=-X   (new)&lt;br /&gt;
    invert=6:   R=-Y  P= X   (new)&lt;br /&gt;
    invert=7:   R= Y  P=-X   (new)&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
===Tools using this driver===&lt;br /&gt;
&lt;br /&gt;
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:&lt;br /&gt;
* [[KThinkBat]] - display battery status on the KDE &amp;lt;tt&amp;gt;kicker&amp;lt;/tt&amp;gt; panel.&lt;br /&gt;
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2&lt;br /&gt;
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41576</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41576"/>
		<updated>2009-02-18T00:29:09Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* SMAPI support */ fix broken link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, enable the &amp;lt;code&amp;gt;led&amp;lt;/code&amp;gt; option for the &amp;lt;code&amp;gt;ipw2200&amp;lt;/code&amp;gt; module by adding the following line to {{path|/etc/modprobe.d/local}}, creating this file if needed:&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi|dedicated page]] explaining how to do so. Make sure you add this module to {{path|/etc/modules}} so that it is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;SwitchToTextMode yes&amp;lt;/code&amp;gt;&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the &amp;lt;code&amp;gt;radeontool&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vbetool&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module and userspace daemon.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41575</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41575"/>
		<updated>2009-02-18T00:24:48Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* SpeedStep */ formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, enable the &amp;lt;code&amp;gt;led&amp;lt;/code&amp;gt; option for the &amp;lt;code&amp;gt;ipw2200&amp;lt;/code&amp;gt; module by adding the following line to {{path|/etc/modprobe.d/local}}, creating this file if needed:&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi dedicated page]] explaining how to do so. Make sure you add this module to {{path|/etc/modules}} so that it is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;SwitchToTextMode yes&amp;lt;/code&amp;gt;&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the &amp;lt;code&amp;gt;radeontool&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vbetool&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module and userspace daemon.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41574</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41574"/>
		<updated>2009-02-18T00:10:53Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Integrated wireless */ more details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, enable the &amp;lt;code&amp;gt;led&amp;lt;/code&amp;gt; option for the &amp;lt;code&amp;gt;ipw2200&amp;lt;/code&amp;gt; module by adding the following line to {{path|/etc/modprobe.d/local}}, creating this file if needed:&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi dedicated page]] explaining how to do so. Make sure you add this module to {{path|/etc/modules}} so that it is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;SwitchToTextMode yes&amp;lt;/code&amp;gt;&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the &amp;lt;code&amp;gt;radeontool&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vbetool&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module and userspace daemon.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41573</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41573"/>
		<updated>2009-02-18T00:06:18Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Integrated wireless */ style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed in this notebook. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, add the following line to {{path|/etc/modprobe.d/local}} (creating this file if needed):&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi dedicated page]] explaining how to do so. Make sure you add this module to {{path|/etc/modules}} so that it is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;SwitchToTextMode yes&amp;lt;/code&amp;gt;&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the &amp;lt;code&amp;gt;radeontool&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vbetool&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module and userspace daemon.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41572</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41572"/>
		<updated>2009-02-18T00:04:54Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Integrated wireless */ fix link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, add the following line to {{path|/etc/modprobe.d/local}} (creating this file if needed):&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi dedicated page]] explaining how to do so. Make sure you add this module to {{path|/etc/modules}} so that it is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;SwitchToTextMode yes&amp;lt;/code&amp;gt;&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the &amp;lt;code&amp;gt;radeontool&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vbetool&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module and userspace daemon.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41571</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41571"/>
		<updated>2009-02-18T00:03:52Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Introduction notes */ style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has generally been prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, add the following line to {{path|/etc/modprobe.d/local}} (creating this file if needed):&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi dedicated page]] explaining how to do so. Make sure you add this module to {{path|/etc/modules}} so that it is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;SwitchToTextMode yes&amp;lt;/code&amp;gt;&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the &amp;lt;code&amp;gt;radeontool&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vbetool&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module and userspace daemon.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installation_on_ThinkPads_without_CD-ROM_drive&amp;diff=41570</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=41570"/>
		<updated>2009-02-18T00:02:00Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Installation from USB drive */ added link to Debian installation guide&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 necessary. 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] (and [https://help.ubuntu.com/community/Installation/FromUSBStick instructions for ubuntu], [http://debian.org/releases/lenny/i386/ch04s03.html instructions for Debian 5.0 (Lenny)]) for converting a LiveCD ISO image onto a pen drive, 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 and press F12 to get to the boot menu. For some models (X24 comes to mind) you need to go into the BIOS and change the boot sequence before USB devices are shown in the boot menu.&lt;br /&gt;
#Select the USB drive as boot media and boot.&lt;br /&gt;
#Follow the normal installation process.&lt;br /&gt;
&lt;br /&gt;
It seems some ThinkPad BIOSes don't use the code on the master boot record (MBR), or at least skip it when it is blank.  These systems will need an [http://www.tsden.org/ryutaroh/extipl/ Extended-IPL boot loader]. Putting this Extended-IPL boot loader onto the disk (such as &amp;lt;tt&amp;gt;sda&amp;lt;/tt&amp;gt;) goes something like this:&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=/dev/sda bs=1 count=446&lt;br /&gt;
 dd if=/usr/lib/extipl/aldebaran.bin of=/dev/sda&lt;br /&gt;
&lt;br /&gt;
==Booting from a PCMCIA device==&lt;br /&gt;
Many ThinkPads, even as old as some original Pentium models, can boot from a PCMCIA slot. The device must appear as a normal hard drive for that to work, and it must have boot code on the first block of the device. PCMCIA hard drives and some PCMCIA card readers (compact flash, SD, memory stick, etc.) will work for this purpose.&lt;br /&gt;
&lt;br /&gt;
If your distribution offers an installation image, just copy it to the device and boot from it. Here's a sample that works with Ubuntu 7.10 (Gutsy Gibbon). Insert the card and reader into a laptop running Linux. If the device mounts automatically, unmount it. Run these commands:&lt;br /&gt;
 wget http://archive.ubuntu.com/ubuntu/dists/gutsy/main/installer-i386/current/images/netboot/boot.img.gz&lt;br /&gt;
 gunzip boot.img.gz&lt;br /&gt;
 sudo dd if=boot.img of=/dev/sdb (careful!)&lt;br /&gt;
Be '''very''' careful when typing that last line. A typo could erase your hard drive. This image installs over a network, but there are other larger images that install the entire system directly.&lt;br /&gt;
&lt;br /&gt;
Put the card reader and any other needed cards (such as a network card). Get into EZSetup and change the boot order to PCMCIA then HDD-1. Reboot and the installation should start.&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.  To set up TFTPD32, do the following:&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 (for 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;
{{NOTE|Do &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; under any circumstances run the DHCP server if there are other DHCP servers on your network.  There must be only one DHCP server on each network segment. You must either disable the other server or move to another network.}}&lt;br /&gt;
&lt;br /&gt;
On your ThinkPad, do the following:&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 &amp;quot;&amp;lt;code&amp;gt;Boot Agent&amp;lt;/code&amp;gt;&amp;quot; option did)&lt;br /&gt;
&lt;br /&gt;
The TFTPD32 server window should show activity as the ThinkPad downloads files. 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]] as a Terminal Server===&lt;br /&gt;
If a server system is available on the network, it can be used to set up a temporary Terminal Server.  Follow these steps to set up the Terminal Server using Knoppix:&lt;br /&gt;
#Insert the Knoppix CD into the server and boot it up.  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.  Select this menu option.&lt;br /&gt;
#Launch the Terminal Server and make it use the appropriate network device.&lt;br /&gt;
Back at your ThinkPad, do the following:&lt;br /&gt;
#Power on your ThinkPad and press F12 to get to the boot menu.&lt;br /&gt;
#Select the ThinkPad's network adapter as the boot media.&lt;br /&gt;
#Reboot. 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=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 already 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>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41568</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41568"/>
		<updated>2009-02-18T00:00:45Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Prepare the installation media */  fix url&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has been generally prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, add the following line to {{path|/etc/modprobe.d/local}} (creating this file if needed):&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi dedicated page]] explaining how to do so. Make sure you add this module to {{path|/etc/modules}} so that it is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;SwitchToTextMode yes&amp;lt;/code&amp;gt;&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the &amp;lt;code&amp;gt;radeontool&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vbetool&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module and userspace daemon.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installation_instructions_for_the_ThinkPad_X32&amp;diff=41566</id>
		<title>Installation instructions for the ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installation_instructions_for_the_ThinkPad_X32&amp;diff=41566"/>
		<updated>2009-02-17T23:58:31Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Distro specific Instructions */ fix Debian version in link, for consistency's sake&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Specific installation notes for the ThinkPad {{X32}}.&lt;br /&gt;
&lt;br /&gt;
==General Notes==&lt;br /&gt;
If you don't have a CD-ROM solution, please look at [[Installation on ThinkPads without CD-ROM drive]].&lt;br /&gt;
&lt;br /&gt;
==Distro specific Instructions==&lt;br /&gt;
&lt;br /&gt;
* {{Install|SUSE| Professional 9.3|X32}}&lt;br /&gt;
* {{Install|Debian| 5.0 (Lenny)|X32}}&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41563</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41563"/>
		<updated>2009-02-17T23:55:12Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: a bunch of improvements (mainly formatting)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has been generally prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a [[BIOS Upgrade]] before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html.fr#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed. Ours came with the [[Intel PRO/Wireless 2200BG Mini-PCI adapter]], which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, add the following line to {{path|/etc/modprobe.d/local}} (creating this file if needed):&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver, that supports best the integrated [[ATI Mobility Radeon 7000]] graphics card.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
Install the mesa-utils package. Then, to see if direct rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually (untested), see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]]. Additional information about multiple displays can be found on [[Xorg RandR 1.2]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
Unless you use them, you can fully disable Bluetooth and [[IrDA]] by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt; Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the &amp;lt;code&amp;gt;laptop-mode-tools&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi dedicated page]] explaining how to do so. Make sure you add this module to {{path|/etc/modules}} so that it is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed packages: {{cmdroot|aptitude install acpi-support uswsusp hibernate}}.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;SwitchToTextMode yes&amp;lt;/code&amp;gt;&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the &amp;lt;code&amp;gt;radeontool&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vbetool&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments really needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the needed packages: {{cmdroot|aptitude install sl-modem-source sl-modem-daemon module-assistant}}&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module and userspace daemon.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': actually test the resulting packages.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41555</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41555"/>
		<updated>2009-02-17T23:36:56Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: enhanced introduction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction notes ==&lt;br /&gt;
&lt;br /&gt;
This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny or hard to find on the web. Linking to other pages on this wiki has been generally prefered to duplicating information.&lt;br /&gt;
&lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
=== To do ===&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a BIOS upgrade&lt;br /&gt;
before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html.fr#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed. Ours came with If you&lt;br /&gt;
have the Intel PRO/Wireless 2200BG, which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, add the following line to {{path|/etc/modprobe.d/local}} (creating this file if needed):&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
First, install the mesa-utils package. Then, to see if direct&lt;br /&gt;
rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually, see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
One can fully disable these things by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the cpufrequtils Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the laptop-mode-tools package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi dedicated page]] explaining how to do so. Make sure you add this module to {{path|/etc/modules}} so that it is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed acpi-support, uswsusp and hibernate packages.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;SwitchToTextMode yes&amp;lt;/code&amp;gt;&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the radeontool and vbetool packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the sl-modem-source and module-assistant packages, then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module and userspace daemon.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': test the resulting packages actually work.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installation_instructions_for_the_ThinkPad_X32&amp;diff=41554</id>
		<title>Installation instructions for the ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installation_instructions_for_the_ThinkPad_X32&amp;diff=41554"/>
		<updated>2009-02-17T23:33:24Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: added new installation guide for Debian Lenny&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Specific installation notes for the ThinkPad {{X32}}.&lt;br /&gt;
&lt;br /&gt;
==General Notes==&lt;br /&gt;
If you don't have a CD-ROM solution, please look at [[Installation on ThinkPads without CD-ROM drive]].&lt;br /&gt;
&lt;br /&gt;
==Distro specific Instructions==&lt;br /&gt;
&lt;br /&gt;
* {{Install|SUSE| Professional 9.3|X32}}&lt;br /&gt;
* {{Install|Debian| Lenny|X32}}&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41553</id>
		<title>Installing Debian 5.0 (Lenny) on a ThinkPad X32</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Installing_Debian_5.0_(Lenny)_on_a_ThinkPad_X32&amp;diff=41553"/>
		<updated>2009-02-17T23:30:03Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: initial version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki has tons of useful tips regarding this laptop, so this document only gathers information that is either specific to {{Debian}} Lenny, or hard to find on the web. &lt;br /&gt;
The page dedicated to the {{X32}} is another good starting point to fine-tune your GNU/Linux installation on this notebook.&lt;br /&gt;
&lt;br /&gt;
== FIXME ==&lt;br /&gt;
&lt;br /&gt;
* Document Linux boot options&lt;br /&gt;
&lt;br /&gt;
== Upgrade the BIOS ==&lt;br /&gt;
&lt;br /&gt;
In case your X32 came with Windows installed, enjoy a BIOS upgrade&lt;br /&gt;
before installing GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
== Prepare the installation media ==&lt;br /&gt;
&lt;br /&gt;
Running the installation from a USB stick was the chosen method.&lt;br /&gt;
&lt;br /&gt;
* Get the &amp;lt;code&amp;gt;boot.img.gz&amp;lt;/code&amp;gt; from the [http://http.us.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ Debian installer website]&lt;br /&gt;
* Prepare a bootable USB stick, following the [http://debian.org/releases/lenny/i386/ch04s03.html.fr#usb-copy-flexible Debian installation guide], as the &amp;quot;easy way&amp;quot; did not work for us.&lt;br /&gt;
* In case you need to install using a wireless network, you are quite lucky, as Lenny's installer now supports loading firmwares during the install process; to make use of this feature, follow the [http://debian.org/releases/lenny/i386/ch06s04.html Loading Missing Firmware] section of the installation guide.&lt;br /&gt;
&lt;br /&gt;
== Integrated wireless ==&lt;br /&gt;
&lt;br /&gt;
According to {{X32}}, various mini-PCI wifi cards may be installed. Ours came with If you&lt;br /&gt;
have the Intel PRO/Wireless 2200BG, which identifies itself as:&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
{{cmduser|lspci -n}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cmdresult|02:02.0 0280: 8086:4220 (rev 05)}}&lt;br /&gt;
&lt;br /&gt;
To get it working, one must install the firmware (unless it was&lt;br /&gt;
loaded during the installation process): {{cmdroot|aptitude install firmware-ipw2x00}}.&lt;br /&gt;
&lt;br /&gt;
For this to work, you may need to include the non-free section from Debian's repositories in {{path|/etc/apt/sources.list}}, in case it is not enabled yet.&lt;br /&gt;
&lt;br /&gt;
To enable the nice wireless led, add the following line to {{path|/etc/modprobe.d/local}} (creating this file if needed):&lt;br /&gt;
&amp;lt;pre&amp;gt;options ipw2200 led=1&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== X.Org ==&lt;br /&gt;
&lt;br /&gt;
First, make sure you're using the radeon driver.&lt;br /&gt;
&lt;br /&gt;
=== Direct rendering ===&lt;br /&gt;
&lt;br /&gt;
First, install the mesa-utils package. Then, to see if direct&lt;br /&gt;
rendering is enabled, run: {{cmduser|glxinfo | grep -i direct}}.&lt;br /&gt;
&lt;br /&gt;
If this command outputs {{cmdresult|direct rendering: Yes}}, you don't need to do anything special, as DRI is already working.&lt;br /&gt;
&lt;br /&gt;
Else, read on. These instructions probably do far more than enabling DRI, but at least they work for me :)&lt;br /&gt;
&lt;br /&gt;
Add the following lines to {{path|/etc/modules}} and {{path|/etc/initramfs-tools/modules}}; the goal is to ensure these kernel modules are loaded in good order, before X is started:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
intel_agp&lt;br /&gt;
agpgart&lt;br /&gt;
drm&lt;br /&gt;
radeon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add these options to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DRI&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;AccelMethod&amp;quot; &amp;quot;EXA&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPMode&amp;quot; &amp;quot;4&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPFastWrite&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;ColorTiling&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnablePageFlip&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
Option		&amp;quot;AGPSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;GARTSize&amp;quot; &amp;quot;32&amp;quot;&lt;br /&gt;
Option		&amp;quot;XAANoOffscreenPixmaps&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
Option		&amp;quot;EnableDepthMoves&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TrackPoint ===&lt;br /&gt;
&lt;br /&gt;
The [[TrackPoint]] page is a good starting point to fine-tune this input device according to your needs and preferences, e.g. scrolling using the middle-mouse-button and the TrackPoint.&lt;br /&gt;
&lt;br /&gt;
=== Power saving ===&lt;br /&gt;
&lt;br /&gt;
To enable dynamic adjusting of the Radeon card frequency rates, add&lt;br /&gt;
this option to the Device section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option		&amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rovclock package allows to get/set these frequencies manually, see [[Rovclock]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Special keys ==&lt;br /&gt;
&lt;br /&gt;
Once the acpi-support package is installed, almost all special {{key|Fn}} keys work as expected, at least on a Gnome desktop.&lt;br /&gt;
&lt;br /&gt;
=== Video switch key ===&lt;br /&gt;
&lt;br /&gt;
The video switch key {{key|Fn}}{{key|F7}} is not bound to any action by default.&lt;br /&gt;
To have it run a nice RandR user interface, see&lt;br /&gt;
[[Sample_Fn-F7_script#Having_Fn-F7_run_a_RandR_GUI]].&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and IrDA ==&lt;br /&gt;
&lt;br /&gt;
One can fully disable these things by adding the following lines to&lt;br /&gt;
{{path|/etc/modprobe.d/local}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# irda-related modules&lt;br /&gt;
blacklist irda&lt;br /&gt;
blacklist irtty_sir&lt;br /&gt;
blacklist nsc_ircc&lt;br /&gt;
blacklist sir_dev&lt;br /&gt;
# bluetooth&lt;br /&gt;
blacklist hci_usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power saving ==&lt;br /&gt;
&lt;br /&gt;
=== SpeedStep ===&lt;br /&gt;
&lt;br /&gt;
Install the cpufrequtils Debian package.&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/cpufrequtils}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=&amp;quot;true&amp;quot;                &lt;br /&gt;
GOVERNOR=&amp;quot;ondemand&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/default/loadcpufreq}} must contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENABLE=true&lt;br /&gt;
FREQDRIVER=acpi-cpufreq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|/etc/init.d/loadcpufreq restart}}&lt;br /&gt;
{{cmdroot|/etc/init.d/cpufrequtils restart}}&lt;br /&gt;
&lt;br /&gt;
=== laptop-mode ===&lt;br /&gt;
&lt;br /&gt;
Just install the laptop-mode-tools package.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
Adding the following lines to {{path|/etc/modprobe.d/local}} enables&lt;br /&gt;
automatic power saving for the sound card and the USB ports, and&lt;br /&gt;
prevents the wireless card from monitoring the whole universe unless&lt;br /&gt;
told:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options snd-ac97-codec power_save=1&lt;br /&gt;
options usbcore autosuspend=1&lt;br /&gt;
options ipw2200 associate=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMAPI support ==&lt;br /&gt;
&lt;br /&gt;
To get various model-specific features, such as advanced battery monitoring, the tp_smapi kernel module must be loaded. ThinkWiki has a nice [[Tp_smapi dedicated page]] explaining how to do so. Make sure you add this module to {{path|/etc/modules}} so that it is loaded at boot time.&lt;br /&gt;
&lt;br /&gt;
== Sleep and suspend ==&lt;br /&gt;
&lt;br /&gt;
First, install the needed acpi-support, uswsusp and hibernate packages.&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-disk (hibernation) ===&lt;br /&gt;
&lt;br /&gt;
It works OK with all methods: {{key|Fn}}{{key|F12}}, Gnome battery icon and hibernate command. The backend used by default is [[Swsusp]].&lt;br /&gt;
&lt;br /&gt;
Modifying {{path|/etc/hibernate/common.conf}} may be needed to achieve this:&lt;br /&gt;
&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;UseDummyXServer yes&amp;lt;/code&amp;gt; to prevent DRI from being disabled   on resume&lt;br /&gt;
* uncomment &amp;lt;code&amp;gt;SwitchToTextMode yes&amp;lt;/code&amp;gt;&lt;br /&gt;
* if using Gnome, uncomment &amp;lt;code&amp;gt;LockGnomeScreenSaver yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspend-to-RAM ===&lt;br /&gt;
&lt;br /&gt;
First, install the radeontool and vbetool packages.&lt;br /&gt;
&lt;br /&gt;
==== s2ram ====&lt;br /&gt;
&lt;br /&gt;
Works out of the box.&lt;br /&gt;
&lt;br /&gt;
==== hibernate-ram ====&lt;br /&gt;
&lt;br /&gt;
In {{path|/etc/hibernate/ram.conf}}, uncomment &amp;lt;code&amp;gt;RadeonTool yes&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;TryMethod sysfs-ram.conf&amp;lt;/code&amp;gt;. Then the {{cmdroot|hibernate-ram}} command should do the Right Thing.&lt;br /&gt;
&lt;br /&gt;
One can optionnally enable suspend-to-both by uncommenting &amp;lt;code&amp;gt;TryMethod ususpend-both.conf&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
==== pm-suspend ====&lt;br /&gt;
&lt;br /&gt;
Works ok with:&lt;br /&gt;
{{cmdroot|pm-suspend --quirk-s3-bios --quirk-s3-mode --quirk-radeon-off}}}&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': are the arguments needed?&lt;br /&gt;
&lt;br /&gt;
==== Gnome ====&lt;br /&gt;
&lt;br /&gt;
The Gnome Power Manager suspend button does the Right Thing.&lt;br /&gt;
 &lt;br /&gt;
==== Sleep key (Fn-F4) ====&lt;br /&gt;
&lt;br /&gt;
Works ok in Gnome.&lt;br /&gt;
&lt;br /&gt;
== UltraBase X3 ==&lt;br /&gt;
&lt;br /&gt;
[[UltraBase_X3]] has useful information on this. In short, using the stock Debian kernel, hotswapping the UltraBase is not possible, but it is perfectly recognized if the computer is booted docked.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
Install the sl-modem-source and module-assistant packages, then run:&lt;br /&gt;
{{cmduser|m-a a-i sl-modem}} that will build and install the necessary (non-free) kernel module and userspace daemon.&lt;br /&gt;
&lt;br /&gt;
'''FIXME''': test the resulting packages actually work.&lt;br /&gt;
&lt;br /&gt;
== System information ==&lt;br /&gt;
&lt;br /&gt;
=== lspci ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY&lt;br /&gt;
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)&lt;br /&gt;
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)&lt;br /&gt;
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)&lt;br /&gt;
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lspci -n ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 0600: 8086:3340 (rev 03)&lt;br /&gt;
00:01.0 0604: 8086:3341 (rev 03)&lt;br /&gt;
00:1d.0 0c03: 8086:24c2 (rev 01)&lt;br /&gt;
00:1d.1 0c03: 8086:24c4 (rev 01)&lt;br /&gt;
00:1d.2 0c03: 8086:24c7 (rev 01)&lt;br /&gt;
00:1d.7 0c03: 8086:24cd (rev 01)&lt;br /&gt;
00:1e.0 0604: 8086:2448 (rev 81)&lt;br /&gt;
00:1f.0 0601: 8086:24cc (rev 01)&lt;br /&gt;
00:1f.1 0101: 8086:24ca (rev 01)&lt;br /&gt;
00:1f.3 0c05: 8086:24c3 (rev 01)&lt;br /&gt;
00:1f.5 0401: 8086:24c5 (rev 01)&lt;br /&gt;
00:1f.6 0703: 8086:24c6 (rev 01)&lt;br /&gt;
01:00.0 0300: 1002:4c59&lt;br /&gt;
02:00.0 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.1 0607: 1180:0476 (rev aa)&lt;br /&gt;
02:00.2 0c00: 1180:0552 (rev 02)&lt;br /&gt;
02:01.0 0200: 8086:101e (rev 03)&lt;br /&gt;
02:02.0 0280: 8086:4220 (rev 05)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /proc/cpuinfo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : GenuineIntel&lt;br /&gt;
cpu family      : 6&lt;br /&gt;
model           : 13&lt;br /&gt;
model name      : Intel(R) Pentium(R) M processor 1.70GHz&lt;br /&gt;
stepping        : 6&lt;br /&gt;
cpu MHz         : 600.000&lt;br /&gt;
cache size      : 2048 KB&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 2&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2&lt;br /&gt;
bogomips        : 1198.97&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
power management:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_save_memory&amp;diff=41551</id>
		<title>How to save memory</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_save_memory&amp;diff=41551"/>
		<updated>2009-02-17T22:04:34Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Alternative Desktop Environments */ added LXDE&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; |This page is meant as a collection of information on how to save memory to make Linux work reasonable on older systems with limited amount of RAM.&lt;br /&gt;
&lt;br /&gt;
Most distributions nowadays don't take much care about it anymore, so there are a lot of things you can do to save memory. To get a smoothly working Linux environment on a low memory machine you will need to consciously choose a lot of aspects of your system, most importantly the graphical environment, desktop environment and applications. This page provides detailed information about these various optimization possibilities.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Alternative graphical environments==&lt;br /&gt;
{{Todo|...}}&lt;br /&gt;
&lt;br /&gt;
==Streamlining the desktop environment==&lt;br /&gt;
The common desktop environments GNOME and KDE are focused more on features, integration, and beauty rather than on saving resources. Understandable, but running Linux on an older ThinkPad with limited RAM requires a focus on limiting resource usage. The good thing about Linux is that a lot of things stay adjustable and customizable. So lets see what we can do about desktops.&lt;br /&gt;
&lt;br /&gt;
One of the most important things is to decide for one graphical widget library and stick with that when you are choosing your desktop environment and applications. Having several toolkits in use means more libraries being loaded and hence more memory being used by those. Possibilities are:&lt;br /&gt;
* [http://www.fltk.org/ FLTK]&lt;br /&gt;
* [http://www.fox-toolkit.org/ FOX toolkit]&lt;br /&gt;
* [http://www.gnustep.org GNUstep toolkit]&lt;br /&gt;
* [http://www.gtk.org/ GTK] (not recommended, use GTK 2 if possible)&lt;br /&gt;
* [http://www.gtk.org/ GTK 2]&lt;br /&gt;
* [http://www.lesstif.org/ Lesstif] / [http://www.openmotif.org/ OpenMotif]&lt;br /&gt;
* [http://www.trolltech.com/products/qt/index.html QT]&lt;br /&gt;
* [http://www.windowmaker.org/development-wings.html WINGs] (kind of a lightweight GNUstep toolkit, provided by the WindowMaker developers)&lt;br /&gt;
* [http://www.x.org/ X Toolkit]&lt;br /&gt;
&lt;br /&gt;
Of those, at current state, there are enough applications for the X Toolkit, GTK, GTK 2 and QT to provide you with a solution for every task you should want.&lt;br /&gt;
&lt;br /&gt;
===GNOME===&lt;br /&gt;
It's like with humans, the worst feature is in most cases also the best one. For GNOME it is probably the many little parts it consists of. Makes it hard to install, but enables one to customize the installation. So, the first thing you should do to streamline GNOME is not to launch it. Sound stupid? Well, lets have a look.&lt;br /&gt;
&lt;br /&gt;
GNOME is basically a set of libraries built around the GTK+ libs and extending its functionality. Add some nice little applications, a session manager, a panel, beautiful icons, and some other stuff and you have GNOME as you know it. Reversing those additions is what you can do to use GNOME applications on a machine that this desktop environment would normally take your nerves on.&lt;br /&gt;
&lt;br /&gt;
The GNOME panel, the session manager, the desktop manager and the window manager are all parts of GNOME that eat a lot of memory for something that others can do in a maybe little less beautiful but much more resource saving way.&lt;br /&gt;
So first off configure your login manager not to launch gnome-session at login. If you are using GDM this is quite straight forward, you just need to add a different session script, launching your favorite window manager. See the list below and pick one, lets say i.e. WindowMaker. WindowMaker uses a desktop menu, a dock and a notification area to provide you with an organized way of launching applications and iconfying running ones. So we don't need a panel anymore. Also, think if you really need icons on your desktop. If you do, think about using something like ROX filer instead of nautilus for that. In any case, tell nautilus not to manage the desktop by default by unchecking the according setting within gconf-editor. To keep GNOME applications happy we would need to have gconf and gnome-settings-manager running at every session start. One way to do this is to either include them in your new session script. They both need to be running to make GNOME applications realize their settings properly.&lt;br /&gt;
&lt;br /&gt;
===KDE===&lt;br /&gt;
{{Todo|...}}&lt;br /&gt;
&lt;br /&gt;
===Alternative Desktop Environments===&lt;br /&gt;
First of all, it is important to notice that GNOME and KDE are not the only Desktop Environments around.&lt;br /&gt;
Other complete (featuring most of: window management, session management, desktop management, file management and panel) desktop environments are:&lt;br /&gt;
* [http://xfce.org/ XFCE] &amp;lt;tt&amp;gt;uses GTK 2&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [http://rox.sourceforge.net ROX Desktop]&lt;br /&gt;
* [http://ede.sourceforge.net Equinox Desktop Environment] &amp;lt;tt&amp;gt;uses eFLTK, a modified version of FLTK&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [http://www.nongnu.org/antiright/ AntiRight Desktop Environment] &amp;lt;tt&amp;gt;uses LessTif / OpenMotif&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [http://foxdesktop.sourceforge.net/ FOX Desktop Environment] &amp;lt;tt&amp;gt;uses FOX Toolkit&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [http://www.gnustep.org/ GNUstep] &amp;lt;tt&amp;gt;provides it's own toolkit&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[http://www.lxde.org/ LXDE, the Lightweight X11 Desktop Environment]] &amp;lt;tt&amp;gt;uses GTK-2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But also, some Window Managers exceed the task of managing windows towards providing a functional workbench. See below for a list.&lt;br /&gt;
&lt;br /&gt;
===Building your own Desktop===&lt;br /&gt;
&lt;br /&gt;
====Window Manager====&lt;br /&gt;
If you want to build your own customized desktop, a good start is choosing the window manager of your liking.  A list of window managers is at [http://xwinman.org].&lt;br /&gt;
&lt;br /&gt;
Here's a list of some of them:&lt;br /&gt;
*including basic Desktop Environment functionality&lt;br /&gt;
**the [[Wikipedia:NextStep|NextStep]] alike ones&lt;br /&gt;
***[http://www.windowmaker.org/ WindowMaker] &amp;lt;tt&amp;gt;(probably the most widespread NextStep like WM)&amp;lt;/tt&amp;gt;&lt;br /&gt;
***[http://www.afterstep.org/ AfterStep] &amp;lt;tt&amp;gt;(another one of those)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**the Blackbox-like ones&lt;br /&gt;
***[http://blackboxwm.sourceforge.net/ BlackBox]&lt;br /&gt;
***[http://fluxbox.sourceforge.net/ FluxBox] &amp;lt;tt&amp;gt;(tabbed windows, lighweight)&amp;lt;/tt&amp;gt;&lt;br /&gt;
***[http://www.icculus.org/openbox/ OpenBox] &amp;lt;tt&amp;gt;(written from scratch to be fully ICCCM and EWMH compliant, fast and light-weight)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**others&lt;br /&gt;
***[http://www.icewm.org/ IceWM] &amp;lt;tt&amp;gt;(lightweight, widespread)&amp;lt;/tt&amp;gt;&lt;br /&gt;
***[http://enlightenment.sourceforge.net/ Enlightenment] &amp;lt;tt&amp;gt;(lots of features and eye candy)&amp;lt;/tt&amp;gt;&lt;br /&gt;
***[http://www.pekwm.org PekWM] &amp;lt;tt&amp;gt;(kind of a one man show, but feature rich and extremely customizable)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*pure WindowManagers &lt;br /&gt;
**[http://golem.sourceforge.net/ Golem]&lt;br /&gt;
**[http://home.earthlink.net/~lab1701/larswm/ LarsWM] &amp;lt;tt&amp;gt;(unique tiling Window Manager)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://www.nongnu.org/ratpoison/ ratpoison] &amp;lt;tt&amp;gt;(modeled after gnu screen)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://fvwm.org/ fvwm] &amp;lt;tt&amp;gt;(small but powerful)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://www.jfc.org.uk/software/lwm.html lwm] &amp;lt;tt&amp;gt;(very small, and fast)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://www.all-day-breakfast.com/wm2/ wm2] &amp;lt;tt&amp;gt;really small Window Manager&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://www.all-day-breakfast.com/wmx/ wmx] &amp;lt;tt&amp;gt;slightly more featureful version of wm2&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://wmii.suckless.org wmii] &amp;lt;tt&amp;gt;keyboard driven approach, very small, dynamic window managing&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://dwm.suckless.org dwm] &amp;lt;tt&amp;gt;keyboard-only driven approach, yet smaller than wmii, dynamic window managing&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Taskbar/Panel====&lt;br /&gt;
Another thing that especially users coming to Linux from the Windows world would probably like is a Panel or Taskbar.&lt;br /&gt;
&lt;br /&gt;
Here's a collection of independant low resource panels:&lt;br /&gt;
*[http://www.chatjunkies.org/fspanel/ F***ing Small Panel] &amp;lt;tt&amp;gt;(doesn't use any toolkit)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://freshmeat.net/projects/hpanel/ HPanel] &amp;lt;tt&amp;gt;(doesn't use any toolkit)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://fbpanel.sourceforge.net/ fbpanel] &amp;lt;tt&amp;gt;(depends on GTK 2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://jodrell.net/projects/perlpanel Perl Panel] &amp;lt;tt&amp;gt;(depends on GTK 2, gnomevfs, perl)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://www.gkrellm.net/ GKrellM] &amp;lt;tt&amp;gt;(depends on GTK 2, flexible plugin based skinable vertical panel)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore most of the windowmanagers allow you to have something like a panel/taskbar configured, and system tray applications like [http://stalonetray.sourceforge.net/ stalonetray] supply support for  persistent applications (i.e. those that on quit do not quit but minimize to a tray icon) like Skype.&lt;br /&gt;
&lt;br /&gt;
====Desktop Pinboard====&lt;br /&gt;
Then, the next thing you might be looking for is how to get icons onto your desktop. Usually this is done by the file manager who displays the content of a special directory as icons on the desktop. See the File Manager section to follow this approach.&lt;br /&gt;
&lt;br /&gt;
However, you might decide for a really lightwight file manager which doesn't offer this feature. In that case all hope is not lost, for there are also special programs specialized in desktop icon management. Such are:&lt;br /&gt;
* [http://idesk.sourceforge.net/ iDesk] &amp;lt;tt&amp;gt;(recent versions need imlib2 only)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====File Manager====&lt;br /&gt;
File Managers are the fourth really important compontent of a desktop environment. There are plenty out their ranging from resource hugs to really lightweight and slim ones.&lt;br /&gt;
&lt;br /&gt;
File Managers come with three distinct general user interface approaches: the two pane gui, the spacial and the browser gui. The browser gui is the one the Windows Explorer starting from Windows 2000 uses as well as earlier versions of Nautilus. The spacial view is the one known from Windows 95 and more recent versions of Nautilus. The two pane view is know to many from Norten Commander, Directory Opus or your favorite FTP client.&lt;br /&gt;
&lt;br /&gt;
The following list provides an overview.&lt;br /&gt;
*FLTK&lt;br /&gt;
** [http://www.oksid.ch/flfm/ Fast Light File Manager] &amp;lt;tt&amp;gt;(spacial gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* FOX toolkit&lt;br /&gt;
** [http://roland65.free.fr/xfe/ X File Explorer] &amp;lt;tt&amp;gt;(browser and two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*GTK&lt;br /&gt;
** [http://www.kaisersite.de/dfm/ Desktop File Manager] &amp;lt;tt&amp;gt;(spacial gui, incl. desktop icon management)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://www.uwyn.com/projects/fm/ FM] &amp;lt;tt&amp;gt;(spacial, MAC OS 9 like gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://radekc.regnet.cz/ Seksi Commander] &amp;lt;tt&amp;gt;(two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*GTK 2&lt;br /&gt;
** [http://rox.sourceforge.net/ ROX Filer] &amp;lt;tt&amp;gt;(highly productive spacial gui, incl. panel and desktop icon management)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://blog.perldude.de/projects/filer/ Filer] &amp;lt;tt&amp;gt;(browser and two pane gui, requires Perl)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://xffm.sourceforge.net/ XFFM] &amp;lt;tt&amp;gt;(browser and spacial gui, requires some XFCE libs)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://logicaldesktop.sourceforge.net/ Logical Desktop] &amp;lt;tt&amp;gt;(browser gui, actually a very special approach)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://tuxcmd.sourceforge.net/ Tux Commander] &amp;lt;tt&amp;gt;(two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://www.nongnu.org/gcmd/index.html Gnome Commander] &amp;lt;tt&amp;gt;(two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://emelfm2.net/emelFM2/ emelFM2] &amp;lt;tt&amp;gt;(two pane gui with full customizable menu and toolbar, the best for power users)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://thunar.xfce.org/index.xhtml Thunar] &amp;lt;tt&amp;gt;(requires some XFCE libs)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://pcmanfm.sourceforge.net/ PCMan File Manager] &amp;lt;tt&amp;gt;(An extremly fast and lightweight file manager which features tabbed browsing and user-friendly interface. Requires GTK+ version 2.8.x)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* OpenMotif&lt;br /&gt;
** [http://www.musikwissenschaft.uni-mainz.de/~ag/xplore/xplore.php Xplore] &amp;lt;tt&amp;gt;(browser gui with productive 4 pane concept)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* QT 2&lt;br /&gt;
** [http://www.hi-net.cz/blaza/bfcommander/en/index.html BF-Commander] &amp;lt;tt&amp;gt;(two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*Qt3&lt;br /&gt;
** [http://www.beesoft.org/download_bsc.html Beesoft Commander] &amp;lt;tt&amp;gt; (fast &amp;amp; easy two panel file manager, like Norton Commander)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Tcl/Tk&lt;br /&gt;
** [http://users.tkk.fi/~mkivinie/X-Files/ X-Files] &amp;lt;tt&amp;gt;(two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*X Toolkit&lt;br /&gt;
** [http://www.musikwissenschaft.uni-mainz.de/~ag/xfm/ X File Manager] &amp;lt;tt&amp;gt;(spacial gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://www.boomerangsworld.de/worker/ Worker] &amp;lt;tt&amp;gt;(two pane gui, highly productive and configurable)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://xnc.dubna.su/ X Northern Captain] &amp;lt;tt&amp;gt;(interesting flexible two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*3D Filemanagers&lt;br /&gt;
** [http://www.determinate.net/webdata/seg/tdfsb.html TDFSB] &amp;lt;tt&amp;gt;(3D gui, the most impressing 3D file browser so far)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://www.forchheimer.se/bfm/ Brutal File Manager] &amp;lt;tt&amp;gt;(3D gui more for fun than productivity)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://turma.sourceforge.net/software/3dfile/ 3DFile] &amp;lt;tt&amp;gt;(3D gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://orbis.sourceforge.net/ Orbis] &amp;lt;tt&amp;gt;(3D gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Choosing applications==&lt;br /&gt;
===Web Browser===&lt;br /&gt;
This is highly dependent on the way you use your browser, it's often worth it to try out all and just track general&lt;br /&gt;
memory usage. Remember that &amp;lt;tt&amp;gt;top&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;ps&amp;lt;/tt&amp;gt; don't report correct memory usage, track totals only.&lt;br /&gt;
&lt;br /&gt;
====Firefox====&lt;br /&gt;
Firefox is graphical web browser. One can install features like AdBlock and FlashClicktoplay which will decrease memory  and&lt;br /&gt;
processor usage by hiding Flash and Java -adverts.&lt;br /&gt;
&lt;br /&gt;
====Opera====&lt;br /&gt;
Opera is graphical web browser. You can easily enable/disable plug-ins and java (press F12) and decrease memory usage.&lt;br /&gt;
Opera uses QT as toolkit, so you may shave off some Mbytes off memory usage by using dynamically linked version if you use KDE.&lt;br /&gt;
&lt;br /&gt;
====Konqueror====&lt;br /&gt;
Konqueror is graphical web browser. It's integrated with KDE and has several advanced features (esp. ca. KDE 3.5).&lt;br /&gt;
You may save some megabytes by using it instead of other browsers when using KDE.&lt;br /&gt;
It's not necessarily heavy even when used without running KDE.&lt;br /&gt;
&lt;br /&gt;
====Dillo====&lt;br /&gt;
Dillo is minimalistic and very small graphical web browser. &lt;br /&gt;
&lt;br /&gt;
====Elinks/Lynx====&lt;br /&gt;
elinks/lynx are both text mode web browsers. &amp;lt;tt&amp;gt;elinks&amp;lt;/tt&amp;gt; handles tables and formatting much nicer than &amp;lt;tt&amp;gt;lynx&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Both go very easy on memory footprint.&lt;br /&gt;
&lt;br /&gt;
{{Todo|...}}&lt;br /&gt;
&lt;br /&gt;
==Disabling unneeded system deamons==&lt;br /&gt;
Another thing you can do to improve performance is to get rid of unneaded system daemons launched from your init scripts. Disable them by using the according configuration interface of your distro or by deleting links in the according runlevel directories (usually in &amp;lt;code&amp;gt;/etc/rc.d/&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Daemons you usually don't need:&lt;br /&gt;
* httpd &amp;lt;tt&amp;gt;(Apache web server)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* mysqld &amp;lt;tt&amp;gt;(MySQL database server)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* smbd &amp;lt;tt&amp;gt;(SMB windows filesharing server)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* pppd &amp;lt;tt&amp;gt;(PPP server for connections through modems and serial lines)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Adjusting filesystems==&lt;br /&gt;
You can also try to optimize memory usage by making sure that you have as little as possible of your filesystem residing in RAM. To do this make sure that the following mount points are set to reside on your harddisk in {{path|/etc/fstab}}. {{Todo|how?}}&lt;br /&gt;
* /dev (not possible if you use udev)&lt;br /&gt;
* /tmp&lt;br /&gt;
&lt;br /&gt;
Also make sure that you mount filesystems with extensive usage with noatime parameter (mount -o remount,ro /...), which disabled access time writes every time you access some file. Note that many incremental backups needs atime to work, such backups will then behave like full backup everytime. This depends on backup systems.&lt;br /&gt;
&lt;br /&gt;
==Other tips==&lt;br /&gt;
===Disk space===&lt;br /&gt;
When using Debian/Ubuntu/other derivative, use &amp;lt;tt&amp;gt;aptitude&amp;lt;/tt&amp;gt; as package manager, and use it as soon as possible. Use it and only it to install and remove packages.&lt;br /&gt;
&lt;br /&gt;
One of its most useful features is that it tracks packages you install and marks packages installed via dependency as such, so when you remove a package that is no longer used, or package updates and doesn't use a library anymore, that dependency will get uninstalled.&lt;br /&gt;
&lt;br /&gt;
You can mark packages installed as automatically installed by hitting 'M' (uppercase m), it will be marked for deinstallation if it's not longer required.&lt;br /&gt;
&lt;br /&gt;
You could also install &amp;lt;tt&amp;gt;localepurge&amp;lt;/tt&amp;gt;, which will remove all unneeded locales and localized manpages for packages you install.&lt;br /&gt;
&lt;br /&gt;
===System clock===&lt;br /&gt;
&amp;lt;tt&amp;gt;ntpd&amp;lt;/tt&amp;gt; can occupy around 4MB of memory, which is a substantial proportion of many older systems' total. [http://chrony.sunsite.dk/ &amp;lt;tt&amp;gt;chrony&amp;lt;/tt&amp;gt;] is a pair of programs that replace the standard &amp;lt;tt&amp;gt;ntp&amp;lt;/tt&amp;gt; and require much less memory.&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_get_special_keys_to_work&amp;diff=41550</id>
		<title>How to get special keys to work</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_get_special_keys_to_work&amp;diff=41550"/>
		<updated>2009-02-17T21:48:56Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Gnome/metacity */ cite case that Just Works&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
The following table gives an overview over the special keys found on ThinkPads and what is needed to make them work.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
! key !! standard function{{footnote|1}} !! tools supporting key{{footnote|2}} !! configurability{{footnote|3}} !! remarks&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}} || - || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || on release without completed key combination&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F1}} || - || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F2}} || lock screen || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || in models from T/X/Z 60 onwards&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F3}} || blank screen || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F4}} || suspend to ram || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || may generate ACPI event when not enabled in the ibm-acpi hotkey mask&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F5}} || switch bluetooth || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || in models starting from 2002&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F6}} || - || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F7}} || toggle display || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]] || additional actions || [[Sample Fn-F7 script]]&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F8}} || toggle trackpoint/touchpad || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F9}} || eject from dock || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F10}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F11}} || - || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F12}} || hibernate || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || may generate ACPI event when not enabled in the ibm-acpi hotkey mask&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Home}} / {{key|Fn}}{{key|Pos1}} || brightness up || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|End}} || brightness down || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|PageUp}} || toggle thinklight || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Space}} || toggle zoom || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Ins}} || - || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]]|| full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Del}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Backspace}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|NumLock}} || - || [[#xmodmap configuration|xmodmap]] || make working ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Windows}} || - || [[#xmodmap configuration|xmodmap]] || remapping ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} or {{ibmkey|ThinkVantage|#495988}} || help application || [[thinkpad-acpi]],[[#tpb configuration|tpb]], [[KMilo]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Home|#494949}} || open web browser || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Search|#494949}} || open search application || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Mail|#494949}} || open mail application || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Favorites|#494949}} || open favorites || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Reload|#494949}} || reload web page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Abort|#494949}} || abort loading page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Backward|#494949}} || previous page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full ||  ext. keyboards and ThinkPads starting from 2002&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Forward|#494949}} || next page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || ext. keyboards and ThinkPads starting from 2002&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume up|#494949}} || volume up || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume down|#494949}} || volume down || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume mute|#494949}} || mute volume || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Play/Pause|#494949}} || start/pause playback  || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Down)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Stop|#494949}} || stop playback || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Up)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Next|#494949}} || play next || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Right)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Previous|#494949}} || play previous || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Left)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Power|#494949}} || shutdown || [[#ibm-acpi events|ibm-acpi]],[[thinkpad-acpi]] || full || triggered on pressing 3secs, but notebook goes off on 5sec press&lt;br /&gt;
|-&lt;br /&gt;
| Display lid || blank screen || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| Ultrabay lid || announce ultrabay change || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| Dock eject || eject from dock || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet power|#494949}} || shutdown || [[#ibm-acpi events|ibm-acpi]] || full || triggered on pressing 3secs, but notebook goes off on 5sec press&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet orientation|#494949}} || rotates screen || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet shortcut|#494949}} || shortcut menu || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Esc|#494949}} || esc key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Enter|#494949}} || enter key || [[#mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Up|#494949}} || up key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Down|#494949}} || down key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet (unlabeled)|#494949}} || down key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For completeness, note that the WiFi enable/disable switch is located (on the X61 and other models that have it) just under the front edge of the base of the machine.  You should see a small horizontal slider switch.  Enable by sliding it rightwards, disable by sliding it leftwards.&lt;br /&gt;
&lt;br /&gt;
Tablet buttons vary with model.  See [[Tablet Hardware Buttons]].&lt;br /&gt;
&lt;br /&gt;
==Triggering key events==&lt;br /&gt;
&lt;br /&gt;
===ibm-acpi/thinkpad-acpi events===&lt;br /&gt;
Some of the following events require a {{cmdroot|echo enable,0xffff &amp;gt;/proc/acpi/ibm/hotkey}} (when using ibm-acpi) in order to make acpi able to get information on them. Since the newer thinkpad-acpi has a larger number of bits that can be set in the mask, you might try {{cmdroot|echo enable,0xffffffff &amp;gt;/proc/acpi/ibm/hotkey}} if you are using this driver. These events can be used to [[How to configure acpid|configure acpid]].&lt;br /&gt;
&lt;br /&gt;
On {{Debian}} Lenny, the acpi-support package automagically enables such events.&lt;br /&gt;
&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ events triggered by [[ibm-acpi]] for {{path|/etc/acpi/events}} files. May vary on different models.&lt;br /&gt;
! key !! event&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F1}} || ibm/hotkey HKEY 00000080 00001001&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F2}} || ibm/hotkey HKEY 00000080 00001002&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F3}} || ibm/hotkey HKEY 00000080 00001003&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F4}} || ibm/hotkey HKEY 00000080 00001004&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F5}} || ibm/hotkey HKEY 00000080 00001005&lt;br /&gt;
|- &lt;br /&gt;
| {{key|Fn}}{{key|F6}} || ibm/hotkey HKEY 00000080 00001006&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F7}} || ibm/hotkey HKEY 00000080 00001007&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F8}} || ibm/hotkey HKEY 00000080 00001008&lt;br /&gt;
|- &lt;br /&gt;
| {{key|Fn}}{{key|F9}} || ibm/hotkey HKEY 00000080 00001009 &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F10}} || ibm/hotkey HKEY 00000080 0000100a&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F11}} || ibm/hotkey HKEY 00000080 0000100b &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F12}} || ibm/hotkey HKEY 00000080 0000100c&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Backspace}} || ibm/hotkey HKEY 00000080 0000100d&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Ins}} || ibm/hotkey HKEY 00000080 0000100e &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Del}} || ibm/hotkey HKEY 00000080 0000100f &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Home}}/{{key|Fn}}{{key|Pos1}} || ibm/hotkey HKEY 00000080 00001010&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|End}} || ibm/hotkey HKEY 00000080 00001011&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|PgUp}} || ibm/hotkey HKEY 00000080 00001012&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Space}} || ibm/hotkey HKEY 00000080 00001014&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume up|#494949}}|| ibm/hotkey HKEY 00000080 00001015&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume down|#494949}} || ibm/hotkey HKEY 00000080 00001016&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume mute|#494949}} || ibm/hotkey HKEY 00000080 00001017&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} or {{ibmkey|ThinkVantage|#495988}} || ibm/hotkey HKEY 00000080 00001018&lt;br /&gt;
|-&lt;br /&gt;
| Ultrabay eject || ibm/bay MSTR 00000003 00000000&lt;br /&gt;
|-&lt;br /&gt;
| Ultrabay inserted || ibm/bay MSTR 00000001 00000000 &lt;br /&gt;
|-&lt;br /&gt;
| Dock eject || ibm/dock GDCK 00000003 00000001 &lt;br /&gt;
|-&lt;br /&gt;
| Wireless switch || ibm/hotkey HKEY 00000080 00007000 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
By disassembling and editing the DSDT, more events can be added.  HKEY events are triggered by calls to the MKHQ function, e.g. &amp;lt;tt&amp;gt;\_SB.PCI0.LPC.EC.HKEY.MHKQ(0Ã—1007)&amp;lt;/tt&amp;gt; will trigger &amp;quot;ibm/hotkey HKEY 00000080 00001007&amp;quot;.  Most of these can be found in &amp;lt;tt&amp;gt;_Qxx&amp;lt;/tt&amp;gt; methods within the DSDT, which are executed on embedded controller events, e.g. _Q10 is triggered by pressing Fn-F7.  You can add a call to MKHQ into an existing &amp;lt;tt&amp;gt;_Qxx&amp;lt;/tt&amp;gt; method to get it recognized by ibm-acpi as well as creating new &amp;lt;tt&amp;gt;_Qxx&amp;lt;/tt&amp;gt; methods, which if you're lucky will correspond to an EC event that IBM never used (e.g. A 770 will send Fn-Home/End/PgUp/PgDn to ibm-acpi if hacked in this fashion). For example, [http://www.wormnet.eu/ibm-g40/morebuttons.dsl this is a modified block of DSDT for a G40].&lt;br /&gt;
&lt;br /&gt;
=== ACPI events from the &amp;lt;tt&amp;gt;button&amp;lt;/tt&amp;gt; module===&lt;br /&gt;
&lt;br /&gt;
A few keys can generate ACPI events that result from the &amp;lt;tt&amp;gt;button&amp;lt;/tt&amp;gt; kernel module, as long as they are masked off in the &amp;lt;tt&amp;gt;ibm-acpi&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;thinkpad-acpi&amp;lt;/tt&amp;gt; hotkey's mask or the hotkey function of the latter module is disabled.&lt;br /&gt;
&lt;br /&gt;
If you want the ThinkPad's BIOS and ACPI methods to know about these keys being pressed, you probably want to leave them masked out from ibm-acpi, and use their non-HKEY events listed below, instead.&lt;br /&gt;
&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ events triggered by ACPI when hotkey is masked out or disabled. &lt;br /&gt;
! key !! event !! T60 event&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Power|#494949}} || button/power PWRF 00000080 xxxxxxxx || button/power PWRF 00000080 00000001&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F4}} || button/sleep SLPB 00000080 00000001 || button/sleep SLPB 00000080 00000001&lt;br /&gt;
|-&lt;br /&gt;
| Display lid || button/lid LID 00000080 xxxxxxxx || button/lid LID 00000080 00000001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===tpb configuration===&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ configuration keywords for [[tpb]] (to put in {{path|/etc/tpbrc}})&lt;br /&gt;
! key !! config keyword&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || THINKPAD&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Home|#494949}} || HOME&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Search|#494949}} || SEARCH&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Mail|#494949}} || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Favorites|#494949}} || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Reload|#494949}} || RELOAD&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Abort|#494949}} || ABORT&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Backward|#494949}} || BACKWARD&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Forward|#494949}} || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}} || FN&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Space}} || CALLBACK (zoom on/off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|PageUp}} || CALLBACK (thinklight on/off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F7}} || CALLBACK (display lcd/crt/both)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F8}} || CALLBACK (expand on/off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Home}} / {{key|Fn}}{{key|Pos1}} || CALLBACK (brightness &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|End}} || CALLBACK (brightness &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume up|#494949}} || CALLBACK (volume &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume down|#494949}} || CALLBACK (volume &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume mute|#494949}} || CALLBACK (mute on/off)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To all parameter keywords should be assigned the full path to the executables supposed to be started on key press.&lt;br /&gt;
The exectable provided for the CALLBACK keyword should take the parameters given in parentheses and act according to them.&lt;br /&gt;
If you want to use xmodmap for the HOME, SEARCH, MAIL, FAVORITES, RELOAD, ABORT, BACKWARD, FORWARD and FN keys you should&lt;br /&gt;
provide a &amp;lt;tt&amp;gt;XEVENTS OFF&amp;lt;/tt&amp;gt; in your {{path|/etc/tpbrc}}. &lt;br /&gt;
You can use an appropriate executable to [[How to inject fake keystrokes|inject fake keystrokes]].&lt;br /&gt;
&lt;br /&gt;
For Debian users, tpb is started from {{path|/etc/X11/Xsession.d/90tpb}}.&lt;br /&gt;
&lt;br /&gt;
'''Sound Button configuration'''&lt;br /&gt;
&lt;br /&gt;
''Note: Tested on T60p with Ubuntu 6.06 LTS''&lt;br /&gt;
&lt;br /&gt;
Most Thinkpads have a hardware sound mixer, thus the volumes buttons should work without configuration. However, this change is not reflected in the software mixer. tpb has a switch to enable software mixer support via OSS. The manual recommends this only for devices without a hardware mixer, but it also works for other hadware mixer enabled devices, even with the ALSA system. Just put MIXER ON in your {{path|/etc/tpbrc}} file and you can see the effect immediately in any ALSA mixer (e.g. kmix). For this to work you need write permissions to {{path|/dev/nvram}}.&lt;br /&gt;
&lt;br /&gt;
''Note: Tested on X21 with Ubuntu 6.06 LTS''&lt;br /&gt;
&lt;br /&gt;
On the ThinkPad X21 (and maybe some other older models) ACPI causes problems with tpb.  On an X21 using acpi the volume buttons would work occasionally, and the OSD for tpb functions would rarely work.  If a volume buttons was pressed too often, sometimes the computer would enter a low power (unplugged state) and would require a reboot.  The solution is to use APM instead of ACPI.  Instructions can be found in [[How_to_make_APM_work]].&lt;br /&gt;
&lt;br /&gt;
===KMilo configuration===&lt;br /&gt;
The programs to be executed by [[KMilo]] are configured via the KDE Control Center (&amp;lt;tt&amp;gt;kcontrol&amp;lt;/tt&amp;gt;), under &amp;lt;tt&amp;gt;System Administration --&amp;gt; IBM Thinkpad Laptop&amp;lt;/tt&amp;gt;. Note that you can use appropriate commands to [[How to inject fake keystrokes|inject fake keystrokes]].&lt;br /&gt;
&lt;br /&gt;
===xmodmap configuration===&lt;br /&gt;
xmodmap enables you to edit the modifier map and keymap tables that are used to translate keycodes into keysyms.&lt;br /&gt;
Understood? Well, basically it allows you to give the X server a dictionary for the translation of keycodes like &amp;quot;97&amp;quot; into more human readable synonyms like &amp;quot;Home&amp;quot;. This way xmodmap allows you to make the special keys of your keyboard known to X applications.&lt;br /&gt;
&lt;br /&gt;
To discover the keycode that a certain keypress produces, use the tool {{cmduser|xev}} &lt;br /&gt;
&lt;br /&gt;
Usually you should write your keycode-keysym associations into the file {{path|~/.Xmodmap}}. This file is usually read by the X session startup scripts of your system, so that the mappings automatically get included everytime you run the X server.&lt;br /&gt;
&lt;br /&gt;
The {{path|~/.Xmodmap}} lines for our purpose are in the form of&lt;br /&gt;
 keycode &amp;lt;keycode&amp;gt; = &amp;lt;keysym&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load the assocation using the command&lt;br /&gt;
&lt;br /&gt;
{{cmduser|xmodmap ~/.Xmodmap}} &lt;br /&gt;
&lt;br /&gt;
(some configurations do this automatically upon X startup). &lt;br /&gt;
&lt;br /&gt;
The following table shows the keycodes generated by the ThinkPad special keys and sensible keysyms to assign them to.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ keycodes and recommended keysyms&lt;br /&gt;
! key !! keycode !! keysym&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || 159 || XF86LaunchA&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Backward|#494949}} || 234 || XF86Back or F19&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Forward|#494949}} || 233 || XF86Forward or F20&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Play/Pause|#494949}} || 162 || XF86AudioPlay&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Stop|#494949}} || 164 || XF86AudioStop&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Next|#494949}} || 153 || XF86AudioNext&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Previous|#494949}} || 144 || XF86AudioPrev&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| {{ibmkey|Home|#494949}} || 178 || XF86HomePage&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Search|#494949}} || 229 || XF86Search&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Mail|#494949}} || 236 || XF86Mail&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Favorites|#494949}} || 230 || XF86AddFavorite or XF86Favorites&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Reload|#494949}} || 231 || XF86Reload&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Abort|#494949}} || 232 || XF86Stop&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}} || 227 || F35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: You can also use xkeycaps (an X tool to display and edit the X keyboard mapping) to generate proper .Xmodmap.&lt;br /&gt;
&lt;br /&gt;
Note: if you are running [[tpb]] you might need to add the line &amp;lt;tt&amp;gt;XEVENTS=off&amp;lt;/tt&amp;gt; into your tpbrc to stop it from grabbing the key events and allow them to get through to X instead. See [[http://www.thinkwiki.org/wiki/Tpb]] for more detailed instruction on how to use tpb and xmodmap.&lt;br /&gt;
&lt;br /&gt;
Note: XF86Forward and XF86Back do not work correctly in Firefox. You may want to map them to F19 and F20 instead if you use Firefox.&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;XF86AudioPlay&amp;quot; etc. just works with a few programs. To make it work with more multimedia programs you have map the key to use something like [http://www.kde-apps.org/content/show.php/ReMoot?content=63140 ReMoot]. ReMoot is a command line wrapper that control 18 of the most common multimedia applications. &lt;br /&gt;
&lt;br /&gt;
=====Enabling the Windows and Menu Keys=====&lt;br /&gt;
On some systems the Windows and Menu keys may not be recognized.  You can enable then by&lt;br /&gt;
making the following changes:&lt;br /&gt;
&lt;br /&gt;
        keycode 115 = F13&lt;br /&gt;
        keycode 227 = F35&lt;br /&gt;
&lt;br /&gt;
F13 and F35 are used for the Windows and and Menu keys respectively.  Labelling keycpode 227 as &amp;quot;Menu&amp;quot; may conflict with the right-mouse-click event.&lt;br /&gt;
&lt;br /&gt;
=====Using Caps Lock as Super L (Windows key)=====&lt;br /&gt;
You can easily use Caps Lock as Win key by adding the following in your ~/.Xmodmap:&lt;br /&gt;
        ! No Caps Lock&lt;br /&gt;
        clear lock&lt;br /&gt;
        ! Caps Lock as Win key&lt;br /&gt;
        add mod4 = Caps_Lock&lt;br /&gt;
=====NumLock=====&lt;br /&gt;
On the ThinkPad {{600}}, {{T20}}, {{T21}}, {{T22}}, {{T30}}, {{X20}}, {{X21}},  {{X31}}, {{X40}}, {{T42p}}, {{T43}}, {{R51}}, {{R52}} and possibly other models, X does not recognize the keycode for {{key|NumLk}} = {{key|Shift}}+{{key|ScrLk}}. To fix this, add the following to {{path|~/.Xmodmap}} in your home directory or {{path|/etc/X11/Xmodmap}} and run &amp;lt;tt&amp;gt;xmodmap&amp;lt;/tt&amp;gt;, ex: &amp;lt;tt&amp;gt;xmodmap ~/.Xmodmap&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 keycode 77 = Num_Lock&lt;br /&gt;
&lt;br /&gt;
The following might work better for you:&lt;br /&gt;
  keycode 77 = Num_Lock Num_Lock&lt;br /&gt;
because you will only get keycode 77 together with Shift (at least on the {{T43}})&lt;br /&gt;
&lt;br /&gt;
This configuration also enables the respective LED.&lt;br /&gt;
&lt;br /&gt;
Please note, pressing the {{key|Shift}}+{{key|ScrLk}} key combination, without first following the above configuration, will start an accessibility feature, which will allow the numeric keypad to maneuver the mouse pointer.  Starting this accessibility feature and subsequently running xmodmap, as described above, results in the accessibility feature and the numeric lock LED functioning simultaneously.  As such, the above configuration should be completed before the accessibility feature is started in order to produce numbers.&lt;br /&gt;
======T60 (and possibly others)======&lt;br /&gt;
It seems that on the T60, PrtSc, ScrLk and Pause all generate the correct keycodes, however Fn-PrtSc (labelled as SysRq) generates keycode 64 (Alt_L) followed by the expected 111 (Sys_Req) on down and the same thing in the opposite order on release. Fn-ScrLk (labelled as NmLk) does indeed toggle the Numlock, but only seems to register as an X event the first time it is engaged. The above solution does not appear to work. This is perhaps because the Numlock toggle is built into the firmware rather than controlled by the kernel. Finally, Fn-Pause (labelled as Break) generates keycode 37 (Control_L) followed by the expected keycode 110 (Break) on down and the same thing in reverse order on release.&lt;br /&gt;
&lt;br /&gt;
=====NumPad (KeyPad) keys access by a key combination=====&lt;br /&gt;
The current state is that you have to switch NumLock '''on''' via {{key|Fn}}+{{key|ScrLk}} and then e.g. type {{key|u}} to get a {{key|KP_4}} (NumPad 4). To get back to normal keyboard, you have to type {{key|Fn}}+{{key|ScrLk}} again.&lt;br /&gt;
&lt;br /&gt;
Some people (including me) are missing on recent Thinkpads the option to have Fn as a modifier key to access the NumPad instead, i.e. and e.g. {{key|Fn}}+{{key|u}} gives you {{key|KP_4}}.&lt;br /&gt;
&lt;br /&gt;
There is currently no way to make this work in a simple way (pleeeease correct me if I am wrong!), though there is a work-around. Instead of using {{key|Fn}} for accessing the NumPad, {{key|CapsLock}} can get this function by being mapped as Mode_switch (the {{key|AltGr}} on international keyboards). The {{key|Fn}} can be remapped to be Caps_Lock - while at the same time retaining its function to access the special laptop functions (e.g. {{key|Fn}}+{{key|F4}} for sleep}}, by using .Xmodmap.&lt;br /&gt;
&lt;br /&gt;
So on my {{R60}} running fvwm@{{Slackware}} 12.1 the .Xmodmap would look like this:&lt;br /&gt;
&lt;br /&gt;
 ! Make the forward and back buttons work&lt;br /&gt;
    keycode 233 = XF86Forward&lt;br /&gt;
    keycode 234 = XF86Back&lt;br /&gt;
 ! Make the WIN key to Super modifier&lt;br /&gt;
    keycode 115 = Super_L&lt;br /&gt;
 ! Set the Caps_Lock physical key to Mode_switch (like AltGr on intl. keyboards)&lt;br /&gt;
    keycode 66 = Mode_switch&lt;br /&gt;
 ! Set the Fn key to work as Caps_Lock now. The special key combos like Fn-F4 for &amp;quot;sleep&amp;quot; still work then&lt;br /&gt;
    keycode 227 = Caps_Lock&lt;br /&gt;
    clear lock&lt;br /&gt;
    add lock = Caps_Lock&lt;br /&gt;
 ! Now we activate those new keys. Find some free mod slots (xmodmap) and put them there.&lt;br /&gt;
    clear mod4&lt;br /&gt;
    clear mod5&lt;br /&gt;
    add mod4 = Super_L&lt;br /&gt;
    add mod3 = Mode_switch&lt;br /&gt;
 ! It's time to add the keypad keys to the third position of the key definition (pure shift mode_switch shift+mode_switch)&lt;br /&gt;
    keycode 16 = 7 ampersand KP_7&lt;br /&gt;
    keycode 17 = 8 asterisk KP_8&lt;br /&gt;
    keycode 18 = 9 parenleft KP_9&lt;br /&gt;
      keycode 19 = 0 parenright KP_Divide&lt;br /&gt;
    keycode 30 = u U KP_4&lt;br /&gt;
    keycode 31 = i I KP_5&lt;br /&gt;
    keycode 32 = o O KP_6&lt;br /&gt;
      keycode 33 = p P KP_Multiply&lt;br /&gt;
    keycode 44 = j J KP_1&lt;br /&gt;
    keycode 45 = k K KP_2&lt;br /&gt;
    keycode 46 = l L KP_3&lt;br /&gt;
      keycode 47 = semicolon colon KP_Subtract&lt;br /&gt;
    keycode 58 = m M KP_0&lt;br /&gt;
 ! ... I have to use the coma key, too, on the keypad...so I set it to be F20 (which is not existing on normal keyboards and thus is free... check for side effects in programmes accepting F12+ keys!)&lt;br /&gt;
    keycode 59 = comma less F20 &lt;br /&gt;
    keycode 60 = period greater KP_Decimal    &lt;br /&gt;
      keycode  61 = slash question KP_Add&lt;br /&gt;
&lt;br /&gt;
{{WARN|Your keycodes might be different as well as your '''mod''#''''' settings.}}&lt;br /&gt;
Use {{cmduser|xmodmap}} and {{cmduser|xmodmap -pke}} to check your ModMap, and the tool {{cmduser|xev}} to obtain your exact key codes.&lt;br /&gt;
&lt;br /&gt;
===Mapping keys with setkeycodes===&lt;br /&gt;
You can use the setkeycodes command to remap certain keys. I.e. you can use {{cmdroot|setkeycodes 6e 109 6d 104 69 28 6b 1}} to map the Tablets Up and Down keys to the standard PageUp and PageDown keys and Tablet Escape and Enter to their respective keys.&lt;br /&gt;
&lt;br /&gt;
The following table shows the scancodes generated by the ThinkPad keys.  They vary with model - see [[Tablet Hardware Buttons]].&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ scancodes&lt;br /&gt;
! key !! scancode&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet orientation|#494949}} || 0x6c&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Shortcut|#494949}} || 0x68&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Esc|#494949}} || 0x6b&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Enter|#494949}} || 0x69&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Up|#494949}} || 0x6d&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Down|#494949}} || 0x6e&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet (unlabeled)|#494949}} || 0x67&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===acpi_fakekey===&lt;br /&gt;
You can turn acpi events into user-level xevents by putting &amp;lt;tt&amp;gt;acpi_fakekey&amp;lt;/tt&amp;gt; commands into the acpi action scripts. There are several layers involved in using acpi keys in this way, so I'll go through the example of using the ThinkVantage button to open xmms.&lt;br /&gt;
&lt;br /&gt;
My ThinkVantage button generates an '''acpi event''' &amp;quot;ibm/hotkey HKEY 00000080 00001018&amp;quot;, so we have the event file &amp;lt;tt&amp;gt;/etc/acpi/events/ThinkVantage&amp;lt;/tt&amp;gt; for it which executes the script &amp;lt;tt&amp;gt;/etc/acpi/actions/fakekey-macro.sh&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event=ibm/hotkey HKEY 00000080 00001018&lt;br /&gt;
action=/etc/acpi/actions/fakekey-macro.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In turn, the executable &amp;lt;tt&amp;gt;/etc/acpi/actions/fakekey-macro.sh&amp;lt;/tt&amp;gt; script calls acpi_fakekey with the '''key number''' defined in &amp;lt;tt&amp;gt;/usr/share/acpi-support/key-constants&amp;lt;/tt&amp;gt; as $KEY_MACRO which is 112 (you could just as well choose an other key number, just make sure that it doesn't belong to something else like the &amp;quot;j&amp;quot; key or something). &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
. /usr/share/acpi-support/key-constants&lt;br /&gt;
acpi_fakekey $KEY_MACRO &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I have no idea how this actually corresponds to which xevent is generated, so I can find out out by running the program &amp;lt;tt&amp;gt;xev&amp;lt;/tt&amp;gt; and hitting the ThinkVantage button while the mouse is in the &amp;lt;tt&amp;gt;xev&amp;lt;/tt&amp;gt; window (remember to &amp;lt;tt&amp;gt;/etc/init.d/acpid restart&amp;lt;/tt&amp;gt; first if you just created the &amp;lt;tt&amp;gt;/etc/acpi/events/ThinkVantage&amp;lt;/tt&amp;gt; file). I get something popping up in the terminal where I ran xev that looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KeyPress event, serial 30, synthetic NO, window 0x2800001,&lt;br /&gt;
    root 0x6a, subw 0x0, time 2000522842, (138,83), root:(781,500),&lt;br /&gt;
    state 0x0, keycode 239 (keysym 0x0, NoSymbol), same_screen YES,&lt;br /&gt;
    XLookupString gives 0 bytes: &lt;br /&gt;
    XmbLookupString gives 0 bytes: &lt;br /&gt;
    XFilterEvent returns: False&lt;br /&gt;
&lt;br /&gt;
KeyRelease event, serial 30, synthetic NO, window 0x2800001,&lt;br /&gt;
    root 0x6a, subw 0x0, time 2000522842, (138,83), root:(781,500),&lt;br /&gt;
    state 0x0, keycode 239 (keysym 0x0, NoSymbol), same_screen YES,&lt;br /&gt;
    XLookupString gives 0 bytes: &lt;br /&gt;
    XFilterEvent returns: False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This tells me that the &amp;lt;tt&amp;gt;acpi_fakekey 112&amp;lt;/tt&amp;gt; as executed by hitting the ThinkVantage button generates KeyPress event followed by a KeyRelease event with '''keycode''' 239 and that this keycode has been assigned no corresponding '''keysym'''. Thus, I am free to assign the keycode to any keysym I want. You can find a list of available keysyms in &amp;lt;tt&amp;gt;/usr/share/X11/XKeysymDB&amp;lt;/tt&amp;gt;. Again try and pick one that is not likely to have already been taken by something, such as &amp;lt;tt&amp;gt;XF86LaunchA&amp;lt;/tt&amp;gt;. To assign this keysym to keycode 239, you can either edit ~/.Xmodmap on an individual user basis, or edit the systemwide &amp;lt;tt&amp;gt;/etc/X11/Xmodmap&amp;lt;/tt&amp;gt; file to contain the line&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
keycode 239 = XF86LaunchA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you choose to go with the former, you may need to run &amp;lt;tt&amp;gt;xmodmap ~/.Xmodmap&amp;lt;/tt&amp;gt; for every login session in order to read in your ~/.Xmodmap file if your window manager does not do it for you. Regardless of which option you choose, you can run &amp;lt;tt&amp;gt;xmodmap &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt; to read in the updated Xmodmap file without logging out and logging back in.&lt;br /&gt;
&lt;br /&gt;
You should now find that hitting the ThinkVantage button creates the following output from &amp;lt;tt&amp;gt;xev&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KeyPress event, serial 55, synthetic NO, window 0x2800001,&lt;br /&gt;
    root 0x6a, subw 0x0, time 2001286078, (0,106), root:(643,523),&lt;br /&gt;
    state 0x0, keycode 239 (keysym 0x1008ff4a, XF86LaunchA), same_screen YES,&lt;br /&gt;
    XLookupString gives 0 bytes: &lt;br /&gt;
    XmbLookupString gives 0 bytes: &lt;br /&gt;
    XFilterEvent returns: False&lt;br /&gt;
&lt;br /&gt;
KeyRelease event, serial 55, synthetic NO, window 0x2800001,&lt;br /&gt;
    root 0x6a, subw 0x0, time 2001286078, (0,106), root:(643,523),&lt;br /&gt;
    state 0x0, keycode 239 (keysym 0x1008ff4a, XF86LaunchA), same_screen YES,&lt;br /&gt;
    XLookupString gives 0 bytes: &lt;br /&gt;
    XFilterEvent returns: False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note the change of &amp;lt;tt&amp;gt;(keysym 0x0, NoSymbol)&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;(keysym 0x1008ff4a, XF86LaunchA)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You're now ready to map &amp;lt;tt&amp;gt;XF86LaunchA&amp;lt;/tt&amp;gt; to executing xmms. This is highly dependent on what keygrabber you decide to use. For openbox, I edit my &amp;lt;tt&amp;gt;~/.config/openbox/rc.xml&amp;lt;/tt&amp;gt; file and add the following entry in the  &amp;lt;keyboard&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;keybind key=&amp;quot;XF86LaunchA&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;action name=&amp;quot;Execute&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;startupnotify&amp;gt;&lt;br /&gt;
          &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
        &amp;lt;/startupnotify&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;&lt;br /&gt;
	  xmms&lt;br /&gt;
	&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/keybind&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After, right clicking on the desktop and selecting the &amp;quot;Reconfigure&amp;quot; menu option, you should then have xmms pop up when you hit the ThinkVantage key.&lt;br /&gt;
&lt;br /&gt;
==Example Applications==&lt;br /&gt;
===Web Browsers===&lt;br /&gt;
====Firefox (&amp;lt;3.0)====&lt;br /&gt;
&lt;br /&gt;
There are various ways to assign actions to the browser keys. The easiest way is to install [http://mozilla.dorando.at/keyconfig.xpi keyconfig.xpi] from http://mozilla.dorando.at, which adds a menu entry Tools-&amp;gt;Keyconfig. Then you can assign any action you want to the F19/F20 keys (you still need to create {{path|~/.Xmodmap}} as explained above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The remaining discussion gives you various more complicated ways to achieve the same thing. &lt;br /&gt;
To have firefox make use of the browser keys you need to modify one of its files{{footnote|4}}.&lt;br /&gt;
To do this you will first need to extract it from the {{path|browser.jar}} archive. Do...&lt;br /&gt;
&lt;br /&gt;
Step 1:  Edit .Xmodmap and add entries for F19 and F20 as explained above.&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;firefox-directory&amp;gt; is probably /usr/lib/firefox. Use your version so, if you have 3.0.1 or 3.0.2 use /usr/lib/firefox-3.0.1&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|cd &amp;lt;firefox-directory&amp;gt;/chrome}}&amp;lt;br /&amp;gt;&lt;br /&gt;
:{{cmdroot|unzip browser.jar}}&lt;br /&gt;
&lt;br /&gt;
The file of interest is {{path|content/browser/browser.xul}}. Edit it {and don't forget to make a backup copy first}...&lt;br /&gt;
:{{cmdroot|vi content/browser/browser.xul}}&lt;br /&gt;
&lt;br /&gt;
Look for the '''&amp;lt;keyset id=&amp;quot;mainKeyset&amp;quot;&amp;gt;''' section and add the following lines within...&lt;br /&gt;
 &amp;lt;key id=&amp;quot;goBackKb&amp;quot; keycode=&amp;quot;VK_F19&amp;quot; command=&amp;quot;Browser:Back&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;key id=&amp;quot;goForwardKb&amp;quot; keycode=&amp;quot;VK_F20&amp;quot; command=&amp;quot;Browser:Forward&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Command you need for Next Tab &lt;br /&gt;
 &amp;lt;key id=&amp;quot;goBackTabKb&amp;quot; keycode=&amp;quot;VK_F19&amp;quot; oncommand=&amp;quot;gBrowser.mTabContainer.advanceSelectedTab(-1)&amp;quot; /&amp;gt;&lt;br /&gt;
For the Previous Tab &lt;br /&gt;
 &amp;lt;key id=&amp;quot;goForwardTabKb&amp;quot; keycode=&amp;quot;VK_F20&amp;quot; oncommand=&amp;quot;gBrowser.mTabContainer.advanceSelectedTab(1)&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now save the file and repackage the {{path|browser.jar}} archive...&lt;br /&gt;
:{{cmdroot|zip -rD0 browser.jar content/browser/}}&lt;br /&gt;
&lt;br /&gt;
That's it.&lt;br /&gt;
&lt;br /&gt;
Step 3:  Restart Firefox.&lt;br /&gt;
&lt;br /&gt;
{{HINT|Outdated: Another interesting Page on Firefox is http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/ It uses different key mappings (F19 resp. F20) but a ready [http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/dqdnavkeys-1.2.xpi .xpi] is provided which is pretty comfortable. However, this xpi file does not install on Firefox 1.5. or later.}}&lt;br /&gt;
&lt;br /&gt;
{{HINT| You can also use the [http://extensionroom.mozdev.org/more-info/keyconfig keyconfig] extension to configure custom keys.  This extension works with Firefox 1.5 and also with Firefox 2.0. The Command you need for Next Tab is gBrowser.mTabContainer.advanceSelectedTab(1,true); For Previous Tab its gBrowser.mTabContainer.advanceSelectedTab(-1,true); You can alternatively install the [http://www.pqrs.org/~tekezo/firefox/extensions/functions_for_keyconfig/index.html functions for keyconfig] and set the variable f4kc_NextTab to F20 and f4kc_PrevTab to F19.}}.&lt;br /&gt;
&lt;br /&gt;
====Firefox 3.0====&lt;br /&gt;
Thankfully the people at Mozilla decided to include the expected functionality for the XF86Back and XF86Forward keysyms in the new release so all you need to do is&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# printf 'keycode 234 = XF86Back\nkeycode 233 = XF86Forward' &amp;gt;&amp;gt; /etc/X11/Xmodmap&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
And to make this take effect immediately (i.e., without having to log out and log in again), as a regular user run:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;{{cmduser|Xmodmap /etc/X11/Xmodmap}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Hardy Heron, the xmodmap command is all lowercase. Also, the /etc/X11/Xmodmap file is not being read on boot. I've added the command to my .bashrc to have it called on startup.&lt;br /&gt;
&lt;br /&gt;
====Konqueror====&lt;br /&gt;
KDE allows you set key mappings for KDE applications (Go to KMenu &amp;gt; System &amp;gt; Control Center &amp;gt; Regional &amp;amp; Accessibility &amp;gt; Keyboard Shortcuts). By default (at least in KDE 3.5), XF86Back and XF86Forward are set as alternatives to Alt-Left and Alt-Right, and are mapped to KDE Back and Forward navigation actions.  &lt;br /&gt;
&lt;br /&gt;
If you use Konqueror as your only browser, you only need to set up {{path|~/.Xmodmap}} as described [[#xmodmap configuration|above]] to assign ThinkPad back/forward keys to the symbols XF86Back/XF86Forward. This also make these keys work for other KDE applications such as Quanta Plus, KPackage and so on (not all KDE applications honor this setting, e.g. KDE help system doesn't).&lt;br /&gt;
&lt;br /&gt;
If you want to use Firefox, however, the above settings do not work. You will have to map ThinkPad back/forward keys to F19/F20 as described [[#Firefox|above]], and change KDE navigation key settings to use F19/F20 instead of the default.&lt;br /&gt;
&lt;br /&gt;
====Opera====&lt;br /&gt;
However this isn't a simple configration file, you can set your browser manually.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go to &amp;lt;i&amp;gt;Tool &amp;gt; Settings &amp;gt; Mouse and keyboard &amp;gt; Keyboard settings &amp;gt; Edit &amp;gt; Browser Window&amp;lt;/i&amp;gt;. There add F19 - Back and F20 - Forward. Now you can surf using your TP keys ;-)&lt;br /&gt;
&lt;br /&gt;
====Epiphany====&lt;br /&gt;
By default, the back/forward keys, when bound to XF86Back/XF86Forward, successfully navigate through the history.&lt;br /&gt;
&lt;br /&gt;
To get them switch through your tabs, you could use the extension from [http://crashman.homelinux.org/~andre/public/epiphany%20extensions/thinkpad%20browserkeys/ here]&lt;br /&gt;
You just need to edit your Xmodmap like described for Firefox &amp;lt; 3.0 (bind the keys on F19 and F20)&lt;br /&gt;
&lt;br /&gt;
===Open an application===&lt;br /&gt;
&lt;br /&gt;
To configure the ThinkVantage button to open a terminal window in Gnome:&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
Use xev to find the keycode generated by the button on your machine.  In my case is is 159.&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
Create an entry in .Xmodmap like so&lt;br /&gt;
&lt;br /&gt;
keycode 159 = XF86LaunchA&lt;br /&gt;
&lt;br /&gt;
replacing 159 by the keycode found in step 1.  Load the map using&lt;br /&gt;
&lt;br /&gt;
:{{cmd|xmodmap ~/.Xmodmap}}&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
Configure the required function (e.g. open terminal window) in System-&amp;gt;Preferences-&amp;gt;Keyboard shortcuts&lt;br /&gt;
&lt;br /&gt;
===Window Managers===&lt;br /&gt;
====fvwm====&lt;br /&gt;
To get the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys to cycle through pages in the virtual desktop, add this to your {{path|~/.fvwmrc}}:&lt;br /&gt;
 Key    XF86Back     A      A   Scroll     -100000   0&lt;br /&gt;
 Key    XF86Forward  A      A   Scroll     +100000   0&lt;br /&gt;
If you use multiple virtual desktops, you could instead use the keys to flip between them by using GotoDesk.&lt;br /&gt;
&lt;br /&gt;
====fluxbox====&lt;br /&gt;
To get the keys to cycle through pages in the virtual desktop, add this to your {{path|~/.fluxbox/keys}}:&lt;br /&gt;
 None F19 :PrevWorkspace&lt;br /&gt;
 None F20 :NextWorkspace&lt;br /&gt;
&lt;br /&gt;
====pekwm configuration====&lt;br /&gt;
You can make the two browser keys switch workspaces in pekwm, by adding the following two lines to the {{path|~/.pekwm/keys}} file:&lt;br /&gt;
 KeyPress = &amp;quot;Mod1 XF86Back&amp;quot; { Actions = &amp;quot;GoToWorkspace prev&amp;quot; }&lt;br /&gt;
 KeyPress = &amp;quot;Mod1 XF86Forward&amp;quot; { Actions = &amp;quot;GoToWorkspace next&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
====pwm====&lt;br /&gt;
Another example how to use these two keys to switch between pwm tabs. These two lines should be added to {{path|~/.pwm/keys-default.conf}} or {{path|/etc/pwm/keys-default.conf}}:&lt;br /&gt;
 kbind &amp;quot;Back&amp;quot;, &amp;quot;switch_rot&amp;quot;, -1&lt;br /&gt;
 kbind &amp;quot;Forward&amp;quot;, &amp;quot;switch_rot&amp;quot;, 1&lt;br /&gt;
&lt;br /&gt;
====IceWM====&lt;br /&gt;
To make IceWM cycle workspaces using the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys, change these two options in {{path|~/.icewm/preferences}} (Provided you assigned keysyms F19 and F20 with xmodmap):&lt;br /&gt;
 # &amp;quot;Previous workspace&amp;quot; shortcut&lt;br /&gt;
 KeySysWorkspacePrev=&amp;quot;F19&amp;quot;&lt;br /&gt;
 # &amp;quot;Next workspace&amp;quot; shortcut&lt;br /&gt;
 KeySysWorkspaceNext=&amp;quot;F20&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Gnome/metacity ====&lt;br /&gt;
&lt;br /&gt;
On {{Debian}} Lenny, using Gnome 2.22.2, once the acpid and acpi-support packages are installed, most Fn keys do the right thing out of the box.&lt;br /&gt;
&lt;br /&gt;
For more advanced configuration, follow the [https://wiki.ubuntu.com/Keybindings Ubuntu guide].&lt;br /&gt;
&lt;br /&gt;
===Other Uses===&lt;br /&gt;
====Console tools configuraton====&lt;br /&gt;
To make the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys useful in console, add this to your keymap ({{path|/etc/console/boottime.kmap.gz}} in {{Debian}}):&lt;br /&gt;
 keycode 158 = Decr_Console&lt;br /&gt;
 keycode 159 = Incr_Console&lt;br /&gt;
&lt;br /&gt;
Alternatively you can load this script (perhaps on system startup) to enable Backward/Forward button console (VT) switch:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 echo keycode 158 = Decr_Console | loadkeys&lt;br /&gt;
 echo keycode 159 = Incr_Console | loadkeys&lt;br /&gt;
&lt;br /&gt;
It should work with any distro.&lt;br /&gt;
&lt;br /&gt;
====Cycling through tabs====&lt;br /&gt;
In Gnome and Xfce4, Ctrl-PageUp/Ctrl-PageDown move to the previous/following open tab in all applications that have tabbed user interfaces (terminal emulator, web browser, ...). To make use of the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys for this task, there're two possibilities.&lt;br /&gt;
&lt;br /&gt;
For both ways, you should map the keycodes 233 and 234 to XF86Back and XF86Forward as described in [[#xmodmap_configuration|xmodmap configuration]].&lt;br /&gt;
&lt;br /&gt;
=====Using xautomation=====&lt;br /&gt;
xautomation can be found [http://hoopajoo.net/projects/xautomation.html here].&lt;br /&gt;
&lt;br /&gt;
Create two files with permissions 755:&lt;br /&gt;
&lt;br /&gt;
{{path|/usr/local/bin/tp_back}}:&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/usr/bin/xte 'keydown Control_L' 'keydown Page_Up' 'keyup Page_Up' 'keyup Control_L'&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/usr/local/bin/tp_forward}}:&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/usr/bin/xte 'keydown Control_L' 'keydown Page_Down' 'keyup Page_Down' 'keyup Control_L'&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use your desktop's keyboard shortcut editor to assign XF86Back as a shortcut for tp_back and XF86Forward as a shortcut for tp_forward.&lt;br /&gt;
&lt;br /&gt;
This should work in all distros and with all window managers (you might have to use other key combinations than Ctrl-PageUp and Ctrl-PageDown).&lt;br /&gt;
&lt;br /&gt;
=====Redirecting XF86Back/XF86Forward=====&lt;br /&gt;
Create {{path|/etc/X11/xkb/compat/thinkpad}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// $XFree86$&lt;br /&gt;
//  XFree86 special keysyms&lt;br /&gt;
default partial xkb_compatibility &amp;quot;basic&amp;quot;  {&lt;br /&gt;
    interpret.repeat= True;&lt;br /&gt;
&lt;br /&gt;
    interpret  XF86Back {&lt;br /&gt;
        action = Redirect(Key=&amp;lt;PGUP&amp;gt;, modifiers=Control);&lt;br /&gt;
    };&lt;br /&gt;
    interpret  XF86Forward {&lt;br /&gt;
        action = Redirect(Key=&amp;lt;PGDN&amp;gt;, modifiers=Control);&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit {{path|/etc/X11/xkb/compat/complete}} and add &amp;lt;tt&amp;gt;'''augment &amp;quot;thinkpad&amp;quot;'''&amp;lt;/tt&amp;gt; so that it looks similar to the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// $XKeyboardConfig: xkbdesc/compat/complete,v 1.3 2005/10/17 00:42:11 svu Exp $&lt;br /&gt;
// $Xorg: complete,v 1.3 2000/08/17 19:54:34 cpqbld Exp $&lt;br /&gt;
default xkb_compatibility &amp;quot;complete&amp;quot;  {&lt;br /&gt;
    include &amp;quot;basic&amp;quot;&lt;br /&gt;
    augment &amp;quot;iso9995&amp;quot;&lt;br /&gt;
    augment &amp;quot;mousekeys&amp;quot;&lt;br /&gt;
    augment &amp;quot;accessx(full)&amp;quot;&lt;br /&gt;
    augment &amp;quot;misc&amp;quot;&lt;br /&gt;
    augment &amp;quot;xfree86&amp;quot;&lt;br /&gt;
    augment &amp;quot;level5&amp;quot;&lt;br /&gt;
    augment &amp;quot;thinkpad&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
*[http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-51537 IBMs page on configuring the ThinkPad buttons (ThinkPad, Access IBM, Mail, Search, and Home buttons) under Linux]&lt;br /&gt;
*[http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/ Rob Mayoffs page on using IBM Keyboard Navigation Keys in Linux Mozilla and Firefox]&lt;br /&gt;
*[http://snarfed.org/space/thinkpad+keys+in+firefox Ryan Barretts blog article about using the browser keys in Firefox]&lt;br /&gt;
*[http://chaotika.org/~bluesceada/?page=soft&amp;amp;sub=thinkpad#acpibutn DennisG's help to get the ibm-acpi buttons do useful things] on a {{Z61e}} and possibly {{Z61m}}, {{Z61t}} and {{Z61p}}&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#Note that the associated functionality for Fn-F* key combinations is not consistent amongst all ThinkPads. We are maintaining [[Default meanings of special keys|a table of associated meanings]].&lt;br /&gt;
#if there are more than one tool listed, one is sufficient&lt;br /&gt;
#'full' means you can completely reassign any action to be triggered by the key, 'additional actions' means you can trigger actions in addition to the standard function of the key, which can not be changed.&lt;br /&gt;
#Thanks go to Ryan Barrett for writing the [http://snarfed.org/space/thinkpad+keys+in+firefox little howto] on [http://snarfed.org/space/start his blog].&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_get_special_keys_to_work&amp;diff=41549</id>
		<title>How to get special keys to work</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_get_special_keys_to_work&amp;diff=41549"/>
		<updated>2009-02-17T21:46:09Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Epiphany */ explain default behaviour&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
The following table gives an overview over the special keys found on ThinkPads and what is needed to make them work.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
! key !! standard function{{footnote|1}} !! tools supporting key{{footnote|2}} !! configurability{{footnote|3}} !! remarks&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}} || - || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || on release without completed key combination&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F1}} || - || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F2}} || lock screen || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || in models from T/X/Z 60 onwards&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F3}} || blank screen || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F4}} || suspend to ram || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || may generate ACPI event when not enabled in the ibm-acpi hotkey mask&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F5}} || switch bluetooth || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || in models starting from 2002&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F6}} || - || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F7}} || toggle display || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]] || additional actions || [[Sample Fn-F7 script]]&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F8}} || toggle trackpoint/touchpad || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F9}} || eject from dock || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F10}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F11}} || - || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F12}} || hibernate || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || may generate ACPI event when not enabled in the ibm-acpi hotkey mask&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Home}} / {{key|Fn}}{{key|Pos1}} || brightness up || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|End}} || brightness down || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|PageUp}} || toggle thinklight || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Space}} || toggle zoom || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Ins}} || - || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]]|| full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Del}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Backspace}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|NumLock}} || - || [[#xmodmap configuration|xmodmap]] || make working ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Windows}} || - || [[#xmodmap configuration|xmodmap]] || remapping ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} or {{ibmkey|ThinkVantage|#495988}} || help application || [[thinkpad-acpi]],[[#tpb configuration|tpb]], [[KMilo]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Home|#494949}} || open web browser || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Search|#494949}} || open search application || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Mail|#494949}} || open mail application || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Favorites|#494949}} || open favorites || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Reload|#494949}} || reload web page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Abort|#494949}} || abort loading page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Backward|#494949}} || previous page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full ||  ext. keyboards and ThinkPads starting from 2002&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Forward|#494949}} || next page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || ext. keyboards and ThinkPads starting from 2002&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume up|#494949}} || volume up || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume down|#494949}} || volume down || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume mute|#494949}} || mute volume || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Play/Pause|#494949}} || start/pause playback  || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Down)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Stop|#494949}} || stop playback || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Up)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Next|#494949}} || play next || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Right)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Previous|#494949}} || play previous || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Left)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Power|#494949}} || shutdown || [[#ibm-acpi events|ibm-acpi]],[[thinkpad-acpi]] || full || triggered on pressing 3secs, but notebook goes off on 5sec press&lt;br /&gt;
|-&lt;br /&gt;
| Display lid || blank screen || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| Ultrabay lid || announce ultrabay change || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| Dock eject || eject from dock || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet power|#494949}} || shutdown || [[#ibm-acpi events|ibm-acpi]] || full || triggered on pressing 3secs, but notebook goes off on 5sec press&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet orientation|#494949}} || rotates screen || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet shortcut|#494949}} || shortcut menu || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Esc|#494949}} || esc key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Enter|#494949}} || enter key || [[#mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Up|#494949}} || up key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Down|#494949}} || down key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet (unlabeled)|#494949}} || down key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For completeness, note that the WiFi enable/disable switch is located (on the X61 and other models that have it) just under the front edge of the base of the machine.  You should see a small horizontal slider switch.  Enable by sliding it rightwards, disable by sliding it leftwards.&lt;br /&gt;
&lt;br /&gt;
Tablet buttons vary with model.  See [[Tablet Hardware Buttons]].&lt;br /&gt;
&lt;br /&gt;
==Triggering key events==&lt;br /&gt;
&lt;br /&gt;
===ibm-acpi/thinkpad-acpi events===&lt;br /&gt;
Some of the following events require a {{cmdroot|echo enable,0xffff &amp;gt;/proc/acpi/ibm/hotkey}} (when using ibm-acpi) in order to make acpi able to get information on them. Since the newer thinkpad-acpi has a larger number of bits that can be set in the mask, you might try {{cmdroot|echo enable,0xffffffff &amp;gt;/proc/acpi/ibm/hotkey}} if you are using this driver. These events can be used to [[How to configure acpid|configure acpid]].&lt;br /&gt;
&lt;br /&gt;
On {{Debian}} Lenny, the acpi-support package automagically enables such events.&lt;br /&gt;
&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ events triggered by [[ibm-acpi]] for {{path|/etc/acpi/events}} files. May vary on different models.&lt;br /&gt;
! key !! event&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F1}} || ibm/hotkey HKEY 00000080 00001001&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F2}} || ibm/hotkey HKEY 00000080 00001002&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F3}} || ibm/hotkey HKEY 00000080 00001003&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F4}} || ibm/hotkey HKEY 00000080 00001004&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F5}} || ibm/hotkey HKEY 00000080 00001005&lt;br /&gt;
|- &lt;br /&gt;
| {{key|Fn}}{{key|F6}} || ibm/hotkey HKEY 00000080 00001006&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F7}} || ibm/hotkey HKEY 00000080 00001007&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F8}} || ibm/hotkey HKEY 00000080 00001008&lt;br /&gt;
|- &lt;br /&gt;
| {{key|Fn}}{{key|F9}} || ibm/hotkey HKEY 00000080 00001009 &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F10}} || ibm/hotkey HKEY 00000080 0000100a&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F11}} || ibm/hotkey HKEY 00000080 0000100b &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F12}} || ibm/hotkey HKEY 00000080 0000100c&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Backspace}} || ibm/hotkey HKEY 00000080 0000100d&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Ins}} || ibm/hotkey HKEY 00000080 0000100e &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Del}} || ibm/hotkey HKEY 00000080 0000100f &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Home}}/{{key|Fn}}{{key|Pos1}} || ibm/hotkey HKEY 00000080 00001010&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|End}} || ibm/hotkey HKEY 00000080 00001011&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|PgUp}} || ibm/hotkey HKEY 00000080 00001012&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Space}} || ibm/hotkey HKEY 00000080 00001014&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume up|#494949}}|| ibm/hotkey HKEY 00000080 00001015&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume down|#494949}} || ibm/hotkey HKEY 00000080 00001016&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume mute|#494949}} || ibm/hotkey HKEY 00000080 00001017&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} or {{ibmkey|ThinkVantage|#495988}} || ibm/hotkey HKEY 00000080 00001018&lt;br /&gt;
|-&lt;br /&gt;
| Ultrabay eject || ibm/bay MSTR 00000003 00000000&lt;br /&gt;
|-&lt;br /&gt;
| Ultrabay inserted || ibm/bay MSTR 00000001 00000000 &lt;br /&gt;
|-&lt;br /&gt;
| Dock eject || ibm/dock GDCK 00000003 00000001 &lt;br /&gt;
|-&lt;br /&gt;
| Wireless switch || ibm/hotkey HKEY 00000080 00007000 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
By disassembling and editing the DSDT, more events can be added.  HKEY events are triggered by calls to the MKHQ function, e.g. &amp;lt;tt&amp;gt;\_SB.PCI0.LPC.EC.HKEY.MHKQ(0Ã—1007)&amp;lt;/tt&amp;gt; will trigger &amp;quot;ibm/hotkey HKEY 00000080 00001007&amp;quot;.  Most of these can be found in &amp;lt;tt&amp;gt;_Qxx&amp;lt;/tt&amp;gt; methods within the DSDT, which are executed on embedded controller events, e.g. _Q10 is triggered by pressing Fn-F7.  You can add a call to MKHQ into an existing &amp;lt;tt&amp;gt;_Qxx&amp;lt;/tt&amp;gt; method to get it recognized by ibm-acpi as well as creating new &amp;lt;tt&amp;gt;_Qxx&amp;lt;/tt&amp;gt; methods, which if you're lucky will correspond to an EC event that IBM never used (e.g. A 770 will send Fn-Home/End/PgUp/PgDn to ibm-acpi if hacked in this fashion). For example, [http://www.wormnet.eu/ibm-g40/morebuttons.dsl this is a modified block of DSDT for a G40].&lt;br /&gt;
&lt;br /&gt;
=== ACPI events from the &amp;lt;tt&amp;gt;button&amp;lt;/tt&amp;gt; module===&lt;br /&gt;
&lt;br /&gt;
A few keys can generate ACPI events that result from the &amp;lt;tt&amp;gt;button&amp;lt;/tt&amp;gt; kernel module, as long as they are masked off in the &amp;lt;tt&amp;gt;ibm-acpi&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;thinkpad-acpi&amp;lt;/tt&amp;gt; hotkey's mask or the hotkey function of the latter module is disabled.&lt;br /&gt;
&lt;br /&gt;
If you want the ThinkPad's BIOS and ACPI methods to know about these keys being pressed, you probably want to leave them masked out from ibm-acpi, and use their non-HKEY events listed below, instead.&lt;br /&gt;
&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ events triggered by ACPI when hotkey is masked out or disabled. &lt;br /&gt;
! key !! event !! T60 event&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Power|#494949}} || button/power PWRF 00000080 xxxxxxxx || button/power PWRF 00000080 00000001&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F4}} || button/sleep SLPB 00000080 00000001 || button/sleep SLPB 00000080 00000001&lt;br /&gt;
|-&lt;br /&gt;
| Display lid || button/lid LID 00000080 xxxxxxxx || button/lid LID 00000080 00000001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===tpb configuration===&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ configuration keywords for [[tpb]] (to put in {{path|/etc/tpbrc}})&lt;br /&gt;
! key !! config keyword&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || THINKPAD&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Home|#494949}} || HOME&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Search|#494949}} || SEARCH&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Mail|#494949}} || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Favorites|#494949}} || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Reload|#494949}} || RELOAD&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Abort|#494949}} || ABORT&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Backward|#494949}} || BACKWARD&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Forward|#494949}} || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}} || FN&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Space}} || CALLBACK (zoom on/off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|PageUp}} || CALLBACK (thinklight on/off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F7}} || CALLBACK (display lcd/crt/both)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F8}} || CALLBACK (expand on/off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Home}} / {{key|Fn}}{{key|Pos1}} || CALLBACK (brightness &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|End}} || CALLBACK (brightness &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume up|#494949}} || CALLBACK (volume &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume down|#494949}} || CALLBACK (volume &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume mute|#494949}} || CALLBACK (mute on/off)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To all parameter keywords should be assigned the full path to the executables supposed to be started on key press.&lt;br /&gt;
The exectable provided for the CALLBACK keyword should take the parameters given in parentheses and act according to them.&lt;br /&gt;
If you want to use xmodmap for the HOME, SEARCH, MAIL, FAVORITES, RELOAD, ABORT, BACKWARD, FORWARD and FN keys you should&lt;br /&gt;
provide a &amp;lt;tt&amp;gt;XEVENTS OFF&amp;lt;/tt&amp;gt; in your {{path|/etc/tpbrc}}. &lt;br /&gt;
You can use an appropriate executable to [[How to inject fake keystrokes|inject fake keystrokes]].&lt;br /&gt;
&lt;br /&gt;
For Debian users, tpb is started from {{path|/etc/X11/Xsession.d/90tpb}}.&lt;br /&gt;
&lt;br /&gt;
'''Sound Button configuration'''&lt;br /&gt;
&lt;br /&gt;
''Note: Tested on T60p with Ubuntu 6.06 LTS''&lt;br /&gt;
&lt;br /&gt;
Most Thinkpads have a hardware sound mixer, thus the volumes buttons should work without configuration. However, this change is not reflected in the software mixer. tpb has a switch to enable software mixer support via OSS. The manual recommends this only for devices without a hardware mixer, but it also works for other hadware mixer enabled devices, even with the ALSA system. Just put MIXER ON in your {{path|/etc/tpbrc}} file and you can see the effect immediately in any ALSA mixer (e.g. kmix). For this to work you need write permissions to {{path|/dev/nvram}}.&lt;br /&gt;
&lt;br /&gt;
''Note: Tested on X21 with Ubuntu 6.06 LTS''&lt;br /&gt;
&lt;br /&gt;
On the ThinkPad X21 (and maybe some other older models) ACPI causes problems with tpb.  On an X21 using acpi the volume buttons would work occasionally, and the OSD for tpb functions would rarely work.  If a volume buttons was pressed too often, sometimes the computer would enter a low power (unplugged state) and would require a reboot.  The solution is to use APM instead of ACPI.  Instructions can be found in [[How_to_make_APM_work]].&lt;br /&gt;
&lt;br /&gt;
===KMilo configuration===&lt;br /&gt;
The programs to be executed by [[KMilo]] are configured via the KDE Control Center (&amp;lt;tt&amp;gt;kcontrol&amp;lt;/tt&amp;gt;), under &amp;lt;tt&amp;gt;System Administration --&amp;gt; IBM Thinkpad Laptop&amp;lt;/tt&amp;gt;. Note that you can use appropriate commands to [[How to inject fake keystrokes|inject fake keystrokes]].&lt;br /&gt;
&lt;br /&gt;
===xmodmap configuration===&lt;br /&gt;
xmodmap enables you to edit the modifier map and keymap tables that are used to translate keycodes into keysyms.&lt;br /&gt;
Understood? Well, basically it allows you to give the X server a dictionary for the translation of keycodes like &amp;quot;97&amp;quot; into more human readable synonyms like &amp;quot;Home&amp;quot;. This way xmodmap allows you to make the special keys of your keyboard known to X applications.&lt;br /&gt;
&lt;br /&gt;
To discover the keycode that a certain keypress produces, use the tool {{cmduser|xev}} &lt;br /&gt;
&lt;br /&gt;
Usually you should write your keycode-keysym associations into the file {{path|~/.Xmodmap}}. This file is usually read by the X session startup scripts of your system, so that the mappings automatically get included everytime you run the X server.&lt;br /&gt;
&lt;br /&gt;
The {{path|~/.Xmodmap}} lines for our purpose are in the form of&lt;br /&gt;
 keycode &amp;lt;keycode&amp;gt; = &amp;lt;keysym&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load the assocation using the command&lt;br /&gt;
&lt;br /&gt;
{{cmduser|xmodmap ~/.Xmodmap}} &lt;br /&gt;
&lt;br /&gt;
(some configurations do this automatically upon X startup). &lt;br /&gt;
&lt;br /&gt;
The following table shows the keycodes generated by the ThinkPad special keys and sensible keysyms to assign them to.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ keycodes and recommended keysyms&lt;br /&gt;
! key !! keycode !! keysym&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || 159 || XF86LaunchA&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Backward|#494949}} || 234 || XF86Back or F19&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Forward|#494949}} || 233 || XF86Forward or F20&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Play/Pause|#494949}} || 162 || XF86AudioPlay&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Stop|#494949}} || 164 || XF86AudioStop&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Next|#494949}} || 153 || XF86AudioNext&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Previous|#494949}} || 144 || XF86AudioPrev&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| {{ibmkey|Home|#494949}} || 178 || XF86HomePage&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Search|#494949}} || 229 || XF86Search&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Mail|#494949}} || 236 || XF86Mail&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Favorites|#494949}} || 230 || XF86AddFavorite or XF86Favorites&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Reload|#494949}} || 231 || XF86Reload&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Abort|#494949}} || 232 || XF86Stop&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}} || 227 || F35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: You can also use xkeycaps (an X tool to display and edit the X keyboard mapping) to generate proper .Xmodmap.&lt;br /&gt;
&lt;br /&gt;
Note: if you are running [[tpb]] you might need to add the line &amp;lt;tt&amp;gt;XEVENTS=off&amp;lt;/tt&amp;gt; into your tpbrc to stop it from grabbing the key events and allow them to get through to X instead. See [[http://www.thinkwiki.org/wiki/Tpb]] for more detailed instruction on how to use tpb and xmodmap.&lt;br /&gt;
&lt;br /&gt;
Note: XF86Forward and XF86Back do not work correctly in Firefox. You may want to map them to F19 and F20 instead if you use Firefox.&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;XF86AudioPlay&amp;quot; etc. just works with a few programs. To make it work with more multimedia programs you have map the key to use something like [http://www.kde-apps.org/content/show.php/ReMoot?content=63140 ReMoot]. ReMoot is a command line wrapper that control 18 of the most common multimedia applications. &lt;br /&gt;
&lt;br /&gt;
=====Enabling the Windows and Menu Keys=====&lt;br /&gt;
On some systems the Windows and Menu keys may not be recognized.  You can enable then by&lt;br /&gt;
making the following changes:&lt;br /&gt;
&lt;br /&gt;
        keycode 115 = F13&lt;br /&gt;
        keycode 227 = F35&lt;br /&gt;
&lt;br /&gt;
F13 and F35 are used for the Windows and and Menu keys respectively.  Labelling keycpode 227 as &amp;quot;Menu&amp;quot; may conflict with the right-mouse-click event.&lt;br /&gt;
&lt;br /&gt;
=====Using Caps Lock as Super L (Windows key)=====&lt;br /&gt;
You can easily use Caps Lock as Win key by adding the following in your ~/.Xmodmap:&lt;br /&gt;
        ! No Caps Lock&lt;br /&gt;
        clear lock&lt;br /&gt;
        ! Caps Lock as Win key&lt;br /&gt;
        add mod4 = Caps_Lock&lt;br /&gt;
=====NumLock=====&lt;br /&gt;
On the ThinkPad {{600}}, {{T20}}, {{T21}}, {{T22}}, {{T30}}, {{X20}}, {{X21}},  {{X31}}, {{X40}}, {{T42p}}, {{T43}}, {{R51}}, {{R52}} and possibly other models, X does not recognize the keycode for {{key|NumLk}} = {{key|Shift}}+{{key|ScrLk}}. To fix this, add the following to {{path|~/.Xmodmap}} in your home directory or {{path|/etc/X11/Xmodmap}} and run &amp;lt;tt&amp;gt;xmodmap&amp;lt;/tt&amp;gt;, ex: &amp;lt;tt&amp;gt;xmodmap ~/.Xmodmap&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 keycode 77 = Num_Lock&lt;br /&gt;
&lt;br /&gt;
The following might work better for you:&lt;br /&gt;
  keycode 77 = Num_Lock Num_Lock&lt;br /&gt;
because you will only get keycode 77 together with Shift (at least on the {{T43}})&lt;br /&gt;
&lt;br /&gt;
This configuration also enables the respective LED.&lt;br /&gt;
&lt;br /&gt;
Please note, pressing the {{key|Shift}}+{{key|ScrLk}} key combination, without first following the above configuration, will start an accessibility feature, which will allow the numeric keypad to maneuver the mouse pointer.  Starting this accessibility feature and subsequently running xmodmap, as described above, results in the accessibility feature and the numeric lock LED functioning simultaneously.  As such, the above configuration should be completed before the accessibility feature is started in order to produce numbers.&lt;br /&gt;
======T60 (and possibly others)======&lt;br /&gt;
It seems that on the T60, PrtSc, ScrLk and Pause all generate the correct keycodes, however Fn-PrtSc (labelled as SysRq) generates keycode 64 (Alt_L) followed by the expected 111 (Sys_Req) on down and the same thing in the opposite order on release. Fn-ScrLk (labelled as NmLk) does indeed toggle the Numlock, but only seems to register as an X event the first time it is engaged. The above solution does not appear to work. This is perhaps because the Numlock toggle is built into the firmware rather than controlled by the kernel. Finally, Fn-Pause (labelled as Break) generates keycode 37 (Control_L) followed by the expected keycode 110 (Break) on down and the same thing in reverse order on release.&lt;br /&gt;
&lt;br /&gt;
=====NumPad (KeyPad) keys access by a key combination=====&lt;br /&gt;
The current state is that you have to switch NumLock '''on''' via {{key|Fn}}+{{key|ScrLk}} and then e.g. type {{key|u}} to get a {{key|KP_4}} (NumPad 4). To get back to normal keyboard, you have to type {{key|Fn}}+{{key|ScrLk}} again.&lt;br /&gt;
&lt;br /&gt;
Some people (including me) are missing on recent Thinkpads the option to have Fn as a modifier key to access the NumPad instead, i.e. and e.g. {{key|Fn}}+{{key|u}} gives you {{key|KP_4}}.&lt;br /&gt;
&lt;br /&gt;
There is currently no way to make this work in a simple way (pleeeease correct me if I am wrong!), though there is a work-around. Instead of using {{key|Fn}} for accessing the NumPad, {{key|CapsLock}} can get this function by being mapped as Mode_switch (the {{key|AltGr}} on international keyboards). The {{key|Fn}} can be remapped to be Caps_Lock - while at the same time retaining its function to access the special laptop functions (e.g. {{key|Fn}}+{{key|F4}} for sleep}}, by using .Xmodmap.&lt;br /&gt;
&lt;br /&gt;
So on my {{R60}} running fvwm@{{Slackware}} 12.1 the .Xmodmap would look like this:&lt;br /&gt;
&lt;br /&gt;
 ! Make the forward and back buttons work&lt;br /&gt;
    keycode 233 = XF86Forward&lt;br /&gt;
    keycode 234 = XF86Back&lt;br /&gt;
 ! Make the WIN key to Super modifier&lt;br /&gt;
    keycode 115 = Super_L&lt;br /&gt;
 ! Set the Caps_Lock physical key to Mode_switch (like AltGr on intl. keyboards)&lt;br /&gt;
    keycode 66 = Mode_switch&lt;br /&gt;
 ! Set the Fn key to work as Caps_Lock now. The special key combos like Fn-F4 for &amp;quot;sleep&amp;quot; still work then&lt;br /&gt;
    keycode 227 = Caps_Lock&lt;br /&gt;
    clear lock&lt;br /&gt;
    add lock = Caps_Lock&lt;br /&gt;
 ! Now we activate those new keys. Find some free mod slots (xmodmap) and put them there.&lt;br /&gt;
    clear mod4&lt;br /&gt;
    clear mod5&lt;br /&gt;
    add mod4 = Super_L&lt;br /&gt;
    add mod3 = Mode_switch&lt;br /&gt;
 ! It's time to add the keypad keys to the third position of the key definition (pure shift mode_switch shift+mode_switch)&lt;br /&gt;
    keycode 16 = 7 ampersand KP_7&lt;br /&gt;
    keycode 17 = 8 asterisk KP_8&lt;br /&gt;
    keycode 18 = 9 parenleft KP_9&lt;br /&gt;
      keycode 19 = 0 parenright KP_Divide&lt;br /&gt;
    keycode 30 = u U KP_4&lt;br /&gt;
    keycode 31 = i I KP_5&lt;br /&gt;
    keycode 32 = o O KP_6&lt;br /&gt;
      keycode 33 = p P KP_Multiply&lt;br /&gt;
    keycode 44 = j J KP_1&lt;br /&gt;
    keycode 45 = k K KP_2&lt;br /&gt;
    keycode 46 = l L KP_3&lt;br /&gt;
      keycode 47 = semicolon colon KP_Subtract&lt;br /&gt;
    keycode 58 = m M KP_0&lt;br /&gt;
 ! ... I have to use the coma key, too, on the keypad...so I set it to be F20 (which is not existing on normal keyboards and thus is free... check for side effects in programmes accepting F12+ keys!)&lt;br /&gt;
    keycode 59 = comma less F20 &lt;br /&gt;
    keycode 60 = period greater KP_Decimal    &lt;br /&gt;
      keycode  61 = slash question KP_Add&lt;br /&gt;
&lt;br /&gt;
{{WARN|Your keycodes might be different as well as your '''mod''#''''' settings.}}&lt;br /&gt;
Use {{cmduser|xmodmap}} and {{cmduser|xmodmap -pke}} to check your ModMap, and the tool {{cmduser|xev}} to obtain your exact key codes.&lt;br /&gt;
&lt;br /&gt;
===Mapping keys with setkeycodes===&lt;br /&gt;
You can use the setkeycodes command to remap certain keys. I.e. you can use {{cmdroot|setkeycodes 6e 109 6d 104 69 28 6b 1}} to map the Tablets Up and Down keys to the standard PageUp and PageDown keys and Tablet Escape and Enter to their respective keys.&lt;br /&gt;
&lt;br /&gt;
The following table shows the scancodes generated by the ThinkPad keys.  They vary with model - see [[Tablet Hardware Buttons]].&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ scancodes&lt;br /&gt;
! key !! scancode&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet orientation|#494949}} || 0x6c&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Shortcut|#494949}} || 0x68&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Esc|#494949}} || 0x6b&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Enter|#494949}} || 0x69&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Up|#494949}} || 0x6d&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Down|#494949}} || 0x6e&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet (unlabeled)|#494949}} || 0x67&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===acpi_fakekey===&lt;br /&gt;
You can turn acpi events into user-level xevents by putting &amp;lt;tt&amp;gt;acpi_fakekey&amp;lt;/tt&amp;gt; commands into the acpi action scripts. There are several layers involved in using acpi keys in this way, so I'll go through the example of using the ThinkVantage button to open xmms.&lt;br /&gt;
&lt;br /&gt;
My ThinkVantage button generates an '''acpi event''' &amp;quot;ibm/hotkey HKEY 00000080 00001018&amp;quot;, so we have the event file &amp;lt;tt&amp;gt;/etc/acpi/events/ThinkVantage&amp;lt;/tt&amp;gt; for it which executes the script &amp;lt;tt&amp;gt;/etc/acpi/actions/fakekey-macro.sh&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event=ibm/hotkey HKEY 00000080 00001018&lt;br /&gt;
action=/etc/acpi/actions/fakekey-macro.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In turn, the executable &amp;lt;tt&amp;gt;/etc/acpi/actions/fakekey-macro.sh&amp;lt;/tt&amp;gt; script calls acpi_fakekey with the '''key number''' defined in &amp;lt;tt&amp;gt;/usr/share/acpi-support/key-constants&amp;lt;/tt&amp;gt; as $KEY_MACRO which is 112 (you could just as well choose an other key number, just make sure that it doesn't belong to something else like the &amp;quot;j&amp;quot; key or something). &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
. /usr/share/acpi-support/key-constants&lt;br /&gt;
acpi_fakekey $KEY_MACRO &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I have no idea how this actually corresponds to which xevent is generated, so I can find out out by running the program &amp;lt;tt&amp;gt;xev&amp;lt;/tt&amp;gt; and hitting the ThinkVantage button while the mouse is in the &amp;lt;tt&amp;gt;xev&amp;lt;/tt&amp;gt; window (remember to &amp;lt;tt&amp;gt;/etc/init.d/acpid restart&amp;lt;/tt&amp;gt; first if you just created the &amp;lt;tt&amp;gt;/etc/acpi/events/ThinkVantage&amp;lt;/tt&amp;gt; file). I get something popping up in the terminal where I ran xev that looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KeyPress event, serial 30, synthetic NO, window 0x2800001,&lt;br /&gt;
    root 0x6a, subw 0x0, time 2000522842, (138,83), root:(781,500),&lt;br /&gt;
    state 0x0, keycode 239 (keysym 0x0, NoSymbol), same_screen YES,&lt;br /&gt;
    XLookupString gives 0 bytes: &lt;br /&gt;
    XmbLookupString gives 0 bytes: &lt;br /&gt;
    XFilterEvent returns: False&lt;br /&gt;
&lt;br /&gt;
KeyRelease event, serial 30, synthetic NO, window 0x2800001,&lt;br /&gt;
    root 0x6a, subw 0x0, time 2000522842, (138,83), root:(781,500),&lt;br /&gt;
    state 0x0, keycode 239 (keysym 0x0, NoSymbol), same_screen YES,&lt;br /&gt;
    XLookupString gives 0 bytes: &lt;br /&gt;
    XFilterEvent returns: False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This tells me that the &amp;lt;tt&amp;gt;acpi_fakekey 112&amp;lt;/tt&amp;gt; as executed by hitting the ThinkVantage button generates KeyPress event followed by a KeyRelease event with '''keycode''' 239 and that this keycode has been assigned no corresponding '''keysym'''. Thus, I am free to assign the keycode to any keysym I want. You can find a list of available keysyms in &amp;lt;tt&amp;gt;/usr/share/X11/XKeysymDB&amp;lt;/tt&amp;gt;. Again try and pick one that is not likely to have already been taken by something, such as &amp;lt;tt&amp;gt;XF86LaunchA&amp;lt;/tt&amp;gt;. To assign this keysym to keycode 239, you can either edit ~/.Xmodmap on an individual user basis, or edit the systemwide &amp;lt;tt&amp;gt;/etc/X11/Xmodmap&amp;lt;/tt&amp;gt; file to contain the line&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
keycode 239 = XF86LaunchA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you choose to go with the former, you may need to run &amp;lt;tt&amp;gt;xmodmap ~/.Xmodmap&amp;lt;/tt&amp;gt; for every login session in order to read in your ~/.Xmodmap file if your window manager does not do it for you. Regardless of which option you choose, you can run &amp;lt;tt&amp;gt;xmodmap &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt; to read in the updated Xmodmap file without logging out and logging back in.&lt;br /&gt;
&lt;br /&gt;
You should now find that hitting the ThinkVantage button creates the following output from &amp;lt;tt&amp;gt;xev&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KeyPress event, serial 55, synthetic NO, window 0x2800001,&lt;br /&gt;
    root 0x6a, subw 0x0, time 2001286078, (0,106), root:(643,523),&lt;br /&gt;
    state 0x0, keycode 239 (keysym 0x1008ff4a, XF86LaunchA), same_screen YES,&lt;br /&gt;
    XLookupString gives 0 bytes: &lt;br /&gt;
    XmbLookupString gives 0 bytes: &lt;br /&gt;
    XFilterEvent returns: False&lt;br /&gt;
&lt;br /&gt;
KeyRelease event, serial 55, synthetic NO, window 0x2800001,&lt;br /&gt;
    root 0x6a, subw 0x0, time 2001286078, (0,106), root:(643,523),&lt;br /&gt;
    state 0x0, keycode 239 (keysym 0x1008ff4a, XF86LaunchA), same_screen YES,&lt;br /&gt;
    XLookupString gives 0 bytes: &lt;br /&gt;
    XFilterEvent returns: False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note the change of &amp;lt;tt&amp;gt;(keysym 0x0, NoSymbol)&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;(keysym 0x1008ff4a, XF86LaunchA)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You're now ready to map &amp;lt;tt&amp;gt;XF86LaunchA&amp;lt;/tt&amp;gt; to executing xmms. This is highly dependent on what keygrabber you decide to use. For openbox, I edit my &amp;lt;tt&amp;gt;~/.config/openbox/rc.xml&amp;lt;/tt&amp;gt; file and add the following entry in the  &amp;lt;keyboard&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;keybind key=&amp;quot;XF86LaunchA&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;action name=&amp;quot;Execute&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;startupnotify&amp;gt;&lt;br /&gt;
          &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
        &amp;lt;/startupnotify&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;&lt;br /&gt;
	  xmms&lt;br /&gt;
	&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/keybind&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After, right clicking on the desktop and selecting the &amp;quot;Reconfigure&amp;quot; menu option, you should then have xmms pop up when you hit the ThinkVantage key.&lt;br /&gt;
&lt;br /&gt;
==Example Applications==&lt;br /&gt;
===Web Browsers===&lt;br /&gt;
====Firefox (&amp;lt;3.0)====&lt;br /&gt;
&lt;br /&gt;
There are various ways to assign actions to the browser keys. The easiest way is to install [http://mozilla.dorando.at/keyconfig.xpi keyconfig.xpi] from http://mozilla.dorando.at, which adds a menu entry Tools-&amp;gt;Keyconfig. Then you can assign any action you want to the F19/F20 keys (you still need to create {{path|~/.Xmodmap}} as explained above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The remaining discussion gives you various more complicated ways to achieve the same thing. &lt;br /&gt;
To have firefox make use of the browser keys you need to modify one of its files{{footnote|4}}.&lt;br /&gt;
To do this you will first need to extract it from the {{path|browser.jar}} archive. Do...&lt;br /&gt;
&lt;br /&gt;
Step 1:  Edit .Xmodmap and add entries for F19 and F20 as explained above.&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;firefox-directory&amp;gt; is probably /usr/lib/firefox. Use your version so, if you have 3.0.1 or 3.0.2 use /usr/lib/firefox-3.0.1&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|cd &amp;lt;firefox-directory&amp;gt;/chrome}}&amp;lt;br /&amp;gt;&lt;br /&gt;
:{{cmdroot|unzip browser.jar}}&lt;br /&gt;
&lt;br /&gt;
The file of interest is {{path|content/browser/browser.xul}}. Edit it {and don't forget to make a backup copy first}...&lt;br /&gt;
:{{cmdroot|vi content/browser/browser.xul}}&lt;br /&gt;
&lt;br /&gt;
Look for the '''&amp;lt;keyset id=&amp;quot;mainKeyset&amp;quot;&amp;gt;''' section and add the following lines within...&lt;br /&gt;
 &amp;lt;key id=&amp;quot;goBackKb&amp;quot; keycode=&amp;quot;VK_F19&amp;quot; command=&amp;quot;Browser:Back&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;key id=&amp;quot;goForwardKb&amp;quot; keycode=&amp;quot;VK_F20&amp;quot; command=&amp;quot;Browser:Forward&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Command you need for Next Tab &lt;br /&gt;
 &amp;lt;key id=&amp;quot;goBackTabKb&amp;quot; keycode=&amp;quot;VK_F19&amp;quot; oncommand=&amp;quot;gBrowser.mTabContainer.advanceSelectedTab(-1)&amp;quot; /&amp;gt;&lt;br /&gt;
For the Previous Tab &lt;br /&gt;
 &amp;lt;key id=&amp;quot;goForwardTabKb&amp;quot; keycode=&amp;quot;VK_F20&amp;quot; oncommand=&amp;quot;gBrowser.mTabContainer.advanceSelectedTab(1)&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now save the file and repackage the {{path|browser.jar}} archive...&lt;br /&gt;
:{{cmdroot|zip -rD0 browser.jar content/browser/}}&lt;br /&gt;
&lt;br /&gt;
That's it.&lt;br /&gt;
&lt;br /&gt;
Step 3:  Restart Firefox.&lt;br /&gt;
&lt;br /&gt;
{{HINT|Outdated: Another interesting Page on Firefox is http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/ It uses different key mappings (F19 resp. F20) but a ready [http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/dqdnavkeys-1.2.xpi .xpi] is provided which is pretty comfortable. However, this xpi file does not install on Firefox 1.5. or later.}}&lt;br /&gt;
&lt;br /&gt;
{{HINT| You can also use the [http://extensionroom.mozdev.org/more-info/keyconfig keyconfig] extension to configure custom keys.  This extension works with Firefox 1.5 and also with Firefox 2.0. The Command you need for Next Tab is gBrowser.mTabContainer.advanceSelectedTab(1,true); For Previous Tab its gBrowser.mTabContainer.advanceSelectedTab(-1,true); You can alternatively install the [http://www.pqrs.org/~tekezo/firefox/extensions/functions_for_keyconfig/index.html functions for keyconfig] and set the variable f4kc_NextTab to F20 and f4kc_PrevTab to F19.}}.&lt;br /&gt;
&lt;br /&gt;
====Firefox 3.0====&lt;br /&gt;
Thankfully the people at Mozilla decided to include the expected functionality for the XF86Back and XF86Forward keysyms in the new release so all you need to do is&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# printf 'keycode 234 = XF86Back\nkeycode 233 = XF86Forward' &amp;gt;&amp;gt; /etc/X11/Xmodmap&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
And to make this take effect immediately (i.e., without having to log out and log in again), as a regular user run:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;{{cmduser|Xmodmap /etc/X11/Xmodmap}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Hardy Heron, the xmodmap command is all lowercase. Also, the /etc/X11/Xmodmap file is not being read on boot. I've added the command to my .bashrc to have it called on startup.&lt;br /&gt;
&lt;br /&gt;
====Konqueror====&lt;br /&gt;
KDE allows you set key mappings for KDE applications (Go to KMenu &amp;gt; System &amp;gt; Control Center &amp;gt; Regional &amp;amp; Accessibility &amp;gt; Keyboard Shortcuts). By default (at least in KDE 3.5), XF86Back and XF86Forward are set as alternatives to Alt-Left and Alt-Right, and are mapped to KDE Back and Forward navigation actions.  &lt;br /&gt;
&lt;br /&gt;
If you use Konqueror as your only browser, you only need to set up {{path|~/.Xmodmap}} as described [[#xmodmap configuration|above]] to assign ThinkPad back/forward keys to the symbols XF86Back/XF86Forward. This also make these keys work for other KDE applications such as Quanta Plus, KPackage and so on (not all KDE applications honor this setting, e.g. KDE help system doesn't).&lt;br /&gt;
&lt;br /&gt;
If you want to use Firefox, however, the above settings do not work. You will have to map ThinkPad back/forward keys to F19/F20 as described [[#Firefox|above]], and change KDE navigation key settings to use F19/F20 instead of the default.&lt;br /&gt;
&lt;br /&gt;
====Opera====&lt;br /&gt;
However this isn't a simple configration file, you can set your browser manually.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go to &amp;lt;i&amp;gt;Tool &amp;gt; Settings &amp;gt; Mouse and keyboard &amp;gt; Keyboard settings &amp;gt; Edit &amp;gt; Browser Window&amp;lt;/i&amp;gt;. There add F19 - Back and F20 - Forward. Now you can surf using your TP keys ;-)&lt;br /&gt;
&lt;br /&gt;
====Epiphany====&lt;br /&gt;
By default, the back/forward keys, when bound to XF86Back/XF86Forward, successfully navigate through the history.&lt;br /&gt;
&lt;br /&gt;
To get them switch through your tabs, you could use the extension from [http://crashman.homelinux.org/~andre/public/epiphany%20extensions/thinkpad%20browserkeys/ here]&lt;br /&gt;
You just need to edit your Xmodmap like described for Firefox &amp;lt; 3.0 (bind the keys on F19 and F20)&lt;br /&gt;
&lt;br /&gt;
===Open an application===&lt;br /&gt;
&lt;br /&gt;
To configure the ThinkVantage button to open a terminal window in Gnome:&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
Use xev to find the keycode generated by the button on your machine.  In my case is is 159.&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
Create an entry in .Xmodmap like so&lt;br /&gt;
&lt;br /&gt;
keycode 159 = XF86LaunchA&lt;br /&gt;
&lt;br /&gt;
replacing 159 by the keycode found in step 1.  Load the map using&lt;br /&gt;
&lt;br /&gt;
:{{cmd|xmodmap ~/.Xmodmap}}&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
Configure the required function (e.g. open terminal window) in System-&amp;gt;Preferences-&amp;gt;Keyboard shortcuts&lt;br /&gt;
&lt;br /&gt;
===Window Managers===&lt;br /&gt;
====fvwm====&lt;br /&gt;
To get the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys to cycle through pages in the virtual desktop, add this to your {{path|~/.fvwmrc}}:&lt;br /&gt;
 Key    XF86Back     A      A   Scroll     -100000   0&lt;br /&gt;
 Key    XF86Forward  A      A   Scroll     +100000   0&lt;br /&gt;
If you use multiple virtual desktops, you could instead use the keys to flip between them by using GotoDesk.&lt;br /&gt;
&lt;br /&gt;
====fluxbox====&lt;br /&gt;
To get the keys to cycle through pages in the virtual desktop, add this to your {{path|~/.fluxbox/keys}}:&lt;br /&gt;
 None F19 :PrevWorkspace&lt;br /&gt;
 None F20 :NextWorkspace&lt;br /&gt;
&lt;br /&gt;
====pekwm configuration====&lt;br /&gt;
You can make the two browser keys switch workspaces in pekwm, by adding the following two lines to the {{path|~/.pekwm/keys}} file:&lt;br /&gt;
 KeyPress = &amp;quot;Mod1 XF86Back&amp;quot; { Actions = &amp;quot;GoToWorkspace prev&amp;quot; }&lt;br /&gt;
 KeyPress = &amp;quot;Mod1 XF86Forward&amp;quot; { Actions = &amp;quot;GoToWorkspace next&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
====pwm====&lt;br /&gt;
Another example how to use these two keys to switch between pwm tabs. These two lines should be added to {{path|~/.pwm/keys-default.conf}} or {{path|/etc/pwm/keys-default.conf}}:&lt;br /&gt;
 kbind &amp;quot;Back&amp;quot;, &amp;quot;switch_rot&amp;quot;, -1&lt;br /&gt;
 kbind &amp;quot;Forward&amp;quot;, &amp;quot;switch_rot&amp;quot;, 1&lt;br /&gt;
&lt;br /&gt;
====IceWM====&lt;br /&gt;
To make IceWM cycle workspaces using the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys, change these two options in {{path|~/.icewm/preferences}} (Provided you assigned keysyms F19 and F20 with xmodmap):&lt;br /&gt;
 # &amp;quot;Previous workspace&amp;quot; shortcut&lt;br /&gt;
 KeySysWorkspacePrev=&amp;quot;F19&amp;quot;&lt;br /&gt;
 # &amp;quot;Next workspace&amp;quot; shortcut&lt;br /&gt;
 KeySysWorkspaceNext=&amp;quot;F20&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Gnome/metacity ====&lt;br /&gt;
&lt;br /&gt;
Follow the [https://wiki.ubuntu.com/Keybindings Ubuntu guide].&lt;br /&gt;
&lt;br /&gt;
===Other Uses===&lt;br /&gt;
====Console tools configuraton====&lt;br /&gt;
To make the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys useful in console, add this to your keymap ({{path|/etc/console/boottime.kmap.gz}} in {{Debian}}):&lt;br /&gt;
 keycode 158 = Decr_Console&lt;br /&gt;
 keycode 159 = Incr_Console&lt;br /&gt;
&lt;br /&gt;
Alternatively you can load this script (perhaps on system startup) to enable Backward/Forward button console (VT) switch:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 echo keycode 158 = Decr_Console | loadkeys&lt;br /&gt;
 echo keycode 159 = Incr_Console | loadkeys&lt;br /&gt;
&lt;br /&gt;
It should work with any distro.&lt;br /&gt;
&lt;br /&gt;
====Cycling through tabs====&lt;br /&gt;
In Gnome and Xfce4, Ctrl-PageUp/Ctrl-PageDown move to the previous/following open tab in all applications that have tabbed user interfaces (terminal emulator, web browser, ...). To make use of the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys for this task, there're two possibilities.&lt;br /&gt;
&lt;br /&gt;
For both ways, you should map the keycodes 233 and 234 to XF86Back and XF86Forward as described in [[#xmodmap_configuration|xmodmap configuration]].&lt;br /&gt;
&lt;br /&gt;
=====Using xautomation=====&lt;br /&gt;
xautomation can be found [http://hoopajoo.net/projects/xautomation.html here].&lt;br /&gt;
&lt;br /&gt;
Create two files with permissions 755:&lt;br /&gt;
&lt;br /&gt;
{{path|/usr/local/bin/tp_back}}:&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/usr/bin/xte 'keydown Control_L' 'keydown Page_Up' 'keyup Page_Up' 'keyup Control_L'&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/usr/local/bin/tp_forward}}:&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/usr/bin/xte 'keydown Control_L' 'keydown Page_Down' 'keyup Page_Down' 'keyup Control_L'&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use your desktop's keyboard shortcut editor to assign XF86Back as a shortcut for tp_back and XF86Forward as a shortcut for tp_forward.&lt;br /&gt;
&lt;br /&gt;
This should work in all distros and with all window managers (you might have to use other key combinations than Ctrl-PageUp and Ctrl-PageDown).&lt;br /&gt;
&lt;br /&gt;
=====Redirecting XF86Back/XF86Forward=====&lt;br /&gt;
Create {{path|/etc/X11/xkb/compat/thinkpad}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// $XFree86$&lt;br /&gt;
//  XFree86 special keysyms&lt;br /&gt;
default partial xkb_compatibility &amp;quot;basic&amp;quot;  {&lt;br /&gt;
    interpret.repeat= True;&lt;br /&gt;
&lt;br /&gt;
    interpret  XF86Back {&lt;br /&gt;
        action = Redirect(Key=&amp;lt;PGUP&amp;gt;, modifiers=Control);&lt;br /&gt;
    };&lt;br /&gt;
    interpret  XF86Forward {&lt;br /&gt;
        action = Redirect(Key=&amp;lt;PGDN&amp;gt;, modifiers=Control);&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit {{path|/etc/X11/xkb/compat/complete}} and add &amp;lt;tt&amp;gt;'''augment &amp;quot;thinkpad&amp;quot;'''&amp;lt;/tt&amp;gt; so that it looks similar to the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// $XKeyboardConfig: xkbdesc/compat/complete,v 1.3 2005/10/17 00:42:11 svu Exp $&lt;br /&gt;
// $Xorg: complete,v 1.3 2000/08/17 19:54:34 cpqbld Exp $&lt;br /&gt;
default xkb_compatibility &amp;quot;complete&amp;quot;  {&lt;br /&gt;
    include &amp;quot;basic&amp;quot;&lt;br /&gt;
    augment &amp;quot;iso9995&amp;quot;&lt;br /&gt;
    augment &amp;quot;mousekeys&amp;quot;&lt;br /&gt;
    augment &amp;quot;accessx(full)&amp;quot;&lt;br /&gt;
    augment &amp;quot;misc&amp;quot;&lt;br /&gt;
    augment &amp;quot;xfree86&amp;quot;&lt;br /&gt;
    augment &amp;quot;level5&amp;quot;&lt;br /&gt;
    augment &amp;quot;thinkpad&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
*[http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-51537 IBMs page on configuring the ThinkPad buttons (ThinkPad, Access IBM, Mail, Search, and Home buttons) under Linux]&lt;br /&gt;
*[http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/ Rob Mayoffs page on using IBM Keyboard Navigation Keys in Linux Mozilla and Firefox]&lt;br /&gt;
*[http://snarfed.org/space/thinkpad+keys+in+firefox Ryan Barretts blog article about using the browser keys in Firefox]&lt;br /&gt;
*[http://chaotika.org/~bluesceada/?page=soft&amp;amp;sub=thinkpad#acpibutn DennisG's help to get the ibm-acpi buttons do useful things] on a {{Z61e}} and possibly {{Z61m}}, {{Z61t}} and {{Z61p}}&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#Note that the associated functionality for Fn-F* key combinations is not consistent amongst all ThinkPads. We are maintaining [[Default meanings of special keys|a table of associated meanings]].&lt;br /&gt;
#if there are more than one tool listed, one is sufficient&lt;br /&gt;
#'full' means you can completely reassign any action to be triggered by the key, 'additional actions' means you can trigger actions in addition to the standard function of the key, which can not be changed.&lt;br /&gt;
#Thanks go to Ryan Barrett for writing the [http://snarfed.org/space/thinkpad+keys+in+firefox little howto] on [http://snarfed.org/space/start his blog].&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Category:Debian&amp;diff=41548</id>
		<title>Category:Debian</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Category:Debian&amp;diff=41548"/>
		<updated>2009-02-17T21:34:40Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: update, as Lenny has been released&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:middle;padding-left:20px;padding-right:20px;width:10px;&amp;quot; | [[Image:Debian_logo.png]]&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;
=== Debian ===&lt;br /&gt;
This page gives an introduction to Debian [http://www.debian.org] and an overview of related articles.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{| style=&amp;quot;margin-left:20px;margin-right:20px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=== What is Debian? ===&lt;br /&gt;
Debian is a free operating system (OS) for your computer. An operating system is the set of basic programs and utilities that make your computer run. Debian uses the Linux kernel (the core of an operating system), but most of the basic OS tools come from the GNU project; hence the name GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
Debian GNU/Linux provides more than a pure OS: it comes with more than 15490 packages, precompiled software bundled up in a nice format for easy installation on your machine.&lt;br /&gt;
&lt;br /&gt;
=== Debian Version [http://www.debian.org/releases/] ===&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;
! colspan=2 | Version     &lt;br /&gt;
! colspan=2 | Documentation               &lt;br /&gt;
! Comments &lt;br /&gt;
|- style=&amp;quot;text-align:left;vertical-align:top;&amp;quot;&lt;br /&gt;
|| &amp;lt;tt&amp;gt;status&amp;lt;/tt&amp;gt; || &amp;lt;tt&amp;gt;Name&amp;lt;/tt&amp;gt;&lt;br /&gt;
|| &amp;lt;tt&amp;gt;Release&amp;lt;br /&amp;gt;Information&amp;lt;/tt&amp;gt;&lt;br /&gt;
|| &amp;lt;tt&amp;gt;Installation&amp;lt;br /&amp;gt; Guide&amp;lt;/tt&amp;gt;&lt;br /&gt;
|| &lt;br /&gt;
|- style=&amp;quot;background-color:#8f8&amp;quot;&lt;br /&gt;
|| '''stable''' || ''' ''Lenny 5.0'' '''&lt;br /&gt;
|| [http://www.debian.org/releases/stable/] &lt;br /&gt;
|| [http://www.debian.org/releases/stable/installmanual]&lt;br /&gt;
|| The stable version IS the version you should install.&lt;br /&gt;
|- style=&amp;quot;color:#000; background-color:#dfd&amp;quot;&lt;br /&gt;
|| oldstable || ''Etch 4.0''&lt;br /&gt;
|| [http://www.debian.org/releases/etch/] &lt;br /&gt;
|| [http://www.debian.org/releases/etch/installmanual]&lt;br /&gt;
|| The previous stable version. You should consider upgrading. (It's still supported)&lt;br /&gt;
|- style=&amp;quot;color:#333; background-color:#ddd&amp;quot;&lt;br /&gt;
|| obsolete || ''Sarge 3.1''&lt;br /&gt;
|| [http://www.debian.org/releases/sarge/] &lt;br /&gt;
|| [http://www.debian.org/releases/sarge/installmanual]&lt;br /&gt;
|| Obsolete stable version. Don't Install it.&lt;br /&gt;
|- style=&amp;quot;color:#333; background-color:#ddd&amp;quot;&lt;br /&gt;
|| obsolete || ''Woody 3.0''&lt;br /&gt;
|| [http://www.debian.org/releases/woody/] &lt;br /&gt;
|| [http://www.debian.org/releases/woody/installmanual]&lt;br /&gt;
|| Obsolete stable version. Don't Install it.&lt;br /&gt;
|- style=&amp;quot;color:#333; background-color:#ddd&amp;quot;&lt;br /&gt;
|| obsolete || ''Potato 2.2''&lt;br /&gt;
|| [http://www.debian.org/releases/potato/] &lt;br /&gt;
|| [http://www.debian.org/releases/potato/installmanual]&lt;br /&gt;
|| Obsolete stable version. Don't Install it.&lt;br /&gt;
|-&lt;br /&gt;
! colspan=5 | Development version&lt;br /&gt;
|- style=&amp;quot;color:#333; background-color:#ddd&amp;quot;&lt;br /&gt;
|| '''testing''' || ''Squeeze''&lt;br /&gt;
|| [http://www.debian.org/releases/squeeze/] &lt;br /&gt;
|| [http://www.debian.org/releases/squeeze/installmanual]&lt;br /&gt;
|| Development for next stable version. Not for production purpose.&lt;br /&gt;
|- style=&amp;quot;color:#333; background-color:#ddd&amp;quot;&lt;br /&gt;
|| '''unstable''' || ''sid''&lt;br /&gt;
|| [http://www.debian.org/releases/unstable/] &lt;br /&gt;
|| n.a&lt;br /&gt;
|| Early test of package. Not for production purpose.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Debian Support [http://www.debian.org/support] ===&lt;br /&gt;
* Debian Mailing Lists with archives [http://lists.debian.org/]&lt;br /&gt;
** [http://lists.debian.org/debian-laptop/ Debian-Laptop] - Installing, updating and using laptops with Debian.&lt;br /&gt;
** [http://lists.debian.org/debian-user/ Debian-User] - Support for Debian users who speak English.&lt;br /&gt;
* [http://wiki.debian.org Debian Wiki]&lt;br /&gt;
* [http://www.debian.org/support#irc Debian Irc Channel]&lt;br /&gt;
* [http://www.debian.org/doc/ Debian Documentation Hub]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Distributions]]&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_get_special_keys_to_work&amp;diff=41547</id>
		<title>How to get special keys to work</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_get_special_keys_to_work&amp;diff=41547"/>
		<updated>2009-02-17T21:31:30Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Triggering key events */ note about acpi-support on Debian&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
The following table gives an overview over the special keys found on ThinkPads and what is needed to make them work.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
! key !! standard function{{footnote|1}} !! tools supporting key{{footnote|2}} !! configurability{{footnote|3}} !! remarks&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}} || - || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || on release without completed key combination&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F1}} || - || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F2}} || lock screen || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || in models from T/X/Z 60 onwards&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F3}} || blank screen || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F4}} || suspend to ram || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || may generate ACPI event when not enabled in the ibm-acpi hotkey mask&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F5}} || switch bluetooth || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || in models starting from 2002&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F6}} || - || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F7}} || toggle display || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]] || additional actions || [[Sample Fn-F7 script]]&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F8}} || toggle trackpoint/touchpad || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F9}} || eject from dock || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F10}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F11}} || - || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F12}} || hibernate || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full || may generate ACPI event when not enabled in the ibm-acpi hotkey mask&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Home}} / {{key|Fn}}{{key|Pos1}} || brightness up || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|End}} || brightness down || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|PageUp}} || toggle thinklight || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Space}} || toggle zoom || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Ins}} || - || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]]|| full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Del}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Backspace}} || - || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|NumLock}} || - || [[#xmodmap configuration|xmodmap]] || make working ||&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Windows}} || - || [[#xmodmap configuration|xmodmap]] || remapping ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} or {{ibmkey|ThinkVantage|#495988}} || help application || [[thinkpad-acpi]],[[#tpb configuration|tpb]], [[KMilo]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Home|#494949}} || open web browser || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Search|#494949}} || open search application || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Mail|#494949}} || open mail application || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]], [[KMilo]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Favorites|#494949}} || open favorites || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Reload|#494949}} || reload web page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Abort|#494949}} || abort loading page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || only {{A30}}, {{A30p}}, {{A31}}, {{A31p}} and ext. keyboards&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Backward|#494949}} || previous page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full ||  ext. keyboards and ThinkPads starting from 2002&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Forward|#494949}} || next page || [[#xmodmap configuration|xmodmap]], [[#tpb configuration|tpb]] || full || ext. keyboards and ThinkPads starting from 2002&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume up|#494949}} || volume up || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume down|#494949}} || volume down || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume mute|#494949}} || mute volume || [[thinkpad-acpi]], [[#tpb configuration|tpb]], [[KMilo]] || additional actions ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Play/Pause|#494949}} || start/pause playback  || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Down)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Stop|#494949}} || stop playback || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Up)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Next|#494949}} || play next || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Right)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Previous|#494949}} || play previous || [[#xmodmap configuration|xmodmap]] || full || {{X60s}} (Fn+Arrow Left)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Power|#494949}} || shutdown || [[#ibm-acpi events|ibm-acpi]],[[thinkpad-acpi]] || full || triggered on pressing 3secs, but notebook goes off on 5sec press&lt;br /&gt;
|-&lt;br /&gt;
| Display lid || blank screen || [[#ibm-acpi events|ibm-acpi]], [[thinkpad-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| Ultrabay lid || announce ultrabay change || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| Dock eject || eject from dock || [[#ibm-acpi events|ibm-acpi]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet power|#494949}} || shutdown || [[#ibm-acpi events|ibm-acpi]] || full || triggered on pressing 3secs, but notebook goes off on 5sec press&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet orientation|#494949}} || rotates screen || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet shortcut|#494949}} || shortcut menu || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Esc|#494949}} || esc key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Enter|#494949}} || enter key || [[#mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Up|#494949}} || up key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Down|#494949}} || down key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet (unlabeled)|#494949}} || down key || [[#Mapping keys with setkeycodes|setkeycodes]] || full ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For completeness, note that the WiFi enable/disable switch is located (on the X61 and other models that have it) just under the front edge of the base of the machine.  You should see a small horizontal slider switch.  Enable by sliding it rightwards, disable by sliding it leftwards.&lt;br /&gt;
&lt;br /&gt;
Tablet buttons vary with model.  See [[Tablet Hardware Buttons]].&lt;br /&gt;
&lt;br /&gt;
==Triggering key events==&lt;br /&gt;
&lt;br /&gt;
===ibm-acpi/thinkpad-acpi events===&lt;br /&gt;
Some of the following events require a {{cmdroot|echo enable,0xffff &amp;gt;/proc/acpi/ibm/hotkey}} (when using ibm-acpi) in order to make acpi able to get information on them. Since the newer thinkpad-acpi has a larger number of bits that can be set in the mask, you might try {{cmdroot|echo enable,0xffffffff &amp;gt;/proc/acpi/ibm/hotkey}} if you are using this driver. These events can be used to [[How to configure acpid|configure acpid]].&lt;br /&gt;
&lt;br /&gt;
On {{Debian}} Lenny, the acpi-support package automagically enables such events.&lt;br /&gt;
&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ events triggered by [[ibm-acpi]] for {{path|/etc/acpi/events}} files. May vary on different models.&lt;br /&gt;
! key !! event&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F1}} || ibm/hotkey HKEY 00000080 00001001&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F2}} || ibm/hotkey HKEY 00000080 00001002&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F3}} || ibm/hotkey HKEY 00000080 00001003&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F4}} || ibm/hotkey HKEY 00000080 00001004&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F5}} || ibm/hotkey HKEY 00000080 00001005&lt;br /&gt;
|- &lt;br /&gt;
| {{key|Fn}}{{key|F6}} || ibm/hotkey HKEY 00000080 00001006&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F7}} || ibm/hotkey HKEY 00000080 00001007&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F8}} || ibm/hotkey HKEY 00000080 00001008&lt;br /&gt;
|- &lt;br /&gt;
| {{key|Fn}}{{key|F9}} || ibm/hotkey HKEY 00000080 00001009 &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F10}} || ibm/hotkey HKEY 00000080 0000100a&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F11}} || ibm/hotkey HKEY 00000080 0000100b &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F12}} || ibm/hotkey HKEY 00000080 0000100c&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Backspace}} || ibm/hotkey HKEY 00000080 0000100d&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Ins}} || ibm/hotkey HKEY 00000080 0000100e &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Del}} || ibm/hotkey HKEY 00000080 0000100f &lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Home}}/{{key|Fn}}{{key|Pos1}} || ibm/hotkey HKEY 00000080 00001010&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|End}} || ibm/hotkey HKEY 00000080 00001011&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|PgUp}} || ibm/hotkey HKEY 00000080 00001012&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Space}} || ibm/hotkey HKEY 00000080 00001014&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume up|#494949}}|| ibm/hotkey HKEY 00000080 00001015&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume down|#494949}} || ibm/hotkey HKEY 00000080 00001016&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume mute|#494949}} || ibm/hotkey HKEY 00000080 00001017&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} or {{ibmkey|ThinkVantage|#495988}} || ibm/hotkey HKEY 00000080 00001018&lt;br /&gt;
|-&lt;br /&gt;
| Ultrabay eject || ibm/bay MSTR 00000003 00000000&lt;br /&gt;
|-&lt;br /&gt;
| Ultrabay inserted || ibm/bay MSTR 00000001 00000000 &lt;br /&gt;
|-&lt;br /&gt;
| Dock eject || ibm/dock GDCK 00000003 00000001 &lt;br /&gt;
|-&lt;br /&gt;
| Wireless switch || ibm/hotkey HKEY 00000080 00007000 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
By disassembling and editing the DSDT, more events can be added.  HKEY events are triggered by calls to the MKHQ function, e.g. &amp;lt;tt&amp;gt;\_SB.PCI0.LPC.EC.HKEY.MHKQ(0Ã—1007)&amp;lt;/tt&amp;gt; will trigger &amp;quot;ibm/hotkey HKEY 00000080 00001007&amp;quot;.  Most of these can be found in &amp;lt;tt&amp;gt;_Qxx&amp;lt;/tt&amp;gt; methods within the DSDT, which are executed on embedded controller events, e.g. _Q10 is triggered by pressing Fn-F7.  You can add a call to MKHQ into an existing &amp;lt;tt&amp;gt;_Qxx&amp;lt;/tt&amp;gt; method to get it recognized by ibm-acpi as well as creating new &amp;lt;tt&amp;gt;_Qxx&amp;lt;/tt&amp;gt; methods, which if you're lucky will correspond to an EC event that IBM never used (e.g. A 770 will send Fn-Home/End/PgUp/PgDn to ibm-acpi if hacked in this fashion). For example, [http://www.wormnet.eu/ibm-g40/morebuttons.dsl this is a modified block of DSDT for a G40].&lt;br /&gt;
&lt;br /&gt;
=== ACPI events from the &amp;lt;tt&amp;gt;button&amp;lt;/tt&amp;gt; module===&lt;br /&gt;
&lt;br /&gt;
A few keys can generate ACPI events that result from the &amp;lt;tt&amp;gt;button&amp;lt;/tt&amp;gt; kernel module, as long as they are masked off in the &amp;lt;tt&amp;gt;ibm-acpi&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;thinkpad-acpi&amp;lt;/tt&amp;gt; hotkey's mask or the hotkey function of the latter module is disabled.&lt;br /&gt;
&lt;br /&gt;
If you want the ThinkPad's BIOS and ACPI methods to know about these keys being pressed, you probably want to leave them masked out from ibm-acpi, and use their non-HKEY events listed below, instead.&lt;br /&gt;
&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ events triggered by ACPI when hotkey is masked out or disabled. &lt;br /&gt;
! key !! event !! T60 event&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Power|#494949}} || button/power PWRF 00000080 xxxxxxxx || button/power PWRF 00000080 00000001&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F4}} || button/sleep SLPB 00000080 00000001 || button/sleep SLPB 00000080 00000001&lt;br /&gt;
|-&lt;br /&gt;
| Display lid || button/lid LID 00000080 xxxxxxxx || button/lid LID 00000080 00000001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===tpb configuration===&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ configuration keywords for [[tpb]] (to put in {{path|/etc/tpbrc}})&lt;br /&gt;
! key !! config keyword&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || THINKPAD&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Home|#494949}} || HOME&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Search|#494949}} || SEARCH&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Mail|#494949}} || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Favorites|#494949}} || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Reload|#494949}} || RELOAD&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Abort|#494949}} || ABORT&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Backward|#494949}} || BACKWARD&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Forward|#494949}} || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}} || FN&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Space}} || CALLBACK (zoom on/off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|PageUp}} || CALLBACK (thinklight on/off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F7}} || CALLBACK (display lcd/crt/both)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|F8}} || CALLBACK (expand on/off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|Home}} / {{key|Fn}}{{key|Pos1}} || CALLBACK (brightness &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}}{{key|End}} || CALLBACK (brightness &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume up|#494949}} || CALLBACK (volume &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume down|#494949}} || CALLBACK (volume &amp;lt;percent&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Volume mute|#494949}} || CALLBACK (mute on/off)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To all parameter keywords should be assigned the full path to the executables supposed to be started on key press.&lt;br /&gt;
The exectable provided for the CALLBACK keyword should take the parameters given in parentheses and act according to them.&lt;br /&gt;
If you want to use xmodmap for the HOME, SEARCH, MAIL, FAVORITES, RELOAD, ABORT, BACKWARD, FORWARD and FN keys you should&lt;br /&gt;
provide a &amp;lt;tt&amp;gt;XEVENTS OFF&amp;lt;/tt&amp;gt; in your {{path|/etc/tpbrc}}. &lt;br /&gt;
You can use an appropriate executable to [[How to inject fake keystrokes|inject fake keystrokes]].&lt;br /&gt;
&lt;br /&gt;
For Debian users, tpb is started from {{path|/etc/X11/Xsession.d/90tpb}}.&lt;br /&gt;
&lt;br /&gt;
'''Sound Button configuration'''&lt;br /&gt;
&lt;br /&gt;
''Note: Tested on T60p with Ubuntu 6.06 LTS''&lt;br /&gt;
&lt;br /&gt;
Most Thinkpads have a hardware sound mixer, thus the volumes buttons should work without configuration. However, this change is not reflected in the software mixer. tpb has a switch to enable software mixer support via OSS. The manual recommends this only for devices without a hardware mixer, but it also works for other hadware mixer enabled devices, even with the ALSA system. Just put MIXER ON in your {{path|/etc/tpbrc}} file and you can see the effect immediately in any ALSA mixer (e.g. kmix). For this to work you need write permissions to {{path|/dev/nvram}}.&lt;br /&gt;
&lt;br /&gt;
''Note: Tested on X21 with Ubuntu 6.06 LTS''&lt;br /&gt;
&lt;br /&gt;
On the ThinkPad X21 (and maybe some other older models) ACPI causes problems with tpb.  On an X21 using acpi the volume buttons would work occasionally, and the OSD for tpb functions would rarely work.  If a volume buttons was pressed too often, sometimes the computer would enter a low power (unplugged state) and would require a reboot.  The solution is to use APM instead of ACPI.  Instructions can be found in [[How_to_make_APM_work]].&lt;br /&gt;
&lt;br /&gt;
===KMilo configuration===&lt;br /&gt;
The programs to be executed by [[KMilo]] are configured via the KDE Control Center (&amp;lt;tt&amp;gt;kcontrol&amp;lt;/tt&amp;gt;), under &amp;lt;tt&amp;gt;System Administration --&amp;gt; IBM Thinkpad Laptop&amp;lt;/tt&amp;gt;. Note that you can use appropriate commands to [[How to inject fake keystrokes|inject fake keystrokes]].&lt;br /&gt;
&lt;br /&gt;
===xmodmap configuration===&lt;br /&gt;
xmodmap enables you to edit the modifier map and keymap tables that are used to translate keycodes into keysyms.&lt;br /&gt;
Understood? Well, basically it allows you to give the X server a dictionary for the translation of keycodes like &amp;quot;97&amp;quot; into more human readable synonyms like &amp;quot;Home&amp;quot;. This way xmodmap allows you to make the special keys of your keyboard known to X applications.&lt;br /&gt;
&lt;br /&gt;
To discover the keycode that a certain keypress produces, use the tool {{cmduser|xev}} &lt;br /&gt;
&lt;br /&gt;
Usually you should write your keycode-keysym associations into the file {{path|~/.Xmodmap}}. This file is usually read by the X session startup scripts of your system, so that the mappings automatically get included everytime you run the X server.&lt;br /&gt;
&lt;br /&gt;
The {{path|~/.Xmodmap}} lines for our purpose are in the form of&lt;br /&gt;
 keycode &amp;lt;keycode&amp;gt; = &amp;lt;keysym&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load the assocation using the command&lt;br /&gt;
&lt;br /&gt;
{{cmduser|xmodmap ~/.Xmodmap}} &lt;br /&gt;
&lt;br /&gt;
(some configurations do this automatically upon X startup). &lt;br /&gt;
&lt;br /&gt;
The following table shows the keycodes generated by the ThinkPad special keys and sensible keysyms to assign them to.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ keycodes and recommended keysyms&lt;br /&gt;
! key !! keycode !! keysym&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Access IBM|#495988}} or {{ibmkey|ThinkPad|#494949}} || 159 || XF86LaunchA&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Backward|#494949}} || 234 || XF86Back or F19&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Forward|#494949}} || 233 || XF86Forward or F20&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Play/Pause|#494949}} || 162 || XF86AudioPlay&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Stop|#494949}} || 164 || XF86AudioStop&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Next|#494949}} || 153 || XF86AudioNext&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Previous|#494949}} || 144 || XF86AudioPrev&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| {{ibmkey|Home|#494949}} || 178 || XF86HomePage&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Search|#494949}} || 229 || XF86Search&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Mail|#494949}} || 236 || XF86Mail&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Favorites|#494949}} || 230 || XF86AddFavorite or XF86Favorites&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Reload|#494949}} || 231 || XF86Reload&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Abort|#494949}} || 232 || XF86Stop&lt;br /&gt;
|-&lt;br /&gt;
| {{key|Fn}} || 227 || F35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: You can also use xkeycaps (an X tool to display and edit the X keyboard mapping) to generate proper .Xmodmap.&lt;br /&gt;
&lt;br /&gt;
Note: if you are running [[tpb]] you might need to add the line &amp;lt;tt&amp;gt;XEVENTS=off&amp;lt;/tt&amp;gt; into your tpbrc to stop it from grabbing the key events and allow them to get through to X instead. See [[http://www.thinkwiki.org/wiki/Tpb]] for more detailed instruction on how to use tpb and xmodmap.&lt;br /&gt;
&lt;br /&gt;
Note: XF86Forward and XF86Back do not work correctly in Firefox. You may want to map them to F19 and F20 instead if you use Firefox.&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;XF86AudioPlay&amp;quot; etc. just works with a few programs. To make it work with more multimedia programs you have map the key to use something like [http://www.kde-apps.org/content/show.php/ReMoot?content=63140 ReMoot]. ReMoot is a command line wrapper that control 18 of the most common multimedia applications. &lt;br /&gt;
&lt;br /&gt;
=====Enabling the Windows and Menu Keys=====&lt;br /&gt;
On some systems the Windows and Menu keys may not be recognized.  You can enable then by&lt;br /&gt;
making the following changes:&lt;br /&gt;
&lt;br /&gt;
        keycode 115 = F13&lt;br /&gt;
        keycode 227 = F35&lt;br /&gt;
&lt;br /&gt;
F13 and F35 are used for the Windows and and Menu keys respectively.  Labelling keycpode 227 as &amp;quot;Menu&amp;quot; may conflict with the right-mouse-click event.&lt;br /&gt;
&lt;br /&gt;
=====Using Caps Lock as Super L (Windows key)=====&lt;br /&gt;
You can easily use Caps Lock as Win key by adding the following in your ~/.Xmodmap:&lt;br /&gt;
        ! No Caps Lock&lt;br /&gt;
        clear lock&lt;br /&gt;
        ! Caps Lock as Win key&lt;br /&gt;
        add mod4 = Caps_Lock&lt;br /&gt;
=====NumLock=====&lt;br /&gt;
On the ThinkPad {{600}}, {{T20}}, {{T21}}, {{T22}}, {{T30}}, {{X20}}, {{X21}},  {{X31}}, {{X40}}, {{T42p}}, {{T43}}, {{R51}}, {{R52}} and possibly other models, X does not recognize the keycode for {{key|NumLk}} = {{key|Shift}}+{{key|ScrLk}}. To fix this, add the following to {{path|~/.Xmodmap}} in your home directory or {{path|/etc/X11/Xmodmap}} and run &amp;lt;tt&amp;gt;xmodmap&amp;lt;/tt&amp;gt;, ex: &amp;lt;tt&amp;gt;xmodmap ~/.Xmodmap&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 keycode 77 = Num_Lock&lt;br /&gt;
&lt;br /&gt;
The following might work better for you:&lt;br /&gt;
  keycode 77 = Num_Lock Num_Lock&lt;br /&gt;
because you will only get keycode 77 together with Shift (at least on the {{T43}})&lt;br /&gt;
&lt;br /&gt;
This configuration also enables the respective LED.&lt;br /&gt;
&lt;br /&gt;
Please note, pressing the {{key|Shift}}+{{key|ScrLk}} key combination, without first following the above configuration, will start an accessibility feature, which will allow the numeric keypad to maneuver the mouse pointer.  Starting this accessibility feature and subsequently running xmodmap, as described above, results in the accessibility feature and the numeric lock LED functioning simultaneously.  As such, the above configuration should be completed before the accessibility feature is started in order to produce numbers.&lt;br /&gt;
======T60 (and possibly others)======&lt;br /&gt;
It seems that on the T60, PrtSc, ScrLk and Pause all generate the correct keycodes, however Fn-PrtSc (labelled as SysRq) generates keycode 64 (Alt_L) followed by the expected 111 (Sys_Req) on down and the same thing in the opposite order on release. Fn-ScrLk (labelled as NmLk) does indeed toggle the Numlock, but only seems to register as an X event the first time it is engaged. The above solution does not appear to work. This is perhaps because the Numlock toggle is built into the firmware rather than controlled by the kernel. Finally, Fn-Pause (labelled as Break) generates keycode 37 (Control_L) followed by the expected keycode 110 (Break) on down and the same thing in reverse order on release.&lt;br /&gt;
&lt;br /&gt;
=====NumPad (KeyPad) keys access by a key combination=====&lt;br /&gt;
The current state is that you have to switch NumLock '''on''' via {{key|Fn}}+{{key|ScrLk}} and then e.g. type {{key|u}} to get a {{key|KP_4}} (NumPad 4). To get back to normal keyboard, you have to type {{key|Fn}}+{{key|ScrLk}} again.&lt;br /&gt;
&lt;br /&gt;
Some people (including me) are missing on recent Thinkpads the option to have Fn as a modifier key to access the NumPad instead, i.e. and e.g. {{key|Fn}}+{{key|u}} gives you {{key|KP_4}}.&lt;br /&gt;
&lt;br /&gt;
There is currently no way to make this work in a simple way (pleeeease correct me if I am wrong!), though there is a work-around. Instead of using {{key|Fn}} for accessing the NumPad, {{key|CapsLock}} can get this function by being mapped as Mode_switch (the {{key|AltGr}} on international keyboards). The {{key|Fn}} can be remapped to be Caps_Lock - while at the same time retaining its function to access the special laptop functions (e.g. {{key|Fn}}+{{key|F4}} for sleep}}, by using .Xmodmap.&lt;br /&gt;
&lt;br /&gt;
So on my {{R60}} running fvwm@{{Slackware}} 12.1 the .Xmodmap would look like this:&lt;br /&gt;
&lt;br /&gt;
 ! Make the forward and back buttons work&lt;br /&gt;
    keycode 233 = XF86Forward&lt;br /&gt;
    keycode 234 = XF86Back&lt;br /&gt;
 ! Make the WIN key to Super modifier&lt;br /&gt;
    keycode 115 = Super_L&lt;br /&gt;
 ! Set the Caps_Lock physical key to Mode_switch (like AltGr on intl. keyboards)&lt;br /&gt;
    keycode 66 = Mode_switch&lt;br /&gt;
 ! Set the Fn key to work as Caps_Lock now. The special key combos like Fn-F4 for &amp;quot;sleep&amp;quot; still work then&lt;br /&gt;
    keycode 227 = Caps_Lock&lt;br /&gt;
    clear lock&lt;br /&gt;
    add lock = Caps_Lock&lt;br /&gt;
 ! Now we activate those new keys. Find some free mod slots (xmodmap) and put them there.&lt;br /&gt;
    clear mod4&lt;br /&gt;
    clear mod5&lt;br /&gt;
    add mod4 = Super_L&lt;br /&gt;
    add mod3 = Mode_switch&lt;br /&gt;
 ! It's time to add the keypad keys to the third position of the key definition (pure shift mode_switch shift+mode_switch)&lt;br /&gt;
    keycode 16 = 7 ampersand KP_7&lt;br /&gt;
    keycode 17 = 8 asterisk KP_8&lt;br /&gt;
    keycode 18 = 9 parenleft KP_9&lt;br /&gt;
      keycode 19 = 0 parenright KP_Divide&lt;br /&gt;
    keycode 30 = u U KP_4&lt;br /&gt;
    keycode 31 = i I KP_5&lt;br /&gt;
    keycode 32 = o O KP_6&lt;br /&gt;
      keycode 33 = p P KP_Multiply&lt;br /&gt;
    keycode 44 = j J KP_1&lt;br /&gt;
    keycode 45 = k K KP_2&lt;br /&gt;
    keycode 46 = l L KP_3&lt;br /&gt;
      keycode 47 = semicolon colon KP_Subtract&lt;br /&gt;
    keycode 58 = m M KP_0&lt;br /&gt;
 ! ... I have to use the coma key, too, on the keypad...so I set it to be F20 (which is not existing on normal keyboards and thus is free... check for side effects in programmes accepting F12+ keys!)&lt;br /&gt;
    keycode 59 = comma less F20 &lt;br /&gt;
    keycode 60 = period greater KP_Decimal    &lt;br /&gt;
      keycode  61 = slash question KP_Add&lt;br /&gt;
&lt;br /&gt;
{{WARN|Your keycodes might be different as well as your '''mod''#''''' settings.}}&lt;br /&gt;
Use {{cmduser|xmodmap}} and {{cmduser|xmodmap -pke}} to check your ModMap, and the tool {{cmduser|xev}} to obtain your exact key codes.&lt;br /&gt;
&lt;br /&gt;
===Mapping keys with setkeycodes===&lt;br /&gt;
You can use the setkeycodes command to remap certain keys. I.e. you can use {{cmdroot|setkeycodes 6e 109 6d 104 69 28 6b 1}} to map the Tablets Up and Down keys to the standard PageUp and PageDown keys and Tablet Escape and Enter to their respective keys.&lt;br /&gt;
&lt;br /&gt;
The following table shows the scancodes generated by the ThinkPad keys.  They vary with model - see [[Tablet Hardware Buttons]].&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
|+ scancodes&lt;br /&gt;
! key !! scancode&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet orientation|#494949}} || 0x6c&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Shortcut|#494949}} || 0x68&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Esc|#494949}} || 0x6b&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Enter|#494949}} || 0x69&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Up|#494949}} || 0x6d&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet Down|#494949}} || 0x6e&lt;br /&gt;
|-&lt;br /&gt;
| {{ibmkey|Tablet (unlabeled)|#494949}} || 0x67&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===acpi_fakekey===&lt;br /&gt;
You can turn acpi events into user-level xevents by putting &amp;lt;tt&amp;gt;acpi_fakekey&amp;lt;/tt&amp;gt; commands into the acpi action scripts. There are several layers involved in using acpi keys in this way, so I'll go through the example of using the ThinkVantage button to open xmms.&lt;br /&gt;
&lt;br /&gt;
My ThinkVantage button generates an '''acpi event''' &amp;quot;ibm/hotkey HKEY 00000080 00001018&amp;quot;, so we have the event file &amp;lt;tt&amp;gt;/etc/acpi/events/ThinkVantage&amp;lt;/tt&amp;gt; for it which executes the script &amp;lt;tt&amp;gt;/etc/acpi/actions/fakekey-macro.sh&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event=ibm/hotkey HKEY 00000080 00001018&lt;br /&gt;
action=/etc/acpi/actions/fakekey-macro.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In turn, the executable &amp;lt;tt&amp;gt;/etc/acpi/actions/fakekey-macro.sh&amp;lt;/tt&amp;gt; script calls acpi_fakekey with the '''key number''' defined in &amp;lt;tt&amp;gt;/usr/share/acpi-support/key-constants&amp;lt;/tt&amp;gt; as $KEY_MACRO which is 112 (you could just as well choose an other key number, just make sure that it doesn't belong to something else like the &amp;quot;j&amp;quot; key or something). &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
. /usr/share/acpi-support/key-constants&lt;br /&gt;
acpi_fakekey $KEY_MACRO &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I have no idea how this actually corresponds to which xevent is generated, so I can find out out by running the program &amp;lt;tt&amp;gt;xev&amp;lt;/tt&amp;gt; and hitting the ThinkVantage button while the mouse is in the &amp;lt;tt&amp;gt;xev&amp;lt;/tt&amp;gt; window (remember to &amp;lt;tt&amp;gt;/etc/init.d/acpid restart&amp;lt;/tt&amp;gt; first if you just created the &amp;lt;tt&amp;gt;/etc/acpi/events/ThinkVantage&amp;lt;/tt&amp;gt; file). I get something popping up in the terminal where I ran xev that looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KeyPress event, serial 30, synthetic NO, window 0x2800001,&lt;br /&gt;
    root 0x6a, subw 0x0, time 2000522842, (138,83), root:(781,500),&lt;br /&gt;
    state 0x0, keycode 239 (keysym 0x0, NoSymbol), same_screen YES,&lt;br /&gt;
    XLookupString gives 0 bytes: &lt;br /&gt;
    XmbLookupString gives 0 bytes: &lt;br /&gt;
    XFilterEvent returns: False&lt;br /&gt;
&lt;br /&gt;
KeyRelease event, serial 30, synthetic NO, window 0x2800001,&lt;br /&gt;
    root 0x6a, subw 0x0, time 2000522842, (138,83), root:(781,500),&lt;br /&gt;
    state 0x0, keycode 239 (keysym 0x0, NoSymbol), same_screen YES,&lt;br /&gt;
    XLookupString gives 0 bytes: &lt;br /&gt;
    XFilterEvent returns: False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This tells me that the &amp;lt;tt&amp;gt;acpi_fakekey 112&amp;lt;/tt&amp;gt; as executed by hitting the ThinkVantage button generates KeyPress event followed by a KeyRelease event with '''keycode''' 239 and that this keycode has been assigned no corresponding '''keysym'''. Thus, I am free to assign the keycode to any keysym I want. You can find a list of available keysyms in &amp;lt;tt&amp;gt;/usr/share/X11/XKeysymDB&amp;lt;/tt&amp;gt;. Again try and pick one that is not likely to have already been taken by something, such as &amp;lt;tt&amp;gt;XF86LaunchA&amp;lt;/tt&amp;gt;. To assign this keysym to keycode 239, you can either edit ~/.Xmodmap on an individual user basis, or edit the systemwide &amp;lt;tt&amp;gt;/etc/X11/Xmodmap&amp;lt;/tt&amp;gt; file to contain the line&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
keycode 239 = XF86LaunchA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you choose to go with the former, you may need to run &amp;lt;tt&amp;gt;xmodmap ~/.Xmodmap&amp;lt;/tt&amp;gt; for every login session in order to read in your ~/.Xmodmap file if your window manager does not do it for you. Regardless of which option you choose, you can run &amp;lt;tt&amp;gt;xmodmap &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt; to read in the updated Xmodmap file without logging out and logging back in.&lt;br /&gt;
&lt;br /&gt;
You should now find that hitting the ThinkVantage button creates the following output from &amp;lt;tt&amp;gt;xev&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KeyPress event, serial 55, synthetic NO, window 0x2800001,&lt;br /&gt;
    root 0x6a, subw 0x0, time 2001286078, (0,106), root:(643,523),&lt;br /&gt;
    state 0x0, keycode 239 (keysym 0x1008ff4a, XF86LaunchA), same_screen YES,&lt;br /&gt;
    XLookupString gives 0 bytes: &lt;br /&gt;
    XmbLookupString gives 0 bytes: &lt;br /&gt;
    XFilterEvent returns: False&lt;br /&gt;
&lt;br /&gt;
KeyRelease event, serial 55, synthetic NO, window 0x2800001,&lt;br /&gt;
    root 0x6a, subw 0x0, time 2001286078, (0,106), root:(643,523),&lt;br /&gt;
    state 0x0, keycode 239 (keysym 0x1008ff4a, XF86LaunchA), same_screen YES,&lt;br /&gt;
    XLookupString gives 0 bytes: &lt;br /&gt;
    XFilterEvent returns: False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note the change of &amp;lt;tt&amp;gt;(keysym 0x0, NoSymbol)&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;(keysym 0x1008ff4a, XF86LaunchA)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You're now ready to map &amp;lt;tt&amp;gt;XF86LaunchA&amp;lt;/tt&amp;gt; to executing xmms. This is highly dependent on what keygrabber you decide to use. For openbox, I edit my &amp;lt;tt&amp;gt;~/.config/openbox/rc.xml&amp;lt;/tt&amp;gt; file and add the following entry in the  &amp;lt;keyboard&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;keybind key=&amp;quot;XF86LaunchA&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;action name=&amp;quot;Execute&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;startupnotify&amp;gt;&lt;br /&gt;
          &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
        &amp;lt;/startupnotify&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;&lt;br /&gt;
	  xmms&lt;br /&gt;
	&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/keybind&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After, right clicking on the desktop and selecting the &amp;quot;Reconfigure&amp;quot; menu option, you should then have xmms pop up when you hit the ThinkVantage key.&lt;br /&gt;
&lt;br /&gt;
==Example Applications==&lt;br /&gt;
===Web Browsers===&lt;br /&gt;
====Firefox (&amp;lt;3.0)====&lt;br /&gt;
&lt;br /&gt;
There are various ways to assign actions to the browser keys. The easiest way is to install [http://mozilla.dorando.at/keyconfig.xpi keyconfig.xpi] from http://mozilla.dorando.at, which adds a menu entry Tools-&amp;gt;Keyconfig. Then you can assign any action you want to the F19/F20 keys (you still need to create {{path|~/.Xmodmap}} as explained above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The remaining discussion gives you various more complicated ways to achieve the same thing. &lt;br /&gt;
To have firefox make use of the browser keys you need to modify one of its files{{footnote|4}}.&lt;br /&gt;
To do this you will first need to extract it from the {{path|browser.jar}} archive. Do...&lt;br /&gt;
&lt;br /&gt;
Step 1:  Edit .Xmodmap and add entries for F19 and F20 as explained above.&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;firefox-directory&amp;gt; is probably /usr/lib/firefox. Use your version so, if you have 3.0.1 or 3.0.2 use /usr/lib/firefox-3.0.1&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|cd &amp;lt;firefox-directory&amp;gt;/chrome}}&amp;lt;br /&amp;gt;&lt;br /&gt;
:{{cmdroot|unzip browser.jar}}&lt;br /&gt;
&lt;br /&gt;
The file of interest is {{path|content/browser/browser.xul}}. Edit it {and don't forget to make a backup copy first}...&lt;br /&gt;
:{{cmdroot|vi content/browser/browser.xul}}&lt;br /&gt;
&lt;br /&gt;
Look for the '''&amp;lt;keyset id=&amp;quot;mainKeyset&amp;quot;&amp;gt;''' section and add the following lines within...&lt;br /&gt;
 &amp;lt;key id=&amp;quot;goBackKb&amp;quot; keycode=&amp;quot;VK_F19&amp;quot; command=&amp;quot;Browser:Back&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;key id=&amp;quot;goForwardKb&amp;quot; keycode=&amp;quot;VK_F20&amp;quot; command=&amp;quot;Browser:Forward&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Command you need for Next Tab &lt;br /&gt;
 &amp;lt;key id=&amp;quot;goBackTabKb&amp;quot; keycode=&amp;quot;VK_F19&amp;quot; oncommand=&amp;quot;gBrowser.mTabContainer.advanceSelectedTab(-1)&amp;quot; /&amp;gt;&lt;br /&gt;
For the Previous Tab &lt;br /&gt;
 &amp;lt;key id=&amp;quot;goForwardTabKb&amp;quot; keycode=&amp;quot;VK_F20&amp;quot; oncommand=&amp;quot;gBrowser.mTabContainer.advanceSelectedTab(1)&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now save the file and repackage the {{path|browser.jar}} archive...&lt;br /&gt;
:{{cmdroot|zip -rD0 browser.jar content/browser/}}&lt;br /&gt;
&lt;br /&gt;
That's it.&lt;br /&gt;
&lt;br /&gt;
Step 3:  Restart Firefox.&lt;br /&gt;
&lt;br /&gt;
{{HINT|Outdated: Another interesting Page on Firefox is http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/ It uses different key mappings (F19 resp. F20) but a ready [http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/dqdnavkeys-1.2.xpi .xpi] is provided which is pretty comfortable. However, this xpi file does not install on Firefox 1.5. or later.}}&lt;br /&gt;
&lt;br /&gt;
{{HINT| You can also use the [http://extensionroom.mozdev.org/more-info/keyconfig keyconfig] extension to configure custom keys.  This extension works with Firefox 1.5 and also with Firefox 2.0. The Command you need for Next Tab is gBrowser.mTabContainer.advanceSelectedTab(1,true); For Previous Tab its gBrowser.mTabContainer.advanceSelectedTab(-1,true); You can alternatively install the [http://www.pqrs.org/~tekezo/firefox/extensions/functions_for_keyconfig/index.html functions for keyconfig] and set the variable f4kc_NextTab to F20 and f4kc_PrevTab to F19.}}.&lt;br /&gt;
&lt;br /&gt;
====Firefox 3.0====&lt;br /&gt;
Thankfully the people at Mozilla decided to include the expected functionality for the XF86Back and XF86Forward keysyms in the new release so all you need to do is&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# printf 'keycode 234 = XF86Back\nkeycode 233 = XF86Forward' &amp;gt;&amp;gt; /etc/X11/Xmodmap&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
And to make this take effect immediately (i.e., without having to log out and log in again), as a regular user run:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;{{cmduser|Xmodmap /etc/X11/Xmodmap}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Hardy Heron, the xmodmap command is all lowercase. Also, the /etc/X11/Xmodmap file is not being read on boot. I've added the command to my .bashrc to have it called on startup.&lt;br /&gt;
&lt;br /&gt;
====Konqueror====&lt;br /&gt;
KDE allows you set key mappings for KDE applications (Go to KMenu &amp;gt; System &amp;gt; Control Center &amp;gt; Regional &amp;amp; Accessibility &amp;gt; Keyboard Shortcuts). By default (at least in KDE 3.5), XF86Back and XF86Forward are set as alternatives to Alt-Left and Alt-Right, and are mapped to KDE Back and Forward navigation actions.  &lt;br /&gt;
&lt;br /&gt;
If you use Konqueror as your only browser, you only need to set up {{path|~/.Xmodmap}} as described [[#xmodmap configuration|above]] to assign ThinkPad back/forward keys to the symbols XF86Back/XF86Forward. This also make these keys work for other KDE applications such as Quanta Plus, KPackage and so on (not all KDE applications honor this setting, e.g. KDE help system doesn't).&lt;br /&gt;
&lt;br /&gt;
If you want to use Firefox, however, the above settings do not work. You will have to map ThinkPad back/forward keys to F19/F20 as described [[#Firefox|above]], and change KDE navigation key settings to use F19/F20 instead of the default.&lt;br /&gt;
&lt;br /&gt;
====Opera====&lt;br /&gt;
However this isn't a simple configration file, you can set your browser manually.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go to &amp;lt;i&amp;gt;Tool &amp;gt; Settings &amp;gt; Mouse and keyboard &amp;gt; Keyboard settings &amp;gt; Edit &amp;gt; Browser Window&amp;lt;/i&amp;gt;. There add F19 - Back and F20 - Forward. Now you can surf using your TP keys ;-)&lt;br /&gt;
&lt;br /&gt;
====Epiphany====&lt;br /&gt;
To get the keys work in epiphany, you could use the extension from [http://crashman.homelinux.org/~andre/public/epiphany%20extensions/thinkpad%20browserkeys/ here]&lt;br /&gt;
You just need to edit your Xmodmap like described for Firefox &amp;lt; 3.0 (bind the keys on F19 and F20)&lt;br /&gt;
&lt;br /&gt;
===Open an application===&lt;br /&gt;
&lt;br /&gt;
To configure the ThinkVantage button to open a terminal window in Gnome:&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
Use xev to find the keycode generated by the button on your machine.  In my case is is 159.&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
Create an entry in .Xmodmap like so&lt;br /&gt;
&lt;br /&gt;
keycode 159 = XF86LaunchA&lt;br /&gt;
&lt;br /&gt;
replacing 159 by the keycode found in step 1.  Load the map using&lt;br /&gt;
&lt;br /&gt;
:{{cmd|xmodmap ~/.Xmodmap}}&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
Configure the required function (e.g. open terminal window) in System-&amp;gt;Preferences-&amp;gt;Keyboard shortcuts&lt;br /&gt;
&lt;br /&gt;
===Window Managers===&lt;br /&gt;
====fvwm====&lt;br /&gt;
To get the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys to cycle through pages in the virtual desktop, add this to your {{path|~/.fvwmrc}}:&lt;br /&gt;
 Key    XF86Back     A      A   Scroll     -100000   0&lt;br /&gt;
 Key    XF86Forward  A      A   Scroll     +100000   0&lt;br /&gt;
If you use multiple virtual desktops, you could instead use the keys to flip between them by using GotoDesk.&lt;br /&gt;
&lt;br /&gt;
====fluxbox====&lt;br /&gt;
To get the keys to cycle through pages in the virtual desktop, add this to your {{path|~/.fluxbox/keys}}:&lt;br /&gt;
 None F19 :PrevWorkspace&lt;br /&gt;
 None F20 :NextWorkspace&lt;br /&gt;
&lt;br /&gt;
====pekwm configuration====&lt;br /&gt;
You can make the two browser keys switch workspaces in pekwm, by adding the following two lines to the {{path|~/.pekwm/keys}} file:&lt;br /&gt;
 KeyPress = &amp;quot;Mod1 XF86Back&amp;quot; { Actions = &amp;quot;GoToWorkspace prev&amp;quot; }&lt;br /&gt;
 KeyPress = &amp;quot;Mod1 XF86Forward&amp;quot; { Actions = &amp;quot;GoToWorkspace next&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
====pwm====&lt;br /&gt;
Another example how to use these two keys to switch between pwm tabs. These two lines should be added to {{path|~/.pwm/keys-default.conf}} or {{path|/etc/pwm/keys-default.conf}}:&lt;br /&gt;
 kbind &amp;quot;Back&amp;quot;, &amp;quot;switch_rot&amp;quot;, -1&lt;br /&gt;
 kbind &amp;quot;Forward&amp;quot;, &amp;quot;switch_rot&amp;quot;, 1&lt;br /&gt;
&lt;br /&gt;
====IceWM====&lt;br /&gt;
To make IceWM cycle workspaces using the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys, change these two options in {{path|~/.icewm/preferences}} (Provided you assigned keysyms F19 and F20 with xmodmap):&lt;br /&gt;
 # &amp;quot;Previous workspace&amp;quot; shortcut&lt;br /&gt;
 KeySysWorkspacePrev=&amp;quot;F19&amp;quot;&lt;br /&gt;
 # &amp;quot;Next workspace&amp;quot; shortcut&lt;br /&gt;
 KeySysWorkspaceNext=&amp;quot;F20&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Gnome/metacity ====&lt;br /&gt;
&lt;br /&gt;
Follow the [https://wiki.ubuntu.com/Keybindings Ubuntu guide].&lt;br /&gt;
&lt;br /&gt;
===Other Uses===&lt;br /&gt;
====Console tools configuraton====&lt;br /&gt;
To make the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys useful in console, add this to your keymap ({{path|/etc/console/boottime.kmap.gz}} in {{Debian}}):&lt;br /&gt;
 keycode 158 = Decr_Console&lt;br /&gt;
 keycode 159 = Incr_Console&lt;br /&gt;
&lt;br /&gt;
Alternatively you can load this script (perhaps on system startup) to enable Backward/Forward button console (VT) switch:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 echo keycode 158 = Decr_Console | loadkeys&lt;br /&gt;
 echo keycode 159 = Incr_Console | loadkeys&lt;br /&gt;
&lt;br /&gt;
It should work with any distro.&lt;br /&gt;
&lt;br /&gt;
====Cycling through tabs====&lt;br /&gt;
In Gnome and Xfce4, Ctrl-PageUp/Ctrl-PageDown move to the previous/following open tab in all applications that have tabbed user interfaces (terminal emulator, web browser, ...). To make use of the {{ibmkey|Forward|#494949}} and {{ibmkey|Backward|#494949}} keys for this task, there're two possibilities.&lt;br /&gt;
&lt;br /&gt;
For both ways, you should map the keycodes 233 and 234 to XF86Back and XF86Forward as described in [[#xmodmap_configuration|xmodmap configuration]].&lt;br /&gt;
&lt;br /&gt;
=====Using xautomation=====&lt;br /&gt;
xautomation can be found [http://hoopajoo.net/projects/xautomation.html here].&lt;br /&gt;
&lt;br /&gt;
Create two files with permissions 755:&lt;br /&gt;
&lt;br /&gt;
{{path|/usr/local/bin/tp_back}}:&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/usr/bin/xte 'keydown Control_L' 'keydown Page_Up' 'keyup Page_Up' 'keyup Control_L'&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{path|/usr/local/bin/tp_forward}}:&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/usr/bin/xte 'keydown Control_L' 'keydown Page_Down' 'keyup Page_Down' 'keyup Control_L'&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use your desktop's keyboard shortcut editor to assign XF86Back as a shortcut for tp_back and XF86Forward as a shortcut for tp_forward.&lt;br /&gt;
&lt;br /&gt;
This should work in all distros and with all window managers (you might have to use other key combinations than Ctrl-PageUp and Ctrl-PageDown).&lt;br /&gt;
&lt;br /&gt;
=====Redirecting XF86Back/XF86Forward=====&lt;br /&gt;
Create {{path|/etc/X11/xkb/compat/thinkpad}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// $XFree86$&lt;br /&gt;
//  XFree86 special keysyms&lt;br /&gt;
default partial xkb_compatibility &amp;quot;basic&amp;quot;  {&lt;br /&gt;
    interpret.repeat= True;&lt;br /&gt;
&lt;br /&gt;
    interpret  XF86Back {&lt;br /&gt;
        action = Redirect(Key=&amp;lt;PGUP&amp;gt;, modifiers=Control);&lt;br /&gt;
    };&lt;br /&gt;
    interpret  XF86Forward {&lt;br /&gt;
        action = Redirect(Key=&amp;lt;PGDN&amp;gt;, modifiers=Control);&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit {{path|/etc/X11/xkb/compat/complete}} and add &amp;lt;tt&amp;gt;'''augment &amp;quot;thinkpad&amp;quot;'''&amp;lt;/tt&amp;gt; so that it looks similar to the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// $XKeyboardConfig: xkbdesc/compat/complete,v 1.3 2005/10/17 00:42:11 svu Exp $&lt;br /&gt;
// $Xorg: complete,v 1.3 2000/08/17 19:54:34 cpqbld Exp $&lt;br /&gt;
default xkb_compatibility &amp;quot;complete&amp;quot;  {&lt;br /&gt;
    include &amp;quot;basic&amp;quot;&lt;br /&gt;
    augment &amp;quot;iso9995&amp;quot;&lt;br /&gt;
    augment &amp;quot;mousekeys&amp;quot;&lt;br /&gt;
    augment &amp;quot;accessx(full)&amp;quot;&lt;br /&gt;
    augment &amp;quot;misc&amp;quot;&lt;br /&gt;
    augment &amp;quot;xfree86&amp;quot;&lt;br /&gt;
    augment &amp;quot;level5&amp;quot;&lt;br /&gt;
    augment &amp;quot;thinkpad&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
*[http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-51537 IBMs page on configuring the ThinkPad buttons (ThinkPad, Access IBM, Mail, Search, and Home buttons) under Linux]&lt;br /&gt;
*[http://dqd.com/~mayoff/notes/thinkpad/dqdnavkeys/ Rob Mayoffs page on using IBM Keyboard Navigation Keys in Linux Mozilla and Firefox]&lt;br /&gt;
*[http://snarfed.org/space/thinkpad+keys+in+firefox Ryan Barretts blog article about using the browser keys in Firefox]&lt;br /&gt;
*[http://chaotika.org/~bluesceada/?page=soft&amp;amp;sub=thinkpad#acpibutn DennisG's help to get the ibm-acpi buttons do useful things] on a {{Z61e}} and possibly {{Z61m}}, {{Z61t}} and {{Z61p}}&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#Note that the associated functionality for Fn-F* key combinations is not consistent amongst all ThinkPads. We are maintaining [[Default meanings of special keys|a table of associated meanings]].&lt;br /&gt;
#if there are more than one tool listed, one is sufficient&lt;br /&gt;
#'full' means you can completely reassign any action to be triggered by the key, 'additional actions' means you can trigger actions in addition to the standard function of the key, which can not be changed.&lt;br /&gt;
#Thanks go to Ryan Barrett for writing the [http://snarfed.org/space/thinkpad+keys+in+firefox little howto] on [http://snarfed.org/space/start his blog].&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Thinkpad-acpi&amp;diff=41546</id>
		<title>Thinkpad-acpi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Thinkpad-acpi&amp;diff=41546"/>
		<updated>2009-02-17T21:27:07Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: suggest merge with ibm-acpi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Thinkpad-specific ACPI driver==&lt;br /&gt;
This is a Linux ACPI driver for the IBM ThinkPad laptops written by Borislav Deianov and Henrique de Moraes Holschuh. The driver replaces [[ibm-acpi]] in Linux mainline as of 2.6.22 (March 2007). To confuse matters further, it appears that there was also an older (now abandoned) driver of the same name written by Erik Rigtorp which never made it into the mainline kernel. The current thinkpad-acpi contains essentially the same functionality as [[ibm-acpi]] with some added features. Among which are registering of acpi events to the &amp;quot;thinkvantage&amp;quot; and volume/mute buttons which could previously only be accessed through the use of the [[tpb]] utility.&lt;br /&gt;
&lt;br /&gt;
==Hotkeys==&lt;br /&gt;
To view which hotkeys are active you can use &amp;quot;acpi_listen&amp;quot;, but that is deprecated.  A better way is to use &amp;quot;lsinput&amp;quot; and &amp;quot;input-events&amp;quot; commands to look at the output of the thinkpad-acpi input device(s).&lt;br /&gt;
&lt;br /&gt;
One important difference from ibm-acpi for those who wish to enable all possible hot keys, is that thinkpad-acpi automatically enables them.  One should not need to do anything to get the best possible thinkpad-acpi configuration for his ThinkPad (as long as he is using the latest thinkpad-acpi).&lt;br /&gt;
&lt;br /&gt;
In particular, old documentation that tells you to &amp;quot;echo enable,0xffffffff &amp;gt;/proc/acpi/ibm/hotkey&amp;quot;, or to give thinkpad-acpi any hotkey= module parameters to enable hot keys by default, is likely incorrect.&lt;br /&gt;
&lt;br /&gt;
The thinkpad-acpi driver has detailed documentation, which is shipped inside the Linux kernel sources, as &amp;quot;Documentation/thinkpad-acpi.txt&amp;quot; or as &amp;quot;Documentation/laptops/thinkpad-acpi.txt&amp;quot;.  If you feel a need to change the hot key mask manually, it is probably best to look at that documentation first to understand the full side effects of any changes.&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
To help with development and maintenance of the thinkpad-acpi driver, please add your model to the [[List of DMI IDs]].&lt;br /&gt;
&lt;br /&gt;
==Further documentation==&lt;br /&gt;
More comprehensive documentation can be found in the kernel source tree under &amp;lt;tt&amp;gt;Documentation/thinkpad-acpi.txt&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;Documentation/laptops/thinkpad-acpi.txt&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For now, please refer to the [[ibm-acpi]] page, or ask on the linux-thinkpad mailinglist for any other information on the new thinkpad-acpi driver.&lt;br /&gt;
&lt;br /&gt;
=== External links related to thinkpad-acpi ===&lt;br /&gt;
* [http://ibm-acpi.sf.net ibm-acpi/thinkpad-acpi main page in Sourceforge]&lt;br /&gt;
* [http://acpi.sourceforge.net Linux ACPI main page in Sourceforge], includes DSDT repository&lt;br /&gt;
* [http://www.kernel.org kernel.org main archives]&lt;br /&gt;
* [http://repo.or.cz/w/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git thinkpad-acpi development git tree]&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]]&lt;br /&gt;
[[Category:X32]]&lt;br /&gt;
[[Category:X61]]&lt;br /&gt;
&lt;br /&gt;
{{Todo|needs editing}}: consider merging with [[ibm-acpi]]&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Ibm-acpi&amp;diff=41545</id>
		<title>Ibm-acpi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Ibm-acpi&amp;diff=41545"/>
		<updated>2009-02-17T21:26:38Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: added merge suggestion&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;
=== ibm-acpi - IBM ThinkPad ACPI Extras Driver ===&lt;br /&gt;
This is a Linux ACPI driver for the IBM ThinkPad laptops written by Borislav Deianov, and currently maintained by [[User:hmh|Henrique de Moraes Holschuh]].  It aims to support various features of these laptops which are accessible through the ACPI framework but not otherwise supported by the generic Linux ACPI drivers. As a kernel module, ibm-acpi works as a bridge to deliver information about certain hardware events like key presses or control the state of certain hardware features by software.&lt;br /&gt;
{{NOTE|The ibm-acpi driver was renamed to [[thinkpad-acpi]] on Linux kernel 2.6.22}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
*triggers ACPI Events for&lt;br /&gt;
** [[How_to_get_special_keys_to_work | Fn key combinations]] ({{key|Fn}}{{key|F1}}, {{key|Fn}}{{key|F2}}, {{key|Fn}}{{key|F3}}, {{key|Fn}}{{key|F4}}, {{key|Fn}}{{key|F5}}, {{key|Fn}}{{key|F6}}, {{key|Fn}}{{key|F7}}, {{key|Fn}}{{key|F8}}, {{key|Fn}}{{key|F9}}, {{key|Fn}}{{key|F10}}, {{key|Fn}}{{key|F11}}, {{key|Fn}}{{key|F12}})&lt;br /&gt;
** [[UltraBay]] device eject (see also [[How to hotswap UltraBay devices]])&lt;br /&gt;
** Display lid, Power button, Undock button&lt;br /&gt;
*enables control via /proc files of&lt;br /&gt;
** Bluetooth&lt;br /&gt;
** Video output switching, video expansion control&lt;br /&gt;
** Docking and undocking (limited)&lt;br /&gt;
** Fan (on most models, only enable/disable; speed control used to need a further [[Patch for controlling fan speed|patch]])&lt;br /&gt;
** Volume&lt;br /&gt;
** [[LCD Brightness]]&lt;br /&gt;
** [[ThinkLight]]&lt;br /&gt;
** [[Table_of_ibm-acpi_LEDs| LEDs]]&lt;br /&gt;
** [[Error Codes and Beep Codes|Beep]] codes&lt;br /&gt;
** Several CMOS states&lt;br /&gt;
* can show values of&lt;br /&gt;
** [[Thermal Sensors|Sixteen temperature sensors]]&lt;br /&gt;
** Embedded Controler registers&lt;br /&gt;
** Fan status and speed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some of these features are available only when the module is loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; option. To enable it, add the following to {{path|/etc/modprobe.conf}} (or your distribution's equivalent):&lt;br /&gt;
 options ibm_acpi experimental=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for kernels 2.6.22 and above fan control is enabled with the following in /etc/modprobe.conf:&lt;br /&gt;
 options thinkpad_acpi fan_control=1&lt;br /&gt;
&lt;br /&gt;
=== Project Homepage / Availability ===&lt;br /&gt;
* Homepage: http://ibm-acpi.sourceforge.net/&lt;br /&gt;
* Public releases: http://sourceforge.net/project/showfiles.php?group_id=117042&lt;br /&gt;
* ibm-acpi is included with the Linux kernel since 2.6.10.&lt;br /&gt;
* Mailing list: [[Mailinglists#ibm-acpi_Developers_Mailinglist|ibm-acpi-devel]]&lt;br /&gt;
* [[Git]] repository: git://repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git ([http://repo.or.cz/w/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git browse])&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
In development, usable, actively maintained.  Patches should go to the ibm-acpi-devel [[mailinglists|mailing list]].&lt;br /&gt;
&lt;br /&gt;
On older versions of the driver, even if you have disabled the BIOS setting for automatically dimming at battery power, after using the brightness switch of ibm-acpi, the auto-dimming behavior is enabled.  This has been fixed in the latest thinkpad-acpi devel/backport versions and also kernel 2.6.26.&lt;br /&gt;
&lt;br /&gt;
=== Application support===&lt;br /&gt;
* [http://www.gkrellm.net GKrellM] supports fan and thermal information&lt;br /&gt;
* [http://conky.sourceforge.net/ Conky] Displays the same information as GKrellM but displays it differently&lt;br /&gt;
* [http://www.joachim-breitner.de/blog/archives/38-Created-gaim-thinklight.html gaim-thinklight] is a gaim plugin which makes the [[ThinkLight]] blink when a message arrives.&lt;br /&gt;
* [http://packages.debian.org/unstable/net/pidgin-blinklight pidgin-thinklight] same as above but for pidgin&lt;br /&gt;
* [http://www.chris-lamb.co.uk/code/gaim-lightthink/ gaim-lightthink] is an alternative to gaim-thinklight.&lt;br /&gt;
* [http://hunz.org/ rocklight] is a xmms visualization plugin that makes the ThinkLight flash to the beat of your music. The package also includes a standalone stroboscope mode program.&lt;br /&gt;
* [http://sensors-applet.sourceforge.net/ GNOME Sensors Applet] is a small gnome panel applet which shows the fan speed and thermal information. In Debian it's the [http://packages.debian.org/search?keywords=sensors-applet&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all sensors-applet] package.&lt;br /&gt;
* [[ACPI fan control script|ACPI fan control scripts]] can be used to control the system fan according to system temperatures (overriding the firmware)&lt;br /&gt;
&lt;br /&gt;
=== Interesting links related to this project ===&lt;br /&gt;
* [http://ibm-acpi.sf.net ibm-acpi Sourceforge project summary]&lt;br /&gt;
* [https://lists.sourceforge.net/lists/listinfo/ibm-acpi-devel ibm-acpi-devel Mailinglist] [http://gmane.org/info.php?group=gmane.linux.acpi.ibm-acpi.devel (List archive on gmane.org)]&lt;br /&gt;
* [http://mailman.linux-thinkpad.org/mailman/listinfo/linux-thinkpad Linux-Thinkpad Mailinglist]&lt;br /&gt;
* [http://acpi.sourceforge.net acpi.sourceforge.net]&lt;br /&gt;
* [http://www.kernel.org www.kernel.org]&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]]&lt;br /&gt;
[[Category:770X]] [[Category:770Z]] [[Category:A20m]] [[Category:A20p]] [[Category:A20m]] [[Category:A20p]] [[Category:A21e]] [[Category:A21m]] [[Category:A21p]] [[Category:A22e]] [[Category:A22m]] [[Category:A22p]] [[Category:G40]] [[Category:G41]] [[Category:R30]] [[Category:R31]] [[Category:R32]] [[Category:R40]] [[Category:R40e]] [[Category:R50]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[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:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:TransNote]] &lt;br /&gt;
[[Category:x60s]] [[Category:X61]]&lt;br /&gt;
&lt;br /&gt;
{{Todo|needs editing}}: consider merging with [[Thinkpad-acpi]]&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Thinkpad-acpi&amp;diff=41544</id>
		<title>Thinkpad-acpi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Thinkpad-acpi&amp;diff=41544"/>
		<updated>2009-02-17T21:12:10Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: added category X32&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Thinkpad-specific ACPI driver==&lt;br /&gt;
This is a Linux ACPI driver for the IBM ThinkPad laptops written by Borislav Deianov and Henrique de Moraes Holschuh. The driver replaces [[ibm-acpi]] in Linux mainline as of 2.6.22 (March 2007). To confuse matters further, it appears that there was also an older (now abandoned) driver of the same name written by Erik Rigtorp which never made it into the mainline kernel. The current thinkpad-acpi contains essentially the same functionality as [[ibm-acpi]] with some added features. Among which are registering of acpi events to the &amp;quot;thinkvantage&amp;quot; and volume/mute buttons which could previously only be accessed through the use of the [[tpb]] utility.&lt;br /&gt;
&lt;br /&gt;
==Hotkeys==&lt;br /&gt;
To view which hotkeys are active you can use &amp;quot;acpi_listen&amp;quot;, but that is deprecated.  A better way is to use &amp;quot;lsinput&amp;quot; and &amp;quot;input-events&amp;quot; commands to look at the output of the thinkpad-acpi input device(s).&lt;br /&gt;
&lt;br /&gt;
One important difference from ibm-acpi for those who wish to enable all possible hot keys, is that thinkpad-acpi automatically enables them.  One should not need to do anything to get the best possible thinkpad-acpi configuration for his ThinkPad (as long as he is using the latest thinkpad-acpi).&lt;br /&gt;
&lt;br /&gt;
In particular, old documentation that tells you to &amp;quot;echo enable,0xffffffff &amp;gt;/proc/acpi/ibm/hotkey&amp;quot;, or to give thinkpad-acpi any hotkey= module parameters to enable hot keys by default, is likely incorrect.&lt;br /&gt;
&lt;br /&gt;
The thinkpad-acpi driver has detailed documentation, which is shipped inside the Linux kernel sources, as &amp;quot;Documentation/thinkpad-acpi.txt&amp;quot; or as &amp;quot;Documentation/laptops/thinkpad-acpi.txt&amp;quot;.  If you feel a need to change the hot key mask manually, it is probably best to look at that documentation first to understand the full side effects of any changes.&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
To help with development and maintenance of the thinkpad-acpi driver, please add your model to the [[List of DMI IDs]].&lt;br /&gt;
&lt;br /&gt;
==Further documentation==&lt;br /&gt;
More comprehensive documentation can be found in the kernel source tree under &amp;lt;tt&amp;gt;Documentation/thinkpad-acpi.txt&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;Documentation/laptops/thinkpad-acpi.txt&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For now, please refer to the [[ibm-acpi]] page, or ask on the linux-thinkpad mailinglist for any other information on the new thinkpad-acpi driver.&lt;br /&gt;
&lt;br /&gt;
=== External links related to thinkpad-acpi ===&lt;br /&gt;
* [http://ibm-acpi.sf.net ibm-acpi/thinkpad-acpi main page in Sourceforge]&lt;br /&gt;
* [http://acpi.sourceforge.net Linux ACPI main page in Sourceforge], includes DSDT repository&lt;br /&gt;
* [http://www.kernel.org kernel.org main archives]&lt;br /&gt;
* [http://repo.or.cz/w/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git thinkpad-acpi development git tree]&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]]&lt;br /&gt;
[[Category:X32]]&lt;br /&gt;
[[Category:X61]]&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Ibm-acpi&amp;diff=41543</id>
		<title>Ibm-acpi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Ibm-acpi&amp;diff=41543"/>
		<updated>2009-02-17T21:06:47Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Features */ fan speed control has been merged&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;
=== ibm-acpi - IBM ThinkPad ACPI Extras Driver ===&lt;br /&gt;
This is a Linux ACPI driver for the IBM ThinkPad laptops written by Borislav Deianov, and currently maintained by [[User:hmh|Henrique de Moraes Holschuh]].  It aims to support various features of these laptops which are accessible through the ACPI framework but not otherwise supported by the generic Linux ACPI drivers. As a kernel module, ibm-acpi works as a bridge to deliver information about certain hardware events like key presses or control the state of certain hardware features by software.&lt;br /&gt;
{{NOTE|The ibm-acpi driver was renamed to [[thinkpad-acpi]] on Linux kernel 2.6.22}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
*triggers ACPI Events for&lt;br /&gt;
** [[How_to_get_special_keys_to_work | Fn key combinations]] ({{key|Fn}}{{key|F1}}, {{key|Fn}}{{key|F2}}, {{key|Fn}}{{key|F3}}, {{key|Fn}}{{key|F4}}, {{key|Fn}}{{key|F5}}, {{key|Fn}}{{key|F6}}, {{key|Fn}}{{key|F7}}, {{key|Fn}}{{key|F8}}, {{key|Fn}}{{key|F9}}, {{key|Fn}}{{key|F10}}, {{key|Fn}}{{key|F11}}, {{key|Fn}}{{key|F12}})&lt;br /&gt;
** [[UltraBay]] device eject (see also [[How to hotswap UltraBay devices]])&lt;br /&gt;
** Display lid, Power button, Undock button&lt;br /&gt;
*enables control via /proc files of&lt;br /&gt;
** Bluetooth&lt;br /&gt;
** Video output switching, video expansion control&lt;br /&gt;
** Docking and undocking (limited)&lt;br /&gt;
** Fan (on most models, only enable/disable; speed control used to need a further [[Patch for controlling fan speed|patch]])&lt;br /&gt;
** Volume&lt;br /&gt;
** [[LCD Brightness]]&lt;br /&gt;
** [[ThinkLight]]&lt;br /&gt;
** [[Table_of_ibm-acpi_LEDs| LEDs]]&lt;br /&gt;
** [[Error Codes and Beep Codes|Beep]] codes&lt;br /&gt;
** Several CMOS states&lt;br /&gt;
* can show values of&lt;br /&gt;
** [[Thermal Sensors|Sixteen temperature sensors]]&lt;br /&gt;
** Embedded Controler registers&lt;br /&gt;
** Fan status and speed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some of these features are available only when the module is loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; option. To enable it, add the following to {{path|/etc/modprobe.conf}} (or your distribution's equivalent):&lt;br /&gt;
 options ibm_acpi experimental=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for kernels 2.6.22 and above fan control is enabled with the following in /etc/modprobe.conf:&lt;br /&gt;
 options thinkpad_acpi fan_control=1&lt;br /&gt;
&lt;br /&gt;
=== Project Homepage / Availability ===&lt;br /&gt;
* Homepage: http://ibm-acpi.sourceforge.net/&lt;br /&gt;
* Public releases: http://sourceforge.net/project/showfiles.php?group_id=117042&lt;br /&gt;
* ibm-acpi is included with the Linux kernel since 2.6.10.&lt;br /&gt;
* Mailing list: [[Mailinglists#ibm-acpi_Developers_Mailinglist|ibm-acpi-devel]]&lt;br /&gt;
* [[Git]] repository: git://repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git ([http://repo.or.cz/w/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git browse])&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
In development, usable, actively maintained.  Patches should go to the ibm-acpi-devel [[mailinglists|mailing list]].&lt;br /&gt;
&lt;br /&gt;
On older versions of the driver, even if you have disabled the BIOS setting for automatically dimming at battery power, after using the brightness switch of ibm-acpi, the auto-dimming behavior is enabled.  This has been fixed in the latest thinkpad-acpi devel/backport versions and also kernel 2.6.26.&lt;br /&gt;
&lt;br /&gt;
=== Application support===&lt;br /&gt;
* [http://www.gkrellm.net GKrellM] supports fan and thermal information&lt;br /&gt;
* [http://conky.sourceforge.net/ Conky] Displays the same information as GKrellM but displays it differently&lt;br /&gt;
* [http://www.joachim-breitner.de/blog/archives/38-Created-gaim-thinklight.html gaim-thinklight] is a gaim plugin which makes the [[ThinkLight]] blink when a message arrives.&lt;br /&gt;
* [http://packages.debian.org/unstable/net/pidgin-blinklight pidgin-thinklight] same as above but for pidgin&lt;br /&gt;
* [http://www.chris-lamb.co.uk/code/gaim-lightthink/ gaim-lightthink] is an alternative to gaim-thinklight.&lt;br /&gt;
* [http://hunz.org/ rocklight] is a xmms visualization plugin that makes the ThinkLight flash to the beat of your music. The package also includes a standalone stroboscope mode program.&lt;br /&gt;
* [http://sensors-applet.sourceforge.net/ GNOME Sensors Applet] is a small gnome panel applet which shows the fan speed and thermal information. In Debian it's the [http://packages.debian.org/search?keywords=sensors-applet&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all sensors-applet] package.&lt;br /&gt;
* [[ACPI fan control script|ACPI fan control scripts]] can be used to control the system fan according to system temperatures (overriding the firmware)&lt;br /&gt;
&lt;br /&gt;
=== Interesting links related to this project ===&lt;br /&gt;
* [http://ibm-acpi.sf.net ibm-acpi Sourceforge project summary]&lt;br /&gt;
* [https://lists.sourceforge.net/lists/listinfo/ibm-acpi-devel ibm-acpi-devel Mailinglist] [http://gmane.org/info.php?group=gmane.linux.acpi.ibm-acpi.devel (List archive on gmane.org)]&lt;br /&gt;
* [http://mailman.linux-thinkpad.org/mailman/listinfo/linux-thinkpad Linux-Thinkpad Mailinglist]&lt;br /&gt;
* [http://acpi.sourceforge.net acpi.sourceforge.net]&lt;br /&gt;
* [http://www.kernel.org www.kernel.org]&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]]&lt;br /&gt;
[[Category:770X]] [[Category:770Z]] [[Category:A20m]] [[Category:A20p]] [[Category:A20m]] [[Category:A20p]] [[Category:A21e]] [[Category:A21m]] [[Category:A21p]] [[Category:A22e]] [[Category:A22m]] [[Category:A22p]] [[Category:G40]] [[Category:G41]] [[Category:R30]] [[Category:R31]] [[Category:R32]] [[Category:R40]] [[Category:R40e]] [[Category:R50]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[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:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:TransNote]] &lt;br /&gt;
[[Category:x60s]] [[Category:X61]]&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Ibm-acpi&amp;diff=41542</id>
		<title>Ibm-acpi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Ibm-acpi&amp;diff=41542"/>
		<updated>2009-02-17T21:01:11Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: added category X32&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;
=== ibm-acpi - IBM ThinkPad ACPI Extras Driver ===&lt;br /&gt;
This is a Linux ACPI driver for the IBM ThinkPad laptops written by Borislav Deianov, and currently maintained by [[User:hmh|Henrique de Moraes Holschuh]].  It aims to support various features of these laptops which are accessible through the ACPI framework but not otherwise supported by the generic Linux ACPI drivers. As a kernel module, ibm-acpi works as a bridge to deliver information about certain hardware events like key presses or control the state of certain hardware features by software.&lt;br /&gt;
{{NOTE|The ibm-acpi driver was renamed to [[thinkpad-acpi]] on Linux kernel 2.6.22}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
*triggers ACPI Events for&lt;br /&gt;
** [[How_to_get_special_keys_to_work | Fn key combinations]] ({{key|Fn}}{{key|F1}}, {{key|Fn}}{{key|F2}}, {{key|Fn}}{{key|F3}}, {{key|Fn}}{{key|F4}}, {{key|Fn}}{{key|F5}}, {{key|Fn}}{{key|F6}}, {{key|Fn}}{{key|F7}}, {{key|Fn}}{{key|F8}}, {{key|Fn}}{{key|F9}}, {{key|Fn}}{{key|F10}}, {{key|Fn}}{{key|F11}}, {{key|Fn}}{{key|F12}})&lt;br /&gt;
** [[UltraBay]] device eject (see also [[How to hotswap UltraBay devices]])&lt;br /&gt;
** Display lid, Power button, Undock button&lt;br /&gt;
*enables control via /proc files of&lt;br /&gt;
** Bluetooth&lt;br /&gt;
** Video output switching, video expansion control&lt;br /&gt;
** Docking and undocking (limited)&lt;br /&gt;
** Fan (on most models, only enable/disable; speed control is added by a further [[Patch for controlling fan speed|patch]])&lt;br /&gt;
** Volume&lt;br /&gt;
** [[LCD Brightness]]&lt;br /&gt;
** [[ThinkLight]]&lt;br /&gt;
** [[Table_of_ibm-acpi_LEDs| LEDs]]&lt;br /&gt;
** [[Error Codes and Beep Codes|Beep]] codes&lt;br /&gt;
** Several CMOS states&lt;br /&gt;
* can show values of&lt;br /&gt;
** [[Thermal Sensors|Sixteen temperature sensors]]&lt;br /&gt;
** Embedded Controler registers&lt;br /&gt;
** Fan status and speed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some of these features are available only when the module is loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; option. To enable it, add the following to {{path|/etc/modprobe.conf}} (or your distribution's equivalent):&lt;br /&gt;
 options ibm_acpi experimental=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for kernels 2.6.22 and above fan control is enabled with the following in /etc/modprobe.conf:&lt;br /&gt;
 options thinkpad_acpi fan_control=1&lt;br /&gt;
&lt;br /&gt;
=== Project Homepage / Availability ===&lt;br /&gt;
* Homepage: http://ibm-acpi.sourceforge.net/&lt;br /&gt;
* Public releases: http://sourceforge.net/project/showfiles.php?group_id=117042&lt;br /&gt;
* ibm-acpi is included with the Linux kernel since 2.6.10.&lt;br /&gt;
* Mailing list: [[Mailinglists#ibm-acpi_Developers_Mailinglist|ibm-acpi-devel]]&lt;br /&gt;
* [[Git]] repository: git://repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git ([http://repo.or.cz/w/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git browse])&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
In development, usable, actively maintained.  Patches should go to the ibm-acpi-devel [[mailinglists|mailing list]].&lt;br /&gt;
&lt;br /&gt;
On older versions of the driver, even if you have disabled the BIOS setting for automatically dimming at battery power, after using the brightness switch of ibm-acpi, the auto-dimming behavior is enabled.  This has been fixed in the latest thinkpad-acpi devel/backport versions and also kernel 2.6.26.&lt;br /&gt;
&lt;br /&gt;
=== Application support===&lt;br /&gt;
* [http://www.gkrellm.net GKrellM] supports fan and thermal information&lt;br /&gt;
* [http://conky.sourceforge.net/ Conky] Displays the same information as GKrellM but displays it differently&lt;br /&gt;
* [http://www.joachim-breitner.de/blog/archives/38-Created-gaim-thinklight.html gaim-thinklight] is a gaim plugin which makes the [[ThinkLight]] blink when a message arrives.&lt;br /&gt;
* [http://packages.debian.org/unstable/net/pidgin-blinklight pidgin-thinklight] same as above but for pidgin&lt;br /&gt;
* [http://www.chris-lamb.co.uk/code/gaim-lightthink/ gaim-lightthink] is an alternative to gaim-thinklight.&lt;br /&gt;
* [http://hunz.org/ rocklight] is a xmms visualization plugin that makes the ThinkLight flash to the beat of your music. The package also includes a standalone stroboscope mode program.&lt;br /&gt;
* [http://sensors-applet.sourceforge.net/ GNOME Sensors Applet] is a small gnome panel applet which shows the fan speed and thermal information. In Debian it's the [http://packages.debian.org/search?keywords=sensors-applet&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all sensors-applet] package.&lt;br /&gt;
* [[ACPI fan control script|ACPI fan control scripts]] can be used to control the system fan according to system temperatures (overriding the firmware)&lt;br /&gt;
&lt;br /&gt;
=== Interesting links related to this project ===&lt;br /&gt;
* [http://ibm-acpi.sf.net ibm-acpi Sourceforge project summary]&lt;br /&gt;
* [https://lists.sourceforge.net/lists/listinfo/ibm-acpi-devel ibm-acpi-devel Mailinglist] [http://gmane.org/info.php?group=gmane.linux.acpi.ibm-acpi.devel (List archive on gmane.org)]&lt;br /&gt;
* [http://mailman.linux-thinkpad.org/mailman/listinfo/linux-thinkpad Linux-Thinkpad Mailinglist]&lt;br /&gt;
* [http://acpi.sourceforge.net acpi.sourceforge.net]&lt;br /&gt;
* [http://www.kernel.org www.kernel.org]&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]]&lt;br /&gt;
[[Category:770X]] [[Category:770Z]] [[Category:A20m]] [[Category:A20p]] [[Category:A20m]] [[Category:A20p]] [[Category:A21e]] [[Category:A21m]] [[Category:A21p]] [[Category:A22e]] [[Category:A22m]] [[Category:A22p]] [[Category:G40]] [[Category:G41]] [[Category:R30]] [[Category:R31]] [[Category:R32]] [[Category:R40]] [[Category:R40e]] [[Category:R50]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[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:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:TransNote]] &lt;br /&gt;
[[Category:x60s]] [[Category:X61]]&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Swsusp&amp;diff=41540</id>
		<title>Swsusp</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Swsusp&amp;diff=41540"/>
		<updated>2009-02-17T20:58:25Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: /* Model-specific Status */  added X32 on Debian Lenny&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;
===Software Suspend - swsusp===&lt;br /&gt;
Software Suspend (&amp;lt;tt&amp;gt;swsusp&amp;lt;/tt&amp;gt;) is a suspend-to-disk implementation included in the 2.6 kernel series. See [[Software Suspend 2]] for an alternative implementation, which has some advantages.&lt;br /&gt;
&lt;br /&gt;
Note that swsusp is not needed for suspend-to-RAM functionality.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kernel configuration==&lt;br /&gt;
To enable software suspend change your kernel config as follows:&lt;br /&gt;
:{{kernelconf|CONFIG_PM|&amp;lt;*&amp;gt;|Power management support|Power management options|||}}&lt;br /&gt;
:{{kernelconf|CONFIG_SOFTWARE_SUSPEND|&amp;lt;*&amp;gt;|Software Suspend|Power management options|||}}&lt;br /&gt;
:{{kernelconf|CONFIG_PM_STD_PARTITION|[/dev/resume_partition]|Default resume partition|Power management options|||}}&lt;br /&gt;
&amp;lt;tt&amp;gt;/dev/resume_partition&amp;lt;/tt&amp;gt; needs to be replaced by the swap partition you want to use for suspending. (Use {{cmdroot|fdisk -l /dev/hda}} if unsure.) &lt;br /&gt;
&lt;br /&gt;
You can override the default resume partition anytime by giving {{bootparm|resume|/dev/resume_partition}} as kernel boot parameter.&lt;br /&gt;
Also, in case you suspended, but want to boot up normally (without resuming from the saved image - losing all data that was unsaved at suspend time), you can give the {{bootparm|noresume|}} kernel boot parameter.&lt;br /&gt;
&lt;br /&gt;
{{NOTE|For some people suspending did not work if &amp;lt;tt&amp;gt;resume_partition&amp;lt;/tt&amp;gt; was specified in the kernel config. In such case specify the resume partition as a kernel parameter instead.}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|When using Debian Etch or Sid, you need to use &amp;lt;tt&amp;gt;initramfs-tools&amp;lt;/tt&amp;gt; as yaird is currently (2006-05-18) not supporting swsusp. See [http://wiki.debian.org/InitrdReplacementOptions the Debian Wiki] for more details.}}&lt;br /&gt;
&lt;br /&gt;
==Suspending==&lt;br /&gt;
To suspend you can either do a simple {{cmdroot|echo disk &amp;gt; /sys/power/state}} (recommended) or use the [http://softwaresuspend.berlios.de/old-site/swsusp/sysvinit-2.76-v2-for_swsusp-v5.tar.gz patched SysVInit] and call {{cmdroot|swsusp}} or {{cmdroot|shutdown -z now}}. As the {{path|/proc/acpi/sleep}} interface becomes deprecated in newer kernels you should NOT use the old {{cmdroot|echo -n 4 &amp;gt; /proc/acpi/sleep}} anymore.&lt;br /&gt;
&lt;br /&gt;
Ideally, you would do this from a script like {{path|/etc/acpi/actions/hibernate.sh}}. It has proven to be a good idea to shutdown the following processes/drivers within the script before you do the actual suspend:&lt;br /&gt;
*any running mysql server&lt;br /&gt;
*the linuxant driver may require to be stopped as well ({{cmdroot|dldrstop}} does the trick).&lt;br /&gt;
&lt;br /&gt;
Afterwards you might want to enable them again, as well as run a script that does necessary configurations according to the ac power state.&lt;br /&gt;
Furthermore, the system clock is not readjusted automatically, so you will probably also want the do that from that script (i.e. by restarting your systemclock bootup script).&lt;br /&gt;
&lt;br /&gt;
If the sound output is silent after resume, the following commands might help to get sound to work again without reloading any modules:&lt;br /&gt;
 amixer set Master mute &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 amixer set PCM mute &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 amixer set Master unmute &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 amixer set PCM unmute &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
==S5 vs. S4 state==&lt;br /&gt;
Finally you should take note that swsusp does not set the ACPI S4 state. Instead it goes to S5. This means that the machine itself doesn't know that it was suspend rather than shutdown. Hence you can i.e. boot a parallel installed other operating system and resume your linux session later, as long as you don't touch the swap partition the image was saved to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Model-specific Status==&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;border:1px; background:grey;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#efefef;&amp;quot;| Thinkpad Model &lt;br /&gt;
! style=&amp;quot;background:#efefef;&amp;quot;| Type &lt;br /&gt;
! style=&amp;quot;background:#efefef;&amp;quot;| Operating System &lt;br /&gt;
! style=&amp;quot;background:#efefef;&amp;quot;| Kernel Version&lt;br /&gt;
! style=&amp;quot;background:#efefef;&amp;quot;| swsusp works&lt;br /&gt;
! style=&amp;quot;background:#efefef;&amp;quot;| Note&lt;br /&gt;
|- style=&amp;quot;background: white;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
|{{X60}}&lt;br /&gt;
| 1706-BM7&lt;br /&gt;
| [Own Distro]&lt;br /&gt;
| 2.6.20&lt;br /&gt;
! style =&amp;quot;color:green;&amp;quot;| yes&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
|{{X60s}}&lt;br /&gt;
| 1702-55G &lt;br /&gt;
| Arch Linux&lt;br /&gt;
| 2.6.20&lt;br /&gt;
! style =&amp;quot;color:green;&amp;quot;| yes&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
|{{X60s}}&lt;br /&gt;
| 1702-5FG &lt;br /&gt;
| [[:Category:Debian|Debian Etch]]&lt;br /&gt;
| 2.6.18 with [[User:Profilek | Forest Zhao's AHCI patches]]&lt;br /&gt;
! style =&amp;quot;color:green;&amp;quot;| yes&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
|{{X60s}}&lt;br /&gt;
| 1702-5FG &lt;br /&gt;
| [[:Category:Debian|Debian Etch]]&lt;br /&gt;
| 2.6.19.2&lt;br /&gt;
! style =&amp;quot;color:green;&amp;quot;| yes&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
|{{X31}}&lt;br /&gt;
| 2672-BCO &lt;br /&gt;
| [[:Category:Debian|Debian Etch]]&lt;br /&gt;
| 2.6.20.1&lt;br /&gt;
! style =&amp;quot;color:green;&amp;quot;| yes&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
|{{X32}}&lt;br /&gt;
| 2673 &lt;br /&gt;
| [[:Category:Debian|Debian Lenny]]&lt;br /&gt;
| 2.6.26&lt;br /&gt;
! style =&amp;quot;color:green;&amp;quot;| yes&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|{{R52}}&lt;br /&gt;
| 18299MG&lt;br /&gt;
| [[:Category:Debian|Debian Sarge]]&lt;br /&gt;
| 2.6.17.9&lt;br /&gt;
! style =&amp;quot;color:green;&amp;quot;| yes&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|{{T30}}&lt;br /&gt;
| 2366&lt;br /&gt;
| [[:Category:Slackware|Slackware 12 ]]&lt;br /&gt;
| 2.6.24.3&lt;br /&gt;
! style =&amp;quot;color:green;&amp;quot;| yes&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|{{T43}}&lt;br /&gt;
| 2668-74G&lt;br /&gt;
| [[:Category:Fedora|Fedora Core 6]]&lt;br /&gt;
| 2.6.19&lt;br /&gt;
! style =&amp;quot;color:green;&amp;quot;| yes&lt;br /&gt;
|  &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
|{{T43}}&lt;br /&gt;
| 2668-74G&lt;br /&gt;
| [[:Category:Gentoo|Gentoo]]&lt;br /&gt;
| 2.6.20.7&lt;br /&gt;
! style =&amp;quot;color:green;&amp;quot;| yes&lt;br /&gt;
|  &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
|{{T60}}&lt;br /&gt;
| 1953-E7U&lt;br /&gt;
| [[:Category:Slackware|Slackware 11]]&lt;br /&gt;
| 2.6.20&lt;br /&gt;
! style=&amp;quot;color:green;&amp;quot; | yes&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;br /&gt;
|{{X40}}&lt;br /&gt;
| 2386-H6G&lt;br /&gt;
| [[:Category:Ubuntu|Ubuntu]]&lt;br /&gt;
| 2.6.20&lt;br /&gt;
! style=&amp;quot;color:green;&amp;quot; | yes&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;background: white; color:black;&amp;quot;&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Xorg_RandR_1.2&amp;diff=41539</id>
		<title>Xorg RandR 1.2</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Xorg_RandR_1.2&amp;diff=41539"/>
		<updated>2009-02-17T20:42:18Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: fixed heading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
'''X RandR '''is used to configure which display ports are enabled (e.g. LCD, VGA and DVI), and to configure display modes and properties such as orientation, reflection and DPI.&lt;br /&gt;
&lt;br /&gt;
This is the simplest and most powerful way to get multi-monitor systems working using recent versions of Linux such as {{Ubuntu 7.10}} and Fedora 8 with graphics chipsets such as the Intel 945GM/GMS and ATI Radeon found in Thinkpads.&lt;br /&gt;
&lt;br /&gt;
'''xrandr''' is the command line interface to the RandR X extension. As usual with X, good documentation is hard to find; first try the following commands:&lt;br /&gt;
&lt;br /&gt;
* {{cmduser|xrandr --help}}&lt;br /&gt;
* {{cmduser|man xrandr}}&lt;br /&gt;
&lt;br /&gt;
* for Intel graphics: {{cmduser|man intel}}&lt;br /&gt;
* for ATI graphics: {{cmduser|man radeon}}&lt;br /&gt;
&lt;br /&gt;
The rest of this page refers to a laptop with a built in 1024x768 pixel screen and an external 1600x1200 VGA monitor. Simply replace the relevant numbers with your own system specifications and all should work fine.&lt;br /&gt;
&lt;br /&gt;
== Supported drivers ==&lt;br /&gt;
 {{Ubuntu 7.10}} '''Gutsy Gibbon'''&lt;br /&gt;
* X.org [[intel]] driver, version ??? (included in Xorg ???) and later. Ubuntu version: [https://launchpad.net/ubuntu/+source/xserver-xorg-video-intel/2:2.1.1-0ubuntu2  2:2.1.1-0ubuntu2] with [https://launchpad.net/ubuntu/gutsy/i386/xrandr/1:1.2.2-0ubuntu1 xrandr 1:1.2.2-0ubuntu1]&lt;br /&gt;
&lt;br /&gt;
* X.org [[radeon]] driver, 6.7.192 and later (in ubuntu [http://packages.ubuntu.com/gutsy/x11/xserver-xorg-video-ati gutsy] and [http://packages.ubuntu.com/hardy/x11/xserver-xorg-video-ati hardy], but they still have [http://bugs.launchpad.net/bugs/148408 very serious issues] for some Thinkpads).&lt;br /&gt;
&lt;br /&gt;
== xorg.conf ==&lt;br /&gt;
Recent versions of xorg.conf intended for use with xrandr 1.2 considerably simplify the video section of the configuration. If you upgrading from an earlier version you may find your existing xorg.conf works against the effective deployment of xrandr. So it is best to start with a new Xorg configuration.&lt;br /&gt;
&lt;br /&gt;
'''An updated Xorg.conf should:'''&lt;br /&gt;
* omit dual Device/Screen/Monitor sections&lt;br /&gt;
* omit MonitorLayout option and Screen lines from the remaining Device section&lt;br /&gt;
* omit dual Screen lines from the ServerLayout section&lt;br /&gt;
* omit RightOf/LeftOf indication to the remaining Screen line in ServerLayout section&lt;br /&gt;
* add a &amp;quot;Virtual 2048 2048&amp;quot; line in SubSection &amp;quot;Display&amp;quot; to create a large virtual screen &lt;br /&gt;
&lt;br /&gt;
To create a new xorg.conf for Ubuntu and other Debian based distributions, connect the external display to the VGA port, turn on that display, and run&lt;br /&gt;
    {{cmduser|sudo dpkg-reconfigure -phigh xserver-xorg}}&lt;br /&gt;
 &lt;br /&gt;
The resulting {{path|/etc/X11/xorg.conf}} should include something like&lt;br /&gt;
&lt;br /&gt;
    Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier	&amp;quot;Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller&amp;quot;&lt;br /&gt;
        Driver		&amp;quot;intel&amp;quot;&lt;br /&gt;
        BusID		&amp;quot;PCI:0:2:0&amp;quot;&lt;br /&gt;
        '''# ADD THIS IF YOUR LAPTOP DOES NOT HAVE A TV CONNECTOR or DOCKING STATION '''&lt;br /&gt;
        '''Option          &amp;quot;monitor-TV&amp;quot;   &amp;quot;TV&amp;quot; '''&lt;br /&gt;
    EndSection&lt;br /&gt;
    Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier	&amp;quot;Generic Monitor&amp;quot;&lt;br /&gt;
        Option		&amp;quot;DPMS&amp;quot;&lt;br /&gt;
    EndSection&lt;br /&gt;
    '''# ADD THIS IF YOUR LAPTOP DOES NOT HAVE A TV CONNECTOR or DOCKING STATION '''&lt;br /&gt;
    '''Section &amp;quot;Monitor&amp;quot; '''&lt;br /&gt;
        '''Identifier      &amp;quot;TV&amp;quot; '''&lt;br /&gt;
        '''Option          &amp;quot;Ignore&amp;quot; &amp;quot;True&amp;quot; '''&lt;br /&gt;
    EndSection '''&lt;br /&gt;
    Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier	&amp;quot;Default Screen&amp;quot;&lt;br /&gt;
        Device		&amp;quot;Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller&amp;quot;&lt;br /&gt;
        Monitor		&amp;quot;Generic Monitor&amp;quot;&lt;br /&gt;
        DefaultDepth	24&lt;br /&gt;
    &lt;br /&gt;
        SubSection &amp;quot;Display&amp;quot;&lt;br /&gt;
            Depth		24&lt;br /&gt;
            Modes		&amp;quot;1600x1200&amp;quot; &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot;&lt;br /&gt;
            '''# ADD A VIRTUAL LINE TO PROVIDE FOR THE LARGEST SCREENS YOU WILL HOTPLUG '''&lt;br /&gt;
            '''Virtual              2048 2048 '''&lt;br /&gt;
        EndSubSection&lt;br /&gt;
    EndSection&lt;br /&gt;
    Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
        Identifier	&amp;quot;Default Layout&amp;quot;&lt;br /&gt;
        Screen		&amp;quot;Default Screen&amp;quot;&lt;br /&gt;
        InputDevice	&amp;quot;Generic Keyboard&amp;quot;&lt;br /&gt;
        InputDevice	&amp;quot;Configured Mouse&amp;quot;&lt;br /&gt;
        InputDevice     &amp;quot;stylus&amp;quot;	&amp;quot;SendCoreEvents&amp;quot;&lt;br /&gt;
        InputDevice     &amp;quot;cursor&amp;quot;	&amp;quot;SendCoreEvents&amp;quot;&lt;br /&gt;
        InputDevice     &amp;quot;eraser&amp;quot;	&amp;quot;SendCoreEvents&amp;quot;&lt;br /&gt;
        InputDevice	&amp;quot;Synaptics Touchpad&amp;quot;&lt;br /&gt;
    EndSection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just a hint:&lt;br /&gt;
If you want to use TV-out but not VGA for example, you should change these sections:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller&amp;quot;&lt;br /&gt;
        Driver          &amp;quot;intel&amp;quot;&lt;br /&gt;
        BusID           &amp;quot;PCI:0:2:0&amp;quot;&lt;br /&gt;
        Option          &amp;quot;monitor-VGA&amp;quot;  &amp;quot;VGA&amp;quot;&lt;br /&gt;
        Option          &amp;quot;monitor-TV&amp;quot;   &amp;quot;TV&amp;quot;&lt;br /&gt;
        Option          &amp;quot;monitor-LVCD&amp;quot; &amp;quot;LVCD&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;VGA&amp;quot;&lt;br /&gt;
        Option &amp;quot;Ignore&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;LVCD&amp;quot;&lt;br /&gt;
        Option          &amp;quot;DPMS&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;TV&amp;quot;&lt;br /&gt;
        Option  &amp;quot;Ignore&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After creating a clean {{path|xorg.conf}}, restart X and logon.&lt;br /&gt;
&lt;br /&gt;
You may find you have a display only on the external VGA screen at its default max resolution; do not worry - xrandr can fix this.&lt;br /&gt;
&lt;br /&gt;
== Using  {{cmduser|xrandr}} ==&lt;br /&gt;
&lt;br /&gt;
=== First discover what we have ===&lt;br /&gt;
Open a terminal window to use the command line: 'Applications:Accessories:Terminal'&lt;br /&gt;
&lt;br /&gt;
{{HINT|First look at the 'help' and 'man' pages. }}&lt;br /&gt;
&lt;br /&gt;
 {{cmduser|xrandr --help}}&lt;br /&gt;
 {{cmduser|man xrandr}}&lt;br /&gt;
&lt;br /&gt;
To find what version of xrandr is running, type the following command:&lt;br /&gt;
 {{cmduser| xrandr -v}}&lt;br /&gt;
    Server reports RandR version 1.2&lt;br /&gt;
&lt;br /&gt;
To query what screens are connected, type the following: (The output shown indicates nothing is connected to the VGA port.)&lt;br /&gt;
 {{cmduser| xrandr -q }}&lt;br /&gt;
 Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1920 x 1440&lt;br /&gt;
 VGA disconnected (normal left inverted right)&lt;br /&gt;
  LVDS connected 1024x768+0+0 (normal left inverted right) 304mm x 228mm&lt;br /&gt;
    1024x768       60.0*+   50.0  &lt;br /&gt;
    800x600        60.3  &lt;br /&gt;
    640x480        60.0     59.9  &lt;br /&gt;
 TV disconnected (normal left inverted right)&lt;br /&gt;
&lt;br /&gt;
If you see the 'TV disconnected' line but have neither TV connector nor docking station (eg Thinkpad R60e) then add to the Monitor and Device sections of xorg.conf as noted above. This will prevent the external (VGA) flashing off for a few seconds every time xrandr is used. (Newer versions of the intel driver may fix this.) &lt;br /&gt;
 &lt;br /&gt;
The same command as above, but with the VGA monitor plugged in and powered off, should give something like the following output: (The VGA monitor is now shown as 'connected'.)&lt;br /&gt;
 {{cmduser| xrandr -q }}&lt;br /&gt;
 Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1920 x 1440&lt;br /&gt;
 VGA connected (normal left inverted right)&lt;br /&gt;
    1920x1440@60   60.0  &lt;br /&gt;
    1920x1440      60.0  &lt;br /&gt;
    1600x1200@60   60.0  &lt;br /&gt;
    1600x1200      60.0  &lt;br /&gt;
    1280x960       60.0  &lt;br /&gt;
    640x480@60     60.0  &lt;br /&gt;
 LVDS connected 1024x768+0+0 (normal left inverted right) 304mm x 228mm&lt;br /&gt;
    1024x768       60.0*+   50.0  &lt;br /&gt;
    800x600        60.3  &lt;br /&gt;
    640x480        60.0     59.9  &lt;br /&gt;
 TV disconnected (normal left inverted right)&lt;br /&gt;
&lt;br /&gt;
Powering on the VGA monitor and issuing the same command again will give the following output: (The size and position of the VGA output within the virtual screen is now shown.)&lt;br /&gt;
 {{cmduser| xrandr -q }}&lt;br /&gt;
 Screen 0: minimum 320 x 200, current 2624 x 1200, maximum 2624 x 2048&lt;br /&gt;
 VGA connected 1600x1200+1024+0 (normal left inverted right) 367mm x 275mm&lt;br /&gt;
    1600x1200      60.0*+&lt;br /&gt;
    1920x1440@60   60.0  &lt;br /&gt;
    1600x1200@60   60.0  &lt;br /&gt;
    640x480@60     60.0  &lt;br /&gt;
    640x480        60.0  &lt;br /&gt;
 LVDS connected 1024x768+0+0 (normal left inverted right) 304mm x 228mm&lt;br /&gt;
    1024x768       60.0*+   50.0  &lt;br /&gt;
    800x600        60.3  &lt;br /&gt;
    640x480        60.0     59.9  &lt;br /&gt;
 TV disconnected (normal left inverted right)&lt;br /&gt;
&lt;br /&gt;
For bug reporting and diagnosis use xrandr with the verbose option:&lt;br /&gt;
 {{cmduser| xrandr --verbose}}&lt;br /&gt;
&lt;br /&gt;
=== Using xrandr to do useful things ===&lt;br /&gt;
In general the commands will specify the output name and either --off or --auto. In the examples here the external screen is named ''VGA'', as used by the Intel driver, with an ATI card the name will probably be ''VGA-0''. In general use {{cmduser| xrandr -q}} to discover the appropriate output names for your configuration. The --auto option will select the preferred resolution for each output, this is starred(*) in the {{cmduser| xrandr -q}} listing and is normally the best resolution available. It is also possible to set a particular mode eg --mode 1024x768.&lt;br /&gt;
&lt;br /&gt;
First clone the two screens, (the smaller screen will display the top left portion of the virtual screen)&lt;br /&gt;
 {{cmduser| xrandr --output LVDS --auto --output VGA --auto --same-as LVDS}}&lt;br /&gt;
&lt;br /&gt;
To turn off the VGA monitor. &lt;br /&gt;
 {{cmduser| xrandr  --output VGA --off }}&lt;br /&gt;
&lt;br /&gt;
To turn the VGA monitor back on, with its viewport to the right of the laptop monitor:&lt;br /&gt;
 {{cmduser| xrandr --output VGA --auto --right-of LVDS}}&lt;br /&gt;
This will probably give an error message similar to:&lt;br /&gt;
    xrandr: screen cannot be larger than 1600x1600 (desired size 2624x1200)&lt;br /&gt;
&lt;br /&gt;
This can be fixed by editing xorg.conf and changing the ''virtual'' line (see example above) to something like:&lt;br /&gt;
    Virtual 2624 1200&lt;br /&gt;
Note that the maximum supported size of the virtual desktop for the Intel 945GM series of chipset with 3D acceleration enabled, is 2048x2048. The virtual screen can be larger but DRI will be disabled. This may matter if you like games and compiz desktop effects, or if you want Google Earth to display in better than geological time. Obviously the larger the virtual desktop, the more graphics memory is used. So for good performance with a shared graphics system such as Intel the Virtual should be no larger than necessary. &lt;br /&gt;
&lt;br /&gt;
It is possible to set screen locations as ''--left-of'', ''--right-of'', ''--above'' and ''--below''. Assuming displays sizes of 1024x768 and 1200x1600:&lt;br /&gt;
 {{cmduser| xrandr --output LVDS --auto --output VGA --auto --right-of LVDS}}&lt;br /&gt;
 and&lt;br /&gt;
 {{cmduser| xrandr --output LVDS --mode 1024x768 --pos 0x0 --output VGA  --mode 1600x1200 --pos 1024x0}}&lt;br /&gt;
are equivalent. Both will place the external monitor to the right of the laptop display within the virtual screen.&lt;br /&gt;
&lt;br /&gt;
If the Virtual size is only 2048 wide the above command will fail as the combined width of the two displays exceeds the maximum virtual size. However it is possible to have overlap the display viewports. So to fit within the 2048 limit:&lt;br /&gt;
 {{cmduser| xrandr --output VGA --mode 1024x768 --pos 0x0 --output VGA  --mode 1600x1200 --pos 448x0}}&lt;br /&gt;
&lt;br /&gt;
=== Now automate it on login ===&lt;br /&gt;
To configure xrandr automatically during the first login, save this script to your computer as /etc/X11/Xsession.d/45custom_xrandr-settings:&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
# If an external monitor is connected, place it with xrandr&lt;br /&gt;
&lt;br /&gt;
# External output may be &amp;quot;VGA&amp;quot; or &amp;quot;VGA-0&amp;quot; or &amp;quot;DVI-0&amp;quot; or &amp;quot;TMDS-1&amp;quot;&lt;br /&gt;
EXTERNAL_OUTPUT=&amp;quot;VGA&amp;quot;&lt;br /&gt;
INTERNAL_OUTPUT=&amp;quot;LVDS&amp;quot;&lt;br /&gt;
# EXTERNAL_LOCATION may be one of: left, right, above, or below&lt;br /&gt;
EXTERNAL_LOCATION=&amp;quot;right&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$EXTERNAL_LOCATION&amp;quot; in&lt;br /&gt;
       left|LEFT)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--left-of $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       right|RIGHT)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--right-of $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       top|TOP|above|ABOVE)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--above $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       bottom|BOTTOM|below|BELOW)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--below $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       *)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--left-of $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
xrandr |grep $EXTERNAL_OUTPUT | grep &amp;quot; connected &amp;quot;&lt;br /&gt;
if [ $? -eq 0 ]; then&lt;br /&gt;
    xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --auto $EXTERNAL_LOCATION&lt;br /&gt;
else&lt;br /&gt;
    xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --off&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When X starts, it will be mirrored across both screens until someone logs in. At that point this script will execute and xrandr will position the external monitor.&lt;br /&gt;
&lt;br /&gt;
=== [[Sample Fn-F7 script]] ===&lt;br /&gt;
For further examples of the use of xrandr commands, and scripts to switch the display using the Function key Fn-F7 see [[Sample Fn-F7 script]].&lt;br /&gt;
&lt;br /&gt;
=== GUIs ===&lt;br /&gt;
&lt;br /&gt;
Several graphical frontends are available for xrandr (all using GTK):&lt;br /&gt;
&lt;br /&gt;
* [http://gitweb.freedesktop.org/?p=xorg/app/grandr.git Grandr]&lt;br /&gt;
* [http://www.albertomilone.com/urandr.html URandR]&lt;br /&gt;
* [http://christian.amsuess.com/tools/arandr/ ARandR]&lt;br /&gt;
* [http://sourceforge.net/projects/zarfy/ Zarfy] &amp;amp;mdash; A GUI to libxrandr. It presents the user with visual representaion of active displays on an interactive map of the screen memory. Features free postioning, configuration saving, scripting for R&amp;amp;R and an alternate gui for switching between monitors.&lt;br /&gt;
&lt;br /&gt;
It is possible to have Fn-F7 run such a GUI, see [[Sample Fn-F7 script#Having Fn-F7 run a RandR GUI]].&lt;br /&gt;
&lt;br /&gt;
== Summing up ==&lt;br /&gt;
&lt;br /&gt;
'''xrandr''' enables dynamic resizing of screens, switching both external and laptop screens on and off, and the applications windows can be dragged from one screen to the other. None of this requires configuring anything special for {{path|/etc/X11/xorg.conf}}.&lt;br /&gt;
&lt;br /&gt;
=== the Virtual screen === &lt;br /&gt;
A Virtual line is needed in the 'Display' SubSection of the of xorg.conf; it determines the size of the frame buffer into which the displays must fit. Without it the maximum virtual size will be limited to the size of the largest display that was connected when X was started. The maximum virtual size cannot be changed once X starts so needs to be large enough to accommodate the largest combination of displays you want to hotplug without having to restart X. If it is greater than 2048x2048 and you are using an Intel 945 (or less) chip then DRI is not possible. Making the Virtual size square makes rotation easy. A bigger Virtual requires more memory. &lt;br /&gt;
&lt;br /&gt;
[[Image:Intel-DualHead.png|monitor windows must fit within the virtual screen]] &lt;br /&gt;
&lt;br /&gt;
=== Output port names ===&lt;br /&gt;
&lt;br /&gt;
'''Intel driver'''&lt;br /&gt;
* '''VGA'''  -  Analog VGA output&lt;br /&gt;
* '''LVDS''' -  Laptop panel&lt;br /&gt;
* '''TV'''   -  Integrated TV output&lt;br /&gt;
* '''TMDS-1''' - First DVI SDVO output&lt;br /&gt;
* '''TMDS-2''' - Second DVI SDVO output&lt;br /&gt;
The '''SDVO''' and '''DVO TV''' outputs are not supported by the driver at this time.&lt;br /&gt;
&lt;br /&gt;
'''[[radeon]] driver '''&lt;br /&gt;
* '''VGA-0'''  - Analog VGA output&lt;br /&gt;
* '''LVDS'''   - Laptop panel&lt;br /&gt;
* '''S-video'''     - Integrated TV output&lt;br /&gt;
* '''DVI-0'''  - DVI output&lt;br /&gt;
&lt;br /&gt;
=== Note for Gnome users ===&lt;br /&gt;
Gnome places the menu bar on screen 0 and thus with the Intel chip and driver Screen 0 (the external VGA monitor) will always be the default display if it is connected. This applies even if the external monitor is switched off but the cable connected: if you have a blank laptop monitor check if you have anything plugged in to the VGA port. Also beware that desktop icons and windows can disappear into the invisible parts of the virtual display. (see diagram below).  If you want the panel(s) to appear by default on a different head, drag it to the head you want it on and GNOME will keep it there.&lt;br /&gt;
&lt;br /&gt;
=== Note for Ubuntu Gutsy users ===&lt;br /&gt;
There is a  Graphical Configuration Tool, ([https://launchpad.net/ubuntu/+source/displayconfig-gtk/0.2+20070731ubuntu1 displayconfig-gtk]) included with {{Ubuntu 7.10}}. At present [https://bugs.launchpad.net/ubuntu/+source/displayconfig-gtk it dosn't work too well].  It is found in the menu: 'System: Administration: Screens and Graphics'. As using it will wreck your xorg.conf, I recommend removing it.&lt;br /&gt;
&lt;br /&gt;
== Gleanings ==&lt;br /&gt;
=== Notes from xserver-xorg-video-intel.readme === &lt;br /&gt;
'''Known Limitations'''&lt;br /&gt;
- No support for &amp;quot;zaphod mode&amp;quot; dualhead.  This is the mode in which two&lt;br /&gt;
Device sections are placed in the config file, and doesn't support DRI or&lt;br /&gt;
many other features.  Instead, only &amp;quot;MergedFB-style&amp;quot; dualhead is supported.&lt;br /&gt;
- No support for X Screens larger than 2048 pixels in either direction&lt;br /&gt;
before the 965.  This reflects hardware limitations in the x direction on&lt;br /&gt;
those older chips, and limits dualhead functionality.  It may be possible to&lt;br /&gt;
extend the limit vertically on these older chips.&lt;br /&gt;
- i855 XV may cause hangs.  This was present in the previous release, and no&lt;br /&gt;
workaround is known.&lt;br /&gt;
- SDVO TV-out cards not supported.  This should be fixed in the next&lt;br /&gt;
release.&lt;br /&gt;
- Gray output with integrated TV-out and PAL TVs.&lt;br /&gt;
- EXA support unstable on i845.&lt;br /&gt;
- Some GM965 systems, such as the Thinkpad T61, probe the TV as being connected&lt;br /&gt;
even when no output connector is available. &lt;br /&gt;
&lt;br /&gt;
'''Common issues not caused by the driver'''&lt;br /&gt;
- Font sizes (DPI) are wrong.  Some displays incorrectly report their&lt;br /&gt;
physical size, which is harmless on most OSes that always assume 96dpi&lt;br /&gt;
displays.  This can be fixed through quirks for specific monitors in the X&lt;br /&gt;
Server, and the output of xrandr --prop along with a physical measurement of&lt;br /&gt;
the screen size in a bug report against the server can help get that fixed.&lt;br /&gt;
- gnome-panel is located in the middle of the screen.  gnome-panel places&lt;br /&gt;
itself within head #0's boundaries, which doesn't work well with a second&lt;br /&gt;
head covering the same area as head #0 but larger.&lt;br /&gt;
- Older resolution-changing applications have poor results in&lt;br /&gt;
multihead systems.  Previous extensions such as RandR 1.1 exposed only a&lt;br /&gt;
single output to client programs, and those requests map poorly to multi-head&lt;br /&gt;
systems.  Currently, those requests map to just one of the outputs in the&lt;br /&gt;
RandR 1.2 environment, and those applications need to be updated to RandR 1.2&lt;br /&gt;
API when available for better results.&lt;br /&gt;
&lt;br /&gt;
=== Xorg mailing list ===&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-June/025469.html FreeDesktop.org 2007-June 025469]&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-June/025484.html FreeDesktop.org 2007-June 025484]&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-July/026340.html FreeDesktop.org 2007-July 026340]&lt;br /&gt;
&lt;br /&gt;
the 3D engine has an 11 bit coordinate space at one point making it&lt;br /&gt;
impossible to draw to areas beyond 2048x2048. At another point, it has a&lt;br /&gt;
stride limit of 8192 bytes, so you can't even draw to a subset of a&lt;br /&gt;
larger frame buffer.&lt;br /&gt;
&lt;br /&gt;
One more bit in both of these registers would have solved the problem&lt;br /&gt;
for pretty much any supportable monitor configuration (the chip can only&lt;br /&gt;
support two single-channel DVI outputs at the most; 1920 is the widest&lt;br /&gt;
size supported at single-channel speeds).&lt;br /&gt;
&lt;br /&gt;
For multiple monitors, the driver could allocate multiple frame buffers&lt;br /&gt;
and step through them one at a time with appropriate clipping. It would&lt;br /&gt;
be icky, but could be made to work.&lt;br /&gt;
&lt;br /&gt;
Of course, the latest hardware (965G/965GM) has plenty of coordinate&lt;br /&gt;
space, which does tend to reduce the odds that someone will get excited&lt;br /&gt;
enough to go fix the driver for older chips.&lt;br /&gt;
&lt;br /&gt;
The Gnome menu bar lands on Xinerama Screen 0 at this&lt;br /&gt;
point, which isn't currently something that you can set through RandR.  On Intel the allocation to Screen 0 is determined by CRTC order and LVDS only runs on screen 1.&lt;br /&gt;
&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-June/026053.html FreeDesktop.org 2007-June 026053]&lt;br /&gt;
&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-August/027616.html Blanking of external screen when using xrandr]&lt;br /&gt;
&lt;br /&gt;
 It's checking to see if you have anything connected to the TV output.&lt;br /&gt;
 To do that, it needs to temporarily unplug the VGA.&lt;br /&gt;
  You can avoid this by ignoring the TV output&lt;br /&gt;
    Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;TV&amp;quot;&lt;br /&gt;
        Option          &amp;quot;Ignore&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
    EndSection&lt;br /&gt;
    Section &amp;quot;Device&amp;quot;&lt;br /&gt;
       Option      &amp;quot;monitor-TV&amp;quot; &amp;quot;TV&amp;quot;&lt;br /&gt;
    EndSection&lt;br /&gt;
 If your machine cannot ever have a TV adapter (even with a docking station),&lt;br /&gt;
 we can add a quirk to the driver to never look at the TV output.  That requires &lt;br /&gt;
 the pci subsystem values (from lspci -n -v) to plug into the quirk table.&lt;br /&gt;
&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-August/027632.html default for 'Virtual']&lt;br /&gt;
 &amp;gt; Version 2.1.1-0ubuntu2 seems to set the default Virtual size (maximum &lt;br /&gt;
 &amp;gt; screen size) to 1920 x 1920, if there is no entry in xorg.conf. I take &lt;br /&gt;
 &amp;gt; it the maximum screen size for the i915 chipset family is 2048 x 2048, &lt;br /&gt;
 &amp;gt; so why not have it at that? This would make dualscreen setups a bit easier.&lt;br /&gt;
   The default settings is found by taking the largest resolution in either &lt;br /&gt;
 x or y dimension and making a square from that. This allows for easy &lt;br /&gt;
 rotation should you want to do so.&lt;br /&gt;
   I believe you should be able to do dual screen up to 8192x8192, though &lt;br /&gt;
 only through two monitors (Only two pipes are available for output), but &lt;br /&gt;
 that 3D acceleration is only supported up to 2048x2048. Thus as soon as &lt;br /&gt;
 you set your virtual size above 2048x2048, you lose 3D acceleration.&lt;br /&gt;
   The current driver cannot reallocate the frame buffer, so whatever size&lt;br /&gt;
 you start with is the maximum the screen can ever become, and that this&lt;br /&gt;
 amount of physical memory is tied down for the whole X server run.&lt;br /&gt;
&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-August/027670.html Primary output for Laptop + external screen]&lt;br /&gt;
 &amp;gt;the desired behavior of the video &lt;br /&gt;
 &amp;gt; drivers in typical laptop situations with an internal display and an &lt;br /&gt;
 &amp;gt; external screen attached (extending the desktop).&lt;br /&gt;
 &amp;gt; &lt;br /&gt;
 &amp;gt; Currently for example the intel driver uses the external screen as the &lt;br /&gt;
 &amp;gt; primary output. It is listed first with xrandr. I'm not sure if this is &lt;br /&gt;
 &amp;gt; intentional or just coincidence.&lt;br /&gt;
     It's coincidence -- the laptop hardware has two crtcs, and the LVDS can&lt;br /&gt;
 only be driven by the second.&lt;br /&gt;
     Note that RandR doesn't really want the order to be significant; it&lt;br /&gt;
 would be better if the desktop environment knew about outputs and could&lt;br /&gt;
 refer to a specific output as 'primary' or 'holds toolbar' or whatever.&lt;br /&gt;
&lt;br /&gt;
[mailto:gekkoman@illimitable.com &amp;amp;nbsp;] Uncovered a workaround for black and white TV-out &amp;quot;known limitation&amp;quot; listed above on a intel 945GM chipset running i810-2.1.1 driver and xrandr-1.2.2. Get TV running in black and white. Then run command.&lt;br /&gt;
&lt;br /&gt;
xrandr --output TV --set TV_FORMAT PAL; xrandr --output TV --mode 1024x768&lt;br /&gt;
&lt;br /&gt;
substitute TV_FORMAT and mode as required.  Note that the command &amp;quot;xrandr --output TV --set TV_FORMAT PAL&amp;quot; gives an error but appears to work as the subsequent mode change converts screen to colour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes for X31, X32, T30 / Radeon 7000, Radeon 7500 users ===&lt;br /&gt;
{{X31}} and {{X32}} have an [[ATI Mobility Radeon 7000]] with only 16MB RAM. This is not enough for big screens and DRI. Neither with [[radeon]]-default virtual size of 2048x1200, nor with a customized virtual of 2304x1024 (for one 1024x768 and one 1280x1024 screen). But this only applies for 24-bit color depth. Using only 16-bit and DRI works fine with the big virtual screen.&lt;br /&gt;
&lt;br /&gt;
If you really want 24-bit depth, and do not need a bigger screen as your LCD, try setting Virtual to &amp;quot;1024 768&amp;quot;, this will enable DRI in 24-bit too, but you won't be able to extend your screen anymore (well, clone will still work though).&lt;br /&gt;
&lt;br /&gt;
==== Further Note ====&lt;br /&gt;
My {{T30}} (Radeon 7500) with the Xorg radeonhd driver version 1.2.1-1 (from Debian unstable) reports the following:&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
(II) RADEON(0): Detected total video RAM=16384K, accessible=65536K (PCI BAR=131072K)&lt;br /&gt;
(--) RADEON(0): Mapped VideoRAM: 16384 kByte (64 bit DDR SDRAM)&lt;br /&gt;
(II) RADEON(0): Color tiling enabled by default&lt;br /&gt;
(WW) RADEON(0): Requested desktop size exceeds surface limts for tiling, ColorTiling disabled&lt;br /&gt;
(II) RADEON(0): Max desktop size set to 2304x1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
I don't understand exactly what this means, but it '''does''' support the entire large desktop at 24 bit depth, even though the card reports only 16k &amp;quot;total video RAM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* XRandR 1.2&lt;br /&gt;
** [http://gitweb.freedesktop.org/?p=xorg/proto/randrproto.git;f=randrproto.txt;a=blob RandR 1.2 protocol specifications] - this defines the model and terminology&lt;br /&gt;
** [http://wiki.x.org/wiki/XDC2007Notes#head-11895d48723a8d0308571bec8829b7cc3ef87d7b In Xorg Developer Conference 2007]&lt;br /&gt;
** [http://burtonini.com/blog/computers/randr-2007-02-06-17-50 tutorial blog post]&lt;br /&gt;
&lt;br /&gt;
* Ubuntu&lt;br /&gt;
** Version 7.10 (Gutsy) of Ubuntu includes support for Xorg 7.3 with RandR 1.2 [https://wiki.ubuntu.com/Xorg7.3Integration Xorg 7.3]&lt;br /&gt;
** [[Installing Ubuntu on a ThinkPad R60e]] for a revised and more specific version of this page&lt;br /&gt;
** [https://launchpad.net/ubuntu/+source/xserver-xorg-video-intel/ Ubuntu source for Intel]&lt;br /&gt;
** [https://bugs.launchpad.net/xserver-xorg-driver-ati/+bug/148408 gutsy version of xserver-xorg-ati has some major problems on ATI Radeon] for ([[:Category:X Series]]) and possibly others.  The solution is to downgrade to the [https://launchpad.net/ubuntu/feisty/i386/xserver-xorg-video-ati/1:6.6.3-2ubuntu6 feisty version]&lt;br /&gt;
&lt;br /&gt;
* X.org&lt;br /&gt;
** [http://lists.freedesktop.org/mailman/listinfo/xorg FreeDesktop.org mailing list]&lt;br /&gt;
** [http://lists.freedesktop.org/archives/xorg/ FreeDesktop.org Xorg archive]&lt;br /&gt;
&lt;br /&gt;
* Useful page to supplement the minimal documentation  [http://wiki.x.org/wiki/Development/Documentation/HowVideoCardsWork How video cards work]&lt;br /&gt;
* [http://wiki.debian.org/XStrikeForce/ReleaseNotes xserver-xorg-core  and xserver-xorg-video-intel might cause some trouble but also brings nice features.]&lt;br /&gt;
* [http://andrew.mcmillan.net.nz/taxonomy/term/18 Seamless Monitor Hotplugging with X Windows]&lt;br /&gt;
* [http://www.intellinuxgraphics.org/  Linux Graphics Drivers from Intel]&lt;br /&gt;
* [http://zdzichubg.jogger.pl/2007/05/07/xrandr-1-2-sweetness/ blog post] with xrandr-1.2 commands and photos. Narrative is in polish.&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Xorg_RandR_1.2&amp;diff=41538</id>
		<title>Xorg RandR 1.2</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Xorg_RandR_1.2&amp;diff=41538"/>
		<updated>2009-02-17T20:40:33Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: de-personalized a bit, added X32 info, added link to Fn-F7 =&amp;gt; RandR GUI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
'''X RandR '''is used to configure which display ports are enabled (e.g. LCD, VGA and DVI), and to configure display modes and properties such as orientation, reflection and DPI.&lt;br /&gt;
&lt;br /&gt;
This is the simplest and most powerful way to get multi-monitor systems working using recent versions of Linux such as {{Ubuntu 7.10}} and Fedora 8 with graphics chipsets such as the Intel 945GM/GMS and ATI Radeon found in Thinkpads.&lt;br /&gt;
&lt;br /&gt;
'''xrandr''' is the command line interface to the RandR X extension. As usual with X, good documentation is hard to find; first try the following commands:&lt;br /&gt;
&lt;br /&gt;
* {{cmduser|xrandr --help}}&lt;br /&gt;
* {{cmduser|man xrandr}}&lt;br /&gt;
&lt;br /&gt;
* for Intel graphics: {{cmduser|man intel}}&lt;br /&gt;
* for ATI graphics: {{cmduser|man radeon}}&lt;br /&gt;
&lt;br /&gt;
The rest of this page refers to a laptop with a built in 1024x768 pixel screen and an external 1600x1200 VGA monitor. Simply replace the relevant numbers with your own system specifications and all should work fine.&lt;br /&gt;
&lt;br /&gt;
== Supported drivers ==&lt;br /&gt;
 {{Ubuntu 7.10}} '''Gutsy Gibbon'''&lt;br /&gt;
* X.org [[intel]] driver, version ??? (included in Xorg ???) and later. Ubuntu version: [https://launchpad.net/ubuntu/+source/xserver-xorg-video-intel/2:2.1.1-0ubuntu2  2:2.1.1-0ubuntu2] with [https://launchpad.net/ubuntu/gutsy/i386/xrandr/1:1.2.2-0ubuntu1 xrandr 1:1.2.2-0ubuntu1]&lt;br /&gt;
&lt;br /&gt;
* X.org [[radeon]] driver, 6.7.192 and later (in ubuntu [http://packages.ubuntu.com/gutsy/x11/xserver-xorg-video-ati gutsy] and [http://packages.ubuntu.com/hardy/x11/xserver-xorg-video-ati hardy], but they still have [http://bugs.launchpad.net/bugs/148408 very serious issues] for some Thinkpads).&lt;br /&gt;
&lt;br /&gt;
== xorg.conf ==&lt;br /&gt;
Recent versions of xorg.conf intended for use with xrandr 1.2 considerably simplify the video section of the configuration. If you upgrading from an earlier version you may find your existing xorg.conf works against the effective deployment of xrandr. So it is best to start with a new Xorg configuration.&lt;br /&gt;
&lt;br /&gt;
'''An updated Xorg.conf should:'''&lt;br /&gt;
* omit dual Device/Screen/Monitor sections&lt;br /&gt;
* omit MonitorLayout option and Screen lines from the remaining Device section&lt;br /&gt;
* omit dual Screen lines from the ServerLayout section&lt;br /&gt;
* omit RightOf/LeftOf indication to the remaining Screen line in ServerLayout section&lt;br /&gt;
* add a &amp;quot;Virtual 2048 2048&amp;quot; line in SubSection &amp;quot;Display&amp;quot; to create a large virtual screen &lt;br /&gt;
&lt;br /&gt;
To create a new xorg.conf for Ubuntu and other Debian based distributions, connect the external display to the VGA port, turn on that display, and run&lt;br /&gt;
    {{cmduser|sudo dpkg-reconfigure -phigh xserver-xorg}}&lt;br /&gt;
 &lt;br /&gt;
The resulting {{path|/etc/X11/xorg.conf}} should include something like&lt;br /&gt;
&lt;br /&gt;
    Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier	&amp;quot;Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller&amp;quot;&lt;br /&gt;
        Driver		&amp;quot;intel&amp;quot;&lt;br /&gt;
        BusID		&amp;quot;PCI:0:2:0&amp;quot;&lt;br /&gt;
        '''# ADD THIS IF YOUR LAPTOP DOES NOT HAVE A TV CONNECTOR or DOCKING STATION '''&lt;br /&gt;
        '''Option          &amp;quot;monitor-TV&amp;quot;   &amp;quot;TV&amp;quot; '''&lt;br /&gt;
    EndSection&lt;br /&gt;
    Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier	&amp;quot;Generic Monitor&amp;quot;&lt;br /&gt;
        Option		&amp;quot;DPMS&amp;quot;&lt;br /&gt;
    EndSection&lt;br /&gt;
    '''# ADD THIS IF YOUR LAPTOP DOES NOT HAVE A TV CONNECTOR or DOCKING STATION '''&lt;br /&gt;
    '''Section &amp;quot;Monitor&amp;quot; '''&lt;br /&gt;
        '''Identifier      &amp;quot;TV&amp;quot; '''&lt;br /&gt;
        '''Option          &amp;quot;Ignore&amp;quot; &amp;quot;True&amp;quot; '''&lt;br /&gt;
    EndSection '''&lt;br /&gt;
    Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier	&amp;quot;Default Screen&amp;quot;&lt;br /&gt;
        Device		&amp;quot;Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller&amp;quot;&lt;br /&gt;
        Monitor		&amp;quot;Generic Monitor&amp;quot;&lt;br /&gt;
        DefaultDepth	24&lt;br /&gt;
    &lt;br /&gt;
        SubSection &amp;quot;Display&amp;quot;&lt;br /&gt;
            Depth		24&lt;br /&gt;
            Modes		&amp;quot;1600x1200&amp;quot; &amp;quot;1280x1024&amp;quot; &amp;quot;1024x768&amp;quot; &amp;quot;800x600&amp;quot; &amp;quot;640x480&amp;quot;&lt;br /&gt;
            '''# ADD A VIRTUAL LINE TO PROVIDE FOR THE LARGEST SCREENS YOU WILL HOTPLUG '''&lt;br /&gt;
            '''Virtual              2048 2048 '''&lt;br /&gt;
        EndSubSection&lt;br /&gt;
    EndSection&lt;br /&gt;
    Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
        Identifier	&amp;quot;Default Layout&amp;quot;&lt;br /&gt;
        Screen		&amp;quot;Default Screen&amp;quot;&lt;br /&gt;
        InputDevice	&amp;quot;Generic Keyboard&amp;quot;&lt;br /&gt;
        InputDevice	&amp;quot;Configured Mouse&amp;quot;&lt;br /&gt;
        InputDevice     &amp;quot;stylus&amp;quot;	&amp;quot;SendCoreEvents&amp;quot;&lt;br /&gt;
        InputDevice     &amp;quot;cursor&amp;quot;	&amp;quot;SendCoreEvents&amp;quot;&lt;br /&gt;
        InputDevice     &amp;quot;eraser&amp;quot;	&amp;quot;SendCoreEvents&amp;quot;&lt;br /&gt;
        InputDevice	&amp;quot;Synaptics Touchpad&amp;quot;&lt;br /&gt;
    EndSection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just a hint:&lt;br /&gt;
If you want to use TV-out but not VGA for example, you should change these sections:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller&amp;quot;&lt;br /&gt;
        Driver          &amp;quot;intel&amp;quot;&lt;br /&gt;
        BusID           &amp;quot;PCI:0:2:0&amp;quot;&lt;br /&gt;
        Option          &amp;quot;monitor-VGA&amp;quot;  &amp;quot;VGA&amp;quot;&lt;br /&gt;
        Option          &amp;quot;monitor-TV&amp;quot;   &amp;quot;TV&amp;quot;&lt;br /&gt;
        Option          &amp;quot;monitor-LVCD&amp;quot; &amp;quot;LVCD&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;VGA&amp;quot;&lt;br /&gt;
        Option &amp;quot;Ignore&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;LVCD&amp;quot;&lt;br /&gt;
        Option          &amp;quot;DPMS&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;TV&amp;quot;&lt;br /&gt;
        Option  &amp;quot;Ignore&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After creating a clean {{path|xorg.conf}}, restart X and logon.&lt;br /&gt;
&lt;br /&gt;
You may find you have a display only on the external VGA screen at its default max resolution; do not worry - xrandr can fix this.&lt;br /&gt;
&lt;br /&gt;
== Using  {{cmduser|xrandr}} ==&lt;br /&gt;
&lt;br /&gt;
=== First discover what we have ===&lt;br /&gt;
Open a terminal window to use the command line: 'Applications:Accessories:Terminal'&lt;br /&gt;
&lt;br /&gt;
{{HINT|First look at the 'help' and 'man' pages. }}&lt;br /&gt;
&lt;br /&gt;
 {{cmduser|xrandr --help}}&lt;br /&gt;
 {{cmduser|man xrandr}}&lt;br /&gt;
&lt;br /&gt;
To find what version of xrandr is running, type the following command:&lt;br /&gt;
 {{cmduser| xrandr -v}}&lt;br /&gt;
    Server reports RandR version 1.2&lt;br /&gt;
&lt;br /&gt;
To query what screens are connected, type the following: (The output shown indicates nothing is connected to the VGA port.)&lt;br /&gt;
 {{cmduser| xrandr -q }}&lt;br /&gt;
 Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1920 x 1440&lt;br /&gt;
 VGA disconnected (normal left inverted right)&lt;br /&gt;
  LVDS connected 1024x768+0+0 (normal left inverted right) 304mm x 228mm&lt;br /&gt;
    1024x768       60.0*+   50.0  &lt;br /&gt;
    800x600        60.3  &lt;br /&gt;
    640x480        60.0     59.9  &lt;br /&gt;
 TV disconnected (normal left inverted right)&lt;br /&gt;
&lt;br /&gt;
If you see the 'TV disconnected' line but have neither TV connector nor docking station (eg Thinkpad R60e) then add to the Monitor and Device sections of xorg.conf as noted above. This will prevent the external (VGA) flashing off for a few seconds every time xrandr is used. (Newer versions of the intel driver may fix this.) &lt;br /&gt;
 &lt;br /&gt;
The same command as above, but with the VGA monitor plugged in and powered off, should give something like the following output: (The VGA monitor is now shown as 'connected'.)&lt;br /&gt;
 {{cmduser| xrandr -q }}&lt;br /&gt;
 Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1920 x 1440&lt;br /&gt;
 VGA connected (normal left inverted right)&lt;br /&gt;
    1920x1440@60   60.0  &lt;br /&gt;
    1920x1440      60.0  &lt;br /&gt;
    1600x1200@60   60.0  &lt;br /&gt;
    1600x1200      60.0  &lt;br /&gt;
    1280x960       60.0  &lt;br /&gt;
    640x480@60     60.0  &lt;br /&gt;
 LVDS connected 1024x768+0+0 (normal left inverted right) 304mm x 228mm&lt;br /&gt;
    1024x768       60.0*+   50.0  &lt;br /&gt;
    800x600        60.3  &lt;br /&gt;
    640x480        60.0     59.9  &lt;br /&gt;
 TV disconnected (normal left inverted right)&lt;br /&gt;
&lt;br /&gt;
Powering on the VGA monitor and issuing the same command again will give the following output: (The size and position of the VGA output within the virtual screen is now shown.)&lt;br /&gt;
 {{cmduser| xrandr -q }}&lt;br /&gt;
 Screen 0: minimum 320 x 200, current 2624 x 1200, maximum 2624 x 2048&lt;br /&gt;
 VGA connected 1600x1200+1024+0 (normal left inverted right) 367mm x 275mm&lt;br /&gt;
    1600x1200      60.0*+&lt;br /&gt;
    1920x1440@60   60.0  &lt;br /&gt;
    1600x1200@60   60.0  &lt;br /&gt;
    640x480@60     60.0  &lt;br /&gt;
    640x480        60.0  &lt;br /&gt;
 LVDS connected 1024x768+0+0 (normal left inverted right) 304mm x 228mm&lt;br /&gt;
    1024x768       60.0*+   50.0  &lt;br /&gt;
    800x600        60.3  &lt;br /&gt;
    640x480        60.0     59.9  &lt;br /&gt;
 TV disconnected (normal left inverted right)&lt;br /&gt;
&lt;br /&gt;
For bug reporting and diagnosis use xrandr with the verbose option:&lt;br /&gt;
 {{cmduser| xrandr --verbose}}&lt;br /&gt;
&lt;br /&gt;
=== Using xrandr to do useful things ===&lt;br /&gt;
In general the commands will specify the output name and either --off or --auto. In the examples here the external screen is named ''VGA'', as used by the Intel driver, with an ATI card the name will probably be ''VGA-0''. In general use {{cmduser| xrandr -q}} to discover the appropriate output names for your configuration. The --auto option will select the preferred resolution for each output, this is starred(*) in the {{cmduser| xrandr -q}} listing and is normally the best resolution available. It is also possible to set a particular mode eg --mode 1024x768.&lt;br /&gt;
&lt;br /&gt;
First clone the two screens, (the smaller screen will display the top left portion of the virtual screen)&lt;br /&gt;
 {{cmduser| xrandr --output LVDS --auto --output VGA --auto --same-as LVDS}}&lt;br /&gt;
&lt;br /&gt;
To turn off the VGA monitor. &lt;br /&gt;
 {{cmduser| xrandr  --output VGA --off }}&lt;br /&gt;
&lt;br /&gt;
To turn the VGA monitor back on, with its viewport to the right of the laptop monitor:&lt;br /&gt;
 {{cmduser| xrandr --output VGA --auto --right-of LVDS}}&lt;br /&gt;
This will probably give an error message similar to:&lt;br /&gt;
    xrandr: screen cannot be larger than 1600x1600 (desired size 2624x1200)&lt;br /&gt;
&lt;br /&gt;
This can be fixed by editing xorg.conf and changing the ''virtual'' line (see example above) to something like:&lt;br /&gt;
    Virtual 2624 1200&lt;br /&gt;
Note that the maximum supported size of the virtual desktop for the Intel 945GM series of chipset with 3D acceleration enabled, is 2048x2048. The virtual screen can be larger but DRI will be disabled. This may matter if you like games and compiz desktop effects, or if you want Google Earth to display in better than geological time. Obviously the larger the virtual desktop, the more graphics memory is used. So for good performance with a shared graphics system such as Intel the Virtual should be no larger than necessary. &lt;br /&gt;
&lt;br /&gt;
It is possible to set screen locations as ''--left-of'', ''--right-of'', ''--above'' and ''--below''. Assuming displays sizes of 1024x768 and 1200x1600:&lt;br /&gt;
 {{cmduser| xrandr --output LVDS --auto --output VGA --auto --right-of LVDS}}&lt;br /&gt;
 and&lt;br /&gt;
 {{cmduser| xrandr --output LVDS --mode 1024x768 --pos 0x0 --output VGA  --mode 1600x1200 --pos 1024x0}}&lt;br /&gt;
are equivalent. Both will place the external monitor to the right of the laptop display within the virtual screen.&lt;br /&gt;
&lt;br /&gt;
If the Virtual size is only 2048 wide the above command will fail as the combined width of the two displays exceeds the maximum virtual size. However it is possible to have overlap the display viewports. So to fit within the 2048 limit:&lt;br /&gt;
 {{cmduser| xrandr --output VGA --mode 1024x768 --pos 0x0 --output VGA  --mode 1600x1200 --pos 448x0}}&lt;br /&gt;
&lt;br /&gt;
=== Now automate it on login ===&lt;br /&gt;
To configure xrandr automatically during the first login, save this script to your computer as /etc/X11/Xsession.d/45custom_xrandr-settings:&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
# If an external monitor is connected, place it with xrandr&lt;br /&gt;
&lt;br /&gt;
# External output may be &amp;quot;VGA&amp;quot; or &amp;quot;VGA-0&amp;quot; or &amp;quot;DVI-0&amp;quot; or &amp;quot;TMDS-1&amp;quot;&lt;br /&gt;
EXTERNAL_OUTPUT=&amp;quot;VGA&amp;quot;&lt;br /&gt;
INTERNAL_OUTPUT=&amp;quot;LVDS&amp;quot;&lt;br /&gt;
# EXTERNAL_LOCATION may be one of: left, right, above, or below&lt;br /&gt;
EXTERNAL_LOCATION=&amp;quot;right&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$EXTERNAL_LOCATION&amp;quot; in&lt;br /&gt;
       left|LEFT)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--left-of $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       right|RIGHT)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--right-of $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       top|TOP|above|ABOVE)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--above $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       bottom|BOTTOM|below|BELOW)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--below $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       *)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--left-of $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
xrandr |grep $EXTERNAL_OUTPUT | grep &amp;quot; connected &amp;quot;&lt;br /&gt;
if [ $? -eq 0 ]; then&lt;br /&gt;
    xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --auto $EXTERNAL_LOCATION&lt;br /&gt;
else&lt;br /&gt;
    xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --off&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When X starts, it will be mirrored across both screens until someone logs in. At that point this script will execute and xrandr will position the external monitor.&lt;br /&gt;
&lt;br /&gt;
=== [[Sample Fn-F7 script]] ===&lt;br /&gt;
For further examples of the use of xrandr commands, and scripts to switch the display using the Function key Fn-F7 see [[Sample Fn-F7 script]].&lt;br /&gt;
&lt;br /&gt;
=== GUIs ===&lt;br /&gt;
&lt;br /&gt;
Several graphical frontends are available for xrandr (all using GTK):&lt;br /&gt;
&lt;br /&gt;
* [http://gitweb.freedesktop.org/?p=xorg/app/grandr.git Grandr]&lt;br /&gt;
* [http://www.albertomilone.com/urandr.html URandR]&lt;br /&gt;
* [http://christian.amsuess.com/tools/arandr/ ARandR]&lt;br /&gt;
* [http://sourceforge.net/projects/zarfy/ Zarfy] &amp;amp;mdash; A GUI to libxrandr. It presents the user with visual representaion of active displays on an interactive map of the screen memory. Features free postioning, configuration saving, scripting for R&amp;amp;R and an alternate gui for switching between monitors.&lt;br /&gt;
&lt;br /&gt;
It is possible to have Fn-F7 run such a GUI, see [[Sample Fn-F7 script#Having Fn-F7 run a RandR GUI]].&lt;br /&gt;
&lt;br /&gt;
== Summing up ==&lt;br /&gt;
&lt;br /&gt;
'''xrandr''' enables dynamic resizing of screens, switching both external and laptop screens on and off, and the applications windows can be dragged from one screen to the other. None of this requires configuring anything special for {{path|/etc/X11/xorg.conf}}.&lt;br /&gt;
&lt;br /&gt;
=== the Virtual screen === &lt;br /&gt;
A Virtual line is needed in the 'Display' SubSection of the of xorg.conf; it determines the size of the frame buffer into which the displays must fit. Without it the maximum virtual size will be limited to the size of the largest display that was connected when X was started. The maximum virtual size cannot be changed once X starts so needs to be large enough to accommodate the largest combination of displays you want to hotplug without having to restart X. If it is greater than 2048x2048 and you are using an Intel 945 (or less) chip then DRI is not possible. Making the Virtual size square makes rotation easy. A bigger Virtual requires more memory. &lt;br /&gt;
&lt;br /&gt;
[[Image:Intel-DualHead.png|monitor windows must fit within the virtual screen]] &lt;br /&gt;
&lt;br /&gt;
=== Output port names ===&lt;br /&gt;
&lt;br /&gt;
'''Intel driver'''&lt;br /&gt;
* '''VGA'''  -  Analog VGA output&lt;br /&gt;
* '''LVDS''' -  Laptop panel&lt;br /&gt;
* '''TV'''   -  Integrated TV output&lt;br /&gt;
* '''TMDS-1''' - First DVI SDVO output&lt;br /&gt;
* '''TMDS-2''' - Second DVI SDVO output&lt;br /&gt;
The '''SDVO''' and '''DVO TV''' outputs are not supported by the driver at this time.&lt;br /&gt;
&lt;br /&gt;
'''[[radeon]] driver '''&lt;br /&gt;
* '''VGA-0'''  - Analog VGA output&lt;br /&gt;
* '''LVDS'''   - Laptop panel&lt;br /&gt;
* '''S-video'''     - Integrated TV output&lt;br /&gt;
* '''DVI-0'''  - DVI output&lt;br /&gt;
&lt;br /&gt;
=== Note for Gnome users ===&lt;br /&gt;
Gnome places the menu bar on screen 0 and thus with the Intel chip and driver Screen 0 (the external VGA monitor) will always be the default display if it is connected. This applies even if the external monitor is switched off but the cable connected: if you have a blank laptop monitor check if you have anything plugged in to the VGA port. Also beware that desktop icons and windows can disappear into the invisible parts of the virtual display. (see diagram below).  If you want the panel(s) to appear by default on a different head, drag it to the head you want it on and GNOME will keep it there.&lt;br /&gt;
&lt;br /&gt;
=== Note for Ubuntu Gutsy users ===&lt;br /&gt;
There is a  Graphical Configuration Tool, ([https://launchpad.net/ubuntu/+source/displayconfig-gtk/0.2+20070731ubuntu1 displayconfig-gtk]) included with {{Ubuntu 7.10}}. At present [https://bugs.launchpad.net/ubuntu/+source/displayconfig-gtk it dosn't work too well].  It is found in the menu: 'System: Administration: Screens and Graphics'. As using it will wreck your xorg.conf, I recommend removing it.&lt;br /&gt;
&lt;br /&gt;
== Gleanings ==&lt;br /&gt;
=== Notes from xserver-xorg-video-intel.readme === &lt;br /&gt;
'''Known Limitations'''&lt;br /&gt;
- No support for &amp;quot;zaphod mode&amp;quot; dualhead.  This is the mode in which two&lt;br /&gt;
Device sections are placed in the config file, and doesn't support DRI or&lt;br /&gt;
many other features.  Instead, only &amp;quot;MergedFB-style&amp;quot; dualhead is supported.&lt;br /&gt;
- No support for X Screens larger than 2048 pixels in either direction&lt;br /&gt;
before the 965.  This reflects hardware limitations in the x direction on&lt;br /&gt;
those older chips, and limits dualhead functionality.  It may be possible to&lt;br /&gt;
extend the limit vertically on these older chips.&lt;br /&gt;
- i855 XV may cause hangs.  This was present in the previous release, and no&lt;br /&gt;
workaround is known.&lt;br /&gt;
- SDVO TV-out cards not supported.  This should be fixed in the next&lt;br /&gt;
release.&lt;br /&gt;
- Gray output with integrated TV-out and PAL TVs.&lt;br /&gt;
- EXA support unstable on i845.&lt;br /&gt;
- Some GM965 systems, such as the Thinkpad T61, probe the TV as being connected&lt;br /&gt;
even when no output connector is available. &lt;br /&gt;
&lt;br /&gt;
'''Common issues not caused by the driver'''&lt;br /&gt;
- Font sizes (DPI) are wrong.  Some displays incorrectly report their&lt;br /&gt;
physical size, which is harmless on most OSes that always assume 96dpi&lt;br /&gt;
displays.  This can be fixed through quirks for specific monitors in the X&lt;br /&gt;
Server, and the output of xrandr --prop along with a physical measurement of&lt;br /&gt;
the screen size in a bug report against the server can help get that fixed.&lt;br /&gt;
- gnome-panel is located in the middle of the screen.  gnome-panel places&lt;br /&gt;
itself within head #0's boundaries, which doesn't work well with a second&lt;br /&gt;
head covering the same area as head #0 but larger.&lt;br /&gt;
- Older resolution-changing applications have poor results in&lt;br /&gt;
multihead systems.  Previous extensions such as RandR 1.1 exposed only a&lt;br /&gt;
single output to client programs, and those requests map poorly to multi-head&lt;br /&gt;
systems.  Currently, those requests map to just one of the outputs in the&lt;br /&gt;
RandR 1.2 environment, and those applications need to be updated to RandR 1.2&lt;br /&gt;
API when available for better results.&lt;br /&gt;
&lt;br /&gt;
=== Xorg mailing list ===&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-June/025469.html FreeDesktop.org 2007-June 025469]&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-June/025484.html FreeDesktop.org 2007-June 025484]&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-July/026340.html FreeDesktop.org 2007-July 026340]&lt;br /&gt;
&lt;br /&gt;
the 3D engine has an 11 bit coordinate space at one point making it&lt;br /&gt;
impossible to draw to areas beyond 2048x2048. At another point, it has a&lt;br /&gt;
stride limit of 8192 bytes, so you can't even draw to a subset of a&lt;br /&gt;
larger frame buffer.&lt;br /&gt;
&lt;br /&gt;
One more bit in both of these registers would have solved the problem&lt;br /&gt;
for pretty much any supportable monitor configuration (the chip can only&lt;br /&gt;
support two single-channel DVI outputs at the most; 1920 is the widest&lt;br /&gt;
size supported at single-channel speeds).&lt;br /&gt;
&lt;br /&gt;
For multiple monitors, the driver could allocate multiple frame buffers&lt;br /&gt;
and step through them one at a time with appropriate clipping. It would&lt;br /&gt;
be icky, but could be made to work.&lt;br /&gt;
&lt;br /&gt;
Of course, the latest hardware (965G/965GM) has plenty of coordinate&lt;br /&gt;
space, which does tend to reduce the odds that someone will get excited&lt;br /&gt;
enough to go fix the driver for older chips.&lt;br /&gt;
&lt;br /&gt;
The Gnome menu bar lands on Xinerama Screen 0 at this&lt;br /&gt;
point, which isn't currently something that you can set through RandR.  On Intel the allocation to Screen 0 is determined by CRTC order and LVDS only runs on screen 1.&lt;br /&gt;
&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-June/026053.html FreeDesktop.org 2007-June 026053]&lt;br /&gt;
&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-August/027616.html Blanking of external screen when using xrandr]&lt;br /&gt;
&lt;br /&gt;
 It's checking to see if you have anything connected to the TV output.&lt;br /&gt;
 To do that, it needs to temporarily unplug the VGA.&lt;br /&gt;
  You can avoid this by ignoring the TV output&lt;br /&gt;
    Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;TV&amp;quot;&lt;br /&gt;
        Option          &amp;quot;Ignore&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
    EndSection&lt;br /&gt;
    Section &amp;quot;Device&amp;quot;&lt;br /&gt;
       Option      &amp;quot;monitor-TV&amp;quot; &amp;quot;TV&amp;quot;&lt;br /&gt;
    EndSection&lt;br /&gt;
 If your machine cannot ever have a TV adapter (even with a docking station),&lt;br /&gt;
 we can add a quirk to the driver to never look at the TV output.  That requires &lt;br /&gt;
 the pci subsystem values (from lspci -n -v) to plug into the quirk table.&lt;br /&gt;
&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-August/027632.html default for 'Virtual']&lt;br /&gt;
 &amp;gt; Version 2.1.1-0ubuntu2 seems to set the default Virtual size (maximum &lt;br /&gt;
 &amp;gt; screen size) to 1920 x 1920, if there is no entry in xorg.conf. I take &lt;br /&gt;
 &amp;gt; it the maximum screen size for the i915 chipset family is 2048 x 2048, &lt;br /&gt;
 &amp;gt; so why not have it at that? This would make dualscreen setups a bit easier.&lt;br /&gt;
   The default settings is found by taking the largest resolution in either &lt;br /&gt;
 x or y dimension and making a square from that. This allows for easy &lt;br /&gt;
 rotation should you want to do so.&lt;br /&gt;
   I believe you should be able to do dual screen up to 8192x8192, though &lt;br /&gt;
 only through two monitors (Only two pipes are available for output), but &lt;br /&gt;
 that 3D acceleration is only supported up to 2048x2048. Thus as soon as &lt;br /&gt;
 you set your virtual size above 2048x2048, you lose 3D acceleration.&lt;br /&gt;
   The current driver cannot reallocate the frame buffer, so whatever size&lt;br /&gt;
 you start with is the maximum the screen can ever become, and that this&lt;br /&gt;
 amount of physical memory is tied down for the whole X server run.&lt;br /&gt;
&lt;br /&gt;
[http://lists.freedesktop.org/archives/xorg/2007-August/027670.html Primary output for Laptop + external screen]&lt;br /&gt;
 &amp;gt;the desired behavior of the video &lt;br /&gt;
 &amp;gt; drivers in typical laptop situations with an internal display and an &lt;br /&gt;
 &amp;gt; external screen attached (extending the desktop).&lt;br /&gt;
 &amp;gt; &lt;br /&gt;
 &amp;gt; Currently for example the intel driver uses the external screen as the &lt;br /&gt;
 &amp;gt; primary output. It is listed first with xrandr. I'm not sure if this is &lt;br /&gt;
 &amp;gt; intentional or just coincidence.&lt;br /&gt;
     It's coincidence -- the laptop hardware has two crtcs, and the LVDS can&lt;br /&gt;
 only be driven by the second.&lt;br /&gt;
     Note that RandR doesn't really want the order to be significant; it&lt;br /&gt;
 would be better if the desktop environment knew about outputs and could&lt;br /&gt;
 refer to a specific output as 'primary' or 'holds toolbar' or whatever.&lt;br /&gt;
&lt;br /&gt;
[mailto:gekkoman@illimitable.com &amp;amp;nbsp;] Uncovered a workaround for black and white TV-out &amp;quot;known limitation&amp;quot; listed above on a intel 945GM chipset running i810-2.1.1 driver and xrandr-1.2.2. Get TV running in black and white. Then run command.&lt;br /&gt;
&lt;br /&gt;
xrandr --output TV --set TV_FORMAT PAL; xrandr --output TV --mode 1024x768&lt;br /&gt;
&lt;br /&gt;
substitute TV_FORMAT and mode as required.  Note that the command &amp;quot;xrandr --output TV --set TV_FORMAT PAL&amp;quot; gives an error but appears to work as the subsequent mode change converts screen to colour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes for X31,T30 / Radeon 7000,Radeon 7500 users ===&lt;br /&gt;
{{X31}} and {{X32}} have an [[ATI Mobility Radeon 7000]] with only 16MB RAM. This is not enough for big screens and DRI. Neither with [[radeon]]-default virtual size of 2048x1200, nor with a customized virtual of 2304x1024 (for one 1024x768 and one 1280x1024 screen). But this only applies for 24-bit color depth. Using only 16-bit and DRI works fine with the big virtual screen.&lt;br /&gt;
&lt;br /&gt;
If you really want 24-bit depth, and do not need a bigger screen as your LCD, try setting Virtual to &amp;quot;1024 768&amp;quot;, this will enable DRI in 24-bit too, but you won't be able to extend your screen anymore (well, clone will still work though).&lt;br /&gt;
&lt;br /&gt;
==== Further Note ====&lt;br /&gt;
My {{T30}} (Radeon 7500) with the Xorg radeonhd driver version 1.2.1-1 (from Debian unstable) reports the following:&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
(II) RADEON(0): Detected total video RAM=16384K, accessible=65536K (PCI BAR=131072K)&lt;br /&gt;
(--) RADEON(0): Mapped VideoRAM: 16384 kByte (64 bit DDR SDRAM)&lt;br /&gt;
(II) RADEON(0): Color tiling enabled by default&lt;br /&gt;
(WW) RADEON(0): Requested desktop size exceeds surface limts for tiling, ColorTiling disabled&lt;br /&gt;
(II) RADEON(0): Max desktop size set to 2304x1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
I don't understand exactly what this means, but it '''does''' support the entire large desktop at 24 bit depth, even though the card reports only 16k &amp;quot;total video RAM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* XRandR 1.2&lt;br /&gt;
** [http://gitweb.freedesktop.org/?p=xorg/proto/randrproto.git;f=randrproto.txt;a=blob RandR 1.2 protocol specifications] - this defines the model and terminology&lt;br /&gt;
** [http://wiki.x.org/wiki/XDC2007Notes#head-11895d48723a8d0308571bec8829b7cc3ef87d7b In Xorg Developer Conference 2007]&lt;br /&gt;
** [http://burtonini.com/blog/computers/randr-2007-02-06-17-50 tutorial blog post]&lt;br /&gt;
&lt;br /&gt;
* Ubuntu&lt;br /&gt;
** Version 7.10 (Gutsy) of Ubuntu includes support for Xorg 7.3 with RandR 1.2 [https://wiki.ubuntu.com/Xorg7.3Integration Xorg 7.3]&lt;br /&gt;
** [[Installing Ubuntu on a ThinkPad R60e]] for a revised and more specific version of this page&lt;br /&gt;
** [https://launchpad.net/ubuntu/+source/xserver-xorg-video-intel/ Ubuntu source for Intel]&lt;br /&gt;
** [https://bugs.launchpad.net/xserver-xorg-driver-ati/+bug/148408 gutsy version of xserver-xorg-ati has some major problems on ATI Radeon] for ([[:Category:X Series]]) and possibly others.  The solution is to downgrade to the [https://launchpad.net/ubuntu/feisty/i386/xserver-xorg-video-ati/1:6.6.3-2ubuntu6 feisty version]&lt;br /&gt;
&lt;br /&gt;
* X.org&lt;br /&gt;
** [http://lists.freedesktop.org/mailman/listinfo/xorg FreeDesktop.org mailing list]&lt;br /&gt;
** [http://lists.freedesktop.org/archives/xorg/ FreeDesktop.org Xorg archive]&lt;br /&gt;
&lt;br /&gt;
* Useful page to supplement the minimal documentation  [http://wiki.x.org/wiki/Development/Documentation/HowVideoCardsWork How video cards work]&lt;br /&gt;
* [http://wiki.debian.org/XStrikeForce/ReleaseNotes xserver-xorg-core  and xserver-xorg-video-intel might cause some trouble but also brings nice features.]&lt;br /&gt;
* [http://andrew.mcmillan.net.nz/taxonomy/term/18 Seamless Monitor Hotplugging with X Windows]&lt;br /&gt;
* [http://www.intellinuxgraphics.org/  Linux Graphics Drivers from Intel]&lt;br /&gt;
* [http://zdzichubg.jogger.pl/2007/05/07/xrandr-1-2-sweetness/ blog post] with xrandr-1.2 commands and photos. Narrative is in polish.&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Sample_Fn-F7_script&amp;diff=41537</id>
		<title>Sample Fn-F7 script</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Sample_Fn-F7_script&amp;diff=41537"/>
		<updated>2009-02-17T20:32:29Z</updated>

		<summary type="html">&lt;p&gt;Intrigeri: how to run a RandR GUI using Fn-F7&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide will help you configure Fn-F7 key combination to toggle between internal, mirror, external, or both screens.  This was tested on ThinkPad X60s running Fedora 8, please comment if it works or does not work for you.&lt;br /&gt;
&lt;br /&gt;
Works like a charm on X61s with Xubuntu 7.10.&lt;br /&gt;
Working with R60e with some modifications noted below.&lt;br /&gt;
&lt;br /&gt;
The script does not work when using [[fglrx]] or a version of XRandR &amp;lt; 1.2, because there is no dynamic display switching support then. When fglrx is used, aticonfig can be used for the switching in this [[Script for Dynamic Display Management with fglrx]].&lt;br /&gt;
&lt;br /&gt;
==configuring the virtual screen size==&lt;br /&gt;
Add a &amp;quot;Virtual&amp;quot; statement to your /etc/X11/xorg.conf, the total resolution should be large enough to fit all your screens in the configuration you want, for example if you have 1600x1200 monitor to the left of your internal 1024x768 monitor, your total max resolution is 2624x1200 (See [[Xorg RandR 1.2]] for more details):&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;Screen0&amp;quot;&lt;br /&gt;
        Device     &amp;quot;Videocard0&amp;quot;&lt;br /&gt;
        DefaultDepth     24&lt;br /&gt;
         SubSection &amp;quot;Display&amp;quot;&lt;br /&gt;
                Viewport   0 0&lt;br /&gt;
                Depth     24&lt;br /&gt;
                &amp;lt;b&amp;gt;Virtual   2624 1200&amp;lt;/b&amp;gt;&lt;br /&gt;
        EndSubSection&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
Restart X server at this point (i.e. logout and login).&lt;br /&gt;
&lt;br /&gt;
== configuring acpi ==&lt;br /&gt;
Create /etc/acpi/events/thinkpad.conf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
event=ibm/hotkey HKEY 00000080 00001007&lt;br /&gt;
action=/usr/local/sbin/thinkpad-fn-f7&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or you may (eg Ubuntu 7.10) already have /etc/acpi/events/ibm-videobtn&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
# /etc/acpi/events/ibm-videobtn&lt;br /&gt;
# This is called when the user presses the video button. It is currently&lt;br /&gt;
# a placeholder.&lt;br /&gt;
event=ibm/hotkey HKEY 00000080 00001007&lt;br /&gt;
action=/bin/true&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
in which case modify the line 'action=/bin/true' to run the script as above.&lt;br /&gt;
&lt;br /&gt;
It may also be necessary to enable acpi events as per [[How to get special keys to work]] with (in root terminal)&lt;br /&gt;
{{cmdroot|echo enable,0x084e &amp;gt; /proc/acpi/ibm/hotkey}}&lt;br /&gt;
Note this command isn't persistent. so you will also need to add the line to /etc/rc.local to enable hotkeys at boot, and to re-enable the hotkeys after suspend to disk or RAM, create the file&lt;br /&gt;
/etc/acpi/resume.d/91-ibm-hotkey-enable.sh consisting of&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# enable ibm-hotkeys (specifically Fn2, Fn7)&lt;br /&gt;
# 12 bit mask, little end is F1 default 0x080c = F12+F4+F3&lt;br /&gt;
echo enable,0x084e &amp;gt; /proc/acpi/ibm/hotkey&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: [[http://tilmanfrosch.de/wp/index.php/2007/05/05/howto-make-a-ubuntu-linux-on-an-ibm-t41-thinkpad-work-with-an-external-widescreen-wxga-display/  frosch.org.uk]] and [[http://ibm-acpi.sourceforge.net/README ibm-acpi.sourceforge]]&lt;br /&gt;
&lt;br /&gt;
==identify output devices==&lt;br /&gt;
Note the names of your output devices as you will have to change EXTERNAL_OUTPUT and INTERNAL_OUTPUT to what xrandr shows, for example VGA and LVDS in this case:&lt;br /&gt;
&lt;br /&gt;
 $ xrandr -q&lt;br /&gt;
 '''VGA''' connected 1600x1200+0+0 (normal left inverted right x axis y axis) 432mm x 324mm&lt;br /&gt;
 ...&lt;br /&gt;
 '''LVDS''' connected (normal left inverted right x axis y axis)&lt;br /&gt;
&lt;br /&gt;
==The bash script==&lt;br /&gt;
Create /usr/local/sbin/thinkpad-fn-f7, you can set EXTERNAL_LOCATION to one of: left, right, above, or below.&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# External output may be &amp;quot;VGA&amp;quot; or &amp;quot;VGA-0&amp;quot; or &amp;quot;DVI-0&amp;quot; or &amp;quot;TMDS-1&amp;quot;&lt;br /&gt;
EXTERNAL_OUTPUT=&amp;quot;VGA&amp;quot;&lt;br /&gt;
INTERNAL_OUTPUT=&amp;quot;LVDS&amp;quot;&lt;br /&gt;
EXTERNAL_LOCATION=&amp;quot;left&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Figure out which user and X11 display to work on&lt;br /&gt;
# TODO there has to be a better way to do this?&lt;br /&gt;
X_USER=$(w -h -s | grep &amp;quot;:[0-9]\W&amp;quot; | head -1 | awk '{print $1}')&lt;br /&gt;
export DISPLAY=$(w -h -s | grep &amp;quot;:[0-9]\W&amp;quot; | head -1 | awk '{print $3}')&lt;br /&gt;
&lt;br /&gt;
# Switch to X user if necessary&lt;br /&gt;
if [ &amp;quot;$X_USER&amp;quot; != &amp;quot;$USER&amp;quot; ]; then&lt;br /&gt;
       SU=&amp;quot;su $X_USER -c&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
       SU=&amp;quot;sh -c&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$EXTERNAL_LOCATION&amp;quot; in&lt;br /&gt;
       left|LEFT)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--left-of $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       right|RIGHT)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--right-of $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       top|TOP|above|ABOVE)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--above $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       bottom|BOTTOM|below|BELOW)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--below $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       *)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--left-of $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
# Figure out current state&lt;br /&gt;
INTERNAL_STATE=$($SU xrandr | grep ^$INTERNAL_OUTPUT | grep &amp;quot; con&amp;quot; | sed &amp;quot;s/.*connected//&amp;quot; | sed &amp;quot;s/ //&amp;quot; | sed &amp;quot;s/ .*//g&amp;quot;)&lt;br /&gt;
EXTERNAL_STATE=$($SU xrandr | grep ^$EXTERNAL_OUTPUT | grep &amp;quot; con&amp;quot; | sed &amp;quot;s/.*connected//&amp;quot; | sed &amp;quot;s/ //&amp;quot; | sed &amp;quot;s/ .*//g&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$INTERNAL_STATE&amp;quot; ]; then&lt;br /&gt;
       STATE=&amp;quot;external&amp;quot;&lt;br /&gt;
elif [ -z &amp;quot;$EXTERNAL_STATE&amp;quot; ]; then&lt;br /&gt;
       STATE=&amp;quot;internal&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
       INTERNAL_STATE=$(echo $INTERNAL_STATE | sed &amp;quot;s/[0-9]*x[0-9]*//&amp;quot;)&lt;br /&gt;
       EXTERNAL_STATE=$(echo $EXTERNAL_STATE | sed &amp;quot;s/[0-9]*x[0-9]*//&amp;quot;)&lt;br /&gt;
       if [ &amp;quot;$INTERNAL_STATE&amp;quot; = &amp;quot;$EXTERNAL_STATE&amp;quot; ]; then&lt;br /&gt;
               STATE=&amp;quot;mirror&amp;quot;&lt;br /&gt;
       else&lt;br /&gt;
               STATE=&amp;quot;both&amp;quot;&lt;br /&gt;
       fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
function screen_external(){&lt;br /&gt;
       $SU &amp;quot;xrandr --output $INTERNAL_OUTPUT --off&amp;quot;&lt;br /&gt;
       $SU &amp;quot;xrandr --output $EXTERNAL_OUTPUT --auto&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function screen_internal(){&lt;br /&gt;
       $SU &amp;quot;xrandr --output $EXTERNAL_OUTPUT --off&amp;quot;&lt;br /&gt;
       $SU &amp;quot;xrandr --output $INTERNAL_OUTPUT --auto&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function screen_mirror(){&lt;br /&gt;
       $SU &amp;quot;xrandr --output $INTERNAL_OUTPUT --auto&amp;quot;&lt;br /&gt;
       $SU &amp;quot;xrandr --output $EXTERNAL_OUTPUT --auto --same-as $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function screen_both(){&lt;br /&gt;
       $SU &amp;quot;xrandr --output $INTERNAL_OUTPUT --auto&amp;quot;&lt;br /&gt;
       $SU &amp;quot;xrandr --output $EXTERNAL_OUTPUT --auto $EXTERNAL_LOCATION&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function screen_toggle(){&lt;br /&gt;
       case &amp;quot;$STATE&amp;quot; in&lt;br /&gt;
               internal)&lt;br /&gt;
                       screen_mirror&lt;br /&gt;
                       ;;&lt;br /&gt;
               mirror)&lt;br /&gt;
                       screen_external&lt;br /&gt;
                       ;;&lt;br /&gt;
               external)&lt;br /&gt;
                       screen_both&lt;br /&gt;
                       ;;&lt;br /&gt;
               both)&lt;br /&gt;
                       screen_internal&lt;br /&gt;
                       ;;&lt;br /&gt;
               *)&lt;br /&gt;
                       screen_internal&lt;br /&gt;
                       ;;&lt;br /&gt;
       esac&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# What should we do?&lt;br /&gt;
DO=&amp;quot;$1&amp;quot;&lt;br /&gt;
if [ -z &amp;quot;$DO&amp;quot; ]; then&lt;br /&gt;
       if [ $(basename $0) = &amp;quot;thinkpad-fn-f7&amp;quot; ]; then&lt;br /&gt;
               DO=&amp;quot;toggle&amp;quot;&lt;br /&gt;
       fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$DO&amp;quot; in&lt;br /&gt;
       toggle)&lt;br /&gt;
               screen_toggle&lt;br /&gt;
               ;;&lt;br /&gt;
       internal)&lt;br /&gt;
               screen_internal&lt;br /&gt;
               ;;&lt;br /&gt;
       external)&lt;br /&gt;
               screen_external&lt;br /&gt;
               ;;&lt;br /&gt;
       mirror)&lt;br /&gt;
               screen_mirror&lt;br /&gt;
               ;;&lt;br /&gt;
       both)&lt;br /&gt;
               screen_both&lt;br /&gt;
               ;;&lt;br /&gt;
       status)&lt;br /&gt;
               echo &amp;quot;Current Fn-F7 state is: $STATE&amp;quot;&lt;br /&gt;
               echo&lt;br /&gt;
               echo &amp;quot;Attached monitors:&amp;quot;&lt;br /&gt;
               $SU xrandr | grep &amp;quot;\Wconnected&amp;quot; | sed &amp;quot;s/^/ /&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       *)&lt;br /&gt;
               echo &amp;quot;usage: $0 &amp;lt;command&amp;gt;&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
               echo &amp;gt;&amp;amp;2&lt;br /&gt;
               echo &amp;quot;  commands:&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
               echo &amp;quot;          status&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
               echo &amp;quot;          internal&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
               echo &amp;quot;          external&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
               echo &amp;quot;          mirror&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
               echo &amp;quot;          both&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
               echo &amp;quot;          toggle&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
               echo &amp;gt;&amp;amp;2&lt;br /&gt;
               ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== set permissions and restart acpi ==&lt;br /&gt;
As root, or using sudo run the following commands,&lt;br /&gt;
&lt;br /&gt;
 {{cmduser|sudo chmod 755 /usr/local/sbin/thinkpad-fn-f7}}&lt;br /&gt;
 {{cmduser|sudo service acpid restart}}&lt;br /&gt;
 OR&lt;br /&gt;
 {{cmduser|sudo /etc/init.d/acpid restart}}&lt;br /&gt;
&lt;br /&gt;
You should be ready to go, just press Fn-F7 to try.&lt;br /&gt;
&lt;br /&gt;
==Alternative script using .Xauthority rather than su ==&lt;br /&gt;
On systems where the previous script has trouble with the &amp;quot;su&amp;quot; command (I was getting &amp;quot;Can't open display -&amp;quot; errors in /var/log/acpid on Ubuntu 8.04), you can try getting the magic cookie out of the .Xauthority file.&lt;br /&gt;
&lt;br /&gt;
Each user has an ~/.Xauthority file with one line for each X display containing a 'magic cookie' (Run {{cmduser| xauth list}} to see the contents).  The Xserver reads the record in  ~/.Xauthority matching its display. When an X client application starts it also looks for that record and passes the magic cookie to the server. If it matches, the connection to the Xserver is allowed. Use the following script as an alternative &lt;br /&gt;
 action=/usr/local/sbin/toggle-display.sh&lt;br /&gt;
for /etc/acpi/events/ibm-videobtn&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# From: http://www.thinkwiki.org/wiki/Sample_Fn-F7_script&lt;br /&gt;
#&lt;br /&gt;
# External output may be &amp;quot;VGA&amp;quot; or &amp;quot;VGA-0&amp;quot; or &amp;quot;DVI-0&amp;quot; or &amp;quot;TMDS-1&amp;quot;&lt;br /&gt;
EXTERNAL_OUTPUT=&amp;quot;VGA&amp;quot;&lt;br /&gt;
INTERNAL_OUTPUT=&amp;quot;LVDS&amp;quot;&lt;br /&gt;
# EXTERNAL_LOCATION may be one of: left, right, above, or below&lt;br /&gt;
EXTERNAL_LOCATION=&amp;quot;right&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$EXTERNAL_LOCATION&amp;quot; in&lt;br /&gt;
       left|LEFT)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--left-of $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       right|RIGHT)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--right-of $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       top|TOP|above|ABOVE)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--above $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       bottom|BOTTOM|below|BELOW)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--below $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
       *)&lt;br /&gt;
               EXTERNAL_LOCATION=&amp;quot;--left-of $INTERNAL_OUTPUT&amp;quot;&lt;br /&gt;
               ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
function screen_external(){&lt;br /&gt;
       xrandr --output $INTERNAL_OUTPUT --off&lt;br /&gt;
       xrandr --output $EXTERNAL_OUTPUT --auto&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function screen_internal(){&lt;br /&gt;
       xrandr --output $EXTERNAL_OUTPUT --off&lt;br /&gt;
       xrandr --output $INTERNAL_OUTPUT --auto&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function screen_mirror(){&lt;br /&gt;
       xrandr --output $INTERNAL_OUTPUT --auto&lt;br /&gt;
       xrandr --output $EXTERNAL_OUTPUT --auto --same-as $INTERNAL_OUTPUT&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function screen_both(){&lt;br /&gt;
       xrandr --output $INTERNAL_OUTPUT --auto&lt;br /&gt;
       xrandr --output $EXTERNAL_OUTPUT --auto $EXTERNAL_LOCATION&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function screen_toggle(){&lt;br /&gt;
       # Figure out current state&lt;br /&gt;
       INTERNAL_STATE=$(xrandr | grep ^$INTERNAL_OUTPUT | grep con | sed &amp;quot;s/.*connected //&amp;quot; | sed &amp;quot;s/(.*//&amp;quot;)&lt;br /&gt;
       EXTERNAL_STATE=$(xrandr | grep ^$EXTERNAL_OUTPUT | grep con | sed &amp;quot;s/.*connected //&amp;quot; | sed &amp;quot;s/(.*//&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
       if [ -z &amp;quot;$INTERNAL_STATE&amp;quot; ]; then&lt;br /&gt;
         STATE=&amp;quot;external&amp;quot;&lt;br /&gt;
       elif [ -z &amp;quot;$EXTERNAL_STATE&amp;quot; ]; then&lt;br /&gt;
         STATE=&amp;quot;internal&amp;quot;&lt;br /&gt;
       else&lt;br /&gt;
         INTERNAL_STATE=$(echo $INTERNAL_STATE | sed &amp;quot;s/[0-9]*x[0-9]*//&amp;quot;)&lt;br /&gt;
         EXTERNAL_STATE=$(echo $EXTERNAL_STATE | sed &amp;quot;s/[0-9]*x[0-9]*//&amp;quot;)&lt;br /&gt;
         if [ &amp;quot;$INTERNAL_STATE&amp;quot; = &amp;quot;$EXTERNAL_STATE&amp;quot; ]; then&lt;br /&gt;
           STATE=&amp;quot;mirror&amp;quot;&lt;br /&gt;
         else&lt;br /&gt;
           STATE=&amp;quot;both&amp;quot;&lt;br /&gt;
         fi&lt;br /&gt;
       fi&lt;br /&gt;
&lt;br /&gt;
       case &amp;quot;$STATE&amp;quot; in&lt;br /&gt;
               internal)&lt;br /&gt;
                       screen_mirror&lt;br /&gt;
                       ;;&lt;br /&gt;
               mirror)&lt;br /&gt;
                       screen_external&lt;br /&gt;
                       ;;&lt;br /&gt;
               external)&lt;br /&gt;
                       screen_both&lt;br /&gt;
                       ;;&lt;br /&gt;
               both)&lt;br /&gt;
                       screen_internal&lt;br /&gt;
                       ;;&lt;br /&gt;
               *)&lt;br /&gt;
                       screen_internal&lt;br /&gt;
                       ;;&lt;br /&gt;
       esac&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# based on /etc/acpi/screenblank.sh (Ubuntu 7.10)&lt;br /&gt;
# . /usr/share/acpi-support/power-funcs         # for getXuser&lt;br /&gt;
getXuser() {&lt;br /&gt;
       user=`finger| grep -m1 &amp;quot;:$displaynum &amp;quot; | awk '{print $1}'`&lt;br /&gt;
       if [ x&amp;quot;$user&amp;quot; = x&amp;quot;&amp;quot; ]; then&lt;br /&gt;
               user=`finger| grep -m1 &amp;quot;:$displaynum&amp;quot; | awk '{print $1}'`&lt;br /&gt;
       fi&lt;br /&gt;
       if [ x&amp;quot;$user&amp;quot; != x&amp;quot;&amp;quot; ]; then&lt;br /&gt;
               userhome=`getent passwd $user | cut -d: -f6`&lt;br /&gt;
               export XAUTHORITY=$userhome/.Xauthority&lt;br /&gt;
       else&lt;br /&gt;
               export XAUTHORITY=&amp;quot;&amp;quot;&lt;br /&gt;
       fi&lt;br /&gt;
}&lt;br /&gt;
# end of getXuser from /usr/share/acpi-support/power-funcs&lt;br /&gt;
#&lt;br /&gt;
for x in /tmp/.X11-unix/*; do&lt;br /&gt;
   displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`&lt;br /&gt;
   getXuser;&lt;br /&gt;
   if [ x&amp;quot;$XAUTHORITY&amp;quot; != x&amp;quot;&amp;quot; ]; then&lt;br /&gt;
       export DISPLAY=&amp;quot;:$displaynum&amp;quot;&lt;br /&gt;
      screen_toggle&lt;br /&gt;
   fi&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A Python Toggle script ==&lt;br /&gt;
This is a somewhat over-elaborate script which could be cut down when run by the /usr/local/sbin/toggle-display.sh script above. It was written to explore all the possibilities rather than economy of execution. The functions 'toggle_full', 'position', 'toggle_limited' and the OptionParser in 'main'  may be omitted with suitable changes to function7. The appropriate outputs can be specified on the command line and it is not necessary to call it via acpi.&lt;br /&gt;
eg you can run it as {{cmduser|/usr/local/bin/toggle.py --help}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;python&amp;gt;&lt;br /&gt;
 #! /usr/bin/python&lt;br /&gt;
 # -*- coding: utf-8 -*-&lt;br /&gt;
 #&lt;br /&gt;
 # stinkpad(a)blueyonder.co.uk	2007-11-26&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;Toggle internal and external displays (equivalent to ThinkPad Fn7)&lt;br /&gt;
 Simple; cloned: on+off, on+on, off+on. &lt;br /&gt;
 Full; as simple plus xinerama: right, below,  left, above. &lt;br /&gt;
 Limited; as full but display will overlap if virtual screen is too small. &lt;br /&gt;
 Use 'xrandr -q' to determine output names. &lt;br /&gt;
 Further information: http://www.thinkwiki.org/wiki/Xorg_RandR_1.2 &lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 __usage__ = &amp;quot;usage: %prog [--help]|[[-i internal][-e external][-d displays]]&amp;quot;&lt;br /&gt;
 __version__ = &amp;quot;toggle [djclark.eu 2007-11-26]&amp;quot;&lt;br /&gt;
 #&lt;br /&gt;
 # Output names; Intel: LVDS VGA TV TMDS-1 TMDS-2&lt;br /&gt;
 #               ATI:   LVDS VGA-0 S-video DVI-0&lt;br /&gt;
 LAPTOP = 'LVDS' &lt;br /&gt;
 MONITOR = 'VGA'&lt;br /&gt;
 SEQUENCE = 'simple'&lt;br /&gt;
 #&lt;br /&gt;
 import sys&lt;br /&gt;
 import os&lt;br /&gt;
 import re&lt;br /&gt;
&lt;br /&gt;
 # &amp;quot;LVDS connected 1024x768+0+0 (normal left inverted right) 304mm x 228mm&amp;quot;&lt;br /&gt;
 REGEX_OUTPUT = re.compile(r&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 	(?x)					# ignore whitespace&lt;br /&gt;
 	^					# start of string&lt;br /&gt;
 	(?P&amp;lt;output&amp;gt;[A-Za-z0-9\-]*)[ ] 		# LVDS VGA etc&lt;br /&gt;
 	(?P&amp;lt;connect&amp;gt;(dis)?connected)[ ]		# dis/connected&lt;br /&gt;
 	((					# a group&lt;br /&gt;
  	(?P&amp;lt;width&amp;gt;\d+)x 			# either 1024x768+0+0&lt;br /&gt;
 	(?P&amp;lt;height&amp;gt;\d+)[+]  &lt;br /&gt;
  	(?P&amp;lt;horizontal&amp;gt;\d+)[+]&lt;br /&gt;
 	(?P&amp;lt;vertical&amp;gt;\d+)&lt;br /&gt;
 	)|[\D])					# or not a digit&lt;br /&gt;
 	.*					# ignore rest of line&lt;br /&gt;
 	&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 # &amp;quot;Screen 0: minimum 320 x 200, current 1024 x 768, maximum 2624 x 1968&amp;quot;&lt;br /&gt;
 REGEX_SCREEN = re.compile(r&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 	(?x) 				# ignore whitespace&lt;br /&gt;
 	^				# start of string&lt;br /&gt;
 	Screen[ ]			&lt;br /&gt;
 	(?P&amp;lt;screen&amp;gt;\d)[: ]+&lt;br /&gt;
 	minimum[ ]&lt;br /&gt;
 	(?P&amp;lt;minWidth&amp;gt;\d+)[ x]+&lt;br /&gt;
 	(?P&amp;lt;minHeight&amp;gt;\d+)[, ]+&lt;br /&gt;
 	current[ ]+&lt;br /&gt;
 	(?P&amp;lt;curWidth&amp;gt;\d+)[ x]+&lt;br /&gt;
 	(?P&amp;lt;curHeight&amp;gt;\d+)[, ]+&lt;br /&gt;
 	maximum[ ]+&lt;br /&gt;
 	(?P&amp;lt;maxWidth&amp;gt;\d+)[ x]+&lt;br /&gt;
 	(?P&amp;lt;maxHeight&amp;gt;\d+)&lt;br /&gt;
 	&amp;quot;&amp;quot;&amp;quot;)	&lt;br /&gt;
&lt;br /&gt;
 def toggle_simple(d0, d1):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Toggle display states: on+off, on+on, off+on&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if d1['connect'] == 'disconnected': 	# external unplugged&lt;br /&gt;
        return ('auto','off',&amp;quot;&amp;quot;) 		#     switch off external&lt;br /&gt;
    if d1['width'] is 0: 			# external off&lt;br /&gt;
        return ('auto','auto',&amp;quot;&amp;quot;) 		#     both on&lt;br /&gt;
    if d0['width'] is 0: 			# laptop off&lt;br /&gt;
        return ('auto','off',&amp;quot;&amp;quot;) 		#    laptop on&lt;br /&gt;
    return ('off','auto',&amp;quot;&amp;quot;) 			# both on, laptop off&lt;br /&gt;
&lt;br /&gt;
 def toggle_full(d0, d1):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Toggle display states: 1+0, 1+1, 0+1, 1+E, 1+S, 1+W, 1+N&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
    if d1['connect'] == 'disconnected': 	# external unplugged&lt;br /&gt;
        return ('auto','off',&amp;quot;&amp;quot;) 		#     switch off external&lt;br /&gt;
    place = '--%s ' + d0['output']&lt;br /&gt;
    if d1['width'] == 0: 			# external off&lt;br /&gt;
        return ('auto','auto',place%'same-as') 	#     external on&lt;br /&gt;
    if d0['width'] == 0: 			# laptop off&lt;br /&gt;
        return ('auto','off',&amp;quot;&amp;quot;) 		#    laptop on&lt;br /&gt;
    if d1['horizontal'] &amp;gt; 0: 			# external to right&lt;br /&gt;
        return ('auto','auto',place%'below') 	#     make below&lt;br /&gt;
    if d1['vertical'] &amp;gt; 0: 			# external below&lt;br /&gt;
        return ('auto','auto',place%'left-of') 	#     make left&lt;br /&gt;
    if d0['horizontal'] &amp;gt; 0: 			# external left&lt;br /&gt;
        return ('auto','auto',place%'above') 	#     make above&lt;br /&gt;
    if d0['vertical'] &amp;gt; 0: 			# external above&lt;br /&gt;
        return ('off','auto',&amp;quot;&amp;quot;)  		#     laptop off&lt;br /&gt;
    return ('auto','auto',place%'right-of') 	# is same, make right&lt;br /&gt;
&lt;br /&gt;
 def position(orientation, da, db, screen):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Calculate offset position of second display&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    p = 'auto --pos %sx%s'&lt;br /&gt;
    if orientation == 'V':&lt;br /&gt;
        if (da['height'] + db['height']) &amp;lt;= screen['maxHeight']:&lt;br /&gt;
            return p%(0, da['height'])&lt;br /&gt;
        return p%(0, screen['maxHeight'] - db['height'])&lt;br /&gt;
    else:&lt;br /&gt;
        if (da['width'] + db['width']) &amp;lt;= screen['maxWidth']:&lt;br /&gt;
            return p%(da['width'],0)&lt;br /&gt;
        return p%(screen['maxWidth'] - db['width'],0)&lt;br /&gt;
&lt;br /&gt;
 def toggle_limited(d0, d1, sz):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Toggle display states (overlapped): 1+0,1+1,0+1,1+E,1+S,1+W,1+N&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if d1['connect'] == 'disconnected': 	# external unplugged&lt;br /&gt;
        return ('auto','off') 			#     switch off external&lt;br /&gt;
    if d1['width'] == 0: 				# external off&lt;br /&gt;
        return ('auto --pos 0x0','auto --pos 0x0') 	#     both on&lt;br /&gt;
    if d0['width'] == 0: 				# laptop off&lt;br /&gt;
        return ('auto --pos 0x0','off') 		#     laptop on&lt;br /&gt;
    if d1['horizontal'] &amp;gt; 0: 				# external to right&lt;br /&gt;
        return ('auto --pos 0x0',position('V',d0,d1,sz)) #     put *below&lt;br /&gt;
    if d1['vertical'] &amp;gt; 0: 				# external below&lt;br /&gt;
        return (position('H',d1,d0,sz),'auto --pos 0x0') #     put *left&lt;br /&gt;
    if d0['horizontal'] &amp;gt; 0: 				# external left&lt;br /&gt;
        return (position('V',d1,d0,sz),'auto --pos 0x0') #     put *above&lt;br /&gt;
    if d0['vertical'] &amp;gt; 0: 				# external above&lt;br /&gt;
        return ('off','auto --pos 0x0')  		#     laptop off&lt;br /&gt;
    return ('auto --pos 0x0',position('H',d0,d1,sz)) 	# both, put*right&lt;br /&gt;
&lt;br /&gt;
 class DisplayNameError(UnboundLocalError):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Internal or External Display Name not found by xrandr -q &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 def function7(disp0=LAPTOP, disp1=MONITOR, seq=SEQUENCE):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Use xrandr to read current display state and change state&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    for line in os.popen('xrandr -q').read().splitlines():&lt;br /&gt;
        if line.startswith(disp0,0) :&lt;br /&gt;
            d0_state = REGEX_OUTPUT.match(line).groupdict()&lt;br /&gt;
        elif line.startswith(disp1,0):&lt;br /&gt;
            d1_state = REGEX_OUTPUT.match(line).groupdict()&lt;br /&gt;
        elif line.startswith('Screen',0):&lt;br /&gt;
            screen_size = REGEX_SCREEN.match(line).groupdict()&lt;br /&gt;
        else:&lt;br /&gt;
            pass&lt;br /&gt;
    for i in ('width','height','horizontal','vertical'):&lt;br /&gt;
        try:&lt;br /&gt;
            d0_state[i] = int(d0_state[i])&lt;br /&gt;
        except TypeError:&lt;br /&gt;
            d0_state[i] = 0&lt;br /&gt;
        except UnboundLocalError:&lt;br /&gt;
            raise DisplayNameError, 'Internal Display: %s not found'% disp0&lt;br /&gt;
        try:&lt;br /&gt;
            d1_state[i] = int(d1_state[i])&lt;br /&gt;
        except TypeError:&lt;br /&gt;
            d1_state[i] = 0&lt;br /&gt;
        except UnboundLocalError:&lt;br /&gt;
            raise DisplayNameError, 'External Display: %s not found'% disp1&lt;br /&gt;
    for i in screen_size.keys():&lt;br /&gt;
        try:&lt;br /&gt;
            screen_size[i] = int(screen_size[i])&lt;br /&gt;
        except TypeError:&lt;br /&gt;
            screen_size[i] = 0&lt;br /&gt;
    #&lt;br /&gt;
    toggle = toggle_simple&lt;br /&gt;
    xrandr ='xrandr --output '+disp0+' --%s --output '+disp1+' --%s %s'&lt;br /&gt;
    if seq == 'full':&lt;br /&gt;
        toggle = toggle_full&lt;br /&gt;
    if seq == 'limited':&lt;br /&gt;
        toggle = toggle_limited&lt;br /&gt;
        xrandr ='xrandr --output '+disp0+' --%s --output '+disp1+' --%s'&lt;br /&gt;
        os.popen(xrandr % toggle(d0_state, d1_state, screen_size))&lt;br /&gt;
    else:&lt;br /&gt;
        os.popen(xrandr % toggle(d0_state, d1_state))&lt;br /&gt;
&lt;br /&gt;
 def main():&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot; Command line options &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    global LAPTOP,MONITOR,SEQUENCE&lt;br /&gt;
    from optparse import OptionParser&lt;br /&gt;
    p = OptionParser(usage=__usage__, version=__version__, description=__doc__)  &lt;br /&gt;
    p.set_defaults(internal=LAPTOP, external=MONITOR, displays=SEQUENCE)&lt;br /&gt;
    p.add_option('-i','--internal', dest=&amp;quot;internal&amp;quot;, metavar=LAPTOP,&lt;br /&gt;
 	help=&amp;quot;internal display&amp;quot;)&lt;br /&gt;
    p.add_option('-e','--external', dest=&amp;quot;external&amp;quot;, metavar=MONITOR,&lt;br /&gt;
  	help=&amp;quot;external display&amp;quot;)&lt;br /&gt;
    p.add_option('-d','--displays', dest=&amp;quot;displays&amp;quot;, action=&amp;quot;store&amp;quot;,&lt;br /&gt;
 	choices=('simple', 'limited', 'full'), metavar=SEQUENCE,&lt;br /&gt;
 	help='simple/limited/full')&lt;br /&gt;
    (opt, args) = p.parse_args()&lt;br /&gt;
    try:&lt;br /&gt;
        function7(opt.internal, opt.external, opt.displays)&lt;br /&gt;
    except DisplayNameError, err:&lt;br /&gt;
        print '\n'+str(err)+'\n'&lt;br /&gt;
        print os.popen('xrandr -q').read()&lt;br /&gt;
 #&lt;br /&gt;
 if __name__ == '__main__': 	#only when run from cmd line&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/python&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This modified thinkpad-fn-f7 calls the toggle python script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # usr/local/sbin/toggle-display.sh &lt;br /&gt;
 # based on /etc/acpi/screenblank.sh (Ubuntu 7.10)&lt;br /&gt;
 #&lt;br /&gt;
 # . /usr/share/acpi-support/power-funcs         # for getXuser&lt;br /&gt;
 umask 022;&lt;br /&gt;
 PATH=&amp;quot;$PATH:/usr/bin/X11&amp;quot;&lt;br /&gt;
 getXuser() {&lt;br /&gt;
        user=`finger| grep -m1 &amp;quot;:$displaynum &amp;quot; | awk '{print $1}'`&lt;br /&gt;
        if [ x&amp;quot;$user&amp;quot; = x&amp;quot;&amp;quot; ]; then&lt;br /&gt;
                user=`finger| grep -m1 &amp;quot;:$displaynum&amp;quot; | awk '{print $1}'`&lt;br /&gt;
        fi&lt;br /&gt;
        if [ x&amp;quot;$user&amp;quot; != x&amp;quot;&amp;quot; ]; then&lt;br /&gt;
                userhome=`getent passwd $user | cut -d: -f6`&lt;br /&gt;
                export XAUTHORITY=$userhome/.Xauthority&lt;br /&gt;
        else&lt;br /&gt;
                export XAUTHORITY=&amp;quot;&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
 }&lt;br /&gt;
 # end of getXuser from /usr/share/acpi-support/power-funcs&lt;br /&gt;
 #&lt;br /&gt;
 for x in /tmp/.X11-unix/*; do&lt;br /&gt;
    displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`&lt;br /&gt;
    getXuser;&lt;br /&gt;
    if [ x&amp;quot;$XAUTHORITY&amp;quot; != x&amp;quot;&amp;quot; ]; then&lt;br /&gt;
        export DISPLAY=&amp;quot;:$displaynum&amp;quot;&lt;br /&gt;
 ##     . /usr/share/acpi-support/screenblank.sh&lt;br /&gt;
        /usr/local/bin/toggle.py&lt;br /&gt;
    fi&lt;br /&gt;
 done&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Python XRandR===&lt;br /&gt;
[[http://www.glatzor.de/blog/blog-details/article/initial-release-of-python-xrandr Python XRandR]] is a set of python bindings to xrandr. The code is currently in development and the following code though much simpler than the python code above may not work reliably.&lt;br /&gt;
&lt;br /&gt;
  from xrandr import xrandr&lt;br /&gt;
  def toggle_simple():&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Toggle display states: on+off, off+on, on+on off+off&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    screen = xrandr.get_current_screen()&lt;br /&gt;
    outputs = screen.get_outputs()&lt;br /&gt;
    for o in outputs:&lt;br /&gt;
        if o.is_connected():&lt;br /&gt;
            if o.is_active():&lt;br /&gt;
                o.disable()&lt;br /&gt;
                print 'disable %s'% o.name&lt;br /&gt;
            else:&lt;br /&gt;
                o.set_to_preferred_mode()&lt;br /&gt;
                print 'set to preferred mode %s'% o.name&lt;br /&gt;
                break&lt;br /&gt;
    screen.apply_output_config()&lt;br /&gt;
&lt;br /&gt;
== Having Fn-F7 run a RandR GUI ==&lt;br /&gt;
Instead of using it to toggle various screen(s) configurations, one may want to have it run a RandR GUI, such as grandr.&lt;br /&gt;
&lt;br /&gt;
The following Debian wishlist bugs against the acpi-support package have patches attached that implement this behaviour using acpid; these patches are not Debian-specific, and actually provide example configuration for anyone interested into this:&lt;br /&gt;
 &lt;br /&gt;
* http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=515794&lt;br /&gt;
* http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=515796&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[[http://gitweb.freedesktop.org/?p=xorg/app/grandr.git grandr]] graphical interface to xrandr  using GTK+ libraries.&lt;br /&gt;
&lt;br /&gt;
[[https://edge.launchpad.net/python-xrandr python-xrandr]] Python bindings to xrandr which should enable a less clunky version of the python script above. Under development.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;/div&gt;</summary>
		<author><name>Intrigeri</name></author>
		
	</entry>
</feed>