Skip to content

Adaptive channel migration 1/5: passive dual-radio ground spectrum scout #276

Description

@josephnef

Summary

Build and validate a passive second-adapter ground spectrum scout that continuously surveys configured candidate channels while the primary Devourer receiver remains parked on the live video channel. This stage only measures and records; it must never command a channel change.

Experiment 1 of 5 for slow adaptive channel migration (not FHSS). The goal is uninterrupted video reception plus trustworthy, timestamped evidence about alternate channels.

Architecture

video TX ───────────────► primary ground RX (fixed channel, delivery oracle)
                                  │
scout adapter (continuous sweep) ─┴─► survey aggregator / JSONL

Reuse DEVOURER_RX_SWEEP, FastRetune, GetRxEnergy, NHM, CCA/false-alarm counters, and rx.energy. Do not share one adapter between video reception and scanning.

Step-by-step

  • Add an explicit stable device selector suitable for two identical VID:PID adapters (USB bus/port path or serial where available); PID-only selection is not sufficient. Log physical identity, chip generation, firmware/config, USB speed, antenna, regulatory domain, and role (primary/scout).
  • Define a versioned survey event containing channel definition (band, primary, center, width, offsets), monotonic start/end time, retune/settle time, valid observation time, CCA/FA deltas, IGI, NHM bins/summary, decoded-frame count, recognized-Devourer frame airtime/count, RSSI/SNR/EVM summaries, and validity flags.
  • Build a long-running scout controller around rxdemo or a small dedicated example. It must survive individual read/retune failures, emit structured reasons, and continue with the remaining legal candidates.
  • Separate retune/settling time from the measurement window. Reset/drain delta counters at dwell boundaries so USB delay and previous-channel activity cannot leak into the next bin.
  • Score full occupied channel definitions, not isolated primary 20 MHz channels. For 40/80 MHz candidates, aggregate all constituent bins and reject illegal width/offset combinations.
  • Implement a configurable scan plan: immutable legal candidates, initial full sweep, frequent backup-channel revisits, slower background revisits, dwell, settle, and maximum evidence age.
  • Feed the primary receiver's existing delivery/RSSI/SNR/EVM telemetry into the same timestamped store, but do not compare uncalibrated raw values directly across adapters.
  • Add health events for stale survey, wedged scout, missing primary telemetry, thermal/power anomaly, USB congestion, and regulatory-set change.

Calibration and controlled validation

Use a signal/interference source to test:

  1. parked interferer on each candidate;
  2. bursty interferer whose duty is shorter than one scan round;
  3. adjacent-channel interferer;
  4. wide signal overlapping only a secondary 40/80 MHz segment;
  5. clean channel with ordinary Wi-Fi bursts;
  6. the wanted Devourer video signal on the active channel;
  7. two adapter generations measuring the same scene.

The scout must not label wanted video airtime as unexplained interference. For the active channel, primary delivery is authoritative; recognized Devourer airtime and unexplained occupancy must be reported separately.

Artifacts and test duration

  • Commit a headless parser/aggregator test with synthetic counter wrap, missing bins, stale samples, delayed events, and width overlap.
  • Add a reproducible two-adapter bench script and docs/ note.
  • Run ≥1 hour continuous video plus scanning and a ≥10,000-retune scout stress run. Record primary delivery against a no-scout control to detect USB/controller or RF self-interference.

Regulatory and safety constraints

  • Enumerate candidates through the active regulatory domain; no DFS/CAC bypass.
  • Passive/no-IR channels remain receive-only and cannot automatically become migration targets.
  • Scout evidence is informational; it does not establish DFS channel availability.
  • Default to same-band candidates compatible with the video radio's safe retune path.

Acceptance criteria

  • Primary video delivery is statistically unchanged versus the no-scout control.
  • Scout ranks controlled occupied/clean channels correctly, including adjacent and width-overlap cases.
  • Events contain valid observation duration and age; stale/invalid measurements cannot appear fresh.
  • Two identical adapters are bound deterministically to roles.
  • One-hour and 10,000-retune runs complete without wedging either adapter.
  • No automatic channel-switch command exists in this stage.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions