Zum Inhalt

Elegoo Centauri Carbon — OpenCentauri Root-Zugang & HA-Integration

ABGESCHLOSSEN — OpenCentauri v0.3.0 aktiv, SSH-Zugang + vollständige HA-Integration in Betrieb.

Ziel: Root-Zugang zum Elegoo Centauri Carbon 3D-Drucker via OpenCentauri-Firmware und erweiterte Home-Assistant-Integration über SSH.

Letzte Änderung: 2026-02-24

Hintergrund

Der Elegoo Centauri Carbon kommuniziert mit HA über das SDCP-Protokoll (WebSocket, Port 3030). Basis-Fehlercodes, Temperaturen und Druckstatus werden übertragen. Interne Debug-Logs, detailliertere Diagnosedaten und direkte Steuerung sind nur mit Root-Zugang möglich.

Lösung: OpenCentauri Community-Firmware (https://github.com/OpenCentauri/cc-fw-tools) basierend auf Elegoo V1.1.40.

Gewählter Weg: OpenCentauri

  • Basiert auf Elegoo V1.1.40 — gleiche Basis wie Original
  • Root-Zugang via SSH nach dem Flash
  • Entware/opkg Paketmanager vorinstalliert
  • Rollback auf originale Elegoo-Firmware jederzeit möglich (A/B-Partition)

Anleitung: Flash

  1. FAT32 USB-Stick vorbereiten, Ordner update/ anlegen, update.swu hineinkopieren
  2. USB-Stick in Drucker einstecken und neu starten
  3. Update-Aufforderung bestätigen → Drucker bootet in OpenCentauri
  4. Firmware-Download: https://github.com/OpenCentauri/cc-fw-tools/releases/tag/v0.3.0

System-Übersicht

| Parameter | Wert | | OS | OpenWrt (procd / BusyBox v1.27.2) | | Kernel | Linux 5.4.61-ab1175, ARM v7 | | RAM | 110 MB total, ~46 MB frei (kein Swap) | | Speicher | 6.4 GB UDISK (5.5 GB frei), 119 MB Overlay | | IP / WiFi | 192.168.178.73 / FRITZBoxKeller |

Offene Ports / Services

| Port | Dienst | | 22 | SSH (Entware openssh) | | 80 | Web-UI + /local/ Directory Listing | | 3030 | SDCP WebSocket API | | 3031 | MJPEG Kamerastream |

Wichtige Pfade

| Pfad | Inhalt | | /board-resource/printer.cfg | Vollständige Drucker-Konfiguration (Temps, Steps, PID) | | /board-resource/sysconf.cfg | Systemkonfiguration (Name, Sprache, Kumulativzeit) | | /board-resource/log | Live SDCP Debug-Log (→ log1) | | /user-resource/ | GCode-Dateien, Druckhistorie, Coredumps | | /user-resource/file_info/ | JSON-Metadaten aller gespeicherten GCode-Dateien | | /user-resource/last_error.txt | Letzter erkannter Fehlercode (von error_monitor.sh) | | /user-resource/OpenCentauri/ | Entware-Installation |

Entware (opkg) — Tools

bash, grep, findutils, rsync, openssh-client/-server, strace, xxd, gdb, file, socat

SSH-Zugang einrichten

Nach dem Flash: Bind-Shell auf Port 4567 für initialen Zugang, dann SSH-Key eintragen:

# Vom HA-Container (einmalig mit Passwort):
sshpass -p "OpenCentauri" ssh -o StrictHostKeyChecking=no root@192.168.178.73 \
  "mkdir -p /root/.ssh && echo 'SSH-PUBLIC-KEY' >> /root/.ssh/authorized_keys \
   && chmod 700 /root/.ssh && chmod 600 /root/.ssh/authorized_keys"

# Danach Key-basierter Login:
ssh -i /config/.ssh/id_ed25519 -o StrictHostKeyChecking=no root@192.168.178.73

Passwort danach ändern:

ssh -i /config/.ssh/id_ed25519 root@192.168.178.73 "echo 'root:NEUES_PW' | chpasswd"

Bind-Shell deaktivieren

Die Bind-Shell auf Port 4567 (OpenCentauri-Standard) ist nach SSH-Key-Einrichtung überflüssig und ein Sicherheitsrisiko:

chmod -x /etc/hotplug.d/block/12-shell
# Prüfen nach Neustart: netstat -tlnp | grep 4567  → kein Eintrag

HA-Integration

SSH-Sensoren (command_line)

Alle 60 Sekunden via SSH abgefragt:

| Sensor | Beschreibung | Intervall | | sensor.centauri_kumulativzeit | All-Time Druckzeit (sysconf.cfg Hardware-Counter) | 1h | | sensor.centauri_speicher_frei | Freier Speicher auf UDISK-Partition | 1h | | sensor.centauri_letzter_fehlercode | Letzter intern geloggter Fehlercode (last_error.txt) | 1min | | sensor.centauri_coredumps | Anzahl App-Crash-Dumps in /user-resource/ | 1min |

SSH shell_commands

| Command | Funktion | | centauri_reboot | Drucker sanft neu starten | | centauri_delete_coredumps | Coredumps löschen (regelmäßig empfohlen) |

Fehler-Monitoring — 3 Kanäle

Kanal 1: SDCP-Protokoll

  • Sensor: sensor.centauri_carbon_current_print_error_status_reason
  • Erfasst: temp_error, filament_runout, level_failed, home_failed_*, move_abnormal, etc.
  • Automation 1740000001500 → Push-Notification auf Z Fold 7

Kanal 2: Interner Log-Monitor

  • Script: /user-resource/error_monitor.sh (Autostart S45error_monitor)
  • Überwacht: SDCP-Debug-Log auf ErrorCode:XXX (Full-Width Doppelpunkt)
  • Output: /user-resource/last_error.txtsensor.centauri_letzter_fehlercode
  • Erfasst u.a.: Error 103 (Nozzle-Heizfehler), 401/402 (Sensor-Fehler), 701-703 (MCU)
  • Automation 1740000001500 → Push-Notification mit Klartext-Beschreibung

Kanal 3: Crash-Erkennung

  • Sensor: sensor.centauri_coredumps (Anzahl /user-resource/coredump-*.gz)
  • Automation 1740000001501 → Push "App-Crash #N – bitte Drucker neu starten"
  • Hinweis: Nach Crash neu starten via centauri_reboot; unterbrochener Druck nicht fortsetzbar

Fehlercodes

Alle bekannten Fehlercodes (SDCP + intern) dokumentiert unter:

SSH-Config-Eintrag in HA

Host centauri
  HostName 192.168.178.73
  User root
  IdentityFile /config/.ssh/id_ed25519
  StrictHostKeyChecking no

Verfügbare Daten

  • SDCP WebSocket (Port 3030): Temperaturen, Druckstatus, Fortschritt, Fehlercodes
  • SSH-Direktzugriff: Kumulativzeit, Speicher, Fehlercodes, GCode-Metadaten, interne Logs
  • MJPEG Kamerastream (Port 3031): Direkt als Kamera-Entity einbindbar

Bekannte Probleme

App-Absturz (SIGSEGV / Coredump)

Die proprietäre Drucker-App /app/app hat einen Heap-Korruptions-Bug, der bei bestimmten popen()-Aufrufen zu SIGSEGV führt:

  • Symptom: App stirbt ohne Meldung, Port 3030 nicht mehr erreichbar, Coredump in /user-resource/
  • Kein Auto-Restart: App wird nicht durch procd verwaltet — nur via rc.local beim Boot
  • Workaround: Drucker-Neustart via Touchscreen oder centauri_reboot in HA
  • Druckzustand: Geht bei Absturz verloren (kein Resume möglich — nur bei sauberem PAUSE)
  • HA-Erkennung: sensor.centauri_coredumps steigt → Automation 1740000001501 → Push

Error 103 (Nozzle-Heizfehler)

Error 103 wird auf dem Drucker-Display gezeigt, wenn die Nozzle die Zieltemperatur nicht erreichen konnte:

  • Ursache: Heizpatrone defekt, Thermistor-Problem, oder MCU-Kommunikationsfehler
  • Erkennung in HA: Über sensor.centauri_letzter_fehlercode (wenn der Code ins Log geschrieben wird) oder sensor.centauri_carbon_current_print_error_status_reason = temp_error
  • Maßnahme: Nozzle und Thermistor prüfen, Drucker neu starten

Sicherheitshinweise

  • Standard-Passwort nach dem Flash sofort ändern
  • Bind-Shell Port 4567 nach SSH-Key-Einrichtung deaktivieren (chmod -x)
  • Coredumps in /user-resource/ regelmäßig löschen (können RAM-Inhalte enthalten)
  • Port 80: /local/ ist ohne Authentifizierung öffentlich lesbar (alle GCode-Dateien)

Status

| Schritt | Status | | OpenCentauri v0.3.0 flashen | ✅ Abgeschlossen | | SSH-Zugang einrichten | ✅ Abgeschlossen | | SSH-Key aus HA hinterlegen | ✅ Abgeschlossen | | Passwort ändern | ✅ Abgeschlossen | | Bind-Shell Port 4567 deaktivieren | ✅ Abgeschlossen | | HA SSH-Sensoren (Kumulativzeit, Speicher) | ✅ Abgeschlossen | | HA shell_commands (Reboot, Coredumps löschen) | ✅ Abgeschlossen | | Fehlercode-Dokumentation | ✅ Abgeschlossen | | Fehlercode-Monitoring (error_monitor.sh, 3 Kanäle) | ✅ Abgeschlossen | | HA-Fehlerbenachrichtigungen (Automationen 1740000001500 + 1501) | ✅ Abgeschlossen |


← Zurück zur Projektübersicht | ← Home Assistant Übersicht | ← Server-Übersicht