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.4.2-esp32
vault / ruview / v0.4.2-esp32

ruview @ v0.4.2-esp32

integrity

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

release notes

ESP32-S3 CSI Node Firmware v0.4.2 — Channel Override + MAC Filter (ADR-060)

Boot Proof (COM7, 2026-03-13)

I (229) app_init: Project name:     esp32-csi-node
I (233) app_init: App version:      v0.4.2-esp32-dirty
I (238) app_init: Compile time:     Mar 13 2026 08:37:29
I (243) app_init: ELF file SHA256:  6fac16e35...
I (260) efuse_init: Chip rev:         v0.2
I (291) spi_flash: detected chip: gd
I (294) spi_flash: flash io: dio
I (370) nvs_config: No NVS config found, using compiled defaults
I (370) main: ESP32-S3 CSI Node (ADR-018) — Node ID: 1
I (390) wifi:wifi firmware version: 48ea317a7
I (530) wifi:mode : sta (3c:0f:02:ec:c2:28)
I (530) main: WiFi STA initialized, connecting to SSID: wifi-densepose

Firmware Binary Hashes (SHA-256)

File Size SHA-256
esp32-csi-node.bin 978,064 bytes 4884001780fff646946003a462498daf6f14b70e4f369d444d9eb0f5dbb68877
bootloader.bin 18,880 bytes 7fb987037d737a6f87fe955d4fa8ae1f872f1e4f7998a572910ee669989d84fb
partition-table.bin 3,072 bytes 67222c257c0477501fd4002275638dc4262b34eb68235b8289fb1337054d322b

New Features

Channel Override (--channel)

python provision.py --port COM7 --channel 6

Explicitly set CSI channel (1-14 for 2.4GHz, 36-177 for 5GHz). When omitted, firmware auto-detects channel from connected AP using esp_wifi_sta_get_ap_info().

MAC Address Filter (--filter-mac)

python provision.py --port COM7 --filter-mac AA:BB:CC:DD:EE:FF

Only collect CSI from frames matching the specified source MAC. Reduces noise in multi-AP environments.

Combined Example

python provision.py --port COM7 --ssid "MyWiFi" --password "secret" \
  --target-ip 192.168.1.20 --channel 6 --filter-mac AA:BB:CC:DD:EE:FF

Bug Fixes

Capabilities Verified on Hardware

Capability Status
ESP32-S3 boot (QFN56 rev v0.2) PASS
8MB GD flash detection PASS
NVS config load (defaults) PASS
WiFi STA init + connect retry PASS
ADR-018 binary frame format PASS
ADR-060 channel/MAC filter fields PASS
CSI collector init PASS
Edge intelligence defaults (tier 2) PASS
TDM defaults (slot 0, count 1) PASS

Flash Instructions

python -m esptool --chip esp32s3 --port COM7 --baud 460800 write_flash \
  0x0 bootloader.bin \
  0x8000 partition-table.bin \
  0x20000 esp32-csi-node.bin

Provisioning All Options

python provision.py --port COM7 \
  --ssid "MyWiFi" --password "secret" \
  --target-ip 192.168.1.20 --target-port 5005 \
  --node-id 1 \
  --tdm-slot 0 --tdm-total 3 \
  --edge-tier 2 \
  --channel 6 \
  --filter-mac AA:BB:CC:DD:EE:FF

Architecture

Built with ESP-IDF v5.4 | Target: ESP32-S3 | Flash: 8MB (53% free)

download

unix · zip
curl -fL -o v0.4.2-esp32.zip https://ratatoskr.space/pkg/ruview/v0.4.2-esp32.zip
                    printf '%s  %s\n' '1e1782ddbe2d2f11d826aee030d2fd26d4d754d83a89a35b4fdc60e99103f854' 'v0.4.2-esp32.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/ruview/v0.4.2-esp32.zip"
$out = "v0.4.2-esp32.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "1e1782ddbe2d2f11d826aee030d2fd26d4d754d83a89a35b4fdc60e99103f854") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.4.2-esp32.tar.gz https://ratatoskr.space/pkg/ruview/v0.4.2-esp32.tar.gz
                    printf '%s  %s\n' '2ede52b69120d836f07994357d8df75184750f07384bdce5808392205e2752e8' 'v0.4.2-esp32.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/ruview/v0.4.2-esp32.tar.gz"
$out = "v0.4.2-esp32.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "2ede52b69120d836f07994357d8df75184750f07384bdce5808392205e2752e8") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v0.4.2-esp32.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.4.2-esp32.zip
                    printf '%s  %s\n' '1e1782ddbe2d2f11d826aee030d2fd26d4d754d83a89a35b4fdc60e99103f854' 'v0.4.2-esp32.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.4.2-esp32.zip"
$out = "v0.4.2-esp32.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "1e1782ddbe2d2f11d826aee030d2fd26d4d754d83a89a35b4fdc60e99103f854") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.4.2-esp32.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.4.2-esp32.tar.gz
                    printf '%s  %s\n' '2ede52b69120d836f07994357d8df75184750f07384bdce5808392205e2752e8' 'v0.4.2-esp32.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.4.2-esp32.tar.gz"
$out = "v0.4.2-esp32.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "2ede52b69120d836f07994357d8df75184750f07384bdce5808392205e2752e8") { throw "sha256 mismatch" }
artifact format size hashes
v0.4.2-esp32.zip zip 35.1 MiB
blake3-24 1691428ce8e1e9e4320287212fe2318d6898382e4c214bc7
sha256 1e1782ddbe2d2f11d826aee030d2fd26d4d754d83a89a35b4fdc60e99103f854
sha1 1715e2d17aff28c1fae947f8f1448cb72d331d1c
v0.4.2-esp32.tar.gz tar.gz 32.9 MiB
blake3-24 ddc2df1a80af444d345f9e538f81648241b0ed6573c1216f
sha256 2ede52b69120d836f07994357d8df75184750f07384bdce5808392205e2752e8
sha1 f7f4915520f7cdb4425f31d547fbdbfa45b01a85

install

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