Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
117 lines
2.5 KiB
Bash
Executable File
117 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
. /lib/functions.sh
|
|
|
|
dlog() {
|
|
[ $debug = '1' ] && echo "$@" >> /tmp/fanctld.log
|
|
}
|
|
|
|
load_config() {
|
|
|
|
local config_section="config"
|
|
|
|
config_load 'fanctld'
|
|
|
|
config_get enabled "$config_section" Enabled
|
|
config_get fan_gpio "$config_section" Gpio
|
|
config_get debug "$config_section" Debug
|
|
config_get delay "$config_section" Delay
|
|
config_get hit_level "$config_section" Hits
|
|
config_get temp_trip "$config_section" Temp
|
|
config_get temp_hyst "$config_section" Hyst
|
|
}
|
|
|
|
load_config
|
|
|
|
temp_clr=$((($temp_trip)-($temp_hyst)))
|
|
|
|
nss_temp() {
|
|
cat /sys/class/thermal/thermal_zone0/temp
|
|
}
|
|
|
|
cpu_temp() {
|
|
cat /sys/class/thermal/thermal_zone9/temp
|
|
}
|
|
|
|
wifi0_temp() {
|
|
cat /sys/devices/platform/soc@0/c000000.wifi/ieee80211/phy0/hwmon*/temp1_input
|
|
}
|
|
|
|
wifi1_temp() {
|
|
cat /sys/devices/platform/soc@0/c000000.wifi/ieee80211/phy1/hwmon*/temp1_input
|
|
}
|
|
|
|
wifi2_temp() {
|
|
cat /sys/devices/platform/soc@0/c000000.wifi/ieee80211/phy2/hwmon*/temp1_input
|
|
}
|
|
|
|
aqr_temp() {
|
|
cat /sys/devices/platform/soc@0/90000.mdio/mdio_bus/90000.mdio-1/90000.mdio-1:08/hwmon/hwmon*/temp1_input
|
|
}
|
|
|
|
check_temps() {
|
|
|
|
temp1=$(nss_temp)
|
|
temp2=$(cpu_temp)
|
|
temp3=$(($(wifi0_temp)-1000))
|
|
temp4=$(($(wifi1_temp)))
|
|
temp5=$(($(wifi2_temp)-2000))
|
|
temp6=$(($(aqr_temp)-2000))
|
|
|
|
dlog "nss_temp=$temp1 cpu_temp=$temp2 wifi0_temp=$temp3 wifi1_temp=$temp4 wifi2_temp=$temp5 aqr_temp=$temp6"
|
|
|
|
load_config
|
|
|
|
if [ $temp1 -ge $temp_trip -o $temp2 -ge $temp_trip -o $temp3 -ge $temp_trip -o $temp4 -ge $temp_trip -o $temp5 -ge $temp_trip -o $temp6 -ge $temp_trip ]; then
|
|
echo 2
|
|
elif [ $temp1 -le $temp_clr -a $temp2 -le $temp_clr -a $temp3 -le $temp_clr -a $temp4 -le $temp_clr -a $temp5 -le $temp_clr -a $temp6 -le $temp_clr ]; then
|
|
echo 1
|
|
else
|
|
echo 0
|
|
fi
|
|
}
|
|
|
|
fan_status() {
|
|
fanctl status
|
|
}
|
|
|
|
load_config
|
|
|
|
dlog "----- fanctld debug log -----"
|
|
dlog "enabled=$enabled, delay=$delay, hit_level=$hit_level, temp=$temp_trip, hyst=$temp_hyst, debug=$debug"
|
|
|
|
>> /tmp/fanctld.log
|
|
|
|
trip_hits=0
|
|
clr_hits=0
|
|
|
|
while true; do
|
|
sleep $delay
|
|
|
|
result=$(check_temps)
|
|
|
|
if [ $result = '2' ]; then
|
|
trip_hits=$((trip_hits+1))
|
|
elif [ $result = '1' ]; then
|
|
clr_hits=$((clr_hits+1))
|
|
else
|
|
trip_hits=0
|
|
clr_hits=0
|
|
fi
|
|
|
|
if [ $trip_hits -ge $hit_level ]; then
|
|
trip_hits=0
|
|
if [ $(fan_status) = 'disable' ]; then
|
|
fanctl start
|
|
logger -p info -t fanctld "Fan switch on temperature reached ("$temp_trip"), start fan"
|
|
|
|
fi
|
|
elif [ $clr_hits -ge $hit_level ]; then
|
|
clr_hits=0
|
|
if [ $(fan_status) = 'enable' ]; then
|
|
fanctl stop
|
|
logger -p info -t fanctld "Fan switch off temperature reached ("$temp_clr"), stop fan"
|
|
fi
|
|
fi
|
|
done
|