2
0
mirror of https://github.com/lm-sensors/lm-sensors synced 2025-08-30 05:48:07 +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:
Marius Reiner 2003-07-05 16:16:03 +00:00
parent aabdc3912a
commit cb87834e01
2 changed files with 2 additions and 263 deletions

View File

@ -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.

View File

@ -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.'