root/lm-sensors/branches/lm-sensors-2.10/doc/fancontrol.txt

Revision 4588, 5.0 KB (checked in by khali, 5 years ago)

Use linear interpolation instead of quadratic to choose PWM values.
This is simpler and will work better in most cases. For example this
should address at least part of ticket #2224. It seems that quadratic
was used to lower the average noise level, but I don't think this is a
valid reason. The new MINPWM and MAXPWM parameters will also let the
user control the noise level if really needed.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1
2fancontrol - automated software based fan speed regulation
3
4
5Introduction
6
7fancontrol is a shellscript for use with lm_sensors. It reads its
8configuration from a file, then calculates fan speeds from temperatures and
9sets the corresponding pwm outputs to the computed values.  It is included in
10lm_sensors since 2.8.0, the latest version is always available through SVN or
11at http://www.hdev.de/fancontrol/ For easy configuration, there's a script
12named pwmconfig which lets you interactively write your configuration file for
13fancontrol. Alternatively you can write this file yourself using the
14information from the configuration section of this document.
15
16Please be careful when using the fan control features of your mainboard, in
17addition to the risk of burning your CPU, at higher temperatures there will be
18a higher wearout of your other hardware components, too. So if you plan to use
19these components in 50 years, _maybe_ you shouldn't use fancontrol/your
20hardware at all.  Also please keep in mind most fans aren't designed to be
21powered by a PWMed voltage, for more detailed information on this I recommend
22this appnote: http://www.maxim-ic.com/appnotes.cfm/appnote_number/707
23In practice it doesn't seem to be a major issue, the fans will get slightly
24warmer, just be sure to have a temperature alarm and/or shutdown call, in case
25some fan fails, because you probably won't hear it anymore ;)
26
27Configuration
28
29Since most of you are going to use the pwmconfig script, the config
30file syntax will be discussed last. First I'm going to describe the various
31variables available for changing fancontrol's behaviour:
32
33INTERVAL
34        This variable defines at which interval in seconds the main loop of
35        fancontrol will be executed
36
37FCTEMPS
38        Maps pwm outputs to temperature sensors so fancontrol knows which
39        temperature sensors should be used for calculation of new values for
40        the corresponding pwm outputs.
41
42FCFANS
43        FCFANS records the association between a pwm and a fan.
44        Then fancontrol can check the fan speed and restart it if it
45        stops unexpectedly.
46
47MINTEMP
48        The temperature below which the fan gets switched to minimum speed.
49
50MAXTEMP
51        The temperature over which the fan gets switched to maximum speed.
52
53MINSTART
54        Sets the minimum speed at which the fan begins spinning. You should
55        use a safe value to be sure it works, even when the fan gets old.
56
57MINSTOP
58        The minimum speed at which the fan still spins. Use a safe value here,
59        too.
60
61MINPWM
62        The PWM value to use when the temperature is below MINTEMP.
63        Typically, this will be either 0 if it is OK for the fan to plain
64        stop, or the same value as MINSTOP if you don't want the fan to
65        ever stop.
66        If this value isn't defined, it defaults to 0 (stopped fan).
67
68MAXPWM
69        The PWM value to use when the temperature is over MAXTEMP.
70        If this value isn't defined, it defaults to 255 (full speed).
71
72A graph might help you understand how the different values relate
73to each other:
74
75    PWM ^
76    255 +
77        |
78        |
79        |                             ,-------------- MAXPWM
80        |                           ,'.
81        |                         ,'  .
82        |                       ,'    .
83        |                     ,'      .
84        |                   ,'        .
85        |                 ,'          .
86        |       MINSTOP .'            .
87        |               |             .
88        |               |             .
89        |               |             .
90 MINPWM |---------------'             .
91        |               .             .
92        |               .             .
93        |               .             .
94      0 +---------------+-------------+---------------->
95                     MINTEMP       MAXTEMP            t (degree C)
96
97The configuration file format is a bit strange:
98
99VARIABLE=chip/pwmdev=value chip/pwmdev2=value2 [...]
100VARIABLE2=[...]
101
102Each variable has its own line. The variable name is followed by an equal sign
103and the device=value pairs. These consist of the relative path to the pwm
104output (from /proc/sys/dev/sensors, /sys/bus/i2c/devices or /sys/class/hwmon
105depending on the kernel version) for which the value is valid, equal sign
106followed by the value and are separated by a blank.
107
108Example:
109
110MINTEMP=w83627hf-isa-0290/pwm2=40 w83627hf-isa-0290/pwm1=54
111
112You have to play with the temperature values a bit to get happy. For initial
113setup I recommend using the pwmconfig script. Small changes can be made by
114editing the config file directly following the rules above.
115
116
117The algorithm
118
119fancontrol first reads its configuration, writes it to arrays and loops its
120main function.  This function gets the temperatures and fanspeeds from
121kernel driver files and calculates new speeds depending on temperature
122changes, but only if the temp is between MINTEMP and MAXTEMP. After that, the
123new values are written to the pwm outputs.  The pwm value increases
124linearly with rising temperature.
125
126
127Planned features
128
129rc-scripts for some gnu/linux-distributions
130smoother regulation (temp interpolation)
131gui for configuration
132
133If you have other wishes or want to contribute something, please let me know:
134marius.reiner${AT}hdev.de
Note: See TracBrowser for help on using the browser.