gcode_shell_command auf dem Snapmaker U1: Shell-Befehle direkt aus Klipper-Makros

Wer den Snapmaker U1 mit der paxx12 Extended Firmware betreibt, hat schon jede Menge Klipper-Power unter der Haube. Aber standardmäßig bleibt alles innerhalb der Klipper-Welt – Temperaturen setzen, Motoren bewegen, Makros schreiben. Was aber, wenn ihr auf das Betriebssystem darunter zugreifen wollt? Eine Datei ändern, ein Script starten, ein System-Tool aufrufen?

Genau dafür gibt es gcode_shell_command – eine Klipper-Extension aus dem KIAUH-Projekt. Damit könnt ihr aus jedem Klipper-Makro heraus beliebige Shell-Befehle ausführen. Und in Kombination mit der paxx12 Firmware wird das richtig mächtig.

Was kann gcode_shell_command?

Ihr definiert in eurer Klipper-Config einen Shell-Befehl – also einen normalen Linux-Befehl wie sed, bash myscript.sh oder was auch immer. Diesen Befehl ruft ihr dann aus jedem Makro mit RUN_SHELL_COMMAND CMD=mein_befehl auf. Einfach, aber mächtig. Zum Beispiel:

  • Config-Dateien automatisch patchen
  • Scripts starten (z.B. für Filament-Handling)
  • Systeminfo abfragen
  • Den max_temp-Wert im Heizbett überschreiben

Installation auf dem Snapmaker U1

Die Extension besteht aus einer einzigen Python-Datei. Die landet in dem Ordner, wo Klipper seine Extras sucht:

curl -o /home/lava/klipper/klippy/extras/gcode_shell_command.py \
  "https://raw.githubusercontent.com/dw-0/kiauh/master/kiauh/extensions/gcode_shell_cmd/assets/gcode_shell_command.py"

Das war’s. Keine weiteren Abhängigkeiten, kein Build-Prozess.

Persistierung – der wichtige Teil

Auf dem Snapmaker U1 mit paxx12 Firmware gibt es ein Overlay-Filesystem. Beim Booten wird die System-Partition aus dem ROM geladen – und alles, was ihr darin verändert habt, ist weg. Das heißt: Nach einem Reboot ist eure gcode_shell_command.py verschwunden.

Es sei denn, ihr setzt die Persistenz-Flag:

touch /oem/.debug

Diese eine Datei sagt der Firmware: „Leg die Overlays persistent ab.” Ab sofort überleben eure Änderungen in /home/lava/klipper/ auch Reboots.

Wichtig: Firmware-Updates wischen /oem/.debug wieder weg. Danach müsst ihr die Extension erneut kopieren und den Touch-Befehl wiederholen. Die Config-Dateien im extended/klipper/-Ordner überleben Updates aber immer – die liegen sicher in /home/lava/.

Praxisbeispiel: Der Heizbett-Max-Temp-Fix

Das perfekte Anwendungsbeispiel. Die printer.cfg auf dem U1 setzt für das Heizbett:

[heater_bed]
max_temp: 100

100°C klingt viel, reicht aber für manche Materialien wie ABS oder ASA nicht aus. Das Bett kann physisch mehr – Snapmaker hat das gedeckelt, weil sie auf der sicheren Seite bleiben wollen. Und die Config wird bei jedem Firmware-Update neu generiert, also bringt manuelles Editieren nichts.

Die Lösung: Ein Makro, das den Patch automatisch anwendet. Erstellt diese Datei:

# /home/lava/printer_data/config/extended/klipper/patch-bed-temp.cfg

[gcode_shell_command patch_bed_temp]
command: sed -i "s/max_temp: 100/max_temp: 110/" /home/lava/printer_data/config/printer.cfg
timeout: 5.0

[gcode_macro PATCH_BED_TEMP]
description: Patch heater_bed max_temp von 100 auf 110
gcode:
    RUN_SHELL_COMMAND CMD=patch_bed_temp
    {action_respond_info("Bed max_temp auf 110 gepatcht. Starte neu...")}
    FIRMWARE_RESTART

Einmal PATCH_BED_TEMP in der Klipper-Konsole aufrufen – fertig. Der Drucker patcht sich selbst und startet neu. Nach einem Firmware-Update? Einfach nochmal aufrufen. 10 Sekunden, erledigt.

Fazit

gcode_shell_command öffnet eine ganze Welt an Automatisierungen direkt aus Klipper heraus. Der Heizbett-Fix ist nur ein Beispiel – das Konzept lässt sich auf alles anwenden, wo ihr Shell-Zugriff braucht. Wir werden das in kommenden Videos noch öfter nutzen, z.B. für die multiACE-Installation und Filament-Handling.

Alle Befehle und Config-Snippets findet ihr in der Videobeschreibung zum Rauskopieren. Bei Fragen: ab in die Kommentare!

🎬 Das Video dazu

Alle Schritte ausführlich erklärt – im Tutorial-Video auf YouTube:

▶️ Video auf YouTube ansehen

Links

Links in diesem Beitrag können Affiliate-Links sein. Für dich entstehen dabei keine Mehrkosten.

Leave a Reply

Your email address will not be published. Required fields are marked *