Difference between revisions of "Problem with high pitch noises"

From ThinkWiki
Jump to: navigation, search
(Limit ACPI CPU power states)
(Disable USB: reorganize text)
 
(117 intermediate revisions by 58 users not shown)
Line 40: Line 40:
 
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)
 
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)
 
| style="vertical-align:top;" |
 
| style="vertical-align:top;" |
 +
*{{A21m}}
 +
**2628
 
*{{T41p}}
 
*{{T41p}}
 
**2373-GHG
 
**2373-GHG
 +
*{{T60}}
 
|-
 
|-
 
| style="vertical-align:top;" |
 
| style="vertical-align:top;" |
Line 89: Line 92:
 
High-pitched crackling noise.
 
High-pitched crackling noise.
 
| style="vertical-align:top;" |
 
| style="vertical-align:top;" |
 +
*{{X61}}
 +
**7673-B56
 
*{{X41}}
 
*{{X41}}
 
*{{T43}}
 
*{{T43}}
 +
**2686-DGU
 
*{{T43p}}
 
*{{T43p}}
**2686-DGU
+
*{{T60}}
 +
**2007-72U
 +
*{{T21}}
 +
*{{T20}}
 +
**2648-46U
 
|-
 
|-
 
| style="vertical-align:top;" |
 
| style="vertical-align:top;" |
Line 104: Line 114:
 
When on battery
 
When on battery
 
| style="vertical-align:top;" |
 
| style="vertical-align:top;" |
Almost inaudible screeching sound, or sometimes beeping (when wifi is on)
+
Noise level varies from inaudible to clearly audible, screeching sound, or sometimes beeping (when wifi is on).
 
| style="vertical-align:top;" |
 
| style="vertical-align:top;" |
 +
*{{A21m}}
 +
**2628
 +
*{{R51}}
 +
**EHG-1829
 
*{{R52}}
 
*{{R52}}
 
**1858-A11
 
**1858-A11
 +
**1846-B5G
 +
*{{R60}}
 +
**9461-DXG
 +
**9462-77G
 +
**9456-HTG
 +
**9461-DXG
 +
*{{R60e}}
 +
**0657-A9G
 +
**0657-3LG
 +
*{{T43}}
 +
**2686-DGU
 +
**1871-4AG
 +
*{{T60}}
 +
**2007-72U
 +
**1951-24G
 +
**1951-24G
 +
**2007-49G
 +
**2007-FUG
 +
*{{T60p}}
 +
**2007-FBG
 +
*{{T61}}
 +
**7659-12G
 +
**8898-5FG
 +
**6463-9WG
 +
*{{x60}}
 +
*{{x31}}
 +
**2673-CBU
 +
*{{Z61m}}
 +
**9450-3HG
 +
**9452-128
 +
**9452-W5Q
 +
*{{Z61t}}
 +
**9440-2QU
 +
 
|-
 
|-
 
| CPU is used much AND laptop is on AC power AND the TFT panel is enabled.
 
| CPU is used much AND laptop is on AC power AND the TFT panel is enabled.
Line 113: Line 161:
 
|  
 
|  
 
* {{X41}}
 
* {{X41}}
 +
 +
|-
 +
| Network is pluged in and networkload is ~100%.
 +
| low volume highfreq. pitch noise from left speaker or cpu.
 +
|
 +
*{{Z60m}}, {{Z60t}}
 +
*{{T40}}
 +
*{{T43}}
 +
**2687-DDU
 +
 +
|-
 +
| Constant, but is louder when Tablet Pen is near screen, on battery power
 +
| high pitch noise, screeching sounds *solved by "Media player paused" (see below) and also by BIOS versions 1.05 and later.
 +
|
 +
*{{X60_Tablet}}
 +
**6366-4DU
 +
 +
|-
 +
| When fan is running on some speeds. Turning off fan stops pitch noise instandly.
 +
| High pitch noise ("CPU whining").
 +
|
 +
*{{T60p}}
 +
**2007-83G
 
|}
 
|}
  
Line 123: Line 194:
 
* '''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.
 
* '''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.
 
* '''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.
 
* '''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.
 +
* '''Gigabit Ethernet processor:''' In some models (e.g., {{T43}}) high ethernet activity causes a high pitch noise.
 +
* '''Screen brightness:''' on an {{X31}}, a hissing sound is started whenever screen brightness is not full.
 +
* '''Power supply:''' a T61p is known to have the sound if a 90W power supply revision 01 is used. An alternative power supply of an other manufacturer did not make the laptop noisy.
  
 
==Status==
 
==Status==
Line 129: Line 203:
  
 
==Solutions for CPU-triggered noise==
 
==Solutions for CPU-triggered noise==
===Change the timer interrupt frequency===
 
  
Change the "HZ" kernel constants to alter the frequency of timer interrupts. Discussion:
+
===Limit ACPI CPU power states===
 +
 
 +
By default, the kernel supports up to eight ACPI CPU power saving states (C-states), called C1 through C8 (but the ThinkPad BIOS and hardware often offers (or remaps them to) only C1 to C4). Often only the extreme power saving modes C4 or C3 produce the noise, so the noise can be stopped by instructing the Linux ACPI code to use only lower modes. This has a cost, though: disabling C3 and C4 will make the CPU consume more power and reduce battery life.
 +
 
 +
To forbid the ACPI driver from using C4 (this fixed the problem with on some ThinkPad {{T43}}, {{T43p}} and {{T41}}):
 +
* If the ACPI processor component is compiled as built-in (<tt>CONFIG_ACPI_PROCESSOR=y</tt>):
 +
**Pass the {{bootparm|processor.max_cstate|3}} kernel argument.
 +
* If the ACPI processor component is loaded as a module (<tt>CONFIG_ACPI_PROCESSOR=m</tt> and <tt>processor</tt> shows in the output of {{cmdroot|lsmod}}), do either of:
 +
** Pass the {{bootparm|processor.max_cstate|3}} kernel argument (this does not work in Ubuntu 5.10 with default kernel).
 +
** Add <code>options processor max_cstate=3</code> 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).
 +
** {{cmdroot|echo 3 >  /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.)
 +
** (On Ubuntu 5.10, the default kernel uses <code>processor</code> as a module.  Unfortunately, the script loading it, {{path|/etc/init.d/acpid}}, ignores the <code>options processor max_cstate=3</code> setting in {{path|/etc/modprobe.d/<my file>}}.  As a solution for this specific problem, add the line <code>echo 2 > /sys/module/processor/parameters/max_cstate</code> directly to {{path|/etc/init.d/acpid}}, at the end of the function <code>load_modules()</code>, immediately after the line <code>echo "$PRINTK" > /proc/sys/kernel/printk</code>.)
 +
** On Gentoo: Configure your Thinkpad as described in the [http://www.gentoo.org/doc/en/power-management-guide.xml Power Management Guide].  Then as root create the files {{path|/etc/init.d/limit-sleep-states}} and {{path|/etc/conf.d/limit-sleep-states}} as below. After that just issue the command {{cmdroot|rc-update add limit-sleep-states default}} to limit the sleep states only when running on AC power, or {{cmdroot|rc-update add limit-sleep-states default battery}} to always limit the sleep states.
 +
cat <<EOF > /etc/init.d/limit-sleep-states
 +
#!/sbin/runscript
 +
 +
depend() {
 +
need acpid
 +
}
 +
 +
start() {
 +
ebegin "Limiting CPU sleep state to C${LIMIT_CSTATE}"
 +
echo $LIMIT_CSTATE > /sys/module/processor/parameters/max_cstate
 +
eend $?
 +
}
 +
 +
stop() {
 +
        ebegin "Removing CPU sleep state limit"
 +
        echo $REMOVE_CSTATE > /sys/module/processor/parameters/max_cstate
 +
        eend $?
 +
}
 +
EOF
 +
 
 +
cat <<EOF > /etc/conf.d/limit-sleep-states
 +
# limit CPU sleep state to the following value (adjust accordingly)
 +
LIMIT_CSTATE=3
 +
# some value which is higher than all available sleep states
 +
REMOVE_CSTATE=8
 +
EOF
 +
 
 +
To also forbid the C3 state, replace "<tt>3</tt>" with "<tt>2</tt>" above (this fixed the problem on some ThinkPad {{X40}}, {{X41}}, {{X60}}, {{T60}}, {{T61}}, {{Z61t}} and {{R52}}, as well as on {{T20}} where C4 is not supported at all).
 +
 
 +
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}}:
 +
* {{bootparm|processor.max_cstate|4}}: 15160mW (default, noisy)
 +
* {{bootparm|processor.max_cstate|3}}: 15770mW (660mW higher, silent)
 +
* {{bootparm|processor.max_cstate|2}}: 16100mW (2940mW higher, silent)
 +
 
 +
One can control how often Linux tries to enter the C3 state by using the {{bootparm|processor.bm_history|<bitmask>}} parameter on kernels with a scheduler frequency below 800Hz (and if you have noise problems, you really should not be running the kernel at 1000Hz...).  Setting {{bootparm|processor.bm_history|0xFFFFFFFF}} will cause C3 to be entered less often.  This will waste more power as the CPU won't do C3 or C4 as often, but at least it doesn't forbid C3 and C4 permanently, unlike {{bootparm|max_cstate|2}}.
  
*Andreas Karnahl: i've read in several forums it has something to do with the "idle"-state (or "C3") of the processor. There is a frequency called "timer interrupt" (or something 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).<br />Just do the following:<br />
+
See the [http://thinkwiki.org/wiki?title=Talk:Problem_with_high_pitch_noises discussion page] for further information and success reports.
:  In {{path|[path to kernel-sources]/include/asm-i386/param.h}} find the line
 
::      <code>#define HZ 1000</code>
 
:   and change the value of HZ to 100:
 
::      <code>#define HZ 100</code>
 
:Then recompile the kernel.<br />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.
 
  
* Omar Yasin: Worked on my {{R52}}, thanks.
+
*Jakob Schou Pedersen: Editing the file {{path|/etc/init.d/acpid}} as described above (the last solution) worked on my T43 :-)
  
* [[User:Thinker|Thinker]]: In modern kernels this constant is in the kernel configuration (<tt>Processor type and features -> Timer frequency</tt>).
+
===MS Windows: Disable CPU popup mode ===
  
===Limit ACPI CPU power states===
+
This is a generic solution for Core 2 Duo platforms --- using the RMClock utility you can disable C4 to C1/C2/C3 transition and force the CPU to go straight to C0. To do this, in RMClock settings go to: "Enable Advanced CPU settings > Chipset" and disable at least "Enable Popup Mode". Related discussion can be found here: [[http://forum.thinkpads.com/viewtopic.php?f=30&t=75283]].
  
Prevent the CPU from going into high ACPI power saving states. Discussion:
+
===Turn off CPU power saving in the BIOS===
  
*Stefan Baums: I raised this issue on the linux-kernel mailing list, and from there it was forwarded to the acpi-devel mailing listSee the discussion [http://sourceforge.net/mailarchive/forum.php?thread_id=7593600&forum_id=6102 here] and [http://sourceforge.net/mailarchive/forum.php?thread_id=7599419&forum_id=6102 here]. Results: The <code>idle=halt</code> kernel parameter disables ACPI C-state switching entirely (i.e., locks the processor in C1). It is preferable to pass to the ACPI processor component the option {{bootparm|max_cstate|2}}, which only disables the problematic states C3 and C4The only way to accomplish this that worked for me was to compile the ACPI processor component permanently into the kernel (<tt>CONFIG_ACPI_PROCESSOR=y</tt>) and then enable it by adding the parameter {{bootparm|processor.max_cstate|2}} to the boot command line (and of course removing {{bootparm|idle|halt}}). Now the computer switches back and forth between C1 and C2, but avoids the noise-inducing C3 and C4, and frequency scaling works regardless. ({{X41}})
+
Go into the BIOS and turn off the power saving processor feature that puts it into idle modeThis should be somewhere under Config/Power - look for "CPU Power Management", the default being automaticSet "CPU Power Management" to "Disabled" (This worked on a ThinkPad {{T21}}, {{T43}}, {{T60}}, {{X60s}}, {{X200s}} and {{Z61m}}). However, this also affects power consumption when the CPU is idle, it's similar to disabling the C4/C3 ACPI CPU power state. For example, on a Z61m 9450-3HG, a full charged battery with power management enabled in the BIOS provides the notebook with power for about 3.5h, if disabled, the battery-lifetime is only about 2h.
*Simon Eggert: The {{bootparm|processor.max_cstate|2}} option worked for me on my T43p thanks.
 
* Adding <code>options processor max_cstate=2</code> in {{path|/etc/modprobe.conf}} (or {{path|/etc/modprobe.conf.local}} on my SuSE 9.3 installation) prevents the CPU permanently from entering into C3 and higher states. ({{X40}}, {{R52}})
 
* [[User:Thinker|Thinker]]: On one {{T43}}, this worked even with {{bootparm|processor.max_cstate|3}}. That is, C3 was silent and only C4 produced whining (at both HZ=100 and HZ=250).
 
* [[User:Thinker|Thinker]]: These options affect power consumption when the CPU is idle. Here are the figures on one ThinkPad T43:
 
** {{bootparm|processor.max_cstate|4}}: 15160mW (default, noisy)
 
** {{bootparm|processor.max_cstate|3}}: 15770mW (660mW higher, silent)
 
** {{bootparm|processor.max_cstate|2}}: 16100mW (2940mW higher, silent)
 
  
 
===Disable ACPI CPU power states===
 
===Disable ACPI CPU power states===
Line 163: Line 271:
 
*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 "processor" and "thermal" (depends on the first one). I have no clue, why. Anyone with similar experiences?
 
*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 "processor" and "thermal" (depends on the first one). I have no clue, why. Anyone with similar experiences?
 
: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.
 
: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.
 +
*Kaspar Schleiser: On my {{T23}} the noise is less loud when setting max_cstate to 2, but to completely silence it, I have to set it to "1". Is that the same as removing the "processor"-module? "cat /proc/acpi/battery/BAT0/state" does not show increased power drain.
 
*Niko Ehrenfeuchter: I'm experiencing the same here on my {{X24}}. Removing the "processor" 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.
 
*Niko Ehrenfeuchter: I'm experiencing the same here on my {{X24}}. Removing the "processor" 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.
  
Line 172: Line 281:
  
 
* jhatch:  {{bootparm|idle|halt}} plus <code>#define HZ 100</code> also worked on my {{T43}}.  It still reverts back to noisy after a suspend/resume though.  This needs to be fixed...
 
* jhatch:  {{bootparm|idle|halt}} plus <code>#define HZ 100</code> also worked on my {{T43}}.  It still reverts back to noisy after a suspend/resume though.  This needs to be fixed...
 +
 +
===Use both C-States (sleep modes) and P-States (frequency scaling)===
 +
*Max Gaukler: I had the problem with a "beeping" noise of my {{R60}} on battery. When using powertop I recognised that it went into C3 (deep sleep mode), but it was always running at the highest possible frequency. I followed the instructions in [[How_to_make_use_of_Dynamic_Frequency_Scaling|How to make use of Dynamic Frequency Scaling]] and the noise disappeared except for a short time during boot until frequency scaling has been loaded.
 +
 +
===Change the timer interrupt frequency===
 +
 +
Change the "HZ" kernel constants to alter the frequency of timer interrupts. Discussion:
 +
 +
{{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 "server" 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 "desktop" setting.}}
 +
 +
*Andreas Karnahl: i've read in several forums it has something to do with the "idle"-state (or "C3") of the processor. There is a frequency called "timer interrupt" (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).<br />Just do the following:<br />
 +
:  In {{path|[path to kernel-sources]/include/asm-i386/param.h}} find the line
 +
::      <code>#define HZ 1000</code>
 +
:  and change the value of HZ to 100:
 +
::      <code>#define HZ 100</code>
 +
:Then recompile the kernel.<br />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.
 +
 +
* Omar Yasin: Worked on my {{R52}}, thanks.
 +
 +
* [[User:Thinker|Thinker]]: In modern kernels this constant is in the kernel configuration {{kernelconf|CONFIG_HZ|Processor type and features||Timer Frequency|||||}}.
 +
 +
* [[User:sklnd|sklnd]]: As of 2.6.21, enabling a tickless kernel (CONFIG_NO_HZ) seems to fix the sound issue on the X60. This also has the added benefit of causing the kernel to wake up less, which will improve battery life.
  
 
===Prevent idling===
 
===Prevent idling===
Line 182: Line 313:
  
 
* 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)
 
* 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)
 +
 +
===Change the processor voltage===
 +
 +
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.
 +
 +
===Kernel BIOS options===
 +
 +
Adding acpi_sleep=s3_bios and pci=bios as boot parameters significantly reduced the pitch noise on a T61. Seems to be the best solution so far, without losing battery capacity. If ondemand governor is enabled as well, the noise is almost gone.--[[User:Mozz|Mozz]] 13:14, 18 January 2008 (CET)
 +
 +
===Kernel Update===
 +
 +
The recent kernel update in Ubuntu 8.04 from 2.6.24-19 to 2.6.24-21 made the noise disappear on my T61. With the old kernel the sound was very audible when running on battery power, although setting the kernel BIOS options as specified in the paragraph above made it somewhat bearable. Now I can barely hear anything with the default startup options, even with my ear close to the laptop.
 +
 +
==Solutions for screen brightness related sounds==
 +
 +
===Disable BIOS brightness control===
 +
 +
The sound starts when on batteries as the BIOS automatically reduces screen brightness. To disable this, simply switch Config>Display>Brightness from
 +
Normal to High. See also [[User:Piccobello/Hissing sound on battery|here]].
  
 
==Other solutions==
 
==Other solutions==
  
 
===Disable UltraBay===
 
===Disable UltraBay===
*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): {{cmd|echo eject >/proc/acpi/ibm/bay}} .
+
*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 >/proc/acpi/ibm/bay}} .
  
 
===Disable IrDA===
 
===Disable IrDA===
Line 193: Line 343:
 
===Disable the Linuxant Modem Driver===
 
===Disable the Linuxant Modem Driver===
 
*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}}.
 
*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}}.
 +
 +
===Media Player paused===
 +
*Eilif Muller: On my {{R52}} the high-pitched noises go away if I load XMMS, play something then pause it.
 +
*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.
 +
*butcom: On my {{X60 Tablet}}, this tip works in Windows as well with Media Player Classic or Windows Media Player.  Just open either program, start playing any music file and pause it and the screeching noise stops.
 +
 +
''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.''
 +
 +
===nice yes===
 +
 +
Run the command:
 +
{{cmduser|nice yes > /dev/null}}.
 +
 +
This is a good way to test whether the processor is causing the interference, since it forces the CPU to stay at full power. Of course, this will make your system get warm, and probably turn on the fan, as well as eating power.
 +
 +
===Upgrade BIOS===
 +
On a ThinkPad {{X60s}}, [[BIOS_Upgrade|upgrading the BIOS]] to version 1.06 eliminated the high pitch noise when running on battery.
 +
 +
On a ThinkPad {{X61}}, [[BIOS_Upgrade|upgrading the BIOS]] to version 2.21 reduces the noise. It's not completely eliminated though.
 +
 +
On a ThinkPad {{R60}}, [[BIOS_Upgrade|upgrading the BIOS]] to version 2.19 eliminated the voice also.
 +
 +
===Disable USB===
 +
Disabling USB (partially) using {{cmdroot|rmmod uhci_hcd}} significantly reduced the noise in some cases.
 +
Reported on {{T43}}, {{T61}}, {{X60}}, {{X200s}}
 +
On a {{T60}} this trick worked well and doing ''rmmod/modprobe'' twice wiped the noise permanently.
 +
 +
This is likely a CPU-induced noise case, as disabling USB UHCI will reduce a lot the amount of busmaster activity while the computer is idle, and thus has a direct effect on the need for ACPI C-state transitions from C3/C4 to C2 or lower states.
 +
 +
 +
*syscrash: Plugging in my USB mouse has completely solved the problem for me.
 +
*lorien: Plugging USB mouse helped me too {{T61}}
 +
*telofy: Disabling USB "solved" the problem; so does disabling the CPU idle setting in the BIOS on my X200s.
 +
 +
===Suspend USB===
 +
*Stefan Ott: On my X41, the noise seems to have stopped since I enabled "USB selective suspend/resume and wakeup" (CONFIG_USB_SUSPEND).
 +
*babrodtk: This approach worked with an R60 as well.
 +
 +
===Turn off fan===
 +
On a ThinkPad {{T60p}}, changing the fan speed or turning off the fan using TP Fan Control eliminated the high pitch noise.

Latest revision as of 03:09, 22 January 2014

Information on strange high pitch, low volume noises emitted by ThinkPads.

Problem description

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 "bat like ears" that hear them and might be annoyed by that.

Affected Models

Noises have been experienced in the following situations:

situation noise description affected models

Plugged into AC / running at high CPU frequency

soft crackling, buzzing noise

ThinkPad suspended to RAM

constant high pitch noise

ThinkPad connected to power and switched off, with battery fully charged

constant high pitch noise

moving windows or just the mouse in xorg

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)

Thinkpad connected to power or working on battery, also when suspended to RAM

High pitch noise also when HD is powered down.

Thinkpad connected to power battery charged less than 60%

High pitch noise till battery is charged more than 60%.

Constantly, if AC connected

High pitched, low volume constant noise.

When the CPU freq jumps up to 1Ghz or above, or when the laptop is in suspend mode

Constant high pitched

(May come from harddisk.)

continuous, intermittent, low volume, high pitched

ACPI puts the processor into the C3 or C4 power saving states (i.e., the system is idle).

High-pitched crackling noise.

Cpufreqd (or powernowd etc.) slows down the processor, for exemple at the end of an heavy task.

High-pitched crackling noise.

When on battery

Noise level varies from inaudible to clearly audible, screeching sound, or sometimes beeping (when wifi is on).

  • A21m
    • 2628
  • R51
    • EHG-1829
  • R52
    • 1858-A11
    • 1846-B5G
  • R60
    • 9461-DXG
    • 9462-77G
    • 9456-HTG
    • 9461-DXG
  • R60e
    • 0657-A9G
    • 0657-3LG
  • T43
    • 2686-DGU
    • 1871-4AG
  • T60
    • 2007-72U
    • 1951-24G
    • 1951-24G
    • 2007-49G
    • 2007-FUG
  • T60p
    • 2007-FBG
  • T61
    • 7659-12G
    • 8898-5FG
    • 6463-9WG
  • X60
  • X31
    • 2673-CBU
  • Z61m
    • 9450-3HG
    • 9452-128
    • 9452-W5Q
  • Z61t
    • 9440-2QU
CPU is used much AND laptop is on AC power AND the TFT panel is enabled. Screetching high pitch noise, like a million crickets
Network is pluged in and networkload is ~100%. low volume highfreq. pitch noise from left speaker or cpu.
Constant, but is louder when Tablet Pen is near screen, on battery power high pitch noise, screeching sounds *solved by "Media player paused" (see below) and also by BIOS versions 1.05 and later.
When fan is running on some speeds. Turning off fan stops pitch noise instandly. High pitch noise ("CPU whining").

Affected Operating Systems

All, though Linux appears especially susceptible.

Possible sources

  • CPU activity: On some models the noise is triggered by certain CPU power states or activity patterns (as proven here).
  • 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.
  • 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.
  • Gigabit Ethernet processor: In some models (e.g., T43) high ethernet activity causes a high pitch noise.
  • Screen brightness: on an X31, a hissing sound is started whenever screen brightness is not full.
  • Power supply: a T61p is known to have the sound if a 90W power supply revision 01 is used. An alternative power supply of an other manufacturer did not make the laptop noisy.

Status

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).

Solutions for CPU-triggered noise

Limit ACPI CPU power states

By default, the kernel supports up to eight ACPI CPU power saving states (C-states), called C1 through C8 (but the ThinkPad BIOS and hardware often offers (or remaps them to) only C1 to C4). Often only the extreme power saving modes C4 or C3 produce the noise, so the noise can be stopped by instructing the Linux ACPI code to use only lower modes. This has a cost, though: disabling C3 and C4 will make the CPU consume more power and reduce battery life.

To forbid the ACPI driver from using C4 (this fixed the problem with on some ThinkPad T43, T43p and T41):

  • If the ACPI processor component is compiled as built-in (CONFIG_ACPI_PROCESSOR=y):
    • Pass the processor.max_cstate=3 kernel argument.
  • If the ACPI processor component is loaded as a module (CONFIG_ACPI_PROCESSOR=m and processor shows in the output of # lsmod), do either of:
    • Pass the processor.max_cstate=3 kernel argument (this does not work in Ubuntu 5.10 with default kernel).
    • Add options processor max_cstate=3 to /etc/modprobe.conf (or /etc/modprobe.conf.local, or /etc/modprobe.d/..., depending on your system) (this does not work in Ubuntu 5.10 with default kernel).
    • # echo 3 > /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.)
    • (On Ubuntu 5.10, the default kernel uses processor as a module. Unfortunately, the script loading it, /etc/init.d/acpid, ignores the options processor max_cstate=3 setting in /etc/modprobe.d/<my file>. As a solution for this specific problem, add the line echo 2 > /sys/module/processor/parameters/max_cstate directly to /etc/init.d/acpid, at the end of the function load_modules(), immediately after the line echo "$PRINTK" > /proc/sys/kernel/printk.)
    • On Gentoo: Configure your Thinkpad as described in the Power Management Guide. Then as root create the files /etc/init.d/limit-sleep-states and /etc/conf.d/limit-sleep-states as below. After that just issue the command # rc-update add limit-sleep-states default to limit the sleep states only when running on AC power, or # rc-update add limit-sleep-states default battery to always limit the sleep states.
cat <<EOF > /etc/init.d/limit-sleep-states
#!/sbin/runscript

depend() {
	need acpid
}

start() {
	ebegin "Limiting CPU sleep state to C${LIMIT_CSTATE}"
	echo $LIMIT_CSTATE > /sys/module/processor/parameters/max_cstate
	eend $?
}

stop() {
       ebegin "Removing CPU sleep state limit"
       echo $REMOVE_CSTATE > /sys/module/processor/parameters/max_cstate
       eend $?
}
EOF
cat <<EOF > /etc/conf.d/limit-sleep-states
# limit CPU sleep state to the following value (adjust accordingly)
LIMIT_CSTATE=3
# some value which is higher than all available sleep states
REMOVE_CSTATE=8
EOF

To also forbid the C3 state, replace "3" with "2" above (this fixed the problem on some ThinkPad X40, X41, X60, T60, T61, Z61t and R52, as well as on T20 where C4 is not supported at all).

Note that these options affect power consumption when the CPU is idle. For example, here is the measured power consumption on a ThinkPad T43:

  • processor.max_cstate=4: 15160mW (default, noisy)
  • processor.max_cstate=3: 15770mW (660mW higher, silent)
  • processor.max_cstate=2: 16100mW (2940mW higher, silent)

One can control how often Linux tries to enter the C3 state by using the processor.bm_history=<bitmask> parameter on kernels with a scheduler frequency below 800Hz (and if you have noise problems, you really should not be running the kernel at 1000Hz...). Setting processor.bm_history=0xFFFFFFFF will cause C3 to be entered less often. This will waste more power as the CPU won't do C3 or C4 as often, but at least it doesn't forbid C3 and C4 permanently, unlike max_cstate=2.

See the discussion page for further information and success reports.

  • Jakob Schou Pedersen: Editing the file /etc/init.d/acpid as described above (the last solution) worked on my T43 :-)

MS Windows: Disable CPU popup mode

This is a generic solution for Core 2 Duo platforms --- using the RMClock utility you can disable C4 to C1/C2/C3 transition and force the CPU to go straight to C0. To do this, in RMClock settings go to: "Enable Advanced CPU settings > Chipset" and disable at least "Enable Popup Mode". Related discussion can be found here: [[1]].

Turn off CPU power saving in the BIOS

Go into the BIOS and turn off the power saving processor feature that puts it into idle mode. This should be somewhere under Config/Power - look for "CPU Power Management", the default being automatic. Set "CPU Power Management" to "Disabled" (This worked on a ThinkPad T21, T43, T60, X60s, X200s and Z61m). However, this also affects power consumption when the CPU is idle, it's similar to disabling the C4/C3 ACPI CPU power state. For example, on a Z61m 9450-3HG, a full charged battery with power management enabled in the BIOS provides the notebook with power for about 3.5h, if disabled, the battery-lifetime is only about 2h.

Disable ACPI CPU power states

Completely disable CPU ACPI power states. Discussion:

  • 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 "processor" and "thermal" (depends on the first one). I have no clue, why. Anyone with similar experiences?
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.
  • Kaspar Schleiser: On my T23 the noise is less loud when setting max_cstate to 2, but to completely silence it, I have to set it to "1". Is that the same as removing the "processor"-module? "cat /proc/acpi/battery/BAT0/state" does not show increased power drain.
  • Niko Ehrenfeuchter: I'm experiencing the same here on my X24. Removing the "processor" 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.
  • 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.
  • 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 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.
  • The idle=halt solution combined with setting #define HZ 100 in the kernel fixes the problem on a T43.
  • jhatch: idle=halt plus #define HZ 100 also worked on my T43. It still reverts back to noisy after a suspend/resume though. This needs to be fixed...

Use both C-States (sleep modes) and P-States (frequency scaling)

  • Max Gaukler: I had the problem with a "beeping" noise of my R60 on battery. When using powertop I recognised that it went into C3 (deep sleep mode), but it was always running at the highest possible frequency. I followed the instructions in How to make use of Dynamic Frequency Scaling and the noise disappeared except for a short time during boot until frequency scaling has been loaded.

Change the timer interrupt frequency

Change the "HZ" kernel constants to alter the frequency of timer interrupts. Discussion:

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 "server" 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 "desktop" setting.
  • Andreas Karnahl: i've read in several forums it has something to do with the "idle"-state (or "C3") of the processor. There is a frequency called "timer interrupt" (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).
    Just do the following:
In [path to kernel-sources]/include/asm-i386/param.h find the line
#define HZ 1000
and change the value of HZ to 100:
#define HZ 100
Then recompile the kernel.
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.
  • Omar Yasin: Worked on my R52, thanks.
  • Thinker: In modern kernels this constant is in the kernel configuration Timer Frequency → Processor type and features (CONFIG_HZ).
  • sklnd: As of 2.6.21, enabling a tickless kernel (CONFIG_NO_HZ) seems to fix the sound issue on the X60. This also has the added benefit of causing the kernel to wake up less, which will improve battery life.

Prevent idling

Indirectly avoid power saving states by making sure the CPU is rarely idle:

  • 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 "passive" 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.
  • The problem also occurs on my X41 with 2.6.11. Setting up frequency scaling with the ondemand 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.
  • 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)

Change the processor voltage

Reducing the processor voltage (when possible) may decrease or eliminate the noise. On one ThinkPad T43, 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.

Kernel BIOS options

Adding acpi_sleep=s3_bios and pci=bios as boot parameters significantly reduced the pitch noise on a T61. Seems to be the best solution so far, without losing battery capacity. If ondemand governor is enabled as well, the noise is almost gone.--Mozz 13:14, 18 January 2008 (CET)

Kernel Update

The recent kernel update in Ubuntu 8.04 from 2.6.24-19 to 2.6.24-21 made the noise disappear on my T61. With the old kernel the sound was very audible when running on battery power, although setting the kernel BIOS options as specified in the paragraph above made it somewhat bearable. Now I can barely hear anything with the default startup options, even with my ear close to the laptop.

Solutions for screen brightness related sounds

Disable BIOS brightness control

The sound starts when on batteries as the BIOS automatically reduces screen brightness. To disable this, simply switch Config>Display>Brightness from Normal to High. See also here.

Other solutions

Disable UltraBay

  • 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): $ echo eject >/proc/acpi/ibm/bay .

Disable IrDA

  • Mike Perry: I was able to cure an intermittent high-pitched whine on both my X24 and X40 by disabling the Infrared port.

Disable the Linuxant Modem Driver

  • Joern Heissler: I made another experience. I played around with linuxant conexant modem drivers. After loading them I got some noise on my T42p.

Media Player paused

  • Eilif Muller: On my R52 the high-pitched noises go away if I load XMMS, play something then pause it.
  • 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.
  • butcom: On my X60 Tablet, this tip works in Windows as well with Media Player Classic or Windows Media Player. Just open either program, start playing any music file and pause it and the screeching noise stops.

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.

nice yes

Run the command:

$ nice yes > /dev/null.

This is a good way to test whether the processor is causing the interference, since it forces the CPU to stay at full power. Of course, this will make your system get warm, and probably turn on the fan, as well as eating power.

Upgrade BIOS

On a ThinkPad X60s, upgrading the BIOS to version 1.06 eliminated the high pitch noise when running on battery.

On a ThinkPad X61, upgrading the BIOS to version 2.21 reduces the noise. It's not completely eliminated though.

On a ThinkPad R60, upgrading the BIOS to version 2.19 eliminated the voice also.

Disable USB

Disabling USB (partially) using # rmmod uhci_hcd significantly reduced the noise in some cases. Reported on T43, T61, X60, X200s On a T60 this trick worked well and doing rmmod/modprobe twice wiped the noise permanently.

This is likely a CPU-induced noise case, as disabling USB UHCI will reduce a lot the amount of busmaster activity while the computer is idle, and thus has a direct effect on the need for ACPI C-state transitions from C3/C4 to C2 or lower states.


  • syscrash: Plugging in my USB mouse has completely solved the problem for me.
  • lorien: Plugging USB mouse helped me too T61
  • telofy: Disabling USB "solved" the problem; so does disabling the CPU idle setting in the BIOS on my X200s.

Suspend USB

  • Stefan Ott: On my X41, the noise seems to have stopped since I enabled "USB selective suspend/resume and wakeup" (CONFIG_USB_SUSPEND).
  • babrodtk: This approach worked with an R60 as well.

Turn off fan

On a ThinkPad T60p, changing the fan speed or turning off the fan using TP Fan Control eliminated the high pitch noise.