Flashing OpenWrt on Linksys MR8300 - partially bricked

Hi Gilly,

Just to confirm, all 3 bands (2.4ghz / 5ghz x2) are working/configurable on your mr8300 even though it was loaded with the firmware originally for the dual-band ea8300?

I can confirm all 3 bands as working and configurable.

1 Like

EA8300 is definitely 3 band, not 2 band, I confirm as I own 2 EA8300 and one MR8300. As A matter of fact the MR8300 is recognized as Dallas EA8300 by OpenWRT. The only hardware difference between the EA8300 and MR8300 is 256MB and 512MB RAM.

1 Like

I haven't even a chance to start writing it. This is good then. That link above didn't show for me initially, I am guessing this is a hidden thing? So perhaps we pull this into the main EA8300 thread? I still haven't got my hands on the MR9000 yet. When I do I will post results here.

Oh and Mesh works as well. I forgot to add that. Yes it works just as well the EA8300. I am going to infer that the MR9000 is in the same boat as well. I guess I need to get my hands on one.

I got an MR8300 as well recently as a gift and have been putzing around with it, working on porting over @jeff ' s work he did for the EA8300. As we know, they are the same unit, but 512 vs 256 RAM. I was able to walk all the commits Jeff made, as well as references to the EA8300 in OpenWRT and have piggybacked the MR8300 as a configurable device in make. (Please note I am not a Dev by any means, just a hobbyist. this is my first crack at ever porting support for a device.)

If anyone wants to try it, by all means. You can just fork my repo and build from the "master-mr8300" branch. It's really using all of Jeff's work and just relabeling most pieces as the MR vs EA, so he did the hard work already.

Here is a prebuilt image to my liking you can test with if you want: https://1drv.ms/u/s!AlHg8pmWgJJ_grtMTcDmxWe9ZRS8JQ?e=fdSJwV

I added the packages and themes I like and made a small pre-tweak for luci-advanced-reboot from @stangri to support the MR8300 in advance, so that will work out of the box with the image above.

In the meantime I am writing Jeff to make sure he's okay with me using his DTS file and all, and will proceed from there on trying to get this added in officially. Until then, very unofficial.

As with everything, use at your own risk! With that said, I have it flashed and running on my unit at the moment and seems to be working fine.

Long time tomato user, thinking about flashing this on an MR8300.
I want to be sure I'm flashing the correct file, I am suspicious of the size of ~7MB.
openwrt-19.07.3-ipq40xx-generic-linksys_ea8300-squashfs-factory.bin

That's the right size for the generic build:

That will be a barebones install with only the base necessities, so you will need to retroactively install Luci (web ui) and any other packages you may want.

If you wanted to help me out, you could try my image above for the MR8300. It has all the base components as well as Luci , VPN, Wire Guard, AdBlock etc... You could always flash over to the EA8300 later.

Thanks for the info.
Do I do anything with the .config file?

Nope, that's just a starting point for anyone who wants to compile their own firmware based on my build. It shows you what options I have enabled within the firmware.

Thank you for all of your work on this! I'm ready to flash my MR8300 to OpenWrt using your build. Just to make sure I understand the instructions correctly:

  1. Download openwrt-snapshot-r14276-dc74d9da56-ipq40xx-generic-linksys_mr8300-squashfs-factory.bin from your OneDrive here https://1drv.ms/u/s!AlHg8pmWgJJ_grtMTcDmxWe9ZRS8JQ?e=fdSJwV
  2. Go to http://routerip/fwupdate.html
  3. Select the factory.bin file that was downloaded and click "Update".
  4. That's it?

Do I have to install Luci or do anything afterwards? Thanks in advance!

Thanks a bunch for helping me validate.

Yes, you are spot on. From "Factory" Linksys firmware, navigate to that URL and upload the factory.bin file. Luci and some additional apps are already included, I think you will find it's a complete user experience covering most bases out of the box.

One thing to note, if you didn't already know, is that these Linksys routers have dual firmware partitions, 1 and 2. So when you flash from stock linksys, for arguments sake we will say linksys is on partition 1, then OWRT will now be flashed onto partition 2. It normally round robins, so if you were to flash a newer OWRT build using the upgrade method from within OWRT, that would overwrite partition 1, where stock is, leaving you with both 1 and 2 having OWRT.

What I advise to do as a fail safe is after you flash the image above, you can use the included package I already baked in called "Advanced Reboot" (It will be in the Menu already for you). This will tell you what partition you are on, and gives you the ability to click a button to reboot back to the alternate partition. From there I would advise flashing your new OWRT build back from the Linksys side using the factory.bin file. This way you always have factory on one partition and OWRT on the alternate. Keeps things clean.

Many thanks for the Advanced Reboot tip, I always triple boot fail to switch over partitions, much much easier, plus Shutdown Device, very nice !

Yep! I also submitted a PR to get MR8300 officially supported in Advanced Reboot (and it's already accepted), so future builds will support natively.

I currently have a PR to get the MR8300 supported officially, I think it's pretty close to being accepted. Last part I just finished was making sure the LED works on top, as it currently does not with the cross flash EA8300 build.

I have updated the builds in my onedrive link to the latest version I have staged for my PR (r14438+1). It corrects the top LED (so it actually works), as well it has updated boarddata calibration files that are specific to the MR8300 radios, vs using the ones for the EA8300 when doing the cross flash.

https://1drv.ms/u/s!AlHg8pmWgJJ_grtMTcDmxWe9ZRS8JQ?e=fdSJwV

I presume this is 19.07.4, however Released factory.bin size is 7.6MB and yours is 18.6MB.

What's up with the additional 11MB ?

Furthermore, I thought MR and EA were essentially identical except for RAM, what's different with respect to radios ?

Also, Advanced Reboot does not power EAs, it reboots both of mine, any way to fix ?

And, should be receiving MR9000 tomorrow, looking forward to cross flash to EA 19.07.4 and see what works.

Mine is built against Master, not 19.07.4. However Master has all the fixes/changes in 19.07.04 (and some).

For the size, I tried to explain that earlier, but it's very easy. Snapshots are only the core defaults for a unit, no additional packages. My build includes everything I use (already built in). Like wireguard, OpenVPN, VPR, Luci SSL, a couple themes, adblock, banip, mwan, statistics, upnp, advanced reboot, sqm, nextdns, USB is enabled, dnsmasq full, unbound, wpad-mesh-wolfssl, iperf, irqbalance, ddns etc.. etc.. etc.. hence the size difference. All the changes are listed in the .config file in my link.

As close as the units are, the EA8300 and MR8300 are not "just" 256 vs 512 MB, contrary to what was originally thought. The main differences so far are:

  1. LED's are different, EA8300 crossflash led on top does not work on MR8300. MR8300 has an RGB-ish led so has to be handled differently in the DTS file.
  2. Or course 256 vs 512
  3. The wireless radio calibration data is different between the EA8300 and MR8300. So while wireless may enable on the cross-flash, no guarantee you are not getting soft failures in the background.

Regardless, it's here to try if you want to. You are free to stick with the EA8300 build. I am just offering these as I progress through the PR to get MR8300 officially supported. Once this is complete, I will quiet back down again as you would have MR8300 buildbot builds at that time :slight_smile:

Thanks for getting MR8300 officially supported !

Not there yet, but close!

HI - I have been battling with my MR8300 for almost 24Hrs. I managed to flash both the standard EA8400 and the firmware you provided(thanks), however, it takes the router close to an hour or so to get on line. From initial install, what I observe is that my WAN goes up, assigned an IP address. I then configure the DHCP DNS, and my APs, all clients can associate and get IP adresses, however, I have no internet connectivity. I have looked in the logs I see no errors and I see the requests being forwarded but nothing back.. After a while the internet will start working.. If I reboot I get the same connection issues. I have rebooted a number of times and re-installed the software a number of times and It still takes a ridiculously long time to get on line. The load on the system looks normal and I see no errors in the system log.

I have tried with a backup router I have, a GLi-net MV1000, and it behaves as expected, connect to fibre box and I have no connection issues, sot I believe I have ruled out the telco

I am running the FW you provided in the link above (the one in the onedrive)

Even more frustrating is once it is up an running, and I reboot, I have the same connectivity issues, it takes a long to come on line, and sometimes, it doesn't at all, only remedy is to reflash the firmware

Only things I see in the kernel log are :

* workqueue: max_active 576 requested for napi_workq is out of range, clamping between 1 and 512[    0.039949] clocksource: Switched to clocksource arch_sys_counter

* ath10k_pci 0000:01:00.0: unsupported HTC service id: 1536
 793.137412] ------------[ cut here ]------------
[  793.143302] WARNING: CPU: 0 PID: 1721 at target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-ipq40xx_generic/ath10k-ct-regular/ath10k-ct-2020-06-30-edfbf916/ath10k-5.4/htt_rx.c:1082 ath10k_htt_rx_pktlog_completion_handler+0x40c/0x241c [ath10k_core]
[  793.147740] Modules linked in: xt_connlimit pppoe ppp_async nf_conncount iptable_nat ath10k_pci ath10k_core ath xt_state xt_nat xt_helper xt_conntrack xt_connmark xt_connbytes xt_REDIRECT xt_MASQUERADE xt_FLOWOFFLOAD xt_CT pppox ppp_generic nft_redir nft_ct nf_nat nf_flow_table_hw nf_flow_table nf_conntrack_rtcache nf_conntrack_netlink nf_conntrack mac80211 ipt_REJECT cfg80211 xt_time xt_tcpudp xt_tcpmss xt_statistic xt_recent xt_multiport xt_mark xt_mac xt_limit xt_length xt_hl xt_ecn xt_dscp xt_comment xt_TCPMSS xt_LOG xt_HL xt_DSCP xt_CLASSIFY wireguard ums_usbat ums_sddr55 ums_sddr09 ums_karma ums_jumpshot ums_isd200 ums_freecom ums_datafab ums_cypress ums_alauda slhc sch_cake nft_reject_ipv6 nft_reject_ipv4 nft_reject_inet nft_reject_bridge nft_reject nft_quota nft_objref nft_numgen nft_meta_bridge nft_log nft_limit nft_hash nft_fwd_netdev nft_dup_netdev nft_counter nf_tables_set nf_tables nf_reject_ipv4 nf_log_ipv4 nf_dup_netdev nf_defrag_ipv6 nf_defrag_ipv4 iptable_raw
[  793.147979]  iptable_mangle iptable_filter ipt_ECN ip_tables hwmon crc_ccitt compat sch_tbf sch_ingress sch_htb sch_hfsc em_u32 cls_u32 cls_tcindex cls_route cls_matchall cls_fw cls_flow cls_basic act_skbedit act_mirred ledtrig_usbport ledtrig_heartbeat xt_set ip_set_list_set ip_set_hash_netportnet ip_set_hash_netport ip_set_hash_netnet ip_set_hash_netiface ip_set_hash_net ip_set_hash_mac ip_set_hash_ipportnet ip_set_hash_ipportip ip_set_hash_ipport ip_set_hash_ipmark ip_set_hash_ip ip_set_bitmap_port ip_set_bitmap_ipmac ip_set_bitmap_ip ip_set nfnetlink nf_log_ipv6 nf_log_common ip6table_mangle ip6table_filter ip6_tables ip6t_REJECT x_tables nf_reject_ipv6 ifb ip6_udp_tunnel udp_tunnel vfat fat ntfs nls_utf8 nls_iso8859_1 nls_cp437 usb_storage leds_gpio xhci_plat_hcd xhci_pci xhci_hcd dwc3 dwc3_qcom fsl_mph_dr_of ehci_platform ehci_fsl sd_mod scsi_mod ehci_hcd gpio_button_hotplug ext4 mbcache jbd2 crc32c_generic
[  793.314191] CPU: 0 PID: 1721 Comm: hostapd Not tainted 5.4.63 #0
[  793.336344] Hardware name: Generic DT based system
[  793.342531] [<c030e524>] (unwind_backtrace) from [<c030afa4>] (show_stack+0x10/0x14)
[  793.347125] [<c030afa4>] (show_stack) from [<c0848758>] (dump_stack+0x94/0xa8)
[  793.355021] [<c0848758>] (dump_stack) from [<c0321340>] (__warn+0xbc/0xd8)
[  793.362048] [<c0321340>] (__warn) from [<c03213ac>] (warn_slowpath_fmt+0x50/0x94)
[  793.369001] [<c03213ac>] (warn_slowpath_fmt) from [<bf6a2638>] (ath10k_htt_rx_pktlog_completion_handler+0x40c/0x241c [ath10k_core])
[  793.376676] [<bf6a2638>] (ath10k_htt_rx_pktlog_completion_handler [ath10k_core]) from [<bf6a27d8>] (ath10k_htt_rx_pktlog_completion_handler+0x5ac/0x241c [ath10k_core])
[  793.388218] [<bf6a27d8>] (ath10k_htt_rx_pktlog_completion_handler [ath10k_core]) from [<bf6a6aa4>] (ath10k_htt_rx_proc_rx_frag_ind_hl+0xb8c/0x1020 [ath10k_core])
[  793.403142] [<bf6a6aa4>] (ath10k_htt_rx_proc_rx_frag_ind_hl [ath10k_core]) from [<bf6a7718>] (ath10k_htt_txrx_compl_task+0x7e0/0x10e0 [ath10k_core])
[  793.417685] [<bf6a7718>] (ath10k_htt_txrx_compl_task [ath10k_core]) from [<bf6fecf8>] (ath10k_pci_napi_poll+0x50/0x13c [ath10k_pci])
[  793.431042] [<bf6fecf8>] (ath10k_pci_napi_poll [ath10k_pci]) from [<c0727ab4>] (__napi_poll+0x28/0x104)
[  793.442872] [<c0727ab4>] (__napi_poll) from [<c0727d1c>] (net_rx_action+0xf8/0x284)
[  793.451984] [<c0727d1c>] (net_rx_action) from [<c0302288>] (__do_softirq+0x120/0x2b0)
[  793.459624] [<c0302288>] (__do_softirq) from [<c032534c>] (irq_exit+0xb0/0xd4)
[  793.467610] [<c032534c>] (irq_exit) from [<c036b840>] (__handle_domain_irq+0x60/0xb4)
[  793.474730] [<c036b840>] (__handle_domain_irq) from [<c05a92fc>] (gic_handle_irq+0x4c/0x90)
[  793.482627] [<c05a92fc>] (gic_handle_irq) from [<c0301a8c>] (__irq_svc+0x6c/0x90)
[  793.490776] Exception stack(0xdddefcd8 to 0xdddefd20)
[  793.498413] fcc0:                                                       dde51b34 00000000
[  793.503458] fce0: 00000000 ddc2c200 de56a000 dde50c20 de56a4c0 dde50c20 dde51dd0 dddee000
[  793.511618] fd00: dde51b34 00000000 00000000 dddefd28 bf5580d8 c0861aa0 60000013 ffffffff
[  793.519781] [<c0301a8c>] (__irq_svc) from [<c0861aa0>] (mutex_lock+0x1c/0x3c)
[  793.528106] [<c0861aa0>] (mutex_lock) from [<bf5580d8>] (ieee80211_roc_purge+0x24/0xf4 [mac80211])
[  793.535344] [<bf5580d8>] (ieee80211_roc_purge [mac80211]) from [<bf5604a4>] (ieee80211_add_virtual_monitor+0x2a0/0xa7c [mac80211])
[  793.544110] [<bf5604a4>] (ieee80211_add_virtual_monitor [mac80211]) from [<bf560c90>] (ieee80211_stop+0x10/0x18 [mac80211])
[  793.555736] [<bf560c90>] (ieee80211_stop [mac80211]) from [<c071e1a0>] (__dev_close_many+0x90/0xf4)
[  793.566658] [<c071e1a0>] (__dev_close_many) from [<c0728af4>] (__dev_change_flags+0xa4/0x1a4)
[  793.575684] [<c0728af4>] (__dev_change_flags) from [<c0728c0c>] (dev_change_flags+0x18/0x48)
[  793.584362] [<c0728c0c>] (dev_change_flags) from [<c07b84bc>] (devinet_ioctl+0x6d8/0x708)
[  793.592869] [<c07b84bc>] (devinet_ioctl) from [<c07bb828>] (inet_ioctl+0x1f0/0x380)
[  793.600944] [<c07bb828>] (inet_ioctl) from [<c070437c>] (sock_ioctl+0x334/0x58c)
[  793.608408] [<c070437c>] (sock_ioctl) from [<c04560cc>] (do_vfs_ioctl+0x9c/0x8cc)
[  793.616044] [<c04560cc>] (do_vfs_ioctl) from [<c0456930>] (ksys_ioctl+0x34/0x60)
[  793.623421] [<c0456930>] (ksys_ioctl) from [<c0301000>] (ret_fast_syscall+0x0/0x54)
[  793.630876] Exception stack(0xdddeffa8 to 0xdddefff0)
[  793.638262] ffa0:                   00000000 bebd7b08 0000000c 00008914 bebd7b08 bebd7af8
[  793.643474] ffc0: 00000000 bebd7b08 b6d91ef8 00000036 0000000c bebd7dac 008af058 008af020
[  793.651629] ffe0: 00569e60 bebd7ae0 004df4d0 b6f1ffa8
[  793.659879] ---[ end trace 6711fdf90d754294 ]---

The throughput on this is also pretty bad - I am on a 1Gbs fibre link on my old router DIR-860L(and on backup router), I was I getting close to 700Mbs on the wired connection, on this one I only get at most 350Mbs.

Any help/suggestions will be appreciated.