(change version)

More fine tuning of sensors. Handled case where temp 1 or 2 is greater than temp 2 or 1, but fan speed is zero for the hotter case, and is 
> 0 for the cooler case. This means that the cpu fan will be the cooler temp.

Added an attempt to set mobo fan speed if fanx is > 5000k rpm, those little fans will always be fast and on mobo, or almost always.
This commit is contained in:
inxi-svn 2009-07-31 22:26:09 +00:00
parent a402275233
commit 0bc773464f

33
inxi
View file

@ -1,8 +1,8 @@
#!/bin/bash
########################################################################
#### Script Name: inxi
#### version: 1.1.3
#### Date: 29 July 2009
#### version: 1.1.4
#### Date: 31 July 2009
########################################################################
#### SPECIAL THANKS
########################################################################
@ -3020,7 +3020,7 @@ get_sensors_data()
IFS=$'\n'
if [[ $B_SENSORS == 'true' ]];then
# note: non-configured sensors gives error message, which we need to redirect to stdout
# also, -F ':' no space, since some cases have the data starting right after :
# also, -F ':' no space, since some cases have the data starting right after,like - :1287
A_SENSORS_DATA=( $(
sensors | gawk -F ':' -v userCpuNo="$SENSORS_CPU_NO" '
BEGIN {
@ -3120,7 +3120,7 @@ get_sensors_data()
aFanMain[3]=gensub( /[ \t]*([0-9]+)[ \t]+(.*)/, "\\1", 1, $2 )
}
/^(FAN(1)? |CHASSIS(1)?)[ \t](.*)[ \t]*([0-9]+)[ \t]RPM/ {
/^(AUX|FAN(1)? |CHASSIS(1)? )(.*)[ \t]*([0-9]+)[ \t]RPM/ {
aFanMain[4]=gensub( /[ \t]*([0-9]+)[ \t]+(.*)/, "\\1", 1, $2 )
}
/^FAN([2-9]) |CHASSIS([2-9] )(.*)[ \t]*([0-9]+)[ \t]RPM/ {
@ -3150,7 +3150,16 @@ get_sensors_data()
tempFanType=userCpuNo
}
else {
if ( temp1 >= temp2 ) {
# first some fringe cases with cooler cpu than mobo: assume which is cpu temp based on fan speed
# but only if other fan speed is 0
if ( temp1 >= temp2 && 1 in aFanDefault && 2 in aFanDefault && aFanDefault[1] == 0 && aFanDefault[2] > 0 ) {
tempFanType=2
}
else if ( temp2 >= temp1 && 1 in aFanDefault && 2 in aFanDefault && aFanDefault[2] == 0 && aFanDefault[1] > 0 ) {
tempFanType=1
}
# then handle the standard case if these fringe cases are false
else if ( temp1 >= temp2 ) {
tempFanType=1
}
else {
@ -3230,6 +3239,18 @@ get_sensors_data()
aFanDefault[j] = ""
}
}
}
}
# now see if you can find the fast little mobo fan, > 5000 rpm and put it as mobo
for (j = 1; j <= indexCountaFanDefault; j++) {
if ( j in aFanDefault && aFanDefault[j] > 5000 && aFanMain[2] == "" ) {
aFanMain[2] = aFanDefault[j]
aFanDefault[j] = ""
# then add one if required for output
if ( indexCountaFanMain < 2 ) {
indexCountaFanMain = 2
}
}
}
@ -4201,7 +4222,7 @@ print_sensors_data()
;;
2)
if [[ -n ${a_sensors_working[2]} ]];then
ps_fan="${C1}ps:${C2} ${a_sensors_working[2]} "
ps_fan="${C1}psu:${C2} ${a_sensors_working[2]} "
(( fan_count++ ))
fi
;;