Releases: ruvnet/wifi-densepose
Releases · ruvnet/wifi-densepose
ESP32-S3 CSI Firmware v0.1.0
ESP32-S3 CSI Firmware v0.1.0
Pre-built firmware binaries for the ESP32-S3 CSI sensing pipeline (ADR-018).
Built from main with ESP-IDF v5.2 via Docker.
What's Included
| File | Size | Flash Address | Description |
|---|---|---|---|
bootloader.bin |
21 KB | 0x0 |
ESP32-S3 second-stage bootloader |
partition-table.bin |
3 KB | 0x8000 |
Flash partition layout |
esp32-csi-node.bin |
768 KB | 0x10000 |
CSI firmware — ADR-018 binary streaming over UDP |
provision.py |
— | — | NVS provisioning script (WiFi + network config) |
Quick Start (No Build Required)
1. Install esptool:
pip install esptool2. Flash all three binaries:
python -m esptool --chip esp32s3 --port COM7 --baud 460800 \
--before default_reset --after hard_reset \
write_flash --flash_mode dio --flash_freq 80m --flash_size 4MB \
0x0 bootloader.bin \
0x8000 partition-table.bin \
0x10000 esp32-csi-node.binReplace COM7 with your serial port (/dev/ttyUSB0 on Linux, /dev/cu.usbserial-* on macOS).
3. Provision WiFi credentials (no rebuild needed):
python provision.py --port COM7 \
--ssid "YourWiFi" --password "YourPassword" \
--target-ip 192.168.1.20 --target-port 50054. Run the aggregator:
# From the wifi-densepose repo
cargo run -p wifi-densepose-hardware --bin aggregator -- --bind 0.0.0.0:5005 --verboseOr use the Docker image:
docker run -p 3000:3000 -p 5005:5005/udp ruvnet/wifi-densepose:latest --source esp32ADR-018 Binary Frame Format
Offset Size Field
0 4 Magic: 0xC5110001
4 1 Node ID
5 1 Number of antennas
6 2 Number of subcarriers (LE u16)
8 4 Frequency MHz (LE u32)
12 4 Sequence number (LE u32)
16 1 RSSI (i8)
17 1 Noise floor (i8)
18 2 Reserved
20 N*2 I/Q pairs (int8 pairs, n_antennas * n_subcarriers * 2)
Hardware Compatibility
| Board | Status | Notes |
|---|---|---|
| ESP32-S3-DevKitC-1 | Verified | Tested with CP2102 USB-UART |
| ESP32-S3-WROOM-1 | Expected | Same SoC |
| ESP32-S3-MINI-1 | Expected | Same SoC |
| ESP32 (classic) | Rebuild required | idf.py set-target esp32 |
| ESP32-C3 | Not supported | No CSI API |
Firmware Features
- WiFi STA + promiscuous mode for CSI capture on all management/data frames
- ADR-018 binary serialization with 20-byte header + raw I/Q payload
- UDP streaming to configurable aggregator (default
192.168.1.100:5005) - NVS runtime config — SSID, password, target IP/port, node ID
- ~20 Hz CSI frame rate (LLTF + HT-LTF + STBC HT-LTF2)
- 64-128 subcarriers per frame depending on bandwidth
- Automatic WiFi reconnection (up to 10 retries)
Firewall Note (Windows)
netsh advfirewall firewall add rule name="ESP32 CSI" dir=in action=allow protocol=UDP localport=5005