Adithyaraj Kanayamkottfield recordings rec · kerala, in

recording 01/04 — wifi radio (csi)

ThroughNet

Camera-free human sensing from ordinary WiFi.

role — everything: firmware to UIrust + c (esp32-s3)2026repobuilds on RuView / WiFi-DensePose (MIT, © ruvnet) — attribution in NOTICE.
room aroom b — behind the walltx — illuminatorrx — radio silentpresence — breathing 15 bpm

instrument — through-wall presence, live sketch. the tx beacons; the wall doesn't matter.

problem

Rooms are hard to watch without watching. Cameras see too much, wearables get taken off, and new sensors mean new wiring. The question worth asking: can a pair of $9 radios tell you someone is there, moving, breathing — through a wall?

signal

A person moving through a room perturbs the WiFi around them. Channel State Information describes exactly how a signal warped in flight. One ESP32-S3 becomes a quiet illuminator — a fixed-rate beacon, capturing nothing — while radio-silent receivers locked to its MAC measure how that beacon bends. Presence and motion live in one frequency band; breathing hides in the band the motion detector rejects (0.15–0.5 Hz).

build

The whole product is one self-contained Rust binary: it flashes boards over USB, provisions WiFi and roles, ingests CSI over the LAN, fuses every receiver link with staleness-aware weighting, and serves its own web UI. First run is a wizard — prepare, flash, connect, place, calibrate — and after that you get a live diorama of the room, fleet management with OTA A/B firmware updates, and a server log you can tail from the browser. 149 architecture decision records document the road.

proof

On a live three-board fleet: 0% false positives in an empty room, 100% presence detection in under 10 seconds, motion classification at 100%, and breathing estimated to ±0 BPM against a paced 15 BPM run. Honest scope: one fleet, one room, measured — second-room validation is still pending, and it says so in the README.

0%false positives
100%detection
<10slatency
±0bpm error
next recording — 02/04ARX↺ back to the log