Flashing OpenWrt on Linksys MR8300 - partially bricked

You can connect the MR8300 wan port to a working router lan port, just make sure MR8300 wan is configured as DHCP client.

This will allow the MR8300 to connect to internet via working router, hopefully with stable connection.

Then update as connection should be stable. Also safer to connect workstation via Ethernet cable to lan port of MR8300 for update process...

What you suggested is what I am doing re connecting router to working port - even at this file things go pearshaped :

opkg upgrade base-files
Upgrading base-files on root from 228-r14438+1-4d747f5495 to 230-r14522-8cfb839907...
Downloading http://downloads.openwrt.org/snapshots/targets/ipq40xx/generic/packages/base-files_230-r14522-8cfb839907_arm_cortex-a7_neon-vfpv4.ipk
Command failed: Not found
Command failed: Not found
umount: tmpfs busy - remounted read-only
umount: can't remount tmpfs read-only
umount: proc busy - remounted read-only
Collected errors:
 * copy_file: unable to open `/etc/group-opkg.backup': Read-only file system.
 * file_copy: Failed to copy file /etc/group to /etc/group-opkg.backup.
 * backup_make_backup: Failed to copy /etc/group to /etc/group-opkg.backup
 * pkg_write_filelist: Failed to open //usr/lib/opkg/info/base-files.list: Read-only file system.

You are free to build an image.

My staged PR is here: https://github.com/cybrnook/openwrt/commit/3e614882ca4c529dd755a56cc218c743347e6d6f

You can use that to create yourself a clean build if you wish.

I would think you have something else happening, especially if you are seeing strange behavior on both the EA8300 cross flash and my build.

If you want to check my link again to one drive, I uploaded my latest build from today (same as the screenshot below). One thing I changed is I removed MWAN3. I could build you a base image if you wish to help you. Core build with nothing but Luci.

I have no issues reaching my full link bandwidth and my WAN connection is instant (I have cable internet):

Looks like your install went berserk. Failover to OEM firmware, upload standard EA8300 factory, not the custom MR8300 from cybernook as it has a lot that can break in this case. All this as a DHCP client to working router.

Update via SSH as per my prior post in bold, reboot remaining client of working router. The MR8300 should now be ready at this point, run speed tests from workstation or from SSH CLI as follows :

Install test software :
opkg update && opkg install speedtest-netperf

Run rest software :
speedtest-netperf.sh -H netperf-west.bufferbloat.net -t 20

If all seems ok, you can now try the MR8300 as intended purpose.


Bobcat - the updating packages as per your instructions doesn't work - at some point the file system becomes read-only or the interface goes down and the update fails. Any time I attempt any kmod- updates that fails, individual components work (I have tried luci) coreutils turns the fs into ro. I will try the latest ea8300 from the repo with kernel 5.4.65 and attempt your speedtest. and see how that behaves and advise.

Cybernook - the latest file on the ondrive, openwrt-snapshot-r14484+47-673062fc56-ipq40xx-generic-linksys_mr8300-squashfs-factory - are still kernel 5.4.63, - https://onedrive.live.com/?authkey=!AE3A5sVnvWUUvCU&id=7F92809699F2E051!40396&cid=7F92809699F2E051

I'll mess around with the standard EA8300, Linux OpenWrt 5.4.65 and see how that behaves.. and let you know.

Thank you both for your help.

Honestly, seems your unit is defective if it goes nuts and can't update normally. The base software can't update without going nuts, no wonder want connection unworkable. I have two EA8300 and one MR8300 and they all installed without a hitch and updating was straitforward.

Almost looks like ram and flash are flaky. If you revert to stock, does unit function normally ?

I installed the standard EA8300 - connected it directly to my cable switch(restarted it), with just my laptop it worked - ran speedtest (from web got 488 down, 717 up) - rebooted, waited for 15 minutes, it had a lease but would not resolve any names - put dnsmasq in no-daemon and it would just timed out - I gave up.

Sat Sep 19 20:35:26 2020 daemon.err uhttpd[1161]: luci: accepted login on /admin/network/network for root from
Sat Sep 19 20:36:35 2020 daemon.info dnsmasq[1766]: reading /tmp/resolv.conf.d/resolv.conf.auto
Sat Sep 19 20:36:35 2020 daemon.info dnsmasq[1766]: using only locally-known addresses for domain test
Sat Sep 19 20:36:35 2020 daemon.info dnsmasq[1766]: using only locally-known addresses for domain onion
Sat Sep 19 20:36:35 2020 daemon.info dnsmasq[1766]: using only locally-known addresses for domain localhost
Sat Sep 19 20:36:35 2020 daemon.info dnsmasq[1766]: using only locally-known addresses for domain local
Sat Sep 19 20:36:35 2020 daemon.info dnsmasq[1766]: using only locally-known addresses for domain invalid
Sat Sep 19 20:36:35 2020 daemon.info dnsmasq[1766]: using only locally-known addresses for domain bind
Sat Sep 19 20:36:35 2020 daemon.info dnsmasq[1766]: using only locally-known addresses for domain lan
Sat Sep 19 20:36:35 2020 daemon.info dnsmasq[1766]: using nameserver
Sat Sep 19 20:36:35 2020 daemon.info dnsmasq[1766]: using nameserver

oot@OpenWrt:/# nslookup google.com
;; connection timed out; no servers could be reached

root@OpenWrt:/# arp -a
IP address       HW type     Flags       HW address            Mask     Device   0x1         0x0         00:00:00:00:00:00     *        eth1   0x1         0x0         00:00:00:00:00:00     *        eth1    0x1         0x2         00:50:b6:21:f8:89     *        br-lan
root@OpenWrt:/# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0   *               LISTEN
tcp        0      0 localhost:domain*               LISTEN
tcp        0      0*               LISTEN
tcp        0      0 OpenWrt.lan:domain*               LISTEN
tcp        0      0   *               LISTEN
tcp        0      0 OpenWrt.lan:www     TIME_WAIT
tcp        0      0 OpenWrt.lan:www     TIME_WAIT
tcp        0      0 OpenWrt.lan:www     TIME_WAIT
tcp        0      0 OpenWrt.lan:www     TIME_WAIT
tcp        0      0 :::12865                :::*                    LISTEN
tcp        0      0 :::www                  :::*                    LISTEN
tcp        0      0 localhost:domain        :::*                    LISTEN
tcp        0      0 fe80::c641:1eff:feab:227f:domain :::*                    LISTEN
tcp        0      0 fdc9:dae:cc48::1:domain :::*                    LISTEN
tcp        0      0 fe80::c641:1eff:feab:227e:domain :::*                    LISTEN
tcp        0      0 :::ssh                  :::*                    LISTEN

I plugged my old router in, rebooted the provider's box plugged in everything is working..Plugged the MR8300 into one of the ports of the DIR860 Speedtest is now 800Mbs down and 700Up - which is what I normally see.

I am going to try to put the original FW on and see how that works.. Unfortunately I opened up the box to put a serial cable (misunderstood the http://routerip - would not resolve :wink: ). So my options are limited..

Once again thank you very much for your help, sincerely appreciated...

I have not used serial, my boxes are still and will always remain foctory sealed, for warranty purposes.

As I always used backdoor to upgrade to OpenWRT using factory file for MR8300 19.07.3 and.4, The difficulties/issues of serial upgrade are totally bypassed here, as it becomes a straitforward flash upgrade via the OEM flash back door (meaning not readily updatable via OEM standard http interface).

This method of upgrading was the only one I would consider for the MR8300, as I already had 2 working EA8300 with OpenWRT.

I suggest once you revert to OEM, you upgrade via HTTP backdoor, hopefully this will fix all for you.


I was trying to re-flash the factory firmware :

root@OpenWrt:/tmp# mtd write /tmp/FW_MR8300_1.1.7.201281_prod.img kernel
Unlocking kernel ...

Writing from /tmp/FW_MR8300_1.1.7.201281_prod.img to kernel ...  [e]
Skipping bad block at 0x007e000
root@OpenWrt:/tmp# mtd write /tmp/FW_MR8300_1.1.7.201281_prod.img alt_kernel
Unlocking alt_kernel ...

The badblock is a bit suspicious - I have booted it back to the stock firmware so will see what happens.. through the stock firmware the performance is similar.. I suspect I have a dodgly device..

There are two boot partitions, if you never use sysupgrade, the other partition remains with OEM firmware.

Perform failover procédure :
Power up 15 seconds, power off 10 seconds
Repeat 3 times power up/down 15u, 10d sequentially.

Power up one last time and let it boot completely, the failover OEM partition should have booted.

I never use sysupgrade just to make sure I have an OEM failover solution.

HI - didn't use the sysupgrade, but I managed to install the MR8300 on one partiion and the EA8300 on the other. With the above command I was hoping to erase all the openwrt distros - I now have a working Linksys factory boot and a broken Openwrt that soils itself on boot... After thre attmpets the router boots into linksys. Just waiting for a while and I will test the stock FW against my telco router and see what throughputs are like.

[    2.368262] UBIFS error (pid 1): ubifs_mount: cannot open "ubi0:ubifs", error -19
[    2.375416] VFS: Cannot open root device "ubi0:ubifs" or unknown-block(31,11): error -19
[    2.383419] Please append a correct "root=" boot option; here are the available partitions:
[    2.391742] 1f00            1024 mtdblock0  (driver?)
[    2.396773] 1f01            1024 mtdblock1  (driver?)
[    2.401808] 1f02            1024 mtdblock2  (driver?)
[    2.406842] 1f03             512 mtdblock3  (driver?)
[    2.411876] 1f04             512 mtdblock4  (driver?)
[    2.416913] 1f05             512 mtdblock5  (driver?)
[    2.421946] 1f06            2048 mtdblock6  (driver?)
[    2.426981] 1f07             512 mtdblock7  (driver?)
[    2.432015] 1f08             256 mtdblock8  (driver?)
[    2.437050] 1f09             256 mtdblock9  (driver?)
[    2.442085] 1f0a           90112 mtdblock10  (driver?)
[    2.447207] 1f0b           87040 mtdblock11  (driver?)
[    2.452326] 1f0c           90112 mtdblock12  (driver?)
[    2.457450] 1f0d           87040 mtdblock13  (driver?)
[    2.462571] 1f0e            1024 mtdblock14  (driver?)
[    2.467693] 1f0f           72192 mtdblock15  (driver?)
[    2.472811] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,11)
[    2.481235] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.14.77 #1
[    2.487253] [<c021f768>] (unwind_backtrace) from [<c021c63c>] (show_stack+0x10/0x14)
[    2.494958] [<c021c63c>] (show_stack) from [<c03d2ba8>] (dump_stack+0x80/0xa0)
[    2.502161] [<c03d2ba8>] (dump_stack) from [<c0230950>] (panic+0x84/0x1e4)
[    2.509021] [<c0230950>] (panic) from [<c088e09c>] (mount_block_root+0x260/0x2a8)
[    2.516485] [<c088e09c>] (mount_block_root) from [<c088e1d0>] (prepare_namespace+0x88/0x1c4)
[    2.524901] [<c088e1d0>] (prepare_namespace) from [<c088dce4>] (kernel_init_freeable+0x184/0x1d4)
[    2.533758] [<c088dce4>] (kernel_init_freeable) from [<c020cc08>] (kernel_init+0x8/0xfc)
[    2.541832] [<c020cc08>] (kernel_init) from [<c0208d20>] (ret_from_fork+0x14/0x34)
[    2.549380] CPU2: stopping
[    2.552067] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 3.14.77 #1
[    2.558066] [<c021f768>] (unwind_backtrace) from [<c021c63c>] (show_stack+0x10/0x14)
[    2.565786] [<c021c63c>] (show_stack) from [<c03d2ba8>] (dump_stack+0x80/0xa0)
[    2.572995] [<c03d2ba8>] (dump_stack) from [<c021ea10>] (handle_IPI+0xb8/0x140)
[    2.580285] [<c021ea10>] (handle_IPI) from [<c02084fc>] (gic_handle_irq+0x58/0x60)
[    2.587834] [<c02084fc>] (gic_handle_irq) from [<c0209580>] (__irq_svc+0x40/0x70)
[    2.595293] Exception stack(0xdf4c7fa0 to 0xdf4c7fe8)
[    2.600337] 7fa0: ffffffed 00000000 1f317000 c0209fc0 df4c6000 df4c6030 10c0387d c092af08
[    2.608493] 7fc0: 8020406a 410fc075 00000000 00000000 00000000 df4c7fe8 c0219ee8 c0219eec
[    2.616648] 7fe0: 60000013 ffffffff
[    2.620127] [<c0209580>] (__irq_svc) from [<c0219eec>] (arch_cpu_idle+0x38/0x5c)
[    2.627508] [<c0219eec>] (arch_cpu_idle) from [<c026670c>] (cpu_startup_entry+0xa4/0x108)
[    2.635666] [<c026670c>] (cpu_startup_entry) from [<802085a4>] (0x802085a4)
[    2.642604] CPU1: stopping
[    2.645296] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.14.77 #1
[    2.651297] [<c021f768>] (unwind_backtrace) from [<c021c63c>] (show_stack+0x10/0x14)
[    2.659014] [<c021c63c>] (show_stack) from [<c03d2ba8>] (dump_stack+0x80/0xa0)
[    2.666221] [<c03d2ba8>] (dump_stack) from [<c021ea10>] (handle_IPI+0xb8/0x140)
[    2.673512] [<c021ea10>] (handle_IPI) from [<c02084fc>] (gic_handle_irq+0x58/0x60)
[    2.681065] [<c02084fc>] (gic_handle_irq) from [<c0209580>] (__irq_svc+0x40/0x70)
[    2.688521] Exception stack(0xdf4c5fa0 to 0xdf4c5fe8)
[    2.693565] 5fa0: ffffffed 00000000 1f30f000 c0209fc0 df4c4000 df4c4030 10c0387d c092af08
[    2.701724] 5fc0: 8020406a 410fc075 00000000 00000000 00000000 df4c5fe8 c0219ee8 c0219eec
[    2.709875] 5fe0: 60000013 ffffffff
[    2.713355] [<c0209580>] (__irq_svc) from [<c0219eec>] (arch_cpu_idle+0x38/0x5c)
[    2.720734] [<c0219eec>] (arch_cpu_idle) from [<c026670c>] (cpu_startup_entry+0xa4/0x108)
[    2.728892] [<c026670c>] (cpu_startup_entry) from [<802085a4>] (0x802085a4)
[    2.735831] CPU3: stopping
[    2.738525] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 3.14.77 #1
[    2.744525] [<c021f768>] (unwind_backtrace) from [<c021c63c>] (show_stack+0x10/0x14)
[    2.752246] [<c021c63c>] (show_stack) from [<c03d2ba8>] (dump_stack+0x80/0xa0)
[    2.759451] [<c03d2ba8>] (dump_stack) from [<c021ea10>] (handle_IPI+0xb8/0x140)
[    2.766741] [<c021ea10>] (handle_IPI) from [<c02084fc>] (gic_handle_irq+0x58/0x60)
[    2.774292] [<c02084fc>] (gic_handle_irq) from [<c0209580>] (__irq_svc+0x40/0x70)
[    2.781750] Exception stack(0xdf4c9fa0 to 0xdf4c9fe8)
[    2.786793] 9fa0: ffffffed 00000000 1f31f000 c0209fc0 df4c8000 df4c8030 10c0387d c092af08
[    2.794951] 9fc0: 8020406a 410fc075 00000000 00000000 00000000 df4c9fe8 c0219ee8 c0219eec
[    2.803104] 9fe0: 60000013 ffffffff
[    2.806583] [<c0209580>] (__irq_svc) from [<c0219eec>] (arch_cpu_idle+0x38/0x5c)
[    2.813965] [<c0219eec>] (arch_cpu_idle) from [<c026670c>] (cpu_startup_entry+0xa4/0x108)
[    2.822119] [<c026670c>] (cpu_startup_entry) from [<802085a4>] (0x802085a4)
[    2.829064] Rebooting in 3 seconds..
Format: Log Type - Time(microsec) - Message - Optional Info
Log Type: B - Since Boot(Power On Reset),  D - Delta,  S - Statistic

From factory firmware, install OpenWRT with (replace IP address with proper if required)

Use released factory 19.07.4 EA8300 file, wait until unit reboots before changing your browser page.

Luci should be available to login...

Once it is configured - I get aprompted a username and password (which I provide), I get the upload link, but then I get :

"result": "ErrorUnauthorized"

If I factory reset the device, I am unable to access the fwupdate link - it just redirect one to the setup
I will test against my telco router now using stock and see how it performs/works. I am able via the serial console to log on - they seem to be running a rather old build

Linux Linksys03475 3.14.77 #1 SMP PREEMPT Sun May 10 22:15:20 PDT 2020 armv7l GNU/Linux

Also noticed that it doesn't use the 100-144 chanels (DFS functionality), which openwrt was happy to use, I am in Canada.

Against the telco router, I get 709/850 - same as behind my dlink. On rebooting there is no problem.. Right now I am going to take a break as I have a working connection again and figure out what to do.
Right now I have two issues i believe:

With any of Openwrt FWs I can get it to boot and connect once. After a reboot it take for ever to allow any internet traffic. I can only presume that there is some issue with the HW I have and the Openwrt and my Telco.
The other is with the speed of the device I can achieve once it is actually on line.

Thank you once again for your help.

User: admin
PW: admin

You have a bad nand flash, I would rma the unit.


Thank you very much for your time and help - I contacted Linksys and they confirmed it's defective. So I'm going to send it back. I'm giving up I will get an WRT3200ACM instead, seems opwnrt is installed.

MR8300 is now officially in Master :metal:

Support in the stable branch will likely come during the next release.


Is the radio calibration for the MR8300 included in your git commit?


I binwalked the oem firmware to get the calibration data, repackaged it for the commit and also submitted to the ath upstream project to get accepted in the maintained boarddata package.

And actually the pr was already been accepted a week ago, so you can download the snapshot from owrt directly or compile directly from master. No need to use my links anymore.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.