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

Zubax Robotics is the developer and the 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 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

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…

DSDL compiler signature issue

y Pavel, I'm sorry to bother you again, this was supposed to be 5 min job but at the moment looks like a night mare. I simply tried to get along with compiling DSDL definitions, mainly in order to get the signature and max bits for own definitions. As a start, I tried to generate t…

Reciprocating internal combustion engines

Hi subscribers, There is an ongoing effort to define a set of standard status messages for piston engines with electronic fuel injection system: Please review the proposition and leave feedback in the pull request. Pav…

UAVCAN Receive rate problem on Pixhawk

This is a cross post from px4users - apologies in advance if this is not allowed. We've implemented some custom UAVCan messages, but have an issue whereby it appears the messages are only received (or at least processed) at 1Hz, whereas the data is coming on on the bus at 10Hz (verified by 3rd…