English
AI
About AI-Era Engineering Blog Contact AI version

BLOG

Seeing Through Walls With WiFi — Trying the Camera-Free Human-Detection OSS 『RuView』 on ESP32

『RuView』 is a Rust OSS that estimates human presence, breathing, and posture with no camera, using WiFi reflections (CSI). Here's how you build it on a $9 ESP32-S3, how to try it with Docker, and how it differs from esp-csi.

#WiFi#ESP32#CSI#Rust#OSS#Sensing

Illustration of RuView detecting a person's posture through a wall using WiFi signal reflections

Estimating a person’s presence, breathing rate, heart rate — and even their body posture — using nothing but the WiFi radio waves already bouncing around the room, with no camera at all. It sounds like science fiction, but we’ve reached the point where you can reproduce it with a $9 microcontroller and open-source software.

At the center of it is ruvnet/RuView — a Rust WiFi-sensing platform that has gathered more than 60,000 stars. It turns an ESP32-S3 into a sensor node, analyzes the “reflection patterns” of WiFi signals, and reads the state of a space without ever capturing any imagery.

This article lays out how RuView works and how it’s architected, how to actually try it, and how it differs from similar OSS projects (espressif/esp-csi, WirelessEye). The aim is to give you the material you need to decide “should I adopt this for my own project?”

Why a person becomes “visible” without a camera

The key is CSI (Channel State Information).

WiFi signals don’t travel in a straight line from transmitter to receiver. They bounce off walls, furniture — and the human body — arriving at the receiver via multiple paths. CSI is a fine-grained record of “which frequencies arrived, how much they were attenuated, and how much their phase was shifted.”

  • A person moves → the reflection paths change → the CSI waveform changes
  • A person breathes → the chest rises and falls by millimeters → a periodic micro-variation appears in the CSI
  • A person holds a specific posture → a unique “fingerprint” shows up in the reflection pattern

In other words, a WiFi router is already “illuminating” the room simply by emitting radio waves. RuView is positioned as the receiving sensor that reads that reflected light (radio). Because it holds no imagery the way a camera does, the resistance on the privacy front is overwhelmingly smaller — and that is its greatest advantage.

RuView’s architecture

RuView is broadly split into three layers.

1. Sensor node (ESP32-S3)

The $9 ESP32-S3 plays the role of emitting the raw CSI data. The ESP32 family has a CSI-acquisition API at the chip level, so you can stand at the entrance to WiFi sensing with a cheap off-the-shelf microcontroller — no dedicated SDR (software-defined radio) hardware required. This is exactly what rapidly democratized the genre.

2. Processing engine (Rust)

Raw CSI is full of noise. RuView’s core is a signal-processing and inference engine written in Rust, and it handles the following:

  • Preprocessing such as noise removal and phase correction
  • Extraction of periodic components like breathing and heartbeat
  • Feature computation and model inference for posture and presence detection

The choice of Rust is surely aimed at combining real-time performance with memory safety. For signal processing that runs continuously at the edge, it’s a reasonable pick.

3. Visualization / API layer

This is the layer that exposes the estimation results to the outside via a dashboard or API. Since it can all be brought up together with Docker, spinning it up on your own machine first is the quickest way to grasp the whole picture.

Trying it with Docker

Before building anything deep, seeing it in a working state first is the shortcut to understanding. RuView is set up to launch as a full stack via Docker Compose.

git clone https://github.com/ruvnet/RuView.git
cd RuView
docker compose up

This brings up the processing engine and the visualization layer, and you can reach the dashboard from your browser. The setup is designed so that you can feed in sample CSI data and confirm the behavior even without a physical ESP32-S3 on hand, so if you want to feel out “what can even be read from CSI in the first place,” starting here is the shortest path.

To actually sense, you go further: flash the firmware onto the ESP32-S3 and send the CSI stream toward the engine. Only at this stage does “the breathing on the other side of the wall” finally emerge as numbers.

How it differs from esp-csi / WirelessEye

RuView isn’t the only WiFi-sensing OSS. To help with adoption decisions, here are three representative ones.

espressif/esp-csi

This is Espressif’s official repository, centered on firmware and samples for acquiring CSI on the ESP32. Its positioning is “CSI acquisition and basic samples,” and it assumes you’ll build the higher-level inference, visualization, and operations yourself.

  • Strength: Official, lightweight, closest to the chip — CSI acquisition is rock solid
  • Weakness: Doesn’t cover presence detection or posture estimation. It’s a foundation, not a finished product

RuView becomes easy to place if you think of it as stacking inference, visualization, and operations on top of that esp-csi-style “acquire the CSI” layer.

WirelessEye

This is a tool focused on visualizing CSI in real time. It’s strong in the research and learning phase, when you first want to see with your own eyes “what’s showing up in the radio waves.” That said, it isn’t the kind of processing foundation you’d embed directly into a product as-is.

Where RuView stands

OSSFocusCharacter of completeness
esp-csiCSI acquisitionFoundation (upper layers DIY)
WirelessEyeCSI visualizationFor observation / learning
RuViewAcquisition → inference → visualizationIntegrated platform

If you want to “understand the mechanism first,” peeking at the radio waves with esp-csi or WirelessEye is quick. If you want to “try presence, breathing, and posture end-to-end,” go with RuView — that’s how the division of labor shakes out.

Realistic caveats when considering adoption

It’s a technology full of promise, but if you’re going to use it in production, you need a cool-headed line-drawing.

  • Accuracy depends on the environment: CSI changes dramatically with furniture placement, wall materials, and interference from other WiFi devices. It’s not that “any room instantly yields accuracy” — per-environment calibration is a prerequisite.
  • Not a camera replacement, but a different thing: Identifying individuals and recognizing fine movements is the camera’s domain. Where CSI is strong is not “who” but privacy-conscious, coarse state awareness like “someone is here / moved / is breathing.”
  • It suits particular uses: Elderly monitoring, HVAC and lighting control via occupancy detection, vital monitoring during sleep — its true value shows exactly in places where you don’t want to put a camera.

Put the other way: on sites with the constraint “can’t / don’t want to place a camera,” RuView — which you can start with a $9 ESP32 — is a very attractive option.

Summary

WiFi sensing has moved from an era that required dedicated, expensive equipment into a phase where anyone can try it with a cheap microcontroller and OSS. RuView bundles that “from acquisition through inference and visualization” into one, making it one of the most approachable entry points available right now.

First run it with Docker to feel out what shows up in the CSI, and if it clicks, buy a single ESP32-S3 and advance to real measurement — with this order, a few thousand yen and a few hours get you touching a world where “you can see through walls with WiFi.”

If you’re considering a sensor-data processing foundation, or product development that involves these kinds of edge devices, please feel free to reach out to Wired & Eco, Inc.

CONTACT

Contact

Feel free to reach out about projects. We typically reply within 2 business days.