Problem with fan noise
Information about the fan noise problem in Thinkpad models from 2003/2004/2005.
Problem description
There seem to be two different occurances of the problem (or two different problems).
Acceleration (pulsing) problem:
The Thinkpad fan briefly accelerates in regular intervals every few seconds, causing an annoying periodic pulse noise.
See here for audio recordings of this noise on ThinkPad R50 and R51.
Always-on problem:
The Fan is always on, even though the processor is rather cool.
Affected Models
Acceleration (pulsing) problem:
Always-on problem:
- ThinkPad 600X
- ThinkPad 770X
- ThinkPad A31p
- ThinkPad R32, R50, R50p, R51, R52
- ThinkPad T40, T40p, T41, T41p, T42, T42p, T43, T43p
- ThinkPad X32, X40, X41
Affected Operating Systems
Acceleration (pulsing) problem:
- Linux, all flavours
Always-on problem:
- Linux, all flavours
- FreeBSD 5.3
- OpenBSD 3.7 (Tested with X40)
- Windows XP
- Windows 2000 pro
Status
Acceleration (pulsing) problem:
The pulsing seems to be triggered by the embedded controller when it monitors the fan speed and adjusts the fan control accordingly every few seconds.
For some models, IBM released an update to the embedded controller program that seems to at least partially solve this problem:
Version 3.03 - 1RHT70WW NOTE: This version of Embedded Controller Program will only work with BIOS Version 3.06f (or higher). * (Fix) Reduced Fan noise in some models.
The update can be found here: http://www-306.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-50279
For other models (e.g., ThinkPad T43), there is a software workaround (see below).
Always-on problem:
The problem is yet unsolved. But see the partial fix below.
IBM made a statement regarding this on their homepage: http://www-307.ibm.com/pc/support/site.wss/MIGR-56504.html
Solutions
Acceleration problem:
Replacing the fan
Some people reported that they replaced the original fan against one of a similar notebook without the problem has worked
for them, i.e. changing a T41s fan against one from a T41p.
BIOS upgrade
For relevant models, you can try upgrading your embedded controller program to version 3.03 or newer.
The update can be found here: http://www-306.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-50279
Software workaround
The problem can be solved through appropriate modulation of the embedded controller, using an ACPI fan control script.
Always on problem:
Generally, this problem is triggered by heating due to high power consumption. See How to reduce power consumption.
It seems like for some people a combination of enabling dynamic frequency scaling and using the most recent radeon drivers (from xorg 6.8.x) with the DynamicClocks option enabled helped lowing the fan rotation and hence making it more quiet.
Also the fglrx driver from ATI is said to show the same effect when used together with dynamic frequency scaling.
On a 770X the fan can be fully controlled through ACPI. Thermal Zone THM5 (possibly the battery/charging circuit, it's definitely warmer when using 5v PCMCIA cards and AC) triggers it to turn on and not ever off by design. Can be solved by a custom DSDT, which also makes use of the variable-speed features of the fan (will release this once I've finished tweaking and testing it).
I can confirm that on my R51, the graphics card seems to be the problem. The fan keeps running most of the time even with AC on, but even though I activated DynamicClocks (with the radeon driver), I can see in /proc/acpi/ibm/thermal that the GPU (4th value) is at 52-53°. The fan stops running as soon as the temperature gets down to 50 degrees and starts again at 53. While debugging, I seemed(!) to be able to reduce the temperature together with the resolution (e.g. "xrandr -s 2" to get from 1400x1050 to 1024x768) or by switching off the graphics with "xset dpms force off". The bottom line is that the below "partial fix" won't work because the GPU temperature is the problem.
The GPU also seems to be the culprit on the t43p. Even with the fan always on (with speeds of around 4K reported in /proc/acpi/ibm/fan), the temperature never drops below 55. This is with the Xorg driver and DynamicClocks=on. With the ATI's fglrx driver, the GPU temp seems slightly higher (although I haven't performed a careful comparison). Without the fan, the temperature very quickly climbs to above 60.
With the Pentium M, CPU heat dissipation can be reduced through undervolting and underclocking.
An extensive forum discussion of this problem for the ThinkPad T43/T43p, and possible hardware mods for thermal enhancement, appear here.
Partial fix
When loading ibm-acpi v0.11 with experimental switch (# modprobe ibm_acpi experimental=1
), it is possible to read and write the status of fan:
#cat /proc/acpi/ibm/fan status: enabled speed: 3580 commands: enable, disable #echo disable > /proc/acpi/ibm/fan cat /proc/acpi/ibm/fan status: disabled speed: 0 commands: enable, disable
But the fan will then never wake up. So, we need a small script witch is constantly checking the temperature and setting the fan on/off when needed.
On my T41 (gentoo-sources-2.6.11.11 ) I noticed that after unloading the fan module the fan noise stopped. With the module loaded the fan was working even at very low cpu temperatures, without the module it's ok so far.
Improved partial fix
Some models allow for fine control of fan speed. An ACPI fan control script can thus be used to override the firmware's fan algorithm with gentler version.
Manual control can be done through the patch for controlling fan speed, or even just with ibm-acpi (see instructions in the former):
#cat /proc/acpi/ibm/fan status: enabled level: auto speed: 4219 commands: enable, disable, level <level> (<level> is 0-7, auto or disengaged) #echo level 2 > /proc/acpi/ibm/fan #cat /proc/acpi/ibm/fan status: enabled level: 2 speed: 3142 commands: enable, disable, level <level> (<level> is 0-7, auto or disengaged)