WDS bridge on 5ghz help [TUF-AX6000 to R7800]

Hello everyone, this is my first post in this forum. I enjoyed a lot reading amazing technical posts but I would like some help to optimize my personal use case.

I have a Netgear R7800 with OpenWRT 23.05.2 running great. Recently I wanted to upgrade to WiFi 6E but I couldn't find a available device well supported with OpenWRT so I decided to pivot to WiFi 6 and I bought an Asus TUF-AX6000 that is in snapshot support. It's working okay so far as an AP (need more testing).

My idea is to repurpose my R7800 as a WDS client (5 ghz) to get my main desktop PC (wired to the R7800) better WiFi throughput. I don't know if this is a bad idea given that the Asus is WiFi AX and the R7800 is WiFi AC, also that the Asus is Atheros based and the R7800 is MediaTek but I gave it a try anyway.

The WDS link is pretty strong, both devices are not far away, the R7800 is in the next room with a brick wall in between. The signal is good and the PHY speed is pretty high as you can see in this LuCI screenshot:

The problem comes when I do iperf3 tests between hosts... if I do a test from the Asus to the R7800 I get ~1gbps throughput which is amazing, that's the speed I'm looking for. But when I do the same test from the R7800 to the Asus I get ~600mbps and cannot get pass that. I thought it could be the R7800 CPU not able to send so much data so I tried with two computers on each side of the link and I get even less throughput, around 400 to 500 mbps either way.

I tried to improve this but I didn't get any good results, I tried switching from wpad-basic-mbedtls to wpad-mbedtls in both devices. I tried switching the ath10k-ct driver to ath10k in the R7800 and I think that improved speeds and stability a bit but not as expected. I'm starting to get out of options so I decided to get your opinions here :sweat_smile:

Open questions:

  1. Is what I'm trying to do not achievable? Maybe I'm trying to get some throughput that is not achievable in the real world with my devices.
  2. Why do you think I'm getting much worse transfers from the R7800 to the Asus? Is it a Client vs AP issue or a device/driver issue?
  3. As commented before, is it a bad idea to mix WiFi versions and vendors for a WDS link or it's not a big deal?

What other info can I share to debug this? I'm not very familiar with Wireless cli utils.

Thanks in advance!!! :grinning:

No idea, but did you check beamforming with both devices?

grep -r beamform /tmp/run/

Maybe the Asus supports it, while the Netgear doesn't`

I am discussing beamforming with the R7800 here:

Thanks for your reply @linuxuser. I didn't think about beamforming but It could make a difference.

Here is Asus output:

root@OpenWrt:~# grep -r beamform /tmp/run/
/tmp/run/hostapd-phy1.conf:he_su_beamformer=1
/tmp/run/hostapd-phy1.conf:he_su_beamformee=1
/tmp/run/hostapd-phy1.conf:he_mu_beamformer=1
/tmp/run/hostapd-phy1.conf.prev:he_su_beamformer=1
/tmp/run/hostapd-phy1.conf.prev:he_su_beamformee=1
/tmp/run/hostapd-phy1.conf.prev:he_mu_beamformer=1
/tmp/run/hostapd-phy0.conf:he_su_beamformer=1
/tmp/run/hostapd-phy0.conf:he_su_beamformee=1
/tmp/run/hostapd-phy0.conf:he_mu_beamformer=1
grep: /tmp/run/wpa_supplicant/global: No such device or address
grep: /tmp/run/hostapd/phy1-ap0: No such device or address
grep: /tmp/run/hostapd/phy0-ap1: No such device or address
grep: /tmp/run/hostapd/phy0-ap0: No such device or address
grep: /tmp/run/hostapd/global: No such device or address
grep: /tmp/run/ubus/ubus.sock: No such device or address

And this is the R7800, it looks like it doesn't support beamforming:

root@OpenWrt-Netgear:~# grep -r beamform /tmp/run/
grep: /tmp/run/wpa_supplicant/phy0-sta0: No such device or address
grep: /tmp/run/wpa_supplicant/global: No such device or address
grep: /tmp/run/hostapd/global: No such device or address
grep: /tmp/run/ubus/ubus.sock: No such device or address

I'll investigate further to see if this is the case. Another thing that I thought of trying is to switch to a 802.11s mesh instead of a WDS bridge to see if that has better/worse/same performance. I didn't have time to test yet, I'll report back when I do.

For reference here are some iperf3 tests from R7800 to Asus and back (reverse mode) in the WDS link.

root@OpenWrt-Netgear:~# iperf3 -c 192.168.0.1
Connecting to host 192.168.0.1, port 5201
[  5] local 192.168.0.2 port 41040 connected to 192.168.0.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  91.8 MBytes   768 Mbits/sec    0    820 KBytes
[  5]   1.00-2.00   sec  94.1 MBytes   790 Mbits/sec    0   1.27 MBytes
[  5]   2.00-3.00   sec  96.2 MBytes   807 Mbits/sec    0   1.27 MBytes
[  5]   3.00-4.00   sec  96.2 MBytes   807 Mbits/sec    0   1.27 MBytes
[  5]   4.00-5.00   sec  71.1 MBytes   597 Mbits/sec    0   1.93 MBytes
[  5]   5.00-6.00   sec  96.2 MBytes   807 Mbits/sec    0   1.93 MBytes
[  5]   6.00-7.00   sec  96.2 MBytes   807 Mbits/sec    0   1.93 MBytes
[  5]   7.00-8.00   sec  96.0 MBytes   805 Mbits/sec    0   1.93 MBytes
[  5]   8.00-9.00   sec  89.1 MBytes   748 Mbits/sec    0   1.93 MBytes
[  5]   9.00-10.00  sec  72.1 MBytes   605 Mbits/sec    0   1.93 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   899 MBytes   754 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   899 MBytes   754 Mbits/sec                  receiver

iperf Done.
root@OpenWrt-Netgear:~# iperf3 -c 192.168.0.1 -R
Connecting to host 192.168.0.1, port 5201
Reverse mode, remote host 192.168.0.1 is sending
[  5] local 192.168.0.2 port 37460 connected to 192.168.0.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   116 MBytes   975 Mbits/sec
[  5]   1.00-2.00   sec   125 MBytes  1.05 Gbits/sec
[  5]   2.00-3.00   sec   126 MBytes  1.05 Gbits/sec
[  5]   3.00-4.00   sec   123 MBytes  1.03 Gbits/sec
[  5]   4.00-5.00   sec   128 MBytes  1.07 Gbits/sec
[  5]   5.00-6.00   sec   124 MBytes  1.04 Gbits/sec
[  5]   6.00-7.00   sec   123 MBytes  1.03 Gbits/sec
[  5]   7.00-8.00   sec   130 MBytes  1.09 Gbits/sec
[  5]   8.00-9.00   sec   130 MBytes  1.09 Gbits/sec
[  5]   9.00-10.00  sec   125 MBytes  1.05 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec  1.22 GBytes  1.05 Gbits/sec   48             sender
[  5]   0.00-10.00  sec  1.22 GBytes  1.05 Gbits/sec                  receiver

iperf Done.

Edit: I just noticed that even though the Asus router is faster sending data, it has many retries on each run. The R7800 sending data has consistently 0 retries :thinking: I need to investigate more.

Did you configure something as mentioned at the TUF-6000 page or do you get this output without any configuration?

All my Wifi 6 devices work with beamforming without any configuration, but note the R7800 is a Wifi 5 device.

The R7800 supports beamforming, but maybe it has to be configured in wireless section

See my other thread what I was asking, but there was no answer till now.

I am guessing, if it makes sense to put these 3 lines in the section of the 2 radios of the R7800.

he_su_beamformer=1
he_su_beamformee=1
he_mu_beamformer=1

Compare:

Beamforming and Basic Service Set (BSS) coloring

Beamforming improves data rates and extends range by directing signals toward specific clients instead of in every direction at once. By carefully controlling transmissions from several antennas, we can cause their signals to interfere on purpose and redirect the resulting signal in a new direction.

Basic Service Set (BSS) Coloring marks shared frequencies to allow 802.11ax access points to determine whether simultaneous use of spectrum is permissible. This technology reduces interference due to congestion and ensures consistent service to multiple connected devices in high-density environments.

Edit /etc/config/wireless and insert the following option under the radio section corresponding to the device which should be using beam forming:

config wifi-device 'radio1' ... option he_su_beamformee '1' option he_bss_color '8'

Restart wireless or reboot the device.

I am waiting with my TUF 6000 and openwrt until it is supported by https://firmware-selector.openwrt.org/ To change to wpad-openssl for mesh can be a challlenge.

I have read threads, where WDS was faster than mesh. In my case, it is probably better to use WDS. I have never configured Mesh, but 802.11r did not work as expected. The phones did not change the AP and I prefer to have the option to change it manually, if it doesn't work.

I didn't add anything to my /etc/config/wireless, I saw that instructions in the wiki but I wanted to try if it worked out of the box. I saw in some hostapd files that beamforming is supposed to be enabled by default and it looks like it is.

It might be worth trying but I don't know if it's going to help. I could try later and see if anything changes. I bet more on trying 802.11s instead of WDS to see how it works :crossed_fingers:

Thanks for your feedback.

I actually changed to wpad-openssl in both the R7800 and the TUF-AX6000 just to try, I didn't see any issues or big improvements. I just uninstalled the wpad-mbedtls and I installed wpad-openssl, then restarted and everything worked as normal.

That's good to know, I haven't tried mesh at all. I wasn't sure if it's faster or slower, that's why I wanted to give it a try. Maybe it ends up being much worse... I'll let you know in a few days when I have time to properly test.

I had problems with some routers and the only way to install libustream-openssl mesh11sd wpad-openssl was with the firmware selector. Soft-bricked 2 devices during exchanging the packages.

Yes, a big maybe. I think my theoretical meshpoints here would be not placed optimal.

If you got Mesh work, please post your config files. If I try it the whole house doesn't have internet.

That's so scary! It haven't happen anything like that to me yet, but with Linux one never knows :sweat: A bad change could lead to a non bootable device...

I don't know if this is helpful but in the system logs I saw these entries on the Asus, those are not present in the R7800 (I don't know if it's a software difference or driver difference on the logging):

Fri Jan  5 18:49:53 2024 daemon.notice hostapd: Set new config for phy phy1: /var/run/hostapd-phy1.conf
Fri Jan  5 18:49:53 2024 daemon.notice hostapd: Restart interface for phy phy1
Fri Jan  5 18:49:53 2024 daemon.notice hostapd: Configuration file: data: driver=nl80211 logger_syslog=127 logger_syslog_level=4 logger_stdout=127 logger_stdout_level=4 country_code=ES ieee80211d=1 ieee80211h=1 hw_mode=a beacon_int=100 chanlist=52 tx_queue_data2_burst=2.0 #num_global_macaddr=1 ieee80211n=1 ht_coex=0 ht_capab=[HT40+][LDPC][SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][MAX-AMSDU-7935] ieee80211ac=1 vht_oper_chwidth=1 vht_oper_centr_freq_seg0_idx=58 vht_capab=[RXLDPC][SHORT-GI-80][SHORT-GI-160][TX-STBC-2BY1][SU-BEAMFORMER][SU-BEAMFORMEE][MU-BEAMFORMER][MU-BEAMFORMEE][RX-ANTENNA-PATTERN][TX-ANTENNA-PATTERN][RX-STBC-1][SOUNDING-DIMENSION-4][BF-ANTENNA-4][VHT160][MAX-MPDU-11454][MAX-A-MPDU-LEN-EXP7] ieee80211ax=1 he_oper_chwidth=1 he_oper_centr_freq_seg0_idx=58 he_su_beamformer=1 he_su_beamformee=1 he_mu_beamformer=1 he_bss_color=128 he_spr_sr_control=3 he_default_pe_duration=4 he_rts_threshold=1023 he_mu_edca_qos_info_param_count=0 he_mu_edca_qos_info_q_ack=0 he_mu_edca_qos_info_queue_request=0 he_mu_edca_qos_info_t

There you can see that beamforming is enabled automatically by hostapd (I don't add any special configs to my /etc/config/wireless)

For the record this is my /etc/config/wireless file in the Asus:

config wifi-device 'radio0'
        option type 'mac80211'
        option path 'platform/soc/18000000.wifi'
        option channel '1'
        option band '2g'
        option htmode 'HE20'
        option country 'ES'
        option cell_density '0'
        option log_level '4'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'My2.4GHzSSID'
        option encryption 'psk2+ccmp'
        option key 'VerySecretPass'

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'platform/soc/18000000.wifi+1'
        option channel '52'
        option band '5g'
        option htmode 'HE80'
        option disabled '0'
        option country 'ES'
        option cell_density '0'
        option log_level '4'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'My5GHzSSID'
        option encryption 'psk2+ccmp'
        option key 'VerySecretPass'
        option wds '1'

config wifi-iface 'wifinet2'
        option device 'radio0'
        option mode 'ap'
        option ssid 'MyIoTSSID'
        option encryption 'psk2+ccmp'
        option key 'VerySecretPass'
        option network 'guest'
1 Like

I don't blame Linux. It was bad luck probably.

I flashed about 20 times different images and different devices. The biggest challenge was the soft brick with a Zyxel NBG6817, which is very similar to the R7800, but not with debricking! 1st flash with the Zyxel was without problems, then I added packages for mesh and the device was bricked.

What I have learned, that it got a lot better with beamforming from Openwrt 22 to 23 with Wifi 6(!) devices. Maybe the R7800 with Wifi 5 needs the next Openwrt 24? See what changed here from 22 to 23:

Thanks, I would be interested in the changes from WDS to Mesh. Your WDS looks similar to mine.

Just another idea. There are very cheap Wifi-6 extenders. I got 2 Zyxel Multy M1 WSM20 for 50€ before Christmas, and a D-Link DAP-X1860 for below 30€. I think for speed testing they do their job. Both are very easy to flash with openwrt and querying them, they show beamforming-entries.

I ended up buying a GL.Inet Flint 2 (GL-MT6000) and return the Asus TUF-AX6000 because the price is pretty similar (same SoC), the Flint 2 has much more ram and storage, and I like the aesthetics better. I still have the Asus but I'll return it to Amazon soon. I did a quick WDS bridge test between the Flint 2 and the Asus I got slightly better iperf3 performance around 700-800 Mbps at the distance. I think the issue with the R7800 upload speed might be a driver/hardware issue that does not allow to go faster. Probably I'll start testing the Flint 2 with the R7800 in a WDS link soon.

1 Like

What was the price for the Flint2?

Flint 2 was 179€ and the Asus TUF-AX6000 was 159.90€. I bought both on Amazon, the Flint 2 was cheaper in their website but I wanted to have a safe way of returning it and getting my money back quickly in case the device didn't work as expected. So far I like the Flint 2 and I'm 99% positive I'm going to return the Asus.

For the record, I just created a WDS bridge with the Asus in the same spot as the R7800 was, connected to the Flint 2 where the Asus originally was placed. I got these iperf3 speeds with excellent signal and high modulation:

root@OpenWrt-Asus:~# iperf3 -c 192.168.0.1
Connecting to host 192.168.0.1, port 5201
[  5] local 192.168.0.4 port 50548 connected to 192.168.0.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   112 MBytes   942 Mbits/sec    0   1.98 MBytes
[  5]   1.00-2.00   sec   116 MBytes   972 Mbits/sec    0   2.22 MBytes
[  5]   2.00-3.00   sec  99.4 MBytes   834 Mbits/sec    0   2.47 MBytes
[  5]   3.00-4.00   sec   122 MBytes  1.02 Gbits/sec    0   2.80 MBytes
[  5]   4.00-5.00   sec   120 MBytes  1.00 Gbits/sec    0   2.80 MBytes
[  5]   5.00-6.00   sec   120 MBytes  1.01 Gbits/sec    0   2.80 MBytes
[  5]   6.00-7.00   sec   112 MBytes   941 Mbits/sec    0   2.80 MBytes
[  5]   7.00-8.00   sec   110 MBytes   924 Mbits/sec    0   2.80 MBytes
[  5]   8.00-9.00   sec   117 MBytes   985 Mbits/sec    0   3.01 MBytes
[  5]   9.00-10.00  sec   107 MBytes   899 Mbits/sec    0   3.01 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.11 GBytes   953 Mbits/sec    0             sender
[  5]   0.00-10.01  sec  1.11 GBytes   950 Mbits/sec                  receiver

iperf Done.
root@OpenWrt-Asus:~# iperf3 -c 192.168.0.1 -R
Connecting to host 192.168.0.1, port 5201
Reverse mode, remote host 192.168.0.1 is sending
[  5] local 192.168.0.4 port 52002 connected to 192.168.0.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   138 MBytes  1.16 Gbits/sec
[  5]   1.00-2.00   sec   134 MBytes  1.12 Gbits/sec
[  5]   2.00-3.00   sec   110 MBytes   923 Mbits/sec
[  5]   3.00-4.00   sec   128 MBytes  1.07 Gbits/sec
[  5]   4.00-5.00   sec   124 MBytes  1.04 Gbits/sec
[  5]   5.00-6.00   sec   124 MBytes  1.04 Gbits/sec
[  5]   6.00-7.00   sec   142 MBytes  1.19 Gbits/sec
[  5]   7.00-8.00   sec   120 MBytes  1.00 Gbits/sec
[  5]   8.00-9.00   sec   146 MBytes  1.22 Gbits/sec
[  5]   9.00-10.00  sec   147 MBytes  1.23 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.02  sec  1.28 GBytes  1.10 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  1.28 GBytes  1.10 Gbits/sec                  receiver

iperf Done.

1 Like

Thanks, I would pay about 180€ too for the Flint, but I paid about 140€ for the 6000 at Black Friday.

I fear you will notice problems in detail only after months, as I did with other routers. I did tons of testing with iperf2 and iperf3 since I had connections below 1 Mbs, most time 500kbs. Now I am about 100Mbs and I am happy with this speed. I have to cross thick walls with 2.4GHz from the Upstream-Router, at the moment a R7800 and then I connect to the WDS-access points with 5GHz, where every AP has a different channel. That is the secret for my better speed to switch from 2.4 to 5GHz after the thick walls, although it doesn't make sense at first sight, since 100Mbs is in the range of 2.4G. I hope I get better performance with the AX6000.

Note, WDS-routers are not designed for iperf. But IMHO it is an indicator to compare configurations. The iperf values are better in real life, because the cpu of the router is too weak.