WDS station spams with CTRL-EVENT-BEACON-LOSS

I have a DIR-825b1 as a WDS client. It spams system log form time to time with

Fri Oct 31 03:18:30 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:18:36 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:18:41 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:18:42 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:18:44 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:18:47 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:18:50 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:18:51 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:18:53 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:18:55 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:18:57 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:18:59 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:01 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:04 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:05 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:07 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:09 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:11 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:13 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:15 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:17 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:19 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:21 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:23 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:24 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:25 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:26 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:28 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:29 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:31 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:33 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:35 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:37 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 03:19:40 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 08:04:08 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 08:04:14 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 08:04:31 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 08:04:37 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 08:04:48 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 08:04:52 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 08:04:54 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS
Fri Oct 31 08:05:05 2025 daemon.notice wpa_supplicant[1364]: phy0-sta0: CTRL-EVENT-BEACON-LOSS

There is nothing in the logs at the AP side.

Openwrt 24.10.4 on both sides.

AP and STA are close enough. Signal is strong enough. No other APs are visible. 5 GHz band.

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 (red circle; this works best in the 'Markdown' composer view in the blue oval):

Screenshot 2025-10-20 at 8.14.14 PM

Remember to redact passwords, VPN keys, 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
root@OpenWrt:~# ubus call system board
{
	"kernel": "6.6.110",
	"hostname": "OpenWrt",
	"system": "Atheros AR7161 rev 2",
	"model": "D-Link DIR825B1",
	"board_name": "dlink,dir-825-b1",
	"rootfs_type": "squashfs",
	"release": {
		"distribution": "OpenWrt",
		"version": "24.10.4",
		"revision": "r28959-29397011cc",
		"target": "ath79/generic",
		"description": "OpenWrt 24.10.4 r28959-29397011cc",
		"builddate": "1760891865"
	}
}
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 'fd28:42be:61d1::/48'
	option packet_steering '1'

config device
	option name 'eth1'
	option macaddr '00:18:e7:8c:3f:72'

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

config device
	option name 'eth0.1'
	option macaddr '00:18:e7:8c:3f:71'

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

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

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '0 1 2 3 5t'
root@OpenWrt:~# cat /etc/config/wireless

config wifi-device 'radio0'
	option type 'mac80211'
	option path 'pci0000:00/0000:00:11.0'
	option band '2g'
	option country 'RU'
	option cell_density '0'
	option htmode 'HT40'
	option channel '11'
	option noscan '1'
	option txpower '19'

config wifi-iface 'default_radio0'
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'Pilot'
	option key 'xxxxxxxxxxxxxx'
	option encryption 'sae'
	option ocv '0'
	option ieee80211w '1'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'pci0000:00/0000:00:12.0'
	option band '5g'
	option htmode 'HT40'
	option channel '52'
	option cell_density '0'
	option country 'RU'

config wifi-iface 'wifinet2'
	option device 'radio1'
	option mode 'sta'
	option ssid 'Pilot6'
	option encryption 'sae'
	option key 'xxxxxxxxx'
	option wds '1'
	option network 'lan'
	option ocv '0'
	option ieee80211w '1'
root@OpenWrt:~# 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 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'

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	option ignore '1'

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'
	option piofolder '/tmp/odhcpd-piofolder'
root@OpenWrt:~# cat /etc/config/firewall

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

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

config include
	option path '/etc/firewall.user'

firewall and dhcp server are disabled. It is a client on 5 GHz and AP on 2.4.

What is other WDS end?

	option encryption 'sae'
	option ocv '0'
- 	option ieee80211w '1'

Your firewall looks migrated skipping interim versions. Is it meant to be like a bridge without dhcp etc?

It is a bridge without any firewall or dhcp. I can remove option ieee80211w '1'

The other end is Zyxel NBG6617

some dont work well with -ct driver + firmware, swap both for non-ct versions.

The dir-825 is an ath79 device, so it is not relevant about -ct.

Trying non-ct at the AP side may be an option. But everything is working OK, so I really don’t want to change wireless drivers just for this reason. If there is any good idea on the cause of the log spam, it would be helpful. Maybe I can fix it myself some time.

Yes, it is about base station and ath10k driver. Check the logs there.It logs the fact that one beacon did not reach this client.

btw ath79 do have ath10k even for both radios. Archer A7/C7 for example

There is nothing in the logs at AP side.

This is correct, but this device is using ath9k.

Other approach would be to run capture in the air near both AP-s to see whether beacon was missing from the airwaves. Also set beacon rates to odd/prime numbers between 100 and 200 that they dont fall in the same instant.
I got yhis message a lot connecting WDS with WPA3 but from mt76 client and ath10k-ct main router....
Then I installed wiring :wink:

This is really weird. I think beacons are OK, because other clients don’t complain. But I’ll check it.

Some theory
https://arubanetworking.hpe.com/vrd/VHD_VRD_Collection/ChapT4.html
if you run AP on wifi4 radio (i speculate that) out 10k-ct beacon gets slightly delayed and dropped somewhere.
Other theory - ath9k goes deaf+blind when beaconing and sometimes misses one from its boss...

In my case ath9k doesn’t beacon.

What a coincidence.
Here, too, it's flooded with daemon.notice wpa_supplicant[1292]: phy0-sta0: CTRL-EVENT-BEACON-LOSS logs.

After searching on a search engine, it seems that this always happens with ath9k.
I have an OpenWRT device with ath9k as a Wi-Fi client, and the same thing happens.
The Wi-Fi connects, but there is no internet for a while.
Meanwhile, my Android smartphone does not experience this.

If there is no solution on the client side, what is the correct setting on the AP side?
Thanks.

Just disable logging.

It seems that disabling 40 MHz on the AP for 2.4 GHz client devices is the solution (yes, my wifi client is 2.4 GHz).

I also read that modifying max_nullfunc_tries=2 max_probe_tries=5 beacon_loss_count=7 probe_wait_ms=500 on mac80211 from the client side can suppress logging or perhaps stabilize the connection (?).

But I don't know the correct values. :sweat_smile:

Yiour AI misleads you. 40MHz is non-standard, get rid of it. All fixed.

Isn't that what I said? :thinking:

And believe me, I'm not using AI or asking AI. :sweat_smile:

How then you landed with 40MHz in 2.4GHz. If you measured it performs worse than 20MHz....