What it is
Real WiFi-CSI occupancy / human-detection dataset (Zaman, Ahmad, Salman, Khan — 2025) captured on Raspberry-Pi + Nexmon commodity hardware. Its hardware line matches the project's own Pi5+AX210 collection effort (IP-112), so it is a useful real-hardware cross-check for presence detection. Labels are predominantly binary occupancy, with a small explicit two-person subset.
Verified specs
(from direct inspection of the delivered files, 2026-07-11 — not the upstream README)
- Hardware: Raspberry Pi 4 Model B, Broadcom BCM43455c0, Nexmon-CSI toolchain.
- Band / bandwidth: 2.4 GHz, 20 MHz, channels 1 / 6 / 11.
- Scale: 1,126 files — 909
.csv(preprocessed CSI) + 217.pcap(raw Nexmon captures). - Three collection sites:
LAB_Final Year Project(200 files),room4_iqbal(252),room6_liaqat(674). - CSI CSV format: headerless; each row = one packet, each cell a complex string like
-663-640i; 49 columns (subcarriers, after null/guard removal). Packet-count per file varies widely (~55 to ~20,000 rows)..pcapraw captures exist only for the tworoom6_liaqatstatic collections. - Labels / scenarios: static (empty / occupied) and dynamic (moving) captures. Person
count is encoded only in some scenario-folder names — explicit
0(empty, 20 files),1(170),2(62); the remaining ~874 files are single-actor lab captures without a count in the path. All facets are enumerated per-file in_manifest.json(site/scenario/motion/persons/channel/ext).
Acquisition & storage
- Status: acquired — full payload mirrored to project S3
(
s3://monad-knowledge/datasets/csi-wifi-human-detection/, ~4.06 GB, DOI10.21227/smn7-jb67). The upstreamCSV Files/wrapper is stripped; the three site folders sit directly under the prefix. - Load pattern: read
_manifest.json, filterfiles[]to the site/scenario/motion/persons/channel subset you need, then fetch only those objects via boto3 — do not sync the whole prefix. CSV cells parse withcomplex(cell.replace("i","j")). See thedatasetsskill (.claude/skills/datasets/) and itss3_dataset_loader.py(get_bytes+parse_complex_csv). - Regime caveat: 2.4 GHz is the presence-only band per the WiMANS deep-dive (occupancy-csi-variance); expect strong empty-vs-occupied separation but weak graded count, even on the small 2-person subset.
Empirical findings (2026-07-11) — NOT usable for a graded-occupancy claim
(reduction: monad_knowledge/notebooks/python/csi_realdata_occupancy_mechanism.py)
The only site with graded counts is room4_iqbal (0 / 1 / 2 persons), but the labels are
confounded with recording session, day, and Wi-Fi channel, which makes any occupancy result
unidentifiable:
- persons=0: 20 files = ONE ~10-min session (2024-12-04, 02:06–02:17), channel 11.
- persons=1: 170 files spanning 2024-12-03 night → 2024-12-04, channel 11.
- persons=2: 62 files = ONE ~35-min session (2024-12-03 noon), channel 1 (≠ the 0/1 channel).
Consequences, measured:
- A file-level classifier separates 0-vs-1-person at AUC = 1.000 for every feature family (static amplitude, temporal variance, Doppler shape) — this is the classic session-fingerprint leakage artifact (each occupancy class ≈ one continuous recording, so its static channel is a perfect give-away), not an occupancy result.
- The mechanism-relevant scalar — mean per-subcarrier temporal STD — does not differ between 0 and 1 person (Mann–Whitney p = 0.83, rank-biserial +0.03). So occupancy-csi-variance does not reproduce here at the 0→1 transition. Mean amplitude level shifts (p = 4e-6) but is itself session/AGC-confounded, so not attributable to occupancy.
- The persons=2 class cannot be compared to 0/1 without confounding occupancy with channel (ch1 vs ch11).
Verdict: fine as a presence / empty-vs-occupied and pcap→CSI-toolchain reference; not a valid source for graded people-counting or the variance/Doppler mechanism — those need multi-session, channel-matched capture (the case for first-party IP-112 collection).
Why it matters here
Real Pi/Nexmon presence data on the exact chipset family the lab is deploying — a hardware-matched
external check for the presence-detection claim and a candidate fixture for the IP-112 measurement
protocol once first-party capture is online. The raw .pcap captures additionally let the IP-112
toolchain be validated end-to-end (pcap → CSI extraction) against a known-good reference.