We Turned a Home Wi-Fi Router Into a Motion Detector — No Extra Hardware
A few weeks ago we got curious about a deceptively simple question: can you detect human presence in a room using nothing but a Wi-Fi router that’s already there? No cameras, no smart sensors, no proprietary hardware. Just the router on the wall and a laptop on the desk.
The short answer is yes. Here’s what we built, what it can actually do, and — just as importantly — what it can’t.
The Idea: Wi-Fi Signals Are Disturbed by Movement
Wi-Fi works by bouncing radio signals between your router and your devices. When nothing in the room is moving, those signals settle into a stable, predictable pattern. When a person moves through the space, their body absorbs and reflects radio waves in ways that measurably change the signal.
Researchers have known about this for years. Academic systems like WiPose and RF-Pose have used it to reconstruct 3D human skeletons in real time — through walls. The catch is that those systems require specialized Linux-based hardware, modified Wi-Fi firmware, and carefully controlled lab setups. Not exactly plug-and-play.
We wanted to see how far we could get with hardware that was already sitting on a desk.
The Constraint: macOS Locks Down the Good Stuff
The richest signal for this kind of detection is called Channel State Information (CSI) — a per-subcarrier snapshot of how the Wi-Fi channel looks from the receiver’s perspective. CSI is what the academic systems use, and it’s genuinely powerful.
The problem: extracting CSI requires either a Linux system with a supported chipset, or custom firmware on certain routers. macOS doesn’t expose it. Apple’s Wi-Fi driver is entirely closed, so even though a MacBook has capable hardware inside, there’s no way to get to the raw channel data from the OS.
So we worked with what macOS does expose: RSSI.
What We Used: RSSI
RSSI stands for Received Signal Strength Indicator. It’s a single number representing how strong the Wi-Fi signal is at the receiver. Most people have seen it expressed as a negative value in decibel-milliwatts — something like -62 dBm. The closer to zero, the stronger the signal.
RSSI is a much blunter instrument than CSI. You’re collapsing an entire channel picture into one number. But it turns out that one number still carries enough information to detect whether someone is moving in a space — especially when you stop looking at the raw value and start looking at how it changes over time.
We read RSSI directly from the operating system’s Wi-Fi framework at five samples per second. No extra software, no network modifications — just asking the machine what the signal looks like right now, repeatedly.
The Detection Pipeline
Raw RSSI alone isn’t enough. The signal bounces around a little even in a perfectly empty room. The key is building a statistical picture of what “empty” looks like and then detecting deviations from it.
On startup, the system spends about 20 seconds in a calibration phase — sampling the baseline signal to understand the normal noise floor for this specific environment. Then, on every incoming sample, it computes five features across a rolling time window:
- Variance — how much the signal is bouncing around relative to the calibrated baseline
- Range — the peak-to-peak swing within the window
- Deviation — how far the current mean has drifted from the baseline
- Rate of change — the average speed at which the signal is moving
- Ping RTT variance — how much the round-trip time to the router is fluctuating (motion-induced multipath interference affects this too)
Those five scores get combined into a single weighted motion score between 0 and 1. Cross a threshold, and the system registers movement. The baseline adapts slowly over time to handle environmental drift — temperature, time of day, and other factors that shift the signal slightly even without anyone moving.
What It Can Actually Do
After testing it in a real home environment over several days, here’s an honest accounting:
What works reliably
- Motion vs. no motion — the system correctly flags when someone is moving around the space with high consistency
- Activity level — it distinguishes between active movement (walking, cooking, cleaning) and a quiet state
- Event timeline — it logs when motion starts and stops, how long each episode lasted, and builds a visual timeline across the day
- Low resource footprint — the whole system uses roughly 40 MB of RAM and negligible CPU at idle
What it cannot do
- Count people — a single RSSI stream has no way to separate two people’s contributions to the signal
- Determine direction — you’d need multiple receivers in known positions to triangulate movement direction
- Distinguish empty from still — someone sitting motionless looks identical to an empty room from the signal’s perspective
- Work across rooms — one router-to-laptop link gives you one sensing zone; multiple rooms would need multiple links
The Dashboard
We built a local web dashboard with two views. The Simple view is designed for actual use: a large status banner (All Clear / Recently Active / Movement Detected), a visual timeline of today’s activity, and a plain-language event log showing when motion occurred and how long it lasted. The Technical view is for tuning and debugging: live signal charts, the motion score over time, ping RTT, and a real-time breakdown of all five feature scores.
Both views update live via WebSocket — no page refreshes, no polling. Historical data is stored locally in a small SQLite database with a rolling 7-day retention window, keeping the disk footprint under 40 MB indefinitely.
The Upgrade Path
If this basic capability is useful, the natural next step is adding a small dedicated Linux device — something like a Raspberry Pi or an ESP32 development board — to act as a proper CSI capture node. Either option costs between $10 and $80 and slots directly into the existing architecture. With CSI data flowing, the same pipeline can support activity classification (sitting vs. walking vs. falling), rough proximity sensing, and eventually — with a site-specific training pass — single-person pose estimation.
The research on full CSI-based sensing is well-developed at this point. The main bottleneck for home deployments has always been the gap between “works in a lab” and “works in your specific apartment without a PhD setup.” That gap is narrowing quickly.
Why This Matters for AI Applications
Passive presence detection without cameras is a genuinely useful building block. It raises no privacy concerns that a camera would, it requires no user opt-in, and it runs entirely on local hardware with no cloud dependency. Plausible applications include occupancy-aware smart home automation, energy management (stop conditioning an empty space), security alerting, and caregiver monitoring for elderly family members who might resist wearing a sensor.
More broadly, this project is a good example of what applied AI work often looks like in practice: start with an ambitious research direction, identify the real constraints of the actual environment, find the simplest thing that still works, and build from there. The academic literature is full of systems that can do remarkable things under controlled conditions. The interesting engineering is figuring out what survives contact with a real home and a real router.
This one does.
Applied Intelligence builds practical AI systems for small and mid-sized businesses. If you’re curious about what this kind of passive sensing could do in a commercial context — retail occupancy, office utilization, facility monitoring — start with a free assessment.
Ready to put this to work in your business?
Applied Intelligence helps San Diego and Southern California businesses automate workflows, reduce manual work, and grow without adding headcount. The first conversation is free and takes 20 minutes.
Book a Free Discovery Call →