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:
Links
Links in diesem Beitrag können Affiliate-Links sein. Für dich entstehen dabei keine Mehrkosten.
Leave a Reply