4542 字
23 分钟
Home Network Upgrade – GPON Stick + 802.11k/v/r Roaming

The beginning of the article explains the process of configuring a GPON stick and BE10000 PPPoE. If you only need to look up 802.11k/v/r related content, you can jump directly to the “Configuring 802.11 k/v/r” section.

The reason this all started was that during the May Day holiday I picked up a Xiaomi BE10000 locally in Harbin. I wanted to try using a GPON stick to see if I could push my home gigabit connection past 1 Gbps (cc: 浙江移动烽火光猫获取超密 + G-010S-A 猫棒上网 – 米露小窝). Moreover, since I use mesh-style tools like EasyTier and need features like Wake-on-LAN, and my existing Xiaomi AX3600 at home is already flashed with ImmortalWRT, I was hoping to also flash a WRT-based system. Then perhaps I could use 802.11 k/v/r for automatic switching, achieving a sort of manual mesh effect. After searching around, it seemed only the BE10000 met my requirements: it has an SFP+ cage and can be flashed with QWRT. I brought it home over the summer vacation — time to tinker with it()

And while I was at school I even fixed the only minor imperfection: the NFC tap-to-connect feature (ref: Adapting NFC Functionality for QWRT on Xiaomi BE10000 Router - iYoRoy’s Develop Diary). This machine is now truly complete (nod)

Terminology#

1. Broadband & Optical Communication (Fiber & PON)#

AbbreviationFull NameDescription / Notes
FTTHFiber To The HomeFiber to the home.
PONPassive Optical NetworkPassive optical network. Mainstream technology for home broadband access.
GPONGigabit-Capable PONGigabit-capable passive optical network. Our GPON stick is based on this standard.
OLTOptical Line TerminalOptical line terminal. The carrier’s central office equipment, responsible for distributing optical signals downstream.
ONUOptical Network UnitOptical network unit. Customer premises equipment such as an ONT or GPON stick.
UPCUltra Physical ContactUltra physical contact. A common fiber connector type (usually blue end face).
APCAngled Physical ContactAngled physical contact. A common fiber connector type (usually green end face, with an 8-degree angle).
LOIDLogical ONU IDLogical ONU identifier. A string used by the carrier to authenticate the ONU.
PLOAMPhysical Layer OAMPhysical Layer Operations, Administration and Maintenance. Also a password system used for ONU authentication.
SNSerial NumberSerial number. The unique factory number of the hardware device, often used for ONU registration.

2. Wi-Fi & Roaming#

AbbreviationFull NameDescription / Notes
APAccess PointAccess point. The role of the main router or satellite router emitting Wi‑Fi signals.
SSIDService Set IdentifierService set identifier. The Wi‑Fi name seen by users.
BSSBasic Service SetBasic service set. The set consisting of a single AP and the devices connected within its coverage.
BSSIDBasic Service Set IdentifierBasic service set identifier. Usually the MAC address of the AP’s wireless interface.
ESSExtended Service SetExtended service set. A unified network of multiple BSSs (same SSID), i.e., the roaming environment.
RRMRadio Resource ManagementRadio Resource Management (802.11k). Used to obtain neighbor reports of surrounding APs.
WNMWireless Network ManagementWireless Network Management (802.11v). Allows the AP to send roaming guidance suggestions to clients.
FTFast TransitionFast Transition (802.11r). Reduces the handshake and authentication time when a client switches APs.
DSDistribution SystemDistribution system. The wired network backbone; ft_over_ds means exchanging roaming information via the wired backbone.
NAS IDNetwork Access Server IDNetwork access server identifier. Used to uniquely identify a BSS node within a roaming domain.
SAESimultaneous Authentication of EqualsSimultaneous Authentication of Equals. WPA3 key exchange protocol, more secure than WPA2.
PSKPre-Shared KeyPre-shared key. The most common password-based authentication method in home Wi‑Fi.

3. Network Protocols & System Settings#

AbbreviationFull NameDescription / Notes
PPPoEPoint-to-Point Protocol over EthernetPoint-to-Point Protocol over Ethernet. The broadband dial-up protocol we commonly use.
VLAN / PVIDVirtual Local Area Network / Port VLAN IDVirtual LAN / Port VLAN ID. Used to isolate network traffic; required for ONU dial-up.
SFP+Enhanced Small Form-factor PluggableEnhanced small form-factor pluggable. Supports transmission rates up to 10 Gbps.
UCIUnified Configuration InterfaceUnified Configuration Interface. The underlying command-line configuration system of OpenWrt/QWRT.
LuCILua Configuration InterfaceLua Configuration Interface. The web-based graphical configuration interface of OpenWrt/QWRT.
DHCPDynamic Host Configuration ProtocolDynamic Host Configuration Protocol. Used to automatically assign IP addresses to devices on the local network.
L2Layer 2Layer 2. In the article, “L2 segment” refers to a local network within the same broadcast domain.

Materials#

  • Xiaomi BE10000 Router
  • Xiaomi AX3600 Router
  • G-010S-A NOKIA GPON Stick
    • Heatsink
    • SC/APC to SC/UPC fiber patch cable
    • SC/UPC fiber optic adapter
  • Flashing resources (you’ll need to find these yourself; redistributing others’ materials isn’t great. You can refer to the firmware linked in the flashing tutorial below.)

Regarding that SC/APC to SC/UPC fiber cable — these terms describe the fiber connector specifications. Normal home FTTH typically uses UPC, which has a blue connector, whereas the GPON sticks we buy generally use an APC connector, which is green. The main difference lies in the shape of the ferrule end face: UPC has a slightly convex end face, while APC has an angled end face. If the OLT downstream optical power is strong enough, you could directly connect a UPC connector to the GPON stick and it might still work, but you’ll suffer about 3 dB of additional optical loss. Therefore, I decided to play it safe. v2-a92cdb8ad53d27ea0f38b708a5ee4dd7_1440w.webp Image source: Fiber Connector PC, UPC, APC Main Differences - Zhihu

GPON sticks are notorious for running hot, so remember to attach a heatsink: 5a5dd1090c1ee9b9c20103938f72b852_compressed.jpeg After attaching it, the temperature I saw in the ONU’s management interface was around 60 ℃.

Flashing the BE10000#

I won’t go into detail here. Just follow 【小米万兆路由器刷OpenWrt】小米BE10000|SSH解锁固化|UBoot|iStore商店|多拨|-小米无线路由器及小米网络设备-恩山无线论坛 - Powered by Discuz!.

The firmware has some known bugs, such as Wi‑Fi settings made through the frontend interface not being written correctly, which can prevent the entire networking subsystem from starting, leading to loss of connectivity and eventually triggering an automatic fallback. Therefore, some of the modifications to the main router described below are implemented using UCI commands.

Obtaining the Carrier ONU Configuration#

There’s no universal guide for this step… Go to Xianyu or Taobao and purchase a super admin password. Record the LOID, SN, LOID CheckCode (Password), PLOAM Password, and the VLAN ID from the Internet configuration section. In some regions you may also need to record the upstream MAC address.

LOID and LOID CheckCode: Pasted image 20260707214127.png

PLOAM Password: Pasted image 20260707214224.png

VLAN ID: Pasted image 20260707214048.png

Generally speaking, carriers either use LOID, possibly together with a LOID CheckCode (Password), or they might use the PLOAM Password. Determine which applies based on your own situation.

In my case, with China Unicom Anhui, I only needed to record the SN, VLAN ID, and LOID for it to work. (Because my Unicom ONU wouldn’t let me log in, I used a China Mobile ONU for the screenshots xD) Sometimes you don’t even need the super admin password to get this information; certain ONUs (e.g., China Unicom Heilongjiang, Skyworth ONUs) provide these details even with a regular user account.

At the same time, record the PPPoE username and password: Pasted image 20260707220138.png

Typically, the username is public. On some ONUs you can use the F12 trick to remove the password attribute and reveal the actual password, but some ONUs will only send back meaningless placeholder characters. In that case you can call the carrier to reset the password.

Configuring the GPON Stick#

Insert the GPON Stick into the SFP+ port. If the Ethernet port LED does not light up, try going to QWRT -> Network -> ECM Hardware Acceleration Settings and forcing the SFP1 and SFP2 interface speeds to Force 2.5Gbps. (I wasn’t sure which one corresponds to the current SFP slot, so I changed both.) Then Save & Apply, and you may need to reboot the router.

The default br-lan IP prefix should be 192.168.1.0/24. Keep it unchanged and access 192.168.1.10 to open the GPON stick’s management console: Pasted image 20260707220704.png

Go to GPON ONU Settings and fill in the information we just recorded: Pasted image 20260707220751.png LOID and SN

And enable VLAN configuration: Pasted image 20260707220830.png Check Interoperability Compatibility Mode, and fill in the VLAN ID under PVID.

After saving you may need to reboot the GPON stick. Then go to the Status page. If you see the PON Authentication Status / PON Signal Status as O5, it means the GPON stick has completed registration and is working normally. Pasted image 20260707221327.png

Setting up PPPoE Dial-up#

On the BE10000, the default WAN port is eth4, while the SFP port is eth5. Therefore, you need to switch the WAN interface from eth4 to eth5. Go to Network -> Interfaces -> Devices, find br-lan and add eth4 to it, then remove eth5. Next, go to the Interfaces page, change the WAN network adapter to eth5, and enter the PPPoE username and password you recorded earlier: Pasted image 20260707222016.png

After saving, you should see that PPPoE has successfully dialed and you can access the internet normally: Pasted image 20260707222124.png (I changed the entire br-lan subnet to 192.168.3.0/24; this step is not required.)

Modifying Basic Wi‑Fi Settings#

Through testing I found that… modifying Wi‑Fi information directly via LuCI on the main router doesn’t take effect properly (as mentioned above). Therefore, I modified the settings via UCI over SSH:

Terminal window
uci set wireless.ath0.ssid='[CENSORED]'
uci set wireless.ath0.encryption='psk2+ccmp'
uci set wireless.ath0.key='[CENSORED]'
uci set wireless.ath1.ssid='[CENSORED]'
uci set wireless.ath1.encryption='psk2+ccmp'
uci set wireless.ath1.key='[CENSORED]'
uci commit wireless
wifi reload

Here, SSID is the Wi‑Fi name, and the encryption value psk2+ccmp stands for WPA2-PSK/AES, the commonly used WPA2-AES configuration.

Although WPA3/SAE is more secure, in multi-AP + 802.11r roaming scenarios, WPA2-PSK + FT-PSK generally offers better compatibility. Some phones or IoT devices may experience connection failures, roaming failures, or slower switching when using combinations like WPA2/WPA3 Mixed, FT-SAE, PMF, etc.

If maximum compatibility is the priority, it is recommended to use WPA2-PSK/AES for the primary SSID used for whole-home roaming, and ensure that the encryption method is consistent across both the main router and the satellite router.

For the satellite router, since we want roaming, both Wi‑Fi networks must be on the same L2 segment. This requires disabling the satellite’s DHCP server and configuring it as a device under the main router. Therefore, the following configuration steps apply to the satellite router:

  • Remove all other interfaces under Network -> Interfaces -> Interfaces, keeping only br-lan: Pasted image 20260708091953.png

  • Under Network -> Interfaces -> Devices, add the wan port to the br-lan device: Pasted image 20260708092201.png

  • Assign an IP address to the br-lan device under Network -> Interfaces -> Devices: Pasted image 20260708100224.png

Make sure to include the subnet mask for the IPv4 address, and set the IPv4 gateway to the IP address of the main router.

  • Under Network -> Firewall -> General Settings, adjust the firewall rules to allow traffic. Pasted image 20260708100628.png (btw, because I didn’t want to bother with detailed rules and figured internal devices shouldn’t be at much risk, I simply allowed everything. Please do not follow this if you have specific security needs xD)

Since the main router and satellite router are now on the same L2 broadcast domain, there should only be one DHCP server on the LAN: the main router. If the satellite’s DHCP server is not turned off, clients might receive DHCP responses from both routers during connection or roaming, leading to incorrect gateways/DNS, or issues like DHCPNAK wrong server-ID.

Symptoms of this problem may include:

  • Wi‑Fi has already switched to another AP, but network recovery is slow;
  • Brief disconnection after roaming;
  • Client reacquires an IP address;
  • Occasional gateway/DNS anomalies;
  • It looks like 802.11r isn’t working, but the real culprit is the DHCP layer.

On the satellite router, run via SSH:

Terminal window
uci set dhcp.lan.ignore='1'
uci commit dhcp
/etc/init.d/dnsmasq restart

If the satellite router also has IPv6 RA / DHCPv6 enabled and you want the main router to handle all IPv6, you can also disable them:

Terminal window
uci set dhcp.lan.ra='disabled'
uci set dhcp.lan.dhcpv6='disabled'
uci set dhcp.lan.ndp='disabled'
uci commit dhcp
/etc/init.d/odhcpd restart

After disabling, you can verify with:

Terminal window
uci show dhcp.lan

You should see something like:

Terminal window
dhcp.lan.ignore='1'

That’s it.

Note that the dnsmasq process still running does not mean the satellite is still handing out DHCP leases. As long as the generated configuration contains something like:

no-dhcp-interface=br-lan

it means it will no longer provide DHCP service on the LAN / br-lan. After saving and applying, you should be able to connect through the main router and access the satellite via the IP address you assigned. (I couldn’t find a clear option to disable the DHCP service in LuCI for this part, so I had GPT edit UCI directly via SSH.)

In the satellite router’s Network -> Wireless, configure the SSID interfaces to match the main router’s settings: Pasted image 20260708100918.png

Pasted image 20260722234555.png

At this point, both Wi‑Fi networks should connect successfully (albeit with the same SSID).

Configuring 802.11 k/v/r#

Main Router#

Terminal window
uci set wireless.ath0.ieee80211k='1'
uci set wireless.ath0.rrm_neighbor_report='1'
uci set wireless.ath0.rrm_beacon_report='1'
uci set wireless.ath0.ieee80211v='1'
uci set wireless.ath0.time_advertisement='0'
uci set wireless.ath0.wnm_sleep_mode='0'
uci set wireless.ath0.bss_transition='1'
uci set wireless.ath0.ieee80211r='1'
uci set wireless.ath0.nasid='Master_2_4G'
uci set wireless.ath0.mobility_domain='cafe'
uci set wireless.ath0.reassociation_deadline='1000'
uci set wireless.ath0.ft_over_ds='0'
uci set wireless.ath0.ft_psk_generate_local='1'
uci set wireless.ath1.ieee80211k='1'
uci set wireless.ath1.rrm_neighbor_report='1'
uci set wireless.ath1.rrm_beacon_report='1'
uci set wireless.ath1.ieee80211v='1'
uci set wireless.ath1.time_advertisement='0'
uci set wireless.ath1.wnm_sleep_mode='0'
uci set wireless.ath1.bss_transition='1'
uci set wireless.ath1.ieee80211r='1'
uci set wireless.ath1.nasid='Master_5G'
uci set wireless.ath1.mobility_domain='cafe'
uci set wireless.ath1.reassociation_deadline='1000'
uci set wireless.ath1.ft_over_ds='0'
uci set wireless.ath1.ft_psk_generate_local='1'
uci commit wireless
wifi reload

It’s important to note that 802.11k/v/r does not mean the AP actively forces clients to roam. The final roaming decision still rests with the client. The AP merely provides neighbor information, roaming suggestions, and fast reassociation capabilities via these protocols. Support for these protocols varies across different phones, computers, and IoT devices.

The configuration above covers two wireless interfaces:

  • ath0: Main router 2.4G
  • ath1: Main router 5G

The configuration logic is identical for both interfaces; only the nasid differs.

1. 802.11k: Radio Resource Measurement / Neighbor Report#

Related configuration:

Terminal window
uci set wireless.ath0.ieee80211k='1'
uci set wireless.ath0.rrm_neighbor_report='1'
uci set wireless.ath0.rrm_beacon_report='1'
1.1 ieee80211k='1'#

Enables 802.11k Radio Resource Management. The main purpose of 802.11k is to allow the AP to provide information about surrounding APs to clients. Clients don’t need to blindly scan all channels; they can use the neighbor list provided by the AP to find a suitable roaming target faster.

Simple understanding:

802.11k lets the client know “what other APs with the same SSID are nearby and available to switch to.”

Without 802.11k, clients usually need to scan channels themselves. Scanning takes time and can cause brief stutters. When enabled, clients that support 802.11k can obtain candidate AP information more quickly.

1.2 rrm_neighbor_report='1'#

Enables Neighbor Report. This is the most commonly used and critical capability within 802.11k. The AP provides the client with information about neighboring BSSs, such as:

  • Neighbor AP’s BSSID
  • Channel
  • PHY type
  • Whether it belongs to the same ESS
  • Supported roaming capabilities

Simple understanding:

This parameter allows the AP to tell the client: “Here are the nearby APs, and these are the channels they are on.”

This is very important for multi-AP roaming because the client doesn’t have to scan from channel 1 to channel 165; it can prioritize scanning the candidate channels suggested by the AP.

1.3 rrm_beacon_report='1'#

Enables Beacon Report support. Beacon Report allows the AP to request that the client report information about the beacons it has scanned. In other words, the client can tell the AP:

  • Which APs it has seen
  • Their signal strength
  • Which channels they are on
  • An overview of the current wireless environment

Simple understanding:

Neighbor Report is the AP telling the client what’s nearby; Beacon Report is the client telling the AP what it sees in return.

In a typical home network, rrm_neighbor_report usually has a more immediate effect; rrm_beacon_report is a supplementary capability — just enable it.

2. 802.11v: BSS Transition / Roaming Guidance#

Related configuration:

Terminal window
uci set wireless.ath0.ieee80211v='1'
uci set wireless.ath0.time_advertisement='0'
uci set wireless.ath0.wnm_sleep_mode='0'
uci set wireless.ath0.bss_transition='1'
2.1 ieee80211v='1'#

Enables 802.11v Wireless Network Management. 802.11v covers a broad range of functions. For home Wi‑Fi roaming, the most relevant is BSS Transition Management.

Simple understanding:

802.11v allows the AP to send a request to the client saying, “I suggest you switch to another AP.”

Note that this is only a suggestion, not a command. The client can accept or decline. For instance, a client might still be connected to the main router but has physically moved close to the satellite router. The AP can use 802.11v to inform it:

Your signal to this AP is now relatively weak; you might consider switching to that nearby AP.

Enabling 802.11v can improve the “sticky client” problem, but it does not guarantee that all devices will comply.

2.2 bss_transition='1'#

Enables BSS Transition Management. This is the most crucial roaming-related feature within 802.11v. Once enabled, the AP can send BSS Transition Management Requests to clients, typically containing a list of recommended target APs.

Simple understanding:

ieee80211v is the master switch for 802.11v; bss_transition enables the actual function used for roaming suggestions.

If you enable ieee80211v without bss_transition, the roaming guidance effect may be incomplete.

2.3 time_advertisement='0'#

Disables Time Advertisement. 802.11v includes a Time Advertisement function where the AP can broadcast time information to clients. Time synchronization from the AP is generally not needed in a home Wi‑Fi roaming scenario, so this is set to 0.

2.4 wnm_sleep_mode='0'#

Disables WNM Sleep Mode. WNM Sleep Mode is part of 802.11v and is mainly used for client power saving. The client can enter a special sleep state while the AP retains some context for it. This feature is typically not relied upon in home routers or multi-AP roaming scenarios, and compatibility with some devices may be problematic, so it is disabled here.

3. 802.11r: Fast Transition / Fast Roaming#

Related configuration:

Terminal window
uci set wireless.ath0.ieee80211r='1'
uci set wireless.ath0.mobility_domain='cafe'
uci set wireless.ath0.reassociation_deadline='1000'
uci set wireless.ath0.ft_over_ds='0'
uci set wireless.ath0.ft_psk_generate_local='1'
3.1 ieee80211r='1'#

Enables 802.11r Fast BSS Transition. The purpose of 802.11r is to shorten the authentication and reassociation time when a client switches from one AP to another. During a normal roam, the client may need to complete an entire authentication process again. 802.11r pre-derives part of the key material, allowing for a faster transition when the client decides to switch.

It does not dictate when the client should roam, but when the client does decide to roam, it makes the handover process faster.

Suitable for scenarios like:

  • Moving a phone between rooms
  • Voice calls
  • Video conferencing
  • Gaming
  • Multi-AP same-SSID environments

Note that:

  • Most modern devices support 802.11r
  • Some older or less compatible IoT devices may not like 802.11r
  • If you encounter devices that fail to connect, suspect 802.11r compatibility first
3.2 mobility_domain='cafe'#

Sets the Mobility Domain. The Mobility Domain is the roaming domain identifier for 802.11r. Only APs within the same Mobility Domain will be considered by clients as part of the same fast roaming domain.

For a given SSID, all APs participating in 802.11r fast roaming should use the same mobility_domain.

Here we use:

Terminal window
uci set wireless.ath0.mobility_domain='cafe'

cafe is a 16-bit hexadecimal value (exactly 4 hex characters), akin to a magic number like DEADBEEF. This value can be customized, for example:

Terminal window
mobility_domain='1234'
mobility_domain='abcd'
mobility_domain='beef'

But note:

  • It must be identical within the same roaming network
  • It can differ between independent networks
  • It must be a 4-character hexadecimal string
3.3 reassociation_deadline='1000'#

Sets the reassociation deadline. This parameter indicates the maximum time window allowed for the client to complete a Fast Transition reassociation. The unit is typically understood as TU (1 TU ≈ 1.024 ms). 1000 TU is approximately 1 second.

Simple understanding:

After the client initiates fast roaming, it needs to complete the reassociation within this time window.

In a home network, 1000 is a common, lenient, and safe choice. Too short a deadline might prevent some devices from completing the switch in time; too long generally offers no obvious benefit.

3.4 ft_over_ds='0'#

Sets the Fast Transition method for 802.11r. 802.11r has two common modes:

  1. FT over the Air
  2. FT over DS Here we use FT over the Air:
Terminal window
uci set wireless.ath0.ft_over_ds='0'

(i.e., ft_over_ds is disabled, which enables FT over the Air).

FT over the Air#

The client performs the fast transition directly with the target AP. This is the more common and intuitive method in non-enterprise environments.

FT over DS#

The client communicates with the target AP through the currently connected AP over the distribution system. The networked device first contacts the new AP via the old AP, then completes the switch. In an actual home OpenWrt/QWRT multi-AP setup, it doesn’t provide a significant advantage and may introduce device compatibility issues.

3.5 ft_psk_generate_local='1'#

Allows the local AP to generate the keys required for 802.11r based on the PSK. In home network scenarios using WPA-PSK / SAE Mixed, the AP can locally derive the necessary key material for Fast Transition using the Wi‑Fi password.

Home networks typically do not have an enterprise authentication server, so this parameter can simply be turned on. Applicable scenarios:

  • WPA2-PSK
  • WPA2/WPA3 Mixed
  • SAE mixed (depending on firmware support)
  • Ordinary home networks without RADIUS

4. NAS ID: Unique Identity for Each BSS#

Terminal window
uci set wireless.ath0.nasid='Master_2_4G'
uci set wireless.ath1.nasid='Master_5G'
4.1 nasid='Master_2_4G'#

nasid stands for NAS Identifier, which is the identity of the current BSS. In 802.11r scenarios, it is used to differentiate between different APs / BSSs. Every wireless interface participating in roaming should have a unique nasid.

For example, on the main router:

ath0 -> Master_2_4G
ath1 -> Master_5G

And correspondingly on the satellite router:

2.4G -> Slave_2_4G
5G -> Slave_5G

5. Why Configure the Same Parameters for All ath Interfaces?#

Because ath0, ath1, and ath2 are three distinct wireless BSSs. Even if they broadcast the same SSID, they remain independent wireless interfaces within the system. Therefore, the 802.11k/v/r parameters must be applied to each interface separately.


This set of parameters can be summarized as:

ParameterProtocolFunction
ieee80211k802.11kEnable radio resource measurement
rrm_neighbor_report802.11kAllow AP to provide neighbor AP list
rrm_beacon_report802.11kAllow client to report scanned beacon information
ieee80211v802.11vEnable wireless network management capabilities
bss_transition802.11vAllow AP to send roaming suggestions to clients
time_advertisement802.11vTime advertisement; typically disabled in home roaming
wnm_sleep_mode802.11vWNM power saving mode; typically disabled in home roaming
ieee80211r802.11rEnable fast roaming
nasid802.11r / hostapdIdentifies current BSS; recommended to be unique
mobility_domain802.11rSets fast roaming domain; must be consistent across all APs
reassociation_deadline802.11rSets the time window for fast reassociation
ft_over_ds802.11rSelects FT method; 0 means FT over the Air
ft_psk_generate_local802.11rGenerate FT keys locally based on PSK

Satellite Router#

You can directly enable the corresponding settings in LuCI. Refer to my configuration: Pasted image 20260708105809.png Apply the same settings to all three wireless interfaces, ensuring the NAS ID is unique for each.

Also, make sure the encryption settings are exactly the same on both ends. 802.11r only reduces the re-authentication time during roaming, but it requires that APs within the same roaming domain have consistent parameters: SSID, password, encryption method, Mobility Domain, etc.

If the main router uses WPA2-PSK and the satellite uses WPA2/WPA3 Mixed, or if one enables SAE/FT-SAE while the other only enables FT-PSK, clients may not be able to use the same Fast Transition process during roaming. This can manifest as:

  • Brief disconnection of the Wi‑Fi icon during roaming;
  • Re-performing the 4-Way Handshake after switching;
  • Stuttering in voice/video calls;
  • Inability of some IoT devices to connect.

Therefore, if the priority is stable whole-home roaming, it is recommended that all APs participating in the same SSID roaming use:

WPA2-PSK / AES-CCMP / FT-PSK

Which in OpenWrt/QWRT is commonly:

Terminal window
encryption='psk2+ccmp'
ieee80211r='1'
ft_psk_generate_local='1'
ft_over_ds='0'
mobility_domain='cafe'

WPA3/SAE can be put on a separate SSID for newer devices, and should not be mixed with the IoT / whole-home roaming main SSID.

Frequency Band Analysis#

My home network environment is relatively complex. The main router is located in the center of the living room, which is openly connected to the kitchen and balcony, so the main router’s signal can directly cover those areas. The satellite router is in the study, with bedrooms on both sides. The study and living room are connected by a short hallway, and Bedroom A is separated from the living room by the bathroom: Pasted image 20260708082010.png The two asterisks mark the main router (living room) and the satellite router (study).

The frequency band data collected in each room is as follows: Pasted image 20260708084918.png Master Bedroom

Pasted image 20260708085100.png Study (the high red peak here is from the satellite router)

Pasted image 20260708085258.png Second Bedroom

It can be observed that the channel in the master bedroom is fairly clean, the study has a strong signal thanks to the satellite router, but the second bedroom suffers from severe interference, coupled with a weaker signal. Additionally, our two APs (the two strongest red Wi‑Fi signals) are currently both crowded onto the same channels, resulting in actual speed tests of only about 80 Mbps.

Therefore, we need to make some minor adjustments to the channels and power levels, and also configure 802.11 k/v/r.

Tuning Power and Channels#

The goal is to separate the channels and adjust coverage to reduce clients sticking to a distant access point. I used AI suggestions as a starting point; the settings still need to be checked against room layout, interference, and client behavior.

1. Channel Strategy: Reduce Interference Between the APs#

  • 2.4 GHz (Main 1 / Satellite 11): With the 20 MHz width used here, channels 1 and 11 reduce overlap between the two APs. The familiar 1/6/11 plan follows the same idea, but it does not remove interference from neighboring Wi-Fi, Bluetooth, or other sources.
  • 5 GHz (Main 36 / Satellite 52): These settings use separate 80 MHz channel blocks. Channel 52 is subject to DFS; availability depends on local regulations and device support, and radar detection may require a channel change.

This reduces contention between my APs. It does not guarantee the lowest noise floor or maximum throughput, so the actual operating channels and room coverage still need checking.

2. Bandwidth Strategy: Balance Interference and Speed#

  • 2.4 GHz at 20 MHz: This occupies less spectrum than 40 MHz and suits coverage and IoT use in my crowded environment. It does not directly guarantee greater range or fewer dropouts.
  • 5 GHz at 80 MHz: This is my main access band, balancing speed and spectrum use. In a more congested environment, a narrower channel may be worth testing.

3. Power Strategy: Adjust Coverage#

  • 2.4 GHz at 18 dBm / 20 dBm: The aim is to reduce excessive overlap and make distant APs less attractive. Lowering power too far can leave coverage gaps, so walking tests are needed.
  • 5 GHz at 24 dBm / 23 dBm: The aim is to retain fast coverage in the rooms. Actual power remains subject to hardware and regulatory limits; increasing AP transmit power does not increase the phone’s return-path capability.

These settings may influence band and AP selection, but they are not a dedicated band-steering mechanism and cannot force clients to prefer 5 GHz.

4. Roaming Coordination#

  • 11k (Neighbor Report) + 11v (BSS Transition Management): These provide supported clients with candidate AP information and transition suggestions. Whether suggestions are sent depends on the AP implementation and configuration; clients decide whether to accept them.
  • 11r (Fast Transition): With matching SSID, security, and mobility-domain settings, this reduces key-negotiation overhead during a transition. Ordinary roaming does not require retyping the password either. Enabling 11r alone does not establish that a transition has no packet loss or service interruption.

The initial configuration and explanation drew on Gemini suggestions. The observations below describe the actual results.

The final configuration for band, bandwidth, and power is:

  • Main Router 192.168.3.1
    • 2.4G: channel 1 / 20 MHz / 18 dBm
    • 5G: channel 36 / 80 MHz / 24 dBm
  • Satellite Router 192.168.3.2
    • 2.4G: channel 11 / 20 MHz / 20 dBm
    • 5G: channel 52 / 80 MHz / 23 dBm

Results & Follow-up#

In the final testing, connections defaulted to the main router in the living room, balcony, kitchen, and bathroom. In the second bedroom, it automatically switches to the satellite router. Closing the door in the study also triggers a switch from the main router to the satellite. It takes about 5 seconds from signal degradation to the actual switch. The master bedroom was inconsistent; sometimes it switches, sometimes it doesn’t, but it switched in 3 out of 5 tests.

The 5 seconds is the observed time from signal degradation to the transition, not a measured 5-second network outage. This record does not include packet-loss or authentication-time measurements during the transition, so it does not establish seamless roaming.

Speed test after plugging into the 5 Gbps port: 950c5d4f29c767feff2e3e9ac9b140a9.png The actual measured downstream speed reached 1336.31 Mbps, and the upstream speed reached 158.16 Mbps. I guess that counts as a success? However, the perceived improvement in daily use isn’t huge because, at the time of testing, very few platforms could saturate such speeds. Combined with current carrier strategies like QoS, speeds are rarely maxed out. Still, multi-threaded download tools like IDM might be able to take better advantage of it, I suppose?