Guide · DroneCAN
DroneCAN instead of PWM: why the CAN bus is the better link to your ESCs
A PWM signal tells the motor controller one thing: how much. It does not say whether the command arrived, how hot the controller is or why a motor just shut down. DroneCAN replaces the individual signal lines with a bus over which ESCs receive setpoints and report status – standardized in ArduPilot and PX4.
At a glance
| PWM/PPM | one setpoint per wire, no feedback, signal faults only detectable indirectly |
| DroneCAN | one bus for all motors: setpoints, ESC status, node status, parameters |
| Standard | open protocol (formerly UAVCAN v0), firmly established in ArduPilot and PX4 |
| INV-60V-120A | esc.Status at 10 Hz, NodeStatus at 1 Hz, dynamic node ID, up to 20 ESC indices per bus |
| Switchable | PersyCAN for parameterization, detailed telemetry and firmware updates – switching during operation, also with dynamic address allocation |
Published September 25, 2026 · Persystems GmbH, Regensburg, Germany
What PWM can do – and what it cannot
The classic link between flight controller and ESC is a PWM or PPM signal: the pulse width encodes the setpoint, nothing else. That is simple, robust and perfectly adequate for small multicopters. As the aircraft grows, the drawbacks appear: every motor needs its own wire, the flight controller learns nothing about current, temperature or fault state of the controller, and a corrupted signal can only be recognized by the motor not doing what it should.
An inverter can detect such signal faults – the INV-60V-120A monitors its PWM/PPM inputs for invalid signals, timeouts, inversion errors and noisy inputs – but it cannot report them over the PWM wire. That takes a return channel.
DroneCAN: one bus, all drives
DroneCAN is the open CAN protocol of the ArduPilot and PX4 world, formerly known as UAVCAN v0. Flight controller, ESCs, sensors and servos share one CAN bus and exchange standardized messages. The flight controller sends the setpoints of all motors in a single message; every ESC replies with its status.
New nodes get their address automatically: through dynamic node ID allocation an ESC announces itself on the bus and receives a free ID, without anyone setting DIP switches or typing parameters. Up to 20 ESC indices per bus cover even large multicopters and VTOL configurations.
What a DroneCAN ESC reports
Two messages form the backbone: esc.Status delivers the drive’s operating data at 10 Hz, NodeStatus reports at 1 Hz that the node is alive and in which health state. The INV-60V-120A classifies faults as health levels – OK, Warning, Error, Critical – so the flight controller can react without vendor-specific decoding. Via GetNodeInfo the inverter identifies itself with name and software version.
For the flight controller this changes the quality of information fundamentally: it sees every motor individually, recognizes an impending overtemperature before the drive shuts down, and can attribute faults in the log to the right node.
Wiring and commissioning
A CAN bus consists of a twisted pair (CAN High, CAN Low) with termination resistors at both ends; all nodes are connected to it in parallel. Compared with six or eight individual PWM wires that is less cable, fewer connectors and a clear structure. In the INV-60V-120A, CAN transceiver and PPM input are galvanically isolated from the power stage – interference from the power section stays away from the signal bus. Pin assignment, signal paths and CAN termination are described in the technical documentation of the inverter at esc.persystems.org.
In ArduPilot and PX4, DroneCAN is a supported ESC interface: enable the CAN port, select DroneCAN as the ESC type and assign the ESC indices to the motors. From then on setpoints and status run over the bus; the PWM outputs remain as a fallback.
DroneCAN or PersyCAN – switchable
DroneCAN standardizes what every flight controller needs. For everything beyond that – parameterization, firmware updates, detailed telemetry with Id/Iq, Ud/Uq, MOSFET and motor temperature – the INV-60V-120A speaks PersyCAN. Both at the same time is not possible – the inverter is configured for one protocol or the other – but switching is possible during operation: the Persystems PC software reaches the inverter even when it is configured for DroneCAN; the stored configuration is preserved. Automatic addressing exists in PersyCAN as well: several inverters with the same factory address are distributed to their own CAN IDs through the discovery mechanism – the counterpart to dynamic node allocation in DroneCAN.
So the aircraft gets the standardized connection, and the developer keeps full insight into the drive – from the first test-bench run to operation in the fleet.
Related
Frequently asked questions
Do I need DroneCAN for a small multicopter?
Not necessarily. With few motors and short wires, PWM is often sufficient. DroneCAN pays off as soon as telemetry, fault diagnosis or the number of motors matter – typically on VTOL, heavy-lift and industrial drones.
Can I keep controlling the INV-60V-120A with PWM?
Yes. The PWM/PPM input remains as a fallback, galvanically isolated and with signal monitoring.
How many ESCs fit on one DroneCAN bus?
The INV-60V-120A supports up to 20 ESC indices per bus; node IDs are allocated dynamically.
Contact
DroneCAN integration for your aircraft?
Tell us which flight controller, voltage level and motors you use – you will get samples, documentation and an answer straight from the engineering team.
