Radio Control Developer Guide

As the minimum channel count to control the vehicle and switch modes is five, only RC signals with five or more channels are considered valid by the system

This page covers the various radio control interfaces PX4 supports:

  • PPM inputs (also referred to as CPPM or PPM sum-signal)
  • Futaba S.BUS and S.BUS 2
  • Spektrum DSM2 / DSMX

There is a lot of speculation of the actual frame formats on the internet and specifics of the protocol. The PX4 dev team has invested a significant amount of time to validate the different reverse-engineering results and we are confident that the details provided here represent a definite source of information.

PPM Inputs

Each pulse has a length of 1-2 ms which represents full negative to full positive stick travel. Channels are following directly after each other, and a pause of substantially more than 2 ms (we require 3 ms at least, but “standard” are 4 ms) marks the beginning of a packet. This means that a valid packet format is e.g. 8 channels in a 20 ms frame. Some vendors have not understood the concept well, leading to RC input decoding fail if enough channels are set to their maximum value (e.g. a frame length of 18 ms works for 8 channels if all sticks are centered, as the channel sequence adds to 1.5 ms * 8 = 12 ms. However, if all channels are maximized, the frame boundary vanishes completely: 2 * 8 = 16 ms. The receiver then outputs a pulse train of 2 ms pulses without any frame start marking).

Futaba S.BUS

The physical layer of S.BUS is based on a 100'000 baud inverted serial stream with 8 data bit, 1 stop bit and no parity (8N1). S.BUS2 follows the same physical layer but has slightly modified packets.

Spektrum DSM2 / DSM X

The physical layer of Spektrum DSM2/DSMX is based on a 115'200 baud serial stream with 8 data bit, 1 stop bit and no parity (8N1).

Output Scaling

Spektrum has a weird center pulse of 1520 us (normal would be 1500). The full channel setup for 100% travel set on the transmitter is:

  • 0%: 1126 us (digital output at 11 bit: 345)
  • 50% / center: 1520 us (digital output at 11 bit: 1024)
  • 100% / top: 1919 us (digital output at 11 bit: 1700)

The PX4 stack therefore scales the values by subtracting 1024 and scaling to match the Spektrum 1100 to 1900 us range.

Translations of this page:

Quick Links

QR Code: URL of current page