Ubiquiti Edgerouter 10X - ER-10X

I see that there is support for the EdgeRouter X. Would it be possible to get OpenWRT working on the ER-10X?

I'm not planning to use the PoE input but I would like to use the PoE output port. I might be able to work with just the ER-X but it would be nice to have additional ports.

Do you have basic shell skills and a rough understanding of how SoCs work? It takes someone with the device in hand to port it. There isn’t really a “request list” and porting of new devices is often done by enthusiasts, not the core dev team.

Doesn't the Edgerouter range rely heavily on Asics for it's throughput and Packet Inspection?

I wasn't aware of this particular EdgeRouter. I'm familiar with the code that added support for the EdgeRouter X and the 10X appears to use the same processor. I now have one one order and will update this thread when I've received the unit and done some analysis.

2 Likes

Thanks for the responses!

@jeff
Should I have posted somewhere else?

@RaylynnKnight
Great! I look forward to your update.

Not the low end ones, which have good OpenWrt support. The Edgerouter Lite was a Cavium dual core MIPS with three GbE PHY's. The Edgerouter X is entirely a MT7621 chip and some memory. The 10X looks like it adds a switch chip as well as using the internal ports on the MT7621.

2 Likes

Since the question was about support for a "new" device, I felt you'd get the attention of those with the skills and knowledge that could help you more easily in the "For Developers" section.

I've received the unit and have created the Wikidevi page. The second 5 ports are driven by a Realtek RTL8367RB switch. Nice feature is the RJ45 Console port. I'm looking at the Ubiquiti source code now and should have further updates this weekend.

2 Likes

Sorry I've gotten distracted by another development project. I'll try to get back onto this before the end of November.

Oh nice. I was looking for something with more ports than my ER-X.

Sorry work and personal obligations have been getting in the way recently. I can't even remember where I left off with this, but I hope to have some time over the upcoming holidays to look at it again.

Does anyone have some high resolution pictures from the PCB? That would be a good start.

I've got an ER-10X now and started to lookup all the datasheets and the GPL code from Ubiquiti to create a port.

The good news is that it's very much the same as the ER-X but the upper 5 ports are connected to an RTL8367RB which is connected to the MediaTek switch via rgmii (1GBit link speed). That integration looks very dirty in the GPL sources and is based on a rtl8367c driver from RealTek that does not exist in OpenWRT yet.

This is my first port so don't expect an image yet or fast progress but if anyone wants to help feel free to do so. https://github.com/decke/openwrt-er10x

1 Like

I'm not an expert, but it looks like the same RTL8367RB switch is used in TP-Link Archer C2 AC750
https://openwrt.org/toh/tp-link/archer_c2_ac750

1 Like

Yes, the RealTek chip itself is quite common and used by a handfull MT7620 based devices but usually instead of the 5 port mediatek. In the ER-10X it is added in addition to the 5 port mediatek and connected via the rgmii link of the nic chip which seems to be unique but absolutely valid when looking at the datasheet of the MT7621AT.
From the software point of view it looks clumsy what they did in the the original firmware but I am not sure if that is because the Ubiquiti guys didn't know better or because the constellation is so special.

1 Like

Any progress?

No, not much progress since March. Next step would be to build an initramfs image to test if the dts file and other changes are correct. This was broken in openwrt 19.07 because of size restrictions but I found an introduction recently that looks promising:

After a bit of fixing it should be possible to flash openwrt on ER-10X but only with the 5 lower ethernet ports for now because we still need a solution how to support the realtek chip.

This looks like an interesting combo router + managed switch for those of us who need lots of ethernet ports.

Bringing the thread back from the dead..

I've gotten one of these, Ports 0-4 work, 5-9 not yet. the RTL8367RB drivers are in, but I'm unsure how to alter/create the DTS to create tell the kernel "Hey, this is here".

I've got no practical experience with Device Tree files, since my last device it was embedded in Uboot and I never had to touch it.

Any suggestions/tips on how to enable this? This is the stub I've got so far.

/dts-v1/;

#include "mt7621_ubnt_edgerouter-x.dtsi"

/ {
        model = "Ubiquiti EdgeRouter 10X";
        compatible = "ubnt,edgerouter-10x", "mediatek,mt7621-soc";

	rtl8367rb {
		compatible = "realtek,rtl8367b";
	};
};

&gsw {
	interrupt-parent = <&gic>;
	interrupts = <GIC_SHARED 23 IRQ_TYPE_LEVEL_HIGH
		      GIC_SHARED 12 IRQ_TYPE_LEVEL_HIGH>;
	interrupt-names = "gsw", "rtl8367";
};

&nand {
	partitions {
		partition@740000 {
			reg = <0x740000 0x1f4c0000>;
		};
	};
};

&xhci {
	status = "okay";
};

&sdhci {
	status = "okay";
};

&pcie {
	status = "okay";
};

&i2c {
	status = "okay";
};
root@OpenWrt:/# uname -a
Linux OpenWrt 5.10.20 #0 SMP Sat Mar 6 19:23:48 2021 mips GNU/Linux
root@OpenWrt:/# cat /var/sysinfo/board_name
ubnt,edgerouter-10x
root@OpenWrt:/#
root@OpenWrt:/# ifconfig
br-lan    Link encap:Ethernet  HWaddr 74:AC:B9: 
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fd42:bcc8:69d1:4::1/62 Scope:Global
          inet6 addr: fe80::76ac:b9ff:feeb:4376/64 Scope:Link
          inet6 addr: fd0e:ff6e:8fd::1/60 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9051 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6018 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:723689 (706.7 KiB)  TX bytes:826033 (806.6 KiB)

dsa       Link encap:Ethernet  HWaddr 74:AC:B9: 
          inet6 addr: fe80::76ac:b9ff:feeb:4375/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1504  Metric:1
          RX packets:21685 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9535 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2792170 (2.6 MiB)  TX bytes:1218485 (1.1 MiB)
          Interrupt:22

eth0      Link encap:Ethernet  HWaddr 74:AC:B9: 
          inet addr:192.168.200.114  Bcast:192.168.200.255  Mask:255.255.255.0
          inet6 addr: fd42:bcc8:69d1:0:76ac:b9ff:feeb:4375/64 Scope:Global
          inet6 addr: fd42:bcc8:69d1::9b7/128 Scope:Global
          inet6 addr: fe80::76ac:b9ff:feeb:4375/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12633 errors:0 dropped:803 overruns:0 frame:0
          TX packets:3511 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1678109 (1.5 MiB)  TX bytes:313236 (305.8 KiB)

eth1      Link encap:Ethernet  HWaddr 74:AC:B9: 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9051 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6016 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:723689 (706.7 KiB)  TX bytes:825761 (806.4 KiB)

eth2      Link encap:Ethernet  HWaddr 74:AC:B9: 
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth3      Link encap:Ethernet  HWaddr 74:AC:B9: 
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth4      Link encap:Ethernet  HWaddr 74:AC:B9: 
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:747 errors:0 dropped:0 overruns:0 frame:0
          TX packets:747 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:78858 (77.0 KiB)  TX bytes:78858 (77.0 KiB)

root@OpenWrt:/#

The RTL8367RB will need a new DSA driver