devmaker.net
start/ 3d-druck/ klipper-firmware-update-schritt-fur-schritt-an-1
3D Druck

Klipper Firmware Update – Schritt-für-Schritt-Anleitung (2026)

Ein Klipper-Update klingt einfach – bis man merkt, dass alle MCUs exakt dieselbe Firmware-Version brauchen und ein falscher Bootloader-Offset das Board unbootbar macht. Diese Anleitung zeigt den vollständigen Update-Ablauf für ein typisches Multi-MCU-Setup: BTT Octopus Pro via SD-Karte, BTT Eddy USB im Boot-Modus, CAN-Bus-Toolboard und den Raspberry Pi als Linux-Prozess. Inklusive menuconfig-Einstellungen, Fallback-Methoden und Checkliste nach dem Flashen.

Harry_im_Homelab31 (Portrait)
Harald
2026-04-02 · ~20 Min. Lesezeit
Octopus Board
Klipper-Firmware auf allen Komponenten aktualisieren

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)
Andere Hardware?

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

bash
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.

bash
cd ~/klipper
make menuconfig

menuconfig-Einstellung:

  • Micro-controller Architecture: Linux process

Das ist die einzige Option – es gibt hier keine weiteren Untermenüs. Bestätigen und speichern.

bash
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.

Anzeige · Affiliate-Link – kaufst du darüber, erhalte ich ggf. eine Provision. Für dich ändert sich am Preis nichts.

2.1 menuconfig konfigurieren

bash
cd ~/klipper
make menuconfig

menuconfig-Einstellungen im Detail:

  • 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)

bash
make clean && make

Die fertige Firmware liegt unter out/klipper.bin.

Flash-Vorgang:

  1. out/klipper.bin vom Pi auf deinen PC kopieren (z. B. per SCP/SFTP).
  2. Die Datei in firmware.bin umbenennen – der Name ist wichtig!
  3. Auf eine FAT32-formatierte SD-Karte kopieren (max. 32 GB empfohlen).
  4. SD-Karte in den Slot am Octopus stecken.
  5. Reset-Knopf am Board drücken (oder Stromversorgung kurz trennen).
  6. 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 kannst du 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.

Anzeige · Affiliate-Link – kaufst du darüber, erhalte ich ggf. eine Provision. Für dich ändert sich am Preis nichts.

3.1 menuconfig konfigurieren

bash
cd ~/klipper
make menuconfig

menuconfig-Einstellungen im Detail:

  • Micro-controller Architecture: Raspberry Pi RP2040 – der Chip im Eddy (und vielen anderen Boards wie 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
  • 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

bash
make clean && make

Boot-Modus aktivieren:

  1. USB-Kabel vom Eddy trennen (oder am Pi abziehen).
  2. Boot-Knopf am Eddy gedrückt halten.
  3. USB-Kabel wieder einstecken (Knopf weiter halten).
  4. Knopf loslassen – der Eddy meldet sich jetzt als USB-Bootloader-Device.
bash
make flash FLASH_DEVICE=2e8a:0003

Die ID 2e8a:0003 ist die USB-ID des RP2040 im Boot-Modus. Falls unsicher:

bash
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

bash
cd ~/klipper
make menuconfig

menuconfig-Einstellungen im Detail:

  • Micro-controller Architecture: STMicroelectronics STM32
  • Processor model: STM32G0B1 – der Chip auf dem Toolboard. Ältere Versionen ggf. STM32F072
  • Bootloader offset: No 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 – muss auf allen CAN-Teilnehmern identisch sein! Übliche Werte: 250000, 500000, 1000000
Falsche CAN-Pins sind der häufigste Fehler

CAN-Pins häufiger Boards: BTT EBB36/42 v1.2 & SB2209 = PB0/PB1; Mellow FLY-SB2040 nutzt RP2040 mit eigener CAN-Konfiguration. Immer die Pin-Belegung der konkreten Board-Revision prüfen. Alle Geräte am CAN-Bus müssen dieselbe Bitrate verwenden (Toolboard, can0 am Pi, ggf. CAN-Bridge). Typisch 500000 oder 1000000.

4.2 Kompilieren und flashen

bash
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:

  1. CAN-Kabel vom Toolboard trennen.
  2. USB-Kabel zwischen Toolboard und Pi anschließen.
  3. Serial-ID ermitteln:
bash
ls /dev/serial/by-id/*

Beispielausgabe:

bash
/dev/serial/by-id/usb-Klipper_stm32g0b1xx_12345678-if00

Flashen, dann USB trennen und CAN-Kabel wieder anschließen:

bash
make flash FLASH_DEVICE=/dev/serial/by-id/usb-Klipper_stm32g0b1xx_DEINE_ID

Alternativ: Flash über CAN (mit Katapult/CanBoot-Bootloader). Falls Katapult auf dem Toolboard installiert ist, kannst du direkt über den CAN-Bus flashen:

bash
python3 ~/katapult/scripts/flash_can.py -i can0 -u DEINE_CAN_UUID -f ~/klipper/out/klipper.bin

Die CAN-UUID findest du mit:

bash
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0

Zusammenfassung: Beispiel-Setup

KomponenteChipVerbindungIdentifikation
BTT Octopus ProSTM32F429USB/dev/serial/by-id/usb-Klipper_stm32f429xx_…
BTT Eddy USBRP2040USB/dev/serial/by-id/usb-Klipper_rp2040_…
Toolboard (EBB/SB)STM32G0B1CAN (1M)UUID (z. B. 5e654f097xxx)
Raspberry PiLinuxInternn/a

Checkliste nach dem Flashen

1. Klipper-Dienst starten

bash
sudo service klipper start

2. Firmware-Versionen prüfen

Öffne Mainsail oder FluiddMachineSystem Information. Alle MCUs müssen die identische Versionskennung anzeigen, z. B.:

text
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

bash
ip -details link show can0

Erwartete Ausgabe (gekürzt):

text
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:

bash
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:

bash
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:

bash
PROBE_CALIBRATE
BED_MESH_CALIBRATE

Fehlerbehebung

ProblemUrsacheLösung
„Protocol Error” nach UpdateFirmware-Versionen stimmen nicht übereinAlle MCUs auf identische Version flashen
CAN-Toolboard antwortet nichtBitrate stimmt nicht oder Interface ist downip link show can0 prüfen, Bitrate vergleichen
SD-Karte: Datei bleibt firmware.binBoard hat nicht geflashtAndere SD-Karte, FAT32 formatieren, Reset erneut drücken
make flash am RP2040 schlägt fehlBoot-Modus nicht aktivKnopf beim Einstecken gedrückt halten, lsusb prüfen
Toolboard via USB: „No device found”Falscher Device-Pfadls /dev/serial/by-id/* prüfen, USB-Kabel testen
Eddy liefert falsche WerteKalibrierung fehltPROBE_CALIBRATE und Eddy-Kalibrierung neu durchführen

menuconfig Kurzreferenz

Zur schnellen Übersicht – alle vier Konfigurationen auf einen Blick:

text
# 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!

// verwandte beiträge

> echo "your thoughts" >> klipper-firmware-update-schritt-fur-schritt-an-1.responses

Schreibe einen Kommentar

Wird für die Bestätigung benötigt