Voron 2.4 r2 CAN bus not working

Basic Information:

Printer Model: Voron 2.4
MCU / Printerboard: Octopus V1.1

klippy.log (656.4 KB)

I am struggling for a week now to get CAN Bus running on my Voron.
I am using an Octopus board and a Rpi 4 with mainsail installed and a BTT U2C V2.1 as a CAN Bridge. Also I want to use the SB2209 V1.0 as toolhead board

First I was installing klipper on my Octopus. With only the Octopus connected to the pi the connection could be established to the mcu and I was able to obtain the serial by the command ls /dev/serial/by-id.
I configured Klipper following the original configuration on the voron doc.

After that I connected the U2C board to the pi and the Octopus to the U2C’s USB.
For configuring the U2C I found several instructions pointing out to use either Candlelight firmware from a BTT fork or Klipper USB-to-CAN bus bridge.
Am I right that you have to use only one of the options?

So I was trying both ways but none of them worked for me.

I was following these instructions on

Flashed Candlelight and changed the can interface to

auto can0
iface can0 can static
    bitrate 500000
    up ifconfig $IFACE txqueuelen 128

After rebooting everything I get the error that klipper is unable to connect to the mcu.
If I check the usb devices with sudo dmesg -w I can see the U2C when unplugging and replugging.

I configured klipper like the following:

  • Enable extra low-level configuration options: check
  • Micro-controller Architecture: STMicroelectronics STM32
  • Processor model: STM32G0B1
  • Bootloader offset: 8KiB bootloader
  • Clock Reference: 8 MHz crystal
  • Communication interface: USB to CAN bus bridge (USB on PA11/PA12)
  • CAN bus interface: CAN bus (on PB8/PB9)
  • CAN bus speed: 500000

For the Can bus interface I tried also * CAN bus interface: CAN bus (on PB5/PB6). But that didn’t make any difference.
After rebooting I still get the error unable to connect to mcu.
With klipper installed dmesg doesn’t show anything.

In both cases if I try to obtain the serial I only get the message “No such file or directory”.

I was also trying different can bus bitrates: 1000k, 500k
I even tried using a Pi3 and redoing the whole installation.
Nothing changes.

I hope somebody has a hint what I’m doing wrong.
Thanks in advance!

When attached to CAN, the serial will not be listed with the USB devices. You need the CAN UUID instead.

@Arakon His Octopus is still USB connected so it stays like that.

If he would use the octo as a usb-can bridge he need to switch to uuids.

@thrymir You are using the wrong can port on the EBB. edit: U2C → PB5/6

Please refer to the newer (I still need to update it to katapult and 1M can speed) guide:

Both candlelight or klipper usb-can bridge work on the U2C.
You could also ditch the U2C competely and use the CAN header of your octopus but this guide is not published yet.

Thanks for the replies so far.

@Arakon I was assuming that too, as it’s still connected via USB.

@docgalaxyblock I’m not sure what you mean by the wrong can port on the EBB?
In the printer.cfg or in menuconfig?
Before the EBB SB2209 wasn’t connected/configured.

I was using your newer guide to reinstall Candlelight on the U2C and configure the EBB SB. I can see then the Can UUID of the EBB.
With klipper usb-can bridge on the U2C I can even see both UUIDs.
Anyhow the MCU is still unable to connect with both options.

If I’m connecting the Octopus via USB directly to the pi the MCU is connected but I don’t think this is correct. At least every documentation states the wiring like I did it in the first place. In addition klipper is shutting down due to the EBB ADC out of range.

Am I correct that klipper configuration of the Octopus stays untouched unless I want to ditch the U2C and use it in bridge mode?

sry - I meant the U2C PB5/6 is the right port for an bridge mode U2C

100% correct

Then your setup works

ADC out of range is an epected error if no thermistor is connected

Ok then I got that correct with PB5/6.

I got the setup running now with Canboot & U2C in bridge mode with 1M bitrate according to your guide.
The problem which was quite confusing for me is that the wiring in the BTT U2C user manual didn’t work. See the screenshot from the manual attached.
Instead of wiring the Octopus to the U2C I connected it directly to the pi and then it works.
I’m not sure if this is just a problem with my board or if the manual is incorrect/for another setup.

Thanks a lot for your help!

PS: If someone is struggling with the ADC out of range problem: The dip switches on the EBB were set to the wrong sensor type. See the documentation.

Cause the manual picture also shows a full CAN setup. BTT pushes CAN RX/TX over that (physical) USB port.

For new users totally suboptimal since they think “Hey it’s USB” …