Lightweight data bus standard for reliable communication in aerospace and robotic applications via CAN bus.

Zubax Robotics is the main developer and maintainer of UAVCAN — an open data bus standard designed for aerospace and robotic applications.

UAVCAN is now an integral part of the Dronecode core infrastructure (the DroneCode project is maintained by The Linux Foundation) and is used by numerous vendors and companies all over the world.

Learn more at, and consider subscribing to the mailing list.


  • Democratic network - no single point of failure.
  • Publish/subscribe or request/response exchange semantics.
  • Allows efficient exchange of large data structures.
  • Lightweight, easy to implement protocol.
  • Supports network-wide time synchronization with microsecond precision.
  • Doubly- or triply- redundant CAN bus.
  • Can be used in deeply embedded, resource constrained, hard real-time systems.
  • The specification and the high quality reference implementations are open and free to use.

Software libraries

  • Libuavcan - full-featured, highly robust implementation in C++ for embedded systems and Linux.
  • Libcanard - lightweight implementation in C for deeply embedded systems.
  • Pyuavcan - general-purpose, easy to use Python implementation.

Application domains

  • Manned and unmanned aircraft.
  • Spacecraft.
  • Robots.

Related announcements and discussions

Getting started with UAVCAN CANARD.

There is a LOT of information about the CAN bus. As I'm just getting started, (several days) I'm still a little dizzy from all the information. I am starting with CANARD, which is a little lighter. I have it loaded and it compiles. (Replaced CANARD_ASSERT because it calls _abort() which gives m…

Anonymous message and dynamic node ID allocation

Hey there, I am currently developing a CAN based protocol for energy management systems (Libre Solar project ) and I am glad I found the UAVCAN protocol spec. Thanks a lot for the great work and for making it open source. The usage of the CAN ID looks somewhat similar to…

DSDL compiler name space question

Hey Pavel, a very short question please, just to be sure With dsdl files stored in folders, which part of the full path name is used for determining the uavcan namespace (and therewith the signature)? I believe it climbs up until "dsdl_files" or similar, i.e. C:/Olli/dsdl_files/cool/…

Pixhawk - ESC/Servo's - UAVCAN GUI Tool

Hi, We enabled UAVCAN on the Pixhawk. Next step is to verify if the Pixhawk flight controller is sending servo/ESC information. We want to use the UAVCAN GUI Tool to check what ESC setpoints are being sent to the bus by the flight controller. For some reason w…

Evaluating the efficiency of a sensorless propeller drive using UAVCAN GUI Tool

This video shows how the UAVCAN GUI Tool can be applied to evaluate the efficiency of a sensorless propeller drive (or any other kind of drive that can be controlled via UAVCAN). The video features the following products and instruments: UAVCAN GUI Tool version 0.9 Zubax Babel (USB-CAN adapter) …

CAN Servo compatibility Inquiry

What do you suppose the likelihood of these servos being compatible? Thanks, Craig…

Bus-off difference between STM32 drivers in libuavcan and libcanard

Hi Pavel, I am attempting to port the Zubax GNSS bootloader to a STM32F446 MCU as you mentioned over here . Everything compiles and runs however when attempting to send a firmware update over the CAN bus it fails every time. T…

UAVCAN integration with Particle Electron, Photon and Core (STM32F205 MCU)

Hey all, Has anyone has worked on a UAVCAN integration with the Particle Core? I am interested in doing this integration. has created IoT open source development platforms based off the Arduino and it uses the Wiring language for rapid firmware development. I want to connect my…

Adding peripheral interrupts, hardfaulting?

We are trying to make a uavcan adapter for another microprocessor. We have used theimar vector control as a guide to getting uavcan up and running. Currently we have uavcan working and can see can messages using the uavcan gui tool. We are now trying to get a serial port running on the STM32 so it…

UAVCAN for Hobbyists: Inaugural Release

Hey Folks there are already two UAVCAN for Hobbyists threads in this mailing list, full of questions which Pavel patiently answered. This third one here is about announcing that the project has reached some sort of practical usefulness: I have uploaded *release v0.19*, and created some info: *…