ESP32-S3 CSI Firmware v0.4.1
Critical bugfix release — fixes CSI not being enabled in pre-built firmware binaries.
What was broken
The committed sdkconfig had CONFIG_ESP_WIFI_CSI_ENABLED disabled (line 1135), causing all builds to produce firmware that crashed at runtime with:
E (6700) wifi:CSI not enabled in menuconfig!
This affected all pre-built binaries from v0.1.0 through v0.4.0-alpha.
Fixes (ADR-057)
sdkconfig— CSI now enabled (CONFIG_ESP_WIFI_CSI_ENABLED=y)sdkconfig.defaults— Created from template so fresh builds always inherit CSIcsi_collector.c— Added#errorcompile-time guard to prevent this from recurringsdkconfig.defaults.template— Fixed NVS encryption default (was causing build failure)
Verified
- Built with Docker (
espressif/idf:v5.2) - Flashed to ESP32-S3 (QFN56, rev v0.2, 8MB GD flash)
- Boot log confirms CSI initialization without errors
- Binary size: 1,041 KB (49% partition free)
Flashing
python -m esptool --chip esp32s3 --port COM7 --baud 460800 \
write_flash --flash-mode dio --flash-size 8MB --flash-freq 80m \
0x0 bootloader.bin \
0x8000 partition-table.bin \
0xf000 ota_data_initial.bin \
0x20000 esp32-csi-node.binProvisioning (after flash)
python firmware/esp32-csi-node/provision.py \
--port COM7 --ssid "YOUR_WIFI" --password "YOUR_PASS" \
--target-ip YOUR_PC_IP --target-port 5005Hardware Support
| Variant | Status |
|---|---|
| ESP32-S3 (all: DevKitC, N16R8, Super Mini, Zero) | Supported |
| ESP32 (original D0WD) | Unsupported (use ADR-018 frame format for interop) |
| ESP32-C3 | Unsupported (RISC-V, needs separate build target) |
| ESP32-C6 | Unsupported (RISC-V, needs separate build target) |
Related Issues
- #241 — Tracking issue for this fix
- #223 — CSI not enabled in menuconfig (root cause)
- #238 — 0.4 firmware not working (original ESP32, unsupported variant)
- #234 — ESP32-C3 support request
- #210 — Flashing issues with Super Mini
- #190 — No data received from ESP32-S3
SHA256 Checksums
See SHA256SUMS.txt attached to this release.