Nexx WT3020F poor wifi performance

I just tested some WRTs on my debricked router and sadly I experienced some major drawbacks.

So this is an N device and the maximum theoretical speed is 300 Mbps (+ LAN is 100 Mpbs). First I tested a few stock firmwares and the max bandwidth was ~93-94 Mbps. Since it was in AP mode I think it is an okay result.

Then I tried the actual stable OpenWRT 23.05.5. On LAN there is no noticeable issue. Usually I am sharing input devices (with Barrier) between two PCs and while I connected to this router it felt like never before. At this point I started to investigate what the hell going on. Even if the latency is better with OpenWRT it is laggy and the maximum wifi bandwidth is about ~16 Mbps. I thought it might be just a bad build, so I tested snapshot r27964-a0eafc3c77. And experienced the same exact issues. The devices are in a ~1 m radius on a desk. Distance must be not an issue. I also have another unit with Gargoyle 1.14 and it is performs the same way.

The shared component is client?
Please post

ubus call system board
cat /etc/config/wireless
cat /etc/config/network
cat /etc/config/firewall

No. To simplify: I have two PCs on the same desk and sharing INPUT devices between both. And the first thing what I noticed after OpenWRT installation that the mouse tracking is laggy like hell because of wifi performance. Here are the details:

~# ubus call system board
{
        "kernel": "6.6.58",
        "hostname": "Nexx-WT3020F",
        "system": "MediaTek MT7620N ver:2 eco:6",
        "model": "Nexx WT3020 (8M)",
        "board_name": "nexx,wt3020-8m",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "SNAPSHOT",
                "description": "OpenWrt SNAPSHOT",
                "revision": "r27964-a0eafc3c77",
                "target": "ramips/mt7620",
                "builddate": "1730156875"
        }
}
~# cat /etc/config/wireless
config wifi-device 'radio0'
        option type 'mac80211'
        option path 'platform/10180000.wmac'
        option band '2g'
        option channel '1'
        option htmode 'HT40'
        option disabled '0'
        option country 'HU'
        option cell_density '0'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'OpenWrt'
        option encryption 'sae-mixed'
        option key '********'
        option ocv '0'
~# cat /etc/config/network
config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fde2:bf2d:d466::/48'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth0.1'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.8.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config device
        option name 'eth0.2'
        option macaddr '20:28:xx:xx:xx:xx'

config interface 'wan'
        option device 'eth0.2'
        option proto 'dhcp'

config interface 'wan6'
        option device 'eth0.2'
        option proto 'dhcpv6'

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '4 6t'

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '0 6t'
~# cat /etc/config/firewall
config defaults
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'

config zone
        option name 'lan'
        list network 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'

config zone
        option name 'wan'
        list network 'wan'
        list network 'wan6'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'

config forwarding
        option src 'lan'
        option dest 'wan'

config rule
        option name 'Allow-DHCP-Renew'
        option src 'wan'
        option proto 'udp'
        option dest_port '68'
        option target 'ACCEPT'
        option family 'ipv4'

config rule
        option name 'Allow-Ping'
        option src 'wan'
        option family 'ipv4'
        option target 'ACCEPT'
        option dest '*'
        list proto 'icmp'

config rule
        option name 'Allow-IGMP'
        option src 'wan'
        option proto 'igmp'
        option family 'ipv4'
        option target 'ACCEPT'
        option dest '*'

config rule
        option name 'Allow-DHCPv6'
        option src 'wan'
        option proto 'udp'
        option dest_port '546'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-MLD'
        option src 'wan'
        option proto 'icmp'
        option src_ip 'fe80::/10'
        list icmp_type '130/0'
        list icmp_type '131/0'
        list icmp_type '132/0'
        list icmp_type '143/0'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Input'
        option src 'wan'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        list icmp_type 'router-solicitation'
        list icmp_type 'neighbour-solicitation'
        list icmp_type 'router-advertisement'
        list icmp_type 'neighbour-advertisement'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Forward'
        option src 'wan'
        option dest '*'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-IPSec-ESP'
        option src 'wan'
        option dest 'lan'
        option proto 'esp'
        option target 'ACCEPT'

config rule
        option name 'Allow-ISAKMP'
        option src 'wan'
        option dest 'lan'
        option dest_port '500'
        option proto 'udp'
        option target 'ACCEPT'

Try auto channel, and set either wpa2 or wpa3 alone (ye, better 2 access points with same name and password but different protocols)

Tested with different encryptions as you requested.

WPA2: ~70 Mbps
WPA3: ~16 Mbps

So yeah, the encryption has an affect. But it is still less than the stock. The stock firmware was an old OpenWRT fork afaik from 2014 with WPA2.

That is typical 20Mhz 2 antennas - total capacity 144Mbps -> you are getting half, which is expected.

You can add radio option

option acs_chan_bias '1:0.8 5:0.8 9:0.8 13:0.9'

And use auto channel before trying to force 40MHz
Rather strange - WPA3 uses same crypto offloaded in card as WPA2 , the problem is handshake only, not speed.

You mean it does not even use 40 Mhz even if it's set? I would like to use this router as an extender/repeater. I don't expect 300 Mbps of course, but it would be already a big improvement if it can reach the stock firmware's wifi performance.

Could you please tell me how can I add the mentioned option? I have some clues but far from an expert.

Click around upper radio part in wifi setup and look for non-conformant options.

40MHz is permissible only in empty airspace by standard.

Advanced setting? You mean I should set Force 40 Mhz mode?

I mean I don't know how to add option acs_chan_bias '1:0.8 5:0.8 9:0.8 13:0.9'

add next to this one

Was that butchered in translation?

You meant next in line, not next to, no?

1 Like

Thanks for the clarification. I added the line. What's next?

I'm not sure what @brada4's ideas are.

They will be back.

Oh okay. Hope so.

1 Like

Now restart radio, try to force 40mhz channel width

Done. Not a big improvement, but sometimes the download can reach ~80 Mbps. Upload is kinda same. But in general it is still unstable.

IF cpu usage via htop is 100% then firewall offloads XOR bridger may help, otherwise your area has busy wifi.

This is not exactly clear for me. But if you asking about the idle CPU usage it is normal. Also in my area there are only 2-3 other routers with weak signals and mostly not even overlapping.

Do you have any other suggestion or advice? Or should I file a bug report?

Make pure WPA2 and pure WPA3 setup and re-measure. Some generations of e.g. Android had problems with mixed mode.
The difference should be in initial handshake being 1 or 2s long, not stream speed.
WPA3 has downgrade prevention, you need to clear connection to connect to same WPA2 name again.
Measure both cases (and for reference wired-nat-ed connection if possible)
Should be in the range of 70Mbps or 35Mbps depending on antenna count on the client.