CanBoot with USB to canbus bridge

Only if you set Katapult (CanBoot) for USB and not CAN bus since you will use the Klipper USB to CAN bus bridge, and the CAN bus will not be functioning until you get the Klipper firmware up and running.

If you set Katapult for CAN bus with no Klipper firmware (bridge), then there is no CAN bus, so you cannot connect to Katapult.

Using dfu-util, you can load Katapult, then load Klipper into its offset and be up and running quickly.

If you are flashing a lot of tool boards with the same firmware (Katapult & Klipper), this can be done with STM32CubeProgramer doing almost the same by loading Katapult.bin and then Klipper.bin into its offset. Select wipe & Auto, then plug in a board in DFU mode; it will detect it, wipe, load, and then wait until it detects a board in DFU on the USB port. You unplug the loaded board and plug in the next one in DFU mode, repeat until done with the boards.


I’ve some trouble with another one of my mks_skipr boards - I can’t enter the DFU Mode. So I have to flash the canboot and klipper with ST-Link. But I don’t know, which configuration is right in STM32CubeProgramer (the addresses). Could anybody help?

When you run make menuconfig for Katapult and set the processor then bootloader offset will be your only options, write them down and then check the same for Klipper and just find a match.

If you set up Katapult for USB, and Klipper for USB to CAN, it is possible to use the bootloader for flashing. It just requires two steps instead of one. I prefer this because entering DFU requires physical access which is a pain. I generally flash the bootloader, then use flash_can to flash Klipper and make sure everything is working so I never need to touch the board again. Just my preference.

This was discussed a year ago by Kevin, but I don’t think anyone has taken on the task of automating this process so it can be done in a single step.

1 Like

For everyone using Katapult.
I only recommend DFU mode when initially getting Katapult on the board; after that, only if your board initially loses the ability to communicate.

To update Katapult, I use the depolyer option and use depolyer.bin instead of klipper.bin, this will load the Katapult update and also wipe the flash memory above Katapult for firmware loading.

With Katapult using the USB to communicate make sure to enable the double click reset to enter Katapult firmware loading mode.

Then load kipper.bin via the /dev/serial/by-id, make sure you have installed the Python serial before trying to update.

I recommend storing the /dev/serial/by-id for the boards Katapult as a comment in your printer.cfg

For tool boards I would suggest setting both Katapult and klipper to communicate via CAN bus