Now follows a summary of the probes I have just done. Just press ENTER to continue: y Driver k10temp' (autoloaded): * Chip AMD Family 11h thermal sensors' (confidence: 9) No modules to load, skipping modules configuration. Unloading i2c-dev... OK Unloading cpuid... OK This is what I get. How to load modules now?? Next I get this......... admin@Compaq-Presario-CQ45:~$ sudo pwmconfig # pwmconfig revision 5857 (2010-08-22) This program will search your sensors for pulse width modulation (pwm) controls, and test each one to see if it controls a fan on your motherboard. Note that many motherboard
–
user136947Mar 2 '13 at 12:54

3 Answers
3

Note before starting:

This functionality depends on both your hardware and software. If your hardware doesn't support fan speed controls, or doesn't show them to the OS, it is very likely that you could not use this solution. If it does, but the software (aka kernel) doesn't know how to control it, you are without luck.

In terminal type sudo sensors-detect and answer YES to all YES/no questions.

At the end of sensors-detect, a list of modules that need to be loaded will be displayed. Type "yes" to have sensors-detect insert those modules into /etc/modules, or edit /etc/modules yourself.

Run sudo service module-init-tools restart. This will read the changes you made to /etc/modules in step 3, and insert the new modules into the kernel.

Note: If you're running Ubuntu 13.04 or higher, this 3rd step command should be replaced by sudo service kmod start.

Configure fancontrol

In terminal type sudo pwmconfig . This script will stop each fan for 5 seconds to find out which fans can be controlled by which PWM handle. After script loops through all fans, you can configure which fan corresponds to which temperature.

In my case I set interval to 2 seconds.

Set up fancontrol service

Run sudo service fancontrol start. This will also make the fancontrol service run automatically at system startup.

I tried to follow your guide, but got stuck at step three with this error: /usr/sbin/pwmconfig: There are no pwm-capable sensor modules installed
–
tamaleDec 12 '11 at 15:54

16

Mmm I have problems with sudo pwmconfig: /usr/sbin/pwmconfig: There are no pwm-capable sensor modules installed
–
Brallan AguilarDec 21 '11 at 23:11

3

I had the same problem with pwmconfig until I ran sudo sensors-detect
–
Gearoid MurphyJan 1 '12 at 12:16

2

What to do if sudo sensors-detect doesn't come up with any sensors? --> Sorry, no sensors were detected. Either your system has no sensors, or they are not supported, or they are connected to an I2C or SMBus adapter that is not supported. If you find out what chips are on your board, check lm-sensors.org/wiki/Devices for driver status.
–
arnoAug 1 '12 at 8:23

2

If you're having trouble, be sure to check your dmesg for error messages. In my case, recent kernel changes prevented me from loading the necessary driver, and I had to add acpi_enforce_resources=lax to my kernel options to get the old functionality back. See also: goo.gl/tUcr36
–
bukzorDec 23 '13 at 17:49

Relevant Information from Post:

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:

START=yes

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:

sensors

(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 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:

# IMPORTANT:
#
# 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
# http://www.thinkwiki.org/wiki/Thermal_Sensors to find out how much you may
# want to add to certain temperatures.
# Syntax:
# (LEVEL, LOW, HIGH)
# 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)

One comment: you want to have larger overlap of temperature values as in the table commented out. Especially in the 45-55 range. Otherwise, the fan speed keeps flipping. That's very disturbing. (Constant fan noise does not disturb so much as fluctuating noise.)
–
Hongbo ZhuFeb 6 at 16:36

Install and configure the lm-sensors [] and fancontrol [] packages. This is a function that is supposed to be provided by ACPI compliant bios, but it seems that most motherboard vendors don't bother to follow the standard.