How to: thinkpad_acpi and fan control on Arch

From the “this might help some random person” department – setting up manual Thinkpad fan control in Arch Linux.

1. Edit /etc/rc.conf. Add thinkpad_acpi to MODULES=() in the hardware section.

2. Create a new file enabling fan control as /etc/modprobe.d/thinkfan.conf:

options thinkpad_acpi fan_control=1

3. Reload the thinkpad_acpi module:

sudo modprobe -r thinkpad_acpi && sudo modprobe thinkpad_acpi

To view the current fan speed:

[~]$ cat /proc/acpi/ibm/fan
status: enabled
speed: 2887
level: 4
commands: level ( is 0-7, auto, disengaged, full-speed)
commands: enable, disable
commands: watchdog ( is 0 (off), 1-120 (seconds))

To control fan speed:

# echo level 0 | sudo tee /proc/acpi/ibm/fan (fan off)
# echo level 2 | sudo tee /proc/acpi/ibm/fan (low speed)
# echo level 4 | sudo tee /proc/acpi/ibm/fan (medium speed)
# echo level 7 | sudo tee /proc/acpi/ibm/fan (maximum speed)
# echo level auto | sudo tee /proc/acpi/ibm/fan (automatic - default)

For easy control from the command line:

function fan() {
  sensors
  echo level $@ | sudo tee /proc/acpi/ibm/fan
}

Now you can run fan 2 to set the fan level to 2 and so on.

To view fan speed, install lm_sensors following the instructions on the Arch wiki. Example output:

[~]$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +37.0°C  (crit = +99.0°C)

thinkpad-isa-0000
Adapter: ISA adapter
fan1:        2904 RPM

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +39.0°C  (high = +86.0°C, crit = +100.0°C)
Core 0:         +37.0°C  (high = +86.0°C, crit = +100.0°C)
Core 1:         +37.0°C  (high = +86.0°C, crit = +100.0°C)
Core 2:         +35.0°C  (high = +86.0°C, crit = +100.0°C)
Core 3:         +39.0°C  (high = +86.0°C, crit = +100.0°C)

One comment


  1. Thanks for the quick and clear how-to.
    FYI, I used it in my response to one of thinkfan questions on the Arch forum:
    https://bbs.archlinux.org/viewtopic.php?pid=1112691#p1112691

Leave a comment

You must be logged in to post a comment.