|
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 http://www.almico.com/forumindex.php)
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
Devices:
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:
INTERVAL=10
Settings of hwmon2/pwm2:
Depends on hwmon1/device/temp1_input
Controls hwmon2/fan2_input
MINTEMP=42
MAXTEMP=65
MINSTART=122
MINSTOP=22
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
INTERVAL=10
DEVPATH=hwmon1=devices/platform/coretemp.0 hwmon2=devices/platform/nct6775.2608
DEVNAME=hwmon1=coretemp hwmon2=nct6776
FCTEMPS=hwmon2/pwm2=hwmon1/device/temp1_input
FCFANS= hwmon2/pwm2=hwmon2/fan2_input
MINTEMP=hwmon2/pwm2=45
MAXTEMP=hwmon2/pwm2=95
MINSTART=hwmon2/pwm2=33
MINSTOP=hwmon2/pwm2=22
where
- 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.
|