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

ruview @ v0.5.0-esp32

integrity

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

release notes

ESP32-S3 CSI Firmware v0.5.0 — mmWave Sensor Fusion (ADR-063/064)

What's New

60 GHz mmWave Radar Fusion — The firmware now auto-detects mmWave radar modules connected via UART and fuses their data with WiFi CSI for dramatically improved sensing.

Supported mmWave sensors:

Sensor Frequency Capabilities Cost
Seeed MR60BHA2 60 GHz Heart rate, breathing, presence, distance ~$15
HLK-LD2410 24 GHz Presence, distance (motion + static) ~$3

Auto-detection: The firmware probes UART1 (GPIO17/18) at boot — first at 115200 baud (MR60BHA2), then 256000 baud (LD2410). If a sensor is found, it registers capabilities and starts a background parsing task. No configuration needed.

48-byte fused vitals packet (magic 0xC5110004): When mmWave is active, vitals are fused using weighted Kalman averaging (mmWave 80% + CSI 20%). Falls back to the standard 32-byte CSI-only packet when no mmWave is detected — fully backward compatible.

Server-side fusion bridge (scripts/mmwave_fusion_bridge.py): For setups where the mmWave runs on a separate ESP32 (e.g., ESP32-C6 with ESPHome), this script reads both serial ports and fuses data in real-time.

Hardware Verified

Dual-sensor live capture (30 seconds, 2026-03-15):

Also Includes (from v0.4.3.1)

Download Guide

File Flash Size
esp32-csi-node.bin 8MB 990 KB
bootloader.bin Both 18 KB
partition-table.bin 8MB 3 KB
ota_data_initial.bin Both 8 KB
esp32-csi-node-4mb.bin 4MB 773 KB
partition-table-4mb.bin 4MB 3 KB

Flash — 8MB:

python -m esptool --chip esp32s3 --port COM7 --baud 460800 \
  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

Flash — 4MB:

python -m esptool --chip esp32s3 --port COM7 --baud 460800 \
  write_flash --flash_mode dio --flash_size 4MB --flash_freq 80m \
  0x0 bootloader.bin 0x8000 partition-table-4mb.bin \
  0xF000 ota_data_initial.bin 0x20000 esp32-csi-node-4mb.bin

Provision:

python firmware/esp32-csi-node/provision.py --port COM7 \
  --ssid "YourWiFi" --password "YourPassword" --target-ip 192.168.1.20

Full Changelog

See CHANGELOG.md

Closes #269

download

unix · zip
curl -fL -o v0.5.0-esp32.zip https://ratatoskr.space/pkg/ruview/v0.5.0-esp32.zip
                    printf '%s  %s\n' 'a0c3354d709c05bfc7b56100c7db320e227bea395f446b6dd46db37a889bbc19' 'v0.5.0-esp32.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/ruview/v0.5.0-esp32.zip"
$out = "v0.5.0-esp32.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "a0c3354d709c05bfc7b56100c7db320e227bea395f446b6dd46db37a889bbc19") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.5.0-esp32.tar.gz https://ratatoskr.space/pkg/ruview/v0.5.0-esp32.tar.gz
                    printf '%s  %s\n' 'ec4c3e823127e0aede02c686b3ac04a47fd6aeca45bd5809a12dbfeec2a65c40' 'v0.5.0-esp32.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/ruview/v0.5.0-esp32.tar.gz"
$out = "v0.5.0-esp32.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "ec4c3e823127e0aede02c686b3ac04a47fd6aeca45bd5809a12dbfeec2a65c40") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v0.5.0-esp32.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.5.0-esp32.zip
                    printf '%s  %s\n' 'a0c3354d709c05bfc7b56100c7db320e227bea395f446b6dd46db37a889bbc19' 'v0.5.0-esp32.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.5.0-esp32.zip"
$out = "v0.5.0-esp32.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "a0c3354d709c05bfc7b56100c7db320e227bea395f446b6dd46db37a889bbc19") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.5.0-esp32.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.5.0-esp32.tar.gz
                    printf '%s  %s\n' 'ec4c3e823127e0aede02c686b3ac04a47fd6aeca45bd5809a12dbfeec2a65c40' 'v0.5.0-esp32.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.5.0-esp32.tar.gz"
$out = "v0.5.0-esp32.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "ec4c3e823127e0aede02c686b3ac04a47fd6aeca45bd5809a12dbfeec2a65c40") { throw "sha256 mismatch" }
artifact format size hashes
v0.5.0-esp32.zip zip 25.1 MiB
blake3-24 394e94a757e4fbf466c7294d4ac22ba3f5c1eb0c7d06672a
sha256 a0c3354d709c05bfc7b56100c7db320e227bea395f446b6dd46db37a889bbc19
sha1 ae245e204679d96c4706c09ae69c7ca8c8f992c4
v0.5.0-esp32.tar.gz tar.gz 24.2 MiB
blake3-24 519abaf3f4ea0db148fd70b78c634febeffcd657244bd64a
sha256 ec4c3e823127e0aede02c686b3ac04a47fd6aeca45bd5809a12dbfeec2a65c40
sha1 220addbbee905da19a64fdb3f96f7f595c814ce5

install

bazel
http_archive(
    name = "ruview",
    urls = ["https://ratatoskr.space/pkg/ruview/v0.5.0-esp32.tar.gz"],
    integrity = "sha256-7Ew+gjEn4K7eAsaGs6wEpH/WrspFvVgJoS2/7sKmXEA=",
    strip_prefix = "ruview-v0.5.0-esp32",
)
zig
.url = "https://ratatoskr.space/pkg/ruview/v0.5.0-esp32.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
    name = "ruview",
    urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.5.0-esp32.tar.gz"],
    integrity = "sha256-7Ew+gjEn4K7eAsaGs6wEpH/WrspFvVgJoS2/7sKmXEA=",
    strip_prefix = "ruview-v0.5.0-esp32",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.5.0-esp32.tar.gz",
← v0.5.1-esp32v0.4.3.1-esp32 →