Conversation
Gate split-payload transmissions per radio and add a host regression test covering every radio mask with shared and split payloads. Run it in CI. Experimental follow-up to ExpressLRS#3746 for bench testing.
Discard cached halves when LINKSTATS/DATA retries change the payload split point. Preserve the existing two-radio transport and packet format. Add 96 host regression scenarios using the production merger and Stubborn transport, covering both packet sizes, radio orders, temporary loss and telemetry ratios 1:2/1:4/1:8/1:32. The original merger fails all 32 mixed-length cases.
Raffi1202
force-pushed
the
fhss-gnss-avoidance-rebased
branch
from
September 8, 2026 05:09
8df59e0 to
4c05862
Compare
Raffi1202
force-pushed
the
test/gnss-3746-lr1121-lbt
branch
from
September 8, 2026 05:09
e2b9ea1 to
e5ddf4a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft test PR in this fork, targeting
fhss-gnss-avoidance-rebased. The original upstream PR is ExpressLRS#3746 . This is a follow-up for testing, not a replacement or request to close the upstream PR.Based on upstream PR head
8df59e056aeeb872c579cca593476e50aca2db77, retaining the original commits and authorship, including pkendall64's GNSS-avoidance work from ExpressLRS#3390.Scope
Preserve the existing Gemini / Gemini X-Band architecture, two-radio payload split, OTA packet formats, modes and controls. Fix specific defects in that existing path. This draft does not introduce a single-band fallback or time-separated telemetry protocol.
1. LR1121 transmit masks
The receiver passes the mask returned by
LbtChannelIsClear()intoLR1121Driver::TXnb(). Previously, the split-Gemini path started both radios whenever that mask was nonzero, including a radio excluded by LBT.Gate each combined buffer-write/start-TX command on its corresponding allowed-radio bit and retain the correct payload for each permitted radio. When both radios are allowed, both still transmit their original halves.
2. Gemini downlink retry integrity
LINKSTATSandDATAhave different payload lengths. After a lost half, Stubborn can retry the same package index using a different packet type and therefore a different split point.ProcessOtaDataDl()previously matched cached halves only by package index. It could combine a half from the earlier short payload with a half from the later long payload (or vice versa), accept the assembled bytes and advance the ACK despite incompatible split points.Invalidate cached half indices when the per-radio payload length changes. Equal-length halves can still arrive in separate attempts, and complete two-radio packets keep the existing behaviour. No change to the wire format or sender-side splitting is required.
Validation
git diff --checkpasses.e2b9ea1completed successfully, including the firmware/build matrix; no failing or still-running checks remain.Reproduce from the repository root:
Bench comparison still required
Use matching firmware at both link ends and compare the original upstream PR against this draft on XR4 / TX16S MK3, with the same GPS, antenna positions, regional profile and measured power.
Remaining limitations
The GNSS keep-out window, hopping tables, initial/sync frequency pairing, regional flags, power settings and telemetry timing are unchanged by this follow-up. The previously identified initial/sync pairing issue remains open.
A permanently unavailable band still cannot provide its half of the existing split downlink; this was already true in the original. The host recovery tests cover temporary loss, not permanent-band failover.
EU/Swiss sub-GHz spectrum access and FCC channel-occupancy/classification questions remain open. No blanket conformity claim or reliable-GNSS-at-1:2/1:4 claim is made. Those need the applicable equipment approval basis and hardware measurements.
Please keep this PR as a draft for testing.