diff options
Diffstat (limited to 'recipes/temper')
-rw-r--r-- | recipes/temper/files/init | 32 | ||||
-rwxr-xr-x | recipes/temper/files/temper | 111 | ||||
-rw-r--r-- | recipes/temper/temper_0.0.1.bb | 19 |
3 files changed, 162 insertions, 0 deletions
diff --git a/recipes/temper/files/init b/recipes/temper/files/init new file mode 100644 index 0000000000..a5307205cb --- /dev/null +++ b/recipes/temper/files/init @@ -0,0 +1,32 @@ +#! /bin/sh +# temper - simple init.d temper fan control script - tim.ellis@foonas.org +set -e + +if [ ! -f /usr/sbin/temper ]; then + echo -n "Warning: temper fan control script not found. Shutting down" + shutdown -h now + exit -1 +fi + +case "$1" in + start) + echo -n "Starting temper: " + start-stop-daemon -S -b -n temper -a /usr/sbin/temper + echo "done" + ;; + stop) + echo -n "Stopping temper: " + start-stop-daemon -K -n temper >&- 2>&- & + echo "done" + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: temper { start | stop | restart }" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/recipes/temper/files/temper b/recipes/temper/files/temper new file mode 100755 index 0000000000..16d7d98bef --- /dev/null +++ b/recipes/temper/files/temper @@ -0,0 +1,111 @@ +#!/bin/sh +# /usr/sbin/temper - Thecus F75375 fan control script +# +# v1: From community n2100 fan control script (who is the author?) +# v2: Moved to a separate n1200 version +# v3: Hacked to work on both n1200 and n2100 + +# Fan controller +F75375=`find /sys -name 0-002e | grep i2c-0` +PWM1=$F75375/pwm1 + +# Chip temperature values, maximum allowed temp. and temp. log threshold +CHIPS=$F75375/temp?_input +TC_CRIT=70 +TC_MAX=60 +TC_THRESH=55 + +# Disk devices and maximum allowed temp. and temp. log threshold +DISKS=/dev/sd? +TD_CRIT=70 +TD_MAX=60 +TD_THRESH=55 + +# Fan device, lowest PWM value and control range +FAN=$F75375/pwm1 +FAN_MIN=0 +FAN_RNG=140 + +# Minimum temp +TMP_MIN=32 + +# Logging interval, in minutes. Keep this above the hard disk spin +# down time this will only log when above log thresholds(s) +LOG=1 + +# Enable the fan +echo 1 > $F75375/pwm1_enable + +echo $$ > /var/run/temper.pid + +while true ; do +i=0 +while [ $i -lt $LOG ] ; do + i=$(($i+1)) + # read the disk temperatures every minute + TD=0 + for D in $DISKS ; do + t=$(hddtemp -q -n $D) + if [ $t -gt $TD ] ; then + TD=$t + fi + done + + j=0 + while [ $j -lt 6 ] ; do + j=$(($j+1)) + # read the chip temperatures every 10 seconds + TC=0 + for C in $CHIPS ; do + t=$(($(cat $C)/1000)) + if [ $t -gt $TC ] && [ $t -lt 255 ]; then + TC=$t + fi + done + + FC=$(((($TC-$TMP_MIN)*$FAN_RNG)/($TC_MAX-$TMP_MIN)+$FAN_MIN)) + + if [ $TC -gt $TC_MAX ] ; then + FC=255 + elif [ $FC -gt $(($FAN_MIN+$FAN_RNG)) ] ; then + FC=$FAN_MAX + elif [ $FC -lt $FAN_MIN ] ; then + FC=$FAN_MIN + fi + + FD=$(((($TD-$TMP_MIN)*$FAN_RNG)/($TD_MAX-$TMP_MIN)+$FAN_MIN)) + + if [ $TD -gt $TD_MAX ] ; then + FD=255 + elif [ $FD -gt $(($FAN_MIN+$FAN_RNG)) ] ; then + FD=$FAN_MAX + elif [ $FD -lt $FAN_MIN ] ; then + FD=$FAN_MIN + fi + + if [ $FC -gt $FD ] ; then + F=$FC + else + F=$FD + fi + + if [ "$1" = "-m" ] ; then + echo "chips $TC disks $TD -> fan $F" + exit 0 + fi + echo $F >$FAN + # echo 0 >$PWM1 + + sleep 10 + done + +done + +# If we are over our mid range tempterature thresholds log to syslog +if [ $TC -gt $TC_THRESH ] || [ $TD -gt $TD_THRESH ] ; then + logger -p daemon.notice temper "- chips $TC, disks $TD -> fan $F" +fi + +done + +# EOF diff --git a/recipes/temper/temper_0.0.1.bb b/recipes/temper/temper_0.0.1.bb new file mode 100644 index 0000000000..2d6679dc9b --- /dev/null +++ b/recipes/temper/temper_0.0.1.bb @@ -0,0 +1,19 @@ +DESCRIPTION = "A fan control script for the Thecus n1200 or n2100" +SECTION = "console/network" +PR = "r1" +LICENSE = "GPL" +COMPATIBLE_MACHINE = "(n1200|n2100)" +RDEPENDS = "hddtemp" + +SRC_URI = "file://temper \ + file://init" + +inherit update-rc.d + +INITSCRIPT_NAME = "temper" +INITSCRIPT_PARAMS = "defaults" + +do_install() { + install -D -m 0755 ${WORKDIR}/temper ${D}/usr/sbin/temper + install -D -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/temper +} |