diff --git a/firmware/esp32-csi-node/README.md b/firmware/esp32-csi-node/README.md index 7e960b68..147d3602 100644 --- a/firmware/esp32-csi-node/README.md +++ b/firmware/esp32-csi-node/README.md @@ -25,6 +25,23 @@ This firmware captures WiFi Channel State Information (CSI) from an ESP32-S3 and For users who want to get running fast. Detailed explanations follow in later sections. +### 0. Pre-built binaries (v0.6.5 — skip the build step) + +Pre-built binaries are in `firmware/esp32-csi-node/release_bins/` (version: see `release_bins/version.txt`). +Flash them directly: + +```bash +python -m esptool --chip esp32s3 --port COM7 --baud 460800 \ + write_flash --flash_mode dio --flash_size 8MB \ + 0x0 firmware/esp32-csi-node/release_bins/bootloader.bin \ + 0x8000 firmware/esp32-csi-node/release_bins/partition-table.bin \ + 0xf000 firmware/esp32-csi-node/release_bins/ota_data_initial.bin \ + 0x20000 firmware/esp32-csi-node/release_bins/esp32-csi-node.bin +``` + +For 4 MB boards use `release_bins/esp32-csi-node-4mb.bin` and `release_bins/partition-table-4mb.bin` +with `--flash_size 4MB`. + ### 1. Build (Docker -- the only reliable method) ```bash @@ -294,8 +311,9 @@ python -m serial.tools.miniterm COM7 115200 Expected output after boot: ``` -I (321) main: ESP32-S3 CSI Node (ADR-018) -- Node ID: 1 -I (345) main: WiFi STA initialized, connecting to SSID: wifi-densepose +I (396) csi_collector: Early capture node_id=1 (before WiFi init, #232/#390) +I (406) main: ESP32-S3 CSI Node (ADR-018) -- v0.6.5 -- Node ID: 1 +I (566) main: WiFi STA initialized, connecting to SSID: wifi-densepose I (1023) main: Connected to WiFi I (1025) main: CSI streaming active -> 192.168.1.100:5005 (edge_tier=2, OTA=ready, WASM=ready) ``` diff --git a/firmware/esp32-csi-node/provision.py b/firmware/esp32-csi-node/provision.py index 76d57058..d87ccd04 100644 --- a/firmware/esp32-csi-node/provision.py +++ b/firmware/esp32-csi-node/provision.py @@ -294,7 +294,7 @@ def flash_nvs(port, baud, nvs_bin, chip): "--chip", chip, "--port", port, "--baud", str(baud), - "write-flash", + "write_flash", hex(NVS_PARTITION_OFFSET), bin_path, ] print(f"Flashing NVS partition ({len(nvs_bin)} bytes) to {port} (chip={chip})...") @@ -499,7 +499,7 @@ def main(): f.write(nvs_bin) print(f"NVS binary saved to {out} ({len(nvs_bin)} bytes)") print(f"Flash manually: python -m esptool --chip {args.chip} --port {args.port} " - f"write-flash 0x9000 {out}") + f"write_flash 0x9000 {out}") # Persist merged state even on dry-run so a subsequent real flash from # this machine sees the same staged config. path = save_state(args.port, args.state_dir, merged) diff --git a/firmware/esp32-csi-node/release_bins/bootloader.bin b/firmware/esp32-csi-node/release_bins/bootloader.bin index 97bd8823..5dd2df2e 100644 Binary files a/firmware/esp32-csi-node/release_bins/bootloader.bin and b/firmware/esp32-csi-node/release_bins/bootloader.bin differ diff --git a/firmware/esp32-csi-node/release_bins/esp32-csi-node-4mb.bin b/firmware/esp32-csi-node/release_bins/esp32-csi-node-4mb.bin index 48b8b141..70f4a050 100644 Binary files a/firmware/esp32-csi-node/release_bins/esp32-csi-node-4mb.bin and b/firmware/esp32-csi-node/release_bins/esp32-csi-node-4mb.bin differ diff --git a/firmware/esp32-csi-node/release_bins/esp32-csi-node.bin b/firmware/esp32-csi-node/release_bins/esp32-csi-node.bin index 9ff70d51..a7be017b 100644 Binary files a/firmware/esp32-csi-node/release_bins/esp32-csi-node.bin and b/firmware/esp32-csi-node/release_bins/esp32-csi-node.bin differ diff --git a/firmware/esp32-csi-node/release_bins/version.txt b/firmware/esp32-csi-node/release_bins/version.txt new file mode 100644 index 00000000..f5ae7e6d --- /dev/null +++ b/firmware/esp32-csi-node/release_bins/version.txt @@ -0,0 +1,3 @@ +0.6.5 +git-sha: d72e06fc8 +built: 2026-05-20