CITS-to-go
Ein mobiler Empfänger für C‑ITS-Nachrichten im 5,9-GHz-Band (ITS-G5). Ein ESP32‑C5 empfängt die Funkpakete von Ampeln und Fahrzeugen und überträgt sie per Bluetooth an ein iPhone, das sie dekodiert, anzeigt und auf Wunsch weiterleitet.
Diese Seite enthält die Firmware mit Webflasher, die Einrichtung des iPhones und die technischen Details.
| Hardware | Seeed Studio XIAO ESP32‑C5 |
|---|---|
| Empfang | ITS-G5, Kontrollkanal 5900 MHz (Kanal 180) |
| Nachrichten | CAM, DENM, SPATEM, MAPEM, IVIM, CPM, SREM/SSEM; signiert und unsigniert |
| Verbindung zum Telefon | Bluetooth LE, verschlüsselt und gekoppelt |
| Apps | iOS 17 oder neuer (TestFlight), Android (Original-App) |
| Firmware | CITS-to-go v2.42.3 |
| Status | Experimentell, nicht für sicherheitsrelevante Zwecke |
Einrichtung
Die Einrichtung erfolgt einmalig an einem Computer mit Chrome oder Edge und einem USB‑C-Datenkabel. Danach arbeitet der Empfänger nur noch mit dem Telefon und einer Stromquelle.
Firmware flashen
Den ESP32‑C5 per USB anschließen, den Knopf verwenden und im Auswahlfenster das Gerät „USB JTAG/serial debug unit“ wählen. Der Vorgang dauert etwa eine Minute.
App installieren
Die iOS-App befindet sich im Test und wird über Apple TestFlight verteilt. Nach Annahme der Einladung wird sie in der TestFlight-App installiert. Beim ersten Start den Bluetooth-Zugriff erlauben.
iPhone koppeln
Die Firmware akzeptiert per Bluetooth nur ein gespeichertes Telefon. Ein neues Telefon wird nur angenommen, nachdem die Kopplung über USB freigegeben wurde. Das verhindert, dass fremde Geräte in Funkreichweite den Empfänger nutzen.
- Den ESP am Computer angeschlossen lassen und die App öffnen.
- „Kopplung freigeben“ wählen und den ESP auswählen.
- Innerhalb von 30 Sekunden in der App auf Verbinden tippen und die iOS-Abfrage Koppeln bestätigen.
Nutzung
Der Empfänger benötigt nur eine Stromversorgung über USB, etwa eine Powerbank oder ein Kfz-Ladegerät. Die App besteht aus fünf Bereichen:
| Live | Empfangene Nachrichten im Klartext: Fahrzeugtyp und Geschwindigkeit (CAM), Warnungen wie Stau, Panne oder Baustelle (DENM), dazu Rohdaten |
|---|---|
| Kreuzungen | MAPEM-Geometrie mit SPATEM-Phasen: frei, Übergang, Halt, mit Restzeit |
| Karte | Sender an ihrer GeoNetworking-Position |
| Aufnahmen | PCAP-Mitschnitte für Wireshark; vorhandene Mitschnitte lassen sich in der App abspielen |
| Einstellungen | Weiterleitung, Diagnoseprotokoll, Demo-Kreuzung |
Fahrzeuge mit Car2X senden CAM-Nachrichten und sind nahezu überall zu empfangen. SPATEM und MAPEM gibt es nur an ausgestatteten Lichtsignalanlagen, DENM nur bei konkreten Ereignissen.
Datenweiterleitung
Die App leitet empfangene Pakete per MQTT an den gemeinsamen Server mqtt.dirksreich.de weiter; alle Empfänger erscheinen dann auf der Live-Seite. Zusätzlich lässt sich OpenTrafficMap oder ein eigener Broker einschalten. Beide Ziele sind in den Einstellungen einzeln abschaltbar. Übertragen werden die empfangenen Funkpakete, nicht die Position des Telefons. Das Format entspricht dem Empfänger von OpenTrafficMap:
| Topic | Inhalt |
|---|---|
its/<node>/packet | Rohes IEEE-802.11-Frame, binär, QoS 0 |
its/<node>/status | online (retained), Last Will offline |
its/<node>/info | JSON mit Node-Kennung, App-Version und Hardware |
its/<node>/stats | JSON mit Laufzeit in Sekunden, einmal pro Minute |
Ohne Verbindung puffert die App bis zu 5000 Pakete und sendet sie nach dem Wiederverbinden.
Fehlerbehebung
| Symptom | Abhilfe |
|---|---|
| Kein Gerät beim Flashen | Datenkabel verwenden, BOOT-Taste beim Einstecken halten, andere Programme mit Zugriff auf den Port schließen |
| „Gerät belegt“ beim Koppeln | Flash-Dialog schließen oder Seite neu laden |
| „Keine Antwort“ beim Koppeln | Es läuft noch keine CITS-to-go-Firmware: Schritt 1 wiederholen |
| App meldet „Nicht angelernt“ | Kopplung in Schritt 3 erneut freigeben |
| Kopplung schlägt nach Neu-Flashen fehl | Gerät in iOS unter Einstellungen › Bluetooth ignorieren, dann Schritt 3 |
| Nur CAM, keine Ampeldaten | Normal abseits ausgestatteter Kreuzungen |
Die App schreibt ein Diagnoseprotokoll nach diagnostics.log, erreichbar in der Dateien-App unter „Auf meinem iPhone › CITS-to-go“.
Technische Details
Bluetooth
| Service | 6e400001-b5a3-f393-e0a9-e50e24dcca9e |
|---|---|
| RX (Schreiben) | 6e400002-…, Verschlüsselung erforderlich |
| TX (Notify) | 6e400003-… |
| Sicherheit | LE Secure Connections, Just Works, Bonding; ein Besitzer |
Datenformat
USB und Bluetooth übertragen denselben Bytestrom aus CTG1-Datensätzen: COBS-kodiert, durch 0x00 getrennt, mit CRC-32 gesichert. Ein Capture-Datensatz enthält Sequenznummer, Zeitstempel, Frequenz, RSSI und das vollständige 802.11-Frame.
Kopplung freigeben
Die Freigabe ist ein CTG1-Datensatz vom Typ 4 über USB. Die Firmware bestätigt mit Typ 5 und akzeptiert danach 30 Sekunden lang genau ein neues Telefon. Der Knopf in Schritt 3 sendet über Web Serial:
08 43 54 47 31 01 04 0c 02 01 01 01 05 12 46 f8 46 00
Alternativ per Kommandozeile:
esptool --chip esp32c5 write-flash 0x0 CITS-to-go-firmware-v2.42.3.bin python3 arm_enrollment.py
Quellen und Lizenz
Firmware und Android-App stammen aus cits-to-go von sascha8a und stehen unter der GPL‑3.0. Das Projekt baut auf der Arbeit von OpenTrafficMap auf. Die iOS-App ist eine Portierung für iPhone mit eigenem Bluetooth-Client, MAPEM/SPATEM-Decoder und Kreuzungsansicht.
Kein offizielles Angebot von OpenTrafficMap.