Closed
Add SLT6_Tx subprotocol with NRF24L01 direct transmission support#4
Conversation
Decoded from SPI captures of the SLT6 transmitter. The SLT6 protocol uses triple-address transmission: each 18ms cycle sends to 3 different TX addresses (byte[0] XOR'd with 0x00/0x06/0x09) with payload sizes 7/6/5 bytes respectively. Flight mode (CH5) and panic (CH6) are encoded as 8-bit values in bytes 5-6 of the 7-byte payload. Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add SLT6 transmitter support to protocol code
Add SLT6_Tx subprotocol for Blade Revolution 90 FP helicopter
Feb 12, 2026
Key fixes from analyzing the SPI captures: 1. Bind: Single 4B TX-ID bind packet at startup only (no periodic rebind) 2. Hopping: Each sub-cycle uses offset channels (+0/+3/+6 in 15-ch seq), hopping_frequency_no advances once per triple (not per sub-cycle) 3. Data: Each sub-cycle rebuilds packet from current channel values 4. Flight mode (CH5): 3-position mapped to 0xD0/0x80/0x30 5. Panic (CH6): Binary switch mapped to 0xD0 (off) / 0x30 (active) 6. Clean separation of SLT6 state machine from other SLT variants Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Copilot
AI
changed the title
Add SLT6_Tx subprotocol for Blade Revolution 90 FP helicopter
Fix SLT6_Tx subprotocol: correct hopping, bind, and flight mode from capture analysis
Feb 13, 2026
…precise timing - Merge BUILD and DATA1 into a single callback phase (9→6 callbacks/triple) to reduce timing jitter from interrupt latency - Add SLT_wait_radio() before changing radio settings to ensure previous TX is complete before channel/address changes - Use capture-derived timing: 1633us intra-pair (was 1643), 5998us sub-cycle (was 6000) matching the original SLT6 transmitter within 0.5us - Remove dead SLT6 code from SLT_build_packet() (was unreachable) Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Copilot
AI
changed the title
Fix SLT6_Tx subprotocol: correct hopping, bind, and flight mode from capture analysis
SLT6_Tx: reduce callback jitter causing choppy AETR controls
Feb 13, 2026
The original SLT6 TX only sends 3 discrete values for flight mode: 0x30 (low), 0x80 (center), 0xD0 (high). The previous code used convert_channel_8b_limit_deadband() which linearly interpolated, producing invalid intermediate values (0x52, 0xAE, etc.) that the receiver likely rejects -- causing both flight mode not switching until near ±100% and occasional AETR stops/jumps from dropped packets. Now uses direct Channel_data comparison with ±60% thresholds (±492 from center in raw channel units) to snap to discrete values only. Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Copilot
AI
changed the title
SLT6_Tx: reduce callback jitter causing choppy AETR controls
Add SLT6_Tx subprotocol for Blade Revolution 90 FP helicopter
Feb 13, 2026
Copilot
AI
changed the title
Add SLT6_Tx subprotocol with direct NRF24L01 support and fix NRF250K runtime chip selection
Add SLT6_Tx subprotocol and fix NRF250K runtime chip selection for 250K protocols
Feb 15, 2026
Copilot
AI
changed the title
Add SLT6_Tx subprotocol and fix NRF250K runtime chip selection for 250K protocols
Add SLT6_Tx subprotocol with direct NRF24L01 support and fix NRF250K runtime chip selection
Feb 15, 2026
Reverts XN297_EMU.ino and NRF250K_EMU.ino to original master code: - XN297_Configure: 250K always uses CC2500 on dual-chip (original behavior) - NRF250K_SetTXAddr/WritePayload: compile-time #if/#elif (original behavior) Makes SLT force NRF24L01 via the existing force_nrf parameter: - SLT_RF_init: XN297_Configure(..., force_nrf=true) instead of NRF250K_Init() - SLT uses raw NRF24L01 packets (not XN297 emulation), so it should not be affected by the CC2500 default for 250K XN297 protocols - This applies to ALL SLT variants including SLT6_Tx Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Copilot
AI
changed the title
Add SLT6_Tx subprotocol with direct NRF24L01 support and fix NRF250K runtime chip selection
Add SLT6_Tx subprotocol with direct NRF24L01 triple-address transmission
Feb 17, 2026
…uning Changes force_nrf parameter from hardcoded true to (option == 0). This is SLT-specific — all other 250K protocols remain unchanged (always CC2500 on dual-chip modules). Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Copilot
AI
changed the title
Add SLT6_Tx subprotocol with direct NRF24L01 triple-address transmission
Add SLT6_Tx subprotocol for Blade Revolution 90 FP helicopter
Feb 21, 2026
NRF250K_SetTXAddr and NRF250K_WritePayload now check xn297_rf at runtime on dual-chip builds, allowing protocols that pass force_nrf (currently only SLT via option==0) to use the NRF24L01 chip. On dual-chip builds: - SetTXAddr: always stores addr for CC2500 path, also writes NRF24L01 registers when xn297_rf == XN297_NRF - WritePayload: NRF24L01 path first with early return when xn297_rf == XN297_NRF, CC2500 path otherwise Single-chip builds unchanged (compile-time selection as before). Other 250K protocols unchanged (force_nrf defaults to false). Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Copilot
AI
changed the title
Add SLT6_Tx subprotocol for Blade Revolution 90 FP helicopter
Add SLT6_Tx subprotocol and fix NRF250K runtime chip selection on dual-chip modules
Feb 22, 2026
Copilot
AI
changed the title
Add SLT6_Tx subprotocol and fix NRF250K runtime chip selection on dual-chip modules
Add SLT6_Tx subprotocol with NRF24L01 direct transmission support
Feb 22, 2026
Owner
|
I decided to change the base branch so I've closed this one and opened PR #10 to continue to work on this updated protocol. |
Copilot AI
added a commit
that referenced
this pull request
May 11, 2026
Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/f6804cd8-1c25-4450-bf59-c1e8e7ab5a9e Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Copilot AI
added a commit
that referenced
this pull request
May 11, 2026
Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/f6804cd8-1c25-4450-bf59-c1e8e7ab5a9e Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
Copilot AI
added a commit
that referenced
this pull request
May 11, 2026
Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/f6804cd8-1c25-4450-bf59-c1e8e7ab5a9e Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
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.
Adds the SLT6_Tx subprotocol for the Blade Revolution 90 FP helicopter's SLT6 transmitter variant. Decoded from SPI captures of the original Si24R1-based transmitter. The SLT6 protocol uses a triple-address transmission pattern (7B/6B/5B payloads to 3 XOR-derived addresses per 18ms cycle) with discrete flight mode and panic switch encoding.
Key finding: the SLT6 receiver requires native NRF24L01 GFSK modulation — the CC2500 NRF250K emulation layer produces ~20% lower deviation (127kHz vs 160kHz) causing intermittent packet drops at 250kbps.
Protocol implementation (
SLT_ccnrf.ino)BUILD_A → A1 → A2 → B1 → B2 → C1 → C2 → BIND0x00/0x06/0x09+0/+3/+6(mod 15), sequence starts at index 1NRF24L01 chip selection for SLT (
SLT_ccnrf.ino,NRF250K_EMU.ino)force_nrf = (option == 0)toXN297_Configure, defaulting to NRF24L01NRF250K_SetTXAddrandNRF250K_WritePayloadnow checkxn297_rfat runtime on dual-chip builds to route to the correct chipSupporting changes
Multiprotocol.h:SLT6_Tx = 7enum valueMulti_Protos.ino: subtype string and count updatedMulti.txt,_Config.h,Protocols_Details.md: protocol listing and documentation💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.