Unofficial OpenWrt (swconfig) for the Linksys EA9500 and EA9400

Unofficial OpenWrt (swconfig) for the Linksys EA9500 and EA9400, v1.0 & 1.1


Current release: OpenWrt 19.07.3

Learn about OpenWrt
Learn about changes in OpenWrt 19.07.3

These are my unofficial builds of OpenWrt for the Linksys EA9500 and EA9400 using the swconfig driver and configuration system.

Please note that these builds only support the dual-core/BCM47094-based EA9500/EA9400 revisions 1.0 and 1.1.
The EA9500/EA9400 v2 uses a different chip and architecture (ARM 64-bit), and is not yet supported.

Why swconfig?


The Linksys EA9500 and EA9400 have an unusual network switch layout, with a BCM53012 switch directly connected to the CPU ports and half the ethernet ports (WAN+LAN4,7,8) and a BCM53125 switch serving the other half of the ethernet ports (LAN1,2,5,6).

With swconfig, you can configure the ports connected to the BCM53012 just like any other OpenWrt device with an internal switch, and treat the BCM53125 like a dumb switch.

Learn more about the EA9500/EA9400's hardware quirks on npcomplete's blog.

First-Time Installation


Linksys' factory firmware checks signatures on uploaded firmwares, and TFTP recovery is disabled in the bootloader :upside_down_face:, necessitating installation via serial cable.

Refer to this guide for disassembly, and this guide for flashing via serial.

Note that connecting a serial cable before powering on the EA9500/EA9400 may occasionally hang the bootloader :man_facepalming:. If you find that this happens to you, leave the Ground connection floating until after you power on the router.

Assuming your TFTP server is at 192.168.1.10, you can flash an image by running the following in the CFE serial prompt:

flash -noheader 192.168.1.10:/openwrt.trx nflash0.trx

And then set that partition to boot by default using:

nvram set bootpartition=0 && nvram set partialboots=0 && nvram commit

Please check if clear_partialboot is enabled after installation - see Known Issues below

Upgrades


Once OpenWrt is installed, you can flash the router by uploading sysupgrade-compatible images to LuCI, or by using the sysupgrade command line tools.

Download


Date Release Changes
2020-06-17 OpenWrt 19.07.3 rev2 Now supports Linksys EA9400, and separates builds with and without the flash partitions patch. If you could not boot EA9500 with 19.07.2 revision 3 or 19.07.3 revision 1, please try the builds without the flash partitions patch.
2020-05-23 OpenWrt 19.07.3 New packages ubimounter and luci-app-ubimounter to automatically mount a ubifs filesystem on the extra space in flash
2020-04-13 OpenWrt 19.07.2 Now supports using the extra space at the end of the flash
2020-02-08 OpenWrt 19.07.1 Updated sources to 19.07.1

Known Issues


  • WPA3-SAE, 802.11r, 802.11w, and VHT160 do not function - this is due to the old brcmfmac driver included with OpenWrt 19.07.1. It does not (yet) support BCM4366C0 firmware revisions beyond the one known to ship with the OEM firmware. Hopefully backported drivers from Linux 5.5 arrive soon, which will likely resolve this pain point.
  • Seemingly random wireless radio crashes - also due to old, buggy firmware and general Broadcom stuff. So far, this seems to mostly affect the 2.4GHz radio. Link to GitHub issue
  • Lack of hardware flow offload acceleration - the swconfig driver in this platform isn't wired up for hardware flow offload using native tagging, this is an issue fixed in the DSA version of this firmware. Link to GitHub issue
  • clear_partialboot may not run after installation - this startup script is used to reset the failsafe boot counter for the second boot partition on the EA9500, and due to packaging it may not be enabled by default. Check LuCI's System -> Startup menu and enable the startup script if it is disabled. Resolved in 19.07.2 rev 3

Sources


Sources and build instructions are available on my GitHub: https://github.com/hurrian/ea9500_openwrt.
Pull requests are welcome!

Credits


Thanks to npcomplete, who brought up OpenWrt on the EA9500, and for helping me get familiar with the device.

2 Likes

Hello!

I have managed to work 802.11r, 802.11w here

Also, i found in your /etc/init.d/clear_partialboot

case $(board_name) in
	linksys,ea9500)
		# clear partialboots and always set to boot first partition
		nvram set bootpartition=0 && nvram set partialboots=0 && nvram commit
		;;
esac

where $(board_name) actually returns "linksys,panamera"

So, it better to change to

case "$(board_name)" in
	linksys,panamera)
		# clear partialboots and always set to boot first partition
		nvram set bootpartition=0 && nvram set partialboots=0 && nvram commit
		;;
esac
1 Like

Thanks for the heads up! I have incorporated your changes to clear_partialboot in my latest release.

I have posted up OpenWrt 19.07.2 on my github.

Unfortunately, despite the brcmfmac changes in 19.07.2, the latest wireless firmware still doesn't work - we're still using 10.10.69.69 like before.

1 Like

Thanks for making this. I tried all tree builds. None of the Wan interface works. By default 17.0 and 17.1 uses dhcp client. But the MAC override seems to be enabled for both, which sets the MAC to 00:00...:01. 17.2 uses static, but also override MAC. The interface layout is also different from npcompletes build. Is this due to the SWConfig? What should the correct interface look like?

Yep, that's unfortunately a bug. I just checked right now and it seems I can't override the MAC addresses for WAN.

The interface layout is different from npcomplete's due to swconfig - I have tested the out of the box configuration and can verify it to be correct (aside from the broken WAN MAC address, I wonder what my ISP thinks of that...)

Hmm, for some reason my WAN does not work. Maybe my ISP does not like that tricky MAC? If I delete the interface and recreate it, I could get the correct MAC, but the WAN still does not work

I put an update firmware in place and everything has been running as expected under 19.07.2. This has been running like this since you released .2.

[   12.519319] usbcore: registered new interface driver brcmfmac
[   12.616984] brcmfmac 0000:03:00.0: enabling device (0140 -> 0142)
[   12.810181] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4366c-pcie for chip BCM4366/4
[   13.003683] brcmfmac 0000:03:00.0: Direct firmware load for brcm/brcmfmac4366c-pcie.linksys,panamera.txt failed with error -2
[   13.015125] brcmfmac 0000:03:00.0: Direct firmware load for brcm/brcmfmac4366c-pcie.txt failed with error -2
[   13.442939] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4366c-pcie for chip BCM4366/4
[   13.451706] brcmfmac 0000:03:00.0: Direct firmware load for brcm/brcmfmac4366c-pcie.clm_blob failed with error -2
[   13.462019] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[   13.473297] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4366/4 wl0: Nov  5 2018 03:19:56 version 10.28.2 (r769115) FWID 01-d2cbb8fd
[   13.514786] brcmfmac 0000:04:00.0: enabling device (0140 -> 0142)
[   13.690308] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4366c-pcie for chip BCM4366/4
[   13.703777] brcmfmac 0000:04:00.0: Direct firmware load for brcm/brcmfmac4366c-pcie.linksys,panamera.txt failed with error -2
[   13.715205] brcmfmac 0000:04:00.0: Direct firmware load for brcm/brcmfmac4366c-pcie.txt failed with error -2
[   14.112940] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4366c-pcie for chip BCM4366/4
[   14.121669] brcmfmac 0000:04:00.0: Direct firmware load for brcm/brcmfmac4366c-pcie.clm_blob failed with error -2
[   14.131980] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[   14.143245] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4366/4 wl0: Nov  5 2018 03:19:56 version 10.28.2 (r769115) FWID 01-d2cbb8fd
[   14.170965] brcmfmac 0001:01:00.0: enabling device (0140 -> 0142)
[   14.340260] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4366c-pcie for chip BCM4366/4
[   14.353485] brcmfmac 0001:01:00.0: Direct firmware load for brcm/brcmfmac4366c-pcie.linksys,panamera.txt failed with error -2
[   14.364984] brcmfmac 0001:01:00.0: Direct firmware load for brcm/brcmfmac4366c-pcie.txt failed with error -2
[   14.772825] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4366c-pcie for chip BCM4366/4
[   14.781539] brcmfmac 0001:01:00.0: Direct firmware load for brcm/brcmfmac4366c-pcie.clm_blob failed with error -2
[   14.791847] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[   14.803091] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4366/4 wl0: Nov  5 2018 03:19:56 version 10.28.2 (r769115) FWID 01-d2cbb8fd

Sorry!

I was experimenting with different BCM4366C0 firmware versions at the time, not all of them exactly working right.

I have reuploaded 19.07.2 with the known-working firmware here.

Thank you for the feedback!

What version did you put in the release?

looks like your release comes with:

4366c0-roml/pcie-ag-splitrx-fdap-mbss-mfp-wnm-osen-wl11k-wl11u-txbf-pktctx-amsdutx-ampduretry-chkd2hdma-proptxstatus-11nprop-obss-dbwsw-ringer-dmaindex16-bgdfs-hostpmac Version: 10.10.69.69 CRC: 34d30c8c Date: Tue 2016-08-23 17:31:24 PDT FWID 01-8438621f
I am using:
4366c0-roml/pcie-ag-splitrx-fdap-mbss-mfp-wnm-osen-wl11k-wl11u-txbf-pktctx-amsdutx-ampduretry-chkd2hdma-proptxstatus-11nprop-obss-dbwsw-ringer-dmaindex16-bgdfs-murx-wwdfs Version: 10.28.2 (r769115) CRC: 6924533a Date: Mon 2018-11-05 03:22:36 PST Ucode Ver: 1128.17924 FWID: 01-d2cbb8fd

Good day!

I have published revision 3 of OpenWrt 19.07.2 for the Linksys EA9500.

This release adds support for using the ~60MiB free space on the internal flash.

I recommend using a wear-leveling file system like ubifs to manage it :slight_smile:

This is how it should look like when flashed:
Annotation 2020-04-13 101835

1 Like

Does that mount on boot or is that a parameter that needs to bet set?

This does not work at all for me. Neither as an upgrade nor as a fresh install via tftp. I rolled back to 19.07.02 r2, re-installed my extra software and restored my config files.

This wrecks my router so bad, that even the linksys comes back with the default settings.

How are you supposed to install this?

Hi, tnx for the build!!
It loads up fine and boots fast but I cant login, it just stops at the login page, on all other builds I just press Login but bothing happens when I do it on this fw, I try get into the Go to password configuration... but same thing, page just reload without sending me anywhere, any ideas? :slight_smile:

/Mikael

Did you end up getting this sorted? If not, I had a similar sounding issue previously when changing from one firmware to the other that had different default Luci themes. Had to clear browser cache and then allowed me to login.

No, no feedback , so cant help unfortenately.

/Mikael

Hello micked99,

I have just encountered this bug (on a different model router, but still on OpenWrt) after some testing upgrades/downgrades, it's just something with the way your browser stores cookies. Try opening up LuCI in Incognito/Private Browsing or a different browser. You can also clear your browser cookies, or just wait until the login cookie is invalidated.

1 Like

Hi, yes, that did it ! :slight_smile: used an incognito tab and everything worked as it should, tnx!!

Good day!

I have published OpenWrt 19.07.3 for the Linksys EA9500.

I've been running this for about 24 hours on my router, works great.
No major changes to board support files this time around - 10.10.69.69 is still the most stable firmware for brcm4366c0 :confused:

1 Like

Good day!

I have published Openwrt 19.07.3 for the Linksys EA9500 and EA9400.

This release adds EA9400 support, and separates builds with and without the flash partitions patch.
If you do not use the space at the end of the flash, you can install the regular builds without the -ubimount suffix.

1 Like