I read here something for the orangepi 5 and the orangepi 5 plus. But i has always without anyproblem running the script below. But it looks like PWM is not working or something? Even if i have enabled the option under device-tree-overlay in armbian-config: rk3588-pwm1-m0.
orangepi5:pwm:# ls
orangepi5:pwm:#
I am running this Armbian version:
orangepi5:/:# neofetch
##### root@orangepi5
####### --------------
##O#O## OS: Armbian 24.11.2 noble aarch64
####### Host: Orange Pi 5
########### Kernel: 6.1.75-vendor-rk35xx
############# Uptime: 14 mins
############### Packages: 1055 (dpkg)
################ Shell: zsh 5.9
################# Terminal: /dev/pts/0
##################### CPU: (8) @ 1.800GHz
##################### Memory: 1901MiB / 7937MiB
#################
What do i wrong?
#!/bin/bash
if [ ! -d /sys/class/pwm/pwmchip1/pwm0 ]; then
echo 0 > /sys/class/pwm/pwmchip1/export
fi
sleep 1
while [ ! -d /sys/class/pwm/pwmchip1/pwm0 ];
do
sleep 1
done
ISENABLE=`cat /sys/class/pwm/pwmchip1/pwm0/enable`
if [ $ISENABLE -eq 1 ]; then
echo 0 > /sys/class/pwm/pwmchip1/pwm0/enable
fi
echo 50000 > /sys/class/pwm/pwmchip1/pwm0/period
echo 1 > /sys/class/pwm/pwmchip1/pwm0/enable
# max speed run 60s
echo 0 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle
sleep 5
echo 50000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle
declare -a CpuTemps=(45000 40000 38000 30000 28000 0)
declare -a PwmDutyCycles=(1000 5000 10000 15000 30000)
while true
do
temp=$(cat /sys/class/thermal/thermal_zone0/temp)
for i in 0 1 2 3 4 5; do
if [ $temp -gt ${CpuTemps[$i]} ]; then
DUTY=${PwmDutyCycles[$i]}
echo $DUTY > "/sys/class/pwm/pwmchip1/pwm0/duty_cycle";
echo "temp: $temp, target: ${CpuTemps[$i]}, duty: $DUTY"
break
fi
done
sleep 1s;