AR300M firmware version reset to 2.26 after failed update

I’ve tried to update my GL-AR300M from version 3.something to version 3.216 but after the process finished I found that the router is at 2.26 and boots from the NOR flash (df -h shows 6.8M available). Trying to flash from the admin UI fails with:

Error: Firmware is not for this hardware.

Trying to flash from uboot web UI from the NAND section also fails with:

Something went wrong during update
Probably you have chosen wrong file (too big or too small) or you were trying to update ART on device with unknown FLASH type (and size) which is not allowed. Please, try again or contact with the author of this modification. You can also get more information during update in U-Boot console.

What are my options? How do I flash 3.216 to the NAND flash?

Edit: after updating U-Boot the 3.216 firmware was flashed but after restart the router again starts in version 2.26.

You can try this:

I do not work for and I am not directly associated with GL.iNet

fw_printenv gives:

bootcount=0
boot_dev=off

BTW it worked fine booting from the NOR before the update. Really strange. Here’s my fw_printenv output:

bootargs=board=CUS531-NAND console=ttyS0,115200  ubi.mtd=5,2048 root=/dev/mtdblock8 mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),128k(reserved),64k(art);spi0.1:2m(kernel),20m(rootfs),106m(data),22m@0x0(firmware) rootfstype=squashfs,jffs2 noinitrd
bootdelay=1
baudrate=115200
ethaddr=...
ipaddr=192.168.1.1
serverip=192.168.1.2
loadaddr=0x80800000
dir=
bootlimit=3
altbootcmd=run blf
blf=bootm 0x9f050000 || run lf; boot
dlf=if ping 192.168.1.2; then echo ok; elif ping 192.168.1.2; then echo ok; elif ping 192.168.1.2; then echo ok; elif echo ping 192.168.1.2; then echo ok; elif echo ping 192.168.1.2; then echo ok; else echo ping finally failed; fi; tftp 0x81000000 openwrt-ar71xx-nand-gl-ar300m-ubi.img && nand erase && nand write $fileaddr 0 $filesize
wlf=if nand bad; then nand erase && nand write $web_fileaddr 0 $web_filesize; else erase 0x9f050000 +e30000 && cp.b $web_fileaddr 0x9f050000 $web_filesize; fi; erase 0x9f040000 +0x10000
rlf=if ping 192.168.1.2; then tftp 0x80060000 ${dir}openwrt-gl-ar300m.bin && erase 0x9f050000 +$filesize && cp.b $fileaddr 0x9f050000 $filesize; else echo ping 192.168.1.2 failed; fi
boot_dev=off
lu=tftp 0x80060000 ${dir}uboot_for_gl-ar300m.bin && erase 0x9f000000 +50000 && cp.b $fileaddr 0x9f000000 $filesize; reset
lf=if ping 192.168.1.2; then tftp 0x80060000 ${dir}openwrt-gl-ar300m.bin && erase 0x9f050000 +$filesize && cp.b $fileaddr 0x9f050000 $filesize; if nand bad; then run dlf; fi; else echo ping 192.168.1.2 failed; fi
lc=if ping 192.168.1.2; then tftp 0x81000000 config.bin && cp.b 0x9fff0040 0x81000040 0xffc0 && cp.b 0x81000000 0x81001002 0x06 && erase 0x9fff0000 +0xffff && cp.b 0x81000000 0x9fff0000 0xffff; else setenv bootcount 1 && saveenv && bootm 0x9fe80000; fi
bootcmd=bootm 0x9f050000
stdin=serial
stdout=serial
stderr=serial
ethact=eth0
bootcount=0

Is there a log I can check to see what’s going on?

Do you have the uboot console output during booting?

I don’t. Do I need a serial connection to get it?

Yes you do. It is not difficult. Can you try?

I had a similar problem.
After many hours of trying this and that I was able to get it done by flashing vanilla openwrt first and then installing gl-inet 4.x through openwrt.
That was the only way to break out of the issue.

Now any attempt I make to reinstall 3.215 bricks the device.
I’m glad I wanted 4.0 on this thing anyway.

1 Like