[oe-commits] Tim 'timtim' Ellis : temper: Add temper, a fan control script for the Thecus N1200 and N2100
GIT User account
git at amethyst.openembedded.net
Sat Jan 17 20:20:42 UTC 2009
Module: openembedded.git
Branch: org.openembedded.dev
Commit: cc4b074b50c7b1f223f4c30eed0eb899380bf3f4
URL: http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=cc4b074b50c7b1f223f4c30eed0eb899380bf3f4
Author: Tim 'timtim' Ellis <tim.ellis at foonas.org>
Date: Sat Jan 17 20:18:20 2009 +0000
temper: Add temper, a fan control script for the Thecus N1200 and N2100
---
packages/temper/files/temper | 111 +++++++++++++++++++++++++++++++++++++++
packages/temper/temper_0.0.1.bb | 13 +++++
2 files changed, 124 insertions(+), 0 deletions(-)
diff --git a/packages/temper/files/temper b/packages/temper/files/temper
new file mode 100755
index 0000000..16d7d98
--- /dev/null
+++ b/packages/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/packages/temper/temper_0.0.1.bb b/packages/temper/temper_0.0.1.bb
new file mode 100644
index 0000000..ce4bed0
--- /dev/null
+++ b/packages/temper/temper_0.0.1.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "A fan control script for the Thecus n1200 or n2100"
+SECTION = "console/network"
+PR = "r0"
+LICENSE = "GPL"
+COMPATIBLE_MACHINE = "(n1200|n2100)"
+RDEPENDS = "hddtemp"
+
+SRC_URI = "file://temper"
+
+do_install() {
+ install -d ${D}/usr/sbin
+ install -D -m 0755 ${WORKDIR}/temper ${D}/usr/sbin/temper
+}
More information about the Openembedded-commits
mailing list