Hardware Factory Reset on Asus RT-N66U

How do you do a hardware factory reset on a RT-N66U?

I tried the usual method, hold the reset button, but no matter how long I hold it for nothing happens. I know this was working prior to flashing openwrt.

If this method no longer works, I suppose I could try one of the other reset/reflash options, but would be nice as the reset button has saved me many times.

if you want to go back to the original firmware see:

https://dlcdnets.asus.com/pub/ASUS/wireless/RT-N66U_B1/FW_RT_N66U_300438252272.zip?model=RT-N66U%20(VER.B1)

if you want to enable the reset button (if it is present on the router) see:

I meant enabling the reset button.

Seems this is a bit more involved than I expected - was hoping to avoid custom scripts and accidentally bricking the unit.

I'll have to set some time aside on another day to read through this. Thanks very much for the quick response.

usually if there is a reset button the developer has already prepared a script that does:

if you create a file for example in the /root partition of the router and then press the reset button it should automatically take you back to a version without the existence of that file

to create the file you can use ssh and/or putty and

touch /root/test-file

Unfortunately I can't be more specific, as my router doesn't have a reset button

with two buttons to which I can however associate the functions most congenial to me

in my case is:

uci show | grep button
system.@button[0]=button
system.@button[0].action='released'
system.@button[0].min='0'
system.@button[0].max='3'
system.@button[0].button='rfkill'
system.@button[0].handler='logger "button WLAN push 0-3s; exec /root/switch_wifi"; /root/switch_wifi'
system.@button[1]=button
system.@button[1].action='released'
system.@button[1].min='30'
system.@button[1].max='100'
system.@button[1].button='rfkill'
system.@button[1].handler='logger "button WLAN push 30-100s; exec /root/repair_network"; /root/repair_network'
system.@button[2]=button
system.@button[2].button='wps'
system.@button[2].action='released'
system.@button[2].min='0'
system.@button[2].max='3'
system.@button[2].handler='logger "button WPS push 0-3s; exec /root/switch_wifi"; /root/switch_wifi'
system.@button[3]=button
system.@button[3].button='wps'
system.@button[3].action='released'
system.@button[3].min='30'
system.@button[3].max='100'
system.@button[3].handler='logger "button WPS push 30-100s; exec /root/repair_network"; /root/repair_network'

There is also a reset script that I didn't use:

cat /etc/rc.button/reset

#!/bin/sh

. /lib/functions.sh

OVERLAY="$( grep ' /overlay ' /proc/mounts )"

case "$ACTION" in
pressed)
        [ -z "$OVERLAY" ] && return 0

        return 5
;;
timeout)
        . /etc/diag.sh
        set_state failsafe
;;
released)
        if [ "$SEEN" -lt 1 ]
        then
                echo "REBOOT" > /dev/console
                sync
                reboot
        elif [ "$SEEN" -ge 5 -a -n "$OVERLAY" ]
        then
                echo "FACTORY RESET" > /dev/console
                jffs2reset -y && reboot &
        fi
;;
esac

return 0

I guess the rt-n66u isn't a common router for openwrt since it has limited support. I'll have to assume that the reset button isn't implemented.

thanks for the helpful pointer though. I've flashed different firmwares many times, but the few times I've bricked something is because I did something custom on the CLI. haha.

I guess in this case, the main risk really is that the script that I bind to the button has something wrong in it. So as long as it calls the right reset command, it should be no different than if I trigger that same command by ssh.

1 Like