Files
orangepi_coolfan/coolfan-control
2022-12-07 00:57:13 +07:00

59 lines
1.3 KiB
Bash

#!/bin/sh
# Physical | V | Mode | Name | wPi | GPIO
# OrangePi PC
# 8 | 0 | OUT | TXD.3 | 3 | 13
# OrangePi 4 LTS
# 8 | 1 | ALT2 | I2C3_SCL | 3 | 145
# readonly FAN_PIN=13 # OrangePi PC
readonly FAN_PIN=145 # OrangePi 4 LTS
readonly FAN_PATH=/sys/class/gpio/gpio${FAN_PIN}
# readonly FAN_START=48000 # OrangePi PC
# readonly FAN_STOP=40000 # OrangePi PC
readonly FAN_START=58000 # OrangePi 4 LTS
readonly FAN_STOP=50000 # OrangePi 4 LTS
readonly SLEEP_TIME=10
FAN_STATE=0
setup()
{
echo $FAN_PIN > /sys/class/gpio/export
echo "out" > $FAN_PATH/direction
echo 0 > $FAN_PATH/value
}
cleanup()
{
echo 0 > $FAN_PATH/value
echo $FAN_PIN > /sys/class/gpio/unexport
rm /run/coolfan.pid
exit 0
}
setFanState()
{
if [ $(cat $FAN_PATH/value) != $1 ] ; then
echo $1 > $FAN_PATH/value
fi
}
setup
trap cleanup 15
echo $$ > /run/coolfan.pid
while : ; do
TEMP=$(cat /sys/class/thermal/thermal_zone0/temp)
if [ "$TEMP" -ge "$FAN_START" ] && [ $FAN_STATE != 1 ] ; then
FAN_STATE=1
setFanState $FAN_STATE
echo "FAN ON; TEMP: $TEMP"
else
if [ "$TEMP" -le "$FAN_STOP" ] && [ $FAN_STATE != 0 ] ; then
FAN_STATE=0
setFanState $FAN_STATE
echo "FAN OFF; TEMP: $TEMP"
fi
fi
sleep $SLEEP_TIME
done