ruview @ v0.6.3-esp32
integrity
- size
- 43.6 MiB
- downloaded
- last checked
release notes
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 gate —
CSI_MIN_PROCESS_INTERVAL_USearly-drops excess callbacks before any work happens CONFIG_ESP_WIFI_EXTRA_IRAM_OPT=y— defense-in-depth against cache pressure- Defensive
node_idcapture — moved beforewifi_init_sta();g_nvs_configwas being clobbered by WiFi driver init on some devices, revertingnode_idto Kconfig default - Defensive
filter_maccopy — module-local statics insulate the CSI callback from the same clobber path provision.pyesptool v5 compat — reverts towrite_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
download
unix · zip
curl -fL -o v0.6.3-esp32.zip https://ratatoskr.space/pkg/ruview/v0.6.3-esp32.zip
printf '%s %s\n' '8a129a949704027cb47bf25c0331ce75362622b6d512eb66b4ab256e1bcc5bd1' 'v0.6.3-esp32.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/ruview/v0.6.3-esp32.zip"
$out = "v0.6.3-esp32.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "8a129a949704027cb47bf25c0331ce75362622b6d512eb66b4ab256e1bcc5bd1") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.6.3-esp32.tar.gz https://ratatoskr.space/pkg/ruview/v0.6.3-esp32.tar.gz
printf '%s %s\n' 'aebc95ae493a269d64de24fa169c662756f3537ff3baec1a0e1c9f21e518d3a3' 'v0.6.3-esp32.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/ruview/v0.6.3-esp32.tar.gz"
$out = "v0.6.3-esp32.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "aebc95ae493a269d64de24fa169c662756f3537ff3baec1a0e1c9f21e518d3a3") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v0.6.3-esp32.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.6.3-esp32.zip
printf '%s %s\n' '8a129a949704027cb47bf25c0331ce75362622b6d512eb66b4ab256e1bcc5bd1' 'v0.6.3-esp32.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.6.3-esp32.zip"
$out = "v0.6.3-esp32.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "8a129a949704027cb47bf25c0331ce75362622b6d512eb66b4ab256e1bcc5bd1") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.6.3-esp32.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.6.3-esp32.tar.gz
printf '%s %s\n' 'aebc95ae493a269d64de24fa169c662756f3537ff3baec1a0e1c9f21e518d3a3' 'v0.6.3-esp32.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.6.3-esp32.tar.gz"
$out = "v0.6.3-esp32.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "aebc95ae493a269d64de24fa169c662756f3537ff3baec1a0e1c9f21e518d3a3") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v0.6.3-esp32.zip | zip | 43.4 MiB |
blake3-24 aaa60d5e0d6c7c9720dc124ecb1a8db0bef0c883326cc425
sha256 8a129a949704027cb47bf25c0331ce75362622b6d512eb66b4ab256e1bcc5bd1
sha1 ccb78e29957f64f7ba8f15ca34fae35a7431deb8
|
| v0.6.3-esp32.tar.gz | tar.gz | 42.2 MiB |
blake3-24 7b7ab6a1870bd0255804d5f791ba6bc1ecdcce07e9c97c86
sha256 aebc95ae493a269d64de24fa169c662756f3537ff3baec1a0e1c9f21e518d3a3
sha1 d252c581d50e22637d7d59f53ae29829b78cdc17
|
install
bazel
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v0.6.3-esp32.tar.gz"],
integrity = "sha256-rryVrkk6Jp1k3iT6FpxmJ1bzU3/zuuwaDhyfIeUY06M=",
strip_prefix = "ruview-v0.6.3-esp32",
)
zig
.url = "https://ratatoskr.space/pkg/ruview/v0.6.3-esp32.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.6.3-esp32.tar.gz"],
integrity = "sha256-rryVrkk6Jp1k3iT6FpxmJ1bzU3/zuuwaDhyfIeUY06M=",
strip_prefix = "ruview-v0.6.3-esp32",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.6.3-esp32.tar.gz",