yggvault ratatoskr-space connected via regular web
Color theme
also available via yggdrasil mesh http://[203:b338:2a84:a18f:986:47ae:1a4:d8d3]/pkg/ruview/v0.6.9-esp32
vault / ruview / v0.6.9-esp32

ruview @ v0.6.9-esp32

integrity

size
59.4 MiB
downloaded
last checked
source https://github.com/ruvnet/RuView · available · github

release notes

ESP32 CSI Node firmware v0.6.9

Tag: v0.6.9-esp32 Date: 2026-05-23 Branch: adr-110-esp32c6 (PR #764) ADR: ADR-110 §A0.11 + §A0.12 — sync-packet wired

What's new vs v0.6.8

Sync packet now emits from every CSI node. New 32-byte UDP packet (magic 0xC511A110) carries the mesh-aligned epoch + sequence high-water for the host aggregator to pair against incoming CSI frames. Closes the §A0.11 wiring gap so downstream ADR-029/030 multistatic CSI fusion can recover mesh time for every frame.

Field layout (LE little-endian, total 32 bytes):

Offset Field
[0..3] magic 0xC511A110 (distinct from CSI frame magic 0xC5110001)
[4] node_id
[5] proto_ver 0x01
[6] flags (bit 0 = leader, bit 1 = sync valid, bit 2 = smoothed_used)
[7] reserved
[8..15] local esp_timer_get_time() (u64)
[16..23] mesh-aligned epoch = local + EMA-smoothed offset (u64)
[24..27] high-water CSI sequence (u32) — pairing key
[28..31] reserved

Live verified in WITNESS-LOG-110 §A0.12: both C6 boards on the bench emit at the design cadence, follower's local − epoch matches the §A0.10 measured offset within 285 µs.

New operator knob

CONFIG_C6_SYNC_EVERY_N_FRAMES (default 20). At the bench's observed 10 fps CSI rate that's ~2 s between sync packets. Raise to 50 for ~5 s (less wire overhead, slower convergence); lower to 5 for ~0.5 s (heavier wire, tighter multistatic alignment window).

Build artifacts

Target Binary Size Partition slack
esp32s3 (8 MB) esp32-csi-node-s3-8mb.bin 1094 KB 47 %
esp32c6 (4 MB) esp32-csi-node-c6-4mb.bin 1019 KB 45 %

SHA-256 sums in SHA256SUMS.txt. Backwards-compatible at the wire level: old aggregators that don't know about magic 0xC511A110 drop the new packets on the magic-mismatch path that already exists for the CSI parser.

What's still on the table

download

unix · zip
curl -fL -o v0.6.9-esp32.zip https://ratatoskr.space/pkg/ruview/v0.6.9-esp32.zip
                    printf '%s  %s\n' 'd981bf78f2aa04449b40672c004839fb6c4c11afc467412a544fb80c964a5b49' 'v0.6.9-esp32.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/ruview/v0.6.9-esp32.zip"
$out = "v0.6.9-esp32.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "d981bf78f2aa04449b40672c004839fb6c4c11afc467412a544fb80c964a5b49") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.6.9-esp32.tar.gz https://ratatoskr.space/pkg/ruview/v0.6.9-esp32.tar.gz
                    printf '%s  %s\n' '53666e04dbbc0d3869cae96bc757385135cd5b06b214bda65940ebadefe0d469' 'v0.6.9-esp32.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/ruview/v0.6.9-esp32.tar.gz"
$out = "v0.6.9-esp32.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "53666e04dbbc0d3869cae96bc757385135cd5b06b214bda65940ebadefe0d469") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v0.6.9-esp32.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.6.9-esp32.zip
                    printf '%s  %s\n' 'd981bf78f2aa04449b40672c004839fb6c4c11afc467412a544fb80c964a5b49' 'v0.6.9-esp32.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.6.9-esp32.zip"
$out = "v0.6.9-esp32.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "d981bf78f2aa04449b40672c004839fb6c4c11afc467412a544fb80c964a5b49") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.6.9-esp32.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.6.9-esp32.tar.gz
                    printf '%s  %s\n' '53666e04dbbc0d3869cae96bc757385135cd5b06b214bda65940ebadefe0d469' 'v0.6.9-esp32.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.6.9-esp32.tar.gz"
$out = "v0.6.9-esp32.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "53666e04dbbc0d3869cae96bc757385135cd5b06b214bda65940ebadefe0d469") { throw "sha256 mismatch" }
artifact format size hashes
v0.6.9-esp32.zip zip 59.4 MiB
blake3-24 1d1fb003518cffc5c5cd3c56ace23070c620a6247119855e
sha256 d981bf78f2aa04449b40672c004839fb6c4c11afc467412a544fb80c964a5b49
sha1 7dc0e233489dc0f9bd47cb141107953139b29081
v0.6.9-esp32.tar.gz tar.gz 57.9 MiB
blake3-24 cc70072ed9e19d8a498f1b65f3f7667ff9df601ab52cfa94
sha256 53666e04dbbc0d3869cae96bc757385135cd5b06b214bda65940ebadefe0d469
sha1 04cc88c7e6126a09f3c64553cbbdc1b611699261

install

bazel
http_archive(
    name = "ruview",
    urls = ["https://ratatoskr.space/pkg/ruview/v0.6.9-esp32.tar.gz"],
    integrity = "sha256-U2ZuBNu8DThpyulrx1c4UTXNWwayFL2mWUDrre/g1Gk=",
    strip_prefix = "ruview-v0.6.9-esp32",
)
zig
.url = "https://ratatoskr.space/pkg/ruview/v0.6.9-esp32.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
    name = "ruview",
    urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.6.9-esp32.tar.gz"],
    integrity = "sha256-U2ZuBNu8DThpyulrx1c4UTXNWwayFL2mWUDrre/g1Gk=",
    strip_prefix = "ruview-v0.6.9-esp32",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.6.9-esp32.tar.gz",
← v0.7.0-esp32v0.6.8-esp32 →