Commit Graph
1366 Commits
Author SHA1 Message Date
goebish 91199e146e Compute xn297 whitening instead of using an hardcoded array (#1201)
* Compute xn297 whitening instead of using an hardcoded array

* Add function to scramble byte for XN297 interface

* Refactor XN297 scrambling logic to use a global LFSR and improve byte generation

* Add technical specification and implementation details for XN297 whitening and CRC
2026-10-25 16:57:07 +01:00
Raphael Coeffic d3293afdab HoTT, XN297 emu: compute the hop and CRC xorout tables (-1.2 KB) (#1199)
* HoTT: compute the hop table from the hop value (-1 KB)

The 16 hop tables are generated from the 16 bit value sent in packet[0..1]:
the C library rand() LCG (low 16 bits: x = x * 0x4E6D + 0x3039) seeded with
it drives forward Fisher-Yates shuffles, first of the order of the 5 bands of
15 channels, then of the channels of each band, hop i being in the band at
position i%5. This gives back the 16 tables bit for bit, and for any seed a
75 channel permutation with the same band structure.

* XN297 emu: compute the CRC xorout instead of the 4 tables

The XN297 CRC is CRC-16/CCITT with init 0xFFFF and xorout 0xFFFF over the
unscrambled address, pcf and payload, sent scrambled. The emulation computes
it from 0xB5D2 over the bits as sent, so the xorout for a CRC over n bits is
CRC(init 0xFFFF^0xB5D2) of n scramble (or zero) bits, xor 0xFFFF, xor the 16
scramble bits at the CRC. The scramble bits come from the LFSR behind
xn297_scramble[] (1110001, then s[i] = s[i-7] ^ s[i-3]), which also covers
the last enhanced entries, past the end of that table. It is the generator
Goebish gave for the scramble sequence in a comment on
https://mcumix.blogspot.com/2016/07/reverse-engineering-24ghz-rf-chip-xn297.html
(seed 0x71, feedback bit 6 ^ bit 2, MSB first).

All the entries of the 4 tables are given back but two: entry 0 (3 byte
address, no payload) was a 0 placeholder, and scrambled entry 1 (3 byte
address, 1 byte payload) was 0x3448 where the formula gives 0xE348.
2026-10-23 12:02:20 +02:00
pascallanger ee984c403d Update DSM_cyrf6936.ino 2026-09-22 11:57:43 -04:00
pascallanger f10fe7bbf0 AFHS2A: 14/17 channels
Switch based on RX number
2026-09-22 11:48:21 -04:00
Frankie Arzu 9691730be6 Fix to support DSM CH16 (#1179) 2026-09-22 16:20:06 +02:00
pascallanger 5353281ed7 Revert DSM timing change 2026-09-22 08:21:08 -04:00
pascallanger 1e65452d68 MoFly: arm on aerobatic flags
Aerobatic flags are sent only:
 - in 6G mode
 - must be released (-100%) before being used
2026-08-21 13:23:57 +02:00
pascallanger 53ecce8a7c XK: fix bind and normal 2026-08-20 20:11:32 +02:00
pascallanger c8d0638b21 Update XK_ccnrf.ino
Fix bind
2026-08-20 14:01:27 +02:00
pascallanger 55a8412cc8 MoFly telemetry try 1 2026-08-19 22:50:05 +02:00
pascallanger d8c3013bf4 MoFly protocol 2026-08-19 12:57:37 +02:00
Haochen2022 b5e140bd23 Fix MoFly sub-protocol mode, rate and aux switch encoding (#1185) 2026-08-18 12:27:08 +02:00
pascallanger 90dcf034ba MoFly try 1 for Rate 2026-08-16 19:10:59 +02:00
pascallanger 03921d36b9 Update Validate.h 2026-08-16 16:17:49 +02:00
pascallanger 780b4d9bcb XK/MoFly: New sub protocol 2026-08-16 16:12:11 +02:00
pascallanger d6a969ee28 Update SGF22_nrf24l01.ino 2026-08-16 11:43:27 +02:00
pascallanger 9354abe5fd SGF22/T28: Add features 2026-08-16 11:30:22 +02:00
pascallanger 1fa5452c89 SGF22/T28 new protocol 2026-08-14 14:19:30 +02:00
MRC3742 0f8aceb79f Few updates
Thanks @MRC3742
2026-08-13 20:20:53 +02:00
pascallanger 3bf4ffa764 MT99X/PA18:new try 2026-08-12 11:10:59 +02:00
pascallanger 79b09468ac WLV8TX small changes and save few bytes 2026-08-05 00:48:46 +02:00
pascallanger 463978939b Ares: new protocol
ARES Gamma 370, P-51D Mustang 350, RTF models with 6HPA-Tx and AZS12006-Rx (6 channel).
2026-08-04 00:28:44 +02:00
pascallanger 0a7f74dc06 SLT/SLT6X new subprotocol 2026-08-03 23:51:35 +02:00
pascallanger 3d50a39efb DSM: add XPlus channels
Sent only when number of channels >12
2026-08-03 15:41:23 +02:00
MRC3742 9e0efe321c REALACC/WLV8Tx : WLtoys Cars 284019-A and 284191
Protocol: REALACC
Sub Proto: WL_V8Tx
Ch1: Steering
CH2: Throttle
CH3: GY TRIM (Rate)
CH4: TH TRIM (Rate)
CH5: Steering Trim
2026-08-03 14:36:17 +02:00
pascallanger 3e75c27e95 Update Validate.h
Save Flash space
2026-08-02 23:01:33 +02:00
pascallanger 3151a5a5c6 Update Validate.h
Save Flash space
2026-08-02 22:56:13 +02:00
pascallanger 2348c3c29d Update Validate.h
Save Flash space
2026-08-02 22:54:09 +02:00
pascallanger 968578d59e Update Validate.h
Save flash space
2026-08-02 22:49:00 +02:00
Eduard aaaa5f141d RadioLink / DumboRC command packages for P Series (#1164)
* [Codex assisted] RadioLink / DumboRC command packages bridge

Pass "special" packages to and from the module
Allows to replicate "Set Failsafe", "Set Gyro Settings" and "Set Gyro Endpoints" from DDF-350

* RadioLink / DumboRC command packages TX / RX

* RadioLink / DumboRC Helper script channel names

Has max 10 channels
Has no failsafe
Older X series have gyro sense fixed to CH8, also can be used as regular channel

* [Codex] DumboRC P Series settings script

Add script that mimics interaction between DumboRC DDF-350 transmitter and P Series receivers

* [Codex assisted] Split P series into separate subprotocol

Split command exchange into separate subprotocol
Update protocol documentation

* [Codex] Improve LUA script

Clean up, better event handling
2026-07-29 08:18:58 +02:00
pascallanger 1772147e5b Update FQ777_nrf24l01.ino 2026-07-16 20:18:54 +02:00
pascallanger 865f6c1597 FQ777/XBM37: new subprotocol 2026-07-16 18:25:58 +02:00
pascallanger 095acb0975 FX/A570: new subprotocol for VTOL QIDI-570 2026-07-16 17:51:34 +02:00
MRC3742anddellclient fc8730976c FX: Add telemetry delay for warnings
* telemetry delay for FX protocol warnings

* Update Protocols_Details.md

---------

Co-authored-by: dellclient <dellclient>
2026-07-16 10:11:51 +02:00
pascallanger 699e796a01 FX/BM26: new subprotocol
Missing files
2026-07-14 22:30:14 +02:00
pascallanger 93bade15d0 FX/BM26: new subprotocol 2026-07-14 22:29:07 +02:00
pascallanger 174efa332b XK2/X4: Stunt flag for the Sky Viper Vector 2026-07-14 19:46:38 +02:00
pascallanger e5f9f8c840 Hontai/XK170: Optical flag
CH11 enable/disable flow sensor for K270
2026-07-14 19:26:55 +02:00
MRC3742 bfef3364fc Fix for DSM Clone
* fix for DSM clone not working
2026-07-14 18:54:36 +02:00
pascallanger bb59582271 Update XN297Dump_nrf24l01.ino 2026-07-14 18:46:54 +02:00
pascallanger c6c6fa442b Update WPL_nrf24l01.ino 2026-07-14 18:46:40 +02:00
pascallanger d95012c30b TRAXXAS: attempt to describe TQi 2026-07-14 18:46:09 +02:00
pascallanger f71768df39 E129 saving few bytes 2026-07-14 18:44:41 +02:00
pascallanger 7bde06ff50 AFHDS2A: Fix for CROSSOVER-RX
CROSSOVER-RX are sending end of telemetry data despite having sensors after...
2026-07-14 18:44:05 +02:00
pascallanger 51a01d1393 KF606 LED
Add LED channel for KF606 boards
2026-07-14 18:42:14 +02:00
pascallanger bf38415420 Update SGF22_nrf24l01.ino
Fix tx and freq for none CX10
2025-09-26 17:41:06 +02:00
pascallanger 35f284763a SGF22/CX10 new subprotocol
Only 2 IDs
2025-07-28 11:20:57 +02:00
pascallanger e35c4d3ce8 WPL 1 ID 2025-07-28 01:06:12 +02:00
pascallanger ba59605b16 Update WPL_nrf24l01.ino 2025-07-27 19:15:55 +02:00
pascallanger b88f4d40f4 WPL 5 2025-07-27 18:24:24 +02:00