Dynalink DL-WRX36 Askey RT5010W IPQ8072A technical discussion

Package with another board-2.bin: https://easyupload.io/yl1wa0
The difference is 3 dBm for US and 1 dBm for DE in 5G radio. It's still not full power.

2 Likes

That package seems to be cooperating better with more modern (2.9.x branch) firmwares, as it's allowing me now 30dbm on 2.4GHz and 28dbm on 5GHz, PA domain. Nice work!

2 Likes

The BDF also has the radio calibration, with the wrong calibration the radio can work worst.
You need to test if the higher (or same) Tx power from a different BDF gives same/worst (iperf3) speed at some distance, when compared to the factory BDF.
When I tried that:
https://forum.openwrt.org/t/dynalink-dl-wrx36-askey-rt5010w-ipq8072a-technical-discussion/110454/1655

How did you saw that the factory dynalink FW uses 30dB Tx power?
I switched to openwrt when my router arrived and didn't test dynalink FW, but I see in the pdf manual that the Tx power is measured in 25%, 50%, 75%, 100% (in the web gui), so I always wonder what was the real Tx power in factory FW.

These three BDF files (rt5010w-d350_rev0.bin, BDF_20210412.bin and GoldenBin_20210323.bin) are not very different from each other compared to the others inside the firmware.
Binary comparison:

iperf3 result (HE80) on GoldenBin_20210323.bin BDF:

Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.183 port 48776 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   108 MBytes   903 Mbits/sec    0   3.06 MBytes       
[  5]   1.00-2.00   sec   111 MBytes   933 Mbits/sec    0   3.06 MBytes       
[  5]   2.00-3.00   sec   105 MBytes   881 Mbits/sec    0   3.06 MBytes       
[  5]   3.00-4.00   sec   110 MBytes   923 Mbits/sec    0   3.06 MBytes       
[  5]   4.00-5.00   sec   114 MBytes   954 Mbits/sec    0   3.06 MBytes       
[  5]   5.00-6.00   sec   112 MBytes   944 Mbits/sec    0   3.06 MBytes       
[  5]   6.00-7.00   sec   108 MBytes   902 Mbits/sec    0   3.06 MBytes       
[  5]   7.00-8.00   sec   111 MBytes   933 Mbits/sec    0   3.06 MBytes       
[  5]   8.00-9.00   sec   108 MBytes   902 Mbits/sec    0   3.06 MBytes       
[  5]   9.00-10.00  sec   114 MBytes   954 Mbits/sec    0   3.06 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.07 GBytes   923 Mbits/sec    0             sender
[  5]   0.00-10.01  sec  1.07 GBytes   920 Mbits/sec                  receiver

iperf Done.

In the factory firmware, the AP reports txpower. This can be read using the WIFIman app. I also checked it directly on the router. And from what I remember, the dBm values were correct.

@Ansuel @robimarko Are you able to say anything more about these three BDF files?

1 Like

Is it faster than the openwrt BDF at same distance?
Was this in the next room?
The test is sending data to the router or receiving from it?

Two wall test:

  1. rt5010w-d350_rev0.bin
Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.183 port 50376 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  38.4 MBytes   322 Mbits/sec    0   1.51 MBytes       
[  5]   1.00-2.00   sec  40.0 MBytes   336 Mbits/sec    0   2.12 MBytes       
[  5]   2.00-3.00   sec  41.2 MBytes   346 Mbits/sec    0   2.68 MBytes       
[  5]   3.00-4.00   sec  38.8 MBytes   325 Mbits/sec    0   3.00 MBytes       
[  5]   4.00-5.00   sec  42.5 MBytes   356 Mbits/sec    0   3.00 MBytes       
[  5]   5.00-6.00   sec  42.5 MBytes   357 Mbits/sec    0   3.00 MBytes       
[  5]   6.00-7.00   sec  38.8 MBytes   325 Mbits/sec    0   3.00 MBytes       
[  5]   7.00-8.00   sec  42.5 MBytes   356 Mbits/sec    0   3.00 MBytes       
[  5]   8.00-9.00   sec  43.8 MBytes   367 Mbits/sec    0   3.00 MBytes       
[  5]   9.00-10.00  sec  36.2 MBytes   304 Mbits/sec    5   2.10 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   405 MBytes   339 Mbits/sec    5             sender
[  5]   0.00-10.01  sec   402 MBytes   337 Mbits/sec                  receiver

iperf Done.
Connecting to host 192.168.1.1, port 5201
Reverse mode, remote host 192.168.1.1 is sending
[  5] local 192.168.1.183 port 41582 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  51.5 MBytes   432 Mbits/sec                  
[  5]   1.00-2.00   sec  53.5 MBytes   449 Mbits/sec                  
[  5]   2.00-3.00   sec  55.8 MBytes   468 Mbits/sec                  
[  5]   3.00-4.00   sec  53.3 MBytes   447 Mbits/sec                  
[  5]   4.00-5.00   sec  54.5 MBytes   457 Mbits/sec                  
[  5]   5.00-6.00   sec  47.3 MBytes   396 Mbits/sec                  
[  5]   6.00-7.00   sec  55.5 MBytes   465 Mbits/sec                  
[  5]   7.00-8.00   sec  55.7 MBytes   468 Mbits/sec                  
[  5]   8.00-9.00   sec  52.5 MBytes   440 Mbits/sec                  
[  5]   9.00-10.00  sec  57.6 MBytes   483 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec   541 MBytes   453 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   537 MBytes   451 Mbits/sec                  receiver

iperf Done.
  1. GoldenBin_20210323.bin
Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.183 port 53326 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  39.5 MBytes   331 Mbits/sec    0   1.76 MBytes       
[  5]   1.00-2.00   sec  38.8 MBytes   325 Mbits/sec    0   2.41 MBytes       
[  5]   2.00-3.00   sec  43.8 MBytes   367 Mbits/sec    0   2.91 MBytes       
[  5]   3.00-4.00   sec  41.2 MBytes   346 Mbits/sec    0   3.07 MBytes       
[  5]   4.00-5.00   sec  41.2 MBytes   346 Mbits/sec    0   3.07 MBytes       
[  5]   5.00-6.00   sec  41.2 MBytes   346 Mbits/sec    0   3.07 MBytes       
[  5]   6.00-7.00   sec  40.0 MBytes   336 Mbits/sec    0   3.07 MBytes       
[  5]   7.00-8.00   sec  43.8 MBytes   367 Mbits/sec    0   3.07 MBytes       
[  5]   8.00-9.00   sec  41.2 MBytes   346 Mbits/sec    0   3.07 MBytes       
[  5]   9.00-10.00  sec  41.2 MBytes   346 Mbits/sec    0   3.07 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   412 MBytes   346 Mbits/sec    0             sender
[  5]   0.00-10.01  sec   410 MBytes   343 Mbits/sec                  receiver

iperf Done.
Connecting to host 192.168.1.1, port 5201
Reverse mode, remote host 192.168.1.1 is sending
[  5] local 192.168.1.183 port 46608 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  68.2 MBytes   572 Mbits/sec                  
[  5]   1.00-2.00   sec  72.3 MBytes   607 Mbits/sec                  
[  5]   2.00-3.00   sec  69.7 MBytes   584 Mbits/sec                  
[  5]   3.00-4.00   sec  63.4 MBytes   532 Mbits/sec                  
[  5]   4.00-5.00   sec  63.1 MBytes   529 Mbits/sec                  
[  5]   5.00-6.00   sec  63.7 MBytes   535 Mbits/sec                  
[  5]   6.00-7.00   sec  62.3 MBytes   523 Mbits/sec                  
[  5]   7.00-8.00   sec  60.8 MBytes   510 Mbits/sec                  
[  5]   8.00-9.00   sec  62.2 MBytes   522 Mbits/sec                  
[  5]   9.00-10.00  sec  63.0 MBytes   529 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.02  sec   652 MBytes   545 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   649 MBytes   544 Mbits/sec                  receiver

iperf Done.

But this is just a quick test...

2 Likes

Its impossible to say what the ODM intended, do note that they multiple similar boards with a single image

This available as source?

Can BDF files be edited? @Ansuel was changing regdb inside them.

The package was manually prepared.
BDF files can be found in the firmware: https://dl46.askeycloudapi.com/file/dynalink/RT5010W-D350/DL-WRX36/1.10.01.254/Dynalink-RT5010W-d350-V1.10.01.254_sysupgrade_nand_img.bin
You can unpack it e.g. like this: docker run --rm -v .:/data/output -v .:/data/input ghcr.io/onekey-sec/unblob /data/input/Dynalink-RT5010W-d350-V1.10.01.254_sysupgrade_nand_img.bin and prepare board-2.bin using ath11k-bdencoder.

2 Likes

So I take that this is part of the closed source of the WiFi FW? Where to push to in a custom build ?

Why are we using docker to unpack?

unblob is written in Python. You probably didn't know that. Otherwise you'd know better than to ask that question. Here, I'll let Randall explain:
xkcd: Python Environment

8 Likes

This made me laugh.

But I still don't understand why docker and not native python or is this applicable to window users or because we need to run a specic version (older) ver. of python

Using docker is easier because you don't need to install (often even compile) the required dependencies. But this is just an individual preference.
Even binwalk is available as a docker image: https://hub.docker.com/r/refirmlabs/binwalk

3 Likes

Basically, what @lytr said.

A more involved explanation (laced with an opinion, though I know I'm not the only one holding it) would be that, although Python is a great language for ducktyping a quick and handy prototype or shell script, and it has an enormous, thriving ecosystem, it's performance leaves much to be desired (it is even slower than PHP), which is why most performance-critical Python projects depend on components written in serious languages, such as C, C++, or, lately, Rust. This, coupled with the shitshow that is Python dependency management, means that getting a project run on a native Python installation may turn out to be, to put it mildly, a bit... finicky.

So, once you've managed to painstakingly pull all the oddly Python-shaped pieces and native binaries together into a working whole, to ensure a low-hassle deployment on user systems, you might be better off by putting the whole shebang in a Docker container. Which is exactly what the unblob team does.

It was just last week when we ran into this problem rather painfully at my work.

We had all been happily using the notorious cassandra-migrate tool to update the local (Docker, mostly) instances of the namesake DBS on our work machines, when, after a long-overdue distro upgrade from Ubuntu 22.10 to 23.04, it just stopped working. Evidently some Python dependency/version mismatch. Nothing we tried was working (and I probably borked my systemwide Python installation), so, being pressed for time, we did just the above — pulled the Docker image that we're using to run DB migrations in our CI/CD pipelines, wrapped it in a thin POSIX shell script, and called it a day.

Moral of the story: Docker is reliable. Unlike Python.

3 Likes

this all makes me think if I should have maybe.. backed up the firmware before adding openwrt to keep the calibration data.

This is my experience with Python as well... In fact, I'm using a tool atm to address this issue the name of which escapes me... I'll dig it up Edit: Conda. Thanks for the in-depth.

1 Like

Openwrt uses exactly the same radio calibration used by dynalink FW.
If you go back to dynalink fw it will be like it was when bought.

I would like to mount rootfs_1's squqshfs while we have booted with root from rootfs mtd partition. I tried using ubiattach command first, then ubiblock command to create block device like /dev/ubiblock1_[0,1,2].
Finally I used "mount -t squashfs /dev/ubiblock1_1 /mnt". I got error message:
/dev/ubiblock1_1: Can't open blockdev

Has anybody tried this steps?