Guides & articles
Reproduce Wi-Fi CSI on a router: build, flash, capture, analyse, troubleshoot.
Showing 32 of 32
- Browser-local CSI capture quality checker (GL-MT6000 / mt76)
Load a .bin capture produced by this project's csi_capture script and check framing, closed measurement groups, chain consistency, subcarriers, timestamp gaps and I/Q integrity in the browser. Files stay local and reports can be exported as JSON or Markdown.
- Do 256 CSI subcarriers mean 256 independent dimensions? A two-capture GL-MT6000 redundancy audit
A reproducible PCA audit of two public GL-MT6000 captures: on the 10-minute data, 6 components explain 90% of variance, 9 explain 95% and 20 explain 99%, while adjacent bins have a median correlation of 0.901. The result is limited to amplitude correlation structure, not physical frequency mapping or human-sensing performance.
- Wi-Fi CSI chain selection: 8-chain health and missing-chain audit
A reproducible Wi-Fi CSI chain selection audit across two GL-MT6000 captures: 6,714 of 7,609 ten-minute groups contain all eight chains, while all 347 sixty-second groups do. A fixed best chain does not transfer across sessions.
- The spectral cost of CSI timestamp gaps: a controlled test on real sampling times
Do not disguise an average group rate as a uniform clock. A reproducible audit of the public GL-MT6000 capture quantifies long gaps, interpolation error and estimator disagreement, with explicit limits on what the data cannot prove.
- Corrections and data revisions: what changed and why
A public record of substantive corrections to Router CSI Lab: demo group counts, sampling-rate denominators, Home Assistant capability claims, Raspberry Pi/Nexmon requirements, ESP32 evaluation, links and 404 navigation.
- From eight parts to a heatmap: parsing the 10-minute CSI dataset
A hands-on Python walkthrough of the 10-minute router CSI dataset on Zenodo: verify eight parts, reassemble, parse the 24-byte header, build an amplitude heatmap and validate 57,293 records.
- GL-MT6000 CSI firmware pre-flight: six checks before the first flash
A reproducible pre-flash audit of the OpenWrt CSI image: board identifier, sysupgrade SHA-256, stock rollback hash, MT7986 Wi-Fi firmware MD5/SHA-256, mt7915e CSI symbols, userspace daemon and installed package versions.
- GL-MT6000 CSI lab log: what we ran and what failed in October
A reproducible GL-MT6000 lab log: image preflight and rollback, first CSI, ten-minute capture acceptance, daemon fault injection, a misdiagnosed 100 Mbps link, ATF and 40/80 MHz client traps, data de-identification and evidence limits.
- A 10-minute router CSI quality audit: 12.68 Hz average, 2.37 s maximum gap
We grouped 57,293 raw GL-MT6000 CSI records by chain_info bit 15 and audited 7,608 usable measurements: timing percentiles, 4/8-chain groups, RSSI, SNR, long gaps and the limits for respiration or fall analysis.
- Wi-Fi CSI privacy and dataset de-identification: MACs, timestamps and behaviour
Wi-Fi CSI has no camera, but it is not automatically anonymous. Peer-reviewed evidence, ICO/NIST guidance and this project's public capture are used to explain direct identifiers, quasi-identifiers, behavioural inference, MAC replacement and time shifting.
- GL-MT6000 Wi-Fi CSI dataset: samples, full capture and usage boundaries
A real GL-MT6000 / MT7986 CSI dataset: 10-second sample, 60-second browser-demo source, 10-minute Zenodo capture, data dictionary, 57,293 records, 7,609 measurement groups, SHA-256, statistics, privacy and citation.
- Live demo: playback of a real 256-subcarrier CSI heatmap
No install required: replay a real GL-MT6000 CSI capture with 347 complete measurement groups, an amplitude heatmap, a rate-limited Doppler view and a motion curve. Includes the anonymised source, SHA-256, parameters and limits.
- ESP32 CSI human detection: capture, robust features, session calibration and false-alarm evaluation
Use ESP32 CSI as a motion/presence proxy: choose a transmitter, validate packet rate and CSI length, normalize per subcarrier, smooth time series, calibrate with hysteresis and evaluate real-room failures.
- ESP32 CSI and Wi-Fi sensing: one-board, two-board and experiment design
Use ESP32 CSI for Wi-Fi sensing with Espressif's esp-csi and ESP-IDF docs: single-board and two-board paths, LLTF/HT-LTF/STBC, sampling limits and MT6000 tradeoffs.
- How to get Wi-Fi CSI data from a GL-MT6000 router (256 subcarriers, no extra hardware)
A reproducible Wi-Fi CSI tutorial for a CSI-capable GL-MT6000 router: build OpenWrt with the mt76 patch, flash, enable CSI and validate the UDP stream.
- mt76 rate control: why a client gets pinned at MCS0 (and how to prove it)
A measured investigation into mt76 firmware rate adaptation: which counters matter, why last-tx-bitrate misleads, the vow_atf bug that prevents recovery, and the A/B test that proves it.
- Nexmon CSI in practice: 80 MHz / 256 subcarriers on Raspberry Pi, Pi 5 compatibility and safe rollback
A source-checked Nexmon CSI guide: supported Broadcom chips, legacy and modern Raspberry Pi installation paths, Pi 5 kernel requirements, UDP format, capture settings, failure checks and rollback.
- OpenWrt Wi-Fi slow after idle: a 10-minute diagnostic and reversible tests
One client slow, downlink pinned at MCS0, a WAN that only looks 100 Mbps, or a 40 MHz client inside an 80 MHz BSS? Follow direction tests, rate sampling, byte accounting and two reversible A/B experiments.
- Wi-Fi CSI tools and datasets: GitHub scripts, Python analysis and OpenWrt capture
Open-source Wi-Fi sensing tools, GitHub releases, capture scripts, Python analysis, the UDP data format and the 10-minute raw I/Q dataset.
- Wi-Fi CSI explained: from channel state information to human sensing
What CSI is, how it differs from RSSI, what it can and cannot do, five hardware routes compared, and how to get 256-subcarrier CSI from a home router.
- 2.4 GHz vs 5 GHz for Wi-Fi CSI: coverage, subcarriers and interference
Band choice changes propagation, subcarriers and interference, but '2.4 GHz penetrates and 5 GHz is fast' is not enough. Here are our measurements, a reproducible A/B protocol, channel scans and why our 2.4 GHz anomaly remains unresolved.
- 80 MHz vs 40 MHz for Wi-Fi CSI: resolution, snapshot rate and a real compatibility trap
Bandwidth controls CSI frequency resolution. We explain range bins, MT7986 measurements, why 95.5 chain records/s is not a 95.5 Hz timeline, and the 40 MHz client inside an 80 MHz BSS failure.
- ESP32-S3 CSI: yes it works — and when you need a 5 GHz chip instead
Does the ESP32-S3 support Wi-Fi CSI? Yes, and Espressif documents the exact payload. Here is what you get (2.4 GHz, 20/40 MHz), the S3-specific gotcha, and when to move to an ESP32-C5 or a router.
- Wi-Fi CSI fall detection: low-frequency features, false alarms and evidence limits
Fall detection is not presence detection, and eight chains do not turn 12.64 Hz snapshots into 95 Hz micro-Doppler. This guide covers event envelopes, context, recovery, capture protocols, event-level metrics and compliance.
- Wi-Fi CSI in Python: parsing, grouping, phase cleaning and motion metrics
A verified pipeline from raw I/Q to useful features: parse 24/28-byte headers, group on chain_info bit 15, select a valid chain, resample by timestamp, clean phase, build amplitude heatmaps and a real one-second motion metric.
- Wi-Fi CSI radar: what it really measures, and where the marketing stops
A radar analogy for CSI sensing, separated into motion envelopes, presence, range, low-frequency Doppler, angle and imaging. We explain why a 12.64 Hz GL-MT6000 snapshot rate cannot claim full gait micro-Doppler or through-wall imaging.
- Wi-Fi CSI on a Raspberry Pi: capture node, analysis host, Pi 5 compatibility and capacity planning
A Raspberry Pi can be a Nexmon CSI capture node or the analysis host for router CSI. Compare the roles, Pi 5 requirements, real data-rate formulas, storage and network budgets, deployment checks and rollback.
- Wi-Fi respiratory monitoring and heart rate from CSI: what works
A runnable Wi-Fi respiratory monitoring and heart-rate pipeline: phase processing, spectral estimation, sampling and window requirements, quality gates and failure conditions.
- Wi-Fi CSI sensing in Home Assistant: ESPHome, MQTT and router REST
Connect Wi-Fi CSI sensing to Home Assistant through ESPectre ESPHome entities, native MQTT Discovery, or this project's router REST service. Covers entity semantics, calibration, availability and privacy.
- Can Wi-Fi sense through walls? Physics, experiments and privacy
Through-wall Wi-Fi can detect motion, but it is not wall-penetrating imaging. Separate motion, presence, localisation, pose and identity; understand wall/multipath effects; and run a home experiment that reports misses and false alarms.
- Wi-Fi sensing vs mmWave radar for the home
Compare Wi-Fi CSI and millimetre-wave radar by physics, coverage, occlusion, privacy, cost and evaluation protocol. Learn what FMCW range/velocity/angle really means, why one radar is not a whole-home sensor, and how to fuse sensors in Home Assistant.
- Why Wi-Fi slows after CSI is enabled: a measured vow_atf and 40 MHz client investigation
A reproducible investigation: one Mac's downlink fell from about 400 Mbps to 6–10 Mbps. The evidence covers A/B tests, byte accounting, a vow_atf repair switch and a 40 MHz client inside an 80 MHz BSS.
Try a shorter query, or select All to restore the complete guide list.