1
1
Fork 0
scripts/hc4_fancontrol.sh

56 lines
1.2 KiB
Bash
Raw Normal View History

2023-09-20 20:37:12 +02:00
#!/bin/bash
2023-09-23 09:21:43 +02:00
#
# Odroid HC4 fan control script
#
# Information (don't touch unless you're me)
AUTHOR="david@socialnerds.org"
VERSION="0.2.0"
LICENSE="GPLv3"
# Configuration
2023-09-20 20:37:12 +02:00
THRESHOLD=42000
2023-09-23 09:21:43 +02:00
DISTANCE=2000
2023-09-20 20:37:12 +02:00
INTERVAL=30
2023-09-23 09:21:43 +02:00
STEPS=(120 160 210 255)
2023-09-20 20:37:12 +02:00
FAN="/sys/class/hwmon/hwmon2/pwm1"
2023-09-23 09:21:43 +02:00
function get_temp() {
local TEMP=($(cat /sys/devices/virtual/thermal/thermal_zone*/temp))
for I in ${TEMP[@]}; do
echo "temp: $I"
done
}
2023-09-20 20:37:12 +02:00
# set fan mode to manual
echo "disabled" | tee /sys/class/thermal/thermal_zone{0,1}/mode > /dev/null
# set fan speed to max if either cpu or ram is above $THRESHOLD
while true; do
TOOHOT=0
FANSPEED=$(cat $FAN)
TEMP=($(cat /sys/devices/virtual/thermal/thermal_zone{0,1}/temp))
for i in ${TEMP[@]}; do
if [ $i -gt $THRESHOLD ]; then
TOOHOT=255
fi
done
if [ $TOOHOT -eq 0 ]; then
if [ $FANSPEED -ne $TOOHOT ]; then
echo 170 > $FAN; sleep 2
echo 120 > $FAN; sleep 2
echo $TOOHOT > $FAN
fi
else
if [ $FANSPEED -ne $TOOHOT ]; then
echo 120 > $FAN; sleep 2
echo 170 > $FAN; sleep 2
echo $TOOHOT > $FAN
fi
fi
# debug output
#echo "temp=${TEMP[@]},speed=$FANSPEED, toohot=$TOOHOT"
sleep $INTERVAL
done