Skip to content

WiFi-Based Human Sensing Without Cameras: Privacy-First Smart Home Detection in Rust

The Privacy Problem with Smart Home Sensors

I wanted to add presence detection to my smart home. But every option I looked at had a problem.

Cameras? No way. I don’t want video recordings of my family in cloud storage.

PIR motion sensors? They only detect movement. If I sit still reading a book, the lights turn off.

Radar sensors? Expensive and hard to configure properly.

Then I saw RuView trending on GitHub. It gained 1,002 stars in one day. The claim: real-time human pose detection using only WiFi signals. No cameras. Privacy-first.

This post shows how WiFi CSI sensing works, why it’s different from traditional sensors, and how Rust makes it practical for real-world use.

What Is WiFi CSI Sensing?

WiFi CSI stands for Channel State Information. When your WiFi router sends signals to devices, the signals bounce off walls, furniture, and people. Each bounce changes the signal slightly.

CSI captures these changes. Think of it like WiFi “seeing” the environment by measuring how signals get distorted.

How WiFi CSI works
Router sends signal → Signal bounces off objects → CSI captures changes
Person in room → Changes signal pattern → CSI detects presence

Traditional WiFi only uses signal strength (RSSI). CSI uses the full signal structure: amplitude, phase, and frequency across multiple antennas. This provides much more information about what’s in the room.

The key insight: you don’t need cameras because WiFi signals already pass through everything. They “see” what’s happening without recording visual images.

Why RuView Caught My Attention

RuView is a Rust implementation of WiFi CSI sensing. It does three things:

  1. Presence detection: Know if someone is in the room
  2. Pose estimation: Detect standing, sitting, lying down
  3. Vital signs: Measure breathing rate through signal changes

All without a single camera.

RuView capabilities vs traditional sensors
┌─────────────────┬──────────────┬──────────────┬──────────────┐
│ Feature │ Camera │ PIR Sensor │ WiFi CSI │
├─────────────────┼──────────────┼──────────────┼──────────────┤
│ Visual recording│ YES (privacy │ NO │ NO │
│ │ concern) │ │ │
├─────────────────┼──────────────┼──────────────┼──────────────┤
│ Static presence │ YES │ NO (needs │ YES │
│ detection │ │ movement) │ │
├─────────────────┼──────────────┼──────────────┼──────────────┤
│ Through walls │ NO │ NO │ YES │
├─────────────────┼──────────────┼──────────────┼──────────────┤
│ Vital signs │ NO │ NO │ YES │
├─────────────────┼──────────────┼──────────────┼──────────────┤
│ Cost │ $50-200 │ $10-30 │ $0 (existing │
│ │ │ │ router) │
└─────────────────┴──────────────┴──────────────┴──────────────┘

The 1,002 stars in one day shows developers understand the privacy value. No one wants cameras in every room. But everyone already has WiFi.

How It Works: The Technical Picture

WiFi CSI sensing works in three steps:

Step 1: Capture CSI Data

WiFi routers with multiple antennas send signals. The receiver measures how each signal arrives: amplitude, phase, and timing.

CSI signal structure
Antenna 1: amplitude + phase = "picture" of room from angle 1
Antenna 2: amplitude + phase = "picture" of room from angle 2
Antenna 3: amplitude + phase = "picture" of room from angle 3
Combine signals → 3D picture of environment (no actual images)

Step 2: Process Signal Changes

When a person enters the room, their body reflects and absorbs WiFi signals. This changes the CSI pattern.

The changes are subtle. A person breathing creates tiny periodic variations in the signal. A person walking creates larger, faster changes.

Signal change patterns
Empty room: CSI pattern is stable
Person enters: CSI pattern shifts
Person breathing: CSI pattern oscillates at ~0.3 Hz
Person walking: CSI pattern changes rapidly
Person lying down: CSI pattern different from standing

Step 3: Classify with Machine Learning

The CSI patterns feed into a classifier. RuView uses neural networks trained on labeled CSI data.

Training requires collecting CSI readings with known activities: “this pattern = person standing”, “this pattern = person sitting”, “this pattern = empty room”.

Once trained, the model can classify new CSI readings in real-time.

Why Rust Matters Here

RuView is written in Rust. This matters for three reasons:

1. Real-Time Performance

CSI processing needs to happen quickly. WiFi signals arrive at millisecond intervals. Processing lag means detection lag.

Rust’s zero-cost abstractions and no garbage collection pauses make it suitable for real-time signal processing.

2. Embedded Deployment

WiFi sensing often runs on routers or small devices. Rust compiles to efficient binaries that work well on embedded hardware.

No need for a full Python environment or heavy runtime.

3. Memory Safety

Signal processing code handles buffers, arrays, and complex data structures. Memory errors cause crashes or incorrect readings.

Rust’s ownership system prevents buffer overflows and use-after-free bugs that plague C/C++ signal processing code.

Practical Setup Challenges

When I looked at implementing WiFi CSI sensing, I found several challenges:

Hardware Requirements

Not all WiFi hardware supports CSI extraction. You need:

  • WiFi cards with CSI-enabled firmware (Intel 5300, Atheros CSI tools)
  • Router that exposes CSI data
  • Or dedicated CSI capture hardware

This is the biggest barrier. Most consumer routers don’t expose CSI.

Data Collection

Training the classifier requires labeled data. You need to:

  1. Set up CSI capture hardware
  2. Record CSI while doing specific activities
  3. Label each recording: “standing”, “sitting”, “walking”, “empty”
  4. Train the model

This takes time and effort. RuView provides pre-trained models, which helps.

Environmental Calibration

CSI patterns depend on the room layout. Furniture position, wall materials, even humidity affects signals.

The model needs calibration for each environment. A model trained in one room won’t work perfectly in another.

Comparison with Alternatives

I compared WiFi CSI with other presence detection options:

Cameras

Pros: Accurate, can identify specific people, works in any lighting Cons: Privacy nightmare, requires visual recording, expensive, needs good lighting

For presence detection, cameras are overkill. You don’t need to know who’s there or what they look like. Just that someone is there.

PIR Motion Sensors

Pros: Cheap, easy to install, no privacy issues Cons: Only detects movement, fails with static people, one room only

PIR sensors are fine for hallway lighting. But they fail for occupancy detection. If you’re working at a desk, PIR thinks the room is empty.

mmWave Radar

Pros: Detects static presence, no cameras, good accuracy Cons: Expensive ($50-100 per sensor), limited range, complex configuration

mmWave radar is the closest alternative to WiFi CSI. It detects presence without cameras. But it requires dedicated hardware for each room.

WiFi CSI

Pros: Uses existing WiFi hardware, detects static presence, privacy-safe, through walls, vital signs possible Cons: Requires CSI-enabled hardware, environmental calibration, less mature technology

WiFi CSI is the only option that uses hardware you already have while providing full presence detection.

When to Use WiFi CSI Sensing

WiFi CSI sensing works best for:

  1. Smart home lighting: Turn lights on when someone enters, keep them on while person stays (PIR fails here)
  2. Security monitoring: Detect occupancy without cameras, privacy-preserving alarm systems
  3. Elder care: Monitor presence and vital signs without cameras, detect falls
  4. Office occupancy: Track room usage for HVAC optimization, no visual recording

The key: you need presence detection without visual recording. If privacy isn’t a concern, cameras are simpler. If you only need motion detection, PIR is cheaper. WiFi CSI fills the gap between them.

What I Learned

After researching RuView and WiFi CSI, I understand why it trended:

  1. Privacy is a real concern: People don’t want cameras everywhere. A solution that uses existing hardware without recording images is valuable.

  2. WiFi is ubiquitous: Everyone has WiFi routers. Using existing infrastructure for sensing reduces cost and deployment friction.

  3. Rust enables deployment: Real-time, embedded, memory-safe. These matter for practical signal processing systems.

  4. The technology is emerging: CSI sensing isn’t plug-and-play yet. But RuView’s Rust implementation shows what’s possible.

The 1,002 GitHub stars in one day shows developers see the potential. Privacy-preserving presence detection using existing WiFi hardware. That’s a compelling combination.

Summary

In this post, I explored WiFi CSI sensing for privacy-first presence detection. RuView demonstrates real-time pose detection using only WiFi signals—no cameras, no visual recording. Rust provides the performance and safety needed for practical deployment.

The key point is that WiFi CSI sensing fills the gap between cameras (privacy problems) and motion sensors (static detection failures). It uses hardware you already have and doesn’t record what it sees. For privacy-conscious smart home builders, this is a technology worth watching.

Final Words + More Resources

My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me

Here are also the most important links from this article along with some further resources that will help you in this scope:

Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!

Comments