UPDATE: It was the phone. It seems that if the Nokia 5.3 can see a viable 5GHz WiFi that it knows about, even if it's set to not autoconnect, it does attempt to authenticate anyway, and then it drops the 2.4GHz connection... leaving the user with NO active connection afterwards.
Original post-
I've been using Linux based machines for decades, but OpenWRT admittedly only for a few weeks; I've come across an odd issue that only seems to be affecting one device, and only with 2.4GHz WiFi (the 5GHz one is fine):
TL;DR Once a Nokia 5.3 phone successfully connects to phy1-ap0 (the 2.4GHz WiFi AP), phy0-ap0 (the 5GHz WiFi AP with a different SSID) gets involved and causes the Nokia 5.3 to disconnect.
Connections to the 5GHz WiFi AP are fine, the issue is only connections to the 2.4GHz AP (with a different SSID to that ) and it happens repeatably, every time, across two different devices (with likely identical hardware) but only with this Nokia 5.3.
Client device:
Nokia 5.3
Stock Android (Android One) running Android 12
OpenWRT WiFi AP device(s):
Netgear EX6120 (also happens with Netgear EX3700 - essentially same hardware)
Configured as a dumb AP (2.4GHz + 5GHz each with own SSIDs) bridged to LAN via 100Mbps FE
Security is WPA2-PSK (single mode) with WPA2-AES (CCMP) (there were occasional issues with WPA2/WPA3 mixed mode)
Question: Is this a bug? If so, with the phone or OpenWRT?
syslog:
Sun Feb 25 00:32:56 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 00:32:56 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 12)
Sun Feb 25 00:32:57 2024 daemon.notice hostapd: phy1-ap0: AP-STA-CONNECTED [MACofNokia-5.3] auth_alg=open
Sun Feb 25 00:32:57 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] WPA: pairwise key handshake completed (RSN)
Sun Feb 25 00:32:57 2024 daemon.notice hostapd: phy1-ap0: EAPOL-4WAY-HS-COMPLETED [MACofNokia-5.3]
Sun Feb 25 00:33:05 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 00:33:05 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 1)
Sun Feb 25 00:33:05 2024 daemon.notice hostapd: phy1-ap0: Prune association for [MACofNokia-5.3]
Sun Feb 25 00:33:05 2024 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED [MACofNokia-5.3]
Sun Feb 25 00:33:05 2024 daemon.notice hostapd: phy0-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 00:33:06 2024 daemon.notice hostapd: phy0-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 00:33:07 2024 daemon.notice hostapd: phy0-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 00:33:08 2024 daemon.notice hostapd: phy0-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 00:33:12 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 00:33:12 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 12)
Sun Feb 25 00:33:12 2024 daemon.notice hostapd: phy0-ap0: Prune association for [MACofNokia-5.3]
Sun Feb 25 00:33:12 2024 daemon.notice hostapd: phy1-ap0: AP-STA-CONNECTED [MACofNokia-5.3] auth_alg=open
Sun Feb 25 00:33:12 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] WPA: pairwise key handshake completed (RSN)
Sun Feb 25 00:33:12 2024 daemon.notice hostapd: phy1-ap0: EAPOL-4WAY-HS-COMPLETED [MACofNokia-5.3]
Sun Feb 25 00:33:27 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 00:33:27 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 1)
Sun Feb 25 00:33:27 2024 daemon.notice hostapd: phy1-ap0: Prune association for [MACofNokia-5.3]
Sun Feb 25 00:33:27 2024 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED [MACofNokia-5.3]
Sun Feb 25 00:33:27 2024 daemon.notice hostapd: phy0-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 00:33:28 2024 daemon.notice hostapd: phy0-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 00:33:29 2024 daemon.notice hostapd: phy0-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 00:33:30 2024 daemon.notice hostapd: phy0-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 00:33:35 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 00:33:35 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 12)
Sun Feb 25 00:33:35 2024 daemon.notice hostapd: phy0-ap0: Prune association for [MACofNokia-5.3]
Sun Feb 25 00:33:35 2024 daemon.notice hostapd: phy1-ap0: AP-STA-CONNECTED [MACofNokia-5.3] auth_alg=open
Sun Feb 25 00:33:35 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] WPA: pairwise key handshake completed (RSN)
Sun Feb 25 00:33:35 2024 daemon.notice hostapd: phy1-ap0: EAPOL-4WAY-HS-COMPLETED [MACofNokia-5.3]
Sun Feb 25 00:33:47 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 00:33:47 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 1)
Sun Feb 25 00:33:47 2024 daemon.notice hostapd: phy1-ap0: Prune association for [MACofNokia-5.3]
Sun Feb 25 00:33:47 2024 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED [MACofNokia-5.3]
Sun Feb 25 00:33:47 2024 daemon.notice hostapd: phy0-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 00:33:48 2024 daemon.notice hostapd: phy0-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 00:33:49 2024 daemon.notice hostapd: phy0-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 00:33:50 2024 daemon.notice hostapd: phy0-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 00:33:56 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: deauthenticated due to local deauth request
Sun Feb 25 00:34:16 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 00:34:16 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 12)
Sun Feb 25 00:34:16 2024 daemon.notice hostapd: phy1-ap0: AP-STA-CONNECTED [MACofNokia-5.3] auth_alg=open
Sun Feb 25 00:34:16 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] WPA: pairwise key handshake completed (RSN)
Sun Feb 25 00:34:16 2024 daemon.notice hostapd: phy1-ap0: EAPOL-4WAY-HS-COMPLETED [MACofNokia-5.3]
Sun Feb 25 00:34:23 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 00:34:23 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 1)
Sun Feb 25 00:34:23 2024 daemon.notice hostapd: phy1-ap0: Prune association for [MACofNokia-5.3]
Sun Feb 25 00:34:23 2024 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED [MACofNokia-5.3]
Notes:
phy1-ap0 = 2.4GHz network (MYNETWORK)
phy0-ap0 = 5GHz network (MYNETWORK-5GHZ e.g. a different SSID)
[MACofNokia-5.3] = MAC of the problem client device
ONLY affects Nokia 5.3
ONLY affects attempts to connect to 2.4GHz network, 5GHz is fine.
ALWAYS happens, repeatable, across two very similar OpenWRT devices (Netgear EX3700 & EX6120)
I'm aware the devices have limited storage and RAM but there doesn't seem to be any issues with free memory etc and I've not done anything daft like add lots of extra packages (only added iperf3)
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:
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
ChatGPT suggested the embarrassingly obvious thing of disabling the 5GHz AP/radio0 to see what happens...
...in which case, it connects to the 2.4GHz AP fine, and stays connected, and nothing further appears in the logs.
Sun Feb 25 01:53:43 2024 daemon.notice netifd: Wireless device 'radio0' is now down
Sun Feb 25 01:53:49 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 01:53:49 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 6)
Sun Feb 25 01:53:49 2024 daemon.notice hostapd: phy1-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 01:53:50 2024 daemon.notice hostapd: phy1-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 01:53:51 2024 daemon.notice hostapd: phy1-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 01:53:52 2024 daemon.notice hostapd: phy1-ap0: AP-STA-POSSIBLE-PSK-MISMATCH [MACofNokia-5.3]
Sun Feb 25 01:53:58 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: deauthenticated due to local deauth request
Sun Feb 25 01:54:12 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 01:54:12 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 6)
Sun Feb 25 01:54:12 2024 daemon.notice hostapd: phy1-ap0: AP-STA-CONNECTED [MACofNokia-5.3] auth_alg=open
Sun Feb 25 01:54:12 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] WPA: pairwise key handshake completed (RSN)
Sun Feb 25 01:54:12 2024 daemon.notice hostapd: phy1-ap0: EAPOL-4WAY-HS-COMPLETED [MACofNokia-5.3]
What happens if you use the same SSID for both bands?
Works-
Sun Feb 25 02:05:04 2024 daemon.notice netifd: Wireless device 'radio0' is now up
Sun Feb 25 02:05:05 2024 kern.info kernel: [ 2501.858510] IPv6: ADDRCONF(NETDEV_CHANGE): phy0-ap0: link becomes ready
Sun Feb 25 02:05:05 2024 kern.info kernel: [ 2501.871972] br-lan: port 3(phy0-ap0) entered blocking state
Sun Feb 25 02:05:05 2024 kern.info kernel: [ 2501.883137] br-lan: port 3(phy0-ap0) entered forwarding state
Sun Feb 25 02:05:05 2024 daemon.notice netifd: Network device 'phy0-ap0' link is up
Sun Feb 25 02:05:05 2024 daemon.notice hostapd: phy0-ap0: interface state HT_SCAN->ENABLED
Sun Feb 25 02:05:05 2024 daemon.notice hostapd: phy0-ap0: AP-ENABLED
Sun Feb 25 02:05:19 2024 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED [MACofNokia-5.3]
Sun Feb 25 02:06:07 2024 daemon.info hostapd: phy0-ap0: STA [mac] IEEE 802.11: authenticated
Sun Feb 25 02:06:07 2024 daemon.notice hostapd: phy0-ap0: STA-OPMODE-N_SS-CHANGED [mac] 1
Sun Feb 25 02:06:07 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 1)
Sun Feb 25 02:06:07 2024 daemon.notice hostapd: phy0-ap0: AP-STA-CONNECTED [mac] auth_alg=open
Sun Feb 25 02:06:07 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] WPA: pairwise key handshake completed (RSN)
Sun Feb 25 02:06:07 2024 daemon.notice hostapd: phy0-ap0: EAPOL-4WAY-HS-COMPLETED [MACofNokia-5.3]
Or, what happens if you delete/forget the 5G network from your Nokia's wifi network list?
No difference. One of the first things I tried.
You're on 23.05.0 -- you might try upgrading to 23.05.2 to see if that helps.
So is there a reason you've been using separate SSIDs for 2.4G and 5G? In general, it is recommended to use the same SSID so that the client can make its own choices regarding which band to use at any given moment (part of its roaming logic).
So is there a reason you've been using separate SSIDs for 2.4G and 5G? In general, it is recommended to use the same SSID so that the client can make its own choices regarding which band to use at any given moment (part of its roaming logic).
Yes, unfortunately. (Primary use of the 5GHz WiFi beyond general phone type use is various forms of local game streaming, including VR, which band steering can upset, plus some devices with known bugs with band steering, plus 2.4GHz here is absolutely hellish crowded so I don't even attempt to use it in general except for smart devices etc.)
Plus... actually, matching SSIDs doesn't cause the 2.4GHz connection to work. It turns out that connection only continues for as long as it can maintain a 5GHz connection, when at attempts to steer back down to 2.4GHz, it seems to hold for a few seconds, then connection soon drops like before. Reconnections continue until it can hold the 5GHz.
Sun Feb 25 02:20:38 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 02:20:38 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 6)
Sun Feb 25 02:20:38 2024 daemon.notice hostapd: phy0-ap0: Prune association for [MACofNokia-5.3]
Sun Feb 25 02:20:38 2024 daemon.notice hostapd: phy0-ap0: AP-STA-DISCONNECTED [MACofNokia-5.3]
Sun Feb 25 02:20:38 2024 daemon.notice hostapd: phy1-ap0: AP-STA-CONNECTED [MACofNokia-5.3] auth_alg=open
Sun Feb 25 02:20:38 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] WPA: pairwise key handshake completed (RSN)
Sun Feb 25 02:20:38 2024 daemon.notice hostapd: phy1-ap0: EAPOL-4WAY-HS-COMPLETED [MACofNokia-5.3]
Sun Feb 25 02:20:52 2024 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED [MACofNokia-5.3]
Sun Feb 25 02:20:52 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 02:20:52 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 6)
Sun Feb 25 02:20:52 2024 daemon.notice hostapd: phy0-ap0: Prune association for [MACofNokia-5.3]
Sun Feb 25 02:20:52 2024 daemon.notice hostapd: phy1-ap0: AP-STA-CONNECTED [MACofNokia-5.3] auth_alg=open
Sun Feb 25 02:20:52 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] WPA: pairwise key handshake completed (RSN)
Sun Feb 25 02:20:52 2024 daemon.notice hostapd: phy1-ap0: EAPOL-4WAY-HS-COMPLETED [MACofNokia-5.3]
Sun Feb 25 02:21:22 2024 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED [MACofNokia-5.3]
Sun Feb 25 02:21:22 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 02:21:22 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 6)
Sun Feb 25 02:21:22 2024 daemon.notice hostapd: phy0-ap0: Prune association for [MACofNokia-5.3]
Sun Feb 25 02:21:22 2024 daemon.notice hostapd: phy1-ap0: AP-STA-CONNECTED [MACofNokia-5.3] auth_alg=open
Sun Feb 25 02:21:22 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] WPA: pairwise key handshake completed (RSN)
Sun Feb 25 02:21:22 2024 daemon.notice hostapd: phy1-ap0: EAPOL-4WAY-HS-COMPLETED [MACofNokia-5.3]
Sun Feb 25 02:21:52 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
Sun Feb 25 02:21:55 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 02:21:55 2024 daemon.notice hostapd: phy0-ap0: STA-OPMODE-N_SS-CHANGED [MACofNokia-5.3] 1
Sun Feb 25 02:21:55 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 1)
Sun Feb 25 02:21:55 2024 daemon.notice hostapd: phy1-ap0: Prune association for [MACofNokia-5.3]
Sun Feb 25 02:21:55 2024 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED [MACofNokia-5.3]
Sun Feb 25 02:21:55 2024 daemon.notice hostapd: phy0-ap0: AP-STA-CONNECTED [MACofNokia-5.3] auth_alg=open
Sun Feb 25 02:21:55 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] WPA: pairwise key handshake completed (RSN)
Sun Feb 25 02:21:55 2024 daemon.notice hostapd: phy0-ap0: EAPOL-4WAY-HS-COMPLETED [MACofNokia-5.3]
Sun Feb 25 02:22:10 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 02:22:10 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 6)
Sun Feb 25 02:22:10 2024 daemon.notice hostapd: phy0-ap0: Prune association for [MACofNokia-5.3]
Sun Feb 25 02:22:10 2024 daemon.notice hostapd: phy0-ap0: AP-STA-DISCONNECTED [MACofNokia-5.3]
Sun Feb 25 02:22:10 2024 daemon.notice hostapd: phy1-ap0: AP-STA-CONNECTED [MACofNokia-5.3] auth_alg=open
Sun Feb 25 02:22:10 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] WPA: pairwise key handshake completed (RSN)
Sun Feb 25 02:22:10 2024 daemon.notice hostapd: phy1-ap0: EAPOL-4WAY-HS-COMPLETED [MACofNokia-5.3]
Sun Feb 25 02:22:34 2024 daemon.notice hostapd: phy0-ap0: STA-OPMODE-N_SS-CHANGED [MACofNokia-5.3] 1
Sun Feb 25 02:22:34 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: authenticated
Sun Feb 25 02:22:34 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] IEEE 802.11: associated (aid 1)
Sun Feb 25 02:22:34 2024 daemon.notice hostapd: phy1-ap0: Prune association for [MACofNokia-5.3]
Sun Feb 25 02:22:34 2024 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED [MACofNokia-5.3]
Sun Feb 25 02:22:34 2024 daemon.notice hostapd: phy0-ap0: AP-STA-CONNECTED [MACofNokia-5.3] auth_alg=open
Sun Feb 25 02:22:34 2024 daemon.info hostapd: phy0-ap0: STA [MACofNokia-5.3] WPA: pairwise key handshake completed (RSN)
Sun Feb 25 02:22:34 2024 daemon.notice hostapd: phy0-ap0: EAPOL-4WAY-HS-COMPLETED [MACofNokia-5.3]
Sun Feb 25 02:23:04 2024 daemon.info hostapd: phy1-ap0: STA [MACofNokia-5.3] IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
Your situation sound more like it is related to the channel selection and power settings of your AP, rather than issues with OpenWrt.
With your phone, the device shouldn't even try to connect to the 5G radio if it isn't set to auto-connect (and if it doesn't have the password), so forgetting it from the phone should solve that problem.
Another approach would be to setup 2 SSIDs on the 5G band. One would have the same name as your 2.4G SSID (thus allowing devices to select as needed) and the other being a unique SSID which is only used by the devices that you want to prevent from using the 2.4G SSID.
With your phone, the device shouldn't even try to connect to the 5G radio if it isn't set to auto-connect (and if it doesn't have the password), so forgetting it from the phone should solve that problem.
It turns out that forgetting the 5GHz connections DID solve it, I thought I'd done that, I obviously hadn't. Sorry.
Those stupid 5GHz connections from the phone and successful authentications on the 5GHz radio were real -- even though the the entries for the 5GHz WiFi connections were set to not autoconnect.
It seems that, if the Nokia 5.3 can see a viable 5GHz WiFi that it knows about, even if it's set to not autoconnect, it does attempt to authenticate anyway, and then it drop the 2.4GHz connection... leaving the user with NO active connection afterwards.
It's crazy enough that it'll even jump between multiple known 2.4GHz APs (e.g. from another router), and will drop them each time after briefly associating with the 5GHz AP that it's specifically been told not to!
Thank you for your help on this.
Team OpenWRT wins again.
(I will update my original post with the finding.)
So, to a degree, the behavior you are describing is part of the general roaming logic -- a device should try to connect to the wireless network that will have the best performance. However, the details of the Nokia roaming experience does sound like it is poorly implemented.