Octopus with canbus on klipper+mainsail, can't get it to run

Basic Information:

Printer Model: Voron 2.4
MCU / Printerboard: Ubuntu, but on testing a pi4
MCU / Printerboard: BTT Octopus F429
MCU / Printerboard: BTT SB2209

Describe your issue:

Can’t get the canbus to work.

What is done:

I followed this video: Canbus SB2240 and SB2209 3D printer Install, Thoughts & Tips from BigTreeTech (BTT) - YouTube
Flashed the U2C without problems. Also got the SB2209 flashed.

Then the video stops with the software and goes into the printer.cfg
But the octopus also needs the canbus firmware, right?

Also the printer.cfg i don’t know where they got al the settings from.
I find a .cfg for canbus, on klipper config, but that is missing the stepper settings. When going to the octopus.cfg, then is misses the canbus settings.

Tried to google and search, but untill now i can’t find a good step by step instruction what to do.

Where i am now in the install:

Got the UUID canbus number for the config.
But the config also needs the serial path. When i connect the octupus to my pc i can use the “ls /dev/serial/by-id/*” command and i get the correct information.
Copied that to the printer.cfg under [MCU], save and restart. And then i get an error from klipper “Option ‘serial’ in section ‘mcu’ must be specified”.

What do i look for:

A step by step manual for canbus.
I have found different versions. But some are not complete or uses different hardware.
Hopefully somebody has a great url link, where to find these step by step instructions

Do searches here for NAPCAL (he knows CAN concerning Klipper) posts, or ask him.

Good luck, hcet14

You should take a look at using bridge mode in Klipper which removes the need for the U2C. I believe that using U2C you should see the can controller(s) show up in the /dev/serial/by-id as separate entries. You should also see the utoc in the output of lsusb command.

https://www.klipper3d.org/CANBUS.html?h=brid#usb-to-can-bus-bridge-mode
In my configuration (bridge mode) here is what is in my configuration…

[mcu]
#Octopus V1.0 MCU
canbus_uuid:75c1a891d1c5

#Fly SB2040
[mcu sb2040]
canbus_uuid: 99603ef9048b

1 Like

The problem is that i don’t exactly know what i am doing, because i can’t find a good manual for octopus with sb2209. For example, the cfg files, is there one compleet version or must i use multi and include them. But when doing that i have multi extruder settings in the cfg.

What i have now:
Octopus board is with usb connected to the pi. And in the cfg i put the serial.
The sb2209 is connected to the u2c and the u2c is connected to the pi. And in and other cfg i put the canbus id.

Now i get ADC out of range.
But the sensor is connected and tested on an other printer. That is fine. But i don’t thrust my cfg files.

I just was hoping there is a manual step by step what to do and test before going to the next step.

It was not a fun thing to do, to make everything work with canbus.
Like written, with all the information on the web, i got lost. To much information.
After flashing the boards multi time and step by step to know what i am doing, i got it working.

I first got it to work with the SB2209 connected to the U2C.
Got a nice UUID. Then went to mainsail, also there i couldn’t find a good instruction what to do with the cfg files. I made 3 of them.

  • printer.cfg = the default mainsail config + include sb2209.cfg and octopus.cfg
  • sb2209.cfg = the canbus settings for the sb2209 board
  • octopus.cfg = the setting for the octopus board

If i did it correct i don’t know, but it worked.

The only thing i don’t know is why the u2c board is designed.
I used the board to get the sb2209 to work. But on the BTT website, they plug in the octopus usb-c to the usb-a from the u2c. Only the usb-a on the u2c is not a usb device, it is a canbus. When connecting the octopus to it in serial mode, it doesn’t work, no communication. Then i flashed the octopus with canboot. Then i got also for the octopus an UUID. But still, when connected to the U2C it didn’t work. I only saw the SB2209. Connected the RJ11 to the U2C, still not working.
Then i removed the U2C and connected the SB2209 to the RJ11 from the octopus. Now i got 2 UUID number. Programmed them in mainsail. Tested the temperature sensor from both boards (octopus and SB2209), both work. The canbus is sending/receiving data.

But still, don’t know what to do with the U2C.
It works now, but strange that it is completly different from what BTT shows

Did some more testing. Noticed a problem when doing a restart of the system.
I want to run on a ubuntu system, maybe that is the problem, but maybe somebody knows what is going on.

When i do a restart of the system. The klipper services stays dead.
I need to unplug the usb-canbus. Then klipper services automatically starts and i can plug back the usb-canbus.

There is something the klipper services doesn’t like, when the usb-canbus is connected and there is a start/reboot of the ubuntu machine.

Any thoughts?

I couldn’t find a solution, went for the dirty way.

Made a shell script that disables the canbus for 2 seconds. It is enough that klipper.service will start and everything works after that.

I somebody knows why the canbus is the problem on a ubuntu startup, please let me know