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.
Router sends signal → Signal bounces off objects → CSI captures changes ↓ Person in room → Changes signal pattern → CSI detects presenceTraditional 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:
- Presence detection: Know if someone is in the room
- Pose estimation: Detect standing, sitting, lying down
- Vital signs: Measure breathing rate through signal changes
All without a single camera.
┌─────────────────┬──────────────┬──────────────┬──────────────┐│ 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.
Antenna 1: amplitude + phase = "picture" of room from angle 1Antenna 2: amplitude + phase = "picture" of room from angle 2Antenna 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.
Empty room: CSI pattern is stablePerson enters: CSI pattern shiftsPerson breathing: CSI pattern oscillates at ~0.3 HzPerson walking: CSI pattern changes rapidlyPerson lying down: CSI pattern different from standingStep 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:
- Set up CSI capture hardware
- Record CSI while doing specific activities
- Label each recording: “standing”, “sitting”, “walking”, “empty”
- 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:
- Smart home lighting: Turn lights on when someone enters, keep them on while person stays (PIR fails here)
- Security monitoring: Detect occupancy without cameras, privacy-preserving alarm systems
- Elder care: Monitor presence and vital signs without cameras, detect falls
- 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:
-
Privacy is a real concern: People don’t want cameras everywhere. A solution that uses existing hardware without recording images is valuable.
-
WiFi is ubiquitous: Everyone has WiFi routers. Using existing infrastructure for sensing reduces cost and deployment friction.
-
Rust enables deployment: Real-time, embedded, memory-safe. These matter for practical signal processing systems.
-
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