What's new

Router temperatures

  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

Okay, I get that this thread is separated out from the beta as just noise.

This thread is just about the 86U.

This thread is just about the changes some see in .2B, and I assume not because of anything to do with the Merlin beta, but perhaps something new in the GPL we are first seeing in the beta.

Maybe there is something Asus changed. In the .1 beta, these issues in the 86U led to the discovery that Asus had disabled the CPU_Wait setting, which Merlin then reverted for his fork.

Without that change, and with whatever was going on before, simple extrapolation suggests I would be CPU limited at 100C.

This could be my own 86U, or it could also be everything I've thrown on it, and most likely the latter. For an indeterminate period I am 4000 km from my router, so I can't explore whether, for example, this might be due to the implementation of cake in the beta vs the entware version, or the change in stock, or whether this would be improved without so many addons.

I have absolutely no change in temps on both my AC86U with 386.2 beta as expected. Hovering between 75-81. The AIMesh AC86U node sitting on 66.5
 
Last edited:
Fan speed adjusted based on temperature -
I installed a fan in my raspberry pi and it uses an external sensor as well as the onboard sensor to control the fan speed. The same setup could be used to control the fan attached to a router by adding another sensor or even by reading the temperature from the router gui. You could even make it run from the router using a raspberry pi zero with a usb shim, although I do suggest an external power supply.

The script reads the temperature and adjusts the fan speed to keep noise at a minimal level.

Python script
Code:
#!/usr/bin/python
# Python script that uses multiple sources to determine the CPU and enclosure temperature
# and adjust the fan speed automatically

# Load system libraries
import RPi.GPIO as GPIO # Required to access the GPIO pin for PWM control.
import time             # Required for the loop delay. [time.sleep]
import datetime         # Required for date and time strings
import sys              # Required for CTRL-C clean exit. [sys.exit]
import os               # Required for secondary CPU temperature extraction. [os.open]
import smbus            # Required to read the sensor temperature

# User Configuration Settings
FAN_PIN     = 12        # BCM pin used to drive the fan control.
WAIT_TIME   = 30        # Time, in seconds, to wait between each loop cycle.

fanSpeedMin = 36        # Minimum fan speed. Must be greater than 0. Use the calibration utility to get this value.
fanSpeedMax = 100       # Maximum fan speed. Set to limit noise otherwise leave at 100. Maximum 100.
cpuTempMin  = 45        # Temperature at which to start the fan. Minimum 1.
cpuTempMax  = 60        # Temperature at which fan should run at [fanSpeedMax] speed. Maximum 70 (for safety).

diagCon     = 0         # Set to [1] to enable diagnostic output to the console. [0] to diable.
diagLog     = 1         # Set to [1] to enable diagnostic output to a log file. [0] to diable.
fanStatusLog = "/tmp/fanStatus" # Diagnostic Log file path and filename.

# I2C Temperature LM75 sensor onboard Fan/power hat
# i2cdetect -y 1
#     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
#00:          -- -- -- -- -- -- -- -- -- -- -- -- --
#10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --     <- 0x48 LM75 Temperature Sensor
#50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --     <- 0x68 DS3231 RTC Module
#70: -- -- -- -- -- -- -- --
checkLM75     = 1               # Enable (1) or disable (0) the LM75 sensor check
sensorAddress = 0x48            # I2C Address of the temperature sensor
tempRegister  = 0               # In progress
I2Cbus        = smbus.SMBus(1)  # 0 or 1 depending on the RPi. 0=/dev/i2c-0 1=/dev/i2c-1

# End of typical user configuration. Changing the code below may result in unexpected behaviour.

# Initialize runtime variables
PWM_FREQ    = 50        # [Hz] Do not change. See documentation.
cpuTemp     = 0         # CPU Temperatue
cpuTempOld  = 0         # CPU Temperature on the last cycle
fanSpeed    = 0         # Fan Speed
fanSpeedOld = 0         # Fan Speed on the last cycle
fanRunning  = 1         # Boolean to store if the fan is running or not

def regdata2float (regdata):
   return (regdata / 32.0) / 8.0

def getCPUtemp1():
   if (diagCon): print "Trying to acquire CPU Temperature (Primary)."
   if (diagLog): fileLog.write ( "Trying to acquire CPU Temperature (Primary).\n" )
   cpuTempFile = open("/sys/class/thermal/thermal_zone0/temp","r") # Open system file Read-Only
   cpuTemp1 = int(float(cpuTempFile.read())/1000) # Retrieve the system temperature value
   cpuTempFile.close() # Close the system file
   return cpuTemp1

def getCPUtemp2():
   if (diagCon): print "Trying to acquire CPU Temperature (Secondary)."
   if (diagLog): fileLog.write ( "Trying to acquire CPU Temperature (Secondary).\n" )
   cpuTemp2 = os.popen('vcgencmd measure_temp').readline()
   return float(cpuTemp2.replace("temp=","").replace("'C\n",""))

def getSensorTemp(self):
   # Read the temperature from the I2C LM75 sensor
   if (diagCon): print "Trying to acquire LM75 Sensor Temperature."
   if (diagLog): fileLog.write ( "Trying to acquire LM75 Sensor Temperature.\n" )
   raw = I2Cbus.read_word_data(sensorAddress, tempRegister) & 0xFFFF
   raw = ((raw << 8) & 0xFF00) + (raw >> 8)
   ret = regdata2float(raw)
   if (diagCon): print "LM75 Sensor Temperature is ", ret, "C"
   if (diagLog): fileLog.write ( "LM75 Sensor Temperature is " + str(ret) + " C\n" )
   return ret

# Verify the configuration values
if ((cpuTempMin >= cpuTempMax) or (cpuTempMin < 1) or (cpuTempMax > 70)):
    print "Invalid cpuTempMin or cpuTempMax value has been configured. Please read the documentation. Aborting."
    exit(0)
if ((fanSpeedMin >= fanSpeedMax) or (fanSpeedMin < 0) or (fanSpeedMax > 100)):
    print "Invalid fanSpeedMin or fanSpeedMax value has been configured. Please read the documentation. Aborting."
    exit(0)

# Initialize the GPIO subsystem
GPIO.setmode(GPIO.BCM)
GPIO.setup(FAN_PIN, GPIO.OUT, initial=GPIO.LOW)
GPIO.setwarnings(False)
fan = GPIO.PWM(FAN_PIN,PWM_FREQ)
fan.start(0);

# Main runtime loop
try:
    while (1): # Repeat until CTRL-C is pressed.

        # Reset variables at beginning of loop
        cpuTemp = 0
        now = datetime.datetime.now()
        timeNow = now.strftime("%Y-%m-%d %H:%M:%S")
        if (diagCon): print  timeNow
        if (diagLog):
           fileLog = open(fanStatusLog,"w")
           fileLog.write ( timeNow + "\n" )

        # Try method 1 to acquire CPU Temperature
        cpuTemp = getCPUtemp1()

        # If method 1 failed, try method 2 to get CPU temperature
        if ((cpuTemp <= 0) or (cpuTemp > 120)):
            cpuTemp = getCPUtemp2()

        # Check to make sure we have a reasonable CPU temperature to work with
        if ((cpuTemp <= 0) or (cpuTemp > 120)):
            print "Unable to read the CPU Temperature [cpuTemp]. Incompatible system architecture or Linux version. Aborting."
            exit(0)
        if (diagCon): print "CPU Temperature: ", cpuTemp
        if (diagLog): fileLog.write ( "CPU Temperature: " + repr(cpuTemp) + "\n" )

        # Calculate the appropriate fan speed based on the current CPU temperature
        if (cpuTemp > cpuTempMin):
           cpuTempPerc = (((cpuTemp - cpuTempMin) * 100) / (cpuTempMax - cpuTempMin))
           fanSpeed = (((fanSpeedMax - fanSpeedMin) * cpuTempPerc ) / 100 ) + fanSpeedMin
           if (diagCon): print "Calculated cpuTempPerc:", cpuTempPerc, "% fanSpeed:", fanSpeed
           if (diagLog): fileLog.write ( "Calculated cpuTempPerc: " + str(cpuTempPerc) + "% fanSpeed: " + str(fanSpeed) + "\n" )

        # Enforce maximum fan speed
        if ((fanSpeed > fanSpeedMax) or (cpuTemp >= cpuTempMax)):
           if (diagCon): print "Setting fanSpeed [", fanSpeed, "] -> fanSpeedMax [", fanSpeedMax, "] based on fanSpeedMax or cpuTempMax"
           if (diagLog): fileLog.write ( "Setting fanSpeed [" + str(fanSpeed) + "] -> fanSpeedMax [" + str(fanSpeedMax) + "] based on fanSpeedMax or cpuTempMax\n" )
           fanSpeed = fanSpeedMax

        # If fanSpeed is at or below the minimum, stop the fan
        if (((fanSpeed < fanSpeedMin) or (cpuTemp <= cpuTempMin)) and (fanRunning != 0)):
           if (diagCon): print "Changing Duty Cycle [", fanSpeedOld, "] -> [Off] Cooling not required."
           if (diagLog): fileLog.write ( "Changing Duty Cycle [" + str(fanSpeedOld) + "] -> [Off] Cooling not required\n" )
           fanSpeed = fanSpeedMin
           fanSpeedOld = fanSpeedMin
           fanRunning = 0
           fan.ChangeDutyCycle(100)

        # If the calculated speed is different from the last cycle, set the fan speed
        if ((fanSpeed != fanSpeedOld)):
           if (diagCon): print "Changing Duty Cycle [", fanSpeedOld, "] -> [", fanSpeed, "]"
           if (diagLog): fileLog.write ( "Changing Duty Cycle [" + str(fanSpeedOld) + "] -> [" + str(fanSpeed) + "]\n" )
           fanRunning = 1
           fan.ChangeDutyCycle(100-fanSpeed)

        fanSpeedOld = fanSpeed               
        if (checkLM75): getSensorTemp(I2Cbus)

        # Wait until the next loop cycle
        if (diagCon): print
        if (diagLog): fileLog.close()
        time.sleep(WAIT_TIME)

# If a keyboard interrupt occurs (ctrl + c), set the GPIO to 0 and exit the program.
except(KeyboardInterrupt):
    print "Fan speed control script interrupted by the user. CTRL-C was pressed."
    GPIO.cleanup()
    if not fileLog.closed: fileLog.close()
    sys.exit()
 

Attachments

  • rpi fan.pdf
    236.9 KB · Views: 182
Last edited:
I have absolutely no change in temps on both my AC86U with 386.2 beta as expected.
Same, 68C idle , room temp:22c
Edit: 2,4 ghz disabled , dont need it
1616253836572.png
 
Last edited:
Yeah the temp issue seems to be fine on Aimesh nodes or AP mode units...

Oh, how I wish I could say the same...

Screenshot_2021-03-15 ASUS Wireless Router RT-AC86U - Temperature.png



It's barely doing anything. It's early in the morning, I'm browsing SNB with a freshly brewed cup of coffee and my son is watching YT in his bed. I'm connected from my laptop through a Secure Core VPN (running on my laptop), my son isn't.

Screenshot_2021-03-15 ASUS Wireless Router RT-AC86U - Network Map.png


Before 386.2 beta 1 everything was back to 'normal', but since I installed the beta temperature has risen again to above 90 degrees Celcius.

Hopefully the fans arrive today (probably won't be Noctua, but cheapass Chinese stuff, but hey, it's a start). And gotta find myself a separate USB power supply for the fans and and extension cord with multiple sockets.
 
Oh, how I wish I could say the same...

View attachment 31989


It's barely doing anything. It's early in the morning, I'm browsing SNB with a freshly brewed cup of coffee and my son is watching YT in his bed. I'm connected from my laptop through a Secure Core VPN (running on my laptop), my son isn't.

View attachment 31990

Before 386.2 beta 1 everything was back to 'normal', but since I installed the beta temperature has risen again to above 90 degrees Celcius.

Hopefully the fans arrive today (probably won't be Noctua, but cheapass Chinese stuff, but hey, it's a start). And gotta find myself a separate USB power supply for the fans and and extension cord with multiple sockets.
Welp, it's pretty bad huh.... I think those cheap chinese usb fans are enough. Atleast that's my approach since they are cheap and well it has an inbuilt filter (which I don't know if it's cleanable) . After a year or so I'll prob just replace em.

Still waiting on shipping so yeah, hoping it's not gonna be loud...
 
Still waiting on shipping so yeah, hoping it's not gonna be loud...
I ordered mine yesterday at Amazon.nl (which delivers from Amazon Germany, most of the time, as we don't have any local warehouses yet) and they should be delivered to my doorstep before 8 pm. As installation sees quite straightforward I'm curious to see the results. Still can't believe I'm doing this though, but it's a lot cheaper then buying a new RT-AC86U which I happen to like very much.
 
I ordered mine yesterday at Amazon.nl (which delivers from Amazon Germany, most of the time, as we don't have any local warehouses yet) and they should be delivered to my doorstep before 8 pm. As installation sees quite straightforward I'm curious to see the results. Still can't believe I'm doing this though, but it's a lot cheaper then buying a new RT-AC86U which I happen to like very much.
Nah, new AC86U won't change a thing. Mine was a new 2020 unit. Mid to end 2020. And I'm having the same temp issue only from firmwares after 384.19 ... So yeah I think it's just because of bad Asus thermal management in the hardware and now because of changes in software it just made it worse.. as I said mine used to be about 70 to 80 which is fine since i don't have to worry about thermal throttling etc. But now? It could go to 95C lol. And a little after that it'll prob throttle by disabling the other cpu when it reaches 99C
 
Nah, new AC86U won't change a thing. Mine was a new 2020 unit. Mid to end 2020. And I'm having the same temp issue only from firmwares after 384.19 ... So yeah I think it's just because of bad Asus thermal management in the hardware and now because of changes in software it just made it worse.. as I said mine used to be about 70 to 80 which is fine since i don't have to worry about thermal throttling etc. But now? It could go to 95C lol. And a little after that it'll prob throttle by disabling the other cpu when it reaches 99C

I meant, if I need to replace it... The fans were only 14 euros with free prime shippping ( ~17 USD). A new RT-AC86U unit costs here at least 140 euro's ( ~167 USD). I can buy myself a bunch of fans for that same money. Well, I did get a confirmation from DHL that they should be delivered before 8 pm tonight, so we'll have to wait and see. I hope the double-sided tape is a bit decent, otherwise I might order some selfadhesive velcro which hopefully has a positive effect on any possible noise from the fans.
 
I disabled 2.4Ghz most of the week via scheduler (only for an old HP printer and Android tablet) and I get 4 °C less on my RT-AC88U (384.19 "vanilla" / no script or VPN yet) : 2.4 GHz: disabled - 5 GHz: 40°C - CPU: 68°C

I will report on 386.2 as soon as it is out of beta. Cheerz'
 
If somebody wants - here is my fan holder, that I made for my AC3100. It is placed using two-sided adhesive on top of the router (easy to remove if needed, for ex. to sell the router), - blows into the triangle hole (most effective place for air intake, as it is going directly through all of the heatsinks on the board). Using it with 90mm Noctua NF-A9x14 on half rotation speed
This is STL for 3D print
 

Attachments

  • asus_cooler.jpg
    asus_cooler.jpg
    98.4 KB · Views: 155
Hello everybody

I decided to disassembly my RT-AC86U in order to inquire the problem.
Even tough fans work as a temporary solution, personally I don't like.

Well, I confirm what said from other people: CPU thermal pad is 3mm thick.
I'm not a professional technician, now I'm going to order some other thermal pad or copper cuscions if I find them.

However, I noticed that the screws holding the dissipator were slightly loose.

I'm keeping the router literally open (without the front cover) in order to make the mod.

With screws tightened, and without cover, CPU temperature dropped from 96°C to 68°C!
 
With screws tightened, and without cover, CPU temperature dropped from 96°C to 68°C!
Fascinating. If you put the cover back on, any change?
 
However, I noticed that the screws holding the dissipator were slightly loose.
With screws tightened, and without cover, CPU temperature dropped from 96°C to 68°C!
Morning. Please post your results. Not having the screws tightened points to a marginal assembly process and if there's not excellent contact even with those pads, heat transfer is way impacted. I've not opened my AC86U or AX86U units b/c I usually sell them when I waterfall them outta the setup and use the Noctua fans. If you have tips on disassembly or a post, that would be cool b/c I have one of the AC86U offline right now and could open it to check out those 3-4mm pads! Yikes - a build assembly and too high tolerance factory assembly compromise?
 
I hope the double-sided tape is a bit decent, otherwise I might order some selfadhesive velcro which hopefully has a positive effect on any possible noise from the fans.
I've used the 3M branded "Industrial" Velcro for other projects and it works well too - stuff won't budge. The Noctua PFX models come with integrated vibration corners and "little feet" which help with vibrations. The reason I went with the encircling velcro straps is b/c some of these 3M adhesives are designed not to be removed easily. I've not tried those "no-damage" ones on a router though. Real 3M (not counterfeit) adhesives like the VHB are reliable especially if you clean the surfaces with alcohol beforehand and mind the thermal ranges.
 
  • Like
Reactions: MvW
I've followed the AC86U temperature saga for a while, any maybe commented once. I don't look at my temps often, and I'm not really concerned, however I've not found a reason behind my large temp variations (stable at 81C and then for no apparent reason, at other times, holds at 89/90C) - UNTIL NOW.

TL;DR - It's a happens when all 4 LAN ports in use and running at 1GB. Turning on EEE makes huge difference

1615815988197.png


Test Environment - All 4 LAN ports in use, all 1000MBit. ISP - 600Down, 20Up
#1 - Turn on EEE - pwr config --eee on
#2 - Ran SpeedTest using Ookla Win 10 app
#3 - Ran SpeedTest using Ookla Win 10 app (just to prove usage = increase in heat)
#4 - Disconnected LAN cables from Ports 2 & 3. (#1 is my main rig and #4 is to another switch)
#5 - Disabled EEE - pwr config --eee off
#6 - Reconnected LAN cable to port #2
#7 - Reconnected LAN cable to port #3
#8 - Reenabled EEE

So in summary - reduction of about 7-9 degrees.

The more ports in use, the better result EEE provides
When EEE is enabled, long high-speed activity on the LAN generates heat
Unplugging cables when EEE is enabled provides no benefits
When EEE is disabled, heat increases as a proportion to the number of ports in use, as well as the speed negotiated - 1GBs hotter than 100mbps)
EEE seems to be an answer for most of us who's LAN ports are not constantly hammered
EEE probably won't help if multiple LAN ports are constantly crushing it
 
Last edited:
Very limited, but enough to have an idea. Thermal pads can be replaced easily with copper shims. ... In general I don't recommend opening this unit. Just good air circulation around it is okay for most users. My suggestion is pointing the air flow at the very bottom of the unit just above the stand. This is where the bottom vent holes are. The air is forced there and goes up through the unit and out from the vents around the antennas. This air flow will take away the most heat from inside the unit.
I located the FCC interior photos. I see where and how any copper shimming would have to work. The distances between the RF shielding/caging and the larger heat-sink is the huge gap so I see why they opted for the pads... otherwise the tolerances for that AL heat-sink would have to be higher, much more highly customized and likely expensive. Opening the router to tighten the screws - though might be something to consider.

Simplest seems like you said - supplement with small fans!

https://fccid.io/MSQ-RTACHN00/Internal-Photos/Internal-Photos-3365350
 
I've followed the AC86U temperature saga for a while, any maybe commented once. I don't look at my temps often, and I'm not really concerned, however I've not found a reason behind the my large temp variations (stable at 81C and then for no logic, at other time, holds at 89/90C) UNTIL NOW.

TL;DR - It's a combination of the number of 4 LAN ports in use. Turning on EEE makes huge difference

View attachment 31997

Test Environment - All 4 LAN ports in use, all 1000MBit. ISP - 600Down, 20Up
#1 - Turn on EEE - pwr config --eee on
#2 - Ran SpeedTest using Ookla Win 10 app
#3 - Ran SpeedTest using Ookla Win 10 app (just to prove usage = increase in heat)
#4 - Disconnected LAN cables from Ports 2 & 3. (#1 is my main rig and #4 is to another switch)
#5 - Disabled EEE - pwr config --eee on
#6 - Reconnected LAN cable to port #2
#7 - Reconnected LAN cable to port #3
#8 - Reenabled EEE

So in summary - reduction of about 7-9 degrees.

The more ports in use, the better result EEE provides
When EEE is enabled, long high speed activity on the LAN generates heat
Unplugging cables when EEE is enabled provides no benefits
When EEE is disabled, heat increases as a proportion to the number of ports in use
EEE seems to be an answer for most of us who's LAN ports are not constantly hammered
EEE probably wont help if multiple LAN ports are constantly crushing it
Yeah but are there any reasons why Asus kept it disabled on these new firmwares? There must be a reason right? On why Asus disabled EEE on AC86U?
 
The typical reason to disable these "green" settings is to drive the pHW closer to it's capacity and to reduce latencies which can be 100's of us-ms to wake up from sleeping... I've written about this "mis-conception" in the computer industry for the past 10+ years. In one paper I showed that we can gain 30% in performance/capacity by disabling all these "BIOS power-saving" settings. And before anyone screams "green...." I also calculated that those power savings alone would take 30+ years of running to recover that power costs vs. purchasing another 30% in additional pHW to handle those same workloads. All this sleeping - ain't all it's cracked up to be. This is getting a bit off topic, so I'll stop. ;)

That's my gut thought or either ASUS just messed up some coding and never meant to make that change or they were handling some thermal mgt issues to remain in tolerances. Stay safe, stay alive. Peace.
 
Last edited:
I have also a temperature problem with my AX58U.
Not the CPU temp, witch is correct but the 2.4GHz chipset.
It jumps randomly to 76°C and the the speed of the 2.4 network becomes very low.
It is always 76°C no matter what the room temperature is. Sometimes all is OK for more than 24 hours, and sometimes the problem occurs quasi hourly.
A small change in the WiFi parameters (BW from 20 to 20/40 for example) and the temperature returns to normal.
I have this problem with all 386 firmwares (beta,alpha or release). With 384.19 i never noticed this behaviour. Sometimes it returns to normal
without doing anything. As you can see I could capture this behaviour. Most of the time once it displays 76°C I must do something with the parameters to return to normal.
When it happens a few times a day, it is rather annoying.

Screenshot_2021-03-15 ASUS Wireless Router RT-AX58U - Temperature.png
 
^^^ That certainly is atypical of every router I've owned. I've never seen the 2.4GHz radio be hotter than the pCPUS. I don't own that model though. Have you verified nothing is blocking any vents (not trying to be a smarta$$) ? If all good, then I'd suspect a thermal pad is missing or maybe dislodged or all of the above discussions. The chips will slowdown/idle to protect themselves typically. That graph seems very odd.
 
Last edited:

Similar threads

Support SNBForums w/ Amazon

If you'd like to support SNBForums, just use this link and buy anything on Amazon. Thanks!

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top