This guide covers updating Klipper firmware after a host update, focusing on the RP2040 toolhead first, then the Manta mainboard (USB-to-CAN bridge mode).
Stop Klipper:
sudo systemctl stop klipper
cd ~/klipper make menuconfig
make clean make
python3 ~/klipper/scripts/canbus_query.py can0 # or python3 ~/katapult/scripts/flashtool.py -i can0 -q # Force Katapult mode then flash python3 ~/katapult/scripts/flashtool.py -i can0 -r -u YOUR_EBB_UUID python3 ~/katapult/scripts/flashtool.py -i can0 -f ~/klipper/out/klipper.bin -u YOUR_EBB_UUID
Verify it shows Application: Klipper. Double-tap RESET on the EBB if it doesn't respond.
Check klippy.log or previous builds:
grep -iE "stm32|g0b1|h723" ~/printer_data/logs/klippy.log | tail -20
| Setting | V1.1 (G0B1) | V2.0 (H723) |
|---|---|---|
| Enable extra low-level options | [*] | [*] |
| Architecture | STM32 | STM32 |
| Processor | STM32G0B1 | STM32H723 |
| Bootloader offset | 8KiB | 128KiB |
| Clock | 8 MHz | 25 MHz |
| Communication | USB to CAN bus bridge (USB on PA11/PA12) | |
| CAN interface | PD12/PD13 | PD0/PD1 |
| CAN speed | 1000000 | |
cd ~/klipper make menuconfig # set the matching options above make clean make
lsusbLook for
0483:df11 STMicroelectronics STM Device in DFU Mode.make flash FLASH_DEVICE=0483:df11(The final "Error during download get_status" is normal.)
For V2.0 the application address is 0x08020000 (128 KiB offset). For V1.1 it is 0x08002000.
Rename klipper.bin to firmware.bin, copy to a FAT32 SD card, insert into the Manta, power cycle. The file should become FIRMWARE.CUR on success. This only works with BTT’s stock SD bootloader; if Katapult replaced it, use DFU or Katapult instead.
sudo systemctl start klipper
Firmware Restart in Mainsail/Fluidd. Confirm both MCUs no longer show the "old software" warning.
Guide compiled from practical Voron / BTT experience (Manta M8P V1.1/V2.0 + EBB SB2209 RP2040 CAN). Always match CAN bitrate across all nodes and ensure 120 Ω termination.