Difference between revisions of "Problem with high pitch noises"

From ThinkWiki
Jump to: navigation, search
(Processor idle-states)
(Reorganization and further comments.)
Line 122: Line 122:
  
 
==Solutions==
 
==Solutions==
===Processor idle-states===
+
===Change the timer interrupt frequency===
*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.
 
*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.
+
Change the "HZ" kernel constants to alter the frequency of timer interrupts. Discussion:
  
 
*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 />
 
*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 />
Line 135: Line 132:
 
::      <code>#define HZ 100</code>
 
::      <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.
 
: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.
 
  
*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.
+
* Omar Yasin: Worked on my {{R52}}, thanks.
 +
 
 +
* [[User:Thinker|Thinker]]: In modern kernels this constant is in the kernel configuration (<tt>Processor type and features -> Timer frequency</tt>).
 +
 
  
*Peter DeVries: My {{X41}} produces the same sounds as described above but I believe it is related to the Hard Drive and not to the processor.  The physical location of the two is so close that sounds generated from the HD are very likely to be loudest at the vent.
+
===Limit ACPI CPU power states===
  
* The {{bootparm|idle|halt}} solution combined with setting <code>#define HZ 100</code> in the kernel fixes the problem on a {{T43}}.
+
Prevent the CPU from going into high ACPI power saving states. Discussion:
  
 
*Stefan Baums: I raised this issue on the linux-kernel mailing list, and from there it was forwarded to the acpi-devel mailing list.  See 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 C4.  The 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}})
 
*Stefan Baums: I raised this issue on the linux-kernel mailing list, and from there it was forwarded to the acpi-devel mailing list.  See 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 C4.  The 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}})
Line 147: Line 146:
 
* [[User:Thinker|Thinker]]: On one {{T43}}, Stefan's solution worked even with {{bootparm|processor.max_cstate|3}}. That is, C3 was silent and only C4 produced whining (at HZ=100). Alas, even this relaxed limit increases idle power consumption by approx. 500mW compared to the (noisy) default.
 
* [[User:Thinker|Thinker]]: On one {{T43}}, Stefan's solution worked even with {{bootparm|processor.max_cstate|3}}. That is, C3 was silent and only C4 produced whining (at HZ=100). Alas, even this relaxed limit increases idle power consumption by approx. 500mW compared to the (noisy) default.
  
* 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.
+
* 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. ACPI processor support can then remain a kernel module. Negative impact on battery life is probably minimal. ({{X40}}, {{R52}})
 +
 
 +
===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.
 +
*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 {{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.
  
* 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. ACPI processor support can then remain a kernel module. Negative impact on battery life is probably minimal. ({{X40}}, {{R52}})
+
* The {{bootparm|idle|halt}} solution combined with setting <code>#define HZ 100</code> in the kernel fixes the problem on a {{T43}}.
  
 
* 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...
 +
 +
===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 [[How to make use of Dynamic Frequency Scaling|frequency scaling]] with the <code>ondemand</code> 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.
 
* 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 <code>ondemand</code> 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.
 +
 +
===Identify the source===
 +
 +
* Peter DeVries: My {{X41}} produces the same sounds as described above but I believe it is related to the Hard Drive and not to the processor.  The physical location of the two is so close that sounds generated from the HD are very likely to be loudest at the vent.
  
 
===Disabling UltraBay===
 
===Disabling UltraBay===

Revision as of 12:27, 29 September 2005

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

Almost inaudible screeching sound, or sometimes beeping (when wifi is on)

CPU is used much AND laptop is on AC power AND the TFT panel is enabled. Screetching high pitch noise, like a million crickets

Affected Operating Systems

  • Linux, all flavours

Status

Similar phenomena was experienced with models from the T2x era, e.g. the T23. On these models 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.

It is likely that the noises discovered on recent models are related to the graphics chip as well.

Solutions

Change the timer interrupt frequency

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

  • 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).
    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 (Processor type and features -> Timer frequency).


Limit ACPI CPU power states

Prevent the CPU from going into high ACPI power saving states. Discussion:

  • Stefan Baums: I raised this issue on the linux-kernel mailing list, and from there it was forwarded to the acpi-devel mailing list. See the discussion here and here. Results: The idle=halt 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 max_cstate=2, which only disables the problematic states C3 and C4. The only way to accomplish this that worked for me was to compile the ACPI processor component permanently into the kernel (CONFIG_ACPI_PROCESSOR=y) and then enable it by adding the parameter processor.max_cstate=2 to the boot command line (and of course removing 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)
  • Thinker: On one T43, Stefan's solution worked even with processor.max_cstate=3. That is, C3 was silent and only C4 produced whining (at HZ=100). Alas, even this relaxed limit increases idle power consumption by approx. 500mW compared to the (noisy) default.
  • Adding options processor max_cstate=2 in /etc/modprobe.conf (or /etc/modprobe.conf.local on my SuSE 9.3 installation) prevents the CPU permanently from entering into C3 and higher states. ACPI processor support can then remain a kernel module. Negative impact on battery life is probably minimal. (X40, R52)

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

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.

Identify the source

  • Peter DeVries: My X41 produces the same sounds as described above but I believe it is related to the Hard Drive and not to the processor. The physical location of the two is so close that sounds generated from the HD are very likely to be loudest at the vent.

Disabling 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): {{{2}}} echo eject >/proc/acpi/ibm/bay .

Disabling IrDA

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

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

Others

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