qq polys
le blog

les news


zone privée


Fan control for my NUC

The fan control of the NUC is not always perfect, it can make noise when the heat is still low. Here is my configuration to make it more silent.

Do as explained here. However automatic configuration for fancontrol did not work in my case so here is my manual configuration process:

jason ricou # pwmconfig 
# pwmconfig revision 6166 (2013-05-01)
This program will search your sensors for pulse width modulation (pwm)
controls, and test each one to see if it controls a fan on
your motherboard. Note that many motherboards do not have pwm
circuitry installed, even if your sensor chip supports pwm.

We will attempt to briefly stop each fan using the pwm controls.
The program will attempt to restore each fan to full speed
after testing. However, it is ** very important ** that you
physically verify that the fans have been to full speed
after the program has completed.

Found the following devices:
   hwmon0 is acpitz
   hwmon1/device is coretemp
   hwmon2 is nct6776

Found the following PWM controls:
   hwmon2/pwm1           current value: 255
   hwmon2/pwm2           current value: 255

Giving the fans some time to reach full speed...
Found the following fan sensors:
   hwmon2/fan1_input     current speed: 0 ... skipping!
   hwmon2/fan2_input     current speed: 6136 RPM

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!!!
Hit return to continue: 

Testing pwm control hwmon2/pwm1 ...
  hwmon2/fan2_input ... speed was 6136 now 6164
    no correlation

No correlations were detected.
There is either no fan connected to the output of hwmon2/pwm1,
or the connected fan has no rpm-signal connected to one of
the tested fan sensors. (Note: not all motherboards have
the pwm outputs connected to the fan connectors,
check out the hardware database on

Did you see/hear a fan stopping during the above test (n)? 

Testing pwm control hwmon2/pwm2 ...
  hwmon2/fan2_input ... speed was 6136 now 0
    It appears that fan hwmon2/fan2_input
    is controlled by pwm hwmon2/pwm2
Would you like to generate a detailed correlation (y)? 
    PWM 255 FAN 6164
    PWM 240 FAN 5895
    PWM 225 FAN 5648
    PWM 210 FAN 5378
    PWM 195 FAN 5212
    PWM 180 FAN 4909
    PWM 165 FAN 4703
    PWM 150 FAN 4397
    PWM 135 FAN 4103
    PWM 120 FAN 3824
    PWM 105 FAN 3470
    PWM 90 FAN 3110
    PWM 75 FAN 2683
    PWM 60 FAN 2292
    PWM 45 FAN 1769
    PWM 30 FAN 1151
    PWM 28 FAN 985
    PWM 26 FAN 812
    PWM 24 FAN 634
    PWM 22 FAN 449
    PWM 20 FAN 251
    PWM 18 FAN 0
    Fan Stopped at PWM = 18

Testing is complete.
Please verify that all fans have returned to their normal speed.

The fancontrol script can automatically respond to temperature changes
of your system by changing fanspeeds.
Do you want to set up its configuration file now (y)? 
What should be the path to your fancontrol config file (/etc/fancontrol)? /etc/tototo

Select fan output to configure, or other action:
1) hwmon2/pwm2	       3) Just quit	      5) Show configuration
2) Change INTERVAL     4) Save and quit
select (1-n): 1

hwmon0 is acpitz
hwmon1/device is coretemp
hwmon2 is nct6776

Current temperature readings are as follows:
hwmon0/temp1_input	27
hwmon0/temp2_input	29
hwmon1/device/temp1_input	46
hwmon1/device/temp2_input	46
hwmon1/device/temp3_input	40
hwmon2/temp1_input	63
hwmon2/temp2_input	123
hwmon2/temp3_input	26
hwmon2/temp7_input	40
hwmon2/temp8_input	0
hwmon2/temp9_input	0

Select a temperature sensor as source for hwmon2/pwm2:
 1) hwmon0/temp1_input
 2) hwmon0/temp2_input
 3) hwmon1/device/temp1_input
 4) hwmon1/device/temp2_input
 5) hwmon1/device/temp3_input
 6) hwmon2/temp1_input
 7) hwmon2/temp2_input
 8) hwmon2/temp3_input
 9) hwmon2/temp7_input
10) hwmon2/temp8_input
11) hwmon2/temp9_input
12) None (Do not affect this PWM output)
select (1-n): 3

Enter the low temperature (degree C)
below which the fan should spin at minimum speed (20): 42

Enter the high temperature (degree C)
over which the fan should spin at maximum speed (60): 65

Enter the minimum PWM value (0-255)
at which the fan STOPS spinning (press t to test) (100): t

Now we decrease the PWM value to figure out the lowest usable value.
We will use a slightly greater value as the minimum speed.
    PWM 255 -> 6081 RPM
    PWM 240 -> 5818 RPM
    PWM 225 -> 5578 RPM
    PWM 210 -> 5357 RPM
    PWM 195 -> 5133 RPM
    PWM 180 -> 4945 RPM
    PWM 165 -> 4671 RPM
    PWM 150 -> 4426 RPM
    PWM 135 -> 4153 RPM
    PWM 120 -> 3781 RPM
    PWM 105 -> 3461 RPM
    PWM 90 -> 3132 RPM
    PWM 75 -> 2683 RPM
    PWM 60 -> 2295 RPM
    PWM 45 -> 1771 RPM
    PWM 30 -> 1151 RPM
    PWM 28 -> 998 RPM
    PWM 26 -> 815 RPM
    PWM 24 -> 641 RPM
    PWM 22 -> 457 RPM
    PWM 20 -> 178 RPM
    PWM 18 -> 0 RPM
OK, using 22

Enter the minimum PWM value (22-255)
at which the fan STARTS spinning (press t to test) (150): t

Now we increase the PWM value in 10-unit-steps.
Let the fan stop completely, then press return until the
fan starts spinning. Then enter 'y'.
We will use this value +20 as the starting speed.
Setting hwmon2/pwm2 to 22...
Setting hwmon2/pwm2 to 32...
Setting hwmon2/pwm2 to 42...
Setting hwmon2/pwm2 to 52...
Setting hwmon2/pwm2 to 62...
Setting hwmon2/pwm2 to 72...
Setting hwmon2/pwm2 to 82...
Setting hwmon2/pwm2 to 92...y
OK, using 122

Enter the PWM value (0-22) to use when the temperature
is below the low temperature limit (0): 

Enter the PWM value (22-255) to use when the temperature
is over the high temperature limit (255): 

Select fan output to configure, or other action:
1) hwmon2/pwm2	       3) Just quit	      5) Show configuration
2) Change INTERVAL     4) Save and quit
select (1-n): 5

Common Settings:

Settings of hwmon2/pwm2:
  Depends on hwmon1/device/temp1_input
  Controls hwmon2/fan2_input

Select fan output to configure, or other action:
1) hwmon2/pwm2	       3) Just quit	      5) Show configuration
2) Change INTERVAL     4) Save and quit
select (1-n): 4

Saving configuration to /etc/tototo...
Configuration saved
and the result a configuration file you can modify according to your preferences. Here is what is silent enough for me when idle (and a CPU temperature of 55°C):
jason ricou # cat /etc/fancontrol 
# Configuration file generated by pwmconfig, changes will be lost
DEVPATH=hwmon1=devices/platform/coretemp.0 hwmon2=devices/platform/nct6775.2608
DEVNAME=hwmon1=coretemp hwmon2=nct6776
FCFANS= hwmon2/pwm2=hwmon2/fan2_input
  • INTERVAL: how often the daemon should poll CPU temps and adjust fan speeds. INTERVAL is in seconds.
  • FCTEMPS: The temperature input device to read for CPU temperature. The above example corresponds to /sys/class/hwmon/hwmon0/device/temp1_input.
  • FCFANS: The current fan speed, which can be read (like the temperature) in /sys/class/hwmon/hwmon0/device/fan1_input
  • MINTEMP: The temperature (°C) at which to SHUT OFF the CPU fan. Efficient CPUs often will not need a fan while idling. Be sure to set this to a temperature that you know is safe. Setting this to 0 is not recommended and may ruin your hardware!
  • MAXTEMP: The temperature (°C) at which to spin the fan at its MAXIMUM speed. This should be probably be set to perhaps 10 or 20 degrees (°C) below your CPU's critical/shutdown temperature. Setting it closer to MINTEMP will result in higher fan speeds overall.
  • MINSTOP: The PWM value at which your fan stops spinning. Each fan is a little different. Power tweakers can echo different values (between 0 and 255) to /sys/class/hwmon/hwmon0/device/pwm1 and then watch the CPU fan. When the CPU fan stops, use this value.
  • MINSTART: The PWM value at which your fan starts to spin again. This is often a higher value than MINSTOP as more voltage is required to overcome inertia.
Valid XHTML 1.0!