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.
Hardware in This Walkthrough
Section titled “Hardware in This Walkthrough”- Host: BTT CB1 or Raspberry Pi
- Mainboard: BTT Manta M8P V1.1
- Toolhead board: EBB2209 CAN
- CAN bootloader: Katapult (formerly CanBoot)
Why the Warning Happens
Section titled “Why the Warning Happens”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.
Before You Start
Section titled “Before You Start”- SSH into your host.
- Back up your current config files.
- Keep your current board UUIDs handy from printer.cfg.
- Have physical access to the toolhead board in case you need a reset.
Phase 1: Update the EBB Toolhead (CAN)
Section titled “Phase 1: Update the EBB Toolhead (CAN)”1. Build Klipper Firmware for the EBB
Section titled “1. Build Klipper Firmware for the EBB”cd ~/klippermake menuconfigmake cleanmakeIn menuconfig, choose options that match your exact EBB model and bootloader settings.
2. Stop Klipper Before Flashing
Section titled “2. Stop Klipper Before Flashing”sudo service klipper stop3. Flash Over CAN
Section titled “3. Flash Over CAN”Use your EBB UUID from printer.cfg. If needed, discover devices with canbus_query first.
python3 ~/klipper/scripts/canbus_query.py can0python3 ~/katapult/scripts/flashtool.py -i can0 -u <your-ebb-uuid> -f ~/klipper/out/klipper.binIf 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:
| Setting | Selection |
|---|---|
| Micro-controller | 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 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.
Verify Everything
Section titled “Verify Everything”Start Klipper again:
sudo service klipper startThen 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:
lsusbWhen It Is Not Firmware Anymore
Section titled “When It Is Not Firmware Anymore”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:
- EBB2209 CAN Board: go.minimal3dp.com/ebb-can
- BTT Manta M8P V2.0: go.minimal3dp.com/btt-manta
Related Tools
Section titled “Related Tools”- FDM Cost Calculator: estimate the real cost of maintenance downtime
- Rotation Distance Calculator: recalibrate motion after firmware work
Watch the Full Video
Section titled “Watch the Full Video”If this walkthrough helped, save it in your printer maintenance notes so the next Klipper update cycle takes minutes instead of hours.