View Single Post
  #1 (permalink)  
Old 28th March, 2010, 08:22 PM
Gizmo's Avatar
Gizmo Gizmo is offline
Chief BBS Administrator
Join Date: May 2003
Location: Webb City, Mo
Posts: 16,178
Send a message via ICQ to Gizmo Send a message via AIM to Gizmo Send a message via MSN to Gizmo Send a message via Yahoo to Gizmo Send a message via Skype™ to Gizmo

Lenovo T61p fan control under Linux

I've been noticing for a while now that my CPU temps are rather high. Initially I thought it was because of dirt in the heat-sink, but after cleaning everything, that didn't resolve the issue. As it didn't seem to be affecting stability, I thought it might just be me being over-sensitive.

Well, my CPU temps started pushing 100C under load: even for a laptop, that's excessive. I'd also been noticing that my temps had been steadily climbing over the last year; they started out around 75C or so under full load (folding) and topped out at the 100C point that caused me to start getting really concerned.

Took everything apart again, pulled the heatsink (it's a convoluted heat-pipe affair that covers cpu, gpu, and chipset), cleaned off the old gunk (which had dried up and caked) and applied AS5.

Since the old gunk was dried and caked, I figured I'd found my problem. Well, I did and I didn't. My CPU temps were still running around 90C.

Got to doing some digging around. I don't know this for a fact, but I think somewhere along the line, Lenovo did a BIOS update that modified the fan controller so that it absolutely will NOT go above about 3000 RPM, no matter how hot the system gets.

Well, it turns out there is a way to override this. In my case, I have folding running all the time, meaning the CPU is under full load continuously. I really don't have a need for fan control.

So, here's what you need to do if you are in a similar fix:
  • make sure you have the thinkpad-acpi driver module installed. For most distros, this is done by default. If you have a kernel version less than 2.6.22 (which is positively ancient), stop, because the following is of no use to you. Then again, you probably wouldn't be reading this anyway, as I don't think you can even boot something that old on the T61p.
  • edit /etc/modprobe.conf, and add the following line:
    options thinkpad_acpi fan_control=1
    Note: modprobe.conf has been obsoleted by many distros and replaced with the directory /etc/modprobe.d. If this is the case for you, there should be some files in that directory. If there is one named 'options' or 'options.conf', then edit it and add the line above. If it doesn't exist, then look at the other files in the directory. If they all have extensions on them (like *.conf) then create a file named 'options'+extension (like options.conf). Otherwise just create a file named options. Add the line above to that file.
  • Reboot and execute the following two lines as the root user:
    cat 0 >/sys/devices/platform/thinkpad_hwmon/pwm1_enable
    cat 255 >/sys/devices/platform/thinkpad_hwmon/pwm1
After you've done the above, you should immediately see your fan speed start to increase to around 4500 rpm and stay there. My CPU temps dropped from 90C down to 75C. That's still toasty, but much better, and that's under full load.

Note that you'll have to set up a boot script to do this every time you reboot, because changes to the /sys file-system are not preserved across reboots.
Also note that the setting above (setting pwm1_enable to 0) completely disables fan control: the fan is turned on full-throttle and then ignored. You can set pwm1_enable to 1,and then set pwm1 to any value between 0 and 255 to control the fan speed, but 255 (maximum) still results in the fan topping out at about 3100 RPM, at least for me.

More info on the various commands and options available in the thinkpad_acpi module can be found here:
Also, How to control fan speed - ThinkWiki contains some useful info on the thinkpad acpi fan interface.

Last edited by Gizmo; 29th March, 2010 at 07:08 PM.
Reply With Quote