ruview @ v0.8.3-esp32
integrity
- size
- 61.9 MiB
- downloaded
- last checked
release notes
ESP32-S3 CSI node firmware v0.8.3-esp32 — bug-fix release.
Fixed
- #1170 — multistatic fusion
DimensionMismatchflood. The live sensing-server bridge fed raw, un-canonicalized per-node CSI (HT20≈64 / HT40≈128/192 bins) intoMultistaticFuser, so fusion errored every cycle on a mixed mesh and silently fell back to per-node sum/dedup. Node frames are now resampled onto the canonical 56-tone grid (resample-only, no z-score) before fusion. - #1180 —
csi_fps_emainflated 40–840×. Sub-millisecond UDP burst arrivals (36 µs → ~27 kHz) polluted the per-node frame-rate EMA. A 5 ms plausibility floor now rejects burst deltas, and the arrival anchor is kept across bursts so the next genuine gap measures true cadence. - #1183 — ENOMEM backoff starved control packets. Under a weak uplink the global CSI backoff also suppressed the ≤48 B/≤1 Hz
feature_state/HEALTH/sync packets. A new priority send path bypasses the backoff gate (without touching the streak) for those control packets; the misleading"HEALTH sent"log now reports the real send result.
Tooling
- Added
scripts/firmware-release-guard.sh(#1194): regenerates the expected partition table from the variant's CSV and byte-compares it to the builtpartition-table.bin(+ flash-size cross-check), failing closed so a release can't ship a partition table that doesn't match its flash-size variant.
Verification (MEASURED)
wifi-densepose-signal: 501 passed, 0 failedwifi-densepose-sensing-server: 677 passed, 0 failed- Firmware: both variants build clean (ESP-IDF v5.4); release guard PASS for 8MB (
partitions_display.csv) and 4MB (partitions_4mb.csv). - ✅ Hardware smoke test PASS — flashed the 8MB build to an ESP32-S3 (QFN56 rev v0.2, the #1116 board); booted clean, streamed real WiFi CSI (mixed
len=128/len=384, RSSI −42…−59), emitted HEALTH/feature_state via the #1183 priority path, mesh time-syncfail=0, and no #1116 edge_dsp watchdog crash over the capture. Note: #1183 starvation needs a weak (~−78 dBm) uplink to trigger; strong-RSSI bench run shows no regression but does not reproduce that specific condition.
Binaries
| File | Variant | SHA-256 |
|---|---|---|
esp32-csi-node-s3-8mb.bin |
8MB/common | ed825c52468e8ecf1cfd14417914d9e2b6acd2b1489bd60168d2559ee3ba6c88 |
esp32-csi-node-s3-4mb.bin |
4MB | 94c547a033448b437a65659bbcd8c81616d5e5d83990a9f7829625a5581bad66 |
bootloader.bin |
8MB/common | 74f90ff55a097539d788bef133c6fd2b13ee85f53b1e07f23d65de2d2f63941d |
ota_data_initial.bin |
8MB/common | 7d2c7ac4888bfd75cd5f56e8d61f69595121183afc81556c876732fd3782c62f |
partition-table.bin |
8MB/common | 67222c257c0477501fd4002275638dc4262b34eb68235b8289fb1337054d322b |
partition-table-4mb.bin |
4MB | 4c2cc4ffd52641e23b779bd57b3908014083ac3c1aab395756478c89e70d81f0 |
download
unix · zip
curl -fL -o v0.8.3-esp32.zip https://ratatoskr.space/pkg/ruview/v0.8.3-esp32.zip
printf '%s %s\n' '89d2da0599a904bc977dcc6ee2186b85e9f127f69e3ee1b113fb38a735b3071f' 'v0.8.3-esp32.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/ruview/v0.8.3-esp32.zip"
$out = "v0.8.3-esp32.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "89d2da0599a904bc977dcc6ee2186b85e9f127f69e3ee1b113fb38a735b3071f") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.8.3-esp32.tar.gz https://ratatoskr.space/pkg/ruview/v0.8.3-esp32.tar.gz
printf '%s %s\n' '38afac63b1d22e19ad2b169bb5dd459e521a2ba13ebcc94d291e142231e43ecf' 'v0.8.3-esp32.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/ruview/v0.8.3-esp32.tar.gz"
$out = "v0.8.3-esp32.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "38afac63b1d22e19ad2b169bb5dd459e521a2ba13ebcc94d291e142231e43ecf") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v0.8.3-esp32.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.8.3-esp32.zip
printf '%s %s\n' '89d2da0599a904bc977dcc6ee2186b85e9f127f69e3ee1b113fb38a735b3071f' 'v0.8.3-esp32.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.8.3-esp32.zip"
$out = "v0.8.3-esp32.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "89d2da0599a904bc977dcc6ee2186b85e9f127f69e3ee1b113fb38a735b3071f") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.8.3-esp32.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.8.3-esp32.tar.gz
printf '%s %s\n' '38afac63b1d22e19ad2b169bb5dd459e521a2ba13ebcc94d291e142231e43ecf' 'v0.8.3-esp32.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.8.3-esp32.tar.gz"
$out = "v0.8.3-esp32.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "38afac63b1d22e19ad2b169bb5dd459e521a2ba13ebcc94d291e142231e43ecf") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v0.8.3-esp32.zip | zip | 61.9 MiB |
blake3-24 13f205f7cc547bc8d2c59b7f657bce95390409e224758186
sha256 89d2da0599a904bc977dcc6ee2186b85e9f127f69e3ee1b113fb38a735b3071f
sha1 19fa4a954320645c251a88196de04d9d157dd981
|
| v0.8.3-esp32.tar.gz | tar.gz | 60.1 MiB |
blake3-24 079f3edb43cfd3aa29aac0c1e7568353b41a2dc442752c8c
sha256 38afac63b1d22e19ad2b169bb5dd459e521a2ba13ebcc94d291e142231e43ecf
sha1 0619eb5c62884d1f937c7d4834e0e2879e03177a
|
install
bazel
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v0.8.3-esp32.tar.gz"],
integrity = "sha256-OK+sY7HSLhmtKxabtd1FnlIaK6E+vMlNKR4UIjHkPs8=",
strip_prefix = "ruview-v0.8.3-esp32",
)
zig
.url = "https://ratatoskr.space/pkg/ruview/v0.8.3-esp32.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.8.3-esp32.tar.gz"],
integrity = "sha256-OK+sY7HSLhmtKxabtd1FnlIaK6E+vMlNKR4UIjHkPs8=",
strip_prefix = "ruview-v0.8.3-esp32",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.8.3-esp32.tar.gz",