Sitemap

Open Source seamless Wi-Fi Roaming with OpenWrt

5 min readNov 2, 2026

--

A POT with Architecture, Configurations, and Appendices (802.11r / 802.11k / 802.11v)

Modern homes, offices, hospitality environments, and multi-floor buildings increasingly depend on uninterrupted wireless connectivity. Voice over IP, video conferencing, cloud applications, streaming, and IoT ecosystems require continuous connectivity while users move between rooms and floors. Traditional multi-access-point deployments often fail to provide this experience because devices remain attached to distant access points (“sticky clients”) or experience short disconnections during handover.

Press enter or click to view image in full size

OpenWrt enables the build of an enterprise-grade roaming infrastructure using affordable hardware and open-source software. This article provides a complete end-to-end guide covering architecture, theory, configuration, and real deployment examples.

Understanding Modern Wi-Fi Roaming

A network composed of multiple access points broadcasting the same SSID is called an Extended Service Set (ESS). Each access point represents a Basic Service Set (BSS), but from the user perspective, the network behaves as a single wireless infrastructure.

Press enter or click to view image in full size

A fundamental concept must be emphasized: the client always decides when to roam. The network cannot force roaming; it can only assist and optimize the process. Modern roaming relies on three IEEE standards:

802.11k allows access points to provide neighbor reports, reducing scanning time when a client searches for a better signal.
802.11v allows the network to suggest when and where the client should roam, helping eliminate sticky clients.
802.11r (Fast Transition) dramatically reduces authentication time during handover.

In real deployments, 802.11k and 802.11v deliver the most consistent improvements, while 802.11r is especially valuable for real-time applications such as VoIP and video calls.

Recommended Network Architecture

A robust roaming deployment separates routing and wireless access.

The recommended architecture uses a single main router responsible for DHCP, firewalling, and routing, while additional OpenWrt devices operate as dumb access points connected via a wired Ethernet backhaul.

All access points must share an identical wireless configuration, including SSID, password, encryption method, and Layer-2 network. Radio planning is critical: neighboring access points must use different channels and balanced transmit power to encourage roaming.

Required Software Components

Seamless roaming requires the full hostapd implementation. The default OpenWrt package must be replaced with:

opkg update
opkg remove wpad-basic-mbedtls
opkg install wpad-mbedtls

A roaming coordination daemon must also be installed. OpenWrt offers two main options:

Usteer is simple, lightweight, and ideal for home and small office deployments.
DAWN (Distributed Automatic Wireless Network) is more advanced and better suited to larger infrastructures with high client density.

Deployment Example — Four-Floor Building

Main Router (Ground Floor) — 192.168.1.1
AP Floor 1–192.168.1.2
AP Floor 2–192.168.1.3
AP Floor 3–192.168.1.4

Common wireless parameters:

SSID: CasaRoaming
Security: WPA2/WPA3 mixed
Mobility Domain: a1b2
DTIM: 3

Configuration Overview

The router remains the only DHCP server. All access points operate as dumb APs with DHCP and firewall disabled.

Wireless configuration must be identical across all devices and include 802.11r, 802.11k, and 802.11v.

Appendix A — Router (Master) Configuration

/etc/config/network
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'

/etc/config/dhcp
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'

Appendix B — Access Point (Slave) Configuration

Example AP-01:

/etc/config/network
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.1.2'
option netmask '255.255.255.0'
option gateway '192.168.1.1'
option dns '192.168.1.1'

Disable services:

/etc/init.d/dnsmasq disable
/etc/init.d/firewall disable

Appendix C — Wireless Configuration (All APs)

config wifi-iface 'default_radio0'
option mode 'ap'
option network 'lan'
option ssid 'CasaRoaming'
option encryption 'sae-mixed'
option key 'PasswordRobusta123'
option ieee80211r '1'
option mobility_domain 'a1b2'
option ft_over_ds '0'
option ft_psk_generate_local '1'
option reassociation_deadline '1000'
option ieee80211k '1'
option rrm_neighbor_report '1'
option rrm_beacon_report '1'
option ieee80211v '1'
option bss_transition '1'
option wnm_sleep_mode '1'

Channel planning example:

Get Antonio Francesco Gentile’s stories in your inbox

Join Medium for free to get updates from this writer.

Ground floor → 1 / 36
Floor 1 → 6 / 52
Floor 2 → 11 / 100
Floor 3 → 1 / 116

Appendix D — Roaming with Usteer

Install packages:

opkg install usteer luci-app-usteer

Enable service:

/etc/init.d/usteer enable
/etc/init.d/usteer start

Configuration file /etc/config/usteer:

config usteer 'usteer'
option enabled '1'
option network 'lan'
option band_steering '1'
option load_balancing '1'
option steer_reject_timeout '60000'
option min_snr '15'
option roam_trigger_snr '20'
option roam_delta '5'
option assoc_steering '1'

Usteer provides band steering, client steering, and load balancing, and is recommended for most deployments.

Appendix E — Roaming with DAWN (Advanced Alternative)

Install packages:

opkg install dawn luci-app-dawn

Enable service:

/etc/init.d/dawn enable
/etc/init.d/dawn start

Configuration /etc/config/dawn:

config network
option broadcast_ip '192.168.1.255'
option tcp_port '1025'
option network_option '2'
option shared_key 'OpenWrtRoamingKey'

config metric 'global'
option min_probe_count '2'
option bandwidth_threshold '6'
option use_station_count '1'
option max_station_diff '1'

DAWN offers distributed decision-making and advanced metrics suited to high-density deployments.

Appendix F — LuCI Configuration Workflow

Access points must receive static IP addresses, DHCP must be disabled, and the firewall must be turned off.

Wireless roaming settings are available in:

Network → Wireless → Edit SSID → WLAN Roaming

Enable 802.11r, 802.11k, and 802.11v using the same Mobility Domain on every AP.

Usteer or DAWN can be configured from the Services menu.

Appendix G — Deployment Checklists

Network prerequisites include wired backhaul, a single DHCP server, static IP assignment, and a shared subnet.

Wireless verification includes an identical SSID and encryption, matching the mobility domain, non-overlapping channels, and a DTIM set to 3.

Advanced roaming validation includes full WPA/WPA2 installation, an active steering daemon, and successful roaming tests during VoIP calls.

Final Thoughts

OpenWrt enables enterprise-grade Wi-Fi roaming using open-source tools and commodity hardware. Successful deployments depend on consistent configuration, thoughtful architecture, and careful RF planning.

When properly implemented, seamless roaming significantly improves the user experience across multi-floor homes, offices, and hospitality environments, delivering connectivity comparable to that of commercial wireless systems.

--

--

Antonio Francesco Gentile
Antonio Francesco Gentile

Written by Antonio Francesco Gentile

Software and network engineer at ICAR, collaborating with UniCal, Hacklab Cosenza, and freelance columnist for Linux&C, Linux Magazine, and BSD Magazine.