Home

Awesome

Extended DSHOT Telemetry (EDT) Specification

Extended DSHOT Telemetry, as the name suggests, extends the telemetry data which is sent from ESC (via signal wire) to the flight-controller. For this to work, bi-directional DSHOT needs to be active.

In addition to the eRPM data which was the initial data being transmitted back to the flight-controller, EDT allows the encoding of further details in the telemetry frame.

Prerequisites

Frame structure

The frame structure of the telemetry frame is 16 bits long: eeem mmmm mmmm cccc

To calculate the real eRPM value, it is shifted to the left by the exponent:

eRPM = m << e

or in other words:

eRPM = m * 2 ^ e

From this, one can easily see that the same eRPM values could be encoded in multiple different ways.

8 can be encoded in this four ways:

000 0 0000 1000
001 0 0000 0100
010 0 0000 0010
011 0 0000 0001

512 can be encoded in this seven ways:

001 1 0000 0000
010 0 1000 0000
011 0 0100 0000
100 0 0010 0000
101 0 0001 0000
110 0 0000 1000
111 0 0000 0100

This is true for most values, thus the idea was born to normalize eRPM values, so that no ambiguity is left and each value has only one representation, the other - now free - values can be used to encode different data.

The last three bits (the exponent) together with the 8th bit (the MSB of the value) allow to distinguish between eRPM and extended DSHOT frames. Those four bits are called the prefix.

Normalization

To normalize an eRPM value, the goal is to set Bit 8 by decreasing the exponent and left shifting the value. An implementation of the normalization could look something like so:

eRPM Frames

After applying the normalization, the following ranges are possible for eRPM values:

If the last four bits are 0 OR the 8th bit is 1, it is a eRPM frame, the other ranges are EDT frames.

EDT Frames

This is where EDT versions come into play if not explicitly stated, the values are available in all versions

Checksum

The 4 bits checksum is calculated the same way no matter if eRPM or EDT frame. Value in this example are the 12 data bits.

crc = (value ^ (value >> 4) ^ (value >> 8)) & 0x0F;

Enabling EDT

To enable EDT the ESC has to receive the DIGITAL_CMD_EXTENDED_TELEMETRY_ENABLE command (DSHOT command 13) at least 6 times in succession. It then answers with a single version frame:

111 0 vvvv vvvv

How the received data is then interpreted is up to the receiving device - especially how the DEBUG frames are interpreted.

Disabling EDT

To disable EDT , the ESC has to recieve the DIGITAL_CMD_EXTENDED_TELEMETRY_DISABLE command (DSHOT command 14) at least 6 times in succession. It then answers with a single disabled frame:

1110 1111 1111

Feature autodiscovery

The only mandatory frame is the status frame. All available data is sent if EDT has been enabled - it is not necessary to enable specific frames on the receiving end.

Frame scheduling

By default eRPM telemetry is sent back to the FC, and every ESC firmware has to decide the best frame scheduling based on their configurations, use cases or preferences.

The following is an example schedule for transmitting EDT frames:

Timing

A bi-directional response frame (EDT frame) is to be sent 30μs after a DSHOT frame has been released. This interval does not depend on DSHOT speed.

Glossary

Further Reading

History