The gauntlet measures two things: whether our device survives, and whether it
deserves to. A device that holds its link by shouting over everyone else is a
bug, not a pass. The rf-observer nodes capture the DUT's own transmissions in
every phase — including the quiet baseline — and the conductor scores them
against this spec.
Thresholds below are starting points. Calibrate against measured field devices, then tighten.
2.4 GHz — Bluetooth (wearable side)
BLE advertising discipline
- Idle: advertising interval >= 100 ms when there is nothing to announce. The 20 ms spec floor exists for active pairing, not for sitting in a drawer.
- Pairing/discovery windows: 20–50 ms intervals allowed, but bounded — must back off to >= 100 ms after 60 s without a connection event, and stop entirely after a bounded timeout unless the user re-initiates.
- TX power: scaled to need. Max TX only during active user-initiated discovery; connected/idle states use the minimum power that holds the link budget.
- Payload: no padding for attention; 31-byte payloads must carry real data.
- Scan response: answers scans; does not volunteer spam.
BLE connection behavior
- Connection intervals negotiated sanely; no permanent 7.5 ms intervals for idle links.
- Supervision timeouts: reconnect with backoff, not busy-loop re-advertising at minimum interval after a drop.
BR/EDR discipline (where applicable)
- Inquiry: only on explicit user action, single 10.24 s train max, never looped. Continuous inquiry is the single most antisocial legal behavior in Bluetooth — our devices don't do it, ever.
- Page: bounded attempts with exponential backoff; no R0-style infinite re-page of a dead peer.
- AFH: enabled in every connected state; channel classification must actually classify (no lazy all-good maps).
- Sniff mode: idle ACL links enter sniff; no full-duty ACL holding.
Reconnect discipline (all BT)
- Exponential backoff on reconnect attempts, capped, with jitter. A device that loses its peer and immediately hammers re-advertising at 20 ms is indistinguishable from an attacker to its neighbors.
5 / 6 GHz — Wi-Fi (companion phone / hub side)
Our wearables may not carry Wi-Fi, but the paired phone does, and the phone is part of the system under test.
- Probe discipline: no wildcard probe storms. Prefer passive scanning; directed probes only for known hidden SSIDs, rate-limited.
- Channel width by band:
- 2.4 GHz: 20 MHz default; 40 MHz only with OBSS coexistence respected.
- 5 GHz: 80 MHz allowed on clean spectrum; drop to 40/20 under OBSS.
- 6 GHz: 160 MHz allowed — this is what the band is for.
- DFS: on channel-switch announcements, vacate promptly and completely; no lingering beacons on the old channel.
- TX power: TPC respected; no max-power camping in dense environments.
- Roaming: no sticky-client camping on a distant AP at MCS0 while a strong BSS is available (that's airtime theft from everyone).
Scoring
Each check is PASS / MARGINAL / FAIL per band, from observer captures:
| Check | Band | Method |
|---|---|---|
| Adv interval discipline | 2.4 | observer-2g: interval histogram over phase |
| TX power appropriateness | 2.4 | observer-2g: RSSI-calibrated estimates vs link state |
| Inquiry/page bounding | 2.4 | observer-2g: event log, no loops |
| AFH + sniff usage | 2.4 | btmon / controller logs |
| Reconnect backoff | 2.4 | observer-2g: attempt timing after induced drop |
| Probe discipline | 5/6 | observer-5g6g: probe request rate |
| Channel-width discipline | 5/6 | observer-5g6g: BSS config vs environment |
| DFS vacate behavior | 5 | observer-5g6g during dfs-event-sim |
Overall citizenship per band: PASS (all checks pass), MARGINAL (exactly one marginal, none failed), FAIL (any check failed). A FAIL on citizenship fails the run even if survivability is perfect.
The one-line rule
If any node in our interferer catalog, pointed at one of our devices, would write it up as a bad neighbor — we don't ship it.