Technical Resources · ESC Protocols

CAN Bus vs PWM ESC Control for Defense UAVs.

PWM sends one throttle signal and receives nothing back. CAN bus returns RPM, current, temperature, and fault status from every motor on every cycle. For defense UAV programs that need full health monitoring, the choice matters.

// Short Answer

Use CAN if you can.

For defense UAV programs, CAN bus is the preferred ESC protocol when the flight controller supports it.

CAN provides bidirectional communication on a two-wire differential bus — the flight controller sends throttle commands, and each ESC returns real-time motor RPM, phase current, supply voltage, ESC temperature, and fault codes. This data stream is mission-critical for programs that require in-flight health monitoring and post-flight forensic analysis.

PWM, by contrast, is a one-way analog signal. It is simple, universally supported, and works. But it produces no feedback, offers no fault detection, and is susceptible to noise in high-RF environments. For hobbyist or commercial platforms where simplicity dominates, PWM is fine. For defense platforms that need to know exactly what each motor is doing on every cycle, PWM is structurally inadequate.

Dshot occupies the middle: it is digital (noise-immune, no calibration), and bidirectional Dshot returns motor RPM over the same wire. It lacks the full telemetry breadth of CAN but is a significant improvement over PWM for platforms where CAN wiring is not practical.

01 / PWM

Pulse Width Modulation.

The original ESC protocol. One signal wire per ESC. Widely supported.

PWM encodes throttle as a pulse duration: typically 1000 µs (0% throttle) to 2000 µs (100% throttle) at 50 Hz. Each ESC receives its own dedicated signal wire from the flight controller. The protocol is purely unidirectional — the ESC receives a command and executes it; there is no acknowledgment, no data return, no error signaling.

Signal type
Analog (pulse duration)
Wiring
1 signal wire + GND per ESC
Update rate
50–490 Hz (hardware dependent)
Telemetry
None
Calibration required
Yes — throttle range varies by ESC
Noise susceptibility
High (analog signal)
Autopilot support
Universal

PWM remains useful in constrained integrations where simplicity matters and no health monitoring is required. It is not appropriate for production defense programs where per-motor telemetry is a mission requirement.

02 / Dshot

Digital Signal Protocol.

Digital throttle over a single wire. No calibration. Optional RPM telemetry.

Dshot replaced the analog encoding of PWM with a fixed-rate digital packet: a 16-bit frame containing the 11-bit throttle command, a telemetry request bit, and a 4-bit CRC. This eliminates the noise sensitivity and calibration burden of PWM. Bidirectional Dshot extends the protocol — after the throttle frame is received, the ESC responds on the same wire with an eRPM value via inverted DSHOT encoding, giving the flight controller per-motor speed feedback without additional wiring.

Signal type
Digital (fixed-rate packet)
Variants
Dshot 150 / 300 / 600 / 1200
Wiring
1 signal wire per ESC
Update rate
Up to 8 kHz (Dshot 600)
Telemetry
eRPM only (bidirectional Dshot)
Calibration required
No
Noise susceptibility
Low (digital encoding)
Autopilot support
ArduPilot, PX4, Betaflight

Dshot 300 is the standard for most defense platforms running ArduPilot or PX4. Bidirectional Dshot is sufficient when RPM feedback is the primary telemetry requirement and current/temperature monitoring is handled by a separate power module.

03 / CAN Bus

Controller Area Network.

Two-wire differential bus. Full per-motor telemetry. Fault detection. Preferred for defense programs.

CAN bus uses a two-wire differential pair (CAN_H and CAN_L) shared by all nodes on the bus. Each ESC is a CAN node; the flight controller is the bus master. DroneCAN (formerly UAVCAN v0) is the higher-level protocol that runs over CAN and defines the message types for ESC control and telemetry in drone systems.

Under DroneCAN, the flight controller publishes ESC setpoints at up to 200 Hz. Each ESC publishes its own status messages — RPM, current, voltage, power, temperature, error flags — at configurable intervals. These messages are available to any node on the bus, including data loggers and companion computers, without additional wiring.

Signal type
Differential digital (CAN 2.0B)
Wiring
2-wire shared bus (CAN_H / CAN_L)
Bus speed
1 Mbit/s (typical)
Telemetry
RPM, current, voltage, temperature, faults
Protocol
DroneCAN (UAVCAN v0 / v1)
Fault detection
Per-node, real-time
Noise susceptibility
Very low (differential pair)
Autopilot support
ArduPilot (DroneCAN), PX4 (DroneCAN)
Termination
120 Ω at each end of bus

CAN bus reduces per-ESC wiring to a single daisy-chained bus shared by all motors. On a quadrotor, four ESCs plus the flight controller share two wires. This architecture also supports ring or redundant topologies for fault-tolerant platforms.

04 / Ethernet

Emerging standard.

100BASE-T1 / 1000BASE-T1 automotive Ethernet. High bandwidth. Not yet standard in flight stacks.

A small number of next-generation UAV platforms — particularly those requiring high-bandwidth sensor fusion or software-defined flight control architectures — are beginning to adopt single-pair Ethernet (100BASE-T1 or 1000BASE-T1) for ESC control, following automotive precedent. This enables much higher telemetry bandwidth and supports TSN deterministic scheduling.

Ethernet-capable ESCs are not yet in the defense UAV mainstream. ArduPilot and PX4 do not currently ship Ethernet ESC drivers. Lirith is monitoring this space; the QuadDrive 80A currently supports CAN, Dshot, and PWM — the protocols that are standard in defense programs today.

// Protocol Comparison

PWM vs Dshot vs CAN vs Ethernet.

Feature-by-feature comparison across the four ESC control protocols used in UAV systems.

Feature PWM Dshot CAN (DroneCAN) Ethernet
Signal type Analog Digital Digital differential Digital differential
Wiring per ESC 1 signal + GND 1 signal wire Shared 2-wire bus Shared 2-wire bus
Calibration required Yes No No No
Throttle update rate 50–490 Hz Up to 8 kHz Up to 200 Hz Up to 1 kHz+
Noise immunity Low High Very high Very high
Motor RPM feedback No Bidirectional Dshot Yes Yes
Current telemetry No No Yes Yes
Temperature telemetry No No Yes Yes
Fault detection No No Yes — per node Yes
Bus topology Point-to-point Point-to-point Multi-drop bus Switched network
ArduPilot support Yes Yes Yes (DroneCAN) No (experimental)
PX4 support Yes Yes Yes (DroneCAN) No (experimental)
Defense UAV suitability Adequate Good Preferred Future
// System Design

How to choose.

Use CAN bus when:

  • Your flight controller has CAN interfaces (Cube Orange+, Pixhawk 6C, H7-based boards)
  • Per-motor current, temperature, and fault data are required in mission logs
  • The platform operates in RF-contested environments where analog noise is a risk
  • You are building a redundant architecture and need bus-level fault isolation
  • Forensic analysis of motor-level data is required for incident investigation

Use Dshot when:

  • The flight controller does not have CAN hardware (F4/F7-based boards)
  • RPM feedback is sufficient for the application (notch filtering, motor health monitoring)
  • Integration simplicity is a priority and PWM's analog noise risk is unacceptable
  • Platform is a smaller airframe where wiring constraints limit CAN bus implementation

Stick with PWM when:

  • Integrating with legacy hardware that only supports PWM ESC input
  • No telemetry requirement and RF environment is benign
  • Development or test bench work where simplicity outweighs production requirements
// QuadDrive 80A

All four protocols. One ESC.

The Lirith QuadDrive 80A supports PWM, Dshot 300, Dshot 600 with bidirectional telemetry, and DroneCAN — selectable via configuration. The same hardware integrates into any current defense flight stack.

PWM
1000–2000 µs, 50–490 Hz
Dshot 300
Digital · bidirectional eRPM
Dshot 600
Digital · bidirectional eRPM
DroneCAN (CAN bus)
RPM + current + temperature + faults
Protocol selection
Configuration parameter
CAN termination
Configurable on-board
Tested flight stacks
ArduPilot, PX4
// FAQ

Common questions.

What CAN speed should I use for ESCs?

1 Mbit/s is the standard CAN bus speed for DroneCAN ESC networks. Bus length and termination must be correct at this speed — 120 Ω resistors at both ends of the bus, maximum segment length of approximately 40 m. Most defense UAV airframes are well within these limits.

Can I mix CAN and Dshot ESCs on the same platform?

Yes, if the flight controller supports both. ArduPilot can drive a mix of DroneCAN and Dshot ESCs by assigning motor outputs to different output groups. In practice, it is simpler to standardize on one protocol per airframe to reduce integration complexity and ensure consistent telemetry.

Does CAN bus latency matter for quadrotor control?

At 200 Hz update rate over DroneCAN, CAN bus latency is not a limiting factor for quadrotor flight control. High-performance FPV racing applications run Dshot at 4–8 kHz, but defense VTOL and multirotor platforms typically run attitude control loops at 400 Hz or lower, well within CAN's capability.

What happens if a CAN node fails in flight?

A failed or disconnected CAN node stops transmitting status messages; the flight controller detects the missing heartbeat and can execute a configured failsafe. Unlike PWM — where a failed ESC produces no fault signal at all — CAN provides the flight controller with actionable information to respond to the failure.

Is DroneCAN the same as UAVCAN?

DroneCAN is the continuation of UAVCAN v0, renamed to reflect its primary application domain. ArduPilot and PX4 both use DroneCAN for CAN ESC and peripheral communication. UAVCAN v1 (now Cyphal) is an incompatible successor; the DroneCAN ecosystem is what production defense programs use today.

Do I need a CAN bus adapter for the QuadDrive 80A?

No. The Lirith QuadDrive 80A has CAN transceivers on board and exposes a standard JST-GH 4-pin CAN connector (CANL, CANH, GND, +5V optional). Connect it directly to any flight controller with a CAN port. No adapter, bridge, or level-shifting hardware is required.