Taking my Thinkpad Apart and Cooling Problems

I’ve been having some cooling problems with my Thinkpad recently. It’s an old model T41p which is outside the service period so IBM/Lenovo won’t help me (at least not unless I give them more money). If I run it for a few minutes at maximum CPU when the ambient temperature is about 20C then it gets to 90C, apparently 93C is the temperature at which it turns itself off, so obviously I need to do something to keep it cool. On the really hot days of summer my air-conditioners can’t keep any part of my house below 30C, so on such days I can’t do any compiles on my Thinkpad or watch videos.

My Thinkpad seems to idle at a temperature that is about 35C higher than the ambient temperature.  At this rate the system could get close to it’s maximum temperature on a 45C day by just idling! Not that I plan to have a warm Thinkpad on my lap if I ever happen to be outside on such a hot day.

I suspect that a large part of the problem is the dust that has accumulated inside the machine. I asked about this on the LUV mailing list and Andrew Chalmers suggested The Chaos Manor review of taking a Thinkpad T41p apart [1]. The Chaos Manor guy wanted to replace his CPU with a faster one so he had to get access to all the same bits.

I followed the instructions until I got to the stage of prying the heatsink off the video chip. I figured that I will never be able to attach it as well as it is currently attached so I will get different cooling problems if I go any further. Taking it apart to that degree was a moderate amount of work, getting the keyboard bezel off was the most difficult part, and taking the palm-rest off required removing bits of plastic that were stuck in place to cover screw holes – which will probably fall off in a week or two.

Probably everyone who owns a T41p that they regularly use has a similar problem to me as all such machines have been out of support long enough to have accumulated a lot of dust. So I recommend that other T41p owners not disassemble their machine as much as I did, but instead go for my plan B which is to blow compressed air through the CPU cooling system. Doing this merely requires removing the keyboard. One tip that I have heard is that you should hold the fan in place when blowing compressed air as the pressure of the air may spin the fan fast enough to generate enough electricity to damage the motherboard or damage it’s bearings. But you might want to wait until I’ve got my Thinkpad done before you blow compressed air through yours, it could very well be destroyed.

The other option is to try and use software to control the temperature. Patricia Fraser suggested controlling the fan speed [2]. I did some experiments and found that increasing the fan speed dramatically slowed the increase in the temperature. A 10 minute build is almost certain to bring the temperature to dangerous levels in a default configuration, but it seems that if I set the fan to maximum speed before starting the build then I can mitigate this problem. Most programs that I work on will compile in significantly less than 10 minutes.

Another possibility that occurred to me is that of limiting the speed of the system. It seems that ACPI has support for reducing the CPU frequency when the temperature rises too much, but Matthew Garrett has pointed out that this effectively increases the amount of energy used (and heat dissipated) for any given quantity of work [3]. So what I want to do is to cause the CPU to idle periodically when it gets too hot. I’ve been idly considering writing a program that uses SIGSTOP and SIGCONT to control the operation of programs such as make, or writing a program that creates a new pty (like script) and pauses the output whenever the CPU gets too hot.

Of course the easy option would be to figure out how to set the threshold temperature where the CPU speed is limited. Which is made slightly more complicated by my choice of kernel 2.6.30 for Ext4 support. Now the kernel doesn’t work with my acpid and I’m starting to get forced into an upgrade to Debian/Testing.

Does anyone have any ideas?

9 comments to Taking my Thinkpad Apart and Cooling Problems

  • Use a rubber blower of the type used to clean camera and lenses — the type you squeeze with your hand. You won’t damage anything that way, and you can get rid of a lot of dust.

    If that does not remove a lot of dust and dirt, you may have to remove the heatsink to see if you have any thermal paste left.

  • I have taken apart some Thinkpads now, and there are very good manuals how to
    take them apart on the lenovo site. And I get the bits of plastic that are stuck in place to cover screw holes from my local lenovo dealer. For nothing :-)

  • Wayne

    I have a T61 that overheats easily. My solution has been to use a laptop cooling pad that plugins into a usb port. It helps a lot, although when I am doing CPU intensive stuff it still tends to overheat eventually.

  • etbe

    Damon: That’s interesting, I’ll have to check that out. I wonder if I should take my Thinkpad with me next time I get my eyes tested – I’m about due for a new pair of glasses…

    Christoph: I also got some free stickers as they forgot to replace a rubber pad list time they serviced my Thinkpad. I just need to find them. Also as I have a limited quantity of stickers I don’t want to open my Thinkpad too often.

    James: Thanks, that’s really interesting and seems like it would do exactly what I want. I wonder when it will go mainline.

    Wayne: Have you contacted Lenovo about that? It sounds like a warranty/support issue. I had a problem in the past that was diagnosed as a broken CPU heat-sink which sounds like what you have. Really a T61 shouldn’t be old enough to have serious problems unless you were running it 24*7 in a dusty environment.

  • Rob

    I had a similar problem with my Z60m thinkpad. Forget about cleaning the cooling system, that didn’t do it for me either. The problem seems to be bad or worn thermal paste on the CPU. I got me some arctic silver, followed the manual and the system is 30 degrees cooler now. Good luck! Rob

  • etbe

    A summary of the ThinkWiki article about fan speeds:
    Create a file named “/etc/modprobe.d/thinkpad” with contents such as “options thinkpad-acpi fan_control=1” so that the module is loaded on boot with parameters that permit controlling the fan speed.

    The command “cat /proc/acpi/ibm/fan” shows the “level” of the fan control and the current speed in rpm. The command “echo level 2 > /proc/acpi/ibm/fan” sets the fan speed to level 2. Values from 0 to 7 are permitted, 0 is probably not recommended for any time or place, and values less than about 5 are probably a bad idea for warm countries such as Australia. The command “echo level auto > /proc/acpi/ibm/fan” sets it to automatic speed control.

    The command “echo level full-speed > /proc/acpi/ibm/fan” sets the fan to maximum speed. If you are in Australia on a day that is hot enough that the air-conditioner can’t make the room as cool as you like then it’s probably best to just leave it on full-speed.

  • Russ VDW

    I have a T41p with similar problems. It’s really not that bad to disassemble, or even remove the heatsink assembly. A couple years ago mine was overheating at times and I disassembled it to find out that one of the screws holding the heatsink down had come loose. After replacing it things started working well again.

    It’s been another year or so now though and it’s happening again. Haven’t disassembled to investigate yet. I run XP and ThinkpadFanControl to run my fan at full throttle at all times but it doesn’t seem to be enough.

    Problem seems to be aggravated by video or gaming. Also seems to be worse when the AC adapter is plugged in.

    Let me know if you figure yours out and I’ll do the same if I get after mine one of these days!

  • etbe

    Russ: Thanks for the suggestion. However I had some other problems with my T41p and ended up buying a T61 (see the above URL for details).

    I plan to use the old T41p for a light server task (IE not requiring much CPU power) that requires a moderate amount of RAM. I’m thinking of using it as a front-end to the Ubuntu Enterprise Cloud.