BSS Color OBSS Coexistence
Three overlapping Wi-Fi 6 APs on the same channel. Each device sees two neighbors. Drag the OBSS_PD slider to trade sensitivity for transmit power — the constant product rule in real time.
— Shankar K. · Source: IEEE 802.11ax-2021 Section 26.10, Eq 26-5 · Wireshark: wlan.spatial_reuse
Click any STA in the canvas. The panel shows what that STA hears from each BSS, the decision (defer or ignore), and the transmit power allowed at the current OBSS_PD threshold. Try sliding OBSS_PD from -82 dBm (legacy) toward -62 dBm (maximum aggression) — watch the TX power drop in lockstep.
wlan_radio.he_sig_a.bss_color == 3 filters by color. wlan.spatial_reuse expands the SRPS IE tree. wlan.tag.number == 42 finds BSS Color Change Announcement elements.
Apartment building in a dense city. Wi-Fi analyzer shows 38 networks visible and 12 of them on channel 149. Speed test on a gigabit fiber plan: 40 Mbps down.
With 12 APs sharing channel 149, every transmission from any of them forces the others to defer via carrier sense. Classic CSMA/CA pile-up. The gigabit fiber backhaul is idle because the airtime budget on the channel is saturated — the bottleneck is in the air, not in the internet connection.
When BSS Color and OBSS-PD (Overlapping BSS Packet Detection) are both enabled and tuned, a device recognizes transmissions from neighboring APs by their BSS Color. If the received signal strength from a foreign-color transmission is below the OBSS-PD threshold, the device can ignore it and transmit anyway. So an AP three apartments over arriving at -75 dBm — well below the tuned threshold — becomes ignorable noise. In dense deployments with reasonable tuning, this typically recovers meaningful airtime — often on the order of 15-30% in moderately dense environments, sometimes higher in extreme density.
OBSS-PD thresholds are hard to tune. Too aggressive (ignore too much) and you get collisions and retries that undo the gain. Consumer APs usually ship with conservative defaults, and some don't expose the threshold at all. Enterprise controllers let you tune per-BSS but require someone who understands the RF environment. BSS Color without well-tuned OBSS-PD is mostly cosmetic.
BSS Color is a 6-bit number (0-63) that Wi-Fi 6 access points use to label their broadcasts. Every Wi-Fi 6 frame transmitted by an AP includes its color in the PHY header — the first few microseconds of the transmission. This means a nearby device can tell, before fully decoding the frame, which access point it came from.
Why does that matter? Imagine two Wi-Fi networks running on the same channel in neighboring apartments. Before BSS Color, every device had to listen to every frame from both networks and wait for each one to finish before transmitting its own data. Even though the neighbor's frames weren't meant for you, you had to politely defer. That's lost airtime.
With BSS Color plus Spatial Reuse, your device can quickly check: "Is that frame from my AP's color? No? Then how loud is it? Quiet enough that my own transmission won't collide with its receiver? Great — I'll transmit at the same time." More simultaneous transmissions equals more throughput in dense spaces. The tradeoff: to safely ignore your neighbor's transmission, you must transmit at lower power so you don't add interference on their side.
OBSS_PD (Overlapping BSS Packet Detect) is the threshold that decides when to ignore a neighbor's frame. Lower (more negative) OBSS_PD equals more conservative equals more deference. Higher (less negative) OBSS_PD equals more aggressive equals more simultaneous transmissions.
Range: -82 dBm (no change from legacy CCA) to -62 dBm (maximum aggression, limited by regulatory ED threshold). On 20 MHz channels. Wider channels scale the thresholds up proportionally: 40 MHz adds +3 dB, 80 MHz adds +6 dB, 160 MHz adds +9 dB.
If you push OBSS_PD 10 dB higher, you must drop TX power 10 dB lower. The product of sensitivity and transmit power stays constant. Physics-grounded: your reach into your neighbor's network is the same in both directions, so trading one for the other preserves interference balance.
Color collision: If two overlapping APs pick the same color (there are only 63 options), they can't distinguish each other. OBSS_PD operation is disabled and the channel falls back to the legacy -82 dBm behavior. This is why Wi-Fi 6 APs scan, detect collisions, and renegotiate colors using the BSS Color Change Announcement IE in Beacons, with a countdown giving clients time to update.
OBSS_PD-based SR vs PSR-based SR. Section 26.10 defines two independent mechanisms. OBSS_PD-based SR (Section 26.10.2) uses the PHY-header color lookup against the threshold — works for any PPDU. PSR-based SR (Section 26.10.3) is narrower: it only applies during AP-scheduled Trigger-Based PPDUs (UL OFDMA frames). The AP pre-announces "you can transmit simultaneously at up to X dBm" via the Trigger frame's Spatial Reuse field. Tighter coordination, narrower applicability, rarely deployed in current products.
Two NAV operation (Section 26.2.5). Wi-Fi 6 receivers maintain two NAV timers simultaneously: an intra-BSS NAV set by frames matching their color, and a basic NAV set by frames from OBSS. This lets the receiver reserve its own contention timing independently from OBSS NAV. Mandatory for non-AP HE STAs, optional for APs. Subtle interop implication: mixing 11ac and 11ax in the same BSS can defeat BSS Color benefits because 11ac frames don't carry color, so the receiver falls back to BSSID matching.
Spatial Reuse Groups (SRGs). Section 26.2.4 defines SRG membership via the SRG BSS Color Bitmap (64 bits, one per possible color) carried in the Spatial Reuse Parameter Set element. An AP signals "the following colors are my SRG friends" and its STAs apply SRG OBSS_PD thresholds (distinct from non-SRG OBSS_PD). In theory enables coordinated aggression across operator-coordinated APs; in practice, vendor support is sparse.
Transmit Power Restriction period. The TX_PWRmax restriction lasts only for the current TXOP that the STA gained via OBSS_PD deferral skip (Section 26.10.2.5). Once the TXOP ends, the STA returns to unrestricted power. This makes the restriction bounded and tractable.
HE-SIG-A carries color, not HE-SIG-B. In HE SU PPDUs and HE MU PPDUs, the full 6-bit BSS Color is in HE-SIG-A. In HE TB PPDUs (Uplink OFDMA responses to Trigger), only 3 bits (Partial BSS Color) are in HE-SIG-A for space reasons. The full 6-bit identity is carried elsewhere or implied by the Trigger frame.
Color Change Announcement timing. The Color Switch Countdown (in the BSS Color Change Announcement IE) counts TBTTs, typically 5-10 beacons. Implementations may delay or advance the switch to avoid client disruption. Associated STAs MUST stop using the old color at switch time; any PPDU still in flight with the old color at that moment is handled as an intra-BSS frame under the old color for backward-compatibility.
OBSS_PD and OFDMA interaction. When an AP operates OFDMA and OBSS_PD is enabled, the per-RU transmissions inside one BSS are still visible in the HE-SIG-A color bits. Receivers in other BSSs can defer or ignore the whole OFDMA PPDU based on the color in HE-SIG-A; they don't need to parse per-RU assignments to make the SR decision. See the OFDMA RU Allocator for the per-RU slice structure.
Wireshark. Filter frames by BSS Color: wlan_radio.he_sig_a.bss_color == 3. Find Spatial Reuse Parameter Set IE: wlan.spatial_reuse. Find BSS Color Change Announcement: wlan.tag.number == 42. Decoded fields under HE Operation IE tree: wlan.he_op.param.bss_color, wlan.he_op.param.bss_color_disabled.
Building WiFi Analyser V2 · CWNA-109 in progress · one post every two weeks