updated hc4_fancontrol to version 0.2.0
This commit is contained in:
parent
64890504aa
commit
e8822a14f3
|
@ -10,46 +10,59 @@ VERSION="0.2.0"
|
||||||
LICENSE="GPLv3"
|
LICENSE="GPLv3"
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
THRESHOLD=42000
|
THRESHOLD=45000
|
||||||
DISTANCE=2000
|
DISTANCE=1000
|
||||||
INTERVAL=30
|
INTERVAL=10
|
||||||
STEPS=(120 160 210 255)
|
STEPS=(80 120 160 210 255)
|
||||||
FAN="/sys/class/hwmon/hwmon2/pwm1"
|
FAN="/sys/class/hwmon/hwmon2/pwm1"
|
||||||
|
|
||||||
|
# Get all temperature readings and return the highest value
|
||||||
function get_temp() {
|
function get_temp() {
|
||||||
local TEMP=($(cat /sys/devices/virtual/thermal/thermal_zone*/temp))
|
local TEMPS=($(cat /sys/devices/virtual/thermal/thermal_zone*/temp))
|
||||||
for I in ${TEMP[@]}; do
|
local RESULT=${TEMPS[0]};
|
||||||
echo "temp: $I"
|
for TEMP in ${TEMPS[@]}; do
|
||||||
|
if [ $TEMP -gt $RESULT ]; then
|
||||||
|
RESULT=$TEMP
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
echo $RESULT
|
||||||
}
|
}
|
||||||
|
|
||||||
# set fan mode to manual
|
# Get current fan speed
|
||||||
|
function get_speed() {
|
||||||
|
local SPEED=$(cat $FAN)
|
||||||
|
echo $SPEED
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set new fan speed
|
||||||
|
function set_speed() {
|
||||||
|
local CURRENT_SPEED=$(get_speed)
|
||||||
|
local NEW_SPEED=$1
|
||||||
|
if [ $CURRENT_SPEED -ne $NEW_SPEED ]; then
|
||||||
|
echo $NEW_SPEED > $FAN
|
||||||
|
sleep 3
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set fan mode to manual
|
||||||
echo "disabled" | tee /sys/class/thermal/thermal_zone{0,1}/mode > /dev/null
|
echo "disabled" | tee /sys/class/thermal/thermal_zone{0,1}/mode > /dev/null
|
||||||
|
|
||||||
# set fan speed to max if either cpu or ram is above $THRESHOLD
|
# Run loop
|
||||||
while true; do
|
while true; do
|
||||||
TOOHOT=0
|
TEMP=$(get_temp)
|
||||||
FANSPEED=$(cat $FAN)
|
SPEED=$(get_speed)
|
||||||
TEMP=($(cat /sys/devices/virtual/thermal/thermal_zone{0,1}/temp))
|
NEW_THRESHOLD=$THRESHOLD
|
||||||
for i in ${TEMP[@]}; do
|
if [ $TEMP -gt $THRESHOLD ]; then
|
||||||
if [ $i -gt $THRESHOLD ]; then
|
for STEP in ${STEPS[@]}; do
|
||||||
TOOHOT=255
|
if [ $TEMP -gt $NEW_THRESHOLD ]; then
|
||||||
fi
|
NEW_THRESHOLD=$((NEW_THRESHOLD + DISTANCE))
|
||||||
done
|
if [ $SPEED -lt $STEP ]; then
|
||||||
if [ $TOOHOT -eq 0 ]; then
|
set_speed $STEP
|
||||||
if [ $FANSPEED -ne $TOOHOT ]; then
|
fi
|
||||||
echo 170 > $FAN; sleep 2
|
fi
|
||||||
echo 120 > $FAN; sleep 2
|
done
|
||||||
echo $TOOHOT > $FAN
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
if [ $FANSPEED -ne $TOOHOT ]; then
|
set_speed 0
|
||||||
echo 120 > $FAN; sleep 2
|
|
||||||
echo 170 > $FAN; sleep 2
|
|
||||||
echo $TOOHOT > $FAN
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
# debug output
|
|
||||||
#echo "temp=${TEMP[@]},speed=$FANSPEED, toohot=$TOOHOT"
|
|
||||||
sleep $INTERVAL
|
sleep $INTERVAL
|
||||||
done
|
done
|
||||||
|
|
Loading…
Reference in New Issue