MT3000 unstable WIFI

Hey,

I am finding MT3000 build to be quite unstable on the wifi side. It looks like the radio is just stopping responding after a random duration. On 24.10.03 this is happening in a matter of hours.
23.05.6 seems to be more stable making me think that this is related to the MT firmware versions. 23.05.06 got locked hard during out of office hours and the errors in the logs were not helpful. The timeline for a MT3000 on 23.05.06 not freezing its radio is much longer though.

The config is a dumb AP config with dnsmasq, firewall and odhcp6 stopped. The only service running and stable when the WIFI works is a samba4 configured as a TimeMachine target configured on a montpoint of a USB 3.0 external SSD. I am aware that it might cause power spikes and fluctuations but the last WIFI freeze has occured when all the TM clients were off.

Not much in the logs, just the message that something could not be acknowledged.
24.10.03 in the meantime is rock solid on MT6000 with the same September 2024 firmware.

Some other thing, iperf test between 2 wireless clients is barely reaching 850-900 mbs while with a wired client and a wireless one is reaching 950 mbs. Tested with iperf. Both target when wirelessly connected are reporting 2400mbs connection and bot are macs running the darwin version of iperf3

How can I get this target stable enough to replace an ageing Apple Airport Extreme?

ubus call system board
{
	"kernel": "5.15.189",
	"hostname": "***",
	"system": "ARMv8 Processor rev 4",
	"model": "GL.iNet GL-MT3000",
	"board_name": "glinet,gl-mt3000",
	"rootfs_type": "squashfs",
	"release": {
		"distribution": "OpenWrt",
		"version": "23.05.6",
		"revision": "r24232-539228933c",
		"target": "mediatek/filogic",
		"description": "OpenWrt 23.05.6 r24232-539228933c"
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 'fde9:3d94:d105::/48'
	option packet_steering '1'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth0'
	list ports 'eth1'
	option ipv6 '0'

config interface 'lan'
	option device 'br-lan'
	option proto 'dhcp'
	option delegate '0'

config device
	option name 'eth0'
	option ipv6 '0'

config device
	option name 'eth1'
	option ipv6 '0'

config device
	option name 'phy0-ap0'
	option ipv6 '0'

config device
	option name 'phy1-ap0'
	option ipv6 '0'
cat /etc/config/wireless

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

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'platform/18000000.wifi+1'
	option channel '120'
	option band '5g'
	option htmode 'HE160'
	option cell_density '0'
	option country 'GB'

config wifi-iface 'wifinet0'
	option device 'radio0'
	option mode 'ap'
	option ssid '***'
	option encryption 'sae'
	option key '***'
	option ieee80211r '1'
	option ft_over_ds '0'
	option ieee80211k '1'
	option wnm_sleep_mode '1'
	option wnm_sleep_mode_no_keys '1'
	option bss_transition '1'
	option wpa_disable_eapol_key_retries '1'
	option network 'lan'

config wifi-iface 'wifinet1'
	option device 'radio1'
	option mode 'ap'
	option ssid '***'
	option encryption 'sae'
	option key '***'
	option ieee80211r '1'
	option ft_over_ds '0'
	option ieee80211k '1'
	option wnm_sleep_mode '1'
	option wnm_sleep_mode_no_keys '1'
	option bss_transition '1'
	option wpa_disable_eapol_key_retries '1'
	option network 'lan'
cat /etc/config/dhcp

config dnsmasq
	option domainneeded '1'
	option boguspriv '1'
	option filterwin2k '0'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option nonegcache '0'
	option cachesize '1000'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option nonwildcard '1'
	option localservice '1'
	option ednspacket_max '1232'
	option filter_aaaa '0'
	option filter_a '0'

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	option dhcpv6 'hybrid'
	option ra 'hybrid'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'

dhcp service is off in Startup

cat /etc/config/firewall

config defaults
	option syn_flood '1'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'

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'

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'

firewall service also off in Startup

Chan 120 is DFS, AFAIK.

That's fine, it sticks to 120 but I haven't seen anything in the logs saying a radar has been detected and we're not very far from City airport. Takes a minute to bring it up after the 2.4 but roaming kicks in right away. Would DFS explain the abnormal freeze on radio and the time out of any new connection attempt ?

On 5GHz it would, read the Asus DOC.

On 40 is not looking any better, not sure why DFS scan has kicked in on 40.

Mon Oct  6 14:59:07 2025 daemon.notice hostapd: phy1-ap0: interface state HT_SCAN->DFS
Mon Oct  6 14:59:07 2025 daemon.notice hostapd: phy1-ap0: DFS-CAC-START freq=5200 chan=40 sec_chan=-1, width=2, seg0=50, seg1=0, cac_time=60s
Mon Oct  6 15:00:09 2025 daemon.notice hostapd: phy1-ap0: DFS-CAC-COMPLETED success=1 freq=5200 ht_enabled=0 chan_offset=0 chan_width=5 cf1=5250 cf2=0
Mon Oct  6 15:00:09 2025 daemon.warn hostapd: Can't set DFS state for freq 5180 MHz
Mon Oct  6 15:00:09 2025 daemon.warn hostapd: Can't set DFS state for freq 5200 MHz
Mon Oct  6 15:00:09 2025 daemon.warn hostapd: Can't set DFS state for freq 5220 MHz
Mon Oct  6 15:00:09 2025 daemon.warn hostapd: Can't set DFS state for freq 5240 MHz
Mon Oct  6 15:00:09 2025 kern.info kernel: [25540.963540] IPv6: ADDRCONF(NETDEV_CHANGE): phy1-ap0: link becomes ready
Mon Oct  6 15:00:09 2025 kern.info kernel: [25540.970272] br-lan: port 3(phy1-ap0) entered blocking state
Mon Oct  6 15:00:09 2025 kern.info kernel: [25540.975838] br-lan: port 3(phy1-ap0) entered forwarding state
Mon Oct  6 15:00:09 2025 daemon.notice netifd: Network device 'phy1-ap0' link is up
Mon Oct  6 15:00:10 2025 daemon.notice hostapd: phy1-ap0: interface state DFS->ENABLED
Mon Oct  6 15:00:10 2025 daemon.notice hostapd: phy1-ap0: AP-ENABLED

Bandwidth seems ok though, I'll leave on 40.

Any ideas about the client 2 client not able to reach more then 1gpbs ?

Another thing to add. I noticed the fan is not actually kicking in on 24.10 like it does on 23.05 and the temp goes often above 60 celsius.

wireless client to wireless client:

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-30.00  sec  2.43 GBytes   696 Mbits/sec  1613             sender
[  5]   0.00-30.03  sec  2.43 GBytes   696 Mbits/sec                  receiver

wireless to wired

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-30.00  sec  3.07 GBytes   879 Mbits/sec  468             sender
[  5]   0.00-30.01  sec  3.07 GBytes   878 Mbits/sec                  receiver

quite a gap

If you force HE80 instead of HE160 does it fare any better?

Not at all:

[  5]   0.00-30.00  sec  1.03 GBytes   296 Mbits/sec    9             sender
[  5]   0.00-30.02  sec  1.03 GBytes   296 Mbits/sec                  receiver

and the adapter reported rate is 1200gpbs. It's not 80x80 is just simple 80.

In the end I managed to stabilise this target. It turns out not enabling the 2.4G radio was the answer and the root cause is the massive interference caused by the USB3 SSD mounted on.

Running snapshot for now and it has been fairly stable.

What is the process of changing the USB port speed from 3 to 2. I've noticed screencaps where the GLinet firmware is having the option to switch between usb2 and usb3.

opkg list-installed should should show:

kmod-usb3

should then be a case of opkg remove kmod-usb3, check kmod-usb2 is installed using opkg install kmod-usb2

insmod ehci-hcd

Sometimes a shielded USB cable can help but it is known source of interference

1 Like

I'll try the kmod-usb2 at some point. Basically the mistake was to velcro a Kingston XS1000 to the upper case of the router trying to keep it as compact as possible.

This SSD is having a plastic case so no shielding there, I might try a metal cased one when the price of such USB3 SSD is going to be lower again, and combine it with a shielded cable too, although the current cable is on the thick side so I would say it has some shielding.

lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux 6.12.51 xhci-hcd xHCI Host Controller
Bus 002 Device 001: ID 1d6b:0003 Linux 6.12.51 xhci-hcd xHCI Host Controller
Bus 002 Device 002: ID 0951:1780 Kingston XS1000
lsusb -t
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci-mtk/1p, 480M
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci-mtk/1p, 20000M/x2
    |__ Port 001: Dev 002, If 0, Class=[unknown], Driver=uas, 5000M/x2
1 Like

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