Hi all!
So, my issue is similar to that of Android won't connect to wifi but not the same.
My network setup is a bit unique. I use a Unifi UCG-Fiber as gateway/router, and have 2x Belkin RT3200 + 1x Netgear WAX220 acting as APs.
The config is pretty straightforward between the three nodes:
- bridge all ETH ports into a single bridge type device
- create bridge-vlan devices for my various VLANs (1 is untagged, main net, 2 is tagged, guest net, etc.)
- create interfaces mapping the bridge-vlan devices to actual networks as defined by OWRT
root@heimdall:~# 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 packet_steering '1'
option dhcp_default_duid 'xxxx'
config device 'switch'
option name 'switch'
option type 'bridge'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'lan4'
list ports 'wan'
option bridge_empty '1'
option macaddr 'e8:9f:80:xx:xx:xx'
config bridge-vlan 'lan_vlan'
option device 'switch'
option vlan '1'
option ports 'lan1 lan2 lan3 lan4 wan'
config bridge-vlan 'guest_vlan'
option device 'switch'
option vlan '2'
option ports 'lan1:t lan2:t lan3:t lan4:t wan:t'
config bridge-vlan 'iot_vlan'
option device 'switch'
option vlan '3'
option ports 'lan1:t lan2:t lan3:t lan4:t wan:t'
config bridge-vlan 'vpn_vlan'
option device 'switch'
option vlan '12'
option ports 'lan1:t lan2:t lan3:t lan4:t wan:t'
config interface 'lan'
option device 'switch.1'
option proto 'dhcp'
config interface 'guest'
option proto 'none'
option device 'switch.2'
config interface 'iot'
option proto 'none'
option device 'switch.3'
config interface 'vpn_se'
option proto 'dhcp'
option device 'switch.12'
WiFi is similarly straightforward:
- take default radio config of device + set up beamforming, BSS colouring
- configure main wifi + side channels (guest net, IoT, VPN)
- All on WPA2/WPA3 mix (got some older devices
Current config (sensitive data redacted, truncated to main net):
config wifi-device 'radio0'
option type 'mac80211'
option phy 'wl0'
option band '2g'
option channel 'auto'
option htmode 'HT40'
option he_su_beamformee '1'
option he_bss_color '36'
option cell_density '2'
option country 'GB'
config wifi-device 'radio1'
option type 'mac80211'
option phy 'wl1'
option band '5g'
option channel 'auto'
option htmode 'HE80'
option he_su_beamformee '1'
option he_bss_color '38'
option cell_density '2'
option country 'GB'
config wifi-iface 'wifinet0' // Main net, radio0
option device 'radio0'
option network 'lan'
option mode 'ap'
option encryption 'sae-mixed'
option ssid 'xxx'
option key 'xxx'
option ieee80211k '1'
option ieee80211r '1'
option nasid 'heimdall-2g'
option mobility_domain 'd00d'
option ft_over_ds '0'
option pmk_r1_push '1'
option time_advertisement '2'
option time_zone 'GMT0BST,M3.5.0/1,M10.5.0'
option ocv '2' // this has been 0 for a while, changed for testing, no result
config wifi-iface 'wifinet1' // Main net, radio1
option mode 'ap'
option device 'radio1'
option network 'lan'
option encryption 'sae-mixed'
option ssid 'xxx'
option key 'xxx'
option ieee80211k '1'
option ieee80211r '1'
option nasid 'heimdall-5g'
option mobility_domain 'd00d'
option ft_over_ds '0'
option pmk_r1_push '1'
option time_advertisement '2'
option time_zone 'GMT0BST,M3.5.0/1,M10.5.0'
option ocv '2' // this has been 0 for a while, changed for testing, no result
And on the WAX220:
config wifi-device 'radio0'
option type 'mac80211'
option path 'platform/soc/18000000.wifi'
option band '2g'
option htmode 'HE40'
option channel 'auto'
option he_su_beamformee '1'
option he_bss_color '54'
option cell_density '2'
option country 'GB'
option noscan '1'
config wifi-device 'radio1'
option type 'mac80211'
option path 'platform/soc/18000000.wifi+1'
option band '5g'
option channel 'auto'
option he_su_beamformee '1'
option he_bss_color '56'
option cell_density '2'
option htmode 'HE80'
option country 'GB'
config wifi-iface 'wifinet0'
option mode 'ap'
option device 'radio0'
option network 'lan'
option encryption 'sae-mixed'
option ssid 'xxx'
option key 'xxx'
option ieee80211k '1'
option ieee80211r '1'
option nasid 'frigga-2g'
option mobility_domain 'd00d'
option ft_over_ds '0'
option pmk_r1_push '1'
option time_advertisement '2'
option time_zone 'GMT0BST,M3.5.0/1,M10.5.0'
option ocv '2' // this has been 0 for a while, changed for testing, no result
config wifi-iface 'wifinet1'
option mode 'ap'
option device 'radio1'
option network 'lan'
option encryption 'sae-mixed'
option ssid 'xxx'
option key 'xxx'
option ieee80211k '1'
option ieee80211r '1'
option nasid 'frigga-5g'
option mobility_domain 'd00d'
option ft_over_ds '0'
option pmk_r1_push '1'
option time_advertisement '2'
option time_zone 'GMT0BST,M3.5.0/1,M10.5.0'
option ocv '2' // this has been 0 for a while, changed for testing, no result
DHCP and firewall are disabled, as these units are "dumb" APs only.
As you can see, everything is set up correctly, and this config has worked for quite a while, even on snapshot versions.
About a week ago I started noticing my iOS/iPadOS/macOS devices frequently dropping, and as of a few days ago, my older Android devices (Android 11/12/14) are completely refusing to connect.
I've upgraded to latest snapshot a few days ago (after noticing the Android issue, not before!), to r34914, and most recently this morning, to r34989, on all units. Unfortunately, this did not help, the issue is still present. Prior to that I was running a somewhat older build (upgraded them sometime around March).
Funny thing is, if I revert my security to WPA2-PSK, the affected devices all start to act appropriately, as expected. Switching back to WPA3-SAE or WPA2/WPA3 mixed mode results in the Android devices refusing to connect, claiming a bad password, and Apple devices irregularly dropping off WiFi.
I'm suspecting a change in the WPA3 handler, though I can't say why it started happening at all. Nonetheless, breaking compatibility with older Android devices (my Android 16/17 devices seem to be fine!) is not something most people can live with.