docs/research/sota/2026-Q2-rf-sensing-and-edge-rust.md
| Field | Value |
|---|---|
| Status | Reference / informs architecture/three-tier-rust-node.md |
| Date | 2026-04-25 |
| Author | goal-planner research agent |
| Scope | What's true in 2026, what holds up in the three-tier proposal, what to reconsider |
| Word target | ~3,500 words |
Conventions. Each section answers (a) what's true in 2026, (b) what claims in the three-tier proposal hold up, (c) what to reconsider, and (d) primary references. Where no primary source could be located, the claim is explicitly marked "no primary source found, mark as conjecture."
The CSI-to-pose literature has matured along three orthogonal axes since DensePose-from-WiFi (2022) lit the fuse:
50% — but those are still order-of-magnitude worse than in-domain.
The proposal's claim that "3–6 ESP32-S3 nodes can do meaningful pose work" is consistent with WiFlow's network sizes (4.82 M params, INT8 ~5 MB) and with the MM-Fi multi-link benchmark. The CSI pipeline does not need a Pi per node to run inference; one Pi per cluster is sufficient. RuView's existing ESP32-mesh + sensing-server already demonstrates the shape.
IEEE Std 802.11bf-2025 was published 26 September 2025 and is the ratified amendment for WLAN sensing in license-exempt bands 1–7.125 GHz and >45 GHz. The 3rd SA Ballot Recirculation closed 16 January 2025 with 98% approval. P802.11bf/D8.0 (March 2025) was the last public draft. The standard defines sensing operation on top of HE/EHT PHYs and on the DMG/EDMG (60 GHz) PHYs.
3GPP RAN #108 (June 2025) admitted ISAC into the 6G study scope as a "Day 1" 6G feature. ISAC-Fi (Aug 2024) demonstrated monostatic sensing over commodity WiFi by repurposing the communication waveform. Multistatic ISAC over cell-free MIMO (2024–2025) is the analytical direction.
The three-tier proposal's framing of "WiFi mesh + multistatic sensing" is well-aligned with where the standard is moving. ADR-029's existing multistatic mode and ADR-073's multifrequency mesh scan are the kind of pre-standard implementations that 802.11bf is now codifying.
The esp-rs ecosystem has matured but rebranded:
esp-hal is at 1.x. esp-hal 1.0.0 shipped October 2023; 1.1.0
was released April 2024. Stabilized HAL APIs, async drivers, but with
the constraint that "async drivers can no longer be sent between
cores and executors."esp-wifi was renamed to esp-radio in the 1.x line. The
scheduler functionality moved to a new crate esp-rtos. Existing
esp-wifi references in tutorials are pre-1.x.esp-rtos over time.esp-idf-svc (std) has a documented gotcha:
embassy-executor is not ISR-safe because it depends on
critical-section, which esp-idf-hal implements over FreeRTOS task
suspension. The recommended std executor is edge-executor or the
built-in esp-idf-hal executor.esp-csi-rs (third-party crate) exists
but is documented as "still in early development." The
production-blessed CSI path remains esp_wifi_set_csi_rx_cb() in
ESP-IDF C — exactly what firmware/esp32-csi-node/main/csi_collector.c
uses today.The three-tier proposal's choice to put the sensor MCU on no_std
(esp-hal + Embassy) avoids the ESP-IDF ISR-safety question entirely,
which is the right architectural answer to a real problem. The proposal
is correct that heapless + postcard + embassy-time is the modern
no_std default.
esp-wifi; in 1.x
this is esp-radio. It lists embassy-executor on the comms MCU
by implication; on the comms MCU the executor must be
edge-executor or esp-idf-hal's built-in executor, not Embassy.esp-csi-rs is early
development and the production CSI path is still C. Migrating CSI to
no_std Rust is a project unto itself, not a free side effect of
splitting the dies.esp-idf-svc parity with C ESP-IDF is good but not 100%. OTA,
HTTPS, NVS, BLE provisioning, ESP-WIFI-MESH all have wrappers. Some
niche ESP-IDF C APIs still need esp-idf-sys raw FFI. This is fine
but means the comms MCU is not "all-Rust" — there's a layer of unsafe
wrapping at the bottom.esp-tflite-micro is the reference
port.tract (Sonos's pure-Rust ONNX/NNEF runtime) targets std Linux
primarily; there is no widely-adopted no_std no-alloc port.candle (Hugging Face's Pytorch-flavored Rust ML library) is std
Linux/macOS/Windows; not designed for MCU class.ort Rust binding) is a wrapper over the C++
runtime; on ARMv8 (Pi Zero 2W) it works, on Xtensa it does not.For a 4.82 M-param INT8 WiFlow at 0.47 GFLOPs:
The proposal's split between "sensor MCU does ISR-clean DSP" and "Pi runs the model" is the right shape. ML inference at the WiFlow scale is not an ESP32 workload in 2026.
tract or candle no_std.wifi-densepose-nn already has FFI hooks) or a
Rust port of a tiny TFLM-style runtime. No mainstream Rust
no_std-no_alloc ONNX runtime exists in production at 2026 Q2.quinn + rustls is the production Rust QUIC stack. Both target
std Linux, both work fine on ARMv8 (Pi Zero 2W). rustls is
FIPS-validatable via the AWS-LC backend.The proposal's choice of quinn for the Pi-to-cloud ring is sound and
matches what EMQX, NanoMQ, and Microsoft (MsQuic) are converging on.
rustls is a strong default.
lora-phy
and most Meshtastic boards.For a 20-byte heartbeat at SF7, BW 125 kHz, the airtime is ~40 ms. At the EU868 1% duty cycle, that's 36 s/hour available — more than 900 heartbeats per hour theoretical max.
SX1262 for fallback heartbeats is the correct, well-priced choice. The proposal's "bytes per minute" framing is well within EU868 1% and US915 dwell-time budgets.
rv_feature_state_t at 5 Hz is 2.4
kbps gross, 480 B/s, well within budget if compressed and gated.
Raw ADR-018 frames at 100 KB/s/node are not LoRa-shaped.For a 2 W panel and a node-average load that bursts to 350 mA, the BQ24074 (linear) is sufficient. The proposal's choice is fine.
esp-mesh-lite is the lighter, IP-layer-routable
alternative.For < 25-node deployments, ESP-WIFI-MESH (or esp-mesh-lite) is the
direct continuation of today's RuView mesh and the proposal's choice is
defensible.
usbboot tooling. There is no equivalent on the Pi Zero 2W
(BCM2710A1).bcm2711_defconfig as the Pi 4).swupdate and RAUC are the well-known frameworks; both work on Pi
Zero 2W.The proposal's "buildroot, not Raspberry Pi OS" instinct is correct. RPi OS does not support secure boot on any Pi.
fwupd is the package-manager-style update agent; or a
self-rolled "update-agent" binary signed by the project key. Either
works; project-style fits with the homogeneous Rust toolchain better.A short list of items that affect more than one section:
esp-csi-rs (or whatever replaces it under esp-radio)
does not match esp_wifi_set_csi_rx_cb in capture quality and
ISR-jitter, the sensor-MCU shape collapses back to "C ESP-IDF on the
sensor MCU too" and the value of the split shrinks.This section is required by the project conventions and lists each non-trivial claim where a primary source could not be located in this research pass:
(Primary references are inlined per-section. This is the unique domains list for quick reuse.)
standards.ieee.orgarxiv.orgieeexplore.ieee.orgdocs.espressif.comgithub.com/espressifgithub.com/esp-rs, crates.io/crates/esp-csi-rs,
docs.rs/esp-idf-halembassy.devthethingsnetwork.orgti.comadafruit.com, blog.adafruit.comlists.buildroot.orgsilabs.comforum.digikey.comnist.govmdpi.comemqx.comforums.raspberrypi.com,
github.com/raspberrypi/usbbootnicerf.comwiki.dfrobot.com