mirror of
https://github.com/lm-sensors/lm-sensors.git
synced 2026-10-25 12:14:33 +00:00
pwmconfig: Properly deal with multiple fan control
When a given PWM output controls more than one fan, fanactive_min is no longer a space-separated list of numbers, it will also include items of the form "A+B". The tests in the rest of the code do not expect that and choke with errors like: /usr/sbin/pwmconfig: line 926: [: 538+799: integer expression expected /usr/sbin/pwmconfig: line 952: [: 538+799: integer expression expected As the only thing we really care about is whether any fan stops completely when PWM is 0, we can simply record the minimum of the lowest speed of all affected fans.
This commit is contained in:
1 parent
f2b3e95c59
commit
e46e4e519f
2 files changed
+12
-2
No files matched your search
@@ -6,6 +6,7 @@ SVN HEAD
|
||||
sensors: Clarify what option -u is good for
|
||||
pwmconfig: Print the initial PWM values
|
||||
Raise the detection threshold to 3/4
|
||||
Properly deal with multiple fan control
|
||||
sensors-detect: Add detection of AMD family 16h power sensors
|
||||
Map IT8771E, IT8772E, IT8782F and IT8783F to it87
|
||||
Use /sys/module instead of /proc/modules where available
|
||||
|
||||
+11
-2
@@ -444,6 +444,7 @@ do
|
||||
|
||||
let pwmactivecount=0
|
||||
let count=1
|
||||
S_MIN=
|
||||
for j in $GOODFAN
|
||||
do
|
||||
OS=`echo $SPEEDS | cut -d' ' -f$count`
|
||||
@@ -462,7 +463,6 @@ do
|
||||
let pwmactivecount=1
|
||||
pwmactive="$i ${pwmactive}"
|
||||
fanactive="$j ${fanactive}"
|
||||
fanactive_min="$S ${fanactive_min}"
|
||||
|
||||
# Give all correlated fans time to return to full speed
|
||||
sleep $DELAY
|
||||
@@ -473,8 +473,14 @@ do
|
||||
fi
|
||||
else
|
||||
fanactive="$j+${fanactive}"
|
||||
fanactive_min="$S+${fanactive_min}"
|
||||
fi
|
||||
|
||||
# Keep track of the slowest fan controlled by one PWM
|
||||
if [ -z "$S_MIN" ] || [ $S -lt $S_MIN ]
|
||||
then
|
||||
S_MIN=$S
|
||||
fi
|
||||
|
||||
S=`cat $j`
|
||||
if [ $S -lt $threshold ]
|
||||
then
|
||||
@@ -507,8 +513,11 @@ do
|
||||
if [ "$X" = "y" -o "$X" = "Y" ]
|
||||
then
|
||||
pwmactive="$i ${pwmactive}"
|
||||
fanactive_min="0 $fanactive_min"
|
||||
fi
|
||||
echo
|
||||
else
|
||||
fanactive_min="$S_MIN $fanactive_min"
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
Reference in new issue
Block a user