Axt1800 running hot, 75C

@nopro404 Is there any extra option/coefficient to increase fan speed from its “basic” values during that schedule? Where we can find the initial logic of it?

Sorry, I don’t follow. the default values from gl_fan from its usage output

root@GL-AXT1800:~# gl_fan -help
gl_fan: unrecognized option: h
Usage: gl_fan [option]
          -t temperature   # expected CPU temperature, default is 90
          -p proportion    # Proportion parameter in PID algorithm, default is 10
          -i integration   # integration parameter in PID algorithm, default is 2
          -d differential  # differential parameter in PID algorithm, default is 10
          -s               # print fan speed
          -v               # verbose

If you want it to to spin faster earlier you can set the temperature lower, and use the I and D values I posted earlier. Or play with the values to see what you like.

Hope thats helpful.

EDIT: Just updated to 2020-08-08 4.01 beta 5 and they lowered the default temp to 85.

1 Like

as i am working on my tmux/bash skills, i created a very simple script,
to display these current values on the tmux status bar, once per second

  • temperature
  • speed
  • state

and scripts to change the fan speed.

— fan.stop.sh stop the fan
— fan.max.sh set fan to max speed
— fan.custom.sh set fan to custom speed, valid values from 0 to 255

and stress.sh to max out the the cpu, which will raise the cpu temp

in .tmux.conf

set -g status-interval 1
set -g status-right "#(~/scripts/temp/fan.stats.sh)"

and for ~/scripts/temp/fan.stats.sh

#!/bin/sh
temp=`cat /sys/class/thermal/thermal_zone0/temp`
speed=`gl_fan -s`
state=`cat /sys/class/thermal/cooling_device0/cur_state`
printf "temp:$temp speed:$speed state:$state"

and four .sh scripts:
fan.stop.sh

#!/bin/sh
echo 0 > /sys/class/thermal/cooling_device0/cur_state
cat /sys/class/thermal/cooling_device0/cur_state

fan.max.sh

#!/bin/sh
echo 255 > /sys/class/thermal/cooling_device0/cur_state
cat /sys/class/thermal/cooling_device0/cur_state

fan.custom.sh

#!/bin/sh
echo $1 > /sys/class/thermal/cooling_device0/cur_state
cat /sys/class/thermal/cooling_device0/cur_state

stress.sh

#!/bin/sh
stress-ng --matrix 0 -t 5m
3 Likes

now, thanks to your help, i got where i need to be,
to be able to perform a cpu/temperature torture test of the axt1800.

tl;dr - the router passed the torture test.

in a small closed cardboard box, i placed the following.
— at the bottom of the box, as a heat source, a powered-on raspberry pi4 motherboard.
— on top of the pi4 heatsink, i placed the axt1800.

  1. make sure the gl_fan service is stopped
    /etc/init.d/gl_fan stop
  2. cool the router to get low end temp.
    run fan.max.sh - so that fan speed is approx. 6500RPM and wait 20 minutes
    65°C is the temp of the cpu
  3. heat the router to 90°C
    — run fan.stop.sh, fan speed is 0RPM
    — run stress.sh, to max out cpu and all cores to 100% utilization
  4. now, let’s try to cool the router from 90°C
    note: stress.sh is still running, cpu at 100%
    — run fan.max.sh - fan speed is approx 6500RPM
    and over time, takes 45 minutes to cool down to 70°C

image

1 Like

My AXT1800 is only operating in Access Point mode with my primary workstation running through a wired connection and very few WiFi endpoints connected and was still sitting at 79-80 °

Have just implemented the changes as per nopro404 's suggestion and it’s now running at 60 ° with no excessive fan noise ( 1530rpm) sitting less than 1M away

I did these two commands and the fan started running at a much quieter level than using a value of 255. And the router was running much cooler. :slight_smile: HOWEVER, after two days I noticed the fan was turned off and not running. It seemed to turn off by it’s own. Anyone seeing this type behavior?

I reissued the two commands and will start watching it closely, but I am curious if anyone else is/has experiencing this.

TIA, Jim

That is probably because you need to “commit” these settings via luci, otherwise any reboot of a device will clean that settings up. Nevertheless, I am using another solution, suggested in neighbor thread: it persistent at router’s memory after reboots, launches fan dynamically, adjusts entire system temperature to desired level on the one hand, and not forcing fan to work at max speed all the time, which increase its life a bit on the other. I am using it at my router with active Wireguard client, Synology NAS and about 5-6 devices connected via Wi-Fi, the average temperature of router ~52C which is quite good.

I wrote to support team that suggested threshold at 85C is much more than technical T ranges for motherboard used at AXT1800, so lets see how they handle it. Until that, you can resolve it with commands:

/etc/init.d/gl_fan stop
uci set glfan.@globals[0].temperature='60' 
uci set glfan.@globals[0].integration='4'
uci set glfan.@globals[0].differential='20' 
uci commit glfan 
/etc/init.d/gl_fan restart
1 Like

@wvlad
Thanks and this looks good. Can you tell me what these two lines do and what are the ranges of the numbers 4 & 20 and what these numbers specify?

uci set glfan.@globals[0].integration=‘4’
uci set glfan.@globals[0].differential=‘20’

Thanks!

Please, refer to this post. As far as I understand - these parameters are responsible for “polling” frequency of T in order to “perform” fan to work. I suppose @nopro404 could shed some light onto it.

gl_fan is hard coded to check the temp and set the fan speed only every 20 seconds. For a PID control loop to be effective it needs to read it’s input and adjust it’s output much more frequently. An RC drone for example will sample 1000x a second to be able to stay in flight.

If you want to understand the I and D values read this

Thank you both, @nopro404 & @wvlad. I’ve got it running and stable now. :slight_smile:

the cpu governor on glinet firwmware defaults to performance–change it to ondemand and you will be fine.

1 Like

Hi - tried ondemand, doesn’t make that much of a difference, maybe 1 deg C… Opened Slate AX (AXT1800) CPU throttling feat req · Issue #76 · gl-inet/gl-infra-builder · GitHub