Skip to content

Epic: spatial-diversity axis — exploiting idle RF chains for the single-stream video link #127

Description

@josephnef

The third diversity axis

devourer's long-range single-stream video link already exploits two physical-layer
diversity axes:

  • frequency — single-adapter per-packet hopping (docs/frequency-hopping.md),
    which doubles as a frequency-diversity interleaver for the outer FEC;
  • code — the fused cross-layer FEC stack (docs/fused-fec.md): sub-block
    integrity salvage, an MDS outer code, soft-decision inner decode, and
    per-temporal-layer unequal error protection.

The spatial axis is unexploited. Because a single-stream video link never
stacks spatial streams, the extra RF chains (1 idle on a 2T2R part, up to 3 on a
4T4R 8814) sit unused. Turning them into diversity/robustness rather than
throughput is almost pure upside for this use case: it is USB-free (one
stream in, one stream out — no MIMO-multiplexing bandwidth hit), and it composes
multiplicatively with the frequency and code axes already in place.

The single hard constraint (from docs/frequency-hopping.md): there is one LO
per chip
, so the chains share one centre frequency — they give spatial
diversity within a channel, orthogonal to (not a substitute for) the frequency
diversity that hopping provides.

Why this matters

  • RX MRC across a 4T4R chip's chains is a ~10·log₁₀(N) dB SNR win from a
    single ground adapter — partially replacing wfb-ng's multi-adapter diversity
    array, in-chip, at zero USB cost.
  • TX diversity (CSD / STBC) attacks the deep fades that push corruption
    into the frame-wide regime where sub-block salvage fails — so spatial diversity
    improves the precondition of the whole fused-FEC stack, not just its input.
  • Chain count is a new lever for the energy-minimizing adaptive link
    (docs/adaptive-link.md), which today has no spatial knob: a convex
    PA-power-saved vs chain-baseline-added tradeoff with an optimal N per range,
    and a per-layer spatial UEP knob alongside modulation and FEC.

Approach

Research/design track — simulators, measurement harnesses, and conceptual docs
first (the way the frequency and code axes were developed), hardware validation
following. Each activity is a separate tracked issue.

Roadmap

Foundations

Core diversity techniques

Cross-layer composition

Speculative

Key finding from #130 — re-prioritisation (2026-07-02)

The on-hardware RX-MRC measurement changed the picture: static spatial-diversity
gain is small
(MRC over the best single chain was 2–10% across both 8814 SKUs,
1M/6M, several positions), because the chains' instantaneous channels are
effectively correlated at a fixed position — even for the adapter whose rotation
N_eff was 3.8. Rotation-decorrelation does not translate to a static-link
benefit.
The value of spatial diversity is in mobility / fading, where the
best chain constantly changes, plus antenna-selection insurance (~60× vs the worst
chain). This reshapes the roadmap:

  1. Linchpin — mobile/fading combining measurement ✅ DONE, thesis CONFIRMED
    (PR Mobile combining measurement: RX-path toggle + mobility analyzer (spatial-diversity #130) #142).
    Toggling a fixed chain vs all-4 while moving the RX: under motion
    the best chain constantly shifts, so a fixed antenna hits deep-fade dropouts
    that MRC eliminates (half the delivery variance) — static +2 % → moving +17 %
    on the 4-internal 8814. That is the moving-drone FPV case, so the spatial
    techniques (STBC, spatial×FEC, energy lever) are worth pursuing for the
    mobile scenario
    . Bonus finding: physical antenna spacing decides static
    benefit
    — wide external dipoles decorrelate even at rest (+17 % static), a
    packed internal array only under motion; this can invert the rotation N_eff
    ranking (spacing > count for real fading).
  2. Frequency diversity is immune to the static-correlation problem — different
    channels fade independently regardless of motion. So Spatial × frequency — space-frequency interleave for the outer FEC #134 (space×frequency)
    rises in priority
    : lead with the frequency axis (hopping, already shipped),
    which delivers real diversity even static.
  3. ANTSEL per-frame antenna-selection diversity probe (rescoped from CSD) #131 (antenna selection) is validated as "nearly as good as MRC" at static
    — selection of the best chain captured most of the benefit (MRC added only a
    few %). Simpler than combining; worth the ANTSEL probe.
  4. Spatial × energy — active-chain count as an adaptive-link lever #135 (energy lever) gets a sharper thesis — since extra chains add little
    at static, a ground station should run fewer chains to save baseline power
    and light up chains only under fading/motion. Chain count adapts to fade
    state, not just range.

Sequencing (updated)

#128, #129, #130 ✅ → mobile combining measurement ✅ (thesis confirmed,
PR #142)
→ #134 (frequency-led diversity) + #131 (selection) → #132 (STBC,
now justified for the mobile case) → #133, #135, #136 (composition) → #137.

Current-state anchors

  • CSD is chip-validated; STBC lives in the radiotap path but on-air STBC is
    unresolved; 4-path RF is supported for the 8814.

Activity

  1. added
    enhancementNew feature or request
    spatial-diversitySpatial-diversity axis: exploiting idle RF chains for the single-stream link
    on Jul 1, 2026
  2. josephnef commented on Jul 2, 2026

    @josephnef
    CollaboratorAuthor

    Roadmap complete (2026-07-02)

    All ten activities are done — #128–#136 landed, #131 closed as superseded, #137
    assessed no-go. The through-line held: spatial diversity's payoff is under
    motion
    , and it recurs the same way on every layer.

    • RX (MRC, measured): static ≈ nil; moving eliminates fixed-antenna dropouts.
    • TX (STBC, measured): 1.94× static (coding gain) → 3.27× moving (+ diversity);
      helps even a single-antenna receiver.
    • Antenna design (measured): physical spacing decides the static benefit —
      wide external dipoles decorrelate even at rest, a packed internal array only
      under motion (can invert the rotation N_eff ranking).
    • FEC (sim): diversity cuts SNR variance → keeps corruption localized → SBI
      salvage works.
    • Frequency (sim): the correlation-independent, dependable axis; multiplies
      with the spatial (conditional) axis.
    • Energy (sim): the energy-optimal chain count adapts to fade state — one
      chain still, more when moving.
    • UEP (sim): spatial diversity as the third per-layer protection knob (MCS +
      FEC + STBC), already in the ladder, now quantified.
    • Beamforming (sim): no-go for a moving broadcast source — feedback-free
      diversity wins.

    Shipped: PRs #140–#148. Tooling: decorrelation harness + N_eff, RX-path mask +
    mobility toggle, CCK rates, STBC-toggle + sanity gate, and five composition sims
    (space×freq, chain-count energy, per-layer UEP, spatial-SBI, beam-steer). Two
    honest course-corrections recorded: a real EINTR TX-wedge bug (not "chip
    flakiness"), and an array-gain-vs-variance modelling fix in the SBI sim.

  3. josephnef commented on Jul 2, 2026

    @josephnef
    CollaboratorAuthor

    Roadmap complete — all activities done (#128–#136 landed via PRs #140–#148, #131 closed as superseded, #137 assessed no-go). Closing the epic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestspatial-diversitySpatial-diversity axis: exploiting idle RF chains for the single-stream link

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions