Set fan speed by RPM on Thinkpad T420s in Linux

Seems that it's dependent on the hardware's firmware. As the README page says:

Most ThinkPad fans work in "levels" at the firmware interface. Level 0 stops the fan. The higher the level, the higher the fan speed, although adjacent levels often map to the same fan speed. 7 is the highest level, where the fan reaches the maximum recommended speed.

and

On the X31 and X40 (and ONLY on those models), the fan speed can be controlled to a certain degree. Once the fan is running, it can be forced to run faster or slower with the following command:

echo 'speed <speed>' > /proc/acpi/ibm/fan

Thinkfan http://thinkfan.sourceforge.net/ seems to be commonly used (it's mentioned a lot in the lenovo forums) whilst it's not RPM based it does allow switching between the preset fan speed levels based on customisable temperatures.

Additional solutions are listed here:

  • http://www.thinkwiki.org/wiki/How_to_control_fan_speed
  • http://www.thinkwiki.org/wiki/ACPI_fan_control_script

TPFancontrol supports fixed RPM:s, see TPFancontrol. It also supports variable fan RPM:s. I have used it on three different Thinkpads (X61s, T400s, T410s) works great.