Fixing Wi-Fi Roaming on OpenWRT with usteer and 802.11k Neighbor Reports
A home OpenWRT setup running four Cudy AX3000 access points with separate 2.4GHz (WPA2, for IoT) and 5GHz (WPA3) SSIDs suffered from sticky-client problems, particularly with Apple devices that refused to hand off between APs. Although 802.11r/k/v were nominally enabled and Fast Transition was firing, clients were still clinging to distant radios well past the point of usable signal.
The fix came down to two missing pieces. First, no steering daemon was running, so clients made all roaming decisions themselves. Installing usteer across all four APs let them gossip over LAN and share client state. Second, the rrm_nr_list was empty on every radio, meaning hostapd was advertising 802.11k support but never actually handing out neighbor reports. The static-neighbor-reports package solved this by generating per-band lists so each AP knows about its same-band peers (no cross-band mixing, since the SSIDs and security differ).
Results were modest but real: 2.4GHz stayed noisy as expected, but on 5GHz the very weak sticky associations near -90dBm disappeared, traffic redistributed more sensibly across APs, and clients began roaming instead of camping. The author flags a single FT pull-response error worth watching and notes the appeal of the whole stack — no cloud controller, no vendor app, just OpenWRT, collectd/Graphite, and SSH when something gets weird.
Read the full article
Continue reading at Hacker News →This is an AI-generated summary. Read the original for the full story.