Skip to content

pit711/v2x2map

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

V2X2MAP is an open-source receiver and live map for ITS-G5 / V2X traffic — the 5.9 GHz IEEE 802.11p messages cars and roadside infrastructure send to coordinate.

Plug a $20 ESP32-C5 dev board into your phone, drive somewhere with modern infrastructure, watch the CAMs, DENMs and SPATEMs roll in.

License: MIT

Live map Settings 1 Settings 2 Settings 3

Acknowledgements

Big thanks to the team behind opentrafficmap/its-g5-receiver-firmware on Codeberg — without their foundational work this project would not exist. V2X2MAP is a fork of their firmware adapted for the Waveshare ESP32-C5-WIFI6-KIT devboard, extended with BLE streaming, the Android app, and the Windows installer.


What it is

Modern cars and roadside units (RSUs) broadcast standardised safety messages on the dedicated 5.9 GHz V2X band:

  • CAM — Cooperative Awareness: "I'm here, going X km/h"
  • DENM — Decentralised Environmental Notification: "hazard ahead!"
  • SPATEM — Signal Phase + Timing: traffic-light countdown
  • MAPEM — intersection geometry

V2X2MAP captures these in promiscuous mode, decodes the GeoNetworking headers locally, and plots each message as a colour-coded marker on an OSM map. No cloud round-trip required — everything runs on the phone.


Hardware

One Waveshare ESP32-C5-WIFI6-KIT dev board and any Android phone with USB-OTG or Bluetooth LE.

The board supports 5.9 GHz IEEE 802.11p out of the box; the firmware drives it as a sniffer and forwards captured frames to your phone.

Waveshare ESP32-C5-WIFI6-KIT dev board


Features

Feature Description
Live map 5 switchable tile layers: Standard, Dark, Satellite, ÖPNV, Humanitarian
Grouped frame log One row per station (MAC); expandable to last 20 frames; shows type icon, speed, distance, 🔒/🔓 secured
CAM markers One marker per vehicle, updated in-place with baked-in heading + speed label
Compass mode Bearing-up FAB rotates the map to keep your heading at the top
Own GPS track Optional blue polyline traces your route
Auto-follow Map pans with you; zoom stays exactly as you set it
Geiger-counter mode Audio + haptic tick on every frame, distinct beep + buzz on DENM hazard
BLE + USB auto-reconnect Exponential-backoff reconnect on cable pull or BT drop — no user interaction
Offline maps OSMdroid tile cache up to 600 MB
PCAP recording One tap records to standard .pcap; open directly in Wireshark (link type 105 = IEEE 802.11)
Multi-broker MQTT One input field per broker, add/remove with + / 🗑; per-type message filter
Full i18n English default, German for German-locale devices — all UI, errors and notifications

Architecture

+---------------+     5.9 GHz 802.11p      +------------+
|  Vehicles &   |   CAM / DENM / SPATEM    |  ESP32-C5  |
|  RSUs         |  ----------------------> |  sniffer   |
+---------------+                          +-----+------+
                                                 |
                                  USB-Serial-JTAG | BLE-GATT
                                                 v
                                        +--------+--------+
                                        | Android app /   |
                                        | Python bridge   |
                                        +--------+--------+
                                                 |
                                                 | optional
                                                 v
                                          MQTT (cits1.opentrafficmap.org
                                                 or your own)

Install

Windows — one-click installer (easiest)

  1. Download ITS-G5 Receiver Setup from the Releases page
  2. Connect the ESP32-C5 via USB
  3. Run the EXE and follow three steps:
Step 1 — Select COM port Step 2 — Flash firmware Step 3 — Set Node-ID
Installer step 1: select COM port Installer step 2: flash firmware Installer step 3: set Node-ID
The installer detects the board automatically. Pick the right port and click Weiter. The installer writes bootloader, partition table and application to the C5. Takes 30–60 seconds. The installer reads the MAC from the chip and pre-fills the Node-ID. Hit Fertig – Bridge starten.

Manual build from source

Firmware (ESP-IDF)
# once per shell — activate ESP-IDF toolchain
. .\esp-idf\export.ps1

cd V2X2MAP\firmware
idf.py build
idf.py -p COMx -b 921600 flash
Android app
cd V2X2MAP\android
.\gradlew.bat assembleDebug
adb install -r app\build\outputs\apk\debug\app-debug.apk

Or open V2X2MAP/android/ in Android Studio. Min SDK 24 (Android 7.0).

Python bridge + dashboard
cd V2X2MAP\bridge
python its_g5_bridge.py --port COMx --node-id <mac-without-colons>

Dashboard at http://127.0.0.1:8080. Default MQTT broker: mqtts://cits1.opentrafficmap.org:8883.


Legal

Receiving and forwarding ITS-G5 radio data may be subject to national telecommunications law and data-protection law. The Android app shows a disclaimer on first launch. Use at your own risk.

Code is published under the MIT License — see LICENSE.

* affiliate link (no extra cost for you)

About

Open-source receiver and live map for ITS-G5/V2X traffic on 5.9 GHz IEEE 802.11p — ESP32-C5 sniffer + Android app + Python bridge + Windows installer

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors