A sample text widget

Etiam pulvinar consectetur dolor sed malesuada. Ut convallis euismod dolor nec pretium. Nunc ut tristique massa.

Nam sodales mi vitae dolor ullamcorper et vulputate enim accumsan. Morbi orci magna, tincidunt vitae molestie nec, molestie at mi. Nulla nulla lorem, suscipit in posuere in, interdum non magna.

How to control fan speed on Lenovo ThinkPad.

If you own a ThinkPad, there’s a piece of software called thinkfan that does exactly this. As the name obviously suggests, it is specifically made for ThinkPads (thinkpad_acpi).

The thinkfan software is available in the standard ubuntu software repositories, but it does require a few steps to configure.

Here’s an easy step-by-step guide:

(which is basically a translated version of this German guide:

Relevant Information from Post:

Step 1. Install the thinkfan software and the sensors:

sudo apt-get install thinkfan lm-sensors

Step 2. Make sure that the daemon controls the fan by editting the thinkpad.conf file:

sudo nano /etc/modprobe.d/thinkfan.conf

by adding the following line:

options thinkpad_acpi fan_control=1

Step 3. Make the daemon load automatically at start-up by editting the file:

sudo nano /etc/default/thinkfan

making sure that the START key is set to yes, i.e. there should be a line that says:


Step 4. Detect your laptop’s sensors:

sudo sensors-detect

and just choose the default answers whenever you’re prompted by hitting Enter.

Step 5. Load the new modules. From ubuntu 13.10 this done by:

sudo service kmod start

while for previous versions like 13.04 you instead will need to do:

sudo service module-init-tools start

Step 6. Figure out which sensors are in use:


(the ones that indicate 0 degrees are not in use, I don’t know why those are “detected” too). Remember which ones are in use.

Step 7. Find out the full paths of these sensors:

find /sys/devices -type f -name "temp*_input"

The output should be a list of paths like /sys/devices/…

Step 8. Copy-paste the paths to the sensors into the configuration file /etc/thinkpad.conf. To do this, first open up the file:

sudo nano /etc/thinkfan.conf

There should already be a line like

#sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3) 

(the #-symbol means that that line is commented out). Add a line starting with sensor (without the #-symbol) and copy-paste you first sensor. Repeat this if you have more than one sensor. For example, on my machine, the output in step 7 yields


The ones that are in use in my machine are the ones in the first and the last two lines, so I added the three lines:

sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
sensor /sys/devices/platform/coretemp.0/temp4_input
sensor /sys/devices/platform/coretemp.0/temp2_input 

Step 9. Finally we can set the fan speed levels in the configuration file. Open the /etc/thinkpad.conf file if it wasn’t open already.

sudo nano /etc/thinkfan.conf

The fan levels I use on my ThinkPad x201 are:

(0, 0, 51)
(1, 50, 52)
(2, 51, 55)
(3, 54, 58)
(4, 56, 63)
(5, 60, 70)
(6, 66, 79)
(7, 74, 92)
(127, 85, 32767) 

The last line ensures full fan speed (127 = “disengaged” i.e. unregulated). You can fiddle with these levels to fit your needs/wishes, but PLEASE BE CAREFUL!

For those people out there familiar with Mathematica, I wrote a short notebook to generate these fan speed values.

Step 10. Reboot. Everything should work now. In order to check whether thinkpad is runnning correctly, use

sudo thinkfan -n

which starts thinkfan in verbose mode. You might want to stop the thinkfan daemon first:

sudo /etc/init.d/thinkfan stop

If you want to start the thinkfan daemon again, type:

sudo /etc/init.d/thinkfan start

Just to be complete, my /etc/thinkfan.conf configuration file is:

# To keep your HD from overheating, you have to specify a correction value for
# the sensor that has the HD's temperature. You need to do this because
# thinkfan uses only the highest temperature it can find in the system, and
# that'll most likely never be your HD, as most HDs are already out of spec
# when they reach 55 °C.
# Correction values are applied from left to right in the same order as the
# temperatures are read from the file.
# For example:
# sensor /proc/acpi/ibm/thermal (0, 0, 10)
# will add a fixed value of 10 °C the 3rd value read from that file. Check out
# to find out how much you may
# want to add to certain temperatures.

# Syntax:
# LEVEL is the fan level to use (0-7 with thinkpad_acpi)
# LOW is the temperature at which to step down to the previous level
# HIGH is the temperature at which to step up to the next level
# All numbers are integers.

# I use this on my T61p:
#sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3)

#(0, 0, 55)
#(1, 48, 60)
#(2, 50, 61)
#(3, 52, 63)
#(4, 56, 65)
#(5, 59, 66)
#(7, 63, 32767)

# My settings for my ThinkPad X201: (kris)

sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
sensor /sys/devices/platform/coretemp.0/temp4_input
sensor /sys/devices/platform/coretemp.0/temp2_input

(0, 0, 51)
(1, 50, 52)
(2, 51, 55)
(3, 54, 58)
(4, 56, 63)
(5, 60, 70)
(6, 66, 79)
(7, 74, 92)
(127, 85, 32767)

Comments are closed.