LinuxCommandLibrary

fancontrol

Control system cooling fans

TLDR

Start fancontrol using default /etc/fancontrol configuration file

$ fancontrol
copy

Start fancontrol using custom configuration file path
$ fancontrol [path/to/config_file]
copy

SYNOPSIS

fancontrol [OPTION]... [CONFIGFILE]

PARAMETERS

-c, --config FILE
    Specify config file (default: /etc/fancontrol)

-t, --test
    Test mode: log intended actions without changing speeds

-s, --stop
    Stop the running daemon instance

-f, --force
    Start even if PID file indicates running instance

-i, --pid-file FILE
    PID file path (default: /var/run/fancontrol.pid)

-d, --nodm
    Disable dynamic kernel module loading

-V, --version
    Print version and exit

-h, --help
    Display usage summary

DESCRIPTION

fancontrol is a lightweight daemon from the lm-sensors package that dynamically adjusts PC fan speeds based on hardware temperature sensors. It monitors temperatures via the kernel's hwmon interface and modulates PWM fan outputs to balance cooling efficiency and acoustic noise.

It relies on a plain-text configuration file (default: /etc/fancontrol) specifying sensor-fan mappings, PWM ranges (min/max values), hysteresis, and polling intervals. This config is generated by running pwmconfig as root, which probes hardware, tests PWM-capable fans, and creates safe defaults.

Once configured, fancontrol runs continuously as a background process (PID tracked in /var/run/fancontrol.pid), updating fan speeds every interval seconds. It supports multiple fans/sensors, averaging temps if needed, and includes safeguards like min PWM to prevent stalls.

Requires kernel support for the monitoring chip (e.g., via modules like coretemp, nct6775). Ideal for desktops/servers; laptops often use firmware control. Commonly managed via systemd (fancontrol.service).

CAVEATS

Requires root privileges for daemon mode and hwmon access.
Must run pwmconfig first for config.
Hardware-specific; not all fans/chips supported.
Single instance only; PID conflicts halt starts.
Kernel modules (e.g., pwm-fan) must load.

CONFIG FILE FORMAT

Key-value pairs like:
INTERVAL=10 (polling sec)
FCTEMPS=hwmon1/pwm2=hwmon1/temp2_input,hwmon1/temp3_input (fan=temp mappings)
MINTEMP=hwmon1/pwm2=40, MAXTEMP=hwmon1/pwm2=60
MINSTART=hwmon1/pwm2=150, MINSTOP=hwmon1/pwm2=100 (PWM vals 0-255)

SETUP STEPS

1. sensors-detect (detect chips)
2. pwmconfig (probe/test/generate config)
3. Edit /etc/fancontrol if needed
4. systemctl enable --now fancontrol (or run manually)

HISTORY

Introduced in lm-sensors 2.6.5 (circa 2003) by Rudolf Marek and others. Evolved with Linux kernel hwmon/pwm APIs; current versions (3.x+) in 2020s support modern chips like those from Nuvoton/ITE. Actively maintained via lm-sensors GitHub.

SEE ALSO

pwmconfig(8), sensors(1), sensors-detect(8), lm-sensors(7)

Copied to clipboard