CAN BUS Shield for Raspberry Canberry V 2.1 Isolated

CanBerry Pi V 2.1 is CAN BUS Shield for RaspBerry Pi. It is an Open Hardware Design. It has two functionalities: a can bus module and an onboard Real Time clock powered by a 12 mm battery. The CanBus is based on MCP2515 SPI controller and the MCP2551 tranceiver for normal Can Bus, or a ISO1050 to isolate the bus. The new transceiver is placed into an isolated galvanic area. All functionalities are full integrated in standard linux kernel, so, they can be avaible on fly, or at last recompiling linux kernel to add canbus functionalities. The real time clock is based on DS3231 with internal oscillator I2C controller. It is full compatible with linux too. Using I2C Kernel module, and standard kernel functions, date and hour can be set/get by simple commands. On the bottom side is located an on board battery to guarantee a data autonomy. In chapter hardware there are all informations on principal components, schematics to rebuild and modify RaspBerry PI board. The new board is desaigned with the Raspberry Hat specification. There are four fixing holes and the hardware identification EEPROM (Blank Memory not mounted).
If you have a RPI A or B see the Canberry V1.1 web page.

Download ready to use ISOs (kernel 4.1.7+ for Rpi B2 and B+ , kernel 3.12.28+ for Rpi 1or kernel 3.18.7-v7 for Rpi B+2)

There is an important difference with V1.1, the MCP2515 interrupt is connected on GPIO22-PIN15 instead of GPIO25-PIN22. If your ISO works with boards like Canberry 1.1 or PiCan, you must redefine the interrupt pin, to use candump.

Edit /boot/config.txt modify the following row

in this way


The MCP2515 interrupt pin on Canberry V 2.1.2 is connected for default to GPIO22, but if you want to use the GPIO25 it is possible to cut the track on jumper SJ2 and solder the SJ3.

CanBerry PI 2.1 is composed by three blocks: a CanBus Module Normal, a CanBus transceiver Isolated and a Real Time Clock. The ISO1050DUB is an isolated transceiver with an insulation of 2500 Vrms. A double zener PESD1CAN is inserted to increase the bus protection. It is power supplied by an isolated R1SE-0505 or a 2 way therminal screw block. The first solution is more compact than the second, but it has an inferior insulation grade. The R1SE has an insulation of 1kVDC, but for a better protection it’s possible to use an external power supply. The SMD Jumper JP2 must be used to connect the RTC Int pin to Raspberry GPIO7. MCP2515 is a stand alone SPI canbus controller full integrated in linux kernel. At the start, the driver was implemented as a block device. Recently it is assumed to be a network module into the kernel. It is supplied by 3.3V from raspberry connector. MCP2551 is supplied by 5V from Raspberry connector insted. So, to match voltage physical level between the two chips, a voltage matching made by R3 and R4 has been used. The SMD Jumper JP3 must be used for the first and the last device of CAN Bus, this jumper provides the 120 ohm termination.

Canberry V2.1 Normal is out of production, you can buy the CanberryDual V2.1 Single Channel at the same price.

Canberry V2.1 Top view with DC-DC

Canberry V2.1 Topview with DC-DC

Canberry V2.1 Bottom view with DC-DC

Canberry V2.1 Bottom with DC-DC

Canberry V2.1 Top view without DC-DC


Canberry V2.1 Bottom view without DC-DC


The first pin of connector X1 ( Green Screw Terminal Block) on the left of Ethernet is GND, the second is CANL and the third is CANH.

It’s possible to insert the Raspberry with our Canberry into a Phoenix din enclosure (RPI-BC 107,6 DEV-KIT KMGY – 2202874).

Industrial enclosure canberry

Canberry 2.1 Eagle Cad files

CanBerry V2.1 Datasheet

Canberry with LabView

CanBerry with Codesys

Canberry 2.1_sch

How to prepare a SD Card with CAN kernel modules (only for expert Linux users).
Procedure tested on Raspberry B Rev 1, B Rev 2 and B+ Rev1.

Download Wheezy Raspbian 2014-09-09, but no kernel update is necessary, you must use the version 3.12.28+

After your raspberry has been booted, go to home directory:

cd /home/pi/

add these lines to the script

insmod /lib/modules/3.12.28+/kernel/drivers/spi/spi-bcm2708.ko
insmod /lib/modules/3.12.28+/kernel/net/can/can.ko
insmod /lib/modules/3.12.28+/kernel/drivers/net/can/can-dev.ko
insmod /lib/modules/3.12.28+/kernel/net/can/can-raw.ko
insmod /lib/modules/3.12.28+/kernel/net/can/can-bcm.ko
insmod /lib/modules/3.12.28+/extra/spi-config.ko devices=\bus=0:cs=0:modalias=mcp2515:speed=10000000: gpioirq=25:pd=20:pds32-0=16000000:pdu32-4=0X2002:force_release
insmod /lib/modules/3.12.28+/kernel/drivers/net/can/mcp251x.ko
ip link set can0 up type can bitrate 1000000

Run the script:

sudo sh

So the system is ready, then you can use standard canbus command to use the peripheral:

candump can0 -> to monitoring can bus traffic

cansend can0 7DF#0201050000000000 -> to send canbus commands

How to use masks and filters on MCP2515

Or read the following guide

For skilled linux users it’s possible to read this guide ( ) to prepare the ISO by yourself.

How to use RTC DS1307Z (DS3231)

Interesting project with Canberry Project MPi3

Certification Disclaimer


      1. I followed the entire procedure but i receive the error “cannot find device can0”, any suggestion?

        1. The guide on this page is old. If you want to use a newer Linux Kernel following the guide on CANBERRY Dual or CANBERRY Dual ISO.

  1. I follow all the step ,but when I run the command “sudo sh” i receive some error :
    1)insmod: ERROR: could not load module /lib/3.12.28+/kernel/drivers/spi/sp :no such file or directory
    2)insmod: ERROR: could not load module /lib/3.12.28+/kernel/net/can/can.ko :no such file or directory
    The same error repeats for all command.
    Can you help me?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.