ThinkPad Fan Controller (tpfancontrol): Complete Setup Guide

ThinkPad Fan Controller (tpfancontrol): Complete Setup Guide

This guide walks through installing, configuring, and troubleshooting tpfancontrol to manage ThinkPad fan speed for quieter operation or improved cooling. Assumes a ThinkPad running a Linux distribution with root privileges.

Overview

tpfancontrol is a lightweight user-space daemon that reads ThinkPad thermal sensors and sets fan speed via the thinkpad_acpi kernel interface. It provides custom fan curves and profiles without relying on heavy GUI tools.

Requirements

  • A ThinkPad with thinkpad_acpi support (modern ThinkPads generally supported)
  • Linux kernel with thinkpad_acpi module loaded
  • Root or sudo access
  • Basic shell familiarity

Installation

1. Enable thinkpadacpi

  1. Load module:

Code

sudo modprobe thinkpadacpi
  1. Verify:

Code

lsmod | grep thinkpadacpi
  1. confirm control interface exists:

Code

ls /proc/acpi/ibm

2. Install tpfancontrol

  • On Debian/Ubuntu:

Code

sudo apt update sudo apt install tpfancontrol
  • On Fedora:

Code

sudo dnf install tpfancontrol
  • From source (if not packaged):

Code

git clone https://github.com/hertg/thinkpad-fan-controller.git cd thinkpad-fan-controller make sudo make install

Configuration

Main config file

Edit /etc/tpfancontrol.conf (path may vary). Key settings:

  • SENSORS: sensor names (e.g., acpi, coretemp) and mapping
  • TEMP_THRESHOLDS: temperature to fan-speed mapping
  • FAN_LEVELS: PWM or discrete fan levels supported by your model
  • POLLINTERVAL: how often to check temps (seconds)

Example minimal config:

Code

SENSORS=(acpi coretemp) FAN_LEVELS=(0 1 2 3) TEMP_THRESHOLDS=(45 55 65 75) POLLINTERVAL=5

Creating custom fan curves

  • Choose thresholds that reflect desired noise vs cooling.
  • Use smaller step sizes near critical temps for smoother transitions.

User vs system service

  • Start manually for testing:

Code

sudo tpfancontrol -c /etc/tpfancontrol.conf
  • Enable at boot (systemd example): Create /etc/systemd/system/tpfancontrol.service:

Code

[Unit] Description=TPFanControl service[Service] Type=simple ExecStart=/usr/sbin/tpfancontrol -c /etc/tpfancontrol.conf

[Install] WantedBy=multi-user.target

Code

sudo systemctl daemon-reload sudo systemctl enable –now tpfancontrol

Testing and Validation

  1. Show current fan state and temps:

Code

cat /proc/acpi/ibm/fan sensors
  1. Force a higher fan level (for testing) via config or echo to interface if supported:

Code

echo level > /proc/acpi/ibm/fan
  1. Monitor logs:

Code

journalctl -u tpfancontrol -f

Troubleshooting

  • Fan control not working:
    • Confirm thinkpad_acpi exposes fan controls: check /proc/acpi/ibm/fan contains writable mode/level.
    • Some models require kernel parameters (thinkpad_acpi.fan_control=1). Add to GRUB:
      • Edit /

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *