github ruvnet/RuView v0.4.2-esp32
v0.4.2-esp32: Channel Override + MAC Filter (ADR-060)

7 hours ago

ESP32-S3 CSI Node Firmware v0.4.2 — Channel Override + MAC Filter (ADR-060)

Boot Proof (COM7, 2026-03-13)

I (229) app_init: Project name:     esp32-csi-node
I (233) app_init: App version:      v0.4.2-esp32-dirty
I (238) app_init: Compile time:     Mar 13 2026 08:37:29
I (243) app_init: ELF file SHA256:  6fac16e35...
I (260) efuse_init: Chip rev:         v0.2
I (291) spi_flash: detected chip: gd
I (294) spi_flash: flash io: dio
I (370) nvs_config: No NVS config found, using compiled defaults
I (370) main: ESP32-S3 CSI Node (ADR-018) — Node ID: 1
I (390) wifi:wifi firmware version: 48ea317a7
I (530) wifi:mode : sta (3c:0f:02:ec:c2:28)
I (530) main: WiFi STA initialized, connecting to SSID: wifi-densepose

Firmware Binary Hashes (SHA-256)

File Size SHA-256
esp32-csi-node.bin 978,064 bytes 4884001780fff646946003a462498daf6f14b70e4f369d444d9eb0f5dbb68877
bootloader.bin 18,880 bytes 7fb987037d737a6f87fe955d4fa8ae1f872f1e4f7998a572910ee669989d84fb
partition-table.bin 3,072 bytes 67222c257c0477501fd4002275638dc4262b34eb68235b8289fb1337054d322b

New Features

Channel Override (--channel)

python provision.py --port COM7 --channel 6

Explicitly set CSI channel (1-14 for 2.4GHz, 36-177 for 5GHz). When omitted, firmware auto-detects channel from connected AP using esp_wifi_sta_get_ap_info().

MAC Address Filter (--filter-mac)

python provision.py --port COM7 --filter-mac AA:BB:CC:DD:EE:FF

Only collect CSI from frames matching the specified source MAC. Reduces noise in multi-AP environments.

Combined Example

python provision.py --port COM7 --ssid "MyWiFi" --password "secret" \
  --target-ip 192.168.1.20 --channel 6 --filter-mac AA:BB:CC:DD:EE:FF

Bug Fixes

  • Channel mismatch — Auto-detect AP channel after WiFi connect instead of hardcoding (#247)
  • MAC filter — Drop non-matching CSI frames before processing (#229)

Capabilities Verified on Hardware

Capability Status
ESP32-S3 boot (QFN56 rev v0.2) PASS
8MB GD flash detection PASS
NVS config load (defaults) PASS
WiFi STA init + connect retry PASS
ADR-018 binary frame format PASS
ADR-060 channel/MAC filter fields PASS
CSI collector init PASS
Edge intelligence defaults (tier 2) PASS
TDM defaults (slot 0, count 1) PASS

Flash Instructions

python -m esptool --chip esp32s3 --port COM7 --baud 460800 write_flash \
  0x0 bootloader.bin \
  0x8000 partition-table.bin \
  0x20000 esp32-csi-node.bin

Provisioning All Options

python provision.py --port COM7 \
  --ssid "MyWiFi" --password "secret" \
  --target-ip 192.168.1.20 --target-port 5005 \
  --node-id 1 \
  --tdm-slot 0 --tdm-total 3 \
  --edge-tier 2 \
  --channel 6 \
  --filter-mac AA:BB:CC:DD:EE:FF

Architecture

  • ADR-060: Channel override and MAC filter design
  • NVS keys: csi_channel (u8), filter_mac (6-byte blob)
  • Auto-channel: esp_wifi_sta_get_ap_info() after WiFi connect
  • MAC filter: memcmp(info->mac, ...) in CSI callback

Built with ESP-IDF v5.4 | Target: ESP32-S3 | Flash: 8MB (53% free)

Don't miss a new RuView release

NewReleases is sending notifications on new releases.