Klipper Firmware Update – Schritt-für-Schritt-Anleitung (2026)
Alle MCUs synchron flashen: Octopus Pro, Eddy, CAN-Toolboard und Raspberry Pi
Warum ein vollständiges Firmware-Update nötig ist
Klipper besteht aus mehreren Komponenten: der Host-Software auf dem Raspberry Pi und der Firmware auf jeder angeschlossenen MCU. Bei einem Update müssen alle MCUs exakt die gleiche Firmware-Version erhalten. Stimmen die Versionen nicht überein, quittiert Klipper den Dienst mit einem gefürchteten „Protocol Error”.
Diese Anleitung zeigt den kompletten Ablauf am Beispiel eines typischen Setups:
- Mainboard: BTT Octopus Pro (STM32F429) via USB
- Probe: BTT Eddy USB (RP2040) via USB
- Toolboard: EBB / SB2209 o. ä. (STM32G0B1) via CAN-Bus
- Host-MCU: Raspberry Pi (Linux process)
Tipp: Falls dein Setup andere Hardware nutzt, passe die Prozessor- und Interface-Einstellungen entsprechend an – die Grundstruktur bleibt identisch.
Schritt 1: Host-System (Raspberry Pi) aktualisieren
Bevor die Hardware geflasht wird, muss die Klipper-Software auf dem Pi aktuell sein. Immer zuerst den Host, dann die MCUs.
1.1 Klipper-Update einspielen
cd ~/klipper git pull sudo service klipper restart
1.2 Linux-MCU ([mcu rpi]) flashen
Viele Setups nutzen den Pi selbst als MCU – z. B. für ADXL345-Beschleunigungssensoren oder GPIO-Steuerung. Diese MCU muss ebenfalls neu kompiliert werden, sonst kommt es zum Protocol-Error.
cd ~/klipper make menuconfig
menuconfig-Einstellungen:
Einstellung Wert Micro-controller Architecture Linux process
Das ist die einzige Option – es gibt hier keine weiteren Untermenüs. Bestätigen und speichern.
make clean && make make flash
Der Pi flasht sich damit selbst. Kein Neustart nötig, Klipper wird automatisch die neue Version laden.
Schritt 2: Mainboard flashen (BTT Octopus Pro – STM32F429)
Das Octopus Pro ist per USB mit dem Pi verbunden. Es nutzt einen STM32F429-Chip mit 32 KiB Bootloader.
2.1 menuconfig konfigurieren
cd ~/klipper make menuconfig
menuconfig-Einstellungen im Detail:
Einstellung Wert Erklärung Micro-controller Architecture STMicroelectronics STM32 Die STM32-Familie von ST Processor model STM32F429 Der Chip auf dem Octopus Pro. Beim Octopus V1.1 wäre es z. B. STM32F446 Bootloader offset 32KiB bootloader Der Octopus Pro hat einen 32 KiB Bootloader. Falscher Offset = Board bootet nicht! Clock Reference 8 MHz crystal Externer Quarz auf dem Board. Manche Boards nutzen 12 MHz – Board-Dokumentation prüfen Communication interface USB (on PA11/PA12) Die USB-Pins des Octopus Pro. Andere Boards können andere Pins nutzen (z. B. PA9/PA10)
Warum ist der Bootloader-Offset wichtig? Der Bootloader belegt die ersten Bytes des Flash-Speichers. Klipper muss wissen, ab welcher Adresse die eigentliche Firmware beginnt. Ein falscher Offset überschreibt den Bootloader und das Board startet nicht mehr (Rettung dann nur per DFU oder ST-Link).
2.2 Kompilieren und flashen (SD-Karten-Methode)
make clean && make
Die fertige Firmware liegt unter out/klipper.bin.
Flash-Vorgang:
- out/klipper.bin vom Pi auf deinen PC kopieren (z. B. per SCP/SFTP).
- Die Datei in firmware.bin umbenennen – der Name ist wichtig!
- Auf eine FAT32-formatierte SD-Karte kopieren (max. 32 GB empfohlen).
- SD-Karte in den Slot am Octopus stecken.
- Reset-Knopf am Board drücken (oder Stromversorgung kurz trennen).
- Ca. 5 Sekunden warten, dann SD-Karte prüfen.
Erfolgskontrolle: Die Datei auf der SD-Karte heißt jetzt FIRMWARE.CUR statt firmware.bin. Das bestätigt, dass der Bootloader die Firmware geflasht hat.
Alternativ: Du kannst auch direkt per USB flashen, wenn du die serial-ID kennst: bash make flash FLASH_DEVICE=/dev/serial/by-id/usb-Klipper_stm32f429xx_... Die SD-Methode ist aber am zuverlässigsten und funktioniert auch bei korrupter Firmware.
Schritt 3: Probe flashen (BTT Eddy USB – RP2040)
Der BTT Eddy ist ein induktiver Probe mit eigenem RP2040-Chip und permanenter USB-Verbindung. Auch er braucht die passende Klipper-Firmware.
3.1 menuconfig konfigurieren
cd ~/klipper make menuconfig
menuconfig-Einstellungen im Detail:
Einstellung Wert Erklärung Micro-controller Architecture Raspberry Pi RP2040 Der Chip im Eddy (und vielen anderen Boards wie z. B. dem Pi Pico) Bootloader No bootloader Der RP2040 hat keinen permanenten Bootloader im klassischen Sinne – er wird im UF2-Boot-Modus geflasht Flash chip W25Q080 with generic 03h SPI Standard-Flash-Chip auf dem Eddy. Bei den meisten RP2040-Boards korrekt Communication interface USB Der Eddy hängt dauerhaft per USB am Pi
Warum „No bootloader”? Beim RP2040 wird die Firmware direkt in den Flash geschrieben. Der Boot-ROM des Chips übernimmt die Bootloader-Funktion – du musst nur den Boot-Modus manuell aktivieren.
3.2 Kompilieren und flashen
make clean && make
Boot-Modus aktivieren:
- USB-Kabel vom Eddy trennen (oder am Pi abziehen).
- Boot-Knopf am Eddy gedrückt halten.
- USB-Kabel wieder einstecken (Knopf weiter halten).
- Knopf loslassen – der Eddy meldet sich jetzt als USB-Bootloader-Device.
make flash FLASH_DEVICE=2e8a:0003
Die ID 2e8a:0003 ist die USB-ID des RP2040 im Boot-Modus. Falls unsicher:
lsusb | grep -i "2e8a"
Nach dem Flash startet der Eddy automatisch mit der neuen Firmware.
Schritt 4: Toolboard flashen (STM32G0B1 via CAN-Bus)
Das Toolboard (z. B. BTT EBB36/42, SB2209, Mellow FLY-SB2040) hängt am CAN-Bus. Hier muss die CAN-Bitrate exakt stimmen.
4.1 menuconfig konfigurieren
cd ~/klipper make menuconfig
menuconfig-Einstellungen im Detail:
Einstellung Wert Erklärung Micro-controller Architecture STMicroelectronics STM32 STM32-Familie Processor model STM32G0B1 Der Chip auf dem Toolboard. Beim EBB36 v1.2 z. B. auch STM32G0B1, ältere Versionen ggf. STM32F072 Bootloader offset No bootloader Kein separater Bootloader – Klipper wird direkt geflasht. Falls Katapult installiert ist: 8KiB bootloader Clock Reference 8 MHz crystal Standard bei den meisten STM32-Toolboards Communication interface CAN bus (on PB0/PB1) Die CAN-Pins des Toolboards. Unbedingt im Schaltplan prüfen – falsche Pins = keine Kommunikation CAN bus speed 1000000 Deine CAN-Bitrate. Muss auf allen CAN-Teilnehmern identisch sein! Übliche Werte: 250000, 500000, 1000000
CAN-Pins – häufige Boards: - BTT EBB36/42 v1.2: PB0/PB1 - BTT SB2209: PB0/PB1 - Mellow FLY-SB2040: Nutzt RP2040 mit eigener CAN-Konfiguration
Falsche Pins sind der häufigste Fehler beim CAN-Setup! Immer die Pin-Belegung des konkreten Board-Revisions prüfen.
Zur CAN-Bitrate: Alle Geräte am CAN-Bus müssen dieselbe Bitrate verwenden – das Toolboard, das Host-Interface (can0 am Pi) und ggf. ein CAN-Bridge-Board. Typische Werte sind 500000 (500k) oder 1000000 (1M). Höhere Bitraten erlauben mehr Durchsatz, erfordern aber kurze, sauber terminierte Leitungen.
4.2 Kompilieren und flashen
make clean && make
Empfohlen: Flash über USB (Rettungsweg)
Das Flashen über CAN funktioniert nicht immer zuverlässig – insbesondere ohne Katapult-Bootloader. Schließe das Toolboard daher einmalig per USB direkt an den Pi an:
- CAN-Kabel vom Toolboard trennen.
- USB-Kabel zwischen Toolboard und Pi anschließen.
- Serial-ID ermitteln:
ls /dev/serial/by-id/*
Beispielausgabe:
/dev/serial/by-id/usb-Klipper_stm32g0b1xx_12345678-if00
- Flashen:
make flash FLASH_DEVICE=/dev/serial/by-id/usb-Klipper_stm32g0b1xx_DEINE_ID
- USB-Kabel trennen, CAN-Kabel wieder anschließen.
Alternativ: Flash über CAN (mit Katapult/CanBoot-Bootloader)
Falls Katapult auf dem Toolboard installiert ist, kannst du direkt über den CAN-Bus flashen:
python3 ~/katapult/scripts/flash_can.py -i can0 -u DEINE_CAN_UUID -f ~/klipper/out/klipper.bin
Die CAN-UUID findest du mit:
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
Zusammenfassung: Beispiel-Setup
Komponente Chip Verbindung Identifikation BTT Octopus Pro STM32F429 USB /dev/serial/by-id/usb-Klipper_stm32f429xx_... BTT Eddy USB RP2040 USB /dev/serial/by-id/usb-Klipper_rp2040_... Toolboard (EBB/SB) STM32G0B1 CAN (1M) UUID (z. B. 5e654f097xxx) Raspberry Pi Linux Intern n/a
Checkliste nach dem Flashen
1. Klipper-Dienst starten
sudo service klipper start
2. Firmware-Versionen prüfen
Öffne Mainsail oder Fluidd → Machine → System Information. Alle MCUs müssen die identische Versionskennung anzeigen, z. B.:
mcu: Klipper v0.13.0-xxx mcu rpi: Klipper v0.13.0-xxx mcu EBBCan: Klipper v0.13.0-xxx mcu eddy: Klipper v0.13.0-xxx
Weicht eine Version ab, wurde diese MCU nicht korrekt geflasht.
3. CAN-Interface prüfen
ip -details link show can0
Erwartete Ausgabe:
can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP ... bitrate 1000000 sample-point 0.750
Falls can0 nicht aktiv ist, prüfe /etc/network/interfaces.d/can0:
allow-hotplug can0 iface can0 can static bitrate 1000000 up ifconfig $IFACE txqueuelen 1024
Passe die bitrate an dein Setup an und starte das Interface neu:
sudo ifdown can0 && sudo ifup can0
4. Homing-Test
Führe G28 (Home All) aus – Finger am Not-Aus! So prüfst du, ob Endstops und Probe korrekt arbeiten.
5. Probe-Kalibrierung
Nach einem Firmware-Update können sich Offsets minimal ändern. Führe die Kalibrierung erneut durch:
PROBE_CALIBRATE BED_MESH_CALIBRATE
Fehlerbehebung
Problem Ursache Lösung „Protocol Error” nach Update Firmware-Versionen stimmen nicht überein Alle MCUs auf identische Version flashen CAN-Toolboard antwortet nicht Bitrate stimmt nicht oder Interface ist down ip link show can0 prüfen, Bitrate vergleichen SD-Karte: Datei bleibt firmware.bin Board hat nicht geflasht Andere SD-Karte probieren, FAT32 formatieren, Reset erneut drücken make flash am RP2040 schlägt fehl Boot-Modus nicht aktiv Knopf beim Einstecken gedrückt halten, lsusb prüfen make flash am Toolboard via USB: „No device found” Falscher Device-Pfad ls /dev/serial/by-id/* erneut prüfen, USB-Kabel testen Eddy liefert nach Update falsche Werte Kalibrierung fehlt PROBE_CALIBRATE und ggf. Eddy-spezifische Kalibrierung neu durchführen
menuconfig Kurzreferenz
Zur schnellen Übersicht – alle vier Konfigurationen auf einen Blick:
Pi (Linux-MCU):
[*] Linux process
Octopus Pro (STM32F429):
[*] STMicroelectronics STM32 Processor: STM32F429 Bootloader: 32KiB bootloader Clock: 8 MHz crystal Interface: USB (on PA11/PA12)
Eddy USB (RP2040):
[*] Raspberry Pi RP2040 Bootloader: No bootloader Interface: USB
Toolboard CAN (STM32G0B1):
[*] STMicroelectronics STM32 Processor: STM32G0B1 Bootloader: No bootloader Interface: CAN bus (on PB0/PB1) CAN speed: 1000000
Wenn alle Firmware-Versionen in Mainsail/Fluidd grün und identisch sind, läuft dein Drucker wieder synchron. Viel Erfolg beim Update!