You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Complete end-to-end guide for building, flashing, and running the WiFi CSI human presence detection pipeline using an ESP32-S3 and the Rust aggregator.
For multi-node coverage, repeat Steps 3-6 for additional ESP32-S3 boards with different CONFIG_CSI_NODE_ID values (2, 3, ...). All nodes stream to the same aggregator.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
ESP32-S3 CSI Pipeline: Step-by-Step Tutorial (ADR-018)
Complete end-to-end guide for building, flashing, and running the WiFi CSI human presence detection pipeline using an ESP32-S3 and the Rust aggregator.
Verified hardware: ESP32-S3-DevKitC-1 (CP2102 UART, MAC 3C:0F:02:EC:C2:28)
Verified performance: ~20 Hz CSI streaming, 64/128/192 subcarrier frames, RSSI -47 to -88 dBm
Prerequisites
pip install esptoolStep 1: Clone the repository
git clone https://github.com/ruvnet/wifi-densepose.git cd wifi-denseposeStep 2: Build the Rust aggregator
cd rust-port/wifi-densepose-rs cargo build -p wifi-densepose-hardware --bin aggregator --releaseThe binary will be at
target/release/aggregator(oraggregator.exeon Windows).Step 3: Configure WiFi credentials
Create or edit
firmware/esp32-csi-node/sdkconfig.defaults:Replace:
YOUR_WIFI_SSIDwith your WiFi network nameYOUR_WIFI_PASSWORDwith your WiFi password192.168.1.20with the IP of the machine running the aggregatorStep 4: Build firmware with Docker
Build output appears in
build/(~960 compilation steps, takes 3-5 minutes first time).Step 5: Find your serial port
ls /dev/ttyUSB*ls /dev/cu.usbserial*Step 6: Flash firmware to ESP32-S3
cd firmware/esp32-csi-node/build 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/bootloader.bin \ 0x8000 partition_table/partition-table.bin \ 0x10000 esp32-csi-node.binReplace
COM7with your serial port. Expected output:Step 7: Open firewall (Windows only)
Run in elevated PowerShell:
Step 8: Run the aggregator
Expected output when ESP32 connects:
Step 9: Verify presence detection
Walk near the ESP32 and observe changes in amplitude and RSSI values. Expect:
Step 10: Multi-node setup (optional)
For multi-node coverage, repeat Steps 3-6 for additional ESP32-S3 boards with different
CONFIG_CSI_NODE_IDvalues (2, 3, ...). All nodes stream to the same aggregator.Architecture
ADR-018 Binary Frame Format
Troubleshooting
esp_wifi_set_promiscuous(true)in csi_collector.cMSYS_NO_PATHCONV=1prefixesptoolnot foundpip install esptoolVerified Test Results
cargo test -p wifi-densepose-hardware)pytest v1/tests/)Related
92a5182: feat(adr-018) ESP32-S3 firmware, Rust aggregator, and live CSI pipelinefirmware/esp32-csi-node/README.md: Firmware-specific documentationBeta Was this translation helpful? Give feedback.
All reactions