Build for Linksys EA9500

OpenWrt for Linksys EA9500 v1.0/v1.1

First time Installation

US Model:
Linksys secure-signs the firmware for this router, hence it is not possible to install using Factory UI.

So, this router requires a serial cable connected to the router. On boot, interrupt the boot by Ctrl+C and enter CFE prompt. Make sure tftp server is running. Download tftpd sever from here. Detailed instructions here. Disassembly instructions here

From CFE prompt execute following. Where is where your tftp server is running.

 flash -noheader nflash0.trx

Also you may want to reset partial boots and boot partition using

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

NOTE: This router has two copies of firmware. The router switches between one or the other after three consecutive partial boots. You can force a partial boot by turning off router 10 seconds after booting.
Once you have installed Lede on one partition, leave the second partition on Factory firmware. this way you can dual boot into Openwrt or Factory.

Non-US EA9500 Model First Flash This

Full Builds

  • 2021-10-10 ALFHA BUILD! Works on my router, report back issues. DSA driver, Kernel v5.10.72.
  • 2021-08-09 Kernel v5.4.137
  • 2021-02-15 Kernel v5.4.98. Perform factory reset if possible.
  • 2020-11-23 Kernel v5.4, swconfig driver instead of DSA. Please factory reset after installing.
  • 2020-01-02 Supersedes Dec 31st build. Kernel v 4.19.91, Read wifi instructions below
  • 2019-06-19 Kernel v4.19.52 :us:
  • 2019-03-15 Kernel v4.19.25, hardware tagging, Congestion Control :shamrock:

Revert to Factory EA9500_Factory.trx

  • Flash from CFE:
flash -noheader nflash0.trx
flash -noheader nflash0.trx2
  • Flash factory from ssh
mtd write /tmp/EA9500_Factory.trx firmware
mtd write /tmp/EA9500_Factory.trx failsafe

Wifi Instructions:

  • Make sure to set country code: United States: US, World: EU
  • 5Ghz Radios:
    • radio0 and radio2 - stick to 40Mhz bandwidth
    • radio0 stick to lower bands (36, 40, 44, 48, 52, 56, 60, 64)
    • radio2 stick to higher bands (136,140,144,153,157,161,165)


Package list based on


Do you have any suggestion how to upload the firmware via TFTP? Been trying for two days now and still no luck. What is the perfect timing for pressing upload button?

Unplug the router and adapter and keep it for 15 mins. And plug your wire into port 8. Make sure to use Linux and set static ip/mask/gateway = in network config file. Use ifconfig eno1 up/down to enable disable ethernet port. Disable any network manager that may interfere with this steup.

I use tftp one line command from the openwrt link above. Make sure the trx path you provide exsist. Also, the right time to hit enter is after you see all the lights flash.

As a test, make sure you can ping after lights flash.


I tried it myself but can't get thru myself now - it worked earlier. Will try to do this over the weekend.

I have to admit unfortunately, tftp client method does not work. I opened my router again and hooked up the serial port. Clearly the router has been disabled to load any trx from tftp client:

CFE log from ea9500

Device eth0:  hwaddr 60-38-E0-XX-XX-XX, ipaddr, mask
        gateway not set, nameserver not set
Loader:raw, invalid tftp target filename (:)!
Could not load :: Invalid parameter

Normally the log should look like this (from EA6500):

 Device eth0:  hwaddr C8-D7-19-XX-XX-XX, ipaddr, mask 
            gateway not set, nameserver not set 
 Loader:raw Filesys:tftp Dev:eth0 File:: Options:(null)
 Loading: Failed. 
 Could not load :: Timeout occured

You can see CFE is crippled by removing the tftp and eth0 params.

I may have uploaded using serial port and not the tftp client. And mixed up later when I was making a note about it.

Thank you m8 for the clarifications! Can you please link me what serial cable do i need to buy that i can upload the software.

Thank you!

This cable works with Windows 10 out of the box:

Adafruit Serial Cable

Black cable-----GND
Green cable----TXD
White cable----RXD

If you are not from US, make sure to send me nvram dump, so I can make adjustments for region code etc.

Have been using this snapshot for a few weeks, works great!

Only thing I've noticed is with this particular router, it is a tri-band device.
This question is more likely towards Lede in general, but I was trying to see if there was a way to configure a load balance on the extra 2 5GHz radios (If one radio has x devices it will push to the next radio)

I've named both 5GHz's to the same SSID, but it appears the wireless device will only connect to one radio.

I'm not sure if this is a limitation with the wireless devices themselves connecting to the first radio they see, but I'm wondering how the stock firmware handles this, as I think I remember only being able to assign a one SSID for the 5GHz network

For now, I'm just going to set up another SSID and manually connect devices to the appropriate radios.

Thanks for the build!

1 Like

This is called 'band steering'. Technically latest hostapd should support this. It may need some configuration. You should be able to find more info on LEDE or OpenWrt forums. I'll try to find specific settings needed myself.

Hey @npcomplete: Could you let me know how to rip open the case.... Sorry to ask such a dumb question...

Also, I just read some instruction about flashing the 8500 with LEDE. Some of the instruction states that I need to ensure both copy of the firmware to be compatible with LEDE. Did you find anything fishy about the 9500 on this matter? Which version of the stocked firmware should I use before uploading the LEDE payload.


There are four screws at the bottom. Three in the corner below the rubber feet and one in the center below the label. Then you need to undo the clips (lack of better word) under the case using a flat screw driver. Start at a corner. Make sure to use an old credit card to keep the undone clips apart.

Two copies of the firmware don't need to be same. No side effects observed.

Thanks for the help. The build is up and running. Very solid build.

I was trying to install ipset package, but got an error message:

satisfy_dependencies_for: Cannot satisfy the following dependencies for ipset:

  • kernel (= 4.9.30-1-f455e1acbf4f62e2bbf0f2755e16500f) * kernel (= 4.9.30-1-f455e1acbf4f62e2bbf0f2755e16500f) *
  • opkg_install_cmd: Cannot install package ipset.

I did a little research around the topic, and found that kernel 4.9 seems to be really new (Or, the ipset package is really old). Thus, I wonder if there is a chance to build the firmware with kernel 4.4?


I saw that I downloaded the version with 4.9 kernel. So I am trying to install the release that is slightly older. Is there any other difference between the release with 4.9 kernel and the one that is earlier?


I just realize that it is not an older kernel that I am looking for, but the newer 4.9.30... Is there a way to get a build with 4.9.30?

The trick to get all kernel mod packages working is by using release sources instead of trunk.

Other option is that I can post the latest source changes and you can build yourself.

I don't quite understand the reference to "release source". Do you mean I pull from LEDE's repo and build it? I found this instruction about using opkg which recommand "If you are using a snapshot / trunk / bleeding edge version, it's warmly recommended to use the Image Builder to make a flashable image containing all packages you need." Does that mean that I should create an image with my desired packages?

Yes once I post the source, you should be able to build yourself.

Edit: I'm building new image of tag v17.01.1 so you should have no problem installing packages from LEDE directly.

1 Like

Great! Looking forward for it.

Ok it seems that all the releases are based on kernel 4.4 :frowning: It doesn't make sense to move back to older kernel. So the best option is to build it from patch. I've attached patch to first post of this thread.

I will try to create a build for you once a new release is cut.

Thanks!! I will read the patch file tonight. To build the new firmware, should I apply the patch to the latest clone from GitHub?

Latest clone should work. Make sure to take a backup of the /lib/firmware/brcfmac/4366c.bin
Then copy it back once you upgrade.

What target system and target profile do I need for building?

BCM47xx/BCM53xx (ARM). Then choose Linksys EA9500