Add support for Linksys EA6350 v3

So, can I just install the latest OpenWRT snapshot to my EA6350v3 router and it will work fine, both 2.4 and 5GHz bands? what if I want to go back to OEM firmware?

Yes!

My commit was merged into Master and I sent the files to infradead. Wireless performance will be good for all of us now!

By this means I think that we don't need more prebuilts from me. I think I'll shutdown my buildbot and store it in my closet!


It was a pleasure to work with all of you! Thank you for this experience, for your help and for your support!

6 Likes

Yes @gapf2010 both Wifi bands works fine in the snapshot releases now.
Regarding reverting back to the vendor firmware, I have never tried it myself, have not seen the point.
There is an "Advanced Reboot" software you can install which lets you switch back to the previous firmware, but if you have flashed it with OpenWrt twice you have to use other methods.
One such option could be that BackToStock script which is available in the @NoTengoBattery releases.
But as I said, I have not tried any of these methods myself, once you have experienced the power of OpenWrt you don't want to go back :slight_smile:

Do not reference my builds: my repo is down. My buildbot is down. I don't see enough interest for my builds to keep that going. In fact, I promised the opposite sometime ago: with enough interest I will setup a server for the kernel modules if you really needed to install more software.

I did a hard work doing that, and I don't see a reason to keep working hard if nobody is gonna use it because the official snapshot now have a good wireless performance. That does not makes sense to me.

I did this hard work mainly for people that ask "Can I use OpenWrt with this device? Will it work?" which generally means "Will I have all features from the OEM firmware? Will it be to flash and start setting it up?" The answer is: with the snapshots, no; with my build, yes.

With the snapshots have to work in the terminal before even getting a GUI. Some people is really scared about using the terminal. People which (indirectly) can help us to test this device for bugs! Not everybody here is a savvy sysadmin.

I did this for pure convenience, because:

  • You don't need to install a lot of software from the command line before even starting: it "just works out of the box"
  • Some people is really scared of the command line
  • Installing all your software every sysupdgrade, over and over again is inconvenient and bad for your device's flash
  • You need to install Samba4 first because it will not fit the device if you installed other software before
  • I want to keep and edge on performance, building OpenSSL for performance, and building the whole distro using Linaro GCC, with the '-Ofast' flag and some other considerations that I learnt from developing a toy OS for ARM
  • Even when being objectively more performant, it is smaller because the binaries are stripped using binutils strip (saves some MiB in the final image)
  • Mainly because I wanted to make more confident the people that is scared to test, giving them options for getting a lightweight distro, a full distro, a sensible initial configuration (wifi enabled and secured by default, DNSSEC servers, 192.168.50.1 as the default IP which is very unlikely to conflict with other networks, etc), a script for safely and easily reverting back to stock (for claiming warranties or something like that), and a bleeding edge performance with no impact on stability

The next prebuilt was better because I reduced the tar size by removing the non-core IPKs and by providing the image builder! If you wanted to use my smaller and faster binaries for building your own image.

I always tested my builds for 48 hours and checked everything, every small change I did. Some builds didn't even worked and I did not uploaded them (except for one that had a messed up OpenSSL). The other builds ran without crashes or problems for about 48 hours.


Needless to say: good bye. Thanks to all of you. I've muted this thread. Reach me using PM or my e-mail if you really want to.

Thanks for all your work, very appreciated. I installed OpenWRT from Feb 21 on my EA6350v3 and it has been working plawlessly for 8 hours so far. Let's see how it behaves in the long run.

I'd like to add my thanks to @NoTengoBattery and others for their work on the EA6350v3 hardware. I'm going to order a unit based on the strength of reports in this thread. Given the support in snapshot builds, I expect the next official release will include EA6350v3 support. It looks like really capable hardware for a nice price.

I've been off the board a few days and c ome back to see everything NoTengoBattery has done, is now gone. Where can I get his last prebuilt image now>

@NoTengoBattery builds are gone for good. His work has been merged into official OpenWRT devel snapshots starting Feb 21 2019, and you can get nice 2.4 and 5GHz speeds. Support is still not perfect though: you have to install luci manually, and when you do that, the switch configuration does not display the WAN port, so you can't add VLANs to it and have to configure things using the command line, but it does seem to work.

I have the snapshot factory build installed and everything configured the way I like it. Everything absolutely rock steady atm. Just one question - should I install the snapshot update now or leave well enough alone?

If it's not broken, don't fix it.

1 Like

One of the drawbacks of using a snapshot release is that the kernel module repos are removed after a while so unless you have made an own copy it may be problematic to install new modules later unless you upgrade to a later snapshot.
I noticed on the 18.06 roadmap that the plan is to start preparations for an 18.06.3 release in March which I guess will include the EA6350v3.

2 Likes

As reminder for those lamenting the disappearance of pre-builds, recent commits to OpenWRT master have made it straigtforward to create customs images with a more "standard" set of packages: luci, sqm, adblocking, vpn, etc.

The two simplest options are:

  1. Use the latest imagebuilder snapshot and follow the OpenWRT wiki directions.
  2. Use the online image builder created by @aparcar. Simply select the "OpenWRT" distribution, "snapshots" version, "EA6350v3" device, and flavour "OpenWrt with web interface". Then click "Create Image" and wait for you links to be created. Here's a link to a standard luci-included image I created just today.

The EA6350v3 support in `master` is now great, with solid wifi and stability as far as I've seen. There are still a few minor issues to be addressed however.

I've noticed the switch and VLAN problems as well. The default network setup works, but it doesn't appear to match the internal switch configuration:

# swconfig dev switch0 show
...
VLAN 1:
        vid: 1
        ports: 0 1 2 3 4
VLAN 2:
        vid: 2
        ports: 0t 5

Although the current network setup puts "lan" as eth0 and "wan" as eth1, based on the switch both appear to be VLANs routed between a single CPU port 0, which traditionally would be a lan/wan of eth0.1/eth0.2 (but that causes problems).

Starting to fix things, I think CPU port 0 needs to be tagged on VLAN 1. After testing this, the VLAN page looks as expected:

However, the board setup code still needs updating to fix this during a "clean" install, or perhaps a custom /etc/board.json could be used. @gapf2010 What changes did you make? Does your luci page look similar to mine above?

1 Like

I see the same thing on the EA8300 -- might be a common IPQ40xx problem. I haven't played around with it much, but I want to check to see if eth1 is connected to the switch, or perhaps to a port directly. That the device I'm working on supports bonding in the OEM firmware might mean that it bypasses the switch fabric. Or not.

VLAN 1:
	vid: 1
	ports: 0 1 2 3 4 
VLAN 2:
	vid: 2
	ports: 0t 5 
config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '1 2 3 4 0'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '5 6'

From 02_network (at least in my envorinment)

        avm,fritzbox-4040|\
        linksys,ea6350v3)
                ucidef_set_interfaces_lan_wan "eth0" "eth1"
                ucidef_add_switch "switch0" \
                        "0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan"
                ;;
        linksys,ea8300)
                ucidef_set_interfaces_lan_wan "eth0" "eth1"
                ucidef_add_switch "switch0" \
                        "0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan" \
                        "6u@eth1" "5:wan"
                ;;

@jeff Yeah, I'm also trying to find online documentation on the system switch configuration, but without luck beyond the ipq4018 product brief and the qca8075 phy. From the PHY docs I could see there might be a direct WAN port connection (i.e. GEPHY4).

Something strange I noticed in your setup: swconfig seems to show a single CPU connection (port 0), while your board config is showing two. To clarify, could you post the output of the two commands:

swconfig dev switch0 help|head -5

and

swconfig dev switch0 show|tail -10

Maybe there's a detection problem which has be overridden? I'd be interested to also see your /etc/board.json too. Does you Luci switch configuration page look OK currently?

Any thoughts @chunkeey?

EA8300 WIP:

root@OpenWrt:~# swconfig dev switch0 help
switch0: 90000.mdio(QCA AR40xx), ports: 6 (cpu @ 0), vlans: 128
     --switch
	Attribute 1 (int): enable_vlan (Enable VLAN mode)
	Attribute 2 (none): reset_mibs (Reset all MIB counters)
	Attribute 3 (int): enable_mirror_rx (Enable mirroring of RX packets)
	Attribute 4 (int): enable_mirror_tx (Enable mirroring of TX packets)
	Attribute 5 (int): mirror_monitor_port (Mirror monitor port)
	Attribute 6 (int): mirror_source_port (Mirror source port)
	Attribute 7 (int): linkdown (Link down all the PHYs)
	Attribute 8 (none): apply (Activate changes in the hardware)
	Attribute 9 (none): reset (Reset the switch)
     --vlan
	Attribute 1 (int): vid (VLAN ID (0-4094))
	Attribute 2 (ports): ports (VLAN port mapping)
     --port
	Attribute 1 (none): reset_mib (Reset single port MIB counters)
	Attribute 2 (string): mib (Get port's MIB counters)
	Attribute 3 (int): pvid (Primary VLAN ID)
	Attribute 4 (unknown): link (Get port link information)
Global attributes:
        enable_vlan: 1
        enable_mirror_rx: 0
        enable_mirror_tx: 0
        mirror_monitor_port: 0
        mirror_source_port: 0
        linkdown: ???
Port 0:
[...]
        pvid: 1
        link: port:0 link:up speed:1000baseT full-duplex txflow rxflow 
Port 1:
[...]
        pvid: 1
        link: port:1 link:up speed:1000baseT full-duplex txflow rxflow auto
Port 2:
[...]
Port 5:
[...]
        pvid: 2
        link: port:5 link:down
VLAN 1:
        vid: 1
        ports: 0 1 2 3 4 
VLAN 2:
        vid: 2
        ports: 0t 5 
root@OpenWrt:~# cat /etc/board.json 
{
	"model": {
		"id": "linksys,ea8300",
		"name": "Linksys EA8300 (Dallas)"
	},
	"network": {
		"lan": {
			"ifname": "eth0",
			"protocol": "static"
		},
		"wan": {
			"ifname": "eth1",
			"protocol": "dhcp"
		}
	},
	"switch": {
		"switch0": {
			"enable": true,
			"reset": true,
			"ports": [
				{
					"num": 0,
					"device": "eth0",
					"need_tag": false,
					"want_untag": true
				},
				{
					"num": 1,
					"role": "lan"
				},
				{
					"num": 2,
					"role": "lan"
				},
				{
					"num": 3,
					"role": "lan"
				},
				{
					"num": 4,
					"role": "lan"
				},
				{
					"num": 6,
					"device": "eth1",
					"need_tag": false,
					"want_untag": true
				},
				{
					"num": 5,
					"role": "wan"
				}
			],
			"roles": [
				{
					"role": "lan",
					"ports": "1 2 3 4 0",
					"device": "eth0"
				},
				{
					"role": "wan",
					"ports": "5 6",
					"device": "eth1"
				}
			]
		}
	}
}

Edit:
If I move my only "live" Ethernet cable to the "Internet" port, I get

[43445.205962] ess_edma c080000.edma: eth1: GMAC Link is up with phy_speed=1000
[43445.206395] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready

If I reboot in that configuration (cable live on "Internet" port only) and look at the counters, port:5 is up, and the traffic counters seems to be increasing on port:0. Not examined in great detail, such as checking the numbers (as I've only got serial connectivity).

Thanks for the additional details; this does match up with what I've been thinking too. I also see the ess_edma driver line for eth1, with a corresponding port link state change from swconfig. And given the QCA8075 block diagram, it does seem likely the WAN port is connected to both switch port 5 and eth1 on the CPU, but isolated from the LAN on the switch by vid 2.

The fact that on EA6350v3 the Luci VLAN config "hides" the WAN port connection on vid 2 is dangerous, since someone could enable tagging on CPU(eth0) and then try to place a former LAN port into a new VLAN with vid 2 (same as hidden WAN), causing all sorts of problems.

I think the "fake" port 6 I see on your EA8300 as "CPU(eth1)" is a kludge made for safety's sake, as a placeholder for VLAN/vid 2 to help avoid the problem I described above.

Honestly, I would like to see this also for EA6350v3, but would first still like more insight into the internal "wiring" of switch/ethernet ports on the SoC. However, I did test it on my EA6350v3 just fine.

No “kluge”, just how I would have configured the switch for a typical dual-Ethernet board. That’s the only reason it’s configured that way at the moment.

Hi, currently I have not done any changes to the router config. i tried to add the WAN port to the Luci interface by modifying the /etc/board.json file, but I messed it completely, so I had to restore the original one. I just tagged the CPU port as you suggested, but my Luci still does not display the WAN port, how did you manage to display it? does it survive a reboot? Thanks!

Edit: Here's the "ip add" command on my router. Notice that eth0 has a differente MAC address from eth1, that leads me to believe they are in fact different interfaces:

root@wl:~# ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 60:38:e0:70:9b:78 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br-lan state UP qlen 1000
    link/ether 60:38:e0:70:9b:77 brd ff:ff:ff:ff:ff:ff
6: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 60:38:e0:70:9b:78 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 brd 192.168.1.255 scope global br-lan
       valid_lft forever preferred_lft forever
    inet6 fe80::6238:e0ff:fe70:9b78/64 scope link 
       valid_lft forever preferred_lft forever
7: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP qlen 1000
    link/ether 60:38:e0:70:9b:79 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::6238:e0ff:fe70:9b79/64 scope link 
       valid_lft forever preferred_lft forever
8: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP qlen 1000
    link/ether 60:38:e0:70:9b:7a brd ff:ff:ff:ff:ff:ff
    inet6 fe80::6238:e0ff:fe70:9b7a/64 scope link 
       valid_lft forever preferred_lft forever
10: eth0.1@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP qlen 1000
    link/ether 60:38:e0:70:9b:78 brd ff:ff:ff:ff:ff:ff
root@wl:~# 

Hi

I had to go back to the stock firmware on my Linksys because I noticed some strange problems:

  1. Many instagram images would not load when using wifi. No clue why, just displayed a gray square instead of the image, however when using a LAN cable, they would load OK.
  2. Some "status" images on WhatsApp would not load either. Same for some images on Twitter.
  3. Having no VLAN on the WAN side, I could not configure my Internet connection properly, had to use my router as an access point. It has worked that way since many months ago, however I wanted to use the PC I have as a firewall/router for other stuff, but it seems I can't. I would use the stock firmware for this, but the lack of internal DNS is a showstopper for me.

I went back to the stock firmware in bridge mode, and now everything works fine. To go back, I installed " luci-app-advanced-reboot" from this page: https://stangri.github.io/openwrt-repo/

Thanks for the huge effort though, I hope late I can install OpenWRT on my router and make it work as it should.

Very interesting findings @gapf2010. My wife complained that Instagram was not working properly in the room where I have the EA6350. After all the benchmark tests I have run with different wifi calibration board images I assumed it was a problem on the Instagram end (I don't use that app much myself).
But after reading your post I started the app on my phone and could see that some images would not load, seems that updating from Instagram is not working well in general so I walked over to a different room where I have another access point and the images loaded right away!?!?
Really strange...