mirror of
https://github.com/JDM170/orangepi_coolfan
synced 2025-12-10 05:57:21 +07:00
59 lines
1.3 KiB
Bash
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
|