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¶
- FAT32 USB-Stick vorbereiten, Ordner
update/anlegen,update.swuhineinkopieren - USB-Stick in Drucker einstecken und neu starten
- Update-Aufforderung bestätigen → Drucker bootet in OpenCentauri
- 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:
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.txt→sensor.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.localbeim Boot - Workaround: Drucker-Neustart via Touchscreen oder
centauri_rebootin HA - Druckzustand: Geht bei Absturz verloren (kein Resume möglich — nur bei sauberem PAUSE)
- HA-Erkennung:
sensor.centauri_coredumpssteigt → 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) odersensor.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