I need to spend some time on it but I purchased two Omada APs to pair with my OpenWRT router thinking roaming would just work with mostly Apple devices. That didn’t happen. I’m hoping some of this article applies and I can improve the situation a bit.
I had a hell of a time getting WiFi roaming to work in my house between Omada APs in a low-interference suburban neighborhood.
Any combination of 802.11r and k/v seemed to just cause my phone's connection to drop for minutes at a time when moving around the house.
I wish I could remember my exact solution for you, I believe I just turned off 802.11r and k/v, set channel selection to automatic, and undid any manual or automatic power tuning.
I'd used DAWN for band steering/roaming at my last place, which worked ok. uSteer is a little newer & is an official openwrt project. https://github.com/berlin-open-wireless-lab/DAWNhttps://openwrt.org/docs/guide-user/network/wifi/dawn
DAWN has a wild amount of knobs to tune, which aren't super well described. I haven't been running it since a single AP covers my current place very well. But it would be interesting to go evaluate DAWN & it's config with an LLM, to dice in & see more. uSteer too.
Great write up, good information to share. This really is such an important next step for many people's wifi and it's documentation is pretty so-so.
You can stick to 802.11r only by lowering the transmission power and have all the APs on the same channel, in my tests it ended up switching much faster than K/V. (~75ms)
On iOS, equal channel with correct ESS will switch liberally. On Android 14+ with Broadcom chip it will start conservative, then switch liberally after the first poor signal switch-over event, up until disconnection.
Android (Pixel/Moto) will never switch (even with K/V) on large network activity, only VoIP/video call. It depends on vendor implementation. [0]
I use "dp.logcatapp" log reader while roaming, "com.android.location.fused" can be used to show score and current load.
Samsung is known to push protocol support early: 802.11r in 2013, 802.11w 2015, some models do not use Android's default connectivity manager.
To add, WPA3 with 802.11r is known to have issues on Apple hardware before 2021 on all iOS versions, many Android devices, especially smart TVs don't support it, will not connect or are unreliable (protected beacon frame), can be searched in buried report results at OpenWrt forum mega threads and Ubiquity. WPA2+FT and forced MFP with a long password is a safe alternative. 802.11r use PMK push on WPA3 compared to WPA2, which was known to be problematic on older hardware.
802.11K/V is more suitable for campus and load balancing, tuning it based on RSSI and station metrics is very difficult, enterprise hardware rely on network traffic and air time.
On my Unifi setup at home with multiple APs I had to disable 802.11r to get things to roam fast. I have Android and Linux laptop, wife has iPhone and MacBook.
With 802.11r on, things would disconnect for 60+ seconds before reconnecting. It was a constant frustration of "arrrrrrrggghhhh fucking connect damnit I'm standing a meter in front of the AP can't you fucking see it fuck fuck fuck just connect, it's right THERE, connect NOW, arghhh" and then it would completely disconnect (no wifi found) and then reconnect a minute later.
With 802.11r off things just roam smoothly. I guess the people who inventned the tech didn't test it thoroughly enough.
> You can stick to 802.11r only by lowering the transmission power and have all the APs on the same channel
Fast roaming has not, does not, and never will require APs be on the same channel. Only the SSID and password needs to match.
Setting them to the same channel will cause the APs to interfere (when they can't "hear" each other) or block each other from transmitting, or both. You set APs near each other so they are on non-overlapping bands. Always.
This is basic WiFi networking 101
> Samsung is known to push protocol support early: 802.11r in 2013
802.11r was released in 2008 and rolled into 802.11-2012.
I don't quite understand the benefit of the setup. If there are legacy IoT devices that need unique named 2.4G network, just broadcast another SSID for them. So each router broadcasts main 5G (common name, fast roam etc), main 2.4G (same as above) and legacy IoT 2.4G (with a different name for each AP, and possibly worse encryption and maybe even TKIP). That wouldn't hold back the network for legacy devices.
When I move from Europe to the US I realized that roaming is not as prevalent here as it is back home. The (mostly) wooden houses enable me to just use one really powerful AP for most of my needs.
You can also "just" set the 802.11k entries manually. Add 802.11r and you should be mostly good. Usteer makes it slightly better by moving clients to the best AP when they stay stationary for longer whiles.
There is a pretty interesting option "nrsyncd" that uses UPNP rather than having to add the 802.11k entries by hand/script. Seems to work quite well, takes a few minutes to gather the information about the other devices. https://github.com/Fail-Safe/nrsyncd/blob/main/README.md
Cool! I dont need this anymore since im broke and moved to a 1 room apt. but yeah the ‘set the same ssid’ “trick” def. is not enough and often achieves the opposite effect.
> The obvious advice for roaming is “use one SSID everywhere”, and that is often correct if you’re running Wi-Fi in an office, a public venue, or generally somewhere where you don’t have (or care about) legacy devices.
What difference does the presence of legacy devices make? Is the intent to isolate them from modern devices from a network perspective? Then create a separate SSID on both 2.4 and 5 GHz for modern devices.
I can't think of any legitimate reason for split SSIDs anymore. Linux clients used to be pretty bad at preferring 5 over 2.4 GHz if RSSIs were both excellent but 2.4 was slightly better, but I haven't seen that in years.
If you want multiple SSIDs, roaming, daily neighbor scanning and auto channel selection, etc, but don't like to spend hours tinkering with your equipment beyond the physical setup, then Ubiquiti UniFi equipment is great.
I stopped recommending UniFi around 2020 (several of their best engineers had left, and they made some dumb choices), but IMO they're back to being a decent choice. And I appreciate that they're become a one-stop solution for all home/SOHO as well as mid size enterprise IT needs.
99% of what he did is not needed. Only 2 things are needed: enable fast roaming (FT), and change DTIM from the openwrt default of 2, to 3. That's all. No need to install usteer, extra hostapd fields. Nothing.
By lucky chance, while he set up usteer, he modified DTIM to 3 thus fixing the fast transition roaming, which doesn't work well on default openwrt because of DTIM. Especially Apple devices really hate DTIM=2 (they need the extra off-time given by DTIM to properly scan the other channels).
I spent a long time recently setting pretty much this same thing up. When in my office my Android phone battery rapidly died, I guess because usteer kept trying to steer it or something. I ended up turning off usteer and 802.11r and just deal with slow roaming. Maybe I should try again with the static neighbor reports.
Curious if you think usteer is viable without wired backhaul. I have two OpenWRT routers in different rooms in differnt part of the house and not possible to connect them by ethernet. Would the usteer overhead make things worse if they're just communicating over wifi?
I do a lot of work on very large Wi-Fi networks (i.e. hotel/apartment complexes with 80 to 500+ access points), for a very rough quick test of coverage quality and roaming performance, find a Ping app for your phone that allows you to set a super low interval (i.e. time between pings sent), and ping your gateway router (i.e. 192.168.1.1) and while that is running walk around your home/location.
It’s important that the Ping app keeps sending pings even if they drop, i.e. it should just look like a waterfall/constant stream of fast pings that show you red/green pings and ideally a summary at the end. On iOS the app I tell people to use is called “Ping” with a blue icon, I usually have to share the link to the app as there are several with this name (I’m not on my phone currently or I would share the link) there are several ping apps that do offer this fast ping feature.
I still like the TP-Link E610 (flashed to OpenWRT) better. They are more compact and presumably more durable than "residential" devices. I also dislike anything that has "mesh" in its name.
To me at least, the gold standard for a large home is a standalone cable modem or ONT connected to an x86 PC that serves as home server and router, and as many ceiling mounted APs as necessary to ensure good WiFi coverage. No cloud, apps, or proprietary software anywhere. With such a networking backbone it is also easy to integrate self-hosted security cameras and other appropriately hacked IoT devices.
With Wi-Fi 8 we will finally get steerable friendly roaming like cellular radio is doing for almost 40 years now.
This "here's a neighbor table, disassoc and fuck you&good luck"-method we must use right now is just super painful. It's super complicated to build reliable networks that way.
I'm developing opensoho as a central controller for SOHO OpenWrt setups. I've recently added support for usteer and I did notice a significant drop in wireless clients with a bad connection.
> iPhones, iPads and MacBooks would not switch to another AP
About a decode ago when debugging networking issues in an office, we had the observation that Apple hardware holds onto access points for dear life. Everything else would roam fine, but Apple would stay connected to distant access points with awful signal as if Steve Jobs' life depended on it.
Same - split by frequency & each does something else. Kept IoT separate because I want to put that on a separate AP that plugs straight into firewall so that I can hard segregate that stuff on physical wire & write opnsense rules against the port.
I've also moved primary mobile devices to 6ghz & putting in 10gig fiber for stationary devices.
32 comments
[ 3.1 ms ] story [ 48.2 ms ] threadAny combination of 802.11r and k/v seemed to just cause my phone's connection to drop for minutes at a time when moving around the house.
I wish I could remember my exact solution for you, I believe I just turned off 802.11r and k/v, set channel selection to automatic, and undid any manual or automatic power tuning.
Great write up, good information to share. This really is such an important next step for many people's wifi and it's documentation is pretty so-so.
On iOS, equal channel with correct ESS will switch liberally. On Android 14+ with Broadcom chip it will start conservative, then switch liberally after the first poor signal switch-over event, up until disconnection.
Android (Pixel/Moto) will never switch (even with K/V) on large network activity, only VoIP/video call. It depends on vendor implementation. [0] I use "dp.logcatapp" log reader while roaming, "com.android.location.fused" can be used to show score and current load.
Samsung is known to push protocol support early: 802.11r in 2013, 802.11w 2015, some models do not use Android's default connectivity manager.
To add, WPA3 with 802.11r is known to have issues on Apple hardware before 2021 on all iOS versions, many Android devices, especially smart TVs don't support it, will not connect or are unreliable (protected beacon frame), can be searched in buried report results at OpenWrt forum mega threads and Ubiquity. WPA2+FT and forced MFP with a long password is a safe alternative. 802.11r use PMK push on WPA3 compared to WPA2, which was known to be problematic on older hardware.
802.11K/V is more suitable for campus and load balancing, tuning it based on RSSI and station metrics is very difficult, enterprise hardware rely on network traffic and air time.
[0] https://source.android.com/docs/core/connect/wifi-network-se...
With 802.11r on, things would disconnect for 60+ seconds before reconnecting. It was a constant frustration of "arrrrrrrggghhhh fucking connect damnit I'm standing a meter in front of the AP can't you fucking see it fuck fuck fuck just connect, it's right THERE, connect NOW, arghhh" and then it would completely disconnect (no wifi found) and then reconnect a minute later.
With 802.11r off things just roam smoothly. I guess the people who inventned the tech didn't test it thoroughly enough.
https://support.apple.com/en-us/102766
Fast roaming has not, does not, and never will require APs be on the same channel. Only the SSID and password needs to match.
Setting them to the same channel will cause the APs to interfere (when they can't "hear" each other) or block each other from transmitting, or both. You set APs near each other so they are on non-overlapping bands. Always.
This is basic WiFi networking 101
> Samsung is known to push protocol support early: 802.11r in 2013
802.11r was released in 2008 and rolled into 802.11-2012.
Also, the iPhone 5S (2013) has 802.11r support.
Is that really true? We make sure all our APs are on different channels to prevent interference.
What difference does the presence of legacy devices make? Is the intent to isolate them from modern devices from a network perspective? Then create a separate SSID on both 2.4 and 5 GHz for modern devices.
I can't think of any legitimate reason for split SSIDs anymore. Linux clients used to be pretty bad at preferring 5 over 2.4 GHz if RSSIs were both excellent but 2.4 was slightly better, but I haven't seen that in years.
If you want multiple SSIDs, roaming, daily neighbor scanning and auto channel selection, etc, but don't like to spend hours tinkering with your equipment beyond the physical setup, then Ubiquiti UniFi equipment is great.
I stopped recommending UniFi around 2020 (several of their best engineers had left, and they made some dumb choices), but IMO they're back to being a decent choice. And I appreciate that they're become a one-stop solution for all home/SOHO as well as mid size enterprise IT needs.
By lucky chance, while he set up usteer, he modified DTIM to 3 thus fixing the fast transition roaming, which doesn't work well on default openwrt because of DTIM. Especially Apple devices really hate DTIM=2 (they need the extra off-time given by DTIM to properly scan the other channels).
What's a good off the shelf multipoint wifi system these days? I have Amazon's Eero right now and it's ok.
I'd love to go back to my linksys wrt54 roots but that's not in the cards currently..
To me at least, the gold standard for a large home is a standalone cable modem or ONT connected to an x86 PC that serves as home server and router, and as many ceiling mounted APs as necessary to ensure good WiFi coverage. No cloud, apps, or proprietary software anywhere. With such a networking backbone it is also easy to integrate self-hosted security cameras and other appropriately hacked IoT devices.
This "here's a neighbor table, disassoc and fuck you&good luck"-method we must use right now is just super painful. It's super complicated to build reliable networks that way.
https://github.com/rubenbe/opensoho
About a decode ago when debugging networking issues in an office, we had the observation that Apple hardware holds onto access points for dear life. Everything else would roam fine, but Apple would stay connected to distant access points with awful signal as if Steve Jobs' life depended on it.
I've also moved primary mobile devices to 6ghz & putting in 10gig fiber for stationary devices.