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

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: *…

Fwd: Uavcan in Rust

---------- Forwarded message --------- From: Kjetil Kjeka Date: søn. 6. aug. 2017 kl. 13:14 Subject: Re: Uavcan in Rust To: Pavel Kirienko Cc: Hi Pavel, Thank you for the thorough response! I'm very excited to hear that…

UAVCAN GUI Tool show name of nodes in in "Online Nodes"-View

Hi, The "Online Nodes" view is a column with the caption "name" visible. Is this column fill out by values which comes form the bus or is here a file in the backround? Regards Bernhard…

float16 for 8bit Controller

Hi, I implement the "simple sample" on a small STM8 Controller for Send data types oder 1110 messages. But ich have a Problem with float16 Format. The function in the "simple sample " dosn't work on 8bit. I found a lot of Infos about float16 numbers. Miniformat with 16 bits hast other names…

Re: UAVCAN airspeed sensor project

Question regarding NoteStatus 341

Hi, Ist will start with UAVCA but with the first message ich have already a Problem. I will develop a simple temperature sensor with a Stm8 Prozessor. I found in the Document "List of standard data types" the following fields for the NoteStatus 341. -uint16 MAX_BROADCASTING_PERIOD_MS = 1000…