Ice-KVM-Bridge
ESP32-S3 USB-Host-zu-WiFi-Bridge: Notfall-Fernkonsole für Geräte mit nur einem Micro-USB-Konsolenport (Fork von betaflight/bridge)
Ein ESP32-S3-WROOM-1 als Notfall-Fernkonsole (“KVM”) für Geräte, die nur über einen Micro-USB-Konsolenport erreichbar sind — z. B. ein Olimex ESP32-EVB-EA, dessen eigenes WLAN gerade ausgefallen ist. Der S3 hängt sich als USB-Host an den Konsolenport des Zielgeräts, spricht dessen USB-UART-Chip an und spiegelt den Byte-Strom transparent auf WiFi — erreichbar per Telnet, per Web-UI und als Live-Konsole direkt im Browser.

Basis ist der Fork von betaflight/bridge (ESP-IDF, TinyUSB-Host, GPL-3.0) — ursprünglich gebaut, um einen Flight-Controller per USB-Host + WiFi mit dem Betaflight-Configurator zu verbinden. Die Firmware macht praktisch alles, was man für eine generische USB-Host-zu-WiFi-Bridge braucht: Web-UI, WiFi-Setup per Captive Portal, TLS-Zertifikat, OTA-Update — nur eben ursprünglich für einen Flugcontroller. Dieses Repo passt sie auf einen generischen seriellen Konsolenzugang an.
Warum das Ganze
Das EVB-EA hat keine frei zugänglichen UART-Pins — nur den Micro-USB- Konsolenport (bestückt mit einem CH340-USB-UART-Chip). Fällt das WLAN des EVB-EA aus, gibt es ohne physischen Zugriff sonst keine Möglichkeit, an die Konsole zu kommen. Die Bridge löst das, indem sie selbst nie vom WLAN des Zielgeräts abhängt — sie hängt an einem eigenen Netz.
Features
- USB-Host → WiFi-Bridge: S3 nutzt seinen nativen USB-OTG-Port im Host-Modus, spricht den CH340 (oder andere unterstützte USB-UART-Chips) als CDC-ACM-Gerät an
- Telnet (Port 23) — Raw-TCP, funktioniert mit jedem Telnet-Client
- Web-UI (HTTP/HTTPS) — Status, WiFi-Konfiguration per Captive Portal, Firmware-Update
- Live-Konsole im Browser — read-only WebSocket-Ansicht (
/view), läuft parallel zu einer aktiven Telnet-Sitzung - WiFi-Setup per Captive Portal — kein Flashen von Zugangsdaten nötig
- Self-signed TLS-Zertifikat für
https://undwss://
Dokumentation
| Dokument | Inhalt |
|---|---|
| docs/architecture.md | Aufbau (Hardware + Software), Diagramme |
| docs/hardware.md | Board-Auswahl, Port-Identifikation, USB-VBUS-Falle |
| docs/build.md | ESP-IDF-Setup, Bauen, Flashen |
| docs/usage.md | Erstinbetriebnahme, WiFi-Setup, Telnet/Web-UI/Live-Konsole |
| docs/upstream-changes.md | Was gegenüber betaflight/bridge geändert wurde |
| docs/troubleshooting.md | Bekannte Stolpersteine und ihre Lösung |
Schnellstart
# ESP-IDF v5.4 (einmalig)
git clone -b release/v5.4 --recursive --depth 1 --shallow-submodules \
https://github.com/espressif/esp-idf.git ~/esp-idf
~/esp-idf/install.sh esp32s3
export IDF_PATH=~/esp-idf
source $IDF_PATH/export.sh
# Bridge bauen und flashen
git clone https://github.com/icepaule/Ice-KVM-Bridge.git
cd Ice-KVM-Bridge
idf.py build
idf.py -p /dev/ttyUSBx flash
Details, Board-Auswahl und Fallstricke: siehe docs/build.md.
Lizenz
GPL-3.0, wie das Upstream-Projekt — siehe LICENSE. Alle Quelldateien behalten die ursprünglichen Betaflight-Copyright-Header; eigene Ergänzungen sind als solche markiert.