OpenWrt 22.03 and WDR4900v1

Instead bothering with the patches, I just cloned the CHKDSK88 repo , tl-wdr4900_v1_resurrect branch.
It compiled right away and first test seem to work nicely.
I was wondering how the cpu and memory overclocking increased the network performance, I would like to compare against a normal WDR4900 (Soldering/desoldering the resistors to change the speed is a messy job).
(1.4GHz, DDR800)

Misc tests:

time dd if=/dev/zero of=/dev/null bs=1M count=10240

10240+0 records in
10240+0 records out
real    0m 7.67s
user    0m 0.00s
sys     0m 7.65s

coremark

2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 21301
Total time (secs): 21.301000
Iterations/Sec   : 5164.076804
Iterations       : 110000
Compiler version : GCC11.3.0

Iperf3


Openwrt   iperf3 -s -D && sleep 1 && iperf3 -c 127.0.0.1 && killall iperf3

Connecting to host 127.0.0.1, port 5201
[  5] local 127.0.0.1 port 35098 connected to 127.0.0.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   170 MBytes  1.42 Gbits/sec    0   1.06 MBytes
[  5]   1.00-2.00   sec   168 MBytes  1.41 Gbits/sec    0   1.06 MBytes
[  5]   2.00-3.00   sec   170 MBytes  1.42 Gbits/sec    0   1.06 MBytes
[  5]   3.00-4.00   sec   169 MBytes  1.42 Gbits/sec    0   1.06 MBytes
[  5]   4.00-5.00   sec   170 MBytes  1.43 Gbits/sec    0   1.06 MBytes
[  5]   5.00-6.00   sec   170 MBytes  1.42 Gbits/sec    0   1.06 MBytes
[  5]   6.00-7.00   sec   169 MBytes  1.42 Gbits/sec    0   1.06 MBytes
[  5]   7.00-8.00   sec   170 MBytes  1.43 Gbits/sec    0   1.06 MBytes
[  5]   8.00-9.00   sec   170 MBytes  1.43 Gbits/sec    0   1.06 MBytes
[  5]   9.00-10.00  sec   170 MBytes  1.43 Gbits/sec    0   1.06 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.66 GBytes  1.42 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  1.66 GBytes  1.42 Gbits/sec                  receiver

Windows host   iperf3 -s
Openwrt             iperf3 -c computer_ip

Connecting to host 192.168.1.x, port 5201
[  5] local 192.168.1.x port 52080 connected to 192.168.1.x port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  72.8 MBytes   610 Mbits/sec    0    211 KBytes
[  5]   1.00-2.00   sec  72.6 MBytes   610 Mbits/sec    0    211 KBytes
[  5]   2.00-3.00   sec  72.6 MBytes   609 Mbits/sec    0    222 KBytes
[  5]   3.00-4.00   sec  72.5 MBytes   608 Mbits/sec    0    222 KBytes
[  5]   4.00-5.01   sec  71.4 MBytes   594 Mbits/sec    0    222 KBytes
[  5]   5.01-6.02   sec  72.5 MBytes   603 Mbits/sec    0    222 KBytes
[  5]   6.02-7.01   sec  71.2 MBytes   601 Mbits/sec    0    222 KBytes
[  5]   7.01-8.02   sec  72.5 MBytes   605 Mbits/sec    0    222 KBytes
[  5]   8.02-9.00   sec  70.6 MBytes   601 Mbits/sec    0    222 KBytes
[  5]   9.00-10.00  sec  73.4 MBytes   617 Mbits/sec    0    222 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   722 MBytes   606 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   722 MBytes   605 Mbits/sec                  receiver

Openwrt            iperf3 -s
Windows host  iperf3 -c openwrt_ip

Connecting to host 192.168.1.x, port 5201
[  4] local 192.168.1.x port 3765 connected to 192.168.1.x port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  87.1 MBytes   730 Mbits/sec
[  4]   1.00-2.00   sec  86.9 MBytes   728 Mbits/sec
[  4]   2.00-3.00   sec  86.8 MBytes   729 Mbits/sec
[  4]   3.00-4.00   sec  86.5 MBytes   726 Mbits/sec
[  4]   4.00-5.00   sec  87.2 MBytes   731 Mbits/sec
[  4]   5.00-6.00   sec  86.6 MBytes   727 Mbits/sec
[  4]   6.00-7.00   sec  86.6 MBytes   727 Mbits/sec
[  4]   7.00-8.00   sec  86.9 MBytes   729 Mbits/sec
[  4]   8.00-9.00   sec  86.9 MBytes   728 Mbits/sec
[  4]   9.00-10.00  sec  87.1 MBytes   730 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec   869 MBytes   729 Mbits/sec                  sender
[  4]   0.00-10.00  sec   868 MBytes   728 Mbits/sec                  receiver

Now connecting the PC at the main router, so the traffic goes through the WAN port:
Windows host  iperf3 -s
Openwrt            iperf3 -c computer_ip

[  5] local 192.168.0.x port 55728 connected to 192.168.0.x port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  87.9 MBytes   738 Mbits/sec    0    211 KBytes
[  5]   1.00-2.00   sec  97.1 MBytes   814 Mbits/sec    1    214 KBytes
[  5]   2.00-3.00   sec  95.7 MBytes   802 Mbits/sec    0    214 KBytes
[  5]   3.00-4.00   sec  95.3 MBytes   800 Mbits/sec    0    214 KBytes
[  5]   4.00-5.00   sec  94.1 MBytes   790 Mbits/sec    0    214 KBytes
[  5]   5.00-6.00   sec  96.1 MBytes   806 Mbits/sec    0    214 KBytes
[  5]   6.00-7.00   sec  96.7 MBytes   811 Mbits/sec    0    214 KBytes
[  5]   7.00-8.00   sec  96.2 MBytes   807 Mbits/sec    0    214 KBytes
[  5]   8.00-9.00   sec  97.4 MBytes   816 Mbits/sec    0    214 KBytes
[  5]   9.00-10.00  sec  96.9 MBytes   814 Mbits/sec    0    214 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   953 MBytes   800 Mbits/sec    1             sender
[  5]   0.00-10.00  sec   953 MBytes   799 Mbits/sec                  receiver
2 Likes

And it's now on master! :ok_hand:

2 Likes

Nevermind << Idiot here

Something should have happened at some point when updating my uboot while testing.
Probably typing error or a bad copy & paste.

The data stored after uboot was messed up:

4FC30 - 4FC35   MAC address
4FDC0 - 4FD37   Product ID/Version
4FDE0 - 4FE37   WPS default pin

Should be:

4FC00 - 4FC05   MAC address
4FD00 - 4FD07   Product ID/Version
4FE00 - 4FE07   WPS default pin

Sorry if I caused anyone losing time on this!

Awesome! :grinning: Looking forward WDR4900v1getting 22.03.2 officially.

Final iperf3 tests
This will be a little slower for normal WDR4900 @ 800MHz, but performance difference between versions is there.
Openwrt client, Windows server at LAN
Made no less than 10 runs on each version, rebooting the main router and Openwrt after initial setup to ensure clean results.
All versions achieve ~1.4Gbit/s running both iperf server & client on Openwrt

Lede 17.1.7

Slower, results are constant

[ ID] Interval           Transfer     Bitrate         Retr
[  4]   0.00-10.02  sec   430 MBytes   360 Mbits/sec    0             sender
[  4]   0.00-10.02  sec   430 MBytes   360 Mbits/sec                  receiver

Openwrt 18.06.9

Slow, results are constant

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.03  sec   386 MBytes   323 Mbits/sec    0             sender
[  5]   0.00-10.03  sec   386 MBytes   323 Mbits/sec                  receiver

Openwrt 19.07.9

Slowest of all, results are constant

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec   348 MBytes   292 Mbits/sec    0             sender
[  5]   0.00-10.01  sec   348 MBytes   292 Mbits/sec                  receiver

Openwrt 21.02.4

Best performance, but has some strange slow downs and speed ups

[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  83.2 MBytes   698 Mbits/sec    0    221 KBytes
[  5]   1.00-2.00   sec  85.9 MBytes   721 Mbits/sec    0    221 KBytes
[  5]   2.00-3.00   sec  88.8 MBytes   744 Mbits/sec    0    221 KBytes
[  5]   3.00-4.00   sec  89.7 MBytes   753 Mbits/sec    0    221 KBytes
[  5]   4.00-5.00   sec  89.9 MBytes   753 Mbits/sec    0    221 KBytes
[  5]   5.00-6.00   sec  89.2 MBytes   748 Mbits/sec    0    221 KBytes
[  5]   6.00-7.00   sec  88.9 MBytes   746 Mbits/sec    0    221 KBytes
[  5]   7.00-8.00   sec  88.6 MBytes   743 Mbits/sec    0    221 KBytes
[  5]   8.00-9.00   sec  89.5 MBytes   750 Mbits/sec    0    221 KBytes
[  5]   9.00-10.00  sec  89.8 MBytes   754 Mbits/sec    0    221 KBytes
 - - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   883 MBytes   741 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   883 MBytes   740 Mbits/sec                  receiver
[  5] local 192.168.0.5 port 56026 connected to 192.168.0.100 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.01   sec  82.5 MBytes   682 Mbits/sec    0    219 KBytes
[  5]   1.01-2.01   sec  81.2 MBytes   683 Mbits/sec    0    219 KBytes
[  5]   2.01-3.00   sec  83.0 MBytes   705 Mbits/sec    0    219 KBytes
[  5]   3.00-4.00   sec  81.2 MBytes   680 Mbits/sec    0    219 KBytes
[  5]   4.00-5.00   sec  81.2 MBytes   682 Mbits/sec    0    219 KBytes
[  5]   5.00-6.01   sec  81.9 MBytes   682 Mbits/sec    0    219 KBytes
[  5]   6.01-7.01   sec  81.2 MBytes   682 Mbits/sec    0    219 KBytes
[  5]   7.01-8.01   sec  81.2 MBytes   681 Mbits/sec    0    219 KBytes
[  5]   8.01-9.01   sec  81.2 MBytes   684 Mbits/sec    0    219 KBytes
[  5]   9.01-10.01  sec  81.2 MBytes   681 Mbits/sec    0    219 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec   816 MBytes   684 Mbits/sec    0             sender
[  5]   0.00-10.01  sec   816 MBytes   684 Mbits/sec                  receiver

Openwrt 22.03

Slower than 21.02, results are constant

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec   729 MBytes   610 Mbits/sec    0             sender
[  5]   0.00-10.01  sec   729 MBytes   610 Mbits/sec                  receiver

Definitely the CPU speed makes some difference:

600MHz  453 Mbits/sec
1GHz    547 Mbits/sec
1.4GHz  610 Mbits/sec

However when routing traffic through the wan interface (Computer connected at LAN), it peaks at 300Mbit, hogging the CPU with IRQs:

Mem: 52680K used, 68416K free, 1228K shrd, 0K buff, 27784K cached
CPU:   0% usr   0% sys   0% nic   5% idle   0% io   0% irq  93% sirq
Load average: 0.73 0.87 0.48 2/58 5050
  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND
    8     2 root     RW       0   0%  82% [ksoftirqd/0]
    3     2 root     IW       0   0%   1% [kworker/0:0-eve]
 2652  2644 network  S     5484   5%   0% /usr/sbin/wpa_supplicant -n -s -g /var/run/wpa_supplicant/global
 2657  2643 network  S     5484   5%   0% /usr/sbin/hostapd -s -g /var/run/hostapd/global

21.02 achieves 100% usage and peaks at 320Mbit

Mem: 38872K used, 83776K free, 296K shrd, 3312K buff, 13936K cached
CPU:   0% usr   0% sys   0% nic   0% idle   0% io   0% irq 100% sirq
Load average: 0.60 0.25 0.09 2/47 4341
  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND
    7     2 root     RW       0   0%  93% [ksoftirqd/0]
 4238  4100 root     R     1380   1%   1% top -d1
    4     2 root     IW<      0   0%   1% [kworker/0:0H-ev]
 2640     1 root     S     4940   4%   0% /usr/sbin/wpa_supplicant -n -s -g /var/run/wpa_supplicant/global
 2639     1 root     S     4940   4%   0% /usr/sbin/hostapd -s -g /var/run/hostapd/global

I guess it's due the hardware NAT not being used?

OpenWrt 22.03.2 has been released.
The release notes state: mpc85xx: p1010: make TP-Link WDR4900 v1 build again
Is this the structural solution we are waiting for or is this some sort of workaround?

It prepends a chainloader (okli-loader) in front of the kernel, which would be one of the options to decouple kernel size from the bootloader's abilities.

I guess I'm with @urkelbundy, does this mean there is an installable image somewhere and any sort of method for 22.03.2 on this. Or are we not quite there yet?

In the OpenWRT firmware selector (https://firmware-selector.openwrt.org/?version=22.03.2&target=mpc85xx%2Fp1010&id=tplink_tl-wdr4900-v1) an image is available for the WDR4900v1

1 Like

Have you tried it? Does it just install (sysupgrade) or are there steps to perform before this?

I'm on holiday and nowhere near a WDR4900v1.

In the release notes this is stated:

Upgrading to 22.03.2

Sysupgrade can be used to upgrade a device from OpenWrt 21.02 or 22.03 to 22.03.2 and configuration will be preserved in most cases.

:!: Sysupgrade from 19.07 to 22.03 is not supported.

:!: There is no migration path for targets that switched from swconfig to DSA. In that case, sysupgrade will refuse to proceed with an appropriate error message:
Image version mismatch. image 1.1 device 1.0 Please wipe config during upgrade (force required) or reinstall. Config cannot be migrated from swconfig to DSA Image check failed

If I understand it correctly a sysupgrade from a recent OpenWRT version should work.

I was thinking about starting with a clean config, so I was planning to try a

sysupgrade -nv openwrt-22.03.2-mpc85xx-p1010-tplink_tl-wdr4900-v1-squashfs-sysupgrade.bin

from an existing 21.02.3 installed device

Should this work with no commands before this i.e. is no pre-upgrade work required?
Anyone tried a device already?

Hi. I just did a sysupgrade over luci from 21.02.3 without any issues.
Thank You all for this Update!

1 Like

Same here: did sysupgrade incl keeping config from 21.02.4 to 22.03.2 without issues. Great!

1 Like

At least is 22.03.3 with kernel 5.10.146 (vs 5.4.215 with 21.02.4) running on WDR4900v1 without changing anything (like the uboot patch) - you can just sysupgrade from 21.02 to (now) 22.03.3 and preserve your config.
Neoraiders patch (okli-chain-loader) enabled a bigger kernel size - otherwise it would have been stuck at 21.02.x which would be EOL soon.
With CHKDSK88's patch even openwrt 23.xx with kernel 5.15.xx (including switch to DSA) is possible and WDR4900v1 still has a future. Which is great imho.

I would like to know whether @CHKDSK88 uboot patch would apply to current situation (with okli-loader) as well and would improve overall situation?

1 Like

Although I am very happy that the WDR4900v1 can be used with 22.03.3 I am still a bit confused.
Is the solution currently used with the okli loader a structural solution or do we need another, more permanent solution, for future OpenWRT builds?

So as per @urkelbundy confusion (which I share). Are we saying the DSA switch wasn't needed for 22.03.3 but will be needed for 23.xx with it's much bigger kernel?

In 22.03 libmbedtls is currently broken. However, it is fixed by:

Okli-loader fix all problems with kernel size. Uboot patch will only make boot process slower.

Returned from holiday and did a sysupgrade of 22.03.2 over 21.02.3 using Luci.
No issue. Glad to see 22.03 running on one of my WDR4900 units.

Many many thanks to all who contributed.