v2x2map
V2X2MAP is an open-source receiver and live map for ITS-G5 / V2X traffic — the 5.9 GHz IEEE 802.11p messages that cars and roadside infrastructure broadcast to
V2X2MAP: A $20 ESP32-C5 V2X Receiver That Uses the W5500 as Its Network Backhaul
Plug a small dev board into your laptop or phone, drive past modern road infrastructure, and watch live traffic messages appear on a map. This project listens to the radio messages that cars and traffic lights broadcast — and it leans on the WIZnet W5500 to send that data out to the internet.
1. What is V2X, and why listen to it?
Modern cars and roadside units (RSUs) talk to each other over a dedicated 5.9 GHz band using IEEE 802.11p, the radio layer underneath Europe's ITS-G5 / C-ITS standards. They constantly broadcast a few standard safety messages:
- CAM (Cooperative Awareness) — "I'm here, heading this way at X km/h."
- DENM (Decentralised Environmental Notification) — "There is a hazard ahead."
- SPATEM (Signal Phase and Timing) — traffic-light phase and countdown.
- MAPEM — the geometry of an intersection.
The important point: these messages are sent in the clear (not encrypted). So a receiver can simply listen, decode them, and rebuild a live picture of the traffic infrastructure nearby — all with hardware that costs about the price of two cups of coffee.
2. The project in one picture
One captured frame is sent to several places at the same time:
- The local path (USB or Bluetooth LE) feeds an Android app that draws each message on a map.
- The network path (Ethernet → MQTT) uploads the raw frames to a server.
- An optional SD-card path saves standard
.pcapfiles you can open in Wireshark.
3. The original project, and what V2X2MAP adds
V2X2MAP is not built from scratch. It is a fork of the original OpenTrafficMap firmware, with a different goal. The simplest way to understand the two is:
Original = a fixed, Ethernet-connected receiver firmware. V2X2MAP = a user-friendly package that adds a phone, a PC bridge, and an installer on top of it.
Where the W5500 actually started
This point is worth highlighting for the WIZnet community: the W5500 was the original project's main network path, not an afterthought. The upstream firmware is written around an SPI Ethernet module. Its README tells you to wire a W5500 (or ENC28J60) to the board, and it even ships two ready-made config files — sdkconfig.proto-w5500 and sdkconfig.proto-enc28j60. The upstream also documents the exact wiring for the ESP32-C5-WIFI6-KIT board:
Side-by-side comparison
| Aspect | OpenTrafficMap its-g5-receiver-firmware (original) | pit711/v2x2map (fork) |
|---|---|---|
| Character | The base ITS-G5 receiver firmware for OpenTrafficMap | A fork / extension built on that firmware |
| Main purpose | Capture C-ITS data and upload it to OpenTrafficMap over Ethernet | Capture V2X and also offer an Android app, a PC bridge, and an installer |
| Hardware focus | OpenTrafficMap's own receiver PCB; ESP32-C5; SPI-Ethernet chip (W5500 / ENC28J60) | The Waveshare ESP32-C5-WIFI6-KIT dev board |
| Network path | Direct internet via SPI Ethernet (W5500 / ENC28J60) | USB-Serial, BLE, Python bridge, and MQTT |
| Mobile use | Closer to a fixed receiver node | Live map on a phone, right there in the field |
| Ease of install | ESP-IDF build-and-flash workflow | Windows installer, Android APK, Python bridge |
| W5500's place | The Ethernet backhaul that uploads straight to the server | Inherited in the code; the fork's docs focus on phone/bridge, but the W5500 path is still built in |
In one sentence
The OpenTrafficMap firmware is "a receiver that collects V2X data and uploads it to a server." V2X2MAP repackages it as "an app-included version that an ordinary user can try with a phone or PC." But under both, the WIZnet W5500 remains the part that gives a fixed node its independent road to the internet.
4. How the data is captured: promiscuous mode
A network chip normally throws away any frame that is not addressed to it. Promiscuous mode turns that filter off, so every frame on the air is handed up to the software. This is the core trick of any sniffer — V2X frames are not addressed to your board, so without promiscuous mode you would see nothing.
The firmware switches the ESP32-C5 radio into 802.11p mode, turns on promiscuous capture, and registers a callback for every frame it hears.
5. Where the W5500 comes in — and why it matters
This is the part most interesting to the WIZnet community.
At first you might ask: the ESP32-C5 already has Wi-Fi, so why add a wired Ethernet chip at all?
The answer is a hard radio limit. Once the firmware puts the radio into 802.11p sniffing mode, that radio can no longer work as a normal 2.4 GHz Wi-Fi station — scanning and connecting both stop working. The single radio is now fully busy listening for V2X. So if you want the node to reach the internet and upload what it captures, you need a second, independent network interface.
That is exactly the job of the WIZnet W5500. It connects to the ESP32-C5 over SPI and comes up as a standard Ethernet interface — a wired uplink that is completely separate from the busy radio. With it, the board becomes a self-contained, always-on node: just give it power and an Ethernet cable, and it captures V2X traffic and forwards it 24/7 — no phone, no Wi-Fi, no babysitting.
In this design the W5500 actually plays two roles:
- Network backhaul (the main job). The W5500 gets an IP address (DHCP, or a static address) and carries the MQTT stream out to the broker. The firmware brings it up through the ESP-IDF Ethernet driver and runs the lwIP stack on top, which provides DHCP, DNS, and MQTT-over-TLS.
- A second capture source (optional). Because the firmware also supports Ethernet promiscuous capture, the W5500 can double as a wired sniffing input when V2X messages arrive over a cable.
6. How the data is used: the OpenTrafficMap ecosystem
The network path does not just dump data into a file. V2X2MAP publishes captured frames over MQTT to a broker, and the default broker is the central server of the OpenTrafficMap project (TLS-secured). https://opentrafficmap.org/
OpenTrafficMap is the open, community project (based in Graz, Austria) that this firmware is forked from. It collects messages from many distributed receivers and renders them as a live web map. There you can see detected traffic lights, RSUs, intersection geometry, hazard warnings, and moving vehicles in real time. Click a traffic light, and the server even shows per-lane signal groups with predicted switch times built from the collected SPATEM data.
The MQTT connection is two-way: nodes also report their status and statistics, and they can receive commands so the server can manage the receiver fleet remotely. So the W5500-backed Ethernet link is what makes both the data upload and the remote management possible.


