<?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=Jfl</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=Jfl"/>
	<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/wiki/Special:Contributions/Jfl"/>
	<updated>2026-06-14T10:58:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problem_with_high_pitch_noises&amp;diff=26723</id>
		<title>Problem with high pitch noises</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problem_with_high_pitch_noises&amp;diff=26723"/>
		<updated>2006-12-02T05:33:25Z</updated>

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

		<summary type="html">&lt;p&gt;Jfl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==General==&lt;br /&gt;
Linux supports dynamic frequency scaling for systems with the following processors:&lt;br /&gt;
*[[Intel Mobile Pentium III]]&lt;br /&gt;
*[[Intel Mobile Pentium III-M]]&lt;br /&gt;
*[[Intel Mobile Pentium 4]]&lt;br /&gt;
*[[Intel Mobile Pentium 4-M]]&lt;br /&gt;
*[[Intel Pentium M (Banias)]]&lt;br /&gt;
*[[Intel Pentium M (Dothan)]]&lt;br /&gt;
*[[Intel Core Solo (Yonah)]]&lt;br /&gt;
*[[Intel Core Duo (Yonah)]]&lt;br /&gt;
*Mobile Athlon&lt;br /&gt;
*AMD64&lt;br /&gt;
*Opteron&lt;br /&gt;
&lt;br /&gt;
==Configuring the Kernel==&lt;br /&gt;
===2.4 Kernels===&lt;br /&gt;
There were various frequency scaling implementations in the 2.4 series of kernels. They all were preliminary and a standard was rised with the introduction of the sysfs filesystem in 2.6 kernels. It is recommended to use a 2.6 kernel, if possible.&lt;br /&gt;
&lt;br /&gt;
===2.6 Kernels===&lt;br /&gt;
You need to enable the cpu frequency scaling for your kernel (usually your distros kernel will have this enabled):&lt;br /&gt;
:{{kernelconf|CONFIG_CPU_FREQ|&amp;lt;*&amp;gt;|||||}}&lt;br /&gt;
&lt;br /&gt;
You need to enable governors, if not already done in your distros default kernel:&lt;br /&gt;
:{{kernelconf|CONFIG_CPU_FREQ_GOV_PERFORMANCE|&amp;lt;*&amp;gt;|||||}}&lt;br /&gt;
:{{kernelconf|CONFIG_CPU_FREQ_GOV_POWERSAVE|&amp;lt;*&amp;gt;|||||}}&lt;br /&gt;
:{{kernelconf|CONFIG_CPU_FREQ_GOV_USERSPACE|&amp;lt;*&amp;gt;|||||}}&lt;br /&gt;
&lt;br /&gt;
Since 2.6.10 there is the ondemand governor that does cpu frequency scaling in kernel and can be used as an alternative to powernowd etc.&lt;br /&gt;
It can be enabled with:&lt;br /&gt;
:{{kernelconf|CONFIG_CPU_FREQ_GOV_ONDEMAND|&amp;lt;*&amp;gt;|||||}}&lt;br /&gt;
&lt;br /&gt;
Since 2.6.12 there is the conservative governor that works similar to the ondemand governor.&lt;br /&gt;
:{{kernelconf|CONFIG_CPU_FREQ_GOV_CONSERVATIVE|&amp;lt;*&amp;gt;|||||}}&lt;br /&gt;
&lt;br /&gt;
ondemand and conservative differ in the way they scale up and down. The ondemand governor switches to the highest frequency immediately when there is load, while the conservative governor increases frequency step by step. Likewise they behave the other way round for stepping down frequency when the CPU is idle.&lt;br /&gt;
&lt;br /&gt;
If you own a Dothan processor, you need to enable Enhanced SpeedStep functionalities.&lt;br /&gt;
:{{kernelconf|CONFIG_X86_SPEEDSTEP_CENTRINO|&amp;lt;*&amp;gt;|||||}}&lt;br /&gt;
&lt;br /&gt;
==Using the Sys Interface==&lt;br /&gt;
The files in {{path|/sys/devices/system/cpu/cpu0/cpufreq/}} provide information and a means of controlling the frequency scaling subsystem.&lt;br /&gt;
Seed values are given in Khz. You need to be root to access the /sys filesystem.&lt;br /&gt;
&lt;br /&gt;
Your max speed is at {{path|/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq}}.&lt;br /&gt;
:{{cmdroot|cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq}}&lt;br /&gt;
:{{cmdresult|700000}}&lt;br /&gt;
Your min speed is at {{path|/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq}}.&lt;br /&gt;
:{{cmdroot|cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq}}&lt;br /&gt;
:{{cmdresult|500000}}&lt;br /&gt;
If you are using the userspace governor, you can write to {{path|/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed}} to change the current speed.&lt;br /&gt;
:{{cmdroot|echo 700000 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed}}&lt;br /&gt;
:{{cmdroot|cat /proc/cpuinfo  | grep &amp;quot;cpu MHz&amp;quot;}}&lt;br /&gt;
:{{cmdresult|cpu MHz         : 697.252}}&lt;br /&gt;
:{{cmdroot|echo 900000 &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed}}&lt;br /&gt;
:{{cmdroot|cat /proc/cpuinfo  | grep &amp;quot;cpu MHz&amp;quot;}}&lt;br /&gt;
:{{cmdresult|cpu MHz         : 976.152}}&lt;br /&gt;
&lt;br /&gt;
==Using Frequency Scaling Governors==&lt;br /&gt;
You can compile the scaling governors into your kernel or compile it as module. You'll find the governors with 'make menuconfig' here:&lt;br /&gt;
:{{kernelconf||||CPU Frequency scaling|Power management options (ACPI, APM)|||}}&lt;br /&gt;
&lt;br /&gt;
After booting the new kernel you can get a list of available governors with (as root):&lt;br /&gt;
:{{cmdroot|cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors}}&lt;br /&gt;
:{{cmdresult|conservative ondemand powersave userspace performance}}&lt;br /&gt;
&lt;br /&gt;
Note: If the governors are compiled as modules, load them first:&lt;br /&gt;
:{{cmdroot|modprobe cpufreq_performance cpufreq_ondemand cpufreq_conservative cpufreq_powersave cpufreq_userspace}}&lt;br /&gt;
&lt;br /&gt;
A Short Overview over the available governors:&lt;br /&gt;
:;ondemand&lt;br /&gt;
::This driver is a dynamic cpufreq policy governor. It changes frequency based on the processor load and may not work on older laptops without Enhanced SpeedStep due to [http://lists.debian.org/debian-powerpc/2005/05/msg00542.html latency reasons].&lt;br /&gt;
:;conservative&lt;br /&gt;
::New since 2.6.12. Similar to ''ondemand'' but has a much slower 'slew rate', remaining at high frequency for many seconds after recent processor demand.  Good for battery powered environments and AMD64. Again, this governor may not work on older ThinkPads like the T21.&lt;br /&gt;
:;powersave&lt;br /&gt;
::Like the name says, your battery would choose this one ;). It sets the Frequency always to the lowest available.&lt;br /&gt;
:;userspace&lt;br /&gt;
::You have to choose this one, if you want to set the frequency manually. Some [[#Using Frequency Scaling Daemons|frequency scaling daemons]] require this governor to operate correctly.  This will typically be the recommended one with older processors like A30p's pIIIm-1200.&lt;br /&gt;
:;performance&lt;br /&gt;
::This governor sets your Frequency always to the highest available.&lt;br /&gt;
&lt;br /&gt;
Now we set our governor:&lt;br /&gt;
What is our current governor?&lt;br /&gt;
:{{cmdroot|cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor}}&lt;br /&gt;
:{{cmdresult|userspace}}&lt;br /&gt;
Set new governor and watch if it has changed&lt;br /&gt;
:{{cmdroot|echo conservative &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor}}&lt;br /&gt;
:{{cmdroot|cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor}}&lt;br /&gt;
:{{cmdresult|conservative}}&lt;br /&gt;
&lt;br /&gt;
Congrats! Your governor is active.&lt;br /&gt;
&lt;br /&gt;
You may set the governor in your rc.local, to make it used on every boot.&lt;br /&gt;
&lt;br /&gt;
==Using Frequency Scaling Daemons==&lt;br /&gt;
Frequency Scaling Daemons adapt the frequency policy to different situations. A typical configuration would be to use the ondemand governor running off batteries and performance otherwise, or combining powersave with conservative on laptops with heat problems. More sophisticated setups adapt to battery level, CPU temperature or even running programs. Some daemons are able to control other power management features like hard disks or graphic cards.&lt;br /&gt;
&lt;br /&gt;
{{NOTE|Daemons are optional. If you don't plan to change policies depending on the situation, you don't need one and you can stick to the &amp;lt;tt&amp;gt;ondemand&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;conservative&amp;lt;/tt&amp;gt; frequency scaling governors, available in kernels after 2.6.10 or 2.6.12 respectively. See [[#Using Frequency Scaling Governors|above]]. They require less configuration and have generally been experienced to flawlessly adapt to the situations at hand.}}&lt;br /&gt;
&lt;br /&gt;
Some daemons use the kernel governors (see above), others implement the functionality on their own. In the latter case you have to enable the userspace governor. If it is built as module, load it as &amp;lt;tt&amp;gt;cpufreq-userspace&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There are plenty of userspace frequency scaling daemons available:&lt;br /&gt;
&lt;br /&gt;
*[[How to configure cpudynd | cpudynd]]&lt;br /&gt;
*[[How to configure cpufreqd | cpufreqd]]&lt;br /&gt;
*[[How to use cpufrequtils | cpufrequtils]]&lt;br /&gt;
*[[How to configure powernowd | powernowd]]&lt;br /&gt;
*[[How to configure powersaved | powersaved]]&lt;br /&gt;
*[[How to configure speedfreqd | speedfreqd]]&lt;br /&gt;
&lt;br /&gt;
==Debian notes==&lt;br /&gt;
Instead of compiling your own kernel, you can use the {{Debian}} &amp;quot;stock&amp;quot; kernel. In Unstable/SID the 2.6.12 kernel image with an {{path|/etc/modules}} file that includes:&lt;br /&gt;
&lt;br /&gt;
 battery&lt;br /&gt;
 ac&lt;br /&gt;
 thermal&lt;br /&gt;
 processor&lt;br /&gt;
 acpi-cpufreq&lt;br /&gt;
 cpufreq-userspace&lt;br /&gt;
&lt;br /&gt;
With the powernowd package and you should be setup.&lt;br /&gt;
&lt;br /&gt;
{{Debian}} has no {{path|rc.local}}, so read [http://www.debian.org/doc/FAQ/ch-customizing.en.html#s-custombootscripts this] and [http://www.debian.org/doc/FAQ/ch-customizing.en.html#s-booting this].&lt;br /&gt;
&lt;br /&gt;
A better alternative for Debian than modifying bootscripts, is to install the [http://packages.debian.org/cgi-bin/search_packages.pl?searchon=names&amp;amp;version=all&amp;amp;exact=1&amp;amp;keywords=sysfsutils sysfsutils package]. Then edit {{path|/etc/sysfs.conf}} (as root), where you can setup values to sysfs entries that you want to be modified automatically on boot.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
*If you have a Coppermine-piix-smi based ThinkPads like from the A2x, X2x and T2x series you need to enable the &amp;lt;tt&amp;gt;speedstep-smi&amp;lt;/tt&amp;gt; driver in the kernel and load it if it's built as module. You might want to look at [[How to get SpeedStep working on Coppermine-piix4-smi based ThinkPads | this page]].&lt;br /&gt;
&lt;br /&gt;
*If you have a p4-class celeron based ThinkPad like the R40e you might want to look at [[How to get SpeedStep working on P4-class-Celeron based ThinkPads | this page]]&lt;br /&gt;
&lt;br /&gt;
*You may need to set your BIOS to &amp;quot;maximum performance&amp;quot; if you are using Linux to set the CPU speed.  This is necessary to prevent odd behaviour (cpufreq 'freezing' at certain frequencies) with the T4x series.&lt;br /&gt;
&lt;br /&gt;
==Finetuning voltages and available frequencies==&lt;br /&gt;
See [[Pentium M undervolting and underclocking]].&lt;br /&gt;
&lt;br /&gt;
==A note about CPU throttling==&lt;br /&gt;
&lt;br /&gt;
Throttling the CPU through ACPI &amp;quot;T&amp;quot; states is generally useless for power consumption reduction.  It does not decrease clock frequency at all, and it can even increase power consumption in a modern CPU capable of ACPI &amp;quot;C&amp;quot; states, as it can interfere with the CPU reaching the higher C states (such as C2).&lt;br /&gt;
&lt;br /&gt;
On a T43, setting a CPU to a ACPI Throttle state different than T0 (no throttling) can cause it to draw more than 100mW extra power, as it will reach C2 less often.&lt;br /&gt;
&lt;br /&gt;
[[Category:600X]] [[Category:A20m]] [[Category:A20p]] [[Category:A21e]] [[Category:A21m]] [[Category:A21p]] [[Category:A22e]] [[Category:A22m]] [[Category:A22p]] [[Category:A30]] [[Category:A30p]] [[Category:A31]] [[Category:A31p]] [[Category:i1200]] [[Category:i1300]] [[Category:i1620]] [[Category:G40]] [[Category:G41]] [[Category:R30]] [[Category:R31]] [[Category:R32]] [[Category:R40]] [[Category:R40e]] [[Category:R50]] [[Category:R50e]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[Category:R60]] [[Category:R60e]] [[Category:T20]] [[Category:T21]] [[Category:T22]] [[Category:T23]] [[Category:T30]] [[Category:T40]] [[Category:T40p]] [[Category:T41]] [[Category:T41p]] [[Category:T42]] [[Category:T42p]] [[Category:T43]] [[Category:T43p]] [[Category:T60]] [[Category:X20]] [[Category:X21]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:X60]] [[Category:X60s]] [[Category:Z60m]] [[Category:Z60t]] [[Category:Z61t]] [[Category:TransNote]]&lt;/div&gt;</summary>
		<author><name>Jfl</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=26721</id>
		<title>Tp smapi</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Tp_smapi&amp;diff=26721"/>
		<updated>2006-12-02T03:46:58Z</updated>

		<summary type="html">&lt;p&gt;Jfl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module exposes some features of the ThinkPad hardware/firmware via a &amp;lt;tt&amp;gt;sysfs&amp;lt;/tt&amp;gt; interface. Currently, the main implemented functionality is control of battery charging and extended battery status. The underlfying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.&lt;br /&gt;
&lt;br /&gt;
For older ThinkPad models, see also [[tpctl]].&lt;br /&gt;
&lt;br /&gt;
{{WARN|This driver uses undocumented features and direct hardware access. It thus cannot be guaranteed to work and could conceivably damage your computer (though so far no incidents have been reported).}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
*Battery charge/discharge control&lt;br /&gt;
*Battery status information&lt;br /&gt;
*PCI bus power saving control&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=171579 download] only the &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; package. Versions containing &amp;lt;tt&amp;gt;-test&amp;lt;/tt&amp;gt; are experimental, others are stable.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
====Installation from source====&lt;br /&gt;
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .&lt;br /&gt;
&lt;br /&gt;
For testing, you can simply compile and load the driver within the current&lt;br /&gt;
working directory:&lt;br /&gt;
:{{cmdroot|tar xzvf tp_smapi-0.30.tgz}}&lt;br /&gt;
:{{cmdroot|cd tp_smapi-0.30}}&lt;br /&gt;
:{{cmdroot|make load}}&lt;br /&gt;
&lt;br /&gt;
To compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|make install}}&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, add &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; to also patch the &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; for compatibility with &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (this requires a kernel source tree matching the current kernel):&lt;br /&gt;
:{{cmdroot|1=make load HDAPS=1}}&lt;br /&gt;
or, to compile and install into the kernel's module path:&lt;br /&gt;
:{{cmdroot|1=make install HDAPS=1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prepare a stand-alone patch against the current kernel tree (including&lt;br /&gt;
a patch against &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; and new &amp;lt;tt&amp;gt;Kconfig&amp;lt;/tt&amp;gt; entries):&lt;br /&gt;
:{{cmdroot|make patch}}&lt;br /&gt;
&lt;br /&gt;
To delete all autogenerated files:&lt;br /&gt;
:{{cmdroot|make clean}}&lt;br /&gt;
&lt;br /&gt;
The original kernel tree is never modified by any these commands. &lt;br /&gt;
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.&lt;br /&gt;
&lt;br /&gt;
====Installation in Gentoo====&lt;br /&gt;
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/packages/?category=app-laptop;name=tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.&lt;br /&gt;
&lt;br /&gt;
If you use the [[HDAPS]] driver, do this first:&lt;br /&gt;
&lt;br /&gt;
* Configure &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; as module in your kernel&lt;br /&gt;
* Add the &amp;lt;tt&amp;gt;HDAPS&amp;lt;/tt&amp;gt; use flag in {{path|/etc/make.conf}}&lt;br /&gt;
* {{cmdroot|rmmod hdaps}}&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)&lt;br /&gt;
* {{cmdroot|echo &amp;quot;tp_smapi&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
* {{cmdroot|echo &amp;quot;hdaps&amp;quot; &amp;gt;&amp;gt; /etc/modules.autoload.d/kernel-2.6}}&lt;br /&gt;
&lt;br /&gt;
Then reboot, or run:&lt;br /&gt;
* {{cmdroot|modprobe tp_smapi}}&lt;br /&gt;
* {{cmdroot|modprobe hdaps}}&lt;br /&gt;
&lt;br /&gt;
====Installation on Debian/Ubuntu====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://www.oakcourt.dyndns.org/debian/ ./&lt;br /&gt;
deb-src http://www.oakcourt.dyndns.org/debian/ ./&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This repository has kernel-patch packages for tp_smapi. This will not only integrate tp_smapi into your kernel build but will patch the hdaps driver for you. It is available for kernel 2.6.15 and later. Also available is an init script to automatically set SMAPI paramaters at boot--this is in package tpsmapi-utils. Please report any bugs to [[User:Ajbarr]]&lt;br /&gt;
&lt;br /&gt;
===Battery charge control features===&lt;br /&gt;
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):&lt;br /&gt;
:{{cmdroot|echo 40 &amp;gt; /sys/devices/platform/smapi/BAT0/start_charge_thresh}}&lt;br /&gt;
:{{cmdroot|echo 70 &amp;gt; /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}&lt;br /&gt;
{{HINT|Battery charging thresholds can be used to keep Li-Ion ad Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}&lt;br /&gt;
To unconditionally inhibit charging for 17 minutes:&lt;br /&gt;
:{{cmdroot|echo 17 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use a an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel charge inhibiting:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}&lt;br /&gt;
&lt;br /&gt;
To force battery discharging even if connected to AC, use one of these:&lt;br /&gt;
:{{cmdroot|echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]].}}&lt;br /&gt;
&lt;br /&gt;
To cancel forced discharge:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge}}&lt;br /&gt;
&lt;br /&gt;
===Battery status features===&lt;br /&gt;
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/installed&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/state       # idle/charging/discharging&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/cycle_count&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_now   # instantaneous power&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/power_avg   # last minute average&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_percent&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/remaining_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/design_capacity&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/voltage&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/design_voltage&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacturer&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/model&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/barcoding&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/chemistry&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/serial&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/manufacture_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/first_use_date&lt;br /&gt;
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius&lt;br /&gt;
# cat /sys/devices/platform/smapi/ac_connected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The raw status data is also available, including some fields not listed above (in case you can figure them out):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/dump}}&lt;br /&gt;
&lt;br /&gt;
In all of the above, replace &amp;lt;tt&amp;gt;BAT0&amp;lt;/tt&amp;gt; with &amp;lt;tt&amp;gt;BAT1&amp;lt;/tt&amp;gt; to address the 2nd battery.&lt;br /&gt;
&lt;br /&gt;
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; you will need to load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; using {{cmdroot|1=make load HDAPS=1}} (see [[#Conflict_with_hdaps|Conflict with hdaps]] below).&lt;br /&gt;
&lt;br /&gt;
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
&lt;br /&gt;
This controls the &amp;quot;PCI bus power saving&amp;quot; option in the BIOS, and takes effect at the next boot. On a ThinkPad {{T43}} turning this off increases idle power consumption by about 350mW. Out-of-the-box default is 1.&lt;br /&gt;
 # cat /sys/devices/platform/smapi/enable_pci_power_saving_on_boot&lt;br /&gt;
 # echo 1 &amp;gt; /sys/devices/platform/smapi/enable_pci_power_saving_on_boot # on&lt;br /&gt;
 # echo 0 &amp;gt; /sys/devices/platform/smapi/enable_pci_power_saving_on_boot # off&lt;br /&gt;
&lt;br /&gt;
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:&lt;br /&gt;
 # echo '211a 100 0 0 &amp;gt; /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request&lt;br /&gt;
 211a 34b b2 0 0 0 'OK'&lt;br /&gt;
The 4b&amp;quot; in the 2nd value, converted to decimal is 75: the current charge stop threshold.&lt;br /&gt;
&lt;br /&gt;
===Conflict with &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt;===&lt;br /&gt;
The extended battery status function conflicts with the [[HDAPS|hdaps]] kernel module (they use the same IO ports). The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; package includes a patch against &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; to make it compatible with &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;, and also to fix many problems in the original driver.&lt;br /&gt;
&lt;br /&gt;
To build the patched version, simply append the &amp;lt;tt&amp;gt;HDAPS=1&amp;lt;/tt&amp;gt; parameter to the &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; command, for example: {{cmdroot|1=make load HDAPS=1}} (see [[#Installation|Installation]] above).&lt;br /&gt;
&lt;br /&gt;
If you don't do that, you will not be able tp load &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; (and its support module &amp;lt;tt&amp;gt;tp_base&amp;lt;/tt&amp;gt;) when &amp;lt;tt&amp;gt;hdaps&amp;lt;/tt&amp;gt; is loaded, and vice versa. You can use &amp;lt;tt&amp;gt;rmmod&amp;lt;/tt&amp;gt; to switch between these modules.&lt;br /&gt;
&lt;br /&gt;
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Model-specific status===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 92%&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; feature support matrix&lt;br /&gt;
|-&lt;br /&gt;
! &amp;amp;times; &lt;br /&gt;
! &amp;lt;tt&amp;gt;start_charge_&amp;lt;br /&amp;gt;thresh&amp;lt;/tt&amp;gt; &lt;br /&gt;
!           &amp;lt;tt&amp;gt;stop_charge_&amp;lt;br /&amp;gt;thresh&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                      &amp;lt;tt&amp;gt;inhbit_charge_&amp;lt;br /&amp;gt;minutes&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                   &amp;lt;tt&amp;gt;force_discharge&amp;lt;/tt&amp;gt;&lt;br /&gt;
!                                                battery status files&lt;br /&gt;
!                                                             &amp;lt;tt&amp;gt;cd_speed&amp;lt;/tt&amp;gt;&amp;lt;br \&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%&amp;quot;&amp;gt;(removed)&amp;lt;/span&amp;gt;&lt;br /&gt;
!                                                                       Notes&lt;br /&gt;
|-&lt;br /&gt;
! colspan=8 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; | &lt;br /&gt;
=====A series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{A22p}} 2629-USG&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{A30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=8 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====G series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{G41}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=8 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
=====R series=====&lt;br /&gt;
|-&lt;br /&gt;
! [[:Category:R31|R31]]&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || No SMAPI BIOS&lt;br /&gt;
|-&lt;br /&gt;
! {{R40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50}}&lt;br /&gt;
| {{Cunk}} || {{Cno}}  || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R50p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cyes}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R51}}&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R52}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{R60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=8 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====T series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{T20}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T22}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.&lt;br /&gt;
|-&lt;br /&gt;
! {{T23}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T30}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cyes}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T40p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cyes}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cyes}} || {{Cyes}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T41p}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}} || {{Cyes}} || {{Cyes}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42}} &lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T42p}} 2373-KUU&lt;br /&gt;
| {{Cyes}} || {{Cno}}  || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43}} 2686-DGU&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T43p}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{T60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=8 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====X series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{X20}} 2662-31G&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || tp_smapi 0.20&lt;br /&gt;
|-&lt;br /&gt;
! {{X24}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X31}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cunk}} || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X32}}&lt;br /&gt;
| {{Cno}}  || {{Cno}}  || {{Cno}}  || {{Cno}} || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X40}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || BIOS v2.03, EC v1.60&lt;br /&gt;
|-&lt;br /&gt;
! {{X41}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{X60}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=8 style=&amp;quot;text-align:center;background:#efefef;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====Z series=====&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z60t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61m}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||&lt;br /&gt;
|-&lt;br /&gt;
! {{Z61t}}&lt;br /&gt;
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:tp_smapi|discussion]] page. If the module loads but gives a &amp;quot;&amp;lt;tt&amp;gt;not supported&amp;lt;/tt&amp;gt;&amp;quot; or &amp;quot;&amp;lt;tt&amp;gt;not implementeded&amp;lt;/tt&amp;gt;&amp;quot; when you try to use some specific file in {{path|/sys/devices/platform/smapi/}}, please report the &amp;lt;tt&amp;gt;dmesg&amp;lt;/tt&amp;gt; output and whether the corresponding functionality is available under Windows - maybe your ThinkPad just can't do that. &lt;br /&gt;
&lt;br /&gt;
While at it, you may also want to add your laptop to the [[list of DMI IDs]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
===Tools using this driver===&lt;br /&gt;
&lt;br /&gt;
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:&lt;br /&gt;
* [[KThinkBat]] - display battery status on the KDE &amp;lt;tt&amp;gt;kicker&amp;lt;/tt&amp;gt; panel.&lt;br /&gt;
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2&lt;/div&gt;</summary>
		<author><name>Jfl</name></author>
		
	</entry>
</feed>