Quick Answer
PWM sends one signal down one wire to one device, like a servo or an ESC. DroneCAN sends many signals down one shared pair of wires, so several parts can talk to the flight controller at once. DroneCAN also lets parts report health and errors, not just take commands. Most modern GPS units, power modules and some ESCs now support DroneCAN.
What PWM Actually Does
PWM stands for pulse width modulation. It is an old, simple way to send a command. The flight controller sends a fast pulse. The length of that pulse tells the device what to do. A short pulse might mean "stop." A long pulse might mean "full power."
Each PWM device needs its own wire and its own spot on the flight controller. This works well for a handful of motors and servos. It gets messy once you add a GPS, an airspeed sensor, and several other parts. You end up with a large bundle of wires, and each one is a single point that can fail.
PWM also cannot report anything back. The flight controller sends a command and hopes the device is still there. If a motor ESC overheats or a sensor loses power, the flight controller has no simple way to know.
What DroneCAN Is
DroneCAN is a shared data bus. Think of it like a small network, similar to how computers share one network cable. All DroneCAN devices connect to the same two-wire bus. Each device has its own address, called a node ID. Messages travel down the bus with a label, and every device reads the labels it cares about.
This means one flight controller port can serve many devices at once. A GPS, a compass, an airspeed sensor, and a power module can all share the same cable run. Adding a new device often just means splicing into the same bus, instead of running a brand-new wire back to the flight controller.
DroneCAN devices can also send status back. A GPS can report how many satellites it sees. A power module can report battery voltage and current. An ESC can report its temperature and RPM. If something is wrong, ArduPilot can warn you before the fault causes a crash.
Wiring and Noise Benefits
Long PWM wires can pick up electrical noise from motors and power cables. That noise can create small errors in the signal. DroneCAN uses a signal method built to resist this kind of noise, so longer wire runs are more reliable.
DroneCAN also uses fewer total wires for the same number of devices. Fewer wires mean fewer connectors, and fewer connectors mean fewer chances for a loose pin or a bad crimp. On a large aircraft with sensors spread across the frame, this makes a real difference to how much you troubleshoot.
Tip: Even on a DroneCAN bus, keep the cable away from ESC and motor power wires where you can. Less noise near the bus always helps.
Which Devices Support DroneCAN
You will find DroneCAN support on many parts made for serious builds:
- GPS and compass modules, including CubePilot's Here GPS line
- Power modules that report voltage and current
- Some ESCs, mainly on larger multirotors and planes
- Airspeed sensors on fixed-wing and VTOL aircraft
- Rangefinders and some lighting controllers
Not every part uses DroneCAN. Small quadcopter builds and most hobby-grade ESCs still use PWM or digital protocols like DShot, which are built for fast motor control rather than a shared sensor network. If you want to learn how a GPS module fits into this picture, read adding GPS to your drone.
Setting Up DroneCAN in ArduPilot
ArduPilot supports DroneCAN on flight controllers with a CAN port, including Pixhawk-standard boards and the Cube. Setup follows a similar pattern for most devices:
- Wire the device to the CAN port using the correct connector, often JST-GH.
- In Mission Planner, open the CAN settings and enable the DroneCAN driver on that port.
- Reboot the flight controller so it can scan the bus for new nodes.
- Check that the device shows up with a node ID and sends live data.
- Set the device as the main sensor for its type, such as GPS or airspeed, in the relevant parameter.
Each device keeps its own node ID stored in memory. If you add two of the same device type, such as two GPS units, ArduPilot needs each one to have a different ID. Most modern devices handle this automatically, but it is worth checking if a new sensor is not showing up.
Mixing PWM and DroneCAN
You do not need to pick only one option. Most real builds use both. Motors and control surfaces almost always stay on PWM or a fast digital motor protocol, because that is what those parts expect. Sensors, GPS units and power monitoring often move to DroneCAN because they benefit most from shared wiring and health reporting.
A typical mapping quadcopter, for example, might run PWM to the ESCs and DroneCAN for the GPS and compass. A fixed-wing survey plane often adds an airspeed sensor on the same DroneCAN bus. Cables for both systems are covered in more detail in Pixhawk cables and ports explained.
When to Choose Which
Pick PWM when a device only needs a simple command and does not need to report back, or when the part you bought simply does not support anything else. Pick DroneCAN when you are adding several sensors, when wiring length or noise is a concern, or when you want the flight controller to see live health data from GPS, power and airspeed sensors.
For a beginner build with a handful of parts, PWM is often fine and simpler to understand. For a mapping drone, long-range plane, or any aircraft where reliability matters, DroneCAN is worth the extra setup time.