github ruvnet/RuView v0.6.3-esp32
v0.6.3-esp32 — SPI cache crash fix + defensive copies

5 hours ago

Highlights

SPI flash cache crash fixed. ESP32-S3 nodes were crashing in cache_ll_l1_resume_icache / wDev_ProcessFiq after ~2400 CSI callbacks under high promiscuous-mode load. Validated on COM7: 3000 callbacks, 0 crashes during 4-min soak.

Fixes

  • MGMT-only promiscuous filter — narrows to WIFI_PROMIS_FILTER_MASK_MGMT (~10 Hz beacons, was 100–500 Hz with DATA frames included)
  • 50 Hz callback rate gateCSI_MIN_PROCESS_INTERVAL_US early-drops excess callbacks before any work happens
  • CONFIG_ESP_WIFI_EXTRA_IRAM_OPT=y — defense-in-depth against cache pressure
  • Defensive node_id capture — moved before wifi_init_sta(); g_nvs_config was being clobbered by WiFi driver init on some devices, reverting node_id to Kconfig default
  • Defensive filter_mac copy — module-local statics insulate the CSI callback from the same clobber path
  • provision.py esptool v5 compat — reverts to write_flash (works with both esptool 4.x bundled with ESP-IDF v5.4 and standalone esptool 5.x)

Closes #232 #375 #385 #386 #390 #396, supersedes #397.

Binaries

File Variant Size
esp32-csi-node.bin 8 MB flash 866 KB
bootloader.bin bootloader 18 KB
partition-table.bin 8 MB layout 3 KB
ota_data_initial.bin OTA boot data 8 KB
esp32-csi-node-4mb.bin 4 MB flash (SuperMini) 872 KB
partition-table-4mb.bin 4 MB layout 3 KB

Flash via esptool

python -m esptool --chip esp32s3 -b 460800 \
  --before default_reset --after hard_reset \
  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.bin

For 4 MB SuperMini, swap --flash_size 4MB and use the -4mb files.

Validation

Tested on real ESP32-S3 (COM7, MAC 3c:0f:02:e9:b5:f8):

  • Build clean: 866 KB, 54 % flash free
  • Flash: 5.7 s @ 1221 kbit/s, hash verified
  • Soak: 3000 callbacks across 240 s, breathing rate 9.2 br/min, 0 crashes, 0 drops

Don't miss a new RuView release

NewReleases is sending notifications on new releases.