RadioLink / DumboRC command packages for P Series - #1164
Conversation
|
Tested on P6... and P10..., works as expected. Tested with X10F, still works, new commands do not cause issues. |
|
PR in EdgeTX EdgeTX/edgetx#7441 |
|
For backward compatibility, I would have preferred to have a new subprotocol for the P receivers... |
I am. I would. Of course. |
Pass "special" packages to and from the module Allows to replicate "Set Failsafe", "Set Gyro Settings" and "Set Gyro Endpoints" from DDF-350
Has max 10 channels Has no failsafe Older X series have gyro sense fixed to CH8, also can be used as regular channel
Add script that mimics interaction between DumboRC DDF-350 transmitter and P Series receivers
Split command exchange into separate subprotocol Update protocol documentation
Clean up, better event handling
|
@pascallanger Hi! I moved it to separate subprotocol, also LLM cleaned up .lua a bit. Currently tested on EdgeTX's main (pre 3.0.0 in menus IIRC). If you are fine with this, I will update EdgeTX side PR for main, and then also make one for backport to 2.12. |
|
Also in the meantime tested on 2.12 backport, works as well. As usual, MT12 is my only radio and DumboRCs are my main receivers (Some are still X series, most are updated to P) so they get "runtime". |
|
I've fixed the build failure issue after merging the code. Can you test that everything is working fine using the test build? |
Works! Thank you so much |
* KF606 LED Add LED channel for KF606 boards * AFHDS2A: Fix for CROSSOVER-RX CROSSOVER-RX are sending end of telemetry data despite having sensors after... * E129 saving few bytes * TRAXXAS: attempt to describe TQi * Update WPL_nrf24l01.ino * Update XN297Dump_nrf24l01.ino * Update Protocols_Details.md * Fix for DSM Clone * fix for DSM clone not working * Hontai/XK170: Optical flag CH11 enable/disable flow sensor for K270 * XK2/X4: Stunt flag for the Sky Viper Vector * Update Protocols_Details.md * Update Protocols_Details.md * FX/BM26: new subprotocol * FX/BM26: new subprotocol Missing files * FX: Add telemetry delay for warnings * telemetry delay for FX protocol warnings * Update Protocols_Details.md --------- Co-authored-by: dellclient <dellclient> * FX/A570: new subprotocol for VTOL QIDI-570 * FQ777/XBM37: new subprotocol * Update FQ777_nrf24l01.ino * RadioLink / DumboRC command packages for P Series (pascallanger#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 * Update build_release_avr_optiboot Disable Radiolink in this build * Update Validate.h Save flash space * Update Validate.h Save Flash space * Update Validate.h Save Flash space * Update Validate.h Save Flash space * 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 * DSM: add XPlus channels Sent only when number of channels >12 * SLT/SLT6X new subprotocol * Ares: new protocol ARES Gamma 370, P-51D Mustang 350, RTF models with 6HPA-Tx and AZS12006-Rx (6 channel). * Update build_release_avr_noboot * WLV8TX small changes and save few bytes * Update README.md Fix code status * Fix SLT protocol variant timing, payloads, and frame structure from capture analysis * Initial plan * Initial analysis of SLT V1 captures vs code implementation Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Fix SLT V1 timing and packet count to match TTX610 TX captures Based on analysis of Saleae logic captures from a TTX610 TX module: - Change SLT_V1_TIMING_PACKET from 1000 to 1600us (captures show ~1596us) - Send 2 data packets per frame instead of 3 (like V1_4) - Change frame period from 20000 to 17700us (captures show ~17690us) - Change bind frequency from 100 to 88 frames for V1/V1_4 - Update MULTI_SYNC packet_period to 17700us Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Initial analysis of Q200, Q100 and MR100 SLT captures Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Fix Q100, Q200, and MR100 SLT variant implementations based on capture analysis Q100 fixes: - Payload size: 19 bytes (was incorrectly 11) - Packets per frame: 7 (was 3) - Inter-packet timing: 1897us (was 2042us) - Frame period: 17933us - TX address: force bytes 0,1 to 0x01,0x02 (same as Q200) - BIND1 uses 19-byte payload (was 11) - BIND1 timing: 3652us, BIND2 timing: 1217us - Bind count: every 50 frames (was 100) Q200 fixes: - Bind count: every 50 frames (was 100) MR100 fixes: - Packets per frame: 9 (was 3) - Inter-packet timing: 2007us (was 2042us) - Frame period: 17930us - No build delay (was 1000us) - Only BIND2 sent (no BIND1) - MR100-specific bind timing: 1008us - Bind count: every ~83 frames (was 100) Common fixes: - BIND1 now sent on data channel (was incorrectly using bind channel) - BIND1 uses packet_length (was hardcoded to SLT_PAYLOADSIZE_V2) - Refactored callback to use counter-based frame handling (rf_ch_num) instead of fixed DATA1/DATA2/DATA3 phases Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Standardize SLT frame periods to 18ms using SLT_FRAME_PERIOD constant Replace variant-specific hardcoded frame periods (17700, 17933, 17930, 13730+2*2042) with a single SLT_FRAME_PERIOD=18000 constant. The captured values varied by 67-300us from the standard 18ms frame rate due to measurement artifacts. V1_4 already used exactly 18000us, confirming 18ms as the design intent for all SLT variants. Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Align SLT V2 with V1 - same timing, packets, and bind structure V2 (TTX810, 8ch) was not based on captures and had substantially different behavior from V1 (TTX610, 6ch). Since V2 is simply V1 with channels 7+8 added, align V2 timing, packet count, bind frequency, and bind structure to match V1. Only payload size differs (11 vs 7). V2/RF_SIM changes: - Packets per frame: 3 -> 2 (rf_ch_num=1, same as V1) - Bind frequency: 100 -> 88 frames (same as V1) - Inter-packet timing: 2042 -> 1600us (same as V1) - Bind structure: BIND1+BIND2 -> BIND2 only (same as V1) Q200 retains its capture-validated settings unchanged. Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Fix MR100 hop frequency generation algorithm Reverse-engineered the MR100 hop algorithm from Saleae logic captures (verified 15/15 perfect match against TX address 0x0C 0x80 0x3F 0x00). MR100 uses different constants than V1/V2/Q200: - h[0] mask: 0x1F (5 bits) instead of 0x3F (6 bits) - h[1]: ((byte>>2) & 0x0F) instead of (byte>>2) - h[2]: (next & 0x01)*0x10 instead of (next & 0x03)*0x10 - h[3]: (next & 0x07)*0x04 instead of (next & 0x0F)*0x04 - base for i>=2: 0x08 instead of 0x10 - max_freq: 43 instead of 0x50, with Q200-style wrapping Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Revert MR100 hop sequence to standard V1/V2 algorithm The MR100-specific hop algorithm (narrower band, different masks) caused slow/impossible binding. The MR100 receiver (Dromida Vista FPV) is compatible with standard Tactic 6-channel transmitters, so it uses the standard hop algorithm with max_freq=0x50. Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Add Ao-Sen-Ma / CG022 protocol - Requires LT8910 RF Board (#18) * Plan CG022 protocol import Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/6ec46660-b79e-407b-9153-b13846091fc7 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Revert accidental local build artifacts Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/6ec46660-b79e-407b-9153-b13846091fc7 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * CG022 / LT8910 Protocol - WORKING - Requires External LT8910 RF Board (#15) * Add CG022/LT8910 protocol - rebased onto latest add-cg022-quad * Remove 98* capture files * Add images for hardware mod * Update 01_TX.jpeg * Address PR review feedback: rename doc, add images, update text per comments Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/156f2f98-5c33-438a-8048-2771418e7bb2 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Add AOSENMA/CG022 to Multi.txt and update Pins.h comment Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/c216aae5-80e4-4b0e-a552-025aaf10fe85 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Remove unused CG022 rebind state machine Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/96d69d8a-005d-49d5-91d8-c70a8a489228 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Use model-match ID for CG022 bind Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/90e16db5-810d-4282-b93d-2e87215ceb4c Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Adjust CG022 model match via RX_num Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/ab2360d8-3609-4cd2-a306-52965e32d120 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Clarify CG022 model match comments Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/ab2360d8-3609-4cd2-a306-52965e32d120 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Explain CG022 model match XOR Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/ab2360d8-3609-4cd2-a306-52965e32d120 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Clarify CG022 XOR comment Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/ab2360d8-3609-4cd2-a306-52965e32d120 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Use fixed CG022 TX ID Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/6807d7ec-f69d-4339-90ba-39962671cda0 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Add LT8910 section and fixed ID note for CG022 docs Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/12ac6150-123f-4465-afa3-0062cc7562b3 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Update CG022 bind TX ID comments Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/04534cc2-5d6d-49c5-9f38-32240f931264 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Update CG022 TX ID derivation and syncwords Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/0b6a4a2f-8c5a-4bb3-96c4-7feaae6a71e1 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Clarify CG022 TX ID storage and syncword7 use Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/0b6a4a2f-8c5a-4bb3-96c4-7feaae6a71e1 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Update CG022 model match documentation Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/1d7badca-7942-484d-b06e-e4abac3ba92d Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Fix LT8910 read and CG022 init checks Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/194a2e24-8cd5-4788-ae45-02866ec45623 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Update CG022 comments and AoSenMa build label Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/0a763b45-2e03-49d0-8a3c-99990ea88ba7 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Clarify STM32 pin reference Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/0a763b45-2e03-49d0-8a3c-99990ea88ba7 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> --------- Co-authored-by: MRC3742 <MRC3742@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Address CG022 review feedback Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/6ec46660-b79e-407b-9153-b13846091fc7 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Clarify CG022 comments and LT8910 pin conflict Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/6ec46660-b79e-407b-9153-b13846091fc7 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Refine CG022 follow-up review fixes Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/6ec46660-b79e-407b-9153-b13846091fc7 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Add Ao-Sen-Ma CG022 protocol with LT8910 support Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/6ec46660-b79e-407b-9153-b13846091fc7 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Add LT8910 build coverage and clean CG022 docs Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/47f14fba-1ab4-45e7-b65a-4ee52b6a2473 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Fix LT8910 build-script coverage handling Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/47f14fba-1ab4-45e7-b65a-4ee52b6a2473 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Add dedicated LT8910 release build Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/8214f0cd-0058-4884-92f8-e6f9334cffe8 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Remove generated artifacts from LT8910 release work Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/8214f0cd-0058-4884-92f8-e6f9334cffe8 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Restore _Config protocol selection defaults Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/8214f0cd-0058-4884-92f8-e6f9334cffe8 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Restore default STM32 config settings Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/8214f0cd-0058-4884-92f8-e6f9334cffe8 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Make LT8910 defaults opt-in Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/8214f0cd-0058-4884-92f8-e6f9334cffe8 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Add LT8910 release script and T18 exclusions Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/6a300b02-5215-48e6-befb-90286246058a Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Track LT8910 release script and restore script modes Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/6a300b02-5215-48e6-befb-90286246058a Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Plan LT8910 release build update Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/1939f70f-b38d-451b-b241-e2fe80ca83bb Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Base LT8910 air release on STM32 air build Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/1939f70f-b38d-451b-b241-e2fe80ca83bb Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Trim NCC1701 from LT8910 builds Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/2f5d3bc8-aaae-4478-b1df-91039696ffcc Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Rewrite LT8910 release build flow Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/025fb1f1-7715-414a-8a15-b1c43c42ba18 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Address LT8910 follow-up review comments Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/47c6cab5-3a72-4336-bc41-9816d97ac050 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Tidy LT8910 follow-up docs wording Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/47c6cab5-3a72-4336-bc41-9816d97ac050 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * Tweak LT8910 doc formatting follow-up Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/9c47e92b-9af0-49ef-b587-5af5a77afacc Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> Co-authored-by: MRC3742 <MRC3742@users.noreply.github.com> * (fix) Remove NCC1701 for space needed to operate correctly (#20) * (fix) Remove NCC1701 for space needed to upload correctly to flash Although the MULTI_AIR builds are completing successfully for the 128Kb versions, just under the 120808 byte threshold, these builds do not work properly when uploaded to MPM. As different builds near this max allowed figure other flash demands are interfering with a complete upload. By removing this older niche protocol I am creating enough available free space for a proper upload to the STM32 flash. * Add post-build size check for 128KB builds Agent-Logs-Url: https://github.com/MRC3742/DIY-Multiprotocol-TX-Module/sessions/866c69d6-fc73-4d47-b3ca-2b36e2f29ec9 Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com> * a few additional changes * a few more additional changes * prevent overflow on 64K CC2500 builds * remove multiple FQ777 entries * a few SLT tweaks * Few updates Thanks @MRC3742 * add back in FQ777 for XBM37 --------- Co-authored-by: pascallanger <pascal_langer@yahoo.fr> Co-authored-by: Eduard <1621251+ELynx@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: MRC3742 <26642502+MRC3742@users.noreply.github.com>
|
@ELynx what do you mean by the P series have "runtime"? |
|
That he has used them with this version |
|
Ok, by the way it was worded it seemed like the P-series recievers have a runtime telemetry variable or something that the X-series did not. The P-series recievers support "fast mode" for higher refresh rate servos, is this something that was implemented with this P series command package update? |
Bratushka, English is not my first language :) Apolocheeze if I misled you. Pascal is correct. What I meant is that I had that firmware running (along with modified EdgeTX) for quite awhile, and nothing caught on fire. From all I can test P and X have same tele. Only thing P has is a separate response that gives current settings, but it is sent only in response to special package.
I looked at fast mode in DDF-350 firmware around version 1.1.9 or so. It is done by switching timing from 20 to 5 cycle and reducing number of sent channels. Not in this change, no. Technically doable, but would require some timing rework and testing if module can even do such fast exchange. Edit: or you mean servo frequency setting? For servo frequency as in DDF-350 menu yes, script does allow to change that. 67hz is default, then options are 50, 250 and 300 from top of my head. But you will need custom built EdgeTX since my PR is not yet in the main or 2.12. |
|
FYI, PRs got merged |

DumboRC receivers in P series support setting of failsafes, gyro sense channel and gyro endpoints.
DDF-350 firmware 1.1.9 does this through UI sub-item.
I reverse engineered the format, and finally found time to implement it throughout. Needs changes to EdgeTX, will link PR in comments. Tested with custom builds off 2.12.1 and current main.
Main Lua script is 99% generated, surprisingly in my life I had not come across it. All of my attempts to improve it only made it worse.
Bridges are generated but at least I can verify C/C++ myself. Still, beware.
Main radio changes were written 90% by hand. Otherwise, it turned into helper hell and with control flow issues.
Will test over the course of this summer.