Indoor Wi-Fi Roaming with OpenWRT

(taoofmac.com)

93 points | by zdw 2 days ago ago

35 comments

  • goodburb 2 hours ago

    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. I use "dp.logcatapp" log reader while roaming, "com.android.location.fused" shows 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.

    • js2 15 minutes ago

      Apple has some minimal recommendations as well:

      https://support.apple.com/en-us/102766

    • rcarmo 38 minutes ago

      Yeah, I tried the same channel thing, but I can't change the power, really - the flat is wrapped around two elevator shafts :)

    • OptionOfT 2 hours ago

      To be fair, I don't require my 85" TV to roam, as it's not as portable as my iPhone.

      • cj an hour ago

        Until it gets stuck on a far away AP because it was the first AP to come online the last time the network rebooted.

        Not sure if roaming is actually the fix for this problem. For whatever reason my Ring cameras just love connecting to the worst and most far away AP in my house.

        • giobox an hour ago

          Not sure how widely available this feature is, but the unifi controller software for the popular Ubiquiti APs lets you bind individual client devices to specific APs such that they can only connect to the ones you choose.

          I had to solve a similar issue for some crap IoT lights that would join the incorrect AP after a power cut every time.

          > https://community.ui.com/questions/Lock-Client-to-Specific-A...

          • anotherhue 23 minutes ago

            for static clients that works well, though you can usually set a min rssi and get the same benefit without so much clicking.

      • basilikum an hour ago

        Glad it works for you.

        I need my TV to rapidly switch APs in very heavy load wide area networks with thousands of devices while I'm cruising through the venue with my motorized couch and entertainment system.

        Now I want to actually build that for GPN24 next week. Wouldn't use AndroidTV for that though.

      • keanebean86 an hour ago

        Good luck watching the office when your cat pushed your upstairs AP off the balcony. Your tv won't auto switch to the downstairs AP which is now closer than the one that's suddenly in the driveway.

    • dheera 38 minutes ago

      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.

  • acidburnNSA 8 minutes ago

    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.

  • ghrl 2 hours ago

    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.

    • toast0 an hour ago

      I run a single ssid dual band network ... what tends to happen is 5Ghz is effectively ignored. 2.4Ghz has better coverage, so everything wants to live there. At least wifi 6 brought improved encoding to 2.4Ghz.

      I haven't had luck with the roaming extensions; when I run them, some of my devices won't connect or won't stay connected and it's a pain to monitor. I guess I could run a different SSID with roaming enhancement, but effort.

      • lxgr an hour ago

        This used to be pretty common on at least Linux and Android clients some years ago.

        Not sure if they finally got around to making the BSSID selection algorithm a bit smarter or whether all my access points just support active steering at this point, but I haven't seen this in the past couple of years.

      • opan an hour ago

        You can turn down the power on the 2.4GHz radio so it's not as overpowering.

        • toast0 40 minutes ago

          I do, but I can only turn it down so much or I lose outdoor coverage.

    • rcarmo 38 minutes ago

      I _am_ broadcasting a second SSID, in case that was not obvious from the text... I just don't want there to be 3.

  • lxgr an hour ago

    > 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.

    • rcarmo 36 minutes ago

      There is zero benefit to using 2.4 for me, really, since it's crowded as heck. I'd rather skip it altogether.

      • lxgr 29 minutes ago

        If you don't need it, of course, you might as well deactivate it. But if you do, I don't see the point of having two different SSIDs if you don't need them for another reason anyway.

        • rcarmo 26 minutes ago

          I do need it, but the IoT devices are conveniently close to most APs, so that sort of evens out.

  • raj_db_dev 6 minutes ago

    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?

  • ruptwelve 2 hours ago

    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.

  • jonhohle 2 hours ago

    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.

    • andor 2 hours ago

      For Omada devices, you need a "Controller". You can run the Omada Controller software on an existing computer, get one of their controller devices, or use their cloud-based service, which should be free at your scale.

      • jonathanlydall 15 minutes ago

        I’m pretty happy with my Omada controlled EAPs around my house.

        Running Omada on my Windows Server was painful (doesn’t really run properly as a service, software updates are a chore), but since I moved it to run on Proxmox using a super simple LXC image (I maybe got terminology wrong here) it’s been very nice.

        Supposedly I should have excellent roaming between the APs, but I’m not sure how to check. Certainly, walking from one end of the house the other while on a Teams or WhatsApp call on my phone has maybe only a super minimal amount of time that I might not hear the other person (sub second for sure, if at all), but mostly I don’t notice.

      • neogodless 2 hours ago

        The Omada device* I researched also supports standalone mode and hosts the web UI like any other consumer router.

        * https://www.omadanetworks.com/us/business-networking/omada-r...

        • joshred an hour ago

          Having the controller is still nice. It's relatively user friendly, and consolidates all the devices and their interfaces under a single UI.

  • TimTheTinker 20 minutes ago

    Not to be that guy, but...

    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.

  • goodbirb 11 minutes ago

    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).

  • Jabdoa2 an hour ago

    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.

    • rcarmo 25 minutes ago

      Yeah, that is actually what the OpenWRT package does, except it grabs the data for me. Saves me the scripting :)

  • thenthenthen an hour ago

    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.

  • jauntywundrkind 2 hours ago

    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/DAWN https://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.

  • wwweeee an hour ago

    Using only 6ghz, turned off 2.4 & 5. Problem solved.