Note before starting:

This functionality depends on both your hardware and software. If your hardware doesn't support fan speed controls, or doesn't show them to the OS, it is very likely that you could not use this solution. If it does, but the software (aka kernel) doesn't know how to control it, you are without luck.


  1. Install the lm-sensors and fancontrol packages.

  2. Configure lm-sensors as follows:

    1. In terminal type sudo sensors-detect and answer YES to all YES/no questions.
      (Potentially, this can damage your system or cause system crash. For a lot of systems, it is safe. There is no guarantee that this process will not damage your system permanently, I just think that chance of such critical failure is really really low. Saving all your work for eventual crashes/freezes/restarts before handling system configuration is always good idea. If you feel unsure, read the comments and try to search a web and get some high-level overview before YES-ing everything, maybe being selective with your YES-es will still be enough)

    2. At the end of sensors-detect, a list of modules that need to be loaded will be displayed. Type "yes" to have sensors-detect insert those modules into /etc/modules, or edit /etc/modules yourself.

    3. Run sudo service kmod start This will read the changes you made to /etc/modules in step 2, and insert the new modules into the kernel.
      Note: If you're running Ubuntu 12.04 or lower, this 3rd step command should be replaced by sudo service module-init-tools restart

  3. Configure fancontrol

    1. In terminal type sudo pwmconfig . This script will stop each fan for 5 seconds to find out which fans can be controlled by which PWM handle. After script loops through all fans, you can configure which fan corresponds to which temperature.
    2. You will have to specify what sensors to use. This is a bit tricky. If you have just one fan, make sure to use a temperature sensor for your core to base the fancontrol speed on.
    3. Run through the prompts and save the changes to the default location.
    4. Make adjustments to fine-tune /etc/fancontrol and use sudo service fancontrol restart to apply your changes. (In my case I set interval to 2 seconds.)
  4. Set up fancontrol service

    1. Run sudo service fancontrol start. This will also make the fancontrol service run automatically at system startup.

In my case /etc/fancontrol for CPU I used:

Settings for hwmon0/device/pwm2:
(Depends on hwmon0/device/temp2_input) (Controls hwmon0/device/fan2_input)

INTERVAL=2
MINTEMP=40  
MAXTEMP=60  
MINSTART=150  
MINSTOP=0  
MINPWM=0  
MAXPWM=255 

and on a different system it is:

INTERVAL=10
DEVPATH=hwmon1=devices/platform/coretemp.0 hwmon2=devices/platform/nct6775.2608
DEVNAME=hwmon1=coretemp hwmon2=nct6779
FCTEMPS=hwmon2/pwm2=hwmon1/temp2_input
FCFANS=hwmon2/pwm2=hwmon2/fan2_input
MINTEMP=hwmon2/pwm2=49
MAXTEMP=hwmon2/pwm2=83
MINSTART=hwmon2/pwm2=150
MINSTOP=hwmon2/pwm2=15
MINPWM=hwmon2/pwm2=14
MAXPWM=hwmon2/pwm2=255

This man page gives some useful info on the settings and what they really do.

🌐
Stack Exchange
unix.stackexchange.com β€Ί questions β€Ί 590307 β€Ί how-to-manually-set-cpu-fan-speed-in-debian-linux
How to manually set CPU Fan Speed in Debian Linux? - Unix & Linux Stack Exchange
June 1, 2020 - hwmon0 is it8620 hwmon1 is k10temp hwmon2 is fam15h_power hwmon3 is radeon Found the following PWM controls: hwmon0/pwm1 current value: 0 hwmon0/pwm2 current value: 0 hwmon0/pwm3 current value: 0 hwmon0/pwm4 current value: 255 hwmon0/pwm5 current value: 255 Giving the fans some time to reach full speed...
🌐
Baeldung
baeldung.com β€Ί home β€Ί administration β€Ί controlling fan speed in linux
Controlling Fan Speed in Linux | Baeldung on Linux
3 weeks ago - In this tutorial, we’ll discuss ... temperature, fan speed, and voltage sensors. fancontrol is an lm-sensors utility that regulates fan speed according to system temperature....
Discussions

Fan control software for Linux?
There is a fancontrol tool in Linux (Debian included), but it has no GUI. Nevertheless, it's more convenient and safe to let your motherboard control your fans, otherwise it's an easiest way to burn something inside your PC. Personally, I let my motherboard control fans in my PC, and I monitor their speeds using lm-sensors and conky GUI. More on reddit.com
🌐 r/linux4noobs
31
84
June 6, 2022
[도움 ν•„μš”] ν—€λ“œλ¦¬μŠ€ λ¦¬λˆ…μŠ€ μ„œλ²„μ—μ„œ 팬 μ œμ–΄ : r/debian
🌐 r/debian
[deleted by user]
Not knowing what hardware you're using this is impossible to answer. I recommend setting appropriate CPU fan curves in your system BIOS, and not messing with GPU fan curves unless you enjoy warm burn-y smells while playing games or rendering video. More on reddit.com
🌐 r/linuxquestions
12
11
February 19, 2025
[Help needed] Fan control on headless linux server
Apparently you need to upgrade to a very recent kernel version: https://www.phoronix.com/news/Intel-GPU-Fan-Speed-Linux More on reddit.com
🌐 r/debian
10
1
November 25, 2024
🌐
Debian Manpages
manpages.debian.org β€Ί unstable β€Ί fancontrol β€Ί fancontrol.8.en.html
fancontrol(8) β€” fancontrol β€” Debian unstable β€” Debian Manpages
April 12, 2025 - It reads its configuration from a file, then calculates fan speeds from temperatures and sets the corresponding PWM outputs to the computed values. Please be careful when using the fan control features of your mainboard, in addition to the risk of burning your CPU, at higher temperatures there will be a higher wearout of your other hardware components, too.
🌐
Debian
packages.debian.org β€Ί trixie β€Ί utils β€Ί fancontrol
Debian -- Details of package fancontrol in trixie
This package contains a daemon that calculates fan speeds from temperatures and sets the corresponding PWM outputs to the computed values.
🌐
GitHub
github.com β€Ί desbma β€Ί hddfancontrol
GitHub - desbma/hddfancontrol: Regulate fan speed according to hard drive temperature Β· GitHub
See systemd service to easily manage the daemon. sudo cargo install --root /usr/local hddfancontrol Β· The default parameters will run fans at 100% speed at temperatures > 50Β°C, and run them a 20% speed if < 30Β°C, which corresponds to the ...
Starred by 206 users
Forked by 24 users
Languages Β  Rust 97.5% | Python 2.2% | Shell 0.3%
🌐
Debian Manpages
manpages.debian.org β€Ί stretch β€Ί fancontrol β€Ί fancontrol(8)
fancontrol(8) β€” fancontrol β€” Debian stretch β€” Debian Manpages
It reads its configuration from a file, then calculates fan speeds from temperatures and sets the corresponding PWM outputs to the computed values. Please be careful when using the fan control features of your mainboard, in addition to the risk of burning your CPU, at higher temperatures there ...
Top answer
1 of 8
224

Note before starting:

This functionality depends on both your hardware and software. If your hardware doesn't support fan speed controls, or doesn't show them to the OS, it is very likely that you could not use this solution. If it does, but the software (aka kernel) doesn't know how to control it, you are without luck.


  1. Install the lm-sensors and fancontrol packages.

  2. Configure lm-sensors as follows:

    1. In terminal type sudo sensors-detect and answer YES to all YES/no questions.
      (Potentially, this can damage your system or cause system crash. For a lot of systems, it is safe. There is no guarantee that this process will not damage your system permanently, I just think that chance of such critical failure is really really low. Saving all your work for eventual crashes/freezes/restarts before handling system configuration is always good idea. If you feel unsure, read the comments and try to search a web and get some high-level overview before YES-ing everything, maybe being selective with your YES-es will still be enough)

    2. At the end of sensors-detect, a list of modules that need to be loaded will be displayed. Type "yes" to have sensors-detect insert those modules into /etc/modules, or edit /etc/modules yourself.

    3. Run sudo service kmod start This will read the changes you made to /etc/modules in step 2, and insert the new modules into the kernel.
      Note: If you're running Ubuntu 12.04 or lower, this 3rd step command should be replaced by sudo service module-init-tools restart

  3. Configure fancontrol

    1. In terminal type sudo pwmconfig . This script will stop each fan for 5 seconds to find out which fans can be controlled by which PWM handle. After script loops through all fans, you can configure which fan corresponds to which temperature.
    2. You will have to specify what sensors to use. This is a bit tricky. If you have just one fan, make sure to use a temperature sensor for your core to base the fancontrol speed on.
    3. Run through the prompts and save the changes to the default location.
    4. Make adjustments to fine-tune /etc/fancontrol and use sudo service fancontrol restart to apply your changes. (In my case I set interval to 2 seconds.)
  4. Set up fancontrol service

    1. Run sudo service fancontrol start. This will also make the fancontrol service run automatically at system startup.

In my case /etc/fancontrol for CPU I used:

Settings for hwmon0/device/pwm2:
(Depends on hwmon0/device/temp2_input) (Controls hwmon0/device/fan2_input)

INTERVAL=2
MINTEMP=40  
MAXTEMP=60  
MINSTART=150  
MINSTOP=0  
MINPWM=0  
MAXPWM=255 

and on a different system it is:

INTERVAL=10
DEVPATH=hwmon1=devices/platform/coretemp.0 hwmon2=devices/platform/nct6775.2608
DEVNAME=hwmon1=coretemp hwmon2=nct6779
FCTEMPS=hwmon2/pwm2=hwmon1/temp2_input
FCFANS=hwmon2/pwm2=hwmon2/fan2_input
MINTEMP=hwmon2/pwm2=49
MAXTEMP=hwmon2/pwm2=83
MINSTART=hwmon2/pwm2=150
MINSTOP=hwmon2/pwm2=15
MINPWM=hwmon2/pwm2=14
MAXPWM=hwmon2/pwm2=255

This man page gives some useful info on the settings and what they really do.

2 of 8
63

If you own a ThinkPad, there's a piece of software called thinkfan that does exactly this. As the name obviously suggests, it is specifically made for ThinkPads (thinkpad_acpi).

The thinkfan software is available in the standard ubuntu software repositories, but it does require a few steps to configure.

Here is an easy step-by-step guide, which is basically a translated version of this German guide.

Relevant Information from Post

  1. Install the thinkfan software and the sensors:

    sudo apt-get install thinkfan lm-sensors
    
  2. Make sure that the daemon controls the fan by editing the thinkpad.conf file:

    sudo nano /etc/modprobe.d/thinkfan.conf
    

    by adding the following line:

    options thinkpad_acpi fan_control=1
    
  3. Make the daemon load automatically at start-up by editing the file:

    sudo nano /etc/default/thinkfan
    

    making sure that the START key is set to yes, i.e., there should be a line that says:

    START=yes
    
  4. Detect your laptop's sensors:

    sudo sensors-detect
    

    and just choose the default answers whenever you're prompted by hitting Enter.

  5. Load the new modules. From Ubuntu 13.10 this done by:

    sudo service kmod start
    

    while for previous versions like 13.04 you instead will need to do:

    sudo service module-init-tools start
    
  6. Figure out which sensors are in use:

    sensors
    

    (the ones that indicate 0 degrees are not in use, I don't know why those are "detected" too). Remember which ones are in use.

  7. Find out the full paths of these sensors:

    find /sys/devices -type f -name "temp*_input"
    

    The output should be a list of paths like /sys/devices/...

  8. Copy-paste the paths to the sensors into the configuration file /etc/thinkpad.conf. To do this, first open up the file:

    sudo nano /etc/thinkfan.conf
    

    There should already be a line like

    #sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3) 
    

    (the #-symbol means that that line is commented out). Add a line starting with sensor (without the #-symbol) and copy-paste you first sensor. Repeat this if you have more than one sensor. For example, on my machine, the output in step 7 yields

    /sys/devices/virtual/hwmon/hwmon0/temp1_input
    /sys/devices/platform/thinkpad_hwmon/temp3_input
    /sys/devices/platform/thinkpad_hwmon/temp4_input
    /sys/devices/platform/thinkpad_hwmon/temp5_input
    /sys/devices/platform/thinkpad_hwmon/temp6_input
    /sys/devices/platform/thinkpad_hwmon/temp7_input
    /sys/devices/platform/thinkpad_hwmon/temp1_input
    /sys/devices/platform/thinkpad_hwmon/temp8_input
    /sys/devices/platform/thinkpad_hwmon/temp2_input
    /sys/devices/platform/coretemp.0/temp4_input
    /sys/devices/platform/coretemp.0/temp2_input 
    

    The ones that are in use in my machine are the ones in the first and the last two lines, so I added the three lines:

    sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
    sensor /sys/devices/platform/coretemp.0/temp4_input
    sensor /sys/devices/platform/coretemp.0/temp2_input 
    
  9. Finally, we can set the fan speed levels in the configuration file. Open the /etc/thinkpad.conf file if it wasn't open already.

    sudo nano /etc/thinkfan.conf
    

    The fan levels I use on my ThinkPad x201 are:

    (0, 0, 51)
    (1, 50, 52)
    (2, 51, 55)
    (3, 54, 58)
    (4, 56, 63)
    (5, 60, 70)
    (6, 66, 79)
    (7, 74, 92)
    (127, 85, 32767) 
    

    The last line ensures full fan speed (127 = "disengaged" i.e. unregulated). You can fiddle with these levels to fit your needs/wishes, but PLEASE BE CAREFUL!

  10. Reboot. Everything should work now. In order to check whether thinkpad is running correctly, use:

    sudo thinkfan -n
    

    Which starts thinkfan in verbose mode. You might want to stop the thinkfan daemon first:

    sudo /etc/init.d/thinkfan stop
    

    If you want to start the thinkfan daemon again, type:

    sudo /etc/init.d/thinkfan start
    

Just to be complete, my /etc/thinkfan.conf configuration file is:

# IMPORTANT:
#
# To keep your HD from overheating, you have to specify a correction value for
# the sensor that has the HD's temperature. You need to do this because
# thinkfan uses only the highest temperature it can find in the system, and
# that'll most likely never be your HD, as most HDs are already out of spec
# when they reach 55 Β°C.
# Correction values are applied from left to right in the same order as the
# temperatures are read from the file.
#
# For example:
# sensor /proc/acpi/ibm/thermal (0, 0, 10)
# will add a fixed value of 10 Β°C the 3rd value read from that file. Check out
# http://www.thinkwiki.org/wiki/Thermal_Sensors to find out how much you may
# want to add to certain temperatures.

# Syntax:
# (LEVEL, LOW, HIGH)
# LEVEL is the fan level to use (0-7 with thinkpad_acpi)
# LOW is the temperature at which to step down to the previous level
# HIGH is the temperature at which to step up to the next level
# All numbers are integers.
#

# I use this on my T61p:
#sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3)

#(0, 0, 55)
#(1, 48, 60)
#(2, 50, 61)
#(3, 52, 63)
#(4, 56, 65)
#(5, 59, 66)
#(7, 63, 32767)


# My settings for my ThinkPad X201: (kris)

sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
sensor /sys/devices/platform/coretemp.0/temp4_input
sensor /sys/devices/platform/coretemp.0/temp2_input

(0, 0, 51)
(1, 50, 52)
(2, 51, 55)
(3, 54, 58)
(4, 56, 63)
(5, 60, 70)
(6, 66, 79)
(7, 74, 92)
(127, 85, 32767)
Find elsewhere
🌐
joeplaa wiki
wiki.joeplaa.com β€Ί tutorials β€Ί how-to-install-and-configure-fancontrol-pc
How to install and configure fancontrol (PC) | joeplaa wiki
On Ubuntu/Debian (Proxmox) this can be achieved by installing the lm-sensors package to read the CPU temperature data and fancontrol to control the fan speeds.
🌐
Debian Manpages
manpages.debian.org β€Ί testing β€Ί fancontrol β€Ί pwmconfig.8.en.html
pwmconfig(8) β€” fancontrol β€” Debian testing β€” Debian Manpages
When a connection is established between a PWM control and a fan, pwmconfig can generate a detailed correlation, to show how a given fan is responding to various PWM duty cycles. Lastly, pwmconfig will enter in fancontrol configuration mode (unless you decide to skip that part.) In this mode, you are invited to enter several parameters which will determine how the fancontrol daemon regulates the speed of one or more fans in your system based on temperature measurements.
🌐
Debian
packages.debian.org β€Ί sid β€Ί utils β€Ί fancontrol
Debian -- Details of package fancontrol in sid
This package contains a daemon that calculates fan speeds from temperatures and sets the corresponding PWM outputs to the computed values.
🌐
Debian
packages.debian.org β€Ί bookworm β€Ί fancontrol
Debian -- Details of package fancontrol in bookworm
This package contains a daemon that calculates fan speeds from temperatures and sets the corresponding PWM outputs to the computed values.
🌐
Debian Manpages
manpages.debian.org β€Ί bullseye β€Ί fancontrol β€Ί fancontrol.8.en.html
fancontrol(8) β€” fancontrol β€” Debian bullseye β€” Debian Manpages
January 30, 2021 - It reads its configuration from a file, then calculates fan speeds from temperatures and sets the corresponding PWM outputs to the computed values. Please be careful when using the fan control features of your mainboard, in addition to the risk of burning your CPU, at higher temperatures there ...
🌐
LinuxVox
linuxvox.com β€Ί blog β€Ί control-fan-speed-linux
Controlling Fan Speed in Linux: A Comprehensive Guide β€” linuxvox.com
# For Debian/Ubuntu sudo apt-get install lm-sensors sudo sensors-detect sudo apt-get install fancontrol # For Fedora sudo dnf install lm_sensors sudo sensors-detect sudo dnf install fancontrol
🌐
Greenwebpage
greenwebpage.com β€Ί home β€Ί blog β€Ί how to control cpu fan speed on linux: in 5 steps
How to Control CPU Fan Speed on Linux: In 5 Steps - Greenwebpage Community
February 26, 2025 - First, install lm-sensors using the package manager of your distribution. For Debian-based systems, use sudo apt install lm-sensors, and for RHEL-based systems, sudo dnf install lm_sensors.
🌐
Debian
packages.debian.org β€Ί stable β€Ί utils β€Ί fancontrol
I Challenge Thee
I Challenge Thee Β· AI scrapers break the web, to use this page you'll need JavaScript enabled
🌐
Deye PV Balkonkraftwerk
libe.net β€Ί en β€Ί fan-control-debian
Fan control Linux Debian: Fancontrol
September 26, 2022 - Found the following fan sensors: hwmon2/fan1_input current speed: 0 ... skipping! hwmon2/fan2_input current speed: 2054 RPM hwmon2/fan3_input current speed: 0 ... skipping! hwmon2/fan4_input current speed: 0 ... skipping! hwmon2/fan5_input current speed: 0 ... skipping! hwmon2/fan6_input current speed: 0 ... skipping! Warning!!! This program will stop your fans, one at a time, for approximately 5 seconds each!!! This may cause your processor temperature to rise!!! If you do not want to do this hit control-C now!!!
🌐
ArchWiki
wiki.archlinux.org β€Ί title β€Ί Fan_speed_control
Fan speed control - ArchWiki
2 weeks ago - Tip Use MAXPWM and MINPWM options that limit fan speed range. See fancontrol(8) for details. Note Temperature and fan sensor paths could change as well (usually on a kernel update) (e.g. hwmon0/device/temp1_input becomes hwmon0/temp1_input). Check the fancontrol.service unit status to find out which path is the troublemaker and correct your configuration file accordingly. ... A properly configured setup will not output errors and will take control of the system fans.
🌐
joeplaa wiki
wiki.joeplaa.com β€Ί tutorials β€Ί how-to-install-and-configure-fancontrol-server
How to install and configure fancontrol (server) | joeplaa wiki
This makes the CPU temperatures rise unnecessarily high, but can be fixed by letting the OS control the fan speed instead of the mainboard. On Ubuntu/Debian (Proxmox) this can be achieved by installing the lm-sensors package to read the CPU temperature data and fancontrol to control the fan speeds.