Every-BSSID client sweep: OpenWiFi 5.1.0 (0.006)

One sensor joined every BSSID of the test SSIDs on the five lab APs in turn — 2.4, 5 and 6 GHz — took a DHCP lease, and pinged 1.1.1.1 once a second for 15 s through that association. Run sweep-20261005-160037, 2026‑10‑05.

Versions under test

ComponentVersion
rXg16.787-5-hbhowksdan51update · branch hbh/ow-ksdan-5-1-update @ 74ca4c00e
rxg_sdan bundle served by the rXg1.18-alpha-de62a9f
AP firmware (all five APs)ApNos-92cbcec63 · wlan-ap rgnets-5.1.0-0.006 · OpenWrt 25.12.3 r32912-6639b15f62
rg_wss_client (all five APs)1.0.40
APModelAddressFirmwarerg_wss_client
189CIG WF189172.16.11.100ApNos-92cbcec631.0.40
660aCigtech WF-660a172.16.11.102ApNos-92cbcec631.0.40
186hCIG WF186h172.16.11.103ApNos-92cbcec631.0.40
188nCigtech WF-188n172.16.11.104ApNos-92cbcec631.0.40
eap111Edgecore EAP111172.16.11.105ApNos-92cbcec631.0.40

Read from each AP (/etc/openwrt_version, the running client’s version.py) and from the rXg’s generated build initializer shortly after the run. No AP had rebooted since before the sweep (all uptimes over an hour), so these are the versions the sweep ran against.

Result: 10/11

AP5 GHz2.4 GHz6 GHz
189pass · ch 44 · 15/15pass · ch 6 · 15/15pass · ch 65 · 15/15
660apass · ch 149 · 15/15pass · ch 6 · 15/15no 6 GHz radio
186hpass · ch 157 · 15/15ping‑loss · ch 11 · 14/15no 6 GHz radio
188npass · ch 157 · 15/15pass · ch 6 · 15/15no 6 GHz radio
eap111pass · ch 149 · 15/15pass · ch 11 · 15/15no 6 GHz radio

Every BSSID associated and leased on the first attempt; DHCP took 0.4–0.5 s each, all on VLAN 301 (10.20.2.0/24, server 10.20.2.1). The single miss is one dropped echo: the 186h’s 2.4 GHz BSSID answered every second except the fifth. The same BSSID was 15/15 on the previous sweep an hour earlier, so this reads as one lost frame on a busy 2.4 GHz channel, but under the strict 15/15 rule it is recorded as a fail.

Per BSSID

APBandMHzBSSIDSSID / authLeasePing
18955220d4:ba:ba:a3:15:abOW mPSK WPA2 · WPA2‑PSK10.20.2.215/15
660a55745d4:ba:ba:a1:8c:01OW mPSK WPA2 · WPA2‑PSK10.20.2.215/15
186h55785d4:ba:ba:a4:05:cbOW mPSK WPA2 · WPA2‑PSK10.20.2.215/15
188n55785d4:ba:ba:ab:ba:aaOW mPSK WPA2 · WPA2‑PSK10.20.2.215/15
eap1115574522:1a:e3:db:53:68OW mPSK WPA2 · WPA2‑PSK10.20.2.215/15
1892.42437d4:ba:ba:a3:15:aaOW mPSK WPA2 · WPA2‑PSK10.20.2.315/15
660a2.42437d4:ba:ba:a1:8c:02OW mPSK WPA2 · WPA2‑PSK10.20.2.315/15
186h2.42462d4:ba:ba:a4:05:caOW mPSK WPA2 · WPA2‑PSK10.20.2.314/15
188n2.42437d4:ba:ba:ab:ba:abOW mPSK WPA2 · WPA2‑PSK10.20.2.315/15
eap1112.42462a0:1a:e3:db:53:68OW mPSK WPA2 · WPA2‑PSK10.20.2.315/15
18966275d6:ba:ba:a3:15:acOW mPSK WPA3 6GHz · WPA3‑SAE (H2E, PMF)10.20.2.415/15
Scope.

Method

The sensor is a sixth AP — a CIG WF189 on the same ApNos-92cbcec63 firmware, with rgminiloader and rg_wss_client stopped so the rXg cannot reconfigure it mid‑run. Its tri‑band MLO radio is split into per‑band radios (ath12k mlo_capable=0) so one client interface can be placed on one band at a time. Targets are read live from each AP’s radios (iw dev), not from config, and include Wi‑Fi 7 MLO links. For each BSSID the sensor pins its supplicant to that exact BSSID and frequency, leases by DHCP, and sends one ICMP echo per second from a raw socket bound to the client interface (SO_BINDTODEVICE). The client sits in its own Linux VRF via rg_wss_client’s production VrfDomain, so its default route never touches the sensor’s own uplink and a reply proves the path through that association. The 6 GHz client uses the radio’s driver MAC 00:03:7f:12:5c:5b, registered on the mPSK account, since WPA3‑SAE binds the key to the station MAC. Harness: ~/lab/sensor/sweep.py driving sensord.py; raw results in runs/sweep-20261005-160037/results.jsonl.