mirror of
https://github.com/lm-sensors/lm-sensors
synced 2025-08-30 13:57:41 +00:00
(marius) removed pwmtest, pwmconfig takes over the pwm related stuff
git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@1858 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
@@ -119,12 +119,9 @@ see useful_addresses.html.
|
|||||||
This script creates the /dev/i2c-* files. Please check the source before
|
This script creates the /dev/i2c-* files. Please check the source before
|
||||||
you run it, as you may need to set some variables first.
|
you run it, as you may need to set some variables first.
|
||||||
|
|
||||||
* prog/pwm/pwmtest (shell script, not installed)
|
|
||||||
This script tests the pwm (pulse width modulation) outputs of sensors
|
|
||||||
for their effect on the fans.
|
|
||||||
|
|
||||||
* prog/pwm/pwmconfig (shell script, not installed)
|
* prog/pwm/pwmconfig (shell script, not installed)
|
||||||
Extended version of pwmtest, helps setup configfile for fancontrol
|
Formerly pwmtest, tests the pwm (pulse width modulation) outputs of sensors
|
||||||
|
for their effect on the fans and helps to setup the configfile for fancontrol.
|
||||||
|
|
||||||
* prog/pwm/fancontrol (shell script, not installed)
|
* prog/pwm/fancontrol (shell script, not installed)
|
||||||
Controls fanspeeds responding to changes on temperature sensors.
|
Controls fanspeeds responding to changes on temperature sensors.
|
||||||
|
258
prog/pwm/pwmtest
258
prog/pwm/pwmtest
@@ -1,258 +0,0 @@
|
|||||||
#
|
|
||||||
# pwmtest
|
|
||||||
# Tests the pwm outputs of sensors.
|
|
||||||
#
|
|
||||||
# Warning!!! This program will stop your fans, one at a time,
|
|
||||||
# for approximately 3 seconds each!!!
|
|
||||||
# This may cause your processor temperature to rise!!!
|
|
||||||
# Verify that all fans are running at normal speed after this
|
|
||||||
# program has exited!!!
|
|
||||||
#
|
|
||||||
# Copyright 2003 The lm_sensors project <sensors@stimpy.netroedge.com>
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
echo 'This program will search your sensors for pulse width modulation (pwm)'
|
|
||||||
echo 'controls, and test each one to see if it controls a fan on'
|
|
||||||
echo 'your motherboard. Note that many motherboards do not have pwm'
|
|
||||||
echo 'circuitry installed, even if your sensor chip supports pwm.'
|
|
||||||
echo
|
|
||||||
echo 'We will attempt to briefly stop each fan using the pwm controls.'
|
|
||||||
echo 'The program will attempt to restore each fan to full speed'
|
|
||||||
echo 'after testing. However, it is ** very important ** that you'
|
|
||||||
echo 'physically verify that the fans have been to full speed'
|
|
||||||
echo 'after the program has completed.'
|
|
||||||
echo
|
|
||||||
|
|
||||||
DELAY=3
|
|
||||||
|
|
||||||
DIR=/proc/sys/dev/sensors
|
|
||||||
if [ ! -d $DIR ]
|
|
||||||
then
|
|
||||||
echo $0: 'No sensors found! (modprobe sensor modules?)'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd $DIR
|
|
||||||
DRIVERS=`echo *-*`
|
|
||||||
if [ "*-*" = "$DRIVERS" ]
|
|
||||||
then
|
|
||||||
echo $0: 'No sensors found! (modprobe sensor modules?)'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
PWM=`echo */pwm*`
|
|
||||||
if [ "*/pwm*" = "$PWM" ]
|
|
||||||
then
|
|
||||||
echo $0: 'There are no pwm-capable sensor modules installed'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
FAN=`echo */fan[1-9]`
|
|
||||||
if [ "*/fan[1-9]" = "$FAN" ]
|
|
||||||
then
|
|
||||||
echo $0: 'There are no fan-capable sensor modules installed'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 'Found the following PWM controls:'
|
|
||||||
for i in $PWM
|
|
||||||
do
|
|
||||||
echo " $i"
|
|
||||||
if [ -w $i ]
|
|
||||||
then
|
|
||||||
echo 255 0 > $i
|
|
||||||
else
|
|
||||||
NOTROOT=1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo 'Found the following fan sensors:'
|
|
||||||
for i in $FAN
|
|
||||||
do
|
|
||||||
S=`cat $i | cut -d' ' -f2`
|
|
||||||
if [ "$S" = "0" -o "$S" = "-1" ]
|
|
||||||
then
|
|
||||||
echo " $i current speed: 0 ... skipping!"
|
|
||||||
else
|
|
||||||
echo " $i current speed: $S RPM"
|
|
||||||
if [ "$GOODFAN" = "" ]
|
|
||||||
then
|
|
||||||
GOODFAN=$i
|
|
||||||
SPEEDS=$S
|
|
||||||
else
|
|
||||||
GOODFAN="$GOODFAN $i"
|
|
||||||
SPEEDS="$SPEEDS $S"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo
|
|
||||||
|
|
||||||
if [ "$GOODFAN" = "" ]
|
|
||||||
then
|
|
||||||
echo 'There are no working fan sensors, all readings are 0.'
|
|
||||||
echo 'Make sure you have a 3-wire fan connected.'
|
|
||||||
echo 'You may also need to increase the fan divisors.'
|
|
||||||
echo 'See doc/fan-divisors for more information.'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$NOTROOT" = "1" ]
|
|
||||||
then
|
|
||||||
echo 'As you are not root, we cannot write the PWM settings.'
|
|
||||||
echo 'Please run as root to continue.'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 'Warning!!! This program will stop your fans, one at a time,'
|
|
||||||
echo "for approximately $DELAY seconds each!!!"
|
|
||||||
echo 'This may cause your processor temperature to rise!!!'
|
|
||||||
echo 'If you do not want to do this hit control-C now!!!'
|
|
||||||
echo -n 'Hit return to continue: '
|
|
||||||
read X
|
|
||||||
echo
|
|
||||||
|
|
||||||
PLOTTER=gnuplot
|
|
||||||
STEP=15
|
|
||||||
PDELAY=2
|
|
||||||
|
|
||||||
function pwmdetail()
|
|
||||||
{
|
|
||||||
P=$1
|
|
||||||
F=$2
|
|
||||||
PLOT=
|
|
||||||
|
|
||||||
type gnuplot > /dev/null 2>&1
|
|
||||||
if [ $? -eq 0 ]
|
|
||||||
then
|
|
||||||
echo -n " Would you like to generate a graphical plot using $PLOTTER (y) ? "
|
|
||||||
read X
|
|
||||||
if [ "$X" = "y" -o "$X" = "Y" -o "$X" = "" ]
|
|
||||||
then
|
|
||||||
PLOT=y
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$PLOT" = "y" ]
|
|
||||||
then
|
|
||||||
TMP1=/usr/tmp/pwmtest$$.1
|
|
||||||
TMP2=/usr/tmp/pwmtest$$.2
|
|
||||||
echo "set xlabel \"PWM: $P\"" > $TMP1
|
|
||||||
echo "set ylabel \"FAN: $F (RPM)\"" >> $TMP1
|
|
||||||
echo 'set nokey' >> $TMP1
|
|
||||||
echo 'set xrange [0:255]' >> $TMP1
|
|
||||||
echo "plot \"$TMP2\" with lines" >> $TMP1
|
|
||||||
echo 'pause -1 " Hit return to continue..."' >> $TMP1
|
|
||||||
> $TMP2
|
|
||||||
fi
|
|
||||||
|
|
||||||
let pwm=255
|
|
||||||
while [ $pwm -ge 0 ]
|
|
||||||
do
|
|
||||||
echo $pwm 1 > $P
|
|
||||||
S=`cat $F | cut -d' ' -f2`
|
|
||||||
echo " PWM $pwm FAN $S"
|
|
||||||
if [ "$PLOT" = "y" ]
|
|
||||||
then
|
|
||||||
echo "$pwm $S" >> $TMP2
|
|
||||||
fi
|
|
||||||
if [ "$S" = "0" -o "S" = "-1" ]
|
|
||||||
then
|
|
||||||
echo 255 0 > $P
|
|
||||||
echo " Fan Stopped at PWM = $pwm"
|
|
||||||
if [ $pwm -eq 255 ]
|
|
||||||
then
|
|
||||||
echo " This fan appears to stop when the PWM is enabled;"
|
|
||||||
echo " perhaps the fan input shares a pin with the PWM output"
|
|
||||||
echo " on the sensor chip."
|
|
||||||
rm -f $TMP1 $TMP2
|
|
||||||
echo
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
let pwm=$pwm-$STEP
|
|
||||||
sleep $PDELAY
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
echo 255 0 > $P
|
|
||||||
echo '^C received, aborting...'
|
|
||||||
rm -f $TMP1 $TMP2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo 255 0 > $P
|
|
||||||
if [ "$PLOT" = "y" ]
|
|
||||||
then
|
|
||||||
$PLOTTER $TMP1
|
|
||||||
rm -f $TMP1 $TMP2
|
|
||||||
fi
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
for i in $PWM
|
|
||||||
do
|
|
||||||
echo Testing pwm control $i ...
|
|
||||||
echo 0 1 > $i
|
|
||||||
sleep $DELAY
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
echo 255 0 > $i
|
|
||||||
echo '^C received, restoring PWM and aborting...'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
let count=1
|
|
||||||
for j in $GOODFAN
|
|
||||||
do
|
|
||||||
OS=`echo $SPEEDS | cut -d' ' -f$count`
|
|
||||||
S=`cat $j | cut -d' ' -f2`
|
|
||||||
echo " $j ... speed was $OS now $S"
|
|
||||||
echo 255 0 > $i
|
|
||||||
let threshold=2*$OS/3
|
|
||||||
if [ $S -lt $threshold ]
|
|
||||||
then
|
|
||||||
echo " It appears that fan $j"
|
|
||||||
echo " is controlled by pwm $i"
|
|
||||||
sleep $DELAY
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
echo '^C received, aborting...'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
S=`cat $j | cut -d' ' -f2`
|
|
||||||
if [ $S -lt $threshold ]
|
|
||||||
then
|
|
||||||
echo " Fan $j has not returned to speed, please investigate!"
|
|
||||||
else
|
|
||||||
echo -n " Would you like to generate a detailed correlation (y) ? "
|
|
||||||
read X
|
|
||||||
if [ "$X" = "y" -o "$X" = "Y" -o "$X" = "" ]
|
|
||||||
then
|
|
||||||
pwmdetail $i $j
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo " no correlation"
|
|
||||||
fi
|
|
||||||
let count=count+1
|
|
||||||
done
|
|
||||||
echo
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
echo 'Testing is complete.'
|
|
||||||
echo 'Please verify that all fans have returned to their normal speed.'
|
|
Reference in New Issue
Block a user