<?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=Espa</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=Espa"/>
	<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/wiki/Special:Contributions/Espa"/>
	<updated>2026-05-11T21:30:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=34846</id>
		<title>Pentium M undervolting and underclocking</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=34846"/>
		<updated>2007-11-24T05:50:24Z</updated>

		<summary type="html">&lt;p&gt;Espa: /* Alternative 0: linux-phc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Intel Pentium M processors from the [[Intel Pentium M (Dothan)|Dothan]] and [[Intel Pentium M (Banias)|Banias]] families can be instructed to operate at voltage and clock frequencies lower than the nominal ones recommended by Intel and used by ThinkPads by default. Experience shows that the processor may continue working correctly at lower-than-nominal voltages and frequencies, thereby reducing power consumption, heat and fan noise.&lt;br /&gt;
&lt;br /&gt;
In the Pentium M, speed and voltage are controlled by software (through the MSR registers). It is up to the operating system to choose the right voltage for each frequency. Normally this is done according to tables published by Intel or according to ACPI tables. However, this can be overriden - in the case of Linux, by a kernel patch.&lt;br /&gt;
&lt;br /&gt;
{{WARN|Following this instructions will operate your CPU under conditions it was not designed for. Even if your system seems stable, it may still suffer transient faults leading to arbitrary data corruption. In addition, errors in following these instructions (or changes between processor models) may operate the CPU ''above'' its nominal parameters, which, if taken too far, can cause kernel panics or even possibly hardware damage}}&lt;br /&gt;
&lt;br /&gt;
For an example of what may be achieved, consider these examples: when voltages on one ThinkPad {{T43}} were reduced by 20-30%, stable CPU temperature dropped by 7-10deg under both idle and burn-in conditions. Combined with [[how to control fan speed|fan speed control]], this greatly reduced the [[Problem with fan noise|problem with fan noise]]. On one user's ThinkPad {{R51}}, an undervolt brought the full-load processor temperature down from 87 degrees to 63 degrees while maintaining full stability. The effect was, however, negligible at idle.&lt;br /&gt;
&lt;br /&gt;
{{NOTE|While under''volting'' has a clear measurable effect, it's not clear if under''clocking'' really works. &amp;lt;tt&amp;gt;/proc/cpuinfo&amp;lt;/tt&amp;gt; reflects the underclocked frequency, but enabling debug output on &amp;lt;tt&amp;gt;cpufreq&amp;lt;/tt&amp;gt; causes it to say things like &amp;quot;&amp;lt;tt&amp;gt;CPU frequency out of sync: cpufreq and timing core thinks of 533000, is 800000 kHz.&amp;lt;/tt&amp;gt;&amp;quot; where the former is the chosen underclocked frequency and the latter is the documented minimum frequency. This discrepancy also causes [[Software Suspend 2]] to oops during suspend.}}&lt;br /&gt;
&lt;br /&gt;
There are several methods to control CPU voltage in Linux, and currently all of them require a patched kernel.&lt;br /&gt;
&lt;br /&gt;
==Alternative 0: linux-phc==&lt;br /&gt;
&lt;br /&gt;
Use the [[linux-phc]] kernel patch. '''This is the recommended  method, as it is most generic and best supported.'''&lt;br /&gt;
* [ http://phc.athousandnights.de/linux-phc home page] &lt;br /&gt;
&lt;br /&gt;
The sysfs interface of linux-phc (version 0.3.0 or newer) requires you to specify VID (Voltage ID) numbers; see the documentation in the source package. For pre-Core Intel CPUs, VID is related to voltage (in mV) as follows: &amp;lt;tt&amp;gt;VID=(voltage-700)/16&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A typical configuration command would look something like this:&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|echo '27 22 16 10 3' &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/phc_vids}}&lt;br /&gt;
&lt;br /&gt;
== Alternative 1: patch with hard-coded voltages ==&lt;br /&gt;
=== Instructions ===&lt;br /&gt;
&lt;br /&gt;
# Determine the stable voltages for each frequency, using some overclocking/undervolting utility that has specific support for Pentium M (&amp;quot;Centrino&amp;quot;) processors. It seems that no such utility exists for Linux. For windows, one good choice is [http://www.pbus-167.com/chc.htm Notebook Hardware Control (NHC)], which conveniently also includes a table of nominal frequencies and voltages (in its help file).&amp;lt;br&amp;gt; Ascertain that at the undervolted settings the CPU actually performs correct computation ([http://www.mersenne.org/freesoft.htm Prime95] in &amp;quot;Tortute Test&amp;quot; mode seems to be a good partial test emphasizing FPU and memory access).&amp;lt;br&amp;gt; Note that beside reducing voltages (undervolting), you can also try to add lower frequencies (underclocking). If you undervolt a particular frequency too much your machine is likely to crash, so try not to have any other programs open.&lt;br /&gt;
# Determine the model name string reported by the CPU, e.g., via the &amp;quot;&amp;lt;tt&amp;gt;Model name&amp;lt;/tt&amp;gt;&amp;quot; line in {{path|/proc/cpuinfo}}, and likewise the &amp;lt;tt&amp;gt;cpu_family&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;model&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;stepping&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Grab a copy of the example patch below and update it to reflect the parameters, frequencies and voltages you found.&lt;br /&gt;
# Apply the patch to your kernel (tested with 2.6.13.1 and 2.6.14-rc2).&lt;br /&gt;
# To prevent the ACPI table from overriding your table, disable the &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt; kernel option.&lt;br /&gt;
# Compile and install the new kernel.&lt;br /&gt;
&lt;br /&gt;
The changes should be active now. If you want to see debug information attesting to thus, do the following:&lt;br /&gt;
&lt;br /&gt;
# Reboot in &amp;lt;tt&amp;gt;single&amp;lt;/tt&amp;gt; mode.&lt;br /&gt;
# {{cmdroot|echo 2 &amp;gt; /sys/module/cpufreq/parameters/debug}}&lt;br /&gt;
# {{cmdroot|modprobe speedstep-centrino}}&lt;br /&gt;
# {{cmdroot|dmesg}} and check for the message &amp;quot;&amp;lt;tt&amp;gt;speedstep-centrino: found &amp;quot;Intel(R) Pentium(R) M processor &amp;lt;/tt&amp;gt;...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you don't see that message, you got the &amp;lt;tt&amp;gt;cpu_id&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;model_name&amp;lt;/tt&amp;gt; parmaeters wrong. If your system crashes, re-test the voltages and adjust accordingly.&lt;br /&gt;
&lt;br /&gt;
Please report your results (including voltages)!&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel patch (example) ===&lt;br /&gt;
&lt;br /&gt;
The following example shows how to undervolt a Pentium M 750 (1.86GHz) on a ThinkPad {{T43}}. As discussed above, the parameters are specific to this one CPU. You will need to experimentally find the correct settings for your own CPU and adjust the patch accordingly.&lt;br /&gt;
&lt;br /&gt;
Note that the Pentium M 750 has a 533MHz FSB (quad-pumped 133MHz), hence the use of &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt;. If you have a Pentium M with 400MHz FSB (i.e., quad-pumped 100MHz, found in [[Intel Pentium M (Banias)|Banias]] and older [[Intel Pentium M (Dothan)|Dothan]]) then in the voltage table change &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;OP&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|undervolt-pentium-m-2.6.13.1.patch}}&lt;br /&gt;
&lt;br /&gt;
Don't forget to disable &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Alternative 2: patch with user-space control==&lt;br /&gt;
&lt;br /&gt;
If you want to use the Ubuntu 2.6.15 Kernel, please have a look at this thread: http://ubuntuforums.org/showthread.php?t=146366&lt;br /&gt;
&lt;br /&gt;
The [http://fabrice.bellamy.club.fr/bdz.undervolt.2005.10.22.a.patch bdz.undervolt.2005.10.22.a.patch] patch, written by Gentoo-Wiki user &amp;quot;Bdz&amp;quot;, allows voltages to be changed without reboot.&lt;br /&gt;
&lt;br /&gt;
It presents a userspace interface, as in the following example:&lt;br /&gt;
:{{cmdroot|cat /sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
:{{cmdresult|1356,1356,1356,1356,1356,1356,1356,1244,1116,988}}&lt;br /&gt;
:{{cmdroot|echo &amp;quot;1084,1084,1084,1084,1084,1084,1084,988,908,860&amp;quot; &amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
&lt;br /&gt;
The relevant [http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU page] on Gentoo-Wiki providues further information and some helpful hints and scripts for voltage adjustment.&lt;br /&gt;
&lt;br /&gt;
When applying this patch be sure to keep the &amp;quot;ACPI tables for decoding frequency pairs&amp;quot; option -- this patch only allows adjustment of the voltages for the normal clock speeds as reported by the ACPI table in the BIOS.  On some models (e.g., ThinkPad {{T43}}) this does not include all clock speeds supported by the processor.&lt;br /&gt;
&lt;br /&gt;
=Initscript=&lt;br /&gt;
This is a Gentoo initscript for the patch from Gentoo-Wiki user &amp;quot;Bdz&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration file ===&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
# /etc/conf.d/undervoltage&lt;br /&gt;
&lt;br /&gt;
# voltage table sysfs interface&lt;br /&gt;
VTABLE_SYSFS=&amp;quot;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# switch back to  DEFAULT_VTABLE if undervoltage is stopped? [yes/no]&lt;br /&gt;
SWITCH_BACK=&amp;quot;no&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# pentium-m banias 1,7GHz default voltages&lt;br /&gt;
DEFAULT_VTABLE=&amp;quot;1484,1308,1228,1116,1004,956&amp;quot;&lt;br /&gt;
# pentium-m banias 1,7GHz lowered voltages [ -208mV ]&lt;br /&gt;
MOD_VTABLE=&amp;quot;1276,1100,1020,908,796,748&amp;quot;&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Initscript ===&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
#!/sbin/runscript&lt;br /&gt;
# Copyright 1999-2005 Gentoo Foundation&lt;br /&gt;
# Distributed under the terms of the GNU General Public License v2&lt;br /&gt;
# $Header: $&lt;br /&gt;
&lt;br /&gt;
sysfs_check() {&lt;br /&gt;
&lt;br /&gt;
        if ! [ -e ${VTABLE_SYSFS} ]; then&lt;br /&gt;
                logger &amp;quot;No sysfs voltage_table present. Modifying vcore voltage failed.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;It seems that the undervolting patch has not been applied to the kernel.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;see http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU for further information&amp;quot;&lt;br /&gt;
                return 1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        sysfs_check || return 1&lt;br /&gt;
        ebegin &amp;quot;Switching to modified voltage table [${MOD_VTABLE}]&amp;quot;&lt;br /&gt;
                echo ${MOD_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
        eend $?&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# I think it is not necessary to switch to the default voltage table on shutdown&lt;br /&gt;
stop() {&lt;br /&gt;
        if [ $SWITCH_BACK = &amp;quot;yes&amp;quot; ]; then&lt;br /&gt;
                ebegin &amp;quot;Switching back to default voltage table [${DEFAULT_VTABLE}]&amp;quot;&lt;br /&gt;
                        echo ${DEFAULT_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
                eend $?&lt;br /&gt;
        fi &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Alternative 3: another patch with user-space control==&lt;br /&gt;
&lt;br /&gt;
The [http://avkrok.net/nw8240/centrino-voltages.diff centrino-voltages.diff] patch, written by Rickard Holmberg, also provides user-space control. See [http://avkrok.net/nw8240/ here] and [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-December/030772.html here] for usage.&lt;br /&gt;
&lt;br /&gt;
==Stress Testing==&lt;br /&gt;
&lt;br /&gt;
This [[Undervolt Stress Testing Script|script]] illustrates a very conservative method to stress test your lowered voltage settings.&lt;br /&gt;
&lt;br /&gt;
==Tested frequencies/voltages==&lt;br /&gt;
&lt;br /&gt;
If you have done excessive testing with user defined frequencies (stable system for over a month).&lt;br /&gt;
and no lookups occur when computing primes with mprime http://mersenne.org/ (gentoo: 'emerge gimps')&lt;br /&gt;
you can post your frequencies here. But note that this is just a rough indication, since the stable values will differ between individual processors, even in the same model.&lt;br /&gt;
&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
! CPU Type !! GHz !! Frequency Steps&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M Banias || 1.6  || 1212,1084,956,860,796,748&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M Banias || 1.7  || 1276,1100,1020,908,796,748&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M Dothan || 1.4 || 924,892,860,828,796,764,732,700&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M Dothan || 1.86 || 1068,972,876,780,700&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M SL6F7  || 1.6  || 1196,1052,956,860,780,732&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M Dothan || 1.5 || 924,892,860,828,812,796,764,732,700&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M Dothan || 2.0 || 1084,940,844,764,748&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Following values were obtained with: (running at the same time)&lt;br /&gt;
&amp;lt;bash&amp;gt;&lt;br /&gt;
nice -n19 glxgears &amp;amp;&lt;br /&gt;
mplayer somedivx.avi &amp;amp;&lt;br /&gt;
cd /usr/src/linux &amp;amp;&amp;amp; make -j2&lt;br /&gt;
&amp;lt;/bash&amp;gt;&lt;br /&gt;
* note1: for pre-Core Intel CPUs, VID is related to voltage (in mV) as follows: VID=(voltage-700)/16 (or: voltage=(VID*16+700) mV)&lt;br /&gt;
* note2: when testing for stability you should pay attention to sound too, occasional distortions which disappear after bumping voltage a notch or two&lt;br /&gt;
* note3: if you use phc_vids for your script, then take only second number in each pair&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
! Machine !! CPU Type !! GHz !! phc_controls (fid:vid)&lt;br /&gt;
|-&lt;br /&gt;
| {{X41T}} || Pentium-M Dothan LV (758) || 1.5 || 15:15 14:13 13:11 12:9 11:7 10:5 9:3 8:2 6:2&lt;br /&gt;
|-&lt;br /&gt;
| {{X32}} || Pentium-M Dothan (745) || 1.8 || 18:26 16:20 14:15 12:11 10:6 8:2 6:1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>Espa</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Patch_for_controlling_fan_speed&amp;diff=25147</id>
		<title>Talk:Patch for controlling fan speed</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Patch_for_controlling_fan_speed&amp;diff=25147"/>
		<updated>2006-10-07T11:38:47Z</updated>

		<summary type="html">&lt;p&gt;Espa: Speed Control Patch for 2.6.18?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Windows XP port==&lt;br /&gt;
How would I port this patch to Windows XP? &lt;br /&gt;
&lt;br /&gt;
--Jason&lt;br /&gt;
&lt;br /&gt;
You can't. But you can write a Windows device driver based on the specs and [[ibm-acpi]].&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 18:54, 7 Nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
==gkrellm support==&lt;br /&gt;
&lt;br /&gt;
I can confirm that it works on Thinkpad {{T43}} here. However after&lt;br /&gt;
applying the patch, the fan speed monitor of gkrellm 2.2.7 cannot read&lt;br /&gt;
value correctly. Maybe we gkrellm is reading the second line for speed&lt;br /&gt;
but instead find the line for level, so it got confused? Would it be possible to interchange the lines so that speed still appears in the &lt;br /&gt;
second line and level appears in the third instead? I'm no coder, just &lt;br /&gt;
a suggestion to improve the patch.&lt;br /&gt;
&lt;br /&gt;
--Jiang&lt;br /&gt;
&lt;br /&gt;
I'd say it's a bug in gkrellm. It should parse the line header rather than relying on line numbers. But feel free to change (and test) the patch if you wish.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 05:14, 26 Oct 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
== patch to keep gkrell working against 2.6.14 ==&lt;br /&gt;
&lt;br /&gt;
As in &amp;quot;works for me on a T43p&amp;quot;, use with caution at your own risk. And thanks to thinker for the original patch, very nice work.&lt;br /&gt;
&lt;br /&gt;
(See article for the actual patch)&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|Spiney]]&lt;br /&gt;
&lt;br /&gt;
Looks excellent, why not add it to the article page? Also, care to provide a license (preferably public domain like my patch) so the kernel guys can handle it? Speaking of which, the kernel people seem to like their patches generated via &amp;quot;diff -up vanilla-kernel-2.6.14 patched-kernel-2.6.14&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 22:04, 1 Nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
Done, using the -p option for diff and &amp;quot;borrowing&amp;quot; your sentence for licensing purposes.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|Spiney]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Updated script for unpatched kernels ==&lt;br /&gt;
Moved to the [[ACPI fan control script]] article page, after joint development by [[User:Spiney|Spiney]] and [[User:Thinker|Thinker]].&lt;br /&gt;
&lt;br /&gt;
== whats the problem kernel 2.6.14 ==&lt;br /&gt;
&lt;br /&gt;
hi all,&lt;br /&gt;
&lt;br /&gt;
i patched the kernel with the patch for 2.6.14 with the option:&lt;br /&gt;
/usr/src/linux # patch -p0 -l -i ../ibm_acpi.patch (which i copy&amp;amp;pasted)&lt;br /&gt;
&lt;br /&gt;
they dont show me errors or so. but after i reboot and load the modul ibm_acpi i cant see any /proc/acpi/ibm/fan&lt;br /&gt;
&lt;br /&gt;
whats the problem? copy&amp;amp;past ( tab -&amp;gt; space?)&lt;br /&gt;
or is it a problem in my kernel config?&lt;br /&gt;
&lt;br /&gt;
greetings and big thx from .ch, &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
system: ibm thinkpad t43p&lt;br /&gt;
kernel: 2.6.14&lt;br /&gt;
&lt;br /&gt;
--[[User:62.203.29.204|62.203.29.204]] 19:22, 9 Nov 2005 (CET)kru&lt;br /&gt;
&lt;br /&gt;
You need to pass the &amp;quot;&amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt;&amp;quot; module parameter to ibm-acpi:&lt;br /&gt;
 # modprobe ibm_acpi experimental=1&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:01, 9 Nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
big thx!!! problem solved.&lt;br /&gt;
&lt;br /&gt;
--[[User:62.203.29.204|62.203.29.204]]&lt;br /&gt;
&lt;br /&gt;
== Fan control does not work with Suse 10.1 ? ==&lt;br /&gt;
&lt;br /&gt;
Hi, &lt;br /&gt;
&lt;br /&gt;
I successfully installed and used the fan control script on my T43p with Suse 10.0.&lt;br /&gt;
&lt;br /&gt;
Yesterday, I installed Suse 10.1 from scratch. Unfortunately fan control does not work with Suse 10.1:&lt;br /&gt;
&lt;br /&gt;
\# echo level 2 &amp;gt; /proc/acpi/ibm/fan&lt;br /&gt;
bash: echo: write error: Invalid argument&lt;br /&gt;
&lt;br /&gt;
Are there any substantial differences between Suse 10.0 and 10.1 with respect to ibm_acpi?&lt;br /&gt;
&lt;br /&gt;
== Speed Control Patch for 2.6.18? ==&lt;br /&gt;
&lt;br /&gt;
Hi All.&lt;br /&gt;
I'm trying to apply the speed control patch to vanilla 2.6.18 but it looks like it failed. Anyone who can point me to a direction for 2.6.18 patch?&lt;br /&gt;
Thanks&lt;/div&gt;</summary>
		<author><name>Espa</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Ipw2200&amp;diff=24368</id>
		<title>Ipw2200</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Ipw2200&amp;diff=24368"/>
		<updated>2006-08-27T03:13:33Z</updated>

		<summary type="html">&lt;p&gt;Espa: /* WPA support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
=== Intel PRO/Wireless 2200/2915 Driver for WiFi ===&lt;br /&gt;
Linux driver for the 802.11bg and 802.11abg NICs - miniPCI cards - found in Centrino laptops. This driver only works on 2.6.x kernels (2.6.4 or newer).&lt;br /&gt;
&lt;br /&gt;
Starting with kernels 2.6.14 the driver is included in kernel.&lt;br /&gt;
&lt;br /&gt;
The following adapters sold by IBM use these chips:&lt;br /&gt;
* [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]]&lt;br /&gt;
* [[Intel PRO/Wireless 2915ABG Mini-PCI Adapter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|Make sure you have installed the firmware! The ipw2200 documentation will tell you where to find these firmware files and where to install those.}}&lt;br /&gt;
&lt;br /&gt;
=== Project Homepage / Availability ===&lt;br /&gt;
http://ipw2200.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
*{{Fedora}} Packages(1): Fedora Core includes the ipw2200-drivers in FC3 (with updates) and FC4. You still need to grab the firmware from http://rpm.livna.org/&lt;br /&gt;
*{{Fedora}} Packages(2): http://www.atrpms.net/name/ipw2200/ &lt;br /&gt;
*{{Mandriva}}: The ipw2200 driver modules are included in the stock kernel package; the firmware is included in the commercial distribution or available from http://plf.zarb.org/.&lt;br /&gt;
*{{Gentoo}}: The driver is in the portage tree: emerge net-wireless/ipw2200 and net-wireless/ipw2200-firmware&lt;br /&gt;
*{{Debian}} Packages: http://packages.debian.org/ipw2200-source&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
In development, usable, WEP 128bit encryption works, WPA does also work with drivers &amp;gt;= 1.0.2 and [[wpa_supplicant]], monitor/rfmon is supported as with version &amp;gt;= 1.0.6. Generally works well, but some users experience problems (especially with firmware restarts and with WPA functionality using [[wpa_supplicant]]). Passing the &amp;lt;tt&amp;gt;hwcrypto=0&amp;lt;/tt&amp;gt; module parameter improves reliability for many users.&lt;br /&gt;
&lt;br /&gt;
The [[ipw2200]] driver up to version 1.0.6 (in combination with some newer kernels) had a problem getting DHCP leases (it turned out to be a bug in the broadcasting code). Version 1.0.7 seems to have fixed this.&lt;br /&gt;
&lt;br /&gt;
Older [[ipw2200]] driver versions shipped by many distributions have been reported to freeze a T43 after several minutes of intensive communication.  Installing version 1.1.2 of the driver solved the problem.&lt;br /&gt;
&lt;br /&gt;
Latest stable versions:&lt;br /&gt;
* ipw2200 driver: 1.1.0&lt;br /&gt;
* firmware: 2.4&lt;br /&gt;
* ieee80211 stack: 1.1.12&lt;br /&gt;
&lt;br /&gt;
Latest development versions:&lt;br /&gt;
* ipw2200 driver: 1.1.3&lt;br /&gt;
* firmware: 3.0&lt;br /&gt;
* ieee80211 stack: 1.1.14&lt;br /&gt;
&lt;br /&gt;
Mainline kernels contain older (but mostly functional) versions of ipw2200 and ieee80211, and still require the addition of the [http://ipw2200.sourceforge.net/firmware.php firmware] files. To get the latest versions you need to separately install the [http://ipw2200.sourceforge.net/downloads.php ipw2200] module and [http://ieee80211.sourceforge.net/downloads.php ieee80211] stack.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Installation from sourcecode ===&lt;br /&gt;
Download the latest [http://ieee80211.sourceforge.net/downloads.php ieee80211] stack and install it:&lt;br /&gt;
:{{cmdroot|tar xzvf ieee80211-1.1.14.tgz}}&lt;br /&gt;
:{{cmdroot|cd ieee80211-1.1.14}}&lt;br /&gt;
:{{cmdroot|make}}&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
Download the latest [http://ipw2200.sourceforge.net/downloads.php ipw2200] module and install it:&lt;br /&gt;
:{{cmdroot|tar xzvf ipw2200-1.1.3.tgz}}&lt;br /&gt;
:{{cmdroot|cd ipw2200-1.1.3}}&lt;br /&gt;
:{{cmdroot|make}}&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
Download the matching [http://ipw2200.sourceforge.net/firmware.php firmware] and install it:&lt;br /&gt;
:{{cmdroot|tar xzvf ipw2200-fw-3.0.tgz -C /lib/firmware}}&lt;br /&gt;
&lt;br /&gt;
=== Installation on Debian ===&lt;br /&gt;
Install ieee80211-source:&lt;br /&gt;
:{{cmdroot|apt-get install ieee80211-source}}&lt;br /&gt;
:{{cmdroot|module-assistant -t build ieee80211-source}}&lt;br /&gt;
&lt;br /&gt;
Install ipw2200-source:&lt;br /&gt;
:{{cmdroot|apt-get install ipw2200-source}}&lt;br /&gt;
:{{cmdroot|module-assistant -t build ipw2200-source}}&lt;br /&gt;
&lt;br /&gt;
There is a bug in the {{Debian}} package (last checked: Dec 30th 2005) that prevents from linking to &amp;lt;tt&amp;gt;ieee80211&amp;lt;/tt&amp;gt; modules using module-assistant. In case it is not fixed in your version, fall back to the regular source installation procedure described above.&lt;br /&gt;
&lt;br /&gt;
The firmware is not distributed with debian due to licensing reasons, download the matching [http://ipw2200.sourceforge.net/firmware.php firmware] and install it:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|tar xzvf ipw2200-fw-2.4.tgz -C /lib/hotplug/firmware}}&lt;br /&gt;
&lt;br /&gt;
see /etc/hotplug/firmware.agent for details on configured firmware locations&lt;br /&gt;
&lt;br /&gt;
In etch the firmware can also be placed in /lib/firmware&lt;br /&gt;
&lt;br /&gt;
=== Installation on Fedora Core ===&lt;br /&gt;
Installation on Fedora Core 5 works out of the box provided you install the ipw2200-firmware package. However, certain parts of the install process may not set up the wireless networking in a friendly manner using GNOME system tray icons and other tools. Bill Moss has written some excellent HowTo articles, including using VPNC to connect to a remote Cisco IPSec network.&lt;br /&gt;
&lt;br /&gt;
* [http://www.ces.clemson.edu/linux/fc2-ipw2200.shtml Fedora Core 5 and the IPW2200 Wireless Driver]&lt;br /&gt;
* [http://www.ces.clemson.edu/linux/nm.shtml Fedora Core 5 NetworkManager, NetworkManager-vpnc and Wireless Driver IPW2200]&lt;br /&gt;
&lt;br /&gt;
===Testing the driver ===&lt;br /&gt;
:{{cmdroot|modprobe ipw2200}}&lt;br /&gt;
:{{cmdroot|iwconfig}}&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|dmesg}} output might look similar to this:&lt;br /&gt;
 ieee80211: 802.11 data/management/control stack, 1.1.6&lt;br /&gt;
 ieee80211: Copyright (C) 2004-2005 Intel Corporation &amp;lt;jketreno@linux.intel.com&amp;gt;&lt;br /&gt;
 ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.0.8&lt;br /&gt;
 ipw2200: Copyright(c) 2003-2005 Intel Corporation&lt;br /&gt;
 ipw2200: Detected Intel PRO/Wireless 2915ABG Network Connection&lt;br /&gt;
&lt;br /&gt;
NB: To make the wifi LED work on the thinkpad, pass the option {{bootparm|led|1}} to the kernel while loading the module. eg. {{cmdroot|1=modprobe ipw2200 led=1}}.  This can also be accomplished by adding that option to the file where your distribution looks for modprobe options so that it becomes automatic.&lt;br /&gt;
&lt;br /&gt;
In debian this can be done by putting a file named after the module in /etc/modutils with the options in it&lt;br /&gt;
&lt;br /&gt;
here we might run a cmd like this&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|1=echo options ipw2200 led=1 &amp;gt; /etc/modutils/ipw2200 }}&lt;br /&gt;
&lt;br /&gt;
then we must run update-modules to remake /etc/module.conf&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|update-modules}}&lt;br /&gt;
&lt;br /&gt;
== WPA support ==&lt;br /&gt;
&lt;br /&gt;
Use [[wpa_supplicant]] with the &amp;lt;tt&amp;gt;-Dwext&amp;lt;/tt&amp;gt; argument (not &amp;lt;tt&amp;gt;-Dipw&amp;lt;/tt&amp;gt;), and pass the &amp;lt;tt&amp;gt;hwcrypto=0&amp;lt;/tt&amp;gt; argument to the &amp;lt;tt&amp;gt;ipw2200&amp;lt;/tt&amp;gt; module.&lt;br /&gt;
&lt;br /&gt;
There are some very detailed instructions with working sample configurations on the following link:&lt;br /&gt;
[http://www.bughost.org/ipw/wpa_howto.txt ipw2200 WPA instruction]&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
To enable power management, issue:&lt;br /&gt;
:{{cmdroot|iwpriv wlan0 set_power 7}}&lt;br /&gt;
where &amp;lt;tt&amp;gt;wlan0&amp;lt;/tt&amp;gt; is the name if your interface. This will reduce idle power consumption by several Watts compared to no power management.&lt;br /&gt;
&lt;br /&gt;
*To disable the radio (and further reduce power consumption) when the card is not in use, issue:&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/bus/pci/drivers/ipw2200/*/rf_kill}}&lt;br /&gt;
*To enable the radio, issue:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/bus/pci/drivers/ipw2200/*/rf_kill}}&lt;br /&gt;
*To make the radio off by default after boot, add &lt;br /&gt;
 options ipw2200 disable=1&lt;br /&gt;
to your {{path|/etc/modprobe.conf}} or equivalent.&lt;br /&gt;
&lt;br /&gt;
See {{path|README.ipw2200}} in the &amp;lt;tt&amp;gt;ipw2200&amp;lt;/tt&amp;gt; package for details and other options.&lt;br /&gt;
&lt;br /&gt;
== Additional Comments ==&lt;br /&gt;
Your kernel may include an old version of the ipw2200 driver. It is recommended to use the latest version.&lt;br /&gt;
&lt;br /&gt;
Make sure you also install the firmware version needed by the driver version you use. You can find the firmware [http://ipw2200.sourceforge.net/firmware.php here]. To install it, decompress the &amp;lt;tt&amp;gt;.tgz&amp;lt;/tt&amp;gt; file into {{path|/lib/firmware}}.&lt;br /&gt;
&lt;br /&gt;
The driver doesn't appear to support the MII interface, so any tools like automatic network configuration managers (i.e. whereami) that rely on mii-tool do not work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Espa</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Ipw2200&amp;diff=24367</id>
		<title>Ipw2200</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Ipw2200&amp;diff=24367"/>
		<updated>2006-08-27T03:12:51Z</updated>

		<summary type="html">&lt;p&gt;Espa: /* WPA support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
=== Intel PRO/Wireless 2200/2915 Driver for WiFi ===&lt;br /&gt;
Linux driver for the 802.11bg and 802.11abg NICs - miniPCI cards - found in Centrino laptops. This driver only works on 2.6.x kernels (2.6.4 or newer).&lt;br /&gt;
&lt;br /&gt;
Starting with kernels 2.6.14 the driver is included in kernel.&lt;br /&gt;
&lt;br /&gt;
The following adapters sold by IBM use these chips:&lt;br /&gt;
* [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]]&lt;br /&gt;
* [[Intel PRO/Wireless 2915ABG Mini-PCI Adapter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|Make sure you have installed the firmware! The ipw2200 documentation will tell you where to find these firmware files and where to install those.}}&lt;br /&gt;
&lt;br /&gt;
=== Project Homepage / Availability ===&lt;br /&gt;
http://ipw2200.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
*{{Fedora}} Packages(1): Fedora Core includes the ipw2200-drivers in FC3 (with updates) and FC4. You still need to grab the firmware from http://rpm.livna.org/&lt;br /&gt;
*{{Fedora}} Packages(2): http://www.atrpms.net/name/ipw2200/ &lt;br /&gt;
*{{Mandriva}}: The ipw2200 driver modules are included in the stock kernel package; the firmware is included in the commercial distribution or available from http://plf.zarb.org/.&lt;br /&gt;
*{{Gentoo}}: The driver is in the portage tree: emerge net-wireless/ipw2200 and net-wireless/ipw2200-firmware&lt;br /&gt;
*{{Debian}} Packages: http://packages.debian.org/ipw2200-source&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
In development, usable, WEP 128bit encryption works, WPA does also work with drivers &amp;gt;= 1.0.2 and [[wpa_supplicant]], monitor/rfmon is supported as with version &amp;gt;= 1.0.6. Generally works well, but some users experience problems (especially with firmware restarts and with WPA functionality using [[wpa_supplicant]]). Passing the &amp;lt;tt&amp;gt;hwcrypto=0&amp;lt;/tt&amp;gt; module parameter improves reliability for many users.&lt;br /&gt;
&lt;br /&gt;
The [[ipw2200]] driver up to version 1.0.6 (in combination with some newer kernels) had a problem getting DHCP leases (it turned out to be a bug in the broadcasting code). Version 1.0.7 seems to have fixed this.&lt;br /&gt;
&lt;br /&gt;
Older [[ipw2200]] driver versions shipped by many distributions have been reported to freeze a T43 after several minutes of intensive communication.  Installing version 1.1.2 of the driver solved the problem.&lt;br /&gt;
&lt;br /&gt;
Latest stable versions:&lt;br /&gt;
* ipw2200 driver: 1.1.0&lt;br /&gt;
* firmware: 2.4&lt;br /&gt;
* ieee80211 stack: 1.1.12&lt;br /&gt;
&lt;br /&gt;
Latest development versions:&lt;br /&gt;
* ipw2200 driver: 1.1.3&lt;br /&gt;
* firmware: 3.0&lt;br /&gt;
* ieee80211 stack: 1.1.14&lt;br /&gt;
&lt;br /&gt;
Mainline kernels contain older (but mostly functional) versions of ipw2200 and ieee80211, and still require the addition of the [http://ipw2200.sourceforge.net/firmware.php firmware] files. To get the latest versions you need to separately install the [http://ipw2200.sourceforge.net/downloads.php ipw2200] module and [http://ieee80211.sourceforge.net/downloads.php ieee80211] stack.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Installation from sourcecode ===&lt;br /&gt;
Download the latest [http://ieee80211.sourceforge.net/downloads.php ieee80211] stack and install it:&lt;br /&gt;
:{{cmdroot|tar xzvf ieee80211-1.1.14.tgz}}&lt;br /&gt;
:{{cmdroot|cd ieee80211-1.1.14}}&lt;br /&gt;
:{{cmdroot|make}}&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
Download the latest [http://ipw2200.sourceforge.net/downloads.php ipw2200] module and install it:&lt;br /&gt;
:{{cmdroot|tar xzvf ipw2200-1.1.3.tgz}}&lt;br /&gt;
:{{cmdroot|cd ipw2200-1.1.3}}&lt;br /&gt;
:{{cmdroot|make}}&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
Download the matching [http://ipw2200.sourceforge.net/firmware.php firmware] and install it:&lt;br /&gt;
:{{cmdroot|tar xzvf ipw2200-fw-3.0.tgz -C /lib/firmware}}&lt;br /&gt;
&lt;br /&gt;
=== Installation on Debian ===&lt;br /&gt;
Install ieee80211-source:&lt;br /&gt;
:{{cmdroot|apt-get install ieee80211-source}}&lt;br /&gt;
:{{cmdroot|module-assistant -t build ieee80211-source}}&lt;br /&gt;
&lt;br /&gt;
Install ipw2200-source:&lt;br /&gt;
:{{cmdroot|apt-get install ipw2200-source}}&lt;br /&gt;
:{{cmdroot|module-assistant -t build ipw2200-source}}&lt;br /&gt;
&lt;br /&gt;
There is a bug in the {{Debian}} package (last checked: Dec 30th 2005) that prevents from linking to &amp;lt;tt&amp;gt;ieee80211&amp;lt;/tt&amp;gt; modules using module-assistant. In case it is not fixed in your version, fall back to the regular source installation procedure described above.&lt;br /&gt;
&lt;br /&gt;
The firmware is not distributed with debian due to licensing reasons, download the matching [http://ipw2200.sourceforge.net/firmware.php firmware] and install it:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|tar xzvf ipw2200-fw-2.4.tgz -C /lib/hotplug/firmware}}&lt;br /&gt;
&lt;br /&gt;
see /etc/hotplug/firmware.agent for details on configured firmware locations&lt;br /&gt;
&lt;br /&gt;
In etch the firmware can also be placed in /lib/firmware&lt;br /&gt;
&lt;br /&gt;
=== Installation on Fedora Core ===&lt;br /&gt;
Installation on Fedora Core 5 works out of the box provided you install the ipw2200-firmware package. However, certain parts of the install process may not set up the wireless networking in a friendly manner using GNOME system tray icons and other tools. Bill Moss has written some excellent HowTo articles, including using VPNC to connect to a remote Cisco IPSec network.&lt;br /&gt;
&lt;br /&gt;
* [http://www.ces.clemson.edu/linux/fc2-ipw2200.shtml Fedora Core 5 and the IPW2200 Wireless Driver]&lt;br /&gt;
* [http://www.ces.clemson.edu/linux/nm.shtml Fedora Core 5 NetworkManager, NetworkManager-vpnc and Wireless Driver IPW2200]&lt;br /&gt;
&lt;br /&gt;
===Testing the driver ===&lt;br /&gt;
:{{cmdroot|modprobe ipw2200}}&lt;br /&gt;
:{{cmdroot|iwconfig}}&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|dmesg}} output might look similar to this:&lt;br /&gt;
 ieee80211: 802.11 data/management/control stack, 1.1.6&lt;br /&gt;
 ieee80211: Copyright (C) 2004-2005 Intel Corporation &amp;lt;jketreno@linux.intel.com&amp;gt;&lt;br /&gt;
 ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.0.8&lt;br /&gt;
 ipw2200: Copyright(c) 2003-2005 Intel Corporation&lt;br /&gt;
 ipw2200: Detected Intel PRO/Wireless 2915ABG Network Connection&lt;br /&gt;
&lt;br /&gt;
NB: To make the wifi LED work on the thinkpad, pass the option {{bootparm|led|1}} to the kernel while loading the module. eg. {{cmdroot|1=modprobe ipw2200 led=1}}.  This can also be accomplished by adding that option to the file where your distribution looks for modprobe options so that it becomes automatic.&lt;br /&gt;
&lt;br /&gt;
In debian this can be done by putting a file named after the module in /etc/modutils with the options in it&lt;br /&gt;
&lt;br /&gt;
here we might run a cmd like this&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|1=echo options ipw2200 led=1 &amp;gt; /etc/modutils/ipw2200 }}&lt;br /&gt;
&lt;br /&gt;
then we must run update-modules to remake /etc/module.conf&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|update-modules}}&lt;br /&gt;
&lt;br /&gt;
== WPA support ==&lt;br /&gt;
&lt;br /&gt;
Use [[wpa_supplicant]] with the &amp;lt;tt&amp;gt;-Dwext&amp;lt;/tt&amp;gt; argument (not &amp;lt;tt&amp;gt;-Dipw&amp;lt;/tt&amp;gt;), and pass the &amp;lt;tt&amp;gt;hwcrypto=0&amp;lt;/tt&amp;gt; argument to the &amp;lt;tt&amp;gt;ipw2200&amp;lt;/tt&amp;gt; module.&lt;br /&gt;
&lt;br /&gt;
There are some very detailed instructions with examples on the following link:&lt;br /&gt;
[http://www.bughost.org/ipw/wpa_howto.txt ipw2200 WPA instruction]&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
To enable power management, issue:&lt;br /&gt;
:{{cmdroot|iwpriv wlan0 set_power 7}}&lt;br /&gt;
where &amp;lt;tt&amp;gt;wlan0&amp;lt;/tt&amp;gt; is the name if your interface. This will reduce idle power consumption by several Watts compared to no power management.&lt;br /&gt;
&lt;br /&gt;
*To disable the radio (and further reduce power consumption) when the card is not in use, issue:&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/bus/pci/drivers/ipw2200/*/rf_kill}}&lt;br /&gt;
*To enable the radio, issue:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/bus/pci/drivers/ipw2200/*/rf_kill}}&lt;br /&gt;
*To make the radio off by default after boot, add &lt;br /&gt;
 options ipw2200 disable=1&lt;br /&gt;
to your {{path|/etc/modprobe.conf}} or equivalent.&lt;br /&gt;
&lt;br /&gt;
See {{path|README.ipw2200}} in the &amp;lt;tt&amp;gt;ipw2200&amp;lt;/tt&amp;gt; package for details and other options.&lt;br /&gt;
&lt;br /&gt;
== Additional Comments ==&lt;br /&gt;
Your kernel may include an old version of the ipw2200 driver. It is recommended to use the latest version.&lt;br /&gt;
&lt;br /&gt;
Make sure you also install the firmware version needed by the driver version you use. You can find the firmware [http://ipw2200.sourceforge.net/firmware.php here]. To install it, decompress the &amp;lt;tt&amp;gt;.tgz&amp;lt;/tt&amp;gt; file into {{path|/lib/firmware}}.&lt;br /&gt;
&lt;br /&gt;
The driver doesn't appear to support the MII interface, so any tools like automatic network configuration managers (i.e. whereami) that rely on mii-tool do not work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Espa</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Ipw2200&amp;diff=24366</id>
		<title>Ipw2200</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Ipw2200&amp;diff=24366"/>
		<updated>2006-08-27T03:12:21Z</updated>

		<summary type="html">&lt;p&gt;Espa: /* WPA support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
=== Intel PRO/Wireless 2200/2915 Driver for WiFi ===&lt;br /&gt;
Linux driver for the 802.11bg and 802.11abg NICs - miniPCI cards - found in Centrino laptops. This driver only works on 2.6.x kernels (2.6.4 or newer).&lt;br /&gt;
&lt;br /&gt;
Starting with kernels 2.6.14 the driver is included in kernel.&lt;br /&gt;
&lt;br /&gt;
The following adapters sold by IBM use these chips:&lt;br /&gt;
* [[Intel PRO/Wireless 2200BG Mini-PCI Adapter]]&lt;br /&gt;
* [[Intel PRO/Wireless 2915ABG Mini-PCI Adapter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|Make sure you have installed the firmware! The ipw2200 documentation will tell you where to find these firmware files and where to install those.}}&lt;br /&gt;
&lt;br /&gt;
=== Project Homepage / Availability ===&lt;br /&gt;
http://ipw2200.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
*{{Fedora}} Packages(1): Fedora Core includes the ipw2200-drivers in FC3 (with updates) and FC4. You still need to grab the firmware from http://rpm.livna.org/&lt;br /&gt;
*{{Fedora}} Packages(2): http://www.atrpms.net/name/ipw2200/ &lt;br /&gt;
*{{Mandriva}}: The ipw2200 driver modules are included in the stock kernel package; the firmware is included in the commercial distribution or available from http://plf.zarb.org/.&lt;br /&gt;
*{{Gentoo}}: The driver is in the portage tree: emerge net-wireless/ipw2200 and net-wireless/ipw2200-firmware&lt;br /&gt;
*{{Debian}} Packages: http://packages.debian.org/ipw2200-source&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
In development, usable, WEP 128bit encryption works, WPA does also work with drivers &amp;gt;= 1.0.2 and [[wpa_supplicant]], monitor/rfmon is supported as with version &amp;gt;= 1.0.6. Generally works well, but some users experience problems (especially with firmware restarts and with WPA functionality using [[wpa_supplicant]]). Passing the &amp;lt;tt&amp;gt;hwcrypto=0&amp;lt;/tt&amp;gt; module parameter improves reliability for many users.&lt;br /&gt;
&lt;br /&gt;
The [[ipw2200]] driver up to version 1.0.6 (in combination with some newer kernels) had a problem getting DHCP leases (it turned out to be a bug in the broadcasting code). Version 1.0.7 seems to have fixed this.&lt;br /&gt;
&lt;br /&gt;
Older [[ipw2200]] driver versions shipped by many distributions have been reported to freeze a T43 after several minutes of intensive communication.  Installing version 1.1.2 of the driver solved the problem.&lt;br /&gt;
&lt;br /&gt;
Latest stable versions:&lt;br /&gt;
* ipw2200 driver: 1.1.0&lt;br /&gt;
* firmware: 2.4&lt;br /&gt;
* ieee80211 stack: 1.1.12&lt;br /&gt;
&lt;br /&gt;
Latest development versions:&lt;br /&gt;
* ipw2200 driver: 1.1.3&lt;br /&gt;
* firmware: 3.0&lt;br /&gt;
* ieee80211 stack: 1.1.14&lt;br /&gt;
&lt;br /&gt;
Mainline kernels contain older (but mostly functional) versions of ipw2200 and ieee80211, and still require the addition of the [http://ipw2200.sourceforge.net/firmware.php firmware] files. To get the latest versions you need to separately install the [http://ipw2200.sourceforge.net/downloads.php ipw2200] module and [http://ieee80211.sourceforge.net/downloads.php ieee80211] stack.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Installation from sourcecode ===&lt;br /&gt;
Download the latest [http://ieee80211.sourceforge.net/downloads.php ieee80211] stack and install it:&lt;br /&gt;
:{{cmdroot|tar xzvf ieee80211-1.1.14.tgz}}&lt;br /&gt;
:{{cmdroot|cd ieee80211-1.1.14}}&lt;br /&gt;
:{{cmdroot|make}}&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
Download the latest [http://ipw2200.sourceforge.net/downloads.php ipw2200] module and install it:&lt;br /&gt;
:{{cmdroot|tar xzvf ipw2200-1.1.3.tgz}}&lt;br /&gt;
:{{cmdroot|cd ipw2200-1.1.3}}&lt;br /&gt;
:{{cmdroot|make}}&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
Download the matching [http://ipw2200.sourceforge.net/firmware.php firmware] and install it:&lt;br /&gt;
:{{cmdroot|tar xzvf ipw2200-fw-3.0.tgz -C /lib/firmware}}&lt;br /&gt;
&lt;br /&gt;
=== Installation on Debian ===&lt;br /&gt;
Install ieee80211-source:&lt;br /&gt;
:{{cmdroot|apt-get install ieee80211-source}}&lt;br /&gt;
:{{cmdroot|module-assistant -t build ieee80211-source}}&lt;br /&gt;
&lt;br /&gt;
Install ipw2200-source:&lt;br /&gt;
:{{cmdroot|apt-get install ipw2200-source}}&lt;br /&gt;
:{{cmdroot|module-assistant -t build ipw2200-source}}&lt;br /&gt;
&lt;br /&gt;
There is a bug in the {{Debian}} package (last checked: Dec 30th 2005) that prevents from linking to &amp;lt;tt&amp;gt;ieee80211&amp;lt;/tt&amp;gt; modules using module-assistant. In case it is not fixed in your version, fall back to the regular source installation procedure described above.&lt;br /&gt;
&lt;br /&gt;
The firmware is not distributed with debian due to licensing reasons, download the matching [http://ipw2200.sourceforge.net/firmware.php firmware] and install it:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|tar xzvf ipw2200-fw-2.4.tgz -C /lib/hotplug/firmware}}&lt;br /&gt;
&lt;br /&gt;
see /etc/hotplug/firmware.agent for details on configured firmware locations&lt;br /&gt;
&lt;br /&gt;
In etch the firmware can also be placed in /lib/firmware&lt;br /&gt;
&lt;br /&gt;
=== Installation on Fedora Core ===&lt;br /&gt;
Installation on Fedora Core 5 works out of the box provided you install the ipw2200-firmware package. However, certain parts of the install process may not set up the wireless networking in a friendly manner using GNOME system tray icons and other tools. Bill Moss has written some excellent HowTo articles, including using VPNC to connect to a remote Cisco IPSec network.&lt;br /&gt;
&lt;br /&gt;
* [http://www.ces.clemson.edu/linux/fc2-ipw2200.shtml Fedora Core 5 and the IPW2200 Wireless Driver]&lt;br /&gt;
* [http://www.ces.clemson.edu/linux/nm.shtml Fedora Core 5 NetworkManager, NetworkManager-vpnc and Wireless Driver IPW2200]&lt;br /&gt;
&lt;br /&gt;
===Testing the driver ===&lt;br /&gt;
:{{cmdroot|modprobe ipw2200}}&lt;br /&gt;
:{{cmdroot|iwconfig}}&lt;br /&gt;
&lt;br /&gt;
{{cmdroot|dmesg}} output might look similar to this:&lt;br /&gt;
 ieee80211: 802.11 data/management/control stack, 1.1.6&lt;br /&gt;
 ieee80211: Copyright (C) 2004-2005 Intel Corporation &amp;lt;jketreno@linux.intel.com&amp;gt;&lt;br /&gt;
 ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.0.8&lt;br /&gt;
 ipw2200: Copyright(c) 2003-2005 Intel Corporation&lt;br /&gt;
 ipw2200: Detected Intel PRO/Wireless 2915ABG Network Connection&lt;br /&gt;
&lt;br /&gt;
NB: To make the wifi LED work on the thinkpad, pass the option {{bootparm|led|1}} to the kernel while loading the module. eg. {{cmdroot|1=modprobe ipw2200 led=1}}.  This can also be accomplished by adding that option to the file where your distribution looks for modprobe options so that it becomes automatic.&lt;br /&gt;
&lt;br /&gt;
In debian this can be done by putting a file named after the module in /etc/modutils with the options in it&lt;br /&gt;
&lt;br /&gt;
here we might run a cmd like this&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|1=echo options ipw2200 led=1 &amp;gt; /etc/modutils/ipw2200 }}&lt;br /&gt;
&lt;br /&gt;
then we must run update-modules to remake /etc/module.conf&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|update-modules}}&lt;br /&gt;
&lt;br /&gt;
== WPA support ==&lt;br /&gt;
&lt;br /&gt;
Use [[wpa_supplicant]] with the &amp;lt;tt&amp;gt;-Dwext&amp;lt;/tt&amp;gt; argument (not &amp;lt;tt&amp;gt;-Dipw&amp;lt;/tt&amp;gt;), and pass the &amp;lt;tt&amp;gt;hwcrypto=0&amp;lt;/tt&amp;gt; argument to the &amp;lt;tt&amp;gt;ipw2200&amp;lt;/tt&amp;gt; module.&lt;br /&gt;
&lt;br /&gt;
There are some very detailed instructions with examples on the following link:&lt;br /&gt;
[http://http://www.bughost.org/ipw/wpa_howto.txt ipw2200 WPA instruction]&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
To enable power management, issue:&lt;br /&gt;
:{{cmdroot|iwpriv wlan0 set_power 7}}&lt;br /&gt;
where &amp;lt;tt&amp;gt;wlan0&amp;lt;/tt&amp;gt; is the name if your interface. This will reduce idle power consumption by several Watts compared to no power management.&lt;br /&gt;
&lt;br /&gt;
*To disable the radio (and further reduce power consumption) when the card is not in use, issue:&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/bus/pci/drivers/ipw2200/*/rf_kill}}&lt;br /&gt;
*To enable the radio, issue:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/bus/pci/drivers/ipw2200/*/rf_kill}}&lt;br /&gt;
*To make the radio off by default after boot, add &lt;br /&gt;
 options ipw2200 disable=1&lt;br /&gt;
to your {{path|/etc/modprobe.conf}} or equivalent.&lt;br /&gt;
&lt;br /&gt;
See {{path|README.ipw2200}} in the &amp;lt;tt&amp;gt;ipw2200&amp;lt;/tt&amp;gt; package for details and other options.&lt;br /&gt;
&lt;br /&gt;
== Additional Comments ==&lt;br /&gt;
Your kernel may include an old version of the ipw2200 driver. It is recommended to use the latest version.&lt;br /&gt;
&lt;br /&gt;
Make sure you also install the firmware version needed by the driver version you use. You can find the firmware [http://ipw2200.sourceforge.net/firmware.php here]. To install it, decompress the &amp;lt;tt&amp;gt;.tgz&amp;lt;/tt&amp;gt; file into {{path|/lib/firmware}}.&lt;br /&gt;
&lt;br /&gt;
The driver doesn't appear to support the MII interface, so any tools like automatic network configuration managers (i.e. whereami) that rely on mii-tool do not work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Espa</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:How_to_enable_integrated_fingerprint_reader_with_BioAPI&amp;diff=12650</id>
		<title>Talk:How to enable integrated fingerprint reader with BioAPI</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:How_to_enable_integrated_fingerprint_reader_with_BioAPI&amp;diff=12650"/>
		<updated>2005-11-27T07:03:27Z</updated>

		<summary type="html">&lt;p&gt;Espa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Changing the installation path==&lt;br /&gt;
By default, bioapi will install numerous files in {{path|/usr/local/&amp;lt;nowiki&amp;gt;{&amp;lt;/nowiki&amp;gt;bin,lib,include&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}}, including files with &amp;quot;self-explanatory&amp;quot; names such as {{path|/usr/local/bin/Sample}}. To prevent this pollution:&lt;br /&gt;
* Create a dedicated directory,say, {{path|/opt/bioapi}} .&lt;br /&gt;
* Append &amp;lt;tt&amp;gt;--prefix=/opt/bioapi&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command of bioapi&lt;br /&gt;
* Append {{path|/opt/bioapi/bin}} to &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt; and {{path|/opt/bioapi/lib}} to &amp;lt;tt&amp;gt;$LD_LIBRARY_PATH&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Edit the install path in {{path|install.sh}} of the driver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 18:06, 30 Oct 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== chmod 777 -R /usr/local/var/bioapi/ ==&lt;br /&gt;
&lt;br /&gt;
Is the above necessary? I just made a debian package of xscreensaver with the patch applied, and when using the bioapi debian pacakge from [http://www.qrivy.net/~michael/temp/ Michael R. Crusoe's site] which has this directory put in /usr/var/bioapi I had not to change the permissions to world-writeable there. Write access to the logfile and usb device are necessary, but that directory works with 755 as well (even though it comes with 777 in Michael's package), and all files and subdirectories are 644/755 too.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 00:08, 11 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Qt Compilation Success ==&lt;br /&gt;
&lt;br /&gt;
Here it worked with qt ;)&lt;br /&gt;
&lt;br /&gt;
== using absolute paths for commands ==&lt;br /&gt;
&lt;br /&gt;
I don't know whether using absolute paths in the articles is a good idea, at least not for tools like {{cmd|lsusb|}} which are not established utilities (i.e. used for more than a decade or something ;)) and happen to be in different locations in different distributions. E.g. said {{cmd|lsusb|}} resides in {{path|/usr/sbin|}} on Debian systems.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 16:45, 12 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== BioAPI error #3 ==&lt;br /&gt;
&lt;br /&gt;
Its kind of strage it used to work with everythig (kdm,console,lock,etc)&lt;br /&gt;
Now it only works with kdm. It allways gives back:&lt;br /&gt;
&lt;br /&gt;
pam_bioapi[8113]: Unable to initialize Bioapi framework, BioAPI error #:3.&lt;br /&gt;
&lt;br /&gt;
Even when I set the right permissions on /proc/bus/usb.&lt;br /&gt;
&lt;br /&gt;
I am able to run the Sample program as normal user after setting the permissions, but when I change within a user session by su I amnot able to run the Sample program a also get an error Code #3.&lt;br /&gt;
&lt;br /&gt;
From an other terminal (alt+strg+Fx) I am able to run the Sample program but at the login I still get the error #3.&lt;br /&gt;
&lt;br /&gt;
I cant remember to have changed anything an d bevor I was able to login in a console with my fingerprint now only kdm is working even kde lock-session       &lt;br /&gt;
isnt working anymore.&lt;br /&gt;
&lt;br /&gt;
Any suggestions ?&lt;br /&gt;
&lt;br /&gt;
==Driver Expiring!!!==&lt;br /&gt;
Don't anyone notice that both betas of the UPEK driver is expiring in&lt;br /&gt;
about a month in the new year, Jan 1st 2006? They really mean it! &lt;br /&gt;
I set my computer date to next year and get a message &amp;quot;the driver has expired&amp;quot; when using fingerprint reader! This is a grave threat to our computer lifestyle, i.e. for those of us who got it working and use it&lt;br /&gt;
daily:) &lt;br /&gt;
Is there any workaround other than setting the date back a year when&lt;br /&gt;
new year come and wait for new driver? Is there a way to figure out where exactly in the driver it checked the date and how? The must have set it &lt;br /&gt;
somewhere in file libtfmessbsp.so, but it is binary and I can't figure out how to Reverse Engineer it.&lt;br /&gt;
&lt;br /&gt;
---Jiang&lt;/div&gt;</summary>
		<author><name>Espa</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_enable_integrated_fingerprint_reader_with_BioAPI&amp;diff=11533</id>
		<title>How to enable integrated fingerprint reader with BioAPI</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_enable_integrated_fingerprint_reader_with_BioAPI&amp;diff=11533"/>
		<updated>2005-10-31T18:21:57Z</updated>

		<summary type="html">&lt;p&gt;Espa: /* Troubleshooting and Hints */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
This page describes the process of getting the fingerprint reader to work. It is based on experiences in {{Ubuntu}} on a T43. The same works on {{Fedora}} 4.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Basic driver installation==&lt;br /&gt;
===Getting required libs and tools===&lt;br /&gt;
====Installing the bioapi source====&lt;br /&gt;
*Get the bioapi source:&lt;br /&gt;
:{{cmduser|wget http://www.qrivy.net/~michael/blua/bioapi/bioapi-1.2.2.tar.bz2}}&lt;br /&gt;
*I could not compile bioapi with the graphical Qt tools. To do it manually, do the following:&lt;br /&gt;
:{{cmduser|tar xjf bioapi-1.2.2.tar.bz2}}&lt;br /&gt;
:{{cmduser|cd bioapi-1.2.2}}&lt;br /&gt;
:{{cmduser|1=./configure --with-Qt-dir=no}}&lt;br /&gt;
:{{cmduser|make}}&lt;br /&gt;
:and then as root&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
:and if you want to compile pam_bioapi for auth later&lt;br /&gt;
:{{cmdroot|cp include/bioapi_util.h include/installdefs.h imports/cdsa/v2_0/inc/cssmtype.h /usr/include}}&lt;br /&gt;
:Be aware that checkinstall will not work!&lt;br /&gt;
&lt;br /&gt;
====Installing the driver====&lt;br /&gt;
*Download {{path|TFMESS_BSP_LIN_1.0beta2.zip}} from http://www.qrivy.net/~michael/blua/upek-bsp.html and unzip it into a seperate folder, as it will not create one.&lt;br /&gt;
*Change to that folder and do as root:&lt;br /&gt;
:{{cmdroot|sh install.sh}}&lt;br /&gt;
:{{cmdroot|chmod 777 -R /usr/local/var/bioapi/}}&lt;br /&gt;
:Actually this depends on where you installed, if you did as suggested, it should work. Otherwise you probably know what you're doing anyways. :)&lt;br /&gt;
:{{cmdroot|touch /var/log/BSP.log &amp;amp;&amp;amp; chmod 666 /var/log/BSP.log}}&lt;br /&gt;
:{{cmdroot|chmod -R a+X /proc/bus/usb}}&lt;br /&gt;
:{{cmdroot|chmod 666 /proc/bus/usb/`lsusb &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; grep &amp;quot;0483:2016&amp;quot; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sed -e &amp;quot;s/Bus\ \(.*\)\ Device\ \(.*\):\ .*/\1\/\2/&amp;quot;`}}&lt;br /&gt;
:It might be nessecary to put the above line into a startup script somewhere.&lt;br /&gt;
&lt;br /&gt;
===Testing the driver===&lt;br /&gt;
Go to the folder where you extracted {{path|TFMESS_BSP_LIN_1.0beta2.zip}} and do:&lt;br /&gt;
:{{cmdroot|cd NonGUI_Sample}}&lt;br /&gt;
:{{cmdroot|chmod +x Sample}}&lt;br /&gt;
:{{cmdroot|./Sample}}&lt;br /&gt;
If it doesn't work, ask for help at: t43fingerprint (at) badcode.de&lt;br /&gt;
&lt;br /&gt;
==GDM Login via pam_bioapi==&lt;br /&gt;
===Getting required libs &amp;amp; tools===&lt;br /&gt;
====Installing pam_bioapi====&lt;br /&gt;
*Get and compile the pam_bioapi module.&lt;br /&gt;
:{{cmduser|wget http://www.qrivy.net/~michael/blua/pam_bioapi/pam_bioapi-0.2.1.tar.bz2}}&lt;br /&gt;
:{{cmduser|tar xjf pam_bioapi-0.2.1.tar.bz2}}&lt;br /&gt;
:{{cmduser|cd pam_bioapi-0.2.1}}&lt;br /&gt;
:{{cmduser|wget http://badcode.de/downloads/fingerprint.patch}}&lt;br /&gt;
:{{cmduser|patch -p0 &amp;lt; fingerprint.patch}}&lt;br /&gt;
:If you want to, review the patch. In general you should review all code you download and compile, if possible. The patch comes from [http://linuxbiometrics.com/modules/newbb/viewtopic.php?viewmode=flat&amp;amp;topic_id=80&amp;amp;forum=1 this thread].&lt;br /&gt;
:{{cmduser|./configure &amp;amp;&amp;amp; make}}&lt;br /&gt;
:and as root&lt;br /&gt;
:{{cmdroot| make install}}&lt;br /&gt;
:{{cmdroot| cp /usr/local/lib/security/* /lib/security/}}&lt;br /&gt;
*Use the sample tool from the fingerprint reader to create {{path|&amp;lt;username&amp;gt;.bir}} (&amp;lt;tt&amp;gt;&amp;lt;username&amp;gt;&amp;lt;/tt&amp;gt; '''must''' be the username you want to login with. gdm will probably break for any login name that has no .bir file).&lt;br /&gt;
*As root do:&lt;br /&gt;
:{{cmdroot|SERIAL&amp;lt;nowiki&amp;gt;=`BioAPITest | grep -A2 Fingerprint | tail -n1 | cut -b 12- |  sed -e &amp;quot;s/\(^.\{9\}\)\(.\{4\}\)\(.\{4\}\)\(.\{4\}\)\(.*\)/\1-\2-\3-\4-\5/g&amp;quot;` &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
:{{cmdroot|echo $SERIAL}} should print something like {{cmdresult|&amp;lt;nowiki&amp;gt;{5550454b-2054-464d-2f45-535320425350}&amp;lt;/nowiki&amp;gt;}} now.&lt;br /&gt;
:If it does, do:&lt;br /&gt;
:{{cmdroot|mkdir -p /etc/bioapi1.10/pam/$SERIAL}}&lt;br /&gt;
:{{cmdroot|cp &amp;lt;username&amp;gt;.bir /etc/bioapi1.10/pam/$SERIAL}}&lt;br /&gt;
&lt;br /&gt;
===Configuring pam===&lt;br /&gt;
The following part is distribution specific. On {{Ubuntu}} you can modify {{path|/etc/pam.d/common-auth}} (on {{Gentoo}} and {{Fedora}} it is {{path|/etc/pam.d/system-auth}}) to look like this:&lt;br /&gt;
&lt;br /&gt;
 #&lt;br /&gt;
 # /etc/pam.d/common-auth - authentication settings common to all services&lt;br /&gt;
 #&lt;br /&gt;
 # This file is included from other service-specific PAM config files,&lt;br /&gt;
 # and should contain a list of the authentication modules that define&lt;br /&gt;
 # the central authentication scheme for use on the system&lt;br /&gt;
 # (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the&lt;br /&gt;
 # traditional Unix authentication mechanisms.&lt;br /&gt;
 #&lt;br /&gt;
 auth       sufficient   pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/&lt;br /&gt;
 password   sufficient   pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/&lt;br /&gt;
 auth       required     pam_unix.so nullok_secure&lt;br /&gt;
&lt;br /&gt;
With this modification pam immediatelly starts to use the fingerprint reader to do local authorization (e.g. sudo/gdm use the fingerprint reader).&lt;br /&gt;
&lt;br /&gt;
{{NOTE|This was discovered through trial and success, if it is plain wrong, wikorrect it, please.}}&lt;br /&gt;
&lt;br /&gt;
On {{Fedora}}, you may need to add {{path|/usr/local/lib}} to your LD_LIBRARY path so that the libraries referenced from &amp;lt;tt&amp;gt;pam_bioapi.so&amp;lt;/tt&amp;gt; get picked up properly.&lt;br /&gt;
&lt;br /&gt;
Now gdm should pop up an (ugly) image to swipe your finger and... magic - you can login without a password.&lt;br /&gt;
&lt;br /&gt;
==Make xscreensaver use the scanner==&lt;br /&gt;
*Get the needed xscreensaver sources:&lt;br /&gt;
:{{cmduser|wget http://www.jwz.org/xscreensaver/xscreensaver-4.23.tar.gz}}&lt;br /&gt;
:{{cmduser|tar xzf xscreensaver-4.23.tar.gz}}&lt;br /&gt;
:{{cmduser|cd xscreensaver-4.23}}&lt;br /&gt;
:{{cmduser|wget http://nax.hn.org/pub/bioapi/xscreensaver-4.22_alternativeAuth.diff}}&lt;br /&gt;
*After reviewing the patch (it's small and straightforward), do&lt;br /&gt;
:{{cmduser|patch -p1 &amp;lt; xscreensaver-4.22_alternativeAuth.diff}}&amp;lt;br /&amp;gt;The patch prevents xscreensaver from opening an authentification window and dispatches the authentification request to another program, in our case &amp;lt;tt&amp;gt;pam&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;pam_bioapi&amp;lt;/tt&amp;gt;. It should apply with some offset, don't mind that. If it says something about rejected though, then there's a problem.&lt;br /&gt;
*Compile with&lt;br /&gt;
:{{cmduser|./configure --with-pam &amp;amp;&amp;amp; make}}&amp;lt;br /&amp;gt;and then install as root with&lt;br /&gt;
:{{cmduser|su -c make install}} .&lt;br /&gt;
*Make sure that the newly compiled xscreensaver is used:&lt;br /&gt;
:{{cmduser|which xscreensaver}} should return&lt;br /&gt;
:{{cmdresult|/usr/local/bin/xscreensaver}} .&lt;br /&gt;
:*In case it doesn't, try &lt;br /&gt;
::{{cmduser|1=export PATH=/usr/local/bin:$PATH}}&amp;lt;br /&amp;gt;and retry.&lt;br /&gt;
*Kill the running instance of xscreensaver:&lt;br /&gt;
:{{cmduser|xscreensaver-command -exit}} &lt;br /&gt;
*Make sure you have the following line in your {{path|~/.xscreensaver}}:&lt;br /&gt;
 alternativeAuth: True&lt;br /&gt;
*Now edit {{path|/etc/pam.d/xscreensaver}} to include the following line (If you're on {{Ubuntu}} Breezy and you already changed {{path|/etc/pam.d/common-auth}} you should not need to do this.):&lt;br /&gt;
 auth    sufficient      pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/&lt;br /&gt;
*Start the new xscreensaver&lt;br /&gt;
:{{cmduser|xscreensaver}}&amp;lt;br /&amp;gt;There should be a splash screen with version 4.23.&lt;br /&gt;
*Now try:&lt;br /&gt;
:{{cmduser|xscreensaver-command -lock}}&lt;br /&gt;
&lt;br /&gt;
If you have questions or problems with this procedure, ask: t43fingerprint (at) badcode.de .&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting and Hints==&lt;br /&gt;
# After installing the driver, don't forget to reboot!&lt;br /&gt;
## This might not be necessary. it worked here without having to reboot.&lt;br /&gt;
# To see if the fingerprint device is know on the USB bus do:&lt;br /&gt;
:{{cmdroot|lsusb}}&lt;br /&gt;
:as root and you should see a line like:&lt;br /&gt;
:{{cmdresult|Bus 003 Device 004: ID 0483:2016 SGS Thomson Microelectronics}}&lt;br /&gt;
:The bus and device number can be different. This should work without the driver installed. If the device does not show up, you have a hardware problem/quirk, Rebooting might fix this.&lt;br /&gt;
# For some installation, after installing the driver as in section [[#Installing the driver|Installing the driver]] and makingÂ´sure the device is recognized, try to test it  by going to {{path|NonGUI_Sample}} directory and run {{cmdroot|./Sample}}, one get segmentation fault. In this case, try getting the Beta1 instead of Beta2 of the driver and installing it&lt;br /&gt;
# There was some confusion about the /etc/bioapi1.10/pam{5550454b-2054-464d-2f45-535320425350} path, this has been fixed in the howto, if you have problems, check the section again, the path needs to have the '-' in them&lt;br /&gt;
# When something goes wrong look at the tail of {{path|/var/log/auth.log}}. Specifically if you see an entry saying something like&lt;br /&gt;
 pam_bioapi[10480]: Unable to load BioAPI BSP with UUID of {5550454b-2054-464d-2f45-535320425350}, BioAPI error &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;194d.&lt;br /&gt;
Check whether your {{path|/proc/bus/usb}} directory permissions are set up as in the &lt;br /&gt;
section [[#Installing the driver|Installing the driver]].&lt;br /&gt;
# To get the xscreensaver compiled you might need a bunch of header files, in my case I need the following:&lt;br /&gt;
#*python-gtk2-dev&lt;br /&gt;
#*libgstreamer0.8-dev&lt;br /&gt;
#*xlibs-dev&lt;br /&gt;
# Sometimes {{path|$HOME/.xscreensaver}} got overwritten, try changing it to read-only.&lt;br /&gt;
# If after suspending to RAM and resume, lsusb no longer have &amp;quot;SGS Thomson Microelectronics&amp;quot; entry, try adding a line &lt;br /&gt;
:{{cmdroot|/etc/init.d/hotplug restart}}&lt;br /&gt;
to your {{path|/etc/acpi/resume.sh}} file&lt;br /&gt;
#If after resume lsusb shows the device but xscreensaver does not ask for fingerprint for login, you might want to check the permission of the usb bus in the appropriate {{path|/proc/bus/usb/}} entry. If necessesary you might need to add a line to {{path|/etc/acpi/resume.sh}} as in section [[#Installing the driver|Installing the driver]] to set the permission right.&lt;/div&gt;</summary>
		<author><name>Espa</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_enable_integrated_fingerprint_reader_with_BioAPI&amp;diff=11471</id>
		<title>How to enable integrated fingerprint reader with BioAPI</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_enable_integrated_fingerprint_reader_with_BioAPI&amp;diff=11471"/>
		<updated>2005-10-31T18:19:12Z</updated>

		<summary type="html">&lt;p&gt;Espa: /* Troubleshooting and Hints */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
This page describes the process of getting the fingerprint reader to work. It is based on experiences in {{Ubuntu}} on a T43. The same works on {{Fedora}} 4.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Basic driver installation==&lt;br /&gt;
===Getting required libs and tools===&lt;br /&gt;
====Installing the bioapi source====&lt;br /&gt;
*Get the bioapi source:&lt;br /&gt;
:{{cmduser|wget http://www.qrivy.net/~michael/blua/bioapi/bioapi-1.2.2.tar.bz2}}&lt;br /&gt;
*I could not compile bioapi with the graphical Qt tools. To do it manually, do the following:&lt;br /&gt;
:{{cmduser|tar xjf bioapi-1.2.2.tar.bz2}}&lt;br /&gt;
:{{cmduser|cd bioapi-1.2.2}}&lt;br /&gt;
:{{cmduser|1=./configure --with-Qt-dir=no}}&lt;br /&gt;
:{{cmduser|make}}&lt;br /&gt;
:and then as root&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
:and if you want to compile pam_bioapi for auth later&lt;br /&gt;
:{{cmdroot|cp include/bioapi_util.h include/installdefs.h imports/cdsa/v2_0/inc/cssmtype.h /usr/include}}&lt;br /&gt;
:Be aware that checkinstall will not work!&lt;br /&gt;
&lt;br /&gt;
====Installing the driver====&lt;br /&gt;
*Download {{path|TFMESS_BSP_LIN_1.0beta2.zip}} from http://www.qrivy.net/~michael/blua/upek-bsp.html and unzip it into a seperate folder, as it will not create one.&lt;br /&gt;
*Change to that folder and do as root:&lt;br /&gt;
:{{cmdroot|sh install.sh}}&lt;br /&gt;
:{{cmdroot|chmod 777 -R /usr/local/var/bioapi/}}&lt;br /&gt;
:Actually this depends on where you installed, if you did as suggested, it should work. Otherwise you probably know what you're doing anyways. :)&lt;br /&gt;
:{{cmdroot|touch /var/log/BSP.log &amp;amp;&amp;amp; chmod 666 /var/log/BSP.log}}&lt;br /&gt;
:{{cmdroot|chmod -R a+X /proc/bus/usb}}&lt;br /&gt;
:{{cmdroot|chmod 666 /proc/bus/usb/`lsusb &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; grep &amp;quot;0483:2016&amp;quot; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sed -e &amp;quot;s/Bus\ \(.*\)\ Device\ \(.*\):\ .*/\1\/\2/&amp;quot;`}}&lt;br /&gt;
:It might be nessecary to put the above line into a startup script somewhere.&lt;br /&gt;
&lt;br /&gt;
===Testing the driver===&lt;br /&gt;
Go to the folder where you extracted {{path|TFMESS_BSP_LIN_1.0beta2.zip}} and do:&lt;br /&gt;
:{{cmdroot|cd NonGUI_Sample}}&lt;br /&gt;
:{{cmdroot|chmod +x Sample}}&lt;br /&gt;
:{{cmdroot|./Sample}}&lt;br /&gt;
If it doesn't work, ask for help at: t43fingerprint (at) badcode.de&lt;br /&gt;
&lt;br /&gt;
==GDM Login via pam_bioapi==&lt;br /&gt;
===Getting required libs &amp;amp; tools===&lt;br /&gt;
====Installing pam_bioapi====&lt;br /&gt;
*Get and compile the pam_bioapi module.&lt;br /&gt;
:{{cmduser|wget http://www.qrivy.net/~michael/blua/pam_bioapi/pam_bioapi-0.2.1.tar.bz2}}&lt;br /&gt;
:{{cmduser|tar xjf pam_bioapi-0.2.1.tar.bz2}}&lt;br /&gt;
:{{cmduser|cd pam_bioapi-0.2.1}}&lt;br /&gt;
:{{cmduser|wget http://badcode.de/downloads/fingerprint.patch}}&lt;br /&gt;
:{{cmduser|patch -p0 &amp;lt; fingerprint.patch}}&lt;br /&gt;
:If you want to, review the patch. In general you should review all code you download and compile, if possible. The patch comes from [http://linuxbiometrics.com/modules/newbb/viewtopic.php?viewmode=flat&amp;amp;topic_id=80&amp;amp;forum=1 this thread].&lt;br /&gt;
:{{cmduser|./configure &amp;amp;&amp;amp; make}}&lt;br /&gt;
:and as root&lt;br /&gt;
:{{cmdroot| make install}}&lt;br /&gt;
:{{cmdroot| cp /usr/local/lib/security/* /lib/security/}}&lt;br /&gt;
*Use the sample tool from the fingerprint reader to create {{path|&amp;lt;username&amp;gt;.bir}} (&amp;lt;tt&amp;gt;&amp;lt;username&amp;gt;&amp;lt;/tt&amp;gt; '''must''' be the username you want to login with. gdm will probably break for any login name that has no .bir file).&lt;br /&gt;
*As root do:&lt;br /&gt;
:{{cmdroot|SERIAL&amp;lt;nowiki&amp;gt;=`BioAPITest | grep -A2 Fingerprint | tail -n1 | cut -b 12- |  sed -e &amp;quot;s/\(^.\{9\}\)\(.\{4\}\)\(.\{4\}\)\(.\{4\}\)\(.*\)/\1-\2-\3-\4-\5/g&amp;quot;` &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
:{{cmdroot|echo $SERIAL}} should print something like {{cmdresult|&amp;lt;nowiki&amp;gt;{5550454b-2054-464d-2f45-535320425350}&amp;lt;/nowiki&amp;gt;}} now.&lt;br /&gt;
:If it does, do:&lt;br /&gt;
:{{cmdroot|mkdir -p /etc/bioapi1.10/pam/$SERIAL}}&lt;br /&gt;
:{{cmdroot|cp &amp;lt;username&amp;gt;.bir /etc/bioapi1.10/pam/$SERIAL}}&lt;br /&gt;
&lt;br /&gt;
===Configuring pam===&lt;br /&gt;
The following part is distribution specific. On {{Ubuntu}} you can modify {{path|/etc/pam.d/common-auth}} (on {{Gentoo}} and {{Fedora}} it is {{path|/etc/pam.d/system-auth}}) to look like this:&lt;br /&gt;
&lt;br /&gt;
 #&lt;br /&gt;
 # /etc/pam.d/common-auth - authentication settings common to all services&lt;br /&gt;
 #&lt;br /&gt;
 # This file is included from other service-specific PAM config files,&lt;br /&gt;
 # and should contain a list of the authentication modules that define&lt;br /&gt;
 # the central authentication scheme for use on the system&lt;br /&gt;
 # (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the&lt;br /&gt;
 # traditional Unix authentication mechanisms.&lt;br /&gt;
 #&lt;br /&gt;
 auth       sufficient   pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/&lt;br /&gt;
 password   sufficient   pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/&lt;br /&gt;
 auth       required     pam_unix.so nullok_secure&lt;br /&gt;
&lt;br /&gt;
With this modification pam immediatelly starts to use the fingerprint reader to do local authorization (e.g. sudo/gdm use the fingerprint reader).&lt;br /&gt;
&lt;br /&gt;
{{NOTE|This was discovered through trial and success, if it is plain wrong, wikorrect it, please.}}&lt;br /&gt;
&lt;br /&gt;
On {{Fedora}}, you may need to add {{path|/usr/local/lib}} to your LD_LIBRARY path so that the libraries referenced from &amp;lt;tt&amp;gt;pam_bioapi.so&amp;lt;/tt&amp;gt; get picked up properly.&lt;br /&gt;
&lt;br /&gt;
Now gdm should pop up an (ugly) image to swipe your finger and... magic - you can login without a password.&lt;br /&gt;
&lt;br /&gt;
==Make xscreensaver use the scanner==&lt;br /&gt;
*Get the needed xscreensaver sources:&lt;br /&gt;
:{{cmduser|wget http://www.jwz.org/xscreensaver/xscreensaver-4.23.tar.gz}}&lt;br /&gt;
:{{cmduser|tar xzf xscreensaver-4.23.tar.gz}}&lt;br /&gt;
:{{cmduser|cd xscreensaver-4.23}}&lt;br /&gt;
:{{cmduser|wget http://nax.hn.org/pub/bioapi/xscreensaver-4.22_alternativeAuth.diff}}&lt;br /&gt;
*After reviewing the patch (it's small and straightforward), do&lt;br /&gt;
:{{cmduser|patch -p1 &amp;lt; xscreensaver-4.22_alternativeAuth.diff}}&amp;lt;br /&amp;gt;The patch prevents xscreensaver from opening an authentification window and dispatches the authentification request to another program, in our case &amp;lt;tt&amp;gt;pam&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;pam_bioapi&amp;lt;/tt&amp;gt;. It should apply with some offset, don't mind that. If it says something about rejected though, then there's a problem.&lt;br /&gt;
*Compile with&lt;br /&gt;
:{{cmduser|./configure --with-pam &amp;amp;&amp;amp; make}}&amp;lt;br /&amp;gt;and then install as root with&lt;br /&gt;
:{{cmduser|su -c make install}} .&lt;br /&gt;
*Make sure that the newly compiled xscreensaver is used:&lt;br /&gt;
:{{cmduser|which xscreensaver}} should return&lt;br /&gt;
:{{cmdresult|/usr/local/bin/xscreensaver}} .&lt;br /&gt;
:*In case it doesn't, try &lt;br /&gt;
::{{cmduser|1=export PATH=/usr/local/bin:$PATH}}&amp;lt;br /&amp;gt;and retry.&lt;br /&gt;
*Kill the running instance of xscreensaver:&lt;br /&gt;
:{{cmduser|xscreensaver-command -exit}} &lt;br /&gt;
*Make sure you have the following line in your {{path|~/.xscreensaver}}:&lt;br /&gt;
 alternativeAuth: True&lt;br /&gt;
*Now edit {{path|/etc/pam.d/xscreensaver}} to include the following line (If you're on {{Ubuntu}} Breezy and you already changed {{path|/etc/pam.d/common-auth}} you should not need to do this.):&lt;br /&gt;
 auth    sufficient      pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/&lt;br /&gt;
*Start the new xscreensaver&lt;br /&gt;
:{{cmduser|xscreensaver}}&amp;lt;br /&amp;gt;There should be a splash screen with version 4.23.&lt;br /&gt;
*Now try:&lt;br /&gt;
:{{cmduser|xscreensaver-command -lock}}&lt;br /&gt;
&lt;br /&gt;
If you have questions or problems with this procedure, ask: t43fingerprint (at) badcode.de .&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting and Hints==&lt;br /&gt;
# After installing the driver, don't forget to reboot!&lt;br /&gt;
## This might not be necessary. it worked here without having to reboot.&lt;br /&gt;
# To see if the fingerprint device is know on the USB bus do:&lt;br /&gt;
:{{cmdroot|lsusb}}&lt;br /&gt;
:as root and you should see a line like:&lt;br /&gt;
:{{cmdresult|Bus 003 Device 004: ID 0483:2016 SGS Thomson Microelectronics}}&lt;br /&gt;
:The bus and device number can be different. This should work without the driver installed. If the device does not show up, you have a hardware problem/quirk, Rebooting might fix this.&lt;br /&gt;
# For some installation, after installing the driver as in section [[#Installing the driver|Installing the driver]] and makingÂ´sure the device is recognized, try to test it  by going to {{path|NonGUI_Sample}} directory and run {{cmdroot|./Sample}}, one get segmentation fault. In this case, try getting the Beta1 instead of Beta2 of the driver and installing it&lt;br /&gt;
# There was some confusion about the /etc/bioapi1.10/pam{5550454b-2054-464d-2f45-535320425350} path, this has been fixed in the howto, if you have problems, check the section again, the path needs to have the '-' in them&lt;br /&gt;
# When something goes wrong look at the tail of {{path|/var/log/auth.log}}. Specifically if you see an entry saying something like&lt;br /&gt;
 pam_bioapi[10480]: Unable to load BioAPI BSP with UUID of {5550454b-2054-464d-2f45-535320425350}, BioAPI error &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;194d.&lt;br /&gt;
Check whether your {{path|/proc/bus/usb}} directory permissions are set up as in the &lt;br /&gt;
section [[#Installing the driver|Installing the driver]].&lt;br /&gt;
# To get the xscreensaver compiled you might need a bunch of header files, in my case I need the following:&lt;br /&gt;
#*python-gtk2-dev&lt;br /&gt;
#*libgstreamer0.8-dev&lt;br /&gt;
#*xlibs-dev&lt;br /&gt;
# Sometimes {{path|$HOME/.xscreensaver}} got overwritten, try changing it to read-only.&lt;br /&gt;
# If after suspending to RAM and resume, lsusb no longer have &amp;quot;SGS Thomson Microelectronics&amp;quot; entry, try adding a line &lt;br /&gt;
:{{cmdroot|/etc/init.d/hotplug restart}}&lt;br /&gt;
to your /etc/acpi/resume.sh file&lt;br /&gt;
#If after resume lsusb shows the device but xscreensaver does not ask for fingerprint for login, you might want to check the permission of the usb bus in the appropriate /proc/bus/usb/ entry. If necessesary you might need to add a line to /etc/acpi/resume.sh as in section [[#Installing the driver|Installing the driver]] to set the permission right.&lt;/div&gt;</summary>
		<author><name>Espa</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Patch_for_controlling_fan_speed&amp;diff=11004</id>
		<title>Patch for controlling fan speed</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Patch_for_controlling_fan_speed&amp;diff=11004"/>
		<updated>2005-10-25T23:45:10Z</updated>

		<summary type="html">&lt;p&gt;Espa: /* Models on which this patch works */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This patch extends the &amp;lt;tt&amp;gt;ibm-acpi&amp;lt;/tt&amp;gt; Linux kernel module to control fan speed. It can be used to reduce [[Problem with fan noise|fan noise]] and power consumption.&lt;br /&gt;
&lt;br /&gt;
When this patch is applied and the &amp;lt;tt&amp;gt;ibm-acpi&amp;lt;/tt&amp;gt; module is loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; module parameter, the following new capabilities are added to {{path|/proc/acpi/ibm/fan}}:&lt;br /&gt;
* {{cmdroot|echo LEVEL &amp;gt; /proc/acpi/ibm/fan}} sets a fan speed level between 0 and 7, where &amp;lt;tt&amp;gt;LEVEL&amp;lt;/TT&amp;gt;=0 means fan off and &amp;lt;tt&amp;gt;LEVEL&amp;lt;/tt&amp;gt;=7 is the fastest speed.&lt;br /&gt;
* {{cmdroot|echo auto &amp;gt; /proc/acpi/ibm/fan}} tells the embedded controller to set the fan speed automatically according to system temperatures (this is the default).&lt;br /&gt;
* {{cmdroot|cat /proc/acpi/ibm/fan}} shows the current fan level (in addition to the fan speed in RPM).&lt;br /&gt;
&lt;br /&gt;
This patch is best used with a program that monitors system temperature and sets the fan speed accordingly. The [[ACPI fan control script|current scripts for fan control]] could serve as the basis of such program.&lt;br /&gt;
&lt;br /&gt;
{{WARN|Overriding the system's automatic temperature control may cause permanent hardware damage. Even when using temperature monitoring software, it is not clear whether the software can access all temperature sensor accessible to the embedded controller and understand them correctly. Moreover, this patch relies on an undocumented hardware interface, and may thus have arbitrary effects (especially on models it wasn't tested on).}}&lt;br /&gt;
&lt;br /&gt;
==Models on which this patch works==&lt;br /&gt;
&lt;br /&gt;
* ThinkPad {{T43}}, {{T43p}}&amp;lt;br /&amp;gt;(levels 1-2 = ~3300RPM, level 3-5 = ~4100RPM, level 6-7 = ~4700 RPM)&lt;br /&gt;
&lt;br /&gt;
Probably many other models; please update this page with your results.&lt;br /&gt;
&lt;br /&gt;
I can confirm that it works on Thinkpad {{T43}} here. However after&lt;br /&gt;
applying the patch, the fan speed monitor of gkrellm 2.2.7 cannot read&lt;br /&gt;
value correctly. Maybe we gkrellm is reading the second line for speed&lt;br /&gt;
but instead find the line for level, so it got confused? Would it be possible to interchange the lines so that speed still appears in the &lt;br /&gt;
second line and level appears in the third instead? I'm no coder, just &lt;br /&gt;
a suggestion to improve the patch.&lt;br /&gt;
--Jiang&lt;br /&gt;
&lt;br /&gt;
==Models on which this patch doesn't work==&lt;br /&gt;
&lt;br /&gt;
* ThinkPad {{560}}, {{600E}}, {{600X}}, {{770E}}, {{770X}} (these use a different fan control interface)&lt;br /&gt;
&lt;br /&gt;
==The patch==&lt;br /&gt;
&lt;br /&gt;
This also includes a minor fix (rename of &amp;lt;tt&amp;gt;device_add&amp;lt;/tt&amp;gt;) to make ibm-acpi 0.11 compile on kernel 2.6.13.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- ibm-acpi-0.11-orig/ibm_acpi.c	2005-03-17 12:06:16.000000000 +0200&lt;br /&gt;
+++ ibm-acpi-0.11/ibm_acpi.c	2005-10-24 12:56:44.000000000 +0200&lt;br /&gt;
@@ -1488,11 +1488,16 @@ static int fan_read(char *p)&lt;br /&gt;
 	} else {&lt;br /&gt;
 		/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
 		if (!acpi_ec_read(fan_status_offset, &amp;amp;status))&lt;br /&gt;
 			len += sprintf(p + len, &amp;quot;status:\t\tunreadable\n&amp;quot;);&lt;br /&gt;
-		else&lt;br /&gt;
+		else {&lt;br /&gt;
 			len += sprintf(p + len, &amp;quot;status:\t\t%s\n&amp;quot;,&lt;br /&gt;
-				       enabled(status, 7));&lt;br /&gt;
+				       status ? &amp;quot;enabled&amp;quot; : &amp;quot;disabled&amp;quot;);&lt;br /&gt;
+			if (status &amp;amp; 0x80)&lt;br /&gt;
+				len += sprintf(p + len, &amp;quot;level:\t\tauto\n&amp;quot;);&lt;br /&gt;
+			else&lt;br /&gt;
+				len += sprintf(p + len, &amp;quot;level:\t\t%d\n&amp;quot;, status);&lt;br /&gt;
+		}&lt;br /&gt;
 &lt;br /&gt;
 		if (!acpi_ec_read(fan_rpm_offset,     &amp;amp;lo) ||&lt;br /&gt;
 		    !acpi_ec_read(fan_rpm_offset + 1, &amp;amp;hi))&lt;br /&gt;
 			len += sprintf(p + len, &amp;quot;speed:\t\tunreadable\n&amp;quot;);&lt;br /&gt;
@@ -1506,9 +1511,10 @@ static int fan_read(char *p)&lt;br /&gt;
 		len += sprintf(p + len, &amp;quot;commands:\tlevel &amp;lt;level&amp;gt;&amp;quot;&lt;br /&gt;
 			       &amp;quot; (&amp;lt;level&amp;gt; is 0-7)\n&amp;quot;);&lt;br /&gt;
 	if (!gfan_handle)&lt;br /&gt;
 		/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
-		len += sprintf(p + len, &amp;quot;commands:\tenable, disable\n&amp;quot;);&lt;br /&gt;
+		len += sprintf(p + len, &amp;quot;commands:\tenable, disable, level &amp;lt;level&amp;gt;\n&amp;quot;&lt;br /&gt;
+			                &amp;quot;         \t(&amp;lt;level&amp;gt; is 0-7 or auto)\n&amp;quot;);&lt;br /&gt;
 	if (fans_handle)&lt;br /&gt;
 		/* X31, X40 */&lt;br /&gt;
 		len += sprintf(p + len, &amp;quot;commands:\tspeed &amp;lt;speed&amp;gt;&amp;quot;&lt;br /&gt;
 			       &amp;quot; (&amp;lt;speed&amp;gt; is 0-65535)\n&amp;quot;);&lt;br /&gt;
@@ -1528,17 +1534,24 @@ static int fan_write(char *buf)&lt;br /&gt;
 			/* 570, 770x-JL */&lt;br /&gt;
 			if (!acpi_evalf(sfan_handle, NULL, NULL, &amp;quot;vd&amp;quot;, level))&lt;br /&gt;
 				return -EIO;&lt;br /&gt;
 		} else if (!gfan_handle &amp;amp;&amp;amp;&lt;br /&gt;
-			   strlencmp(cmd, &amp;quot;enable&amp;quot;) == 0) {&lt;br /&gt;
+			   ( (strlencmp(cmd, &amp;quot;enable&amp;quot;) == 0) ||&lt;br /&gt;
+			     (strlencmp(cmd, &amp;quot;level auto&amp;quot;) == 0) ) ) {&lt;br /&gt;
 			/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
 			if (!acpi_ec_write(fan_status_offset, 0x80))&lt;br /&gt;
 				return -EIO;&lt;br /&gt;
 		} else if (!gfan_handle &amp;amp;&amp;amp;&lt;br /&gt;
 			   strlencmp(cmd, &amp;quot;disable&amp;quot;) == 0) {&lt;br /&gt;
 			/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
 			if (!acpi_ec_write(fan_status_offset, 0x00))&lt;br /&gt;
 				return -EIO;&lt;br /&gt;
+		} else if (!gfan_handle &amp;amp;&amp;amp;&lt;br /&gt;
+		    sscanf(cmd, &amp;quot;level %d&amp;quot;, &amp;amp;level) == 1 &amp;amp;&amp;amp;&lt;br /&gt;
+		    level &amp;gt;=0 &amp;amp;&amp;amp; level &amp;lt;= 7) {&lt;br /&gt;
+			/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
+			if (!acpi_ec_write(fan_status_offset, level))&lt;br /&gt;
+				return -EIO;&lt;br /&gt;
 		} else if (fans_handle &amp;amp;&amp;amp;&lt;br /&gt;
 		    sscanf(cmd, &amp;quot;speed %d&amp;quot;, &amp;amp;speed) == 1 &amp;amp;&amp;amp;&lt;br /&gt;
 		    speed &amp;gt;= 0 &amp;amp;&amp;amp; speed &amp;lt;= 65535) {&lt;br /&gt;
 			/* X31, X40 */&lt;br /&gt;
@@ -1751,9 +1764,9 @@ static int __init setup_notify(struct ib&lt;br /&gt;
 &lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
-static int device_add(struct acpi_device *device)&lt;br /&gt;
+static int ibmacpi_device_add(struct acpi_device *device)&lt;br /&gt;
 {&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
@@ -1769,9 +1782,9 @@ static int __init register_driver(struct&lt;br /&gt;
 &lt;br /&gt;
 	memset(ibm-&amp;gt;driver, 0, sizeof(struct acpi_driver));&lt;br /&gt;
 	sprintf(ibm-&amp;gt;driver-&amp;gt;name, &amp;quot;%s/%s&amp;quot;, IBM_NAME, ibm-&amp;gt;name);&lt;br /&gt;
 	ibm-&amp;gt;driver-&amp;gt;ids = ibm-&amp;gt;hid;&lt;br /&gt;
-	ibm-&amp;gt;driver-&amp;gt;ops.add = &amp;amp;device_add;&lt;br /&gt;
+	ibm-&amp;gt;driver-&amp;gt;ops.add = &amp;amp;ibmacpi_device_add;&lt;br /&gt;
 &lt;br /&gt;
 	ret = acpi_bus_register_driver(ibm-&amp;gt;driver);&lt;br /&gt;
 	if (ret &amp;lt; 0) {&lt;br /&gt;
 		printk(IBM_ERR &amp;quot;acpi_bus_register_driver(%s) failed: %d\n&amp;quot;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware spec==&lt;br /&gt;
&lt;br /&gt;
The patch relies on the following hardware behavior, discovered experimentally on a ThinkPad {{T43}}.&lt;br /&gt;
&lt;br /&gt;
  ACPI DSDT register _SB.PCI0.LPC.EC.HFSP (8 bits, offset 0x2F in the EmbeddedController address space):&lt;br /&gt;
 &lt;br /&gt;
  7 6 5 4 3 2 1 0&lt;br /&gt;
  | ? ? |   \___/&lt;br /&gt;
  |     |     |&lt;br /&gt;
  |     |     +------ manual fan speed level (0=disable, 1=min, ..., 7=max)&lt;br /&gt;
  |     \------------ no effect&lt;br /&gt;
  \------------------ automatic fan speed control (1=enable, overrides manual)&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>Espa</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Patch_for_controlling_fan_speed&amp;diff=11003</id>
		<title>Patch for controlling fan speed</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Patch_for_controlling_fan_speed&amp;diff=11003"/>
		<updated>2005-10-25T23:44:43Z</updated>

		<summary type="html">&lt;p&gt;Espa: /* Models on which this patch works */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This patch extends the &amp;lt;tt&amp;gt;ibm-acpi&amp;lt;/tt&amp;gt; Linux kernel module to control fan speed. It can be used to reduce [[Problem with fan noise|fan noise]] and power consumption.&lt;br /&gt;
&lt;br /&gt;
When this patch is applied and the &amp;lt;tt&amp;gt;ibm-acpi&amp;lt;/tt&amp;gt; module is loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; module parameter, the following new capabilities are added to {{path|/proc/acpi/ibm/fan}}:&lt;br /&gt;
* {{cmdroot|echo LEVEL &amp;gt; /proc/acpi/ibm/fan}} sets a fan speed level between 0 and 7, where &amp;lt;tt&amp;gt;LEVEL&amp;lt;/TT&amp;gt;=0 means fan off and &amp;lt;tt&amp;gt;LEVEL&amp;lt;/tt&amp;gt;=7 is the fastest speed.&lt;br /&gt;
* {{cmdroot|echo auto &amp;gt; /proc/acpi/ibm/fan}} tells the embedded controller to set the fan speed automatically according to system temperatures (this is the default).&lt;br /&gt;
* {{cmdroot|cat /proc/acpi/ibm/fan}} shows the current fan level (in addition to the fan speed in RPM).&lt;br /&gt;
&lt;br /&gt;
This patch is best used with a program that monitors system temperature and sets the fan speed accordingly. The [[ACPI fan control script|current scripts for fan control]] could serve as the basis of such program.&lt;br /&gt;
&lt;br /&gt;
{{WARN|Overriding the system's automatic temperature control may cause permanent hardware damage. Even when using temperature monitoring software, it is not clear whether the software can access all temperature sensor accessible to the embedded controller and understand them correctly. Moreover, this patch relies on an undocumented hardware interface, and may thus have arbitrary effects (especially on models it wasn't tested on).}}&lt;br /&gt;
&lt;br /&gt;
==Models on which this patch works==&lt;br /&gt;
&lt;br /&gt;
* ThinkPad {{T43}}, {{T43p}}&amp;lt;br /&amp;gt;(levels 1-2 = ~3300RPM, level 3-5 = ~4100RPM, level 6-7 = ~4700 RPM)&lt;br /&gt;
&lt;br /&gt;
Probably many other models; please update this page with your results.&lt;br /&gt;
&lt;br /&gt;
I can confirm that it works on Thinkpad {{T43}} here. However after&lt;br /&gt;
applying the patch, the fan speed monitor of gkrellm 2.2.7 cannot read&lt;br /&gt;
value correctly. Maybe we gkrellm is reading the second line for speed&lt;br /&gt;
but instead find the line for level, so it got confused? Would it be possible to interchange the lines so that speed still appears in the &lt;br /&gt;
second line and level appears in the third instead? I'm no coder, just &lt;br /&gt;
a suggestion to improve the patch.&lt;br /&gt;
&lt;br /&gt;
==Models on which this patch doesn't work==&lt;br /&gt;
&lt;br /&gt;
* ThinkPad {{560}}, {{600E}}, {{600X}}, {{770E}}, {{770X}} (these use a different fan control interface)&lt;br /&gt;
&lt;br /&gt;
==The patch==&lt;br /&gt;
&lt;br /&gt;
This also includes a minor fix (rename of &amp;lt;tt&amp;gt;device_add&amp;lt;/tt&amp;gt;) to make ibm-acpi 0.11 compile on kernel 2.6.13.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- ibm-acpi-0.11-orig/ibm_acpi.c	2005-03-17 12:06:16.000000000 +0200&lt;br /&gt;
+++ ibm-acpi-0.11/ibm_acpi.c	2005-10-24 12:56:44.000000000 +0200&lt;br /&gt;
@@ -1488,11 +1488,16 @@ static int fan_read(char *p)&lt;br /&gt;
 	} else {&lt;br /&gt;
 		/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
 		if (!acpi_ec_read(fan_status_offset, &amp;amp;status))&lt;br /&gt;
 			len += sprintf(p + len, &amp;quot;status:\t\tunreadable\n&amp;quot;);&lt;br /&gt;
-		else&lt;br /&gt;
+		else {&lt;br /&gt;
 			len += sprintf(p + len, &amp;quot;status:\t\t%s\n&amp;quot;,&lt;br /&gt;
-				       enabled(status, 7));&lt;br /&gt;
+				       status ? &amp;quot;enabled&amp;quot; : &amp;quot;disabled&amp;quot;);&lt;br /&gt;
+			if (status &amp;amp; 0x80)&lt;br /&gt;
+				len += sprintf(p + len, &amp;quot;level:\t\tauto\n&amp;quot;);&lt;br /&gt;
+			else&lt;br /&gt;
+				len += sprintf(p + len, &amp;quot;level:\t\t%d\n&amp;quot;, status);&lt;br /&gt;
+		}&lt;br /&gt;
 &lt;br /&gt;
 		if (!acpi_ec_read(fan_rpm_offset,     &amp;amp;lo) ||&lt;br /&gt;
 		    !acpi_ec_read(fan_rpm_offset + 1, &amp;amp;hi))&lt;br /&gt;
 			len += sprintf(p + len, &amp;quot;speed:\t\tunreadable\n&amp;quot;);&lt;br /&gt;
@@ -1506,9 +1511,10 @@ static int fan_read(char *p)&lt;br /&gt;
 		len += sprintf(p + len, &amp;quot;commands:\tlevel &amp;lt;level&amp;gt;&amp;quot;&lt;br /&gt;
 			       &amp;quot; (&amp;lt;level&amp;gt; is 0-7)\n&amp;quot;);&lt;br /&gt;
 	if (!gfan_handle)&lt;br /&gt;
 		/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
-		len += sprintf(p + len, &amp;quot;commands:\tenable, disable\n&amp;quot;);&lt;br /&gt;
+		len += sprintf(p + len, &amp;quot;commands:\tenable, disable, level &amp;lt;level&amp;gt;\n&amp;quot;&lt;br /&gt;
+			                &amp;quot;         \t(&amp;lt;level&amp;gt; is 0-7 or auto)\n&amp;quot;);&lt;br /&gt;
 	if (fans_handle)&lt;br /&gt;
 		/* X31, X40 */&lt;br /&gt;
 		len += sprintf(p + len, &amp;quot;commands:\tspeed &amp;lt;speed&amp;gt;&amp;quot;&lt;br /&gt;
 			       &amp;quot; (&amp;lt;speed&amp;gt; is 0-65535)\n&amp;quot;);&lt;br /&gt;
@@ -1528,17 +1534,24 @@ static int fan_write(char *buf)&lt;br /&gt;
 			/* 570, 770x-JL */&lt;br /&gt;
 			if (!acpi_evalf(sfan_handle, NULL, NULL, &amp;quot;vd&amp;quot;, level))&lt;br /&gt;
 				return -EIO;&lt;br /&gt;
 		} else if (!gfan_handle &amp;amp;&amp;amp;&lt;br /&gt;
-			   strlencmp(cmd, &amp;quot;enable&amp;quot;) == 0) {&lt;br /&gt;
+			   ( (strlencmp(cmd, &amp;quot;enable&amp;quot;) == 0) ||&lt;br /&gt;
+			     (strlencmp(cmd, &amp;quot;level auto&amp;quot;) == 0) ) ) {&lt;br /&gt;
 			/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
 			if (!acpi_ec_write(fan_status_offset, 0x80))&lt;br /&gt;
 				return -EIO;&lt;br /&gt;
 		} else if (!gfan_handle &amp;amp;&amp;amp;&lt;br /&gt;
 			   strlencmp(cmd, &amp;quot;disable&amp;quot;) == 0) {&lt;br /&gt;
 			/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
 			if (!acpi_ec_write(fan_status_offset, 0x00))&lt;br /&gt;
 				return -EIO;&lt;br /&gt;
+		} else if (!gfan_handle &amp;amp;&amp;amp;&lt;br /&gt;
+		    sscanf(cmd, &amp;quot;level %d&amp;quot;, &amp;amp;level) == 1 &amp;amp;&amp;amp;&lt;br /&gt;
+		    level &amp;gt;=0 &amp;amp;&amp;amp; level &amp;lt;= 7) {&lt;br /&gt;
+			/* all except 570, 600e/x, 770e, 770x */&lt;br /&gt;
+			if (!acpi_ec_write(fan_status_offset, level))&lt;br /&gt;
+				return -EIO;&lt;br /&gt;
 		} else if (fans_handle &amp;amp;&amp;amp;&lt;br /&gt;
 		    sscanf(cmd, &amp;quot;speed %d&amp;quot;, &amp;amp;speed) == 1 &amp;amp;&amp;amp;&lt;br /&gt;
 		    speed &amp;gt;= 0 &amp;amp;&amp;amp; speed &amp;lt;= 65535) {&lt;br /&gt;
 			/* X31, X40 */&lt;br /&gt;
@@ -1751,9 +1764,9 @@ static int __init setup_notify(struct ib&lt;br /&gt;
 &lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
-static int device_add(struct acpi_device *device)&lt;br /&gt;
+static int ibmacpi_device_add(struct acpi_device *device)&lt;br /&gt;
 {&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
@@ -1769,9 +1782,9 @@ static int __init register_driver(struct&lt;br /&gt;
 &lt;br /&gt;
 	memset(ibm-&amp;gt;driver, 0, sizeof(struct acpi_driver));&lt;br /&gt;
 	sprintf(ibm-&amp;gt;driver-&amp;gt;name, &amp;quot;%s/%s&amp;quot;, IBM_NAME, ibm-&amp;gt;name);&lt;br /&gt;
 	ibm-&amp;gt;driver-&amp;gt;ids = ibm-&amp;gt;hid;&lt;br /&gt;
-	ibm-&amp;gt;driver-&amp;gt;ops.add = &amp;amp;device_add;&lt;br /&gt;
+	ibm-&amp;gt;driver-&amp;gt;ops.add = &amp;amp;ibmacpi_device_add;&lt;br /&gt;
 &lt;br /&gt;
 	ret = acpi_bus_register_driver(ibm-&amp;gt;driver);&lt;br /&gt;
 	if (ret &amp;lt; 0) {&lt;br /&gt;
 		printk(IBM_ERR &amp;quot;acpi_bus_register_driver(%s) failed: %d\n&amp;quot;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware spec==&lt;br /&gt;
&lt;br /&gt;
The patch relies on the following hardware behavior, discovered experimentally on a ThinkPad {{T43}}.&lt;br /&gt;
&lt;br /&gt;
  ACPI DSDT register _SB.PCI0.LPC.EC.HFSP (8 bits, offset 0x2F in the EmbeddedController address space):&lt;br /&gt;
 &lt;br /&gt;
  7 6 5 4 3 2 1 0&lt;br /&gt;
  | ? ? |   \___/&lt;br /&gt;
  |     |     |&lt;br /&gt;
  |     |     +------ manual fan speed level (0=disable, 1=min, ..., 7=max)&lt;br /&gt;
  |     \------------ no effect&lt;br /&gt;
  \------------------ automatic fan speed control (1=enable, overrides manual)&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>Espa</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problems_with_SATA_and_Linux&amp;diff=9324</id>
		<title>Problems with SATA and Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problems_with_SATA_and_Linux&amp;diff=9324"/>
		<updated>2005-09-27T03:38:58Z</updated>

		<summary type="html">&lt;p&gt;Espa: /* No SMART support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some ThinkPad models, use a SATA controller for the system hard disk (the hard disk itself is PATA, but is accessed through a SATA-to-PATA bridge). This causes several complications for Linux installation. The following lists these problems and some workarounds.&lt;br /&gt;
&lt;br /&gt;
=Models using a SATA disk interface=&lt;br /&gt;
'''SATA controller with IDE disk (PATA passthrough)'''&amp;lt;br&amp;gt;&lt;br /&gt;
ThinkPad {{T43}}, {{T43p}}, {{R52}}, {{X41}}, {{X41T}}&amp;lt;br&amp;gt;&lt;br /&gt;
'''SATA controller with SATA disk'''&amp;lt;br&amp;gt;&lt;br /&gt;
ThinkPad {{Z60t}}, {{Z60m}}.&lt;br /&gt;
&lt;br /&gt;
=SATA-related problems under Linux=&lt;br /&gt;
The following is a list of SATA-related issues one may encounter when runing Linux on these ThinkPad models. Note that the details are often version- and distribution-specific.&lt;br /&gt;
&lt;br /&gt;
==Hang on resume from suspend to RAM==&lt;br /&gt;
&lt;br /&gt;
Linux kernels (as of 2.6.14-rc2) do not support suspend and resume for SATA devices. As a result, the machine hangs upon the first disk access after resume. A kernel patch is available (see [[How to make ACPI work]] under &amp;quot;Suspend to RAM&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Some distributions already include this patch (e.g., Ubuntu), but some don't (e.g., Fedora Core 4).&lt;br /&gt;
&lt;br /&gt;
==Failed resume from suspend to disk==&lt;br /&gt;
&lt;br /&gt;
Suspend to disk (using swsusp or swsusp2) needs to load the memory image from the SATA disk. For this to work, you either need an initrd with all the necessary SATA modules, or the SATA drivers compiled into the kernel.&lt;br /&gt;
&lt;br /&gt;
==DVD drive not recognized==&lt;br /&gt;
&lt;br /&gt;
The ata_piix SATA driver grabs ownership over the IDE ports when it is loaded, but (by default) does not support PATA ATAPI devices such as the Ultrabay optical drives. Thus, if IDE support is compiled as a module and loaded after ata_piix, the DVD drive will not be recognized by either driver.&lt;br /&gt;
&lt;br /&gt;
The following configurations do work:&lt;br /&gt;
* Compile IDE into the kernel (non-module)&lt;br /&gt;
* Compile both IDE and SATA as modules and make sure IDE is loaded first&lt;br /&gt;
* Enable PATA ATAPI support in the SATA system (experimental; see below).&lt;br /&gt;
&lt;br /&gt;
Note that the optical drive must be in the Ultrabay during system boot (Ultrabay device swapping is currently unsupported).&lt;br /&gt;
&lt;br /&gt;
==No DMA on DVD drive==&lt;br /&gt;
&lt;br /&gt;
Using the IDE driver, DMA support cannot be enabled on an Ultrabay optical drive:&lt;br /&gt;
&lt;br /&gt;
 # hdparm -d1 /dev/hdc&lt;br /&gt;
 &lt;br /&gt;
 /dev/hdc:&lt;br /&gt;
  setting using_dma to 1 (on)&lt;br /&gt;
  HDIO_SET_DMA failed: Operation not permitted&lt;br /&gt;
  using_dma    =  0 (off)&lt;br /&gt;
&lt;br /&gt;
As a result, the optical drive is slow, and in particular, too slow to play video DVDs.&lt;br /&gt;
&lt;br /&gt;
One workaround is to use employ the SATA driver (instead of the IDE driver) for the optical drive. This requires enabling two featues of the SATA driver, namely ATAPI support and PATA support, which are both in active development and far from stable. Using this will probably devour all your data and go on to eat all the food in your fridge. But if you have full backups and an empty fridge, do the following:&lt;br /&gt;
&lt;br /&gt;
* Grab the latest kernel, since these feature are under active development (these instructions where tested with 2.6.14-rc2).&lt;br /&gt;
* Configure the IDE system as modules, to get it out of the way (maybe it can be completely removed).&lt;br /&gt;
* Configure the SATA system (and in particular the ata_piix driver) as built-in.&lt;br /&gt;
* In {{path|include/linux/libata.h}}, set&lt;br /&gt;
 #define ATA_ENABLE_PATA&lt;br /&gt;
* In {{path|drivers/scsi/libata-core.c}}, set&lt;br /&gt;
 int atapi_enabled = 1&lt;br /&gt;
(An untested alternative to the last step is to compile the SATA system as modules, make sure it is loaded before the IDE modules, and pass the &amp;quot;atapi_enabled=1&amp;quot; module parameter.)&lt;br /&gt;
&lt;br /&gt;
There have been reports that DVD burning doesn't work under this configuration, but it seems to work with kernel 2.6.14-rc2 (tested on a ThinkPad {{T43}} with a [[UltraBay Slim DVD Multi-Burner Plus]]).&lt;br /&gt;
&lt;br /&gt;
{{NOTE|If you are aware of a more reliable solution to this issue, please update this page.}}&lt;br /&gt;
&lt;br /&gt;
==No SMART support==&lt;br /&gt;
&lt;br /&gt;
The Linux SATA system currently does not support SMART commands (e.g., via smartctl). This is under development. &lt;br /&gt;
&lt;br /&gt;
A Patch that works on my T43 with 2.6.12-4 kernel can be found at&lt;br /&gt;
http://rtr.ca/dell_i9300/kernel/kernel-2.6.12/03_libata_passthru.patch&lt;br /&gt;
or for 2.6.13 kernel&lt;br /&gt;
http://rtr.ca/dell_i9300/kernel/kernel-2.6.13/03_libata_passthru.patch&lt;br /&gt;
&lt;br /&gt;
==No disk power management==&lt;br /&gt;
&lt;br /&gt;
The Linux SATA system currently does not support power management commands. This is under development.&lt;br /&gt;
&lt;br /&gt;
==BIOS error 2010 on user-installed hard disk==&lt;br /&gt;
&lt;br /&gt;
While not a Linux issue, note that there is an issue with installing alternative PATA (IDE) hard disks as the system drive. Unless the disk is one of the few approved disks listed inside the BIOS, you will get an BIOS error 2010 during system boot, and the disk may operate unreliably. This seems to be enforced due to limitations (bugs?) of the SATA-to-PATA bridge, and currently the only reliably way to avoid it seems to be to use only drives sold by IBM specifically for use in these ThinkPad models.&lt;br /&gt;
&lt;br /&gt;
There is no such limitations for disks used in the UltraBay Slim 2nd Hard Drive Adapter.&lt;/div&gt;</summary>
		<author><name>Espa</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problems_with_SATA_and_Linux&amp;diff=9319</id>
		<title>Problems with SATA and Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problems_with_SATA_and_Linux&amp;diff=9319"/>
		<updated>2005-09-27T03:38:34Z</updated>

		<summary type="html">&lt;p&gt;Espa: /* No SMART support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some ThinkPad models, use a SATA controller for the system hard disk (the hard disk itself is PATA, but is accessed through a SATA-to-PATA bridge). This causes several complications for Linux installation. The following lists these problems and some workarounds.&lt;br /&gt;
&lt;br /&gt;
=Models using a SATA disk interface=&lt;br /&gt;
'''SATA controller with IDE disk (PATA passthrough)'''&amp;lt;br&amp;gt;&lt;br /&gt;
ThinkPad {{T43}}, {{T43p}}, {{R52}}, {{X41}}, {{X41T}}&amp;lt;br&amp;gt;&lt;br /&gt;
'''SATA controller with SATA disk'''&amp;lt;br&amp;gt;&lt;br /&gt;
ThinkPad {{Z60t}}, {{Z60m}}.&lt;br /&gt;
&lt;br /&gt;
=SATA-related problems under Linux=&lt;br /&gt;
The following is a list of SATA-related issues one may encounter when runing Linux on these ThinkPad models. Note that the details are often version- and distribution-specific.&lt;br /&gt;
&lt;br /&gt;
==Hang on resume from suspend to RAM==&lt;br /&gt;
&lt;br /&gt;
Linux kernels (as of 2.6.14-rc2) do not support suspend and resume for SATA devices. As a result, the machine hangs upon the first disk access after resume. A kernel patch is available (see [[How to make ACPI work]] under &amp;quot;Suspend to RAM&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Some distributions already include this patch (e.g., Ubuntu), but some don't (e.g., Fedora Core 4).&lt;br /&gt;
&lt;br /&gt;
==Failed resume from suspend to disk==&lt;br /&gt;
&lt;br /&gt;
Suspend to disk (using swsusp or swsusp2) needs to load the memory image from the SATA disk. For this to work, you either need an initrd with all the necessary SATA modules, or the SATA drivers compiled into the kernel.&lt;br /&gt;
&lt;br /&gt;
==DVD drive not recognized==&lt;br /&gt;
&lt;br /&gt;
The ata_piix SATA driver grabs ownership over the IDE ports when it is loaded, but (by default) does not support PATA ATAPI devices such as the Ultrabay optical drives. Thus, if IDE support is compiled as a module and loaded after ata_piix, the DVD drive will not be recognized by either driver.&lt;br /&gt;
&lt;br /&gt;
The following configurations do work:&lt;br /&gt;
* Compile IDE into the kernel (non-module)&lt;br /&gt;
* Compile both IDE and SATA as modules and make sure IDE is loaded first&lt;br /&gt;
* Enable PATA ATAPI support in the SATA system (experimental; see below).&lt;br /&gt;
&lt;br /&gt;
Note that the optical drive must be in the Ultrabay during system boot (Ultrabay device swapping is currently unsupported).&lt;br /&gt;
&lt;br /&gt;
==No DMA on DVD drive==&lt;br /&gt;
&lt;br /&gt;
Using the IDE driver, DMA support cannot be enabled on an Ultrabay optical drive:&lt;br /&gt;
&lt;br /&gt;
 # hdparm -d1 /dev/hdc&lt;br /&gt;
 &lt;br /&gt;
 /dev/hdc:&lt;br /&gt;
  setting using_dma to 1 (on)&lt;br /&gt;
  HDIO_SET_DMA failed: Operation not permitted&lt;br /&gt;
  using_dma    =  0 (off)&lt;br /&gt;
&lt;br /&gt;
As a result, the optical drive is slow, and in particular, too slow to play video DVDs.&lt;br /&gt;
&lt;br /&gt;
One workaround is to use employ the SATA driver (instead of the IDE driver) for the optical drive. This requires enabling two featues of the SATA driver, namely ATAPI support and PATA support, which are both in active development and far from stable. Using this will probably devour all your data and go on to eat all the food in your fridge. But if you have full backups and an empty fridge, do the following:&lt;br /&gt;
&lt;br /&gt;
* Grab the latest kernel, since these feature are under active development (these instructions where tested with 2.6.14-rc2).&lt;br /&gt;
* Configure the IDE system as modules, to get it out of the way (maybe it can be completely removed).&lt;br /&gt;
* Configure the SATA system (and in particular the ata_piix driver) as built-in.&lt;br /&gt;
* In {{path|include/linux/libata.h}}, set&lt;br /&gt;
 #define ATA_ENABLE_PATA&lt;br /&gt;
* In {{path|drivers/scsi/libata-core.c}}, set&lt;br /&gt;
 int atapi_enabled = 1&lt;br /&gt;
(An untested alternative to the last step is to compile the SATA system as modules, make sure it is loaded before the IDE modules, and pass the &amp;quot;atapi_enabled=1&amp;quot; module parameter.)&lt;br /&gt;
&lt;br /&gt;
There have been reports that DVD burning doesn't work under this configuration, but it seems to work with kernel 2.6.14-rc2 (tested on a ThinkPad {{T43}} with a [[UltraBay Slim DVD Multi-Burner Plus]]).&lt;br /&gt;
&lt;br /&gt;
{{NOTE|If you are aware of a more reliable solution to this issue, please update this page.}}&lt;br /&gt;
&lt;br /&gt;
==No SMART support==&lt;br /&gt;
&lt;br /&gt;
The Linux SATA system currently does not support SMART commands (e.g., via smartctl). This is under development. &lt;br /&gt;
A Patch that works on my T43 with 2.6.12-4 kernel can be found at&lt;br /&gt;
http://rtr.ca/dell_i9300/kernel/kernel-2.6.12/03_libata_passthru.patch&lt;br /&gt;
or for 2.6.13 kernel&lt;br /&gt;
http://rtr.ca/dell_i9300/kernel/kernel-2.6.13/03_libata_passthru.patch&lt;br /&gt;
&lt;br /&gt;
==No disk power management==&lt;br /&gt;
&lt;br /&gt;
The Linux SATA system currently does not support power management commands. This is under development.&lt;br /&gt;
&lt;br /&gt;
==BIOS error 2010 on user-installed hard disk==&lt;br /&gt;
&lt;br /&gt;
While not a Linux issue, note that there is an issue with installing alternative PATA (IDE) hard disks as the system drive. Unless the disk is one of the few approved disks listed inside the BIOS, you will get an BIOS error 2010 during system boot, and the disk may operate unreliably. This seems to be enforced due to limitations (bugs?) of the SATA-to-PATA bridge, and currently the only reliably way to avoid it seems to be to use only drives sold by IBM specifically for use in these ThinkPad models.&lt;br /&gt;
&lt;br /&gt;
There is no such limitations for disks used in the UltraBay Slim 2nd Hard Drive Adapter.&lt;/div&gt;</summary>
		<author><name>Espa</name></author>
		
	</entry>
</feed>