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
- Load module:
Code
sudo modprobe thinkpadacpi
- Verify:
Code
lsmod | grep thinkpadacpi
- 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
- Show current fan state and temps:
Code
cat /proc/acpi/ibm/fan sensors
- Force a higher fan level (for testing) via config or echo to interface if supported:
Code
echo level > /proc/acpi/ibm/fan
- 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 /
Leave a Reply