Lightweight open vehicle bus standard for aerospace and robotic applications.

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

UAVCAN is 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 from the official website at


  • Democratic network – no bus master, no single point of failure.
  • Publish/subscribe and request/response (RPC) data exchange semantics.
  • Efficient exchange of large data structures with automatic decomposition and reassembly.
  • Lightweight, deterministic, easy to implement, and easy to validate.
  • Suitable for deeply embedded, resource constrained, hard real-time systems.
  • Supports dual and triply modular redundant transports.
  • Supports high-precision network-wide time synchronization.
  • The specification and high quality reference implementations in popular programming languages are free, open source, and available for commercial use (MIT license).

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.
  • - highly robust multipurpose implementation in the Rust programming language.

Application domains

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

Related announcements and discussions


why my model is numbers? can I mae text? or make stuff like the end picture? thank you!!! 2.jpg1178x742 126 KB 参考.jpg816x742 111 KB…

Simpler and better DSDL versioning

Simpler and better DSDL versioning I think this suggestion also is the best of both when it comes to code compatibility vs fixing field names and layout Summary Instead of versioning DSDL types individually we version the namespace as a whole. Rules to make this work better than the alternative w…

UAVCAN c library for C2000 microcontrollers

Hi. Is there any attempts to implement UAVCAN protocol on TI C2000 microcontrollers, where minimum data size is 2 bytes?…


Hello, we want to modify slightly the uavcan so that it could be compatible with the VESC CAN protocol. How should we proceed thanks An other solution would be to take an orel20 or a Myxa but it’s not powerful enough for our application. we need 12s and 1500W…

Uavcan batterymonitor

Here is thing that I want to built a UAVCAN BatteryMonitor connected with my pixhawk. I think it must be a cool think cause GPS and ESC and BattMonitor . these three of them is a important part for every drone . for now ESC and GPS is done . the only thing left is BatteryMonitor . Image that a…

Virtual can and processes

Hi! This is the first time using virtual can on linux machine to test without using multiple HW for my applciations. What I have done is: Crated a virtual can interface, i.e. vcan0 according to sudo modprobe vcan sudo ip link add dev vcan0 type vcan sudo ip link set up vcan0 Lanch a linux a…

Using void in nested unions

Hi! I have the following situation: # Service type test.TypeA uint8 cmd_code --- uint8 resp_code # Proper to add void4 here? TypeB Payload # Nested type test.TypeB # Adding void here is not allowed, compile error, hence the union @union uint8 x TypeC foo TypeC bar uint8…

On standards and regulation

Moving this discussion here as it turned out to be a serious sticking point: Before we begin, let me make sure we are all on the same page. What is currently written in the proposed spec is that DSDL type definitions can have fix…

Some UAVCAN hardware from jDrones

jDrones are now manufacturing and selling some open source UAVCAN hardware originally developed by OlliW: Good to see things moving; although that makes me worried that every such development makes the upcoming push to v1.0 harder…

About the General category

Other topics that are not related to the development and usage of UAVCAN…