Notes to Future-Me


GL.iNet Fan Monitoring Script

Posted:2024-01-18
Tags:GL.iNet

A short script to keep an eye on the fan status of the Slate AX.

Percentage is calculated a bit jankily because shell scripts lack floating point.

The argument to sleep is a bit of a magic number, because changing that will also require updating the running time calculation math.

#! /bin/sh

fan_on=0
fan_polls=0

echo "Starting fan monitoring..."

while true
do
    let fan_polls+=1
    fan_speed=$(cat /sys/class/thermal/cooling_device0/cur_state)

    echo -e -n "\rTime: " 
    echo -n "$(($fan_polls/12)) min   "

    echo -n "Temp: " 
    echo -n "$(cat /sys/devices/virtual/thermal/thermal_zone0/temp)"
    echo -n " C   "             
                                 
    echo -n "Fan: "       
    if [ $fan_speed -gt 0 ]; then
        let fan_on+=1   
        echo -n "ON    "
    else                       
        echo -n "OFF   "                        
    fi                                          
                                                
    echo -n "Duty Cycle: "                  
    echo -n "$(( ($fan_on * 100) / $fan_polls))"
    echo -n "%   "
           
    sleep 5
done