diff --git a/doc/progs b/doc/progs index b8c8d5ff..4c73a456 100644 --- a/doc/progs +++ b/doc/progs @@ -119,12 +119,9 @@ see useful_addresses.html. This script creates the /dev/i2c-* files. Please check the source before 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) - 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) Controls fanspeeds responding to changes on temperature sensors. diff --git a/prog/pwm/pwmtest b/prog/pwm/pwmtest deleted file mode 100755 index 2b00096e..00000000 --- a/prog/pwm/pwmtest +++ /dev/null @@ -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 -# -# 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.'