IMX6 Hummingboard - CAN bus

CAN Bus is only supported on Hummingboard Edge/Gate and MicroSom Rev. v1.4 and upper


A Controller Area Network (CAN bus) is a robust vehicle bus standard designed to allow microcontrollers and devices to communicate with each other in applications without a host computer. It is a message-based protocol, designed originally for multiplex electrical wiring within automobiles to save on copper, but is also used in many other contexts. (source

Hardware Modification


  1. Requires MicroSOM rev 1.4 and newer
  2. Requires Hummingboard Edge/Gate
  3. Overlaps with HDMI connector CEC function. So only this or the HDMI connector can be assembled

In order to get the canbus up and running, following hardware modifications need to be done:

  • Disassemble D5 and the HDMI connector
  • Assemble:
  • R54
  • R53
  • C100
  • U10003 (CAN transceiver , for example TJA1050)
  • R55
  • L12
  • L13
  • C101
  • C102
  • L13
  • J28

per the HummingBoard2 schematics: Hummingboard Documents

Software Modification

Device Tree Changes

Edit following lines in the Device tree

(Re-)Compile DeviceTree

Generically speaking, the raw .dts files can be compiled into .dtb using the device-tree-compiler dtc. The most straightforward way to invoke it is by configuring the linux kernel tree, and then running

make dtbs

The kernel-tree needs to be configured first. Please refer to IMX6 Kernel for generic instructions, or consult the distro documentation

DTB files can also be de- and recompiled. Consult the manpage of dtc for additional information.

(Re-)Compile Linux Kernel

Either recompile linux kernel with config :


or activate modules:

modprobe can
modprobe flexcan
modprobe can-dev
modprobe can-raw

Test CanBUS

Enable device can0:

ip link set can0 up type can bitrate xxxxxx 



ip -details link show can0

The easiest way to test the CanBUS is to use the CAN-Utils, which are available for Debain/Ubuntu etc.

Example commands:


cansend can0


candump can0