Wi-Fi CSI fall detection: features that work, and the false alarms you must handle
2026-10-11 · 2 min read
Fall detection is the highest-value use case in Wi-Fi sensing (elder care — see WiFall [2] and WiCare [3]) and the easiest to get wrong. Presence detection answers "is the channel disturbed?"; fall detection must separate a fall from sitting down, putting down a bag, or a door slamming.
1. What a fall actually looks like in CSI
| Signal | Sitting down | Falling |
|---|---|---|
| Amplitude change | moderate, smooth | large, abrupt |
| Doppler spread | narrow band | wide band, short burst |
| Duration | 1-2 s | 0.4-1.2 s |
| Recovery phase | none | low-motion period after impact |
So the discriminative features are burst energy + bandwidth + the post-event quiet period, not raw variance (feature taxonomy: CSI sensing survey [1]).
2. A workable feature set
import numpy as np
FS = 95.0 # measured records/s (resample by timestamp!)
WIN = int(1.5 * FS) # 1.5 s analysis window
def fall_features(H): # H: (time, subcarriers) amplitude
d = np.abs(np.diff(H, axis=0)).mean(axis=1) # motion envelope
win = d[-WIN:]
energy = float(win.max())
rise = float(win.max() - win[: len(win) // 4].mean()) # abrupt onset
quiet_after = float(win[-int(0.5 * FS):].mean()) # post-impact stillness
# Doppler bandwidth via STFT of the phase difference
z = np.fft.rfft(win - win.mean())
spread = float(np.sum(np.abs(z) ** 2) / (np.abs(z).max() ** 2 + 1e-9))
return dict(energy=energy, rise=rise, quiet_after=quiet_after, spread=spread)
Then classify with explicit thresholds (start simple; a fall is rise > R and spread > S and
quiet_after < Q) and require confirmation within 5 s.
3. Killing false positives
| False positive | Discriminator |
|---|---|
| sitting down | onset is slower; post-event motion continues |
| dropped bag | smaller affected volume; no quiet phase |
| door slam / appliance | no associated pre-event walking |
| pet | weaker and lower-height disturbance (hard: needs multi-link geometry) |
Add a pre-event context window (walking for 2-5 s before) and require it. That single rule removes most single-burst false alarms without deep learning.
4. Data and evaluation
- record your own: label fall / sit / drop / walk; 30-50 events per class is a workable start;
- report per-class precision/recall and the false-alarms-per-day number — that is what eldercare buyers ask;
- publish the recording conditions (room, distance, height) with the dataset, or nobody can reproduce it.
5. Legal and ethical boundary (do not skip)
Fall detection sits next to medical claims. Keep the wording precise:
- say "detects fall-like events" and "not a medical device";
- never promise emergency response on its own;
- get consent from the person being monitored — this is monitoring, even without a camera.
Related: respiration detection · vs mmWave radar · Home Assistant integration
References and data sources
Every external claim carries a source and an evidence grade (grading scheme). Grade E marks first-party, reproducible measurements from this project.
- Grade A · standard/review
WiFi Sensing with Channel State Information: A Survey
W. Ma, W. Zhou, X. Wang · ACM Computing Surveys · 2019
doi:10.1145/3310194 · citations 857 · verified: CrossRef API, 2026-10-11 · The field's most-cited CSI sensing survey (857 citations, verified via CrossRef). - Grade B · peer-reviewed
WiFall: Device-free fall detection by wireless networks
C. Han, K. R. R. Wu, Y. Wang · IEEE INFOCOM 2014 · 2014
doi:10.1109/infocom.2014.6847948 · citations 201 · verified: CrossRef API, 2026-10-11 · A pioneering work on CSI-based fall detection (201 citations). - Grade B · peer-reviewed
WiCare: Accidental Fall Detection for Elderly Care Using Passive Wi-Fi Sensing
K. Rishi, et al. · IEEE ICSC 2023 · 2023
doi:10.1109/icsc60394.2023.10441553 · citations 2 · verified: CrossRef API, 2026-10-11 · Passive Wi-Fi fall detection for elderly care (recent, few citations — directional evidence only).