WARNING -- Do not upgrade pre-release versions of ath79 firmware to GL-AR300M (NAND) images
Versions of ath79 firmware for the GL-AR300M prior to November 15, 2019 are not capable of reliably upgrading directly to the new GL-AR300M (NAND) images.
Upgrade with U-Boot is recommended. U-Boot can be accessed without a serial connection. See https://docs.gl-inet.com/en/3/troubleshooting/debrick/
Direct upgrades may result in the device unexpectedly booting into the “old” NAND-resident system and its configuration. If this is a “stock” OEM system, its default LAN IP is 192.168.8.1.
If the NAND-resident system fails to boot, use U-Boot to install a fresh image.
Any text with a light background (like this one) provides instructions for creating the Details Page. When you have filled in correct/useful information (instead of any template that's there) remove the instructions, as well as the <WRAP>
that encloses it.
<WRAP>
that encloses it.
Find out flash layout, then add the flash layout table here (copy, paste, modify the example).
Please check out the article Flash layout. It contains examples and explanations that describe how to document the flash layout.
This section deals with
Note: Reset router to factory defaults if it has been previously configured.
The suggested way of installing OpenWrt on the GL-AR300M is using the u-boot bootloader. It can be accessed by holding the reset button, powering the device and waiting for 5 flashes of the LED.
Instructions on how to access u-boot can also be found in the debricking instructions: https://docs.gl-inet.com/en/3/tutorials/debrick/.
Then one can release the button, and access u-boot on http://192.168.1.1 which requires a PC with a static IP of 192.168.1.2 and netmask 255.255.255.0
As there exists problems with older version of u-boot that do not accept recent images, an upgrade of u-boot is suggested. This can be performed from http://192.168.1.1/uboot.html
, but will fail on older version, so see at the bottom of this page under notes how to upgrade u-boot from a running system (can be vendor or OpenWrt). AR300M16 models purchased as late a Nov 2024 had an old u-boot: flashing seemed to work fine except that the device ended up in u-boot after each reboot -- upgrading u-boot immediately solved the issue.
Assuming your u-boot is working correctly:
http://192.168.1.1
http://192.168.1.1
if LuCI is installed.You will notice that the router is running in safemode. In order to leave it, one must now flash a regular image factory or sysupgrade (e.g. glinet_gl-ar300m-nand-squashfs-factory.img) from shell or luci. After this second flash, the router will boot normally.
</WRAP>
Enter values for “FILL-IN” below
Bootloader tftp server IPv4 address | FILL-IN |
---|---|
Bootloader MAC address (special) | FILL-IN |
Firmware tftp image | Latest OpenWrt release (NOTE: Name must contain “tftp”) |
TFTP transfer window | FILL-IN seconds |
TFTP window start | approximately FILL-IN seconds after power on |
TFTP client required IP address | FILL-IN |
These are generic instructions. Update with your router's specifics.
http://192.168.1.1/cgi-bin/luci/mini/system/upgrade/
LuCI Upgrade URLIf you don't have a GUI (LuCI) available, you can alternatively upgrade via the command line. There are two command line methods for upgrading:
sysupgrade
mtd
Note: It is important that you put the firmware image into the ramdisk (/tmp) before you start flashing.
cd /tmp wget http://downloads.openwrt.org/snapshots/trunk/XXX/xxx.abc sysupgrade /tmp/xxx.abc
If sysupgrade
does not support this router, use mtd
.
cd /tmp wget http://downloads.openwrt.org/snapshots/trunk/XXX/xxx.abc mtd write /tmp/xxx.abc linux && reboot
→ Basic configuration After flashing, proceed with this.
Set up your Internet connection, configure wireless, configure USB port, etc.
Please fill in real values for this device, then remove the EXAMPLEs
The default network configuration is:
Interface Name | Description | Default configuration |
---|---|---|
br-lan | EXAMPLE LAN & WiFi | EXAMPLE 192.168.1.1/24 |
vlan0 (eth0.0) | EXAMPLE LAN ports (1 to 4) | EXAMPLE None |
vlan1 (eth0.1) | EXAMPLE WAN port | EXAMPLE DHCP |
wl0 | EXAMPLE WiFi | EXAMPLE Disabled |
Please fill in real values for this device, then remove the EXAMPLEs
Numbers 0-3 are Ports 1-4 as labeled on the unit, number 4 is the Internet (WAN) on the unit, 5 is the internal connection to the router itself. Don't be fooled: Port 1 on the unit is number 3 when configuring VLANs. vlan0 = eth0.0, vlan1 = eth0.1 and so on.
Port | Switch port |
---|---|
Internet (WAN) | EXAMPLE 4 |
LAN 1 | EXAMPLE 3 |
LAN 2 | EXAMPLE 2 |
LAN 3 | EXAMPLE 1 |
LAN 4 | EXAMPLE 0 |
→ hardware.button on howto use and configure the hardware button(s). Here, we merely name the buttons, so we can use them in the above Howto.
Please fill in real values for this device, then remove the EXAMPLEs
The GL.iNet GL-AR300M has the following buttons:
BUTTON | Event |
---|---|
EXAMPLE Reset | reset |
EXAMPLE Secure Easy Setup | ses |
EXAMPLE No buttons at all. | - |
Note: This will void your warranty!
The case has no screws. Sticker needs not be removed. Gently pry the sides from the back-cover and pop back-cover open. It's held on with two retaining tabs on front/back, one on antenna sides.
→ port.serial general information about the serial port, serial port cable, etc.
How to connect to the Serial Port of this specific device:
Insert photo of PCB with markings for serial port
Replace EXAMPLE by real values.
Serial connection parameters for GL.iNet GL-AR300M @@Version@@ | EXAMPLE 115200, 8N1 |
---|
→ port.jtag general information about the JTAG port, JTAG cable, etc.
How to connect to the JTAG Port of this specific device:
Insert photo of PCB with markings for JTAG port
None so far.
The switch on the side of the router is not very robust. If it should break a PCM12SMTR can be used to replace the switch.
root@GL-AR300M:~# dmesg [ 0.000000] Linux version 4.9.120 (cc@cc-ubuntu1604) (gcc version 7.3.0 (OpenWrt GCC 7.3.0 r7258-5eb055306f) ) #0 Thu Aug 16 07:51:15 2018 [ 0.000000] bootconsole [early0] enabled [ 0.000000] CPU0 revision is: 00019374 (MIPS 24Kc) [ 0.000000] SoC: Qualcomm Atheros QCA9533 ver 2 rev 0 [ 0.000000] Determined physical RAM map: [ 0.000000] memory: 08000000 @ 00000000 (usable) [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x0000000000000000-0x0000000007ffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x0000000007ffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff] [ 0.000000] On node 0 totalpages: 32768 [ 0.000000] free_area_init_node: node 0, pgdat 80523834, node_mem_map 81000020 [ 0.000000] Normal zone: 256 pages used for memmap [ 0.000000] Normal zone: 0 pages reserved [ 0.000000] Normal zone: 32768 pages, LIFO batch:7 [ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 [ 0.000000] Kernel command line: board=GL-AR300M console=ttyS0,115200 mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(reserved),64k(art)ro;spi0.1:2048k(kernel),-(ubi) rootfstype=squashfs noinitrd [ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes) [ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) [ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) [ 0.000000] Writing ErrCtl register=00000000 [ 0.000000] Readback ErrCtl register=00000000 [ 0.000000] Memory: 124164K/131072K available (3816K kernel code, 163K rwdata, 900K rodata, 232K init, 219K bss, 6908K reserved, 0K cma-reserved) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] NR_IRQS:51 [ 0.000000] Clocks: CPU:650.000MHz, DDR:597.534MHz, AHB:216.666MHz, Ref:25.000MHz [ 0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 5880801374 ns [ 0.000009] sched_clock: 32 bits at 325MHz, resolution 3ns, wraps every 6607641598ns [ 0.008245] Calibrating delay loop... 432.53 BogoMIPS (lpj=2162688) [ 0.071108] pid_max: default: 32768 minimum: 301 [ 0.076083] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.083065] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.093358] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.103759] futex hash table entries: 256 (order: -1, 3072 bytes) [ 0.111441] NET: Registered protocol family 16 [ 0.117648] MIPS: machine is GL.iNet GL-AR300M [ 0.602626] ar724x-pci ar724x-pci.0: PCIe link is down [ 0.608084] registering PCI controller with io_map_base unset [ 0.631625] usbcore: registered new interface driver usbfs [ 0.637488] usbcore: registered new interface driver hub [ 0.643205] usbcore: registered new device driver usb [ 0.648819] PCI host bridge to bus 0000:00 [ 0.653189] pci_bus 0000:00: root bus resource [mem 0x10000000-0x11ffffff] [ 0.660433] pci_bus 0000:00: root bus resource [io 0x0000] [ 0.666313] pci_bus 0000:00: root bus resource [??? 0x00000000 flags 0x0] [ 0.673464] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff] [ 0.681840] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00 [ 0.685487] clocksource: Switched to clocksource MIPS [ 0.691950] NET: Registered protocol family 2 [ 0.697467] TCP established hash table entries: 1024 (order: 0, 4096 bytes) [ 0.704823] TCP bind hash table entries: 1024 (order: 0, 4096 bytes) [ 0.711584] TCP: Hash tables configured (established 1024 bind 1024) [ 0.718405] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 0.724570] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 0.731462] NET: Registered protocol family 1 [ 0.736112] PCI: CLS 0 bytes, default 32 [ 0.738954] Crashlog allocated RAM at address 0x3f00000 [ 0.745661] workingset: timestamp_bits=30 max_order=15 bucket_order=0 [ 0.759502] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.765682] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 0.786070] io scheduler noop registered [ 0.790205] io scheduler deadline registered (default) [ 0.796071] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled [ 0.805301] console [ttyS0] disabled [ 0.829226] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11, base_baud = 1562500) is a 16550A [ 0.838331] console [ttyS0] enabled [ 0.845885] bootconsole [early0] disabled [ 0.860644] m25p80 spi0.0: found w25q128, expected m25p80 [ 0.875771] m25p80 spi0.0: w25q128 (16384 Kbytes) [ 0.880666] 4 cmdlinepart partitions found on MTD device spi0.0 [ 0.886797] Creating 4 MTD partitions on "spi0.0": [ 0.891748] 0x000000000000-0x000000040000 : "u-boot" [ 0.898850] 0x000000040000-0x000000050000 : "u-boot-env" [ 0.906423] 0x000000050000-0x000000ff0000 : "reserved" [ 0.913742] 0x000000ff0000-0x000001000000 : "art" [ 0.921207] spi-nand: Giga SPI NAND was found. [ 0.925868] spi-nand: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 128 [ 0.934106] 2 cmdlinepart partitions found on MTD device spi0.1 [ 0.940259] Creating 2 MTD partitions on "spi0.1": [ 0.945212] 0x000000000000-0x000000200000 : "kernel" [ 0.955677] 0x000000200000-0x000008000000 : "ubi" [ 1.385326] found bad block 7fe0000 [ 1.389676] libphy: Fixed MDIO Bus: probed [ 1.408986] libphy: ag71xx_mdio: probed [ 2.038083] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.1:04 [uid=004dd042, driver=Generic PHY] [ 2.048223] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode:MII [ 2.585480] random: fast init done [ 2.678029] ag71xx-mdio.1: Found an AR934X built-in switch [ 2.731340] eth1: Atheros AG71xx at 0xba000000, irq 5, mode:GMII [ 2.737883] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 2.744621] ehci-pci: EHCI PCI platform driver [ 2.749426] usbcore: registered new interface driver usbtest [ 2.755327] usbcore: registered new interface driver usb_ehset_test [ 2.761895] usbcore: registered new interface driver lvs [ 2.769068] NET: Registered protocol family 10 [ 2.778652] NET: Registered protocol family 17 [ 2.783297] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this. [ 2.796822] 8021q: 802.1Q VLAN Support v1.8 [ 2.806799] UBI: auto-attach mtd5 [ 2.810263] ubi0: attaching mtd5 [ 7.021421] ubi0: scanning is finished [ 7.073773] ubi0: attached mtd5 (name "ubi", size 126 MiB) [ 7.079501] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes [ 7.086607] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048 [ 7.093611] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096 [ 7.100808] ubi0: good PEBs: 1007, bad PEBs: 1, corrupted PEBs: 0 [ 7.107107] ubi0: user volume: 2, internal volumes: 1, max. volumes count: 128 [ 7.114562] ubi0: max/mean erase counter: 2/1, WL threshold: 4096, image sequence number: 453514400 [ 7.123907] ubi0: available PEBs: 0, total reserved PEBs: 1007, PEBs reserved for bad PEB handling: 19 [ 7.133598] ubi0: background thread "ubi_bgt0d" started, PID 332 [ 7.143301] block ubiblock0_0: created from ubi0:0(rootfs) [ 7.149038] ubiblock: device ubiblock0_0 (rootfs) set to be root filesystem [ 7.156242] hctosys: unable to open rtc device (rtc0) [ 7.179120] VFS: Mounted root (squashfs filesystem) readonly on device 254:0. [ 7.187965] Freeing unused kernel memory: 232K [ 7.192553] This architecture does not have kernel memory protection. [ 8.112754] init: Console is alive [ 8.116634] init: - watchdog - [ 10.977920] kmodloader: loading kernel modules from /etc/modules-boot.d/* [ 11.378772] exFAT: Version 1.2.9 [ 11.423059] SCSI subsystem initialized [ 11.432366] ehci-platform: EHCI generic platform driver [ 11.437937] ehci-platform ehci-platform: EHCI Host Controller [ 11.444031] ehci-platform ehci-platform: new USB bus registered, assigned bus number 1 [ 11.454354] ehci-platform ehci-platform: irq 3, io mem 0x1b000000 [ 11.485522] ehci-platform ehci-platform: USB 2.0 started, EHCI 1.00 [ 11.492213] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 11.499260] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 11.506732] usb usb1: Product: EHCI Host Controller [ 11.511770] usb usb1: Manufacturer: Linux 4.9.120 ehci_hcd [ 11.517450] usb usb1: SerialNumber: ehci-platform [ 11.523153] hub 1-0:1.0: USB hub found [ 11.527356] hub 1-0:1.0: 1 port detected [ 11.534658] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 11.542631] ohci-platform: OHCI generic platform driver [ 11.550812] uhci_hcd: USB Universal Host Controller Interface driver [ 11.562228] usbcore: registered new interface driver usb-storage [ 11.570625] usbcore: registered new interface driver uas [ 11.576900] kmodloader: done loading kernel modules from /etc/modules-boot.d/* [ 11.594827] init: - preinit - [ 12.944561] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 16.209869] UBIFS (ubi0:1): background thread "ubifs_bgt0_1" started, PID 429 [ 16.255468] random: procd: uninitialized urandom read (4 bytes read) [ 16.473825] UBIFS (ubi0:1): recovery needed [ 16.958395] UBIFS (ubi0:1): recovery completed [ 16.963096] UBIFS (ubi0:1): UBIFS: mounted UBI device 0, volume 1, name "rootfs_data" [ 16.971217] UBIFS (ubi0:1): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes [ 16.981481] UBIFS (ubi0:1): FS size: 110596096 bytes (105 MiB, 871 LEBs), journal size 5586944 bytes (5 MiB, 44 LEBs) [ 16.992452] UBIFS (ubi0:1): reserved for root: 4952683 bytes (4836 KiB) [ 16.999295] UBIFS (ubi0:1): media format: w4/r0 (latest is w4/r0), UUID D28D484D-CAEA-4800-A518-90119CFB7AEF, small LPT model [ 17.041990] mount_root: switching to ubifs overlay [ 17.150994] urandom-seed: Seeding with /etc/urandom.seed [ 17.369623] procd: - early - [ 17.372705] procd: - watchdog - [ 18.039743] procd: - watchdog - [ 18.043243] procd: - ubus - [ 18.354794] random: ubusd: uninitialized urandom read (4 bytes read) [ 18.519726] random: ubusd: uninitialized urandom read (4 bytes read) [ 18.526784] random: ubusd: uninitialized urandom read (4 bytes read) [ 18.534129] procd: - init - [ 21.338480] kmodloader: loading kernel modules from /etc/modules.d/* [ 21.631240] ntfs: driver 2.1.32 [Flags: R/O MODULE]. [ 21.670119] tun: Universal TUN/TAP device driver, 1.6 [ 21.675346] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> [ 21.720523] ip6_tables: (C) 2000-2006 Netfilter Core Team [ 21.745896] Netfilter messages via NETLINK v0.30. [ 21.758269] ip_set: protocol 6 [ 21.865540] u32 classifier [ 21.868343] input device check on [ 21.872121] Actions configured [ 21.896834] Mirror/redirect action on [ 21.912426] nf_conntrack version 0.5.0 (2048 buckets, 8192 max) [ 21.999128] fuse init (API version 7.26) [ 22.021138] usbcore: registered new interface driver cdc_acm [ 22.027050] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters [ 22.068076] usbcore: registered new interface driver cdc_wdm [ 22.087464] Loading modules backported from Linux version wt-2017-11-01-0-gfe248fc2c180 [ 22.095804] Backport generated by backports.git v4.14-rc2-1-31-g86cf0e5d [ 22.130971] ip_tables: (C) 2000-2006 Netfilter Core Team [ 22.138250] usbcore: registered new interface driver ipheth [ 22.314626] ctnetlink v0.93: registering with nfnetlink. [ 22.576416] usbcore: registered new interface driver usbserial [ 22.582521] usbcore: registered new interface driver usbserial_generic [ 22.589398] usbserial: USB Serial support registered for generic [ 22.624629] wireguard: WireGuard 0.0.20191012 loaded. See www.wireguard.com for information. [ 22.633421] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. [ 22.771457] xt_time: kernel timezone is -0000 [ 22.786121] usbcore: registered new interface driver cdc_ether [ 22.804512] usbcore: registered new interface driver cdc_ncm [ 22.918764] usbcore: registered new interface driver cp210x [ 22.924614] usbserial: USB Serial support registered for cp210x [ 22.947339] usbcore: registered new interface driver huawei_cdc_ncm [ 23.089552] PPP generic driver version 2.4.2 [ 23.107301] PPP MPPE Compression module registered [ 23.120491] NET: Registered protocol family 24 [ 23.133838] usbcore: registered new interface driver qmi_wwan [ 23.153200] usbcore: registered new interface driver rndis_host [ 23.201672] usbcore: registered new interface driver sierra [ 23.207592] usbserial: USB Serial support registered for Sierra USB modem [ 23.231771] usbcore: registered new interface driver sierra_net [ 23.473396] usbcore: registered new interface driver option [ 23.479317] usbserial: USB Serial support registered for GSM modem (1-port) [ 23.507321] usbcore: registered new interface driver rt2800usb [ 23.535992] ath: EEPROM regdomain: 0x0 [ 23.536002] ath: EEPROM indicates default country code should be used [ 23.536005] ath: doing EEPROM country->regdmn map search [ 23.536020] ath: country maps to regdmn code: 0x3a [ 23.536025] ath: Country alpha2 being used: US [ 23.536029] ath: Regpair used: 0x3a [ 23.547152] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht' [ 23.551486] ieee80211 phy0: Atheros AR9531 Rev:2 mem=0xb8100000, irq=47 [ 23.562742] kmodloader: done loading kernel modules from /etc/modules.d/* [ 43.184865] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready [ 43.192782] IPv6: ADDRCONF(NETDEV_UP): lo: link is not ready [ 43.334165] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 43.677599] br-lan: port 1(eth1) entered blocking state [ 43.683008] br-lan: port 1(eth1) entered disabled state [ 43.688839] device eth1 entered promiscuous mode [ 43.741237] br-lan: port 1(eth1) entered blocking state [ 43.746705] br-lan: port 1(eth1) entered forwarding state [ 43.796273] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 44.665621] br-lan: port 1(eth1) entered disabled state [ 45.717631] eth1: link up (1000Mbps/Full duplex) [ 46.585814] br-lan: port 1(eth1) entered blocking state [ 46.591230] br-lan: port 1(eth1) entered forwarding state [ 52.261118] br-lan: port 2(wlan0) entered blocking state [ 52.266681] br-lan: port 2(wlan0) entered disabled state [ 52.272552] device wlan0 entered promiscuous mode [ 52.277535] br-lan: port 2(wlan0) entered blocking state [ 52.283021] br-lan: port 2(wlan0) entered forwarding state [ 52.353292] br-lan: port 2(wlan0) entered disabled state [ 60.255328] br-lan: port 2(wlan0) entered blocking state [ 60.260884] br-lan: port 2(wlan0) entered forwarding state [ 77.625225] random: crng init done [ 77.628762] random: 6 urandom warning(s) missed due to ratelimiting
COPY HERE THE BOOTLOG ONCE OPENWRT IS INSTALLED AND RUNNING
Space for additional notes, links to forum threads or other resources.
Old u-boot version requires an update:
Some devices come with an old version of u-boot that fails to accept your firmware image (http connection reset after upload of firmware image) and fails to upgrade itself (does not accept new u-boot image).
The good news is that you are not lost as it may work to flash from Firefox in Linux if windows doesn't work for you; try older vendor images in NOR format instead of NAND if your image won't be accepted.
In order to fix this, you need to flash u-boot which resides on /dev/mtd0.
To make writing to mtd possible, one needs to install the proper kernel module and load it:
opkg update opkg install kmod-mtd-rw insmod mtd-rw i_want_a_brick=1
Then grab the latest u-boot image from https://github.com/gl-inet/uboot-for-qca95xx/tree/master/bin, upload it using scp
to /tmp of the router (or directly wget from the github repo), check the md5sum using md5sum {u-boot filename}
and flash it like shown below:
mtd -r write /tmp/uboot-gl-ar300m-20220216-md5-97ff7bb80cbf129fa21f34ded1559ff8.bin /dev/mtd0
After rebooting the new version of u-boot will be in place that now accepts recent images.
One can now use the hardware switch to change between booting NAND (position next to reset button) or NOR (away from reset button) after issuing the command
fw_setenv boot_dev on
I do not recommend doing so as the NAND is larger and faster while the NOR is only 16 MB in size and it can cause problems to have two image on the router. See https://docs.gl-inet.com/en/2/hardware/ar300m/#using-firmware.
Note:
In order to install OpenWrt one needs to start with the image named glinet_gl-ar300m-nand-initramfs-kernel.bin
, after successfully booting OpenWrt the sysupgrade image must be flashed in order to leave recovery mode.