CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
orangepi-xunlong

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: orangepi-xunlong/orangepi-build
Path: blob/next/external/packages/blobs/rockchip/pwm-fan.sh
Views: 3960
1
#!/bin/bash
2
3
if [ ! -d /sys/class/pwm/pwmchip0 ]; then
4
echo "this model does not support pwm."
5
exit 1
6
fi
7
8
if [ ! -d /sys/class/pwm/pwmchip0/pwm0 ]; then
9
echo -n 0 > /sys/class/pwm/pwmchip0/export
10
fi
11
sleep 1
12
while [ ! -d /sys/class/pwm/pwmchip0/pwm0 ];
13
do
14
sleep 1
15
done
16
ISENABLE=`cat /sys/class/pwm/pwmchip0/pwm0/enable`
17
if [ $ISENABLE -eq 1 ]; then
18
echo -n 0 > /sys/class/pwm/pwmchip0/pwm0/enable
19
fi
20
echo -n 1000000 > /sys/class/pwm/pwmchip0/pwm0/period
21
echo -n 1 > /sys/class/pwm/pwmchip0/pwm0/enable
22
23
# max speed run 5s
24
echo -n 500000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
25
sleep 5
26
echo -n 500000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
27
28
# declare -a CpuTemps=(55000 43000 38000 32000)
29
# declare -a PwmDutyCycles=(1000 20000 30000 45000)
30
31
declare -a CpuTemps=(75000 63000 58000 52000)
32
declare -a PwmDutyCycles=(500000 650000 800000 950000)
33
34
declare -a Percents=(100 75 50 25)
35
DefaultDuty=999990
36
DefaultPercents=0
37
38
while true
39
do
40
temp=$(cat /sys/class/thermal/thermal_zone0/temp)
41
INDEX=0
42
FOUNDTEMP=0
43
DUTY=$DefaultDuty
44
PERCENT=$DefaultPercents
45
46
for i in 0 1 2 3; do
47
if [ $temp -gt ${CpuTemps[$i]} ]; then
48
INDEX=$i
49
FOUNDTEMP=1
50
break
51
fi
52
done
53
if [ ${FOUNDTEMP} == 1 ]; then
54
DUTY=${PwmDutyCycles[$i]}
55
PERCENT=${Percents[$i]}
56
fi
57
58
echo -n $DUTY > /sys/class/pwm/pwmchip0/pwm0/duty_cycle;
59
60
# echo "temp: $temp, duty: $DUTY, ${PERCENT}%"
61
# cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq
62
63
sleep 2s;
64
done
65
66