OpenWrt wifi roaming not working

I have it set up with 3 openwrt and it works then stops.

Have to stop the wifi on the phone or laptop and reconnect then works again for some time.
Do not see any problem in the logs.

When it has the problem can ping the gateway, but no other device on lan or wan.
Release and renewing IP does not help.

On the latest dev build.
Do i need to install wpad and remove current is this outdated?
Enabling 802.11r (Fast Roaming/Transition) on OpenWRT (parkercs.tech)

I have Mobility Domain set on all

Thanks Kevin

Some devices don't work well with 802.11r (or k/v, either).

Try disabling 802.11r on all three devices and see if things are better or worse. We may also want to look at the wireless config for each device to consider how it may need to be optimized.

And while we're talking about wifi optimizations... it is important to tune your APs for best classic roaming performance before attempting to add 802.11r. Take a look at this video which does a good job describing the process (it assumes Unifi, but the concepts apply to all wifi devices/firmware as long as the relevant settings are exposed).

I don't use wpad in my 11r setup at all, even uninstalled it, replaced it with hostapd (non basic).

1 Like

wpad is just both hostapd and wpa supplicant in one.

1 Like

Have a look here - will tell you if clients used FT:

./wifi_suite.sh: line 2: Associated wifi stations' AKM suites:: not found
root@OpenWrt:~# hostapd_cli interface
Selected interface 'phy0-ap0'
Available interfaces:
phy0-ap0
phy1-ap0
global

No connections at all ?

Looks like the problem is with WRT3200ACM device wifi is showing and connecting then can not get around.

Deleted Wifi and readded and same.
looks if I set the channel it does not work on auto look to be working.( on the same channel)

1 Like

Could you share your /etc/config/wireless file in a pre formatted text block for us to review with you? Please redact any sensitive info like passwords and MAC addresses.

About to go back to stock wifi is SO bad removed all well and made each and own ssid and channel
The WRT3200ACM is very bad on wifi.
All devices do not work wifi drops.

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

config wifi-device 'radio0'
        option type 'mac80211'
        option path 'soc/soc:pcie/pci0000:00/0000:00:01.0/0000:01:00.0'
        option channel '161'
        option band '5g'
        option htmode 'VHT20'
        option country 'US'
        option cell_density '0'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'xxx'
        option encryption 'psk2'
        option macaddr 'xxx'
        option key 'xxx'

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'soc/soc:pcie/pci0000:00/0000:00:02.0/0000:02:00.0'
        option channel '6'
        option band '2g'
        option htmode 'HT20'
        option country 'US'
        option cell_density '0'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'xxx'
        option encryption 'psk2'
        option macaddr 'xxx'
        option key 'xxx'

config wifi-device 'radio2'
        option type 'mac80211'
        option path 'platform/soc/soc:internal-regs/f10d8000.sdhci/mmc_host/mmc0/mmc0:0001/mmc0:0001:1'
        option channel '34'
        option band '5g'
        option htmode 'VHT80'
        option disabled '1'

config wifi-iface 'default_radio2'
        option device 'radio2'
        option network 'lan'
        option mode 'ap'
        option ssid 'OpenWrt'
        option encryption 'none'

Seems simplest possible config. Perhaps monitor output of hostapd to look what’s causing issues?

Having the same ssid but not same key may be a possible issue - disabling all but one should show if it is.

all i see in log is:

Tue May  9 14:12:02 2023 daemon.info hostapd: phy1-ap0: STA xxxx IEEE 802.11: associated (aid 3)
Tue May  9 14:12:02 2023 daemon.notice hostapd: phy1-ap0: STA-OPMODE-SMPS-MODE-CHANGED xxxx off
Tue May  9 14:12:03 2023 daemon.info hostapd: phy1-ap0: STA xxxx IEEE 802.11: authenticated
Tue May  9 14:12:03 2023 daemon.notice hostapd: phy1-ap0: AP-STA-CONNECTED xxxx auth_alg=open
Tue May  9 14:12:03 2023 daemon.info hostapd: phy1-ap0: STA xxxx WPA: pairwise key handshake completed (RSN)
Tue May  9 14:12:03 2023 daemon.notice hostapd: phy1-ap0: EAPOL-4WAY-HS-COMPLETED xxxx
Tue May  9 14:12:21 2023 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED xxxx

You may want to increase your log-level. Also, having a look with manually started hostapd will tell you a lot more.

FWIW, a typical FT session (radio1 <-> radio2) for me looks like this (log_level = 1):

 daemon.debug hostapd: wlan1: STA <MAC redacted> IEEE 802.11: added new dynamic VLAN interface 'wlan1.<VLAN#1>'
 daemon.debug hostapd: wlan1: STA <MAC redacted> IEEE 802.11: updated existing dynamic VLAN interface 'wlan1.<VLAN#1>'
 daemon.debug hostapd: wlan1: STA <MAC redacted> IEEE 802.11: binding station to interface 'wlan1.<VLAN#1>'
 daemon.info hostapd: wlan1: STA <MAC redacted> IEEE 802.11: VLAN ID <VLAN#1>
 daemon.debug hostapd: wlan1: STA <MAC redacted> IEEE 802.11: authentication OK (FT)
 daemon.debug hostapd: wlan1: STA <MAC redacted> MLME: MLME-AUTHENTICATE.indication(<MAC redacted>, FT)
 daemon.err hostapd: VLAN: vlan_add: ADD_VLAN_CMD failed for eth0: File exists
 daemon.err hostapd: VLAN: br_addif: Failure determining interface index for 'vlan<VLAN#1>'
 daemon.err hostapd: VLAN: ifconfig_helper: ioctl(SIOCGIFFLAGS) failed for interface vlan<VLAN#1>: No such device
 kern.info kernel: [147788.378299] br-vlan<VLAN#1>: port 7(wlan1.<VLAN#1>) entered blocking state
 kern.info kernel: [147788.384529] br-vlan<VLAN#1>: port 7(wlan1.<VLAN#1>) entered disabled state
 kern.info kernel: [147788.391200] device wlan1.<VLAN#1> entered promiscuous mode
 kern.info kernel: [147788.396524] br-vlan<VLAN#1>: port 7(wlan1.<VLAN#1>) entered blocking state
 kern.info kernel: [147788.402765] br-vlan<VLAN#1>: port 7(wlan1.<VLAN#1>) entered forwarding state
 daemon.debug hostapd: wlan1: STA <MAC redacted> IEEE 802.11: association OK (aid 1)
 daemon.info hostapd: wlan1: STA <MAC redacted> IEEE 802.11: associated (aid 1)
 daemon.notice hostapd: wlan1: AP-STA-CONNECTED <MAC redacted>
 daemon.debug hostapd: wlan1: STA <MAC redacted> MLME: MLME-REASSOCIATE.indication(<MAC redacted>)
 daemon.debug hostapd: wlan1: STA <MAC redacted> IEEE 802.11: binding station to interface 'wlan1.<VLAN#1>'
 daemon.debug hostapd: wlan1: STA <MAC redacted> WPA: event 6 notification
 daemon.notice hostapd: wlan0: Prune association for <MAC redacted>
 daemon.notice hostapd: wlan0: AP-STA-DISCONNECTED <MAC redacted>
 daemon.debug hostapd: wlan1: STA <MAC redacted> IEEE 802.1X: start authentication
 daemon.debug hostapd: wlan1: STA <MAC redacted> IEEE 802.1X: PMK from FT - skip IEEE 802.1X/EAP
 daemon.debug hostapd: wlan1: STA <MAC redacted> IEEE 802.11: binding station to interface 'wlan1.<VLAN#1>'
 daemon.debug hostapd: wlan1: STA <MAC redacted> WPA: FT authentication already completed - do not start 4-way handshake
 daemon.debug hostapd: wlan1: STA <MAC redacted> IEEE 802.1X: authorizing port
 daemon.info hostapd: wlan1: STA <MAC redacted> RADIUS: starting accounting session 1E54F7249BF434A6
 daemon.info hostapd: wlan1: STA <MAC redacted> IEEE 802.1X: authenticated - EAP type: 0 (unknown)
 daemon.debug hostapd: wlan0: STA <MAC redacted> MLME: MLME-DISASSOCIATE.indication(<MAC redacted>, 1)
 daemon.debug hostapd: wlan0: STA <MAC redacted> MLME: MLME-DELETEKEYS.request(<MAC redacted>)
 daemon.debug hostapd: wlan0: STA <MAC redacted> IEEE 802.11: binding station to interface 'wlan0.<VLAN#1>'
 daemon.info hostapd: wlan0: STA <MAC redacted> IEEE 802.11: VLAN ID <VLAN#1>
 daemon.debug hostapd: wlan0: STA <MAC redacted> IEEE 802.11: updated existing dynamic VLAN interface 'wlan0.<VLAN#1>'
 daemon.debug hostapd: wlan0: STA <MAC redacted> IEEE 802.11: authentication OK (FT)
 daemon.debug hostapd: wlan0: STA <MAC redacted> MLME: MLME-AUTHENTICATE.indication(<MAC redacted>, FT)
 daemon.debug hostapd: wlan0: STA <MAC redacted> IEEE 802.11: association OK (aid 3)
 daemon.notice hostapd: wlan0: STA-OPMODE-N_SS-CHANGED <MAC redacted> 1
 daemon.info hostapd: wlan0: STA <MAC redacted> IEEE 802.11: associated (aid 3)
 daemon.notice hostapd: wlan0: AP-STA-CONNECTED <MAC redacted>
 daemon.debug hostapd: wlan0: STA <MAC redacted> MLME: MLME-REASSOCIATE.indication(<MAC redacted>)
 daemon.debug hostapd: wlan0: STA <MAC redacted> IEEE 802.11: binding station to interface 'wlan0.<VLAN#1>'
 daemon.debug hostapd: wlan0: STA <MAC redacted> WPA: event 6 notification
 daemon.notice hostapd: wlan1: Prune association for <MAC redacted>
 daemon.notice hostapd: wlan1: AP-STA-DISCONNECTED <MAC redacted>
 daemon.debug hostapd: wlan0: STA <MAC redacted> IEEE 802.1X: start authentication
 daemon.debug hostapd: wlan0: STA <MAC redacted> IEEE 802.1X: PMK from FT - skip IEEE 802.1X/EAP
 daemon.debug hostapd: wlan0: STA <MAC redacted> IEEE 802.11: binding station to interface 'wlan0.<VLAN#1>'
 daemon.debug hostapd: wlan0: STA <MAC redacted> WPA: FT authentication already completed - do not start 4-way handshake
 daemon.debug hostapd: wlan0: STA <MAC redacted> IEEE 802.1X: authorizing port
 daemon.info hostapd: wlan0: STA <MAC redacted> RADIUS: starting accounting session 08D8675B6F416892
 daemon.info hostapd: wlan0: STA <MAC redacted> IEEE 802.1X: authenticated - EAP type: 0 (unknown)
 daemon.debug hostapd: wlan1: STA <MAC redacted> MLME: MLME-DISASSOCIATE.indication(<MAC redacted>, 1)
 daemon.debug hostapd: wlan1: STA <MAC redacted> MLME: MLME-DELETEKEYS.request(<MAC redacted>)

Note that this with 802.1X and dynamic VLAN.

How increase your log-level?

Best described here:
[OpenWrt Wiki] Debugging