root/lm-sensors/tags/V3-0-1/doc/fancontrol.txt

Revision 4589, 5.0 kB (checked in by khali, 1 year 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
2 fancontrol - automated software based fan speed regulation
3
4
5 Introduction
6
7 fancontrol is a shellscript for use with lm_sensors. It reads its
8 configuration from a file, then calculates fan speeds from temperatures and
9 sets the corresponding pwm outputs to the computed values.  It is included in
10 lm_sensors since 2.8.0, the latest version is always available through SVN or
11 at http://www.hdev.de/fancontrol/ For easy configuration, there's a script
12 named pwmconfig which lets you interactively write your configuration file for
13 fancontrol. Alternatively you can write this file yourself using the
14 information from the configuration section of this document.
15
16 Please be careful when using the fan control features of your mainboard, in
17 addition to the risk of burning your CPU, at higher temperatures there will be
18 a higher wearout of your other hardware components, too. So if you plan to use
19 these components in 50 years, _maybe_ you shouldn't use fancontrol/your
20 hardware at all.  Also please keep in mind most fans aren't designed to be
21 powered by a PWMed voltage, for more detailed information on this I recommend
22 this appnote: http://www.maxim-ic.com/appnotes.cfm/appnote_number/707
23 In practice it doesn't seem to be a major issue, the fans will get slightly
24 warmer, just be sure to have a temperature alarm and/or shutdown call, in case
25 some fan fails, because you probably won't hear it anymore ;)
26
27 Configuration
28
29 Since most of you are going to use the pwmconfig script, the config
30 file syntax will be discussed last. First I'm going to describe the various
31 variables available for changing fancontrol's behaviour:
32
33 INTERVAL
34         This variable defines at which interval in seconds the main loop of
35         fancontrol will be executed
36
37 FCTEMPS
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
42 FCFANS
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
47 MINTEMP
48         The temperature below which the fan gets switched to minimum speed.
49
50 MAXTEMP
51         The temperature over which the fan gets switched to maximum speed.
52
53 MINSTART
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
57 MINSTOP
58         The minimum speed at which the fan still spins. Use a safe value here,
59         too.
60
61 MINPWM
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
68 MAXPWM
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
72 A graph might help you understand how the different values relate
73 to 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
97 The configuration file format is a bit strange:
98
99 VARIABLE=chip/pwmdev=value chip/pwmdev2=value2 [...]
100 VARIABLE2=[...]
101
102 Each variable has its own line. The variable name is followed by an equal sign
103 and the device=value pairs. These consist of the relative path to the pwm
104 output (from /proc/sys/dev/sensors, /sys/bus/i2c/devices or /sys/class/hwmon
105 depending on the kernel version) for which the value is valid, equal sign
106 followed by the value and are separated by a blank.
107
108 Example:
109
110 MINTEMP=w83627hf-isa-0290/pwm2=40 w83627hf-isa-0290/pwm1=54
111
112 You have to play with the temperature values a bit to get happy. For initial
113 setup I recommend using the pwmconfig script. Small changes can be made by
114 editing the config file directly following the rules above.
115
116
117 The algorithm
118
119 fancontrol first reads its configuration, writes it to arrays and loops its
120 main function.  This function gets the temperatures and fanspeeds from
121 kernel driver files and calculates new speeds depending on temperature
122 changes, but only if the temp is between MINTEMP and MAXTEMP. After that, the
123 new values are written to the pwm outputs.  The pwm value increases
124 linearly with rising temperature.
125
126
127 Planned features
128
129 rc-scripts for some gnu/linux-distributions
130 smoother regulation (temp interpolation)
131 gui for configuration
132
133 If you have other wishes or want to contribute something, please let me know:
134 marius.reiner${AT}hdev.de
Note: See TracBrowser for help on using the browser.