MTK7921AU USB 3 Wi-Fi support

Hi,
On the Edup Ax3000 USB adapter plugged in USB 3 port of D-Link AC2640 running OpenWrt 23.05.4 r24012 Kernel 5.15.162 , I'm encountering issues:
1- where the Maximum transmission power is locked always at 3dBm on 5GHz no matter how I tried to change it.
2- I read that Wi-Fi 6e will not function as AP any work around? is it a driver issue or platform.
3- Fast roaming is present in the device configuration and ticked but it seems not working.
The driver is WIFI_MT7961_patch_mcu_1_2_hdr.bin and it's firmware were manually installed and automatically from the package repository as of kmod-mt7921u.
Side question will replacing the 6dBi with12 dBi RP-SMA antennas make any performance difference,
in advance and regards,

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button:
grafik
Remember to redact passwords, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall
lsusb
lsusb -t

  1. Are you sure it's 3dBm? Have you actually compared rx power on a client device with another AP that properly reports tx power?
  2. Have you tried starting an AP in 6GHz? It should work as long as you set up the country correctly and use WPA3 EAP, SAE or OWA
  3. Fast roaming should work fine, I tried it on a MT7921K (RZ608) PCIe device and it works fine as that is not a hardware feature - it's implemented in hostapd.

The actual problem I see with using these as AP (aside from using USB for an AP device - it will perform terribly especially on not-so-fast MT7621 SoC) is that it only allows 15 devices in total to connect, and doesn't support multiple SSIDs.

Have you also tried with a snapshot build?

1 Like
root@OpenWrt:~# ubus call system board
{
	"kernel": "5.15.162",
	"hostname": "OpenWrt",
	"system": "MediaTek MT7621 ver:1 eco:3",
	"model": "D-Link DIR-2640 A1",
	"board_name": "dlink,dir-2640-a1",
	"rootfs_type": "squashfs",
	"release": {
		"distribution": "OpenWrt",
		"version": "23.05.4",
		"revision": "r24012-d8dd03c46f",
		"target": "ramips/mt7621",
		"description": "OpenWrt 23.05.4 r24012-d8dd03c46f"
	}
}

root@OpenWrt:~# 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 'fde6:2ab7:f2f1::/48'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan1'
	list ports 'lan2'
	list ports 'lan3'
	list ports 'lan4'

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

config interface 'wan'
	option device 'wan'
	option proto 'dhcp'
	option peerdns '0'
	list dns '94.140.14.14'
	list dns '45.90.28.159'
root@OpenWrt:~# cat /etc/config/wireless

config wifi-device 'radio0'
	option type 'mac80211'
	option path '1e140000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
	option channel '11'
	option band '2g'
	option htmode 'HT40'
	option cell_density '0'
	option country 'SA'

config wifi-device 'radio1'
	option type 'mac80211'
	option path '1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0'
	option channel 'auto'
	option band '5g'
	option htmode 'VHT80'
	option cell_density '0'
	option country 'SA'

config wifi-iface 'wifinet2'
	option device 'radio0'
	option mode 'ap'
	option ssid 'some'
	option encryption 'sae-mixed'
	option key 'some'
	option ieee80211r '1'
	option ft_over_ds '0'
	option network 'lan'

config wifi-iface 'wifinet3'
	option device 'radio1'
	option mode 'ap'
	option ssid 'some'
	option encryption 'sae-mixed'
	option key 'some'
	option ieee80211r '1'
	option ft_over_ds '0'
	option network 'lan'
	list maclist '86:18:EE:DC:0F:E9'

config wifi-device 'radio2'
	option type 'mac80211'
	option path 'platform/1e1c0000.xhci/usb2/2-1/2-1:1.0'
	option channel 'auto'
	option band '5g'
	option htmode 'HE80'
	option cell_density '0'
	option country 'SA'
	option txpower '12'

root@OpenWrt:~# cat /etc/config/dhcp

config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option cachesize '2500'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option localservice '1'
	option ednspacket_max '1232'
	option min_cache_ttl '3600'
	option allservers '1'
	list server '94.140.14.14'
root@OpenWrt:~# cat /etc/config/dhcp

config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option cachesize '2500'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option localservice '1'
	option ednspacket_max '1232'
	option min_cache_ttl '3600'
	option allservers '1'
	list server '94.140.14.14'
root@OpenWrt:~# cat /etc/config/dhcp

config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option cachesize '2500'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option localservice '1'
	option ednspacket_max '1232'
	option min_cache_ttl '3600'
	option allservers '1'
	list server '94.140.14.14'
root@OpenWrt:~# cat /etc/config/firewall

config defaults
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option synflood_protect '1'
	option flow_offloading '1'
	option flow_offloading_hw '1'

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

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

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 proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

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

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'

root@OpenWrt:~# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=, Driver=mt7921u, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/2p, 480M

root@OpenWrt:~# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=, Driver=mt7921u, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/2p, 480M
root@OpenWrt:~# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=, Driver=mt7921u, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/2p, 480M
root@OpenWrt:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux 5.15.162 xhci-hcd xHCI Host Controller
Bus 002 Device 002: ID 0e8d:7961 MediaTek Inc. Wireless_Device
Bus 002 Device 001: ID 1d6b:0003 Linux 5.15.162 xhci-hcd xHCI Host Controller
root@OpenWrt:~# 

I hope it is formatted it's my first time to post here in the forum thank you,

`Preformatted text```````

Thanks for the reply,

  1. From Luci Wireless overview then edit the SSID of the MediaTek MT7921AU 802.11ac/ax/b/g/n Radio it shows the current power of 3dBm, It is never changed.

  2. When I start the AP in 6GHz the SSID disappear while I set the country to SA.

  3. The client "My phone" roam perfectly when I go away from the D-Link and get closer to the Asus AX53U, but with the Edup it keeps connected.

  4. I just need it for max of 2 or 3 devices. Cause the Wi-Fi 5 on the D-Link is sometimes unconscious :smiley:

  5. I didn't try it on a snapshot build for two reasons I don't know how and it has the NAT role so I can't stop the home network.

Your country doesn't have 6GHz in linux wireless regulatory database.

It should, in main snapshots.

Nay
https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/tree/db.txt?id=HEAD#n1562

Seth Forshee handed wireless-regdb maintenance over to Chen-Yu Tsai, so the git tree to look at is:
https://git.kernel.org/pub/scm/linux/kernel/git/wens/wireless-regdb.git/tree/db.txt?id=003c282a297f8cec06a576fe1434c94353d14610#n1657

The version of wireless-regdb in snapshots is 2024.07.04-r1, which does contain
https://git.kernel.org/pub/scm/linux/kernel/git/wens/wireless-regdb.git/commit/?id=04875d9b62c3faf27d4164d22f025b6bb77dd0af
(it's a relatively recent addition, but it's in main's version of wireless-regdb).

https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob;f=package/firmware/wireless-regdb/Makefile;h=4cce267f6111b7311b7a1d5921ba483301d45be7;hb=HEAD

make[2]: Entering directory '/tmp/pkg/openwrt/package/firmware/wireless-regdb'
mkdir -p /tmp/pkg/openwrt/dl
/tmp/pkg/openwrt/scripts/download.pl "/tmp/pkg/openwrt/dl" "wireless-regdb-2024.07.04.tar.xz" "9832a14e1be24abff7be30dee3c9a1afb5fdfcf475a0d91aafef039f8d85f5eb" "" "@KERNEL/software/network/wireless-regdb/"    
+ curl -f --connect-timeout 20 --retry 5 --location https://cdn.kernel.org/pub/software/network/wireless-regdb/wireless-regdb-2024.07.04.tar.xz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 28924  100 28924    0     0   295k      0 --:--:-- --:--:-- --:--:--  297k
make[2]: Leaving directory '/tmp/pkg/openwrt/package/firmware/wireless-regdb'
time: package/firmware/wireless-regdb/download#0.15#0.17#0.34
make[1]: Leaving directory '/tmp/pkg/openwrt'
$ grep -A5 SA\: wireless-regdb-2024.07.04/db.txt 
country SA: DFS-ETSI
        (2402 - 2482 @ 40), (20)
        (5170 - 5250 @ 80), (20), AUTO-BW
        (5250 - 5330 @ 80), (20), DFS, AUTO-BW
        (5490 - 5710 @ 160), (27), DFS
        (5925 - 7125 @ 320), (250 mW), NO-OUTDOOR
1 Like

It's a display issue, driver developers already noticed about that, it won't affect normal usage (i.e. the actual transmitting signal is not 3dBm)

I remember I tried it and managed to make it working once, however I think the default wpad package coming with the OpenWrt firmware might need to be replaced.

It's designed as a client device, so I really doubt this would show significant improvement.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.