UAVcan for Teensy 3.x using Teensyduino/Arduino IDE
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

libuavcan-Teensy 3.x

Portable reference implementation of the UAVCAN protocol stack in C++ designed for use with Teensy 3.x series MCUs using the Arduino IDE with Teensduino.

UAVCAN is a lightweight protocol designed for reliable communication in aerospace and robotic applications via CAN bus.

The teensy driver and examples are taken from the UAVcan website and tum-phoenix ( and and modified appropriately.


Library usage

Copy the library into the Arduino libraries folder and run examples as you would normally using the Arduino IDE.


  • Python 2.7 or 3.3 or newer

Note that this reporitory includes Pyuavcan as a submodule. Such inclusion enables the library to be built even if pyuavcan is not installed in the system. The following components will be installed:

  • Libuavcan headers and the static library
  • Generated DSDL headers
  • Libuavcan DSDL compiler (a Python script named libuavcan_dsdlc)
  • Libuavcan DSDL compiler's support library (a Python package named libuavcan_dsdl_compiler)

Note that Pyuavcan (an implementation of UAVCAN in Python) will not be installed. You will need to install it separately if you intend to use the Libuavcan's DSDL compiler in your applications.


The driver is based on the Collins80 Flexcan library as modified in the thread found on this thread:

Issues resolved (history on getting this working)


9/2/2018 - Added a example of controlling a 2-axis Gimbal with a simpleBGC controller clone (2.4 firmware) along with a slightly modified version of Basecam's SBGC-API (added extra commands). Can be seen working on YouTube:

9/1/2018 - Merged development Branch into Master. The merge brings in tonton81's new and improbed IFCT CAN Library. It also updates examples to include how to use built in functions to send messages at a specific rate.