11 KiB
KX-Bridge
Steuere deinen Anycubic Kobra X mit OrcaSlicer — ohne Klipper, ohne Raspberry Pi.
Eine Moonraker-kompatible Bridge, die direkt mit dem Drucker spricht.
🧪 Ein Community-Bericht auf Reddit deutet darauf hin, dass die Bridge auch mit dem Kobra S1 und Kobra S1 Max funktioniert — die Protokolle wirken kompatibel, beides ist aber weder offiziell getestet noch unterstützt. Feedback willkommen.
🇬🇧 English version · 🇪🇸 Versión española
Gefällt dir KX-Bridge? Ein Kaffee auf Ko-fi hält das Projekt am Leben. ☕
✨ Was kann KX-Bridge?
| Feature | |
|---|---|
| 🖨️ | Druckersteuerung — Start, Pause, Resume, Abbruch, Temperaturen, Druckgeschwindigkeit |
| 📊 | Live-Status — Temperatur, Fortschritt, Layer, Restzeit, Kamera-Stream |
| 🎨 | AMS / Multicolor — Slots mit Profil-Picker pro Slot (eigene Marke aus OrcaSlicer-Profilen pro Slot zuweisen); Bridge schreibt Material und Farbe ans Drucker-Display zurück |
| 📦 | Eigene OrcaSlicer-Profile importieren — ZIP aus ~/.config/OrcaSlicer/user/<id>/filament/ in die Bridge ziehen; tauchen im Slot-Dropdown unter ★ Eigene Profile auf |
| 📷 | Obico-Integration (experimentell) — Time-Lapse und WebRTC-Livestream gegen einen selbst gehosteten Obico-Server via moonraker-obico |
| 📐 | H.264-Direkt-Stream + Z-Höhe — sparsamer Kamera-Pfad für Obico, aktuelle Z aus der Layer-Höhe abgeleitet (Mm-Progress-Widget) |
| 🗂️ | GCode-Browser — hochgeladene Dateien mit Thumbnail, Druckhistorie, Suche & Filter |
| 🧩 | Multi-Printer — mehrere Drucker in einer Bridge-Instanz, Umschalten per Dropdown |
| ➕ | Drucker hinzufügen per Klick — nur die IP eingeben, Zugangsdaten werden automatisch importiert |
| 🔁 | Robuster MQTT-Reconnect — Bridge überlebt nächtlichen Drucker-Reboot ohne manuellen Neustart |
| 🌐 | Mehrsprachiges UI — DE / EN / ES / 中文, Browser-Sprache automatisch erkannt |
| 🔄 | Self-Update — neue Versionen direkt im Browser installieren |
| 🧠 | OrcaSlicer — volles Moonraker-Protokoll (HTTP + WebSocket); für korrekten Vendor-Match pro Slot den OrcaSlicer-KX-Build nutzen |
🚀 Schnellstart
1. Drucker vorbereiten
LAN-Modus am Kobra X aktivieren: Drucker-Display → Einstellungen → LAN-Modus aktivieren
2. Bridge starten
Docker (empfohlen):
docker compose up -d
Linux-Binary (kein Docker):
chmod +x kx-bridge && ./kx-bridge
Windows-EXE (kein Docker):
kx-bridge.exe
config\unddata\werden neben der EXE angelegt — portabel.
Bei Linux- und Windows-Binary liegen
config/unddata/(Einstellungen, SQLite, GCode-Store) jeweils neben dem Programm. Einfach den ganzen Ordner kopieren = umziehen.
Python direkt:
pip install -r bridge/requirements.txt
python bridge/kobrax_moonraker_bridge.py
3. Drucker einrichten
Web-UI öffnen: http://BRIDGE-IP:7125
Beim Erststart erscheint der Drucker-Tab mit „+ Drucker hinzufügen" — einfach die IP-Adresse des Druckers eingeben, der Rest (Username, Passwort, Device-ID) wird automatisch vom Drucker geholt und entschlüsselt. Fertig.
Mehrere Drucker? Einfach mehrfach „+ Drucker hinzufügen" — jeder bekommt seinen eigenen Port (7125, 7126, …) und ist im Header-Dropdown auswählbar.
4. OrcaSlicer verbinden
Drucker → Verbindungstyp Moonraker → Host: http://BRIDGE-IP:7125
⚠️ Verbindungstyp muss Moonraker sein (nicht „Bambu" oder „Klipper"). Vollständige URL inkl.
http://und Port:7125im Host-Feld eintragen.
📺 Video-Tutorial
🎨 Empfohlener Slicer
Für sauberen AMS-Filament-Sync gibt es einen gepatchten OrcaSlicer-Build:
→ OrcaSlicer-KX Releases (Linux AppImage + Windows ZIP)
Upstream-PRs im KX-Build:
- PR #13372 — Moonraker / Happy-Hare AMS-Sync-Fix (Slot-Positionen bleiben auch bei leerem Slot in der Mitte korrekt)
- PR #13719 — Vendor- + Name-Matching für Moonraker (liest
name+vendor_namepro Slot und matched gegen deine Filament-Presets), von @LordGuenni - PR #13315 — Eindeutige
filament_idfür User-Presets (neu erstellte eigene Profile bekommen eine frische ID statt dasOGFL99vom Generic-Parent zu erben), von @mrnoisytiger
Plus vier KX-eigene Verbesserungen on top:
- Bridge-Filament-Hint (
tray_info_idx+ Vendor) respektieren - Vendor-Match auch wenn das gewählte Base-Preset nicht is_compatible mit dem aktiven Drucker ist (so matchen Profile aus anderen Drucker-Setups trotzdem über die Marke)
- Vendor-Match wenn
tray_info_idxgesetzt ist, das Preset aber inkompatibel - Zwei-Pass-Suche: erst kompatible Presets, dann alle sichtbaren
Warum das zusammen wichtig ist: ohne #13719 landen die AMS-Slots in OrcaSlicer alle auf Generic PLA / Generic PETG, obwohl die Bridge die konkrete Marke schon mitsendet (name + vendor_name + gate_filament_name). Mit dem KX-Build matched OrcaSlicer deine echten User-Presets — auch die, die du via Eigene OrcaSlicer-Profile importieren in die Bridge gezogen hast.
Stock-Upstream-OrcaSlicer funktioniert für Slicing und Drucken weiterhin — nur das Per-Slot-Vendor-Matching beim AMS-Sync fällt dann weg. Material und Farbe pro Slot kannst du auch ohne den KX-Build über die Bridge ans Drucker-Display schreiben (das läuft über MQTT, nicht über den Slicer).
OrcaSlicer-KX ist ein Build von OrcaSlicer (AGPL-3.0); der Quellcode der Upstream-PRs ist auf GitHub, die KX-spezifischen Patches im OrcaSlicer-KX-Repo.
🏠 Community & Integrationen
- Home-Assistant-Integration von @gangoke — bindet Sensoren, Drucksteuerung, Licht, Kamera und das GCode-Vorschaubild als native Home-Assistant-Entitäten ein.
- Obico (selbst gehostet) — die Bridge bietet eine Moonraker-kompatible API, die moonraker-obico akzeptiert; damit hast du Time-Lapse und WebRTC-Live-Stream gegen deinen eigenen Obico-Server. Die KI-Spaghetti-Erkennung ist beim Kobra X experimentell — der Top-Down-Kamerawinkel weicht von dem ab, auf den das Modell trainiert wurde.
Dies sind Community-Projekte, die nicht von KX-Bridge betreut oder supportet werden. Bei Fragen oder Problemen bitte das verlinkte Repository nutzen.
🔧 Zugangsdaten manuell ermitteln
Normalerweise nicht nötig — „+ Drucker hinzufügen" macht das automatisch. Falls doch:
fetch_credentials --ip 192.168.x.x --write-config
Holt die Zugangsdaten per HTTP direkt vom Drucker und schreibt sie in config/config.ini.
Nur die Drucker-IP nötig, kein Slicer.
Alternativ (wenn die IP unbekannt ist): AnycubicSlicerNext öffnen, Drucker verbinden,
dann extract_credentials ausführen → gibt Username, Passwort, Device-ID und IP aus.
Downloads: Releases →
fetch_credentials/extract_credentials(Linux & Windows)
⚙️ Nützliche Befehle
docker compose logs -f # Logs anzeigen
docker compose down # Bridge stoppen
docker compose pull && docker compose up -d # auf neueste veröffentlichte Version updaten
docker compose up -d --build # lokal selber bauen (statt zu pullen)
🩹 Troubleshooting
"Falsche MQTT-Zugangsdaten" beim Start
- Drucker über „+ Drucker hinzufügen" erneut hinzufügen, oder
fetch_credentials --ip <ip> --write-configausführen und Bridge neu starten - Nur die IP-Adresse eingeben, ohne Port (✗
192.168.1.102:9883→ ✓192.168.1.102)
Drucker nicht gefunden / kein LAN-Modus
- Am Drucker-Display: Einstellungen → LAN-Modus aktivieren
- Drucker und Bridge müssen im selben Netzwerk sein
Docker: Permission denied
sudo usermod -aG docker $USER # danach aus- und wieder einloggen
Upgrade von 0.9.1 oder älter
Ab 0.9.2 speichert KX-Bridge die Einstellungen in config/config.ini statt .env.
Die Migration läuft automatisch beim ersten Start nach dem Upgrade — keine Aktion nötig.
🔒 Sicherheit
- Die Bridge ist im lokalen Netzwerk unter
http://<host-IP>:7125erreichbar — nicht ins Internet exposen config/config.inienthält Drucker-Zugangsdaten — nicht öffentlich teilen- Die Zugangsdaten geben keinen Zugriff auf Anycubic-Cloud-Dienste
📄 Lizenz
KX-Bridge steht unter der GNU General Public License v3.0 (LICENSE). Forks und Erweiterungen müssen bei Weitergabe ebenfalls unter GPLv3 stehen.
Die MQTT-Protokoll-Implementierung ist das Ergebnis unabhängiger Reverse-Engineering-Arbeit zur Herstellung der Interoperabilität (§69e UrhG / EU-Softwarerichtlinie Art. 6). Drittmaterial im Repository (Anycubic- TLS-Zertifikate) fällt nicht unter die GPLv3 und ist ausschließlich enthalten, um die Authentifizierung am eigenen Drucker zu ermöglichen. Details + Disclaimer in NOTICE.md.
Dieses Projekt ist unabhängig und steht in keinem Zusammenhang mit Anycubic.
