Æther
Use WiFi signals to read a human body: heartbeat, breathing, motion, presence, with no camera, no microphone, no wearables.
Aether turns ambient 802.11 radio waves into a continuous, passive readout of human physiology. The walls of a room become a sense organ. Two small nodes in opposite corners are enough to cover a 25 m² space. Detection happens entirely on-device. No video. No audio. No biometric data ever leaves the room.
Inspiration
Every year, an estimated 3,000 people die in their sleep from undetected seizures (SUDEP). One in four adults over 65 falls annually, and the people who lie on the floor for more than an hour have a mortality rate above 50%. Roughly 3,400 infants die each year from sudden unexpected deaths, many involving undetected respiratory failure.
The technology meant to prevent these deaths has failed the people who need it most. Cameras are intolerable in bedrooms and bathrooms (the rooms where the most catastrophic events happen). Wearables fail the people they're built for: dementia patients remove them, infants outgrow them, the elderly forget to charge them. Pressure mats sense only their immediate footprint. Smart speakers listen to everything you say to detect when you stop saying it.
The honest gap: the populations who need monitoring most are precisely the populations who cannot tolerate surveillance. A camera in a grandmother's bathroom is not a safety device, it is a violation. A wearable on a non-compliant patient is not a wearable, it is a piece of plastic on a nightstand.
Aether closes that gap by reading the body directly from the radio waves already passing through it. The infrastructure is already deployed in every home. We just taught it to listen.
What It Does
Aether is a passive, contactless physiological monitoring platform built on commodity WiFi hardware. Two synchronized nodes flood a space with normal 802.11 traffic and read back the channel-state perturbations caused by the human body inside it.
Capabilities
| Signal | Method | Latency | Accuracy |
|---|---|---|---|
| Respiration rate | Bandpass + PCA on CSI subcarrier amplitude | < 10 s | ± 1 BPM |
| Heart rate | Cardiac-band filtering with subcarrier selection | < 15 s | ± 3 BPM |
| Fall detection | Variance-spike classifier on motion energy | < 2 s | High recall, calibrated FPR |
| Seizure detection | Periodicity analysis of rhythmic involuntary motion | 5–10 s | Trained on tonic-clonic motion signatures |
| Presence and occupancy | CSI variance threshold against empty-room baseline | < 1 s | Effectively perfect |
Why This Matters
- Continuous: runs 24/7 without compliance or charging
- Camera-free: deployable in bedrooms, bathrooms, secure facilities
- Hardware-agnostic: runs on any 802.11 chipset that exposes CSI
- Local-first: all inference happens on-device, no cloud dependency
- Affordable: Under $30 per node in commodity components
Use Cases
- Epilepsy patients: nocturnal seizure detection, immediate caregiver alerts, designed especially for SUDEP-risk monitoring without sleep-disrupting wearables
- Elderly adults living alone: fall detection without compliance burden, no plastic to wear, no buttons to remember
- Infant monitoring: respiration tracking through a wall, no contact with the crib
- Bathrooms: the highest-incidence fall location, the lowest-tolerance environment for cameras, addressed for the first time
- Memory care facilities: continuous resident monitoring without surveillance, preserves dignity for cognitively impaired residents
- Secure facilities: government, legal, medical settings where cameras and microphones are prohibited but safety monitoring is required
- Privacy-conscious households: anyone who refuses Alexa, Ring, or Nest but still wants to know if someone falls
How It Works
The Physical Principle
Every WiFi packet carries an OFDM payload split across 52 to 256 subcarriers depending on bandwidth. When that packet arrives at a receiver, the WiFi chip estimates the channel frequency response $H_k(t)$ for each subcarrier $k$, the complex-valued attenuation and phase shift the signal experienced on its way through the room. This is Channel State Information (CSI), and it is normally discarded after equalization.
We don't discard it. We treat the CSI tensor as a signal in its own right:
$$ H \in \mathbb{C}^{N_{tx} \times N_{rx} \times N_{sc} \times T} $$
where Ntx and Nrx are antenna counts, Nsc is subcarriers, and T is time samples at our 100 Hz capture rate.
A human body in the propagation path causes deterministic, measurable distortion. Chest wall displacement during respiration is 5–12 mm. The mechanical perturbation from cardiac contraction is 0.2–0.5 mm. Both displace at frequencies cleanly separable from environmental noise:
$$ f_{\text{resp}} \in [0.15, 0.5]\,\text{Hz} \quad\quad f_{\text{cardiac}} \in [0.8, 2.0]\,\text{Hz} $$
Falls produce broadband variance bursts. Seizures produce rhythmic 3–5 Hz patterns characteristic of tonic-clonic motion.
The Pipeline
┌─────────────────┐
│ ESP32-S3 / Pi │ CSI capture at 100 Hz, monitor mode, 5 GHz
│ Nexmon CSI │ 802.11ac frames on a calibrated quiet channel
└────────┬────────┘
│ raw CSI tensor over USB-Ethernet (USB Gadget Mode)
▼
┌─────────────────┐
│ Preprocessing │ Hampel filter for IQ outliers
│ Sanitization │ Linear-fit phase unwrap (CFO/SFO compensation)
│ │ Per-subcarrier amplitude normalization
└────────┬────────┘
│
▼
┌─────────────────┐
│ Subcarrier │ PCA across subcarriers → principal components
│ Selection │ SDNN-weighted ranking for cardiac band
│ │ Common Maximum Energy selection
└────────┬────────┘
│
▼
┌─────────────────┐
│ Frequency-Band │ Butterworth IIR, 4th order, zero-phase filtfilt
│ Decomposition │ Respiration | Cardiac | Motion bands
└────────┬────────┘
│
▼
┌─────────────────┐
│ Physical │ 1D CNN + Transformer hybrid
│ Intelligence │ Per-modality heads: vitals + event classification
│ Model │ Personalization adapter (LoRA-style, ~50 KB)
└────────┬────────┘
│
▼
┌─────────────────┐
│ Event Logic │ Hysteresis thresholding to suppress false positives
│ + Alert Engine │ Confirmation windows for high-stakes events
│ │ Real-time push to caregiver app
└─────────────────┘
The Signal-Processing Core
The cardiac signal is roughly two orders of magnitude weaker than the respiratory signal, which is itself buried under 30–40 dB of multipath clutter. The signal-to-noise ratio at the receiver, before any processing, is routinely at or below 0 dB:
$$ \text{SNR}\text{cardiac} = 10 \log{10} \left( \frac{P_\text{signal}}{P_\text{noise}} \right) \approx 0 \text{ dB} $$
Recovering it cleanly required building a custom pipeline that the published literature describes only in fragments:
Empty-room baseline subtraction. A 30-second capture with no subject present establishes the ambient channel response H0. Live CSI is differenced as ΔH(t) = H(t) − H0 so that stable multipath cancels and only human-induced perturbation remains.
Hampel-filter outlier rejection on raw I/Q amplitudes to suppress impulsive interference from co-channel transmitters.
Linear-fit phase sanitization following the SHARP method (Meneghello et al.) to remove carrier-frequency offset Δfc and sampling-frequency offset Δfs, which on commodity hardware are large enough to swamp the cardiac signal entirely:
$$ \tilde{\phi}_k(t) = \phi_k(t) - (\alpha k + \beta) $$
where α and β are the slope and intercept of a least-squares fit across subcarrier index k.
- PCA-based subcarrier fusion. Across all subcarriers, we project onto the principal component that maximizes variance in the cardiac band:
$$ \mathbf{v}^* = \arg\max_{|\mathbf{v}|=1} \mathbf{v}^\top \Sigma_\text{cardiac} \mathbf{v} $$
This automatically selects the best subcarriers for the current geometry without manual tuning.
- Sliding-window FFT with 10 s window, 1 s stride, peak detection for instantaneous heart rate and respiration rate, with confidence weighting from the spectral peak's prominence-to-baseline ratio:
$$ \text{HR}(t) = 60 \cdot \arg\max_{f \in [0.8, 2.0]} |\mathcal{F}{\Delta H(\tau)}|^2 $$
The Model
A 1D CNN feature extractor (3 conv blocks, dilated convolutions for multi-scale temporal patterns) feeds a lightweight transformer encoder (4 layers, 8 attention heads, 128-dim embedding). Output heads:
- Vitals regression head, continuous HR and BR
- Event classification head, 5-way softmax over
normal | motion | fall | seizure | unknown - Anomaly head, autoencoder reconstruction error as a generic "something is wrong" signal
A per-user LoRA adapter (~50 KB on disk, trains in 60 seconds of supervised calibration) personalizes the model to the cardiac and respiratory signature of the individual being monitored:
$$ W' = W + \frac{\alpha}{r} BA, \quad B \in \mathbb{R}^{d \times r},\, A \in \mathbb{R}^{r \times k},\, r \ll \min(d, k) $$
After one calibration session, accuracy on that subject improves by 30–50% over the cold-start baseline.
The Hardware
| Component | Role | Why This Choice |
|---|---|---|
| ESP32-S3 | CSI capture node | Commodity, $8, supports esp-csi, 100 Hz capture |
| Raspberry Pi 4 (Nexmon CSI) | High-resolution receiver | BCM43455c0 chip, 256 subcarriers at 80 MHz |
| Asus RT-AC86U (optional) | Calibrated illuminator | Academic-standard Nexmon-CSI transmitter |
| USB Gadget Mode | Networking | Single USB-C cable: power + data, leaves WiFi free for capture |
| MQTT broker on host | Sensor fusion | Independent nodes; fusion picks highest-confidence estimate |
Deployment topology is intentionally minimal: two nodes in opposite corners, chest height (1.0–1.4 m), 1.5–3 m apart, line-of-sight through the subject. That geometry is the canonical configuration from the WiFi sensing literature and is what every reproducible vital-signs paper since 2014 has used.
Challenges We Ran Into
CSI Is Brutally Noisy on Commodity Hardware
A clinical-grade ECG senses voltage at the body surface; we sense ~0.3 mm of chest wall mechanical displacement transduced into a phase shift on a 5 GHz carrier through a noisy multipath channel. We solved this through aggressive preprocessing: phase sanitization, baseline subtraction, PCA-based subcarrier fusion and through dataset diversity, training across multiple rooms and geometries to force the model to generalize.
Cross-Environment Generalization Is the Unsolved Problem of WiFi Sensing
A model trained in one room degrades sharply when deployed in another. The channel response is a function of the room's geometry, materials, and reflectors. We addressed this with two mechanisms:
- On-device automatic recalibration that captures empty-room baselines whenever no occupancy is detected for 60+ seconds.
- Per-user LoRA adapters that fine-tune the model on the deployed subject in under a minute of supervised data.
Rare-Event Classification With Extreme Class Imbalance
Falls and seizures are, by their nature, vanishingly rare in any honestly-collected dataset. We addressed this with synthetic event injection, manually scripted controlled falls and rhythmic motion, combined with focal loss to focus gradient updates on hard examples:
$$ \mathcal{L}_{\text{focal}} = -\alpha_t (1 - p_t)^\gamma \log(p_t) $$
and temporal augmentation (time-warping, subcarrier dropout, additive Gaussian noise on amplitude) to multiply effective dataset size.
CSMA/CA Back-Off Corrupts the Sample Rate
WiFi's carrier-sense multiple access mechanism causes irregular sampling intervals when the channel is busy, which smears the FFT and destroys the cardiac peak. We mitigated this by configuring our illuminator at a fixed 100 Hz transmit rate with disabled rate adaptation, and by using a calibrated quiet 5 GHz channel selected on arrival via a HackRF spectrum sweep.
Tech Stack
| Layer | Technologies |
|---|---|
| CSI capture | esp-csi (ESP32-S3) · nexmon_csi (Raspberry Pi 4) · CSIKit |
| Signal processing | NumPy · SciPy · PyTorch · custom DSP modules |
| Model training | PyTorch · DistributedDataParallel over SSH-tmux harness · WandB tracking |
| Backend | FastAPI · WebSockets · Mosquitto MQTT |
| Firmware | C · ESP-IDF |
| Frontend | Next.js · React · Tailwind · Three.js |
| Storage | JSONL · Parquet · DuckDB for event history |
| Networking | USB Gadget Mode (Linux g_ether) for cable-free Pi backhaul |
| Alerting | Cross-platform mobile + web push |
| Runtime | pnpm workspaces · Python venv |
Accomplishments We're Proud Of
- Built a complete contactless monitoring system in days using only commodity hardware that anyone can buy
- Achieved clinical-trajectory accuracy on respiration rate and useful accuracy on heart rate from raw 802.11 CSI
- Demonstrated fall and seizure detection from a fundamentally limited sensing modality, validating the core thesis that radio is enough
- Solved the distributed training problem with no cloud budget, by pooling laptops over SSH
- Delivered a system that is deployable tonight in a real home, with no installation, no contract, and no privacy compromise
What We Learned
- The relationship between human physiology and RF propagation is richer than the literature has captured, and there is enormous remaining headroom in the signal we can extract
- The hardest classification problems are not the ones with the lowest accuracy, but the ones where false positives have catastrophic cost, a wrongly missed seizure is a death, a wrongly raised alarm desensitizes the caregiver
- Keeping data local is not a marketing position, it is an architectural decision that compounds across every layer
- The gap between what monitoring technology can do and what vulnerable people have access to is enormous, and most of that gap is a privacy problem disguised as a hardware problem
What's Next
Short Term
- Expand the detection vocabulary: stroke indicator gait patterns, atrial fibrillation rhythm signatures, sleep-stage classification
- Caregiver dashboard with longitudinal trend analysis, baseline drift detection, predictive deterioration alerts
- Clinical validation against gold-standard polysomnography for sleep monitoring and Holter ECG for cardiac
- Expand chipset support to AX210, AX211, and BE200 as Wi-Fi 7 CSI tooling matures
Long Term
- Predictive health monitoring : detect physiological deterioration trends days before the emergency
- Direct emergency dispatch integration: verified events trigger 911 routing automatically
- Smart building infrastructure : institutional care settings monitored at the building level
- Vehicular and transit deployment: driver state monitoring, public transit medical event detection
- Federated learning: improve the model across deployments without ever moving raw data off-device
Aether is what happens when you take the radio waves already passing through every room on Earth and teach them to recognize the people inside. The infrastructure is already there. We just gave it a sense it never had.

Log in or sign up for Devpost to join the conversation.