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
  1. 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() {
  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
Adapter: Virtual device
temp1:        +37.0°C  (crit = +99.0°C)

Adapter: ISA adapter
fan1:        2904 RPM

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)


Mateusz Loskot: Thanks for the quick and clear how-to. FYI, I used it in my response to one of thinkfan questions on the Arch forum: