Skip to content

Mastering Klipper: Updating Deprecated Firmware on MCU and EBB

If you updated Klipper in Mainsail or Fluidd and suddenly see a warning about deprecated code on your MCU and EBB board, this guide is for you.

The short version: updating Klipper on the host does not automatically update firmware on your physical boards. You need to recompile and flash both your toolhead board and your mainboard so protocol versions stay in sync.

  • Host: BTT CB1 or Raspberry Pi
  • Mainboard: BTT Manta M8P V1.1
  • Toolhead board: EBB2209 CAN
  • CAN bootloader: Katapult (formerly CanBoot)

Klipper has two parts:

  • Host software running on Linux
  • Firmware running on each microcontroller board

When the host updates but board firmware stays old, Klipper reports protocol mismatch/deprecated code until everything is aligned.

  1. SSH into your host.
  2. Back up your current config files.
  3. Keep your current board UUIDs handy from printer.cfg.
  4. Have physical access to the toolhead board in case you need a reset.
Terminal window
cd ~/klipper
make menuconfig
make clean
make

In menuconfig, choose options that match your exact EBB model and bootloader settings.

Terminal window
sudo service klipper stop

Use your EBB UUID from printer.cfg. If needed, discover devices with canbus_query first.

Terminal window
python3 ~/klipper/scripts/canbus_query.py can0
python3 ~/katapult/scripts/flashtool.py -i can0 -u <your-ebb-uuid> -f ~/klipper/out/klipper.bin

If the board is not detected or flash fails, do a double-tap reset on the EBB to force bootloader mode, then rerun the flash command.

Phase 2: Update the Mainboard (BTT Manta M8P)

Section titled “Phase 2: Update the Mainboard (BTT Manta M8P)”

If your Manta is acting as a USB-to-CAN bridge, your menuconfig settings matter a lot. Wrong settings can break CAN communication.

Use this reference profile for M8P V1.1:

SettingSelection
Micro-controllerSTMicroelectronics STM32
Processor modelSTM32G0B1
Bootloader offset8KiB bootloader
Clock Reference8 MHz crystal
Communication interfaceUSB to CAN bus bridge (USB on PA11/PA12)
CAN bus interfaceCAN bus (on PD12/PD13)

Then compile and flash with your normal M8P method (SD card, DFU, or your existing maintenance workflow), and confirm the new firmware boots cleanly.

Start Klipper again:

Terminal window
sudo service klipper start

Then refresh Mainsail/Fluidd and confirm:

  • Deprecated code warnings are gone
  • MCU and CAN stats populate normally
  • No recurring protocol shutdown errors

If errors remain, verify USB/CAN visibility from the host:

Terminal window
lsusb

If you repeatedly see protocol shutdowns or flash instability even after clean reflashes and reset attempts, hardware failure is possible (especially from heat/stress over time).

Potential replacement paths:

If this walkthrough helped, save it in your printer maintenance notes so the next Klipper update cycle takes minutes instead of hours.