Skip to content

Conversation

@frankiearzu
Copy link
Contributor

@frankiearzu frankiearzu commented Nov 6, 2025

Fixes #1137

Added the code to support the Spektrum X-Plus channels (CH13-CH16) encoding and multiplexing.

No need to change anything in the TX code, since the TX is already transmitting 16ch to the Multi-Module, even if the channel range is CH1-CH12. XPlus channels will only be transmitted on DSM X2F when using 12 channels, not when is fewer.

Changing the MM and TX firmware send CH17-20 will be much more work on the TX, and TX->MM protocol, but 16ch is a good start.

The X-Plus channels are very LOW refresh channels, 88ms compared to the regular 11ms/22ms servo refresh... not intended for surfaces, but for low priority items, like gains, flight modes, and with a channel extender, other servos.

Tested with:

  • EdgeTX TX16 2.11.3
  • EdgeTX Boxer 2.11.3
  • Ethos X20S 1.6.2

RX:
AR637TA Using CH16 for flight mode.
LemonRX Gen2 Ignores extra channels

NOTE: CH14 Throttle Kill functionality is still ON by default for backward compatibility, I think at some point of time, it should be deprecated, since the same functionality can be done with most new radios with a Thr Kill functionality (EdgeTX special function).

@frankiearzu
Copy link
Contributor Author

frankiearzu commented Nov 6, 2025

How to test this:

  1. You will need DSMTools Suite 2.3, who has support for 16ch. Can be downloaded from here: https://github.com/frankiearzu/DSMTools/tree/main/DSM%20Tools%20Suite

  2. Set up your radio, so that the Flight-Mode switch uses Ch16. The Channel range remains Ch1-Ch12. If you did not have range up to 12 channels, re-bind.

  3. Using forward programming, Gyro->Settings, FMode setup, Move the flight mode channel to Ch16. You can see that when you move the switch, the flight mode should change.

  4. Now the receiver should change flight modes using Ch16.. On EdgeTX you can see the "FM" sensor changing. In ETHOS, the sensor is called "Flight-Mode".

  5. The X-Plus channels are very LOW refresh channels, 88ms compared to the regular 11ms/22ms servo refresh... not intended for surfaces, but for low priority items, like gains, flight modes, and with a channel extender, other servos.

@frankiearzu
Copy link
Contributor Author

frankiearzu commented Nov 7, 2025

Examples of X-Plus multiplexing from a DX-18. Protocol DSMX (it uses all 20 channels by default).

Each frame encodes 7 channels. The Multi-Module with DSM X2F uses only the first 6 channels of the frame; the last channel is always 0xFFFF, which means no-channel.

On the DX-18, The last 2 bytes of the frame have the 7th channel encoded using the X-Plus format,
where it encodes channels CH13-CH20

The encoding of the X-Plus channels is: Phase(1-bit), Ch (4-bits), X-Plus-Ch (2-bits), Data (9-bits)
Channel will always be 12 (Channel 13), and X-plus is the channel after Ch13 when phase=0 or after Ch17 when phase=1
Image

On this example, the last channel is 0x65 0x00 which translates to binary:
0110 0101 0000 0000 = 0-1100-10-100000000 Phase=0, Ch=12, X-Plus-Ch=2, Data = 512, that is Ch15=512

image

In this example, the last channel is 0xE7 0xAE which translates to binary:
1110 0111 1010 1110 = 1-1100-11-110101110 Phase=1, Ch=12, X-Plus-Ch=3, Data = 430, that is Ch20=430

image

@frankiearzu frankiearzu marked this pull request as draft November 10, 2025 05:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DSM: Increase number of channels supported to 16 (X-Plus channels)

1 participant