OpenWrt 22.03 and WDR4900v1

@urkelbundy Delighted to chip in, please message me details.

I also have this router since long time ago, recently I decided to try boosting its power.
After diving in the datasheet, I found the bootstrap pins that set the multipliers.
From 800MHz.. I got it running at 1.2GHz on the first try.
Finally, after slightly increasing the Vcore by +50mV, I reached the maximum multiplier, 1.4GHz!

Here're the modding details:

Now I thought on removing the old wireless chips.
They use PCIe, so I see no reason why it wouldn't be possible to carefully hardwire a mini PCIe slot and connect something else that uses modern 5G wifi AC, as long as Openwrt has drivers for it.

Also, it should be possible to re-configure the Serdes interface used for 2.4G wifi PCIe, and repurpose it as SATA, or keep it as PCIe and connect a USB 3.0 PCIe card, samba shares would fly!

1 Like

Hi. I do have 3 of the WDR4900V1 devices in use.
They are running fine and without any problems.
It would be great if you could make them to work with 22.03 !
Thanks for your support!

For 22.03.x, the ship has sailed - 23.xy.z might be possible, if it gets fixed in master.

Hi all,

The WDR4900v1 has been dropped at the postoffice today and is underway to hurricos.

@hurricos
No pressure but all eyes of WDR4900v1 users are on you :wink:
Many many many thanks in advance on behalf of all WDR4900v1 users.

@dabyd64
That is very interesting. Maybe I will try this on a spare unit.
Won't the CPU get hot at 1GHz or higher?

A little more, but I think it's manageable, about 0.2W each 200MHz.
These measurements where the whole router consumption, not just the cpu!

CPU stressed running: time dd if=/dev/zero bs=1M count=1024 | md5sum

Idle: ~480mA on all frequencies, 5.8W
Stress 0.8GHz 26s (39.4MB/s) 500mA 6.1W
Stress 1.0GHz 21s (48.8MB/s) 520mA 6.3W
Stress 1.2GHz 18s (56.9MB/s) 535mA 6.5W
Stress 1.4GHz 16s (64.0MB/s) 550mA 6.7w

I attached a thermal probe to the heatsink with a bit of thermal paste, closed the case and ran it at full load for 20 minutes, I'm getting ~60ºC, so it's fine!
Perhabs it could get around 70-75ºC on a hot day, not dangerous temps, pretty comon for this devices.
You can always replace the heatsink with a larger one!

1 Like

Later I decided to lift the cpu to see the pins and check if there was some hackable stuff.
Sadly there're no possibilities, the 4th serdes interface (pcie,sata etc) is disabled and tied to ground, the SD interface pins aren't accessible...

I identified the rest of the boostrap pins, attaching the final modding pictures, if someone could add them to the wiki it would be nice.

IFC_top

The cpu speed seem to be hardcoded in some parts of the kernel, I still have some logs showing 800MHz:

[    0.000000] time_init: processor frequency   = 799.999992 MHz

Also

cat /proc/cpuinfo
processor       : 0
cpu             : e500v2
clock           : 799.999992MHz
revision        : 5.1 (pvr 8021 2151)
bogomips        : 99.99

timebase        : 49999999
platform        : Freescale P1014
model           : TP-Link TL-WDR4900 v1
Memory          : 128 MB

But the performance gain is clearly obvious when hashing md5.
I set the memory to DDR-800, seems to be working nicely for now , another slight performance increase (5% faster md5sum, went from 16s to 15.2s).
It seems stable, I hashed 100GB of data several times with same results.

2 Likes

@hurricos Just out of curiosity, and not hassling as all, did the router arrive yet?

It has not.

Wait, I just checked the tracking -- apparently it arrived at 9AM, after I'd left for work. I'll take a look tonight.

Yes, according to the track&trace it has arrived.

FYI: @CHKDSK88 has opened a PR:

He got the U-Boot patch hint from @hurricos :pray: :


If my commit will be rejected, we could prepare barebox for this board. It could be chainloaded.

IMO, @Neoraider's work to port okli-loader to mpc85xx is still important. Not every board will be able to either have a U-Boot patch or u-boot replacement. okli-loader can also be used in conjunction with U-Boot patching.

2 Likes

full ack! I have WDR4900 v1.3 for testing (and another productive as AP) and pulled git master branch mid of September and applied neoraiders patches as well and it worked pretty good (btw as sysupgrade from 21.02.3 then):

BusyBox v1.35.0 (2022-09-18 09:50:32 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r20685-c77858aa79
 -----------------------------------------------------
root@WDR4900_v13:~# uname -a
Linux WDR4900_v13 5.10.143 #0 Sun Sep 18 09:50:32 2022 ppc GNU/Linux

Shortly tested only, but works pretty solid. And the patches are pretty easy to apply. (Another try to build same from current master yesterday failed with image to big; will try with 22.03-head)
Sadly it did not got into 22.03.1, but I hope it will come with 22.03.2 - will be a good chance to move from 21.02.4 and prepare 23.xx.

Furthermore, I am worried that openwrt pull 10850 will do to much at once: updating u-boot and switch to DSA with only sysupgrade option will potentially soft brick devices.
Personally, I prefer a step-by-step approach for WDR4900v1:
(1) apply neoraiders patches and offer 22.03.2
(2) apply CHKDSK88 u-boot patch and offer 22.03.[2+m] (or 23.xx.0) - and update wiki page accordingly
(3) change to DSA with 23.xx.[0+m] and describe swconfig->DSA implementation path for router owners avoiding soft brick

EDIT
Just build based on 22.03 branch and applied Neoraiders patches only:

BusyBox v1.35.0 (2022-10-13 13:10:56 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 22.03-SNAPSHOT, r19794-f1de43d0a0
 -----------------------------------------------------
root@WDR4900_v13:~# uname -a
Linux WDR4900_v13 5.10.146 #0 Thu Oct 13 13:10:56 2022 ppc GNU/Linux
root@WDR4900_v13:~# cat /proc/cpuinfo
processor	: 0
cpu		: e500v2
clock		: 799.999992MHz
revision	: 5.1 (pvr 8021 2151)
bogomips	: 99.99

timebase	: 49999999
platform	: Freescale P1014
model		: TP-Link TL-WDR4900 v1
Memory		: 128 MB

Itś great news that progress is being made. An update of what is going on is highly appreciated.
Seeing al that is being done I have good hopes that the WDR4900v1 will be a supported device again.

Many thanks and keep up the good work.

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?