Files
v2x-sniffer/SD_CARD_README.md
Clawdia 874dd969b6 SD-Karte: V2X-Frames direkt auf SD speichern (CSV, autonom)
- NVS-Flash (4MB) durch SD-Karte via SDMMC ersetzt
- GPIO: SD_CMD=2, SD_CLK=6, SD_D0=7, SD_CS=23
- CSV-Ausgabe mit Rohdaten-Hex: timestamp, msg_type, channel, RSSI, MAC, raw_hex
- Channel-Hopping über alle 10 V2X-Kanäle (5845-5925 MHz)
- CSV-Auto-Rotation bei >50MB
- v2x_log.txt mit periodischen Statistiken
- Frame Queue (64 Frames) zwischen Promisc-CB und Writer Task
- Kanal-Hopper, Stats-Task, Frame-Writer als eigene Tasks
- README mit SD-Vorbereitung und Analyse-Hinweisen
2026-05-09 08:44:24 +02:00

3.5 KiB

V2X-Sniffer Firmware — SD-Karte Speicherung

Übersicht

Die Firmware speichert V2X-Daten (BSM, CAM, DENM) komplett autonom auf einer SD-Karte im ESP32-C5. Kein Host-PC ist erforderlich.

Was wurde geändert?

Alt Neu
NVS-Flash (4 MB, begrenzt) SD-Karte via SDMMC (FAT32, unbegrenzt)
Keine Rohdatenspeicherung CSV mit Rohdaten (Hex) pro Frame
Manuell / interaktiv Komplett autonom, channel-hopping
C++ Lambda in C-Code (Bug) Korrekter C-Code mit Queue

Hardware

T-Dongle-C5 mit SD-Karte (FAT32 formatiert)

SD-Karte Pinbelegung (ESP32-C5 native SDMMC)

Signal GPIO
SD_CMD GPIO 2
SD_CLK GPIO 6
SD_D0 GPIO 7
SD_CS GPIO 23

SD-Karte vorbereiten

# Auf dem Host: SD-Karte mit FAT32 formatieren
mkfs.fat -F 32 /dev/mmcblk0   # Linux
diskutil eraseDisk FAT32 V2X /dev/disk2   # macOS
format /dev/sdX /FS:FAT32 /Q   # Windows

# Oder direkt auf dem ESP nach Boot:
# Die Firmware formatiert automatisch falls nötig

Ausgabe

v2x_frames.csv

Jeder gefangene Frame als eine Zeile CSV:

timestamp_us,msg_type,channel,frequency_mhz,rssi_dbm,noise_dbm,rate_index,frame_len,mac_addr,bssid,raw_hex
1715234567890,2,157,5845.0,-45,-92,8,314,AA:BB:CC:DD:EE:FF,11:22:33:44:55:66,AABBCCDD...

Spalten:

Spalte Beschreibung
timestamp_us Mikrosekunden seit Systemstart
msg_type 1=BSM, 2=CAM, 3=DENM, 0=Unknown
channel Kanal (157-164, 17, 18)
frequency_mhz Frequenz in MHz (5845-5925 oder 4300)
rssi_dbm Empfangsleistung
noise_dbm Rauschleistung
rate_index Datenraten-Index (802.11p)
frame_len Paketlänge in Bytes
mac_addr MAC-Adresse des Absenders
bssid BSSID der Basisstation
raw_hex Rohdaten als Hex-String

v2x_log.txt

System-Log mit:

  • Start-Zeitstempel
  • Periodischen Statistiken (alle 60 Sekunden)
  • Fehlermeldungen
  • CSV-Rotation-Ereignissen

CSV-Rotation

Wenn die CSV-Datei > 50 MB erreicht, wird sie automatisch umbenannt:

v2x_frames_20260509_143022.csv

und eine neue leere CSV mit Header erstellt.

Kanal-Hopping

Die Firmware wechselt alle 30 Sekunden durch alle V2X-Kanäle:

5845, 5855, 5865, 5875, 5885, 5895, 5905, 5915, 5925, 4300 MHz

Datenanalyse

Auf dem PC öffnen

# CSV auf SD-Karte kopieren
cp /media/user/V2X/v2x_frames.csv ./v2x_frames.csv

# Mit Python analysieren
python3 -c "
import csv, pandas as pd
df = pd.read_csv('v2x_frames.csv')
print(df.head())
print(df.describe())
print('Message Types:')
print(df['msg_type'].value_counts())
"

# Mit Excel/Numbers öffnen
# Direkt per Doppelklick in der SD-Karte

Rohdaten dekodieren

Die raw_hex Spalte enthält die unveränderten V2X-PDUs (ASN.1 DER / BER-TLC). Diese können mit einem C-ITS Decoder weiterverarbeitet werden.

Bauen

cd v2x_fw
idf.py set-target esp32c5
idf.py build
idf.py flash monitor

Betrieb

  1. SD-Karte (FAT32) in Slot stecken
  2. Firmware flashen
  3. Gerät starten — Daten landen automatisch in v2x_frames.csv auf der SD-Karte
  4. SD-Karte auslesen wenn benötigt

Fehlerbehebung

SD-Karte wird nicht erkannt:

  • FAT32 Format prüfen
  • GPIO-Pins richtig verkabelt (ESP32-C5 SDMMC)
  • SD-Karte ≤ 32GB (SDSC) oder ≤ 2TB (SDHC/SDXC)

CSV-Schreibfehler:

  • SD-Karte schreibgeschützt?
  • Genug freier Speicher?
  • FAT32-Dateisystem korrupt?

Keine Frames im CSV:

  • Kanal-Hopping funktioniert? (Log prüfen)
  • Promiscuous Mode aktiv?
  • Andere Geräte senden auf V2X-Kanälen?