Looking for info and possibility of (future) support of TP-Link Omada er605 Router

Hi All,

Can anyone please help me to revert to stock fw.

I do have a backup

Thanks & regards

I think someone wrote it here:

Why You want to revert to stock fw??
Anybody have made some iperf's tests with openWRT??

1 Like

What kind of iperf tests you are referring to/looking for?

Hi, thx for your reply.
I wondering, what kind of router I should to buy.
Now I have HP t620+ whit OPNsense. openWRT are working as my dumb AP (meraki MR16, r6220 and WAC510 ).
HP t620 with 2xGb NIC on PCIe take from my wall on idle state about 10-11W, when I make some iperf3 tests from WAN to LAN take 14-15W...
r6220 can throwput the full 1Gb from WAN to LAN, so the er605 should do that too.
If I will decide to migrate to a router (without wifi) with openWRT, the better choice is er605 or mikrotik RB750Gr3, both have the same CPU MT7621AT, but which one is more stable??
My ISP is DHCP connection, 350/50. Maybe in near future will be 600/100 Mbps.

iperf3 -c host -p 5200 -P 10 -4 -R
iperf3 -c host -p 5200 -P 10 -4 

gives me my ISP speed of 950/50 with about 0.20 load average
SW/HW offloading
no SQM

Hi,
Thx for your test.
Can you make the same tests without SW/HW offloading? With SQM enabled??

I readed, that on fiber more than 500Mbps only the x86 or xPI (BananaPi or somethings like that...) can throwput almost full speed with SQM.

I used an Edgerouter X with OpenWrt in the past. Same MT7621 CPU as the er605. With CAKE, expect ~100 Mbps SQM and with fq_codel expect ~200 Mbps SQM. The CPU has four threads. It's not a bad idea to also install and enable irqbalance and enable packet steering.

With HW offload, these routers easily handle Gigabit, but without HW offload, there is not a lot of CPU under the hood.

Ok. I understood.
I am newbie with openWRT as main router, a past e few years I used OPNsense.
I don't play online, only VOD like Netflix or Disney+, sometimes p2p - mostly bittorent when I download some ISO with Linux.
So the question is.. Is the SQM should working necessarily on my router or not??
It seems to be like in Hamlet "Be or not to be...." :wink:
If the answer is no, SQM is unnecessary, I think, the er605, or any router with the same CPU as er605, should be wright choice.

Bufferbloat is A with SW/HW offloading at waveform test.

Without HW offloading
~ 500Mbits/sec load average 1.2

Without SW offloading
~300Mbits/sec load average 2.3

With SQM according SQM guide
~140Mbit/sec load average 3.4
bufferbloat B even after tuning

Hope this helps.

1 Like

Yes, it's really helped.

So You don't use SQM, only SW/HW offloading.

1 Like

What version of OpenWrt were you using for this?

I recall I could get ~150 Mbps CAKE SQM with 19.07, but with 21.02 and 22.03 CAKE slowed down to ~100 Mbps. It would be good news if 23.05 or snapshot have sped things up.

Aside, if you install and run htop in a terminal window while you test, you can see the percent of each CPU thread in use. This tells you a little more about CPU load than the overall router load figure of merit.

Running 23.05.3

Hi all,

I'm happily running the ER605 now since a couple of weeks.
The only annoyance I currently have, if the Luci UI is painfully slow for the DNS and DHCP page (about 30 sec to display).

To add some details:

Any chance you can share your configuration, dnsmasq is not the only option in Openwrt

No problem sure:

Redacted in a few places and without 28 config host entries


config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '5'

config dnsmasq 'mgmt_dns'
	option domainneeded '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/mgmt.internal/'
	option domain 'mgmt.internal'
	option expandhosts '1'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases.mgmt'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	list interface 'mgmt'
	option localservice '1'
	option allservers '1'
	list notinterface 'loopback'
	option dnssec '1'

config dhcp 'mgmt'
	option instance 'mgmt_dns'
	option interface 'mgmt'
	option start '20'
	option limit '200'
	option leasetime '10m'
	option ra 'server'
	option dhcpv6 'server'
	option preferred_lifetime '10m'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'

config dnsmasq 'main_dns'
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '0'
	option local '/main.internal/'
	option domain 'main.internal'
	option expandhosts '1'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases.main'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	list interface 'main'
	option localservice '0'
	option dnsforwardmax '500'
	option allservers '1'

config dhcp 'main'
	option instance 'main_dns'
	option interface 'main'
	option start '20'
	option limit '200'
	option leasetime '10m'
	option ra 'server'
	option dhcpv6 'server'
	option preferred_lifetime '10m'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
	list dns 'fd00:aaaa:bbbb:20::15'
	option ra_pref64 '64:ff9b::/96'
	option ra_useleasetime '1'
	list dhcp_option '6,10.1.20.15'

config dnsmasq 'guest_dns'
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/guest.internal/'
	option domain 'guest.internal'
	option expandhosts '1'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases.guest'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	list interface 'guest'
	list notinterface 'loopback'
	option localservice '1'
	option allservers '1'

config dhcp 'guest'
	option instance 'guest_dns'
	option interface 'guest'
	option start '20'
	option limit '200'
	option leasetime '30m'
	option ra 'server'
	option dhcpv6 'server'
	option preferred_lifetime '30m'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
	option ra_pref64 '64:ff9b::/96'
	option ra_useleasetime '1'
	list dhcp_option '108,0:0:7:8'
	list dhcp_option '6,94.140.14.15,94.140.15.16'

config dnsmasq 'iot_dns'
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/iot.internal/'
	option domain 'iot.internal'
	option expandhosts '1'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases.iot'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	list notinterface 'loopback'
	option localservice '1'
	list interface 'iot'
	option allservers '1'

config dhcp 'iot'
	option instance 'iot_dns'
	option interface 'iot'
	option start '20'
	option limit '200'
	option leasetime '10m'
	option ra 'server'
	option dhcpv6 'server'
	option preferred_lifetime '10m'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
	list dhcp_option '6,10.1.70.15'
	list dns 'fd00:aaaa:bbbb:70::15'

config dnsmasq 'work_aaa_dns'
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/aaa.internal/'
	option domain 'aaa.internal'
	option expandhosts '1'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases.work_aaa'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	list interface 'work_aaa'
	list notinterface 'loopback'
	option localservice '1'
	option allservers '1'

config dhcp 'work_aaa'
	option instance 'work_aaa_dns'
	option interface 'work_aaa'
	option start '20'
	option limit '200'
	option leasetime '30m'
	option ra 'server'
	option dhcpv6 'server'
	option preferred_lifetime '10m'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
	list dhcp_option '6,1.1.1.3,1.0.0.3'
	list dns '2606:4700:4700::1113'
	list dns '2606:4700:4700::1003'
	option ra_useleasetime '1'

config dnsmasq 'work_bbb_dns'
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/bbb.internal/'
	option domain 'bbb.internal'
	option expandhosts '1'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases.work_bbb'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	list interface 'work_bbb'
	list notinterface 'loopback'
	option localservice '1'
	option allservers '1'

config dhcp 'work_bbb'
	option instance 'work_bbb_dns'
	option interface 'work_bbb'
	option start '20'
	option limit '200'
	option leasetime '30m'
	option ra 'server'
	option dhcpv6 'server'
	option preferred_lifetime '10m'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
	list dhcp_option '6,1.1.1.2,1.0.0.2'
	list dns '2606:4700:4700::1112'
	list dns '2606:4700:4700::1002'
	option ra_useleasetime '1'

config dhcp 'jool'
	option interface 'jool'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option ignore '1'
	option ra 'server'
	option ra_default '2'

config dhcp 'dmz'
	option instance 'dmz_dns'
	option interface 'dmz'
	option start '20'
	option limit '150'
	option leasetime '30m'
	option ra 'server'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
	option dhcpv6 'server'
	option preferred_lifetime '10m'
	option force '1'
	option ra_slaac '0'
	option ra_useleasetime '1'
	option ra_pref64 '64:ff9b::/96'
	list dns '2606:4700:4700::64'
	list dns '2606:4700:4700::6400'

config dnsmasq 'dmz_dns'
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '0'
	option local '/dmz.internal/'
	option domain 'dmz.internal'
	option expandhosts '1'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases.dmz'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	list notinterface 'loopback'
	option localservice '1'
	list interface 'dmz'
	option allservers '1'

Not sure if I should start a new post or add onto this long thread.
First off, thanks to those who’ve come before – there’s a lot of really helpful stuff in here.
I have an ER605 and likely will have quite a few more. I am really keen to get them all on OpenWRT. However, before I can, I need to prove that I can safely flash to OpenWRT and back to stock reliably. I understand there’s some complications with this and I wanted to confirm before I continued.
As per chill1penguin's guide, step 4 recommends a full MTD backup, which seems sensible.
I have root access.
From another Linux system (WSL) I am able to create and run the full backup script mentioned. However, there are problems:

$ ./mtdbk.sh
Opening master SSH connection
root@192.168.0.1's password:
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 BARRIER BREAKER (Barrier Breaker, unknown)
 -----------------------------------------------------
  * 1/2 oz Galliano         Pour all ingredients into
  * 4 oz cold Coffee        an irish coffee mug filled
  * 1 1/2 oz Dark Rum       with crushed ice. Stir.
  * 2 tsp. Creme de Cacao
 -----------------------------------------------------
./mtdbk.sh: line 50: unexpected EOF while looking for matching `''
./mtdbk.sh: line 18: .set: command not found

I have noticed other mentions of ubiformat to restore the backup and I hope to test that… but first I’m not sure how to actually get the backup (with the recommended script above failing).
Any pointers to assist me in getting the backup would be appreciated. I am not sure if this router needs modified instructions, or I'm missing something.

OK, I worked it out. Turns out that Oracle Linux 8 doesn't like the syntax used in the published MTD backup script, but Ubuntu was quite happy to run it.
Also, in order to login via SSH from Ubuntu, I needed to use BOTH algorithm options chill1Penguin mentioned in step 3 together in 1 line like this:
ssh -o hostkeyalgorithms=ssh-rsa -o KexAlgorithms=+diffie-hellman-group1-sha1 root@192.168.0.1
Using these 2 things, I was able to complete the full backup of the original stock firmware before I mess with re-flashing with OpenWRT. I have posted another thread to explain this, just in case anyone else had the same problems.

I have tested OpenWRT on the ER605 now to satisfaction - big thanks to @chill1Penguin for your work on this and to others in here for your work on this too.
My main aim is to prove viability of flashing OpenWRT and reverting to stock (and back) without the need to open the case. I would be happy to use UART, but I want to avoid if possible.
I see the current recommendations for restore assume UART, though I hope I can attempt it with only root SSH access. Is this naive? I have a complete MTD backup. I see from what @lazarost has posted that it is done via serial and u-boot. I can see that @chill1Penguin suggests the image is piped over ssh or http server directly to ubiformat. I'm not sure if this suggests I could do it without serial, but I would like to try! (I have never backed up nor restored like this before).
I would ultimately like to prove a method to revert to stock that does not require opening the case (even if UART would still be the official recommended method).
Any pointers or suggestions or warnings would be appreciated.

Hi r5e,

Unfortunately, at least when I was testing it, it is not possible to reflash the MTD partitions back to stock while the device is running normally. It will complain that it can not unlock the mtd3 partition, which is logical since this is the firmware partition that is loaded and already in use by the device.

So, enabling the console port and loading just the openwrt kernel is the only way to reflash afaik.

Would love as well not having to solder ports, so if you or someone can figure out some other workaround, that would be awesome.

Thanks Lazarost. It makes sense. I'm still learning here, but also still got some determination to do something with this (as I also want to move onto an ER7206 after this).

From what I've read so far in this thread, there is:

  1. Network Boot Recovery Mode - hold down reset & browse to 192.168.0.10(static). I wouldn't expect this to get too far if it's already been flashed to OpenWRT as the partitions have been re-written, so doing this after you have a working OpenWRT build is only going to cause trouble - right?
  2. UART. Via serial. Using ubiformat, restore the full MTD backup. At this point it would be possible to recover stock firmware (as in step 1).

Other methods that have not been found yet would still need to reformat the partitions to match what TP-Link stock expects and then push the backup to it. We can't do this via SSH while the current software is running as we need to access from somewhere else so we can re-write where it normally runs.

Other methods may include:
TFTP. Does anyone know of any other TP-Link products that may use similar methods, or have any hints or suggestions about what might be tried to test this?
USB. There's a socket already wired onto the board. I'm guessing it would be too good to be true that there might be some method of either using it as a source to load the backup. Or possibly (doubt it) being able to get some sort of console access via this rather than UART.
Another script, but the reverse of chill1Penguin's that allows the MTD to be reformatted back, then the stock loaded.
Have I missed anything, any other avenues to explore?

In the meantime, I'm going to attempt the UART method. I have a header and the 4 easily laid out holes seems pretty easy, but I noticed @goetz mentioned that R2 and R5 need to be shorted. Just to clarify - these are the TX and RX - right?