Skip to content

ESP32-S3 CSI Firmware v0.2.0 Released — MAC Filtering, TDM, Channel Hopping #102

@ruvnet

Description

@ruvnet

ESP32-S3 CSI Firmware v0.2.0

Release: https://github.com/ruvnet/wifi-densepose/releases/tag/v0.2.0-esp32

What's New

MAC Address Filtering (#98, #101)

  • Filter CSI frames by transmitter MAC to prevent signal mixing in multi-AP environments
  • Configure at compile time via Kconfig or at runtime via NVS — no reflash needed
  • Dropped frames are counted and reported in periodic logs

TDM Sensing Protocol (ADR-029/031)

  • Time-division multiplexing for multistatic mesh deployments
  • Each node gets a dedicated transmit slot to prevent self-interference
  • Configurable via NVS: tdm_slot, tdm_nodes

Channel Hopping

  • Configurable multi-channel scanning with adjustable dwell time
  • Channel list stored in NVS as a blob (up to 13 channels)
  • Backward-compatible: defaults to single-channel operation

NVS Runtime Configuration

  • All new parameters configurable without reflashing:
    • filter_mac (6-byte blob) — MAC address filter
    • hop_count, chan_list, dwell_ms — channel hopping
    • tdm_slot, tdm_nodes — TDM mesh config
  • Existing NVS keys still work: ssid, password, target_ip, target_port, node_id

Quick Start

# 1. Install esptool
pip install esptool

# 2. Download and flash pre-built binaries (no toolchain needed)
python -m esptool --chip esp32s3 --port COM7 --baud 460800 \
  write-flash --flash-mode dio --flash-size 4MB \
  0x0 bootloader.bin 0x8000 partition-table.bin 0x10000 esp32-csi-node.bin

# 3. Provision WiFi credentials (stored in NVS flash, not in binary)
python firmware/esp32-csi-node/provision.py --port COM7 \
  --ssid "YourWiFi" --password "YourPassword" --target-ip 192.168.1.20

# 4. Start the sensing server
cargo run -p wifi-densepose-sensing-server -- --http-port 3000 --source esp32

Hardware Tested

Board Port Status
ESP32-S3-DevKitC-1 (QFN56 rev v0.2) COM7 Verified — WiFi connected, CSI streaming, MAC filter working

Documentation

Related Issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions