CSI hardware impairments: does the occupancy signal survive a commodity NIC?
Current assessment (2026-09-15)
The original impairment-prior sensitivity result stands. The August 28 measured-profile comparison has now run and shows why its old unvalidated-prior caveat matters.
The 13-run CSI and 14-run BLE grids compare authored impairment settings. They do not show that physical BLE and CSI receivers share the same impairment process. The later csi-impairment-fit study estimated three terms and left three channel-confounded; it gives a narrower hardware reference than a fully fitted NIC model.
Next evidence needed: Report whether each result uses clean, shipped-prior or measured-profile outputs. Keep the fitted profile's SNR/AGC ambiguity visible and evaluate transfer on independent real recordings.
Basis: Thesis Narrative, the September 10 synthesis, and the September 15 register review. See the review record for evidence sources and outstanding checks.
Earlier protocol and dated results
The methods and observations below retain their original scope. Read their readiness statements and proposed next steps as historical. The current assessment above records what has changed; frozen thresholds have not been retrospectively revised.
The problem, in plain words
Think of the difference between a photo taken with a studio camera and the same scene shot on a cheap phone at night. The studio photo is clean; the phone photo has grain, colour smear, and a slightly wrong white balance. Our ray-traced Wi-Fi channel is the studio photo — it shows exactly how a human body blocks and reflects radio waves. But we will never deploy on a studio camera. We deploy on a commodity Wi-Fi chip (an Intel AX210, a Raspberry Pi), which delivers the channel with a finite noise floor, a carrier-frequency offset (the transmitter and receiver clocks never agree perfectly), IQ imbalance, and only about 10 bits of precision. Each of those smears the very signal we are trying to read.
Why does this matter so much for Wi-Fi crowd counting? Because the counting model learns a subtle statistical fingerprint — "this much extra signal variance ≈ this many people." If the hardware adds its own variance and its own offset on top, the fingerprint the model learned in the clean world no longer matches the world it sees. This is the well-known reason commodity CSI phase is considered barely usable without heavy cleanup (wang2015 ↗, xie2015 ↗), and the reason the whole field treats the sim-to-real gap as the hard problem (chen2023_5cbd ↗). So before we ever build a counter on synthetic data, we owe ourselves this test: how much of the signal is left after the hardware has its say?
What we are trying to prove
- Hypothesis (falsifiable): the occupancy-driven CSI statistics degrade monotonically but gracefully — the effect shrinks as impairment grows, but stays separated from the null at an AX210-representative profile, so a real capture would still see it. If instead the signature collapses or reverses even at high SNR, the clean-CSI mechanism claims do not transfer to hardware and the counter needs impaired training data, not clean.
- Companion hypothesis (the BLE anchor): a narrowband BLE RSSI reading, being a power not a phase feature, keeps its occupancy ordering under the same impairment that corrupts CSI phase. If BLE also collapses, the calibration anchor itself needs a noise-robust readout before any hardware investment.
- What a null means. For CSI: a null (signature survives cleanly) would have said "clean synthetic training is enough" — we did not get that. For BLE: a null (anchor collapses) would have weakened the whole periodic-calibration premise — we did not get that either. The two nulls point in opposite, mutually-reinforcing directions: CSI fragile, BLE robust ⇒ anchor on BLE.
How the experiment works (plain method)
- CSI impairment grid (c-csi-impairment-sim-to-real): ray-trace the
csi-synth-corridor-linkscene once at fixed mid-occupancy (n_agents=6, 48 placements), then apply the IP-085 impairment stage over a 4 SNR × 3 CFO grid ({5, 10, 20, 30} dB × {0, 2, 10} kHz), plus one clean control (impairment_profile: null). The cleancsi.hdf5oracle is kept alongside each impaired run, so every cell carries its own before/after. - BLE robustness grid (c-ble-impairment-robustness): the same runner on the
resplan-12439multiroom floor withble.enabled, sweeping 3 occupancy × 5 SNR ({4, 8, 12} agents × {5, 10, 20, 30, 40} dB) at a fixed phase-impairment base. The reduction recomputes the narrowband BLE RSSI from both the clean and impaired channel and compares its occupancy rank-correlation against the CSI Rician-K slope. - Read out the contrast: for CSI, does the blockage/variance signature survive as SNR falls and CFO grows? For BLE, is the RSSI occupancy ordering preserved where the CSI phase feature is not?
- State the scope: the impairment numbers are a commodity-NIC prior from the literature, not a fit to real data. The deliverable is "this makes the transfer hypothesis testable," never "this measures the real gap."
What we've found so far (honest, across both campaigns)
CSI grid — the signature is fragile (2 of 4 criteria; session 01KTPNH0PV, 13 runs).
| What we checked | Result |
|---|---|
| Pipeline correct, strictly additive | ✅ clean oracle reproduced to 5+ s.f., effective_snr_db on target to <0.001 dB, no NaN/Inf |
| Blockage attenuation at SNR=30 dB | halved: 27.5 → 12.3 dB/person (→ 7.9 at SNR=5) |
| Rician-K occupancy slope | sign-flips: +10.12 clean → −2.40 (SNR=30), −1.75 (SNR=5); negative across the whole grid |
| CFO ≤ 10 kHz | negligible independent effect (≤0.003 within an SNR tier) — the noise floor dominates, not the offset |
Proposed survival_ratio metric |
non-monotone (adding CFO raised it: 0.447 → 0.449) — an AWGN-shadow artifact; unusable as a budget |
| SNR capture budget | not quotable — no cell clears the 0.5 survival floor; the one clean monotone scalar zero-crosses near 9 dB |
The supervisor's own verdict is the honest one: the result strengthens the case for real calibration rather than discharging it. synthetic-csi-sim-to-real-transfer moves speculative → testable (the commodity-NIC model now applies cleanly), but the in-silico clean↔impaired gap is so large that fidelity must be fit against real capture, not asserted.
BLE grid — the anchor survives (4 of 4 criteria; session 01KVWSXM8Q, 14 runs).
| What we checked | Result |
|---|---|
| BLE RSSI occupancy ranking, clean → impaired | invariant: |
| CSI Rician-K over the same impairment | distorted ×1.2–3.1 (peaking near 20 dB, the same AWGN-shadow non-monotonicity) |
| BLE RSSI slope (absolute dB/person) | scale-compressed at low SNR: −25.9 clean → −6.7 impaired at 5 dB, recovering to ≈ −21 by 40 dB |
| Physics | RSSI is a narrowband power read — immune to CFO/phase-noise/IQ; only AWGN touches it, and only its scale |
So the ordering never degrades even where the scale does — and re-fitting the scale is exactly what periodic calibration does. This is an in-silico motivation for ble-periodic-calibration, not a measured guarantee.
Key references
- wang2015 ↗ — why the pipeline is amplitude-first; commodity CSI phase is impairment-dominated.
- cominelli2023_e6ee ↗, zhang2022 ↗ — grounds the fragility finding in measured commodity-NIC behaviour.
- xie2015 ↗, gringoli2019 ↗ — commodity CSI extraction and CFO/SFO cleanup; the RF-hardware and deployment counter-argument.
- chen2023_5cbd ↗, wang2026_2758 ↗ — the sim-to-real / domain-gap framing this experiment sits inside.
- vishwakarma2021 ↗ — the red-team's demand: bridge the gap with measured, not authored, noise.
- hou2023_bf83 ↗ — few-shot / domain-agnostic counting for the large clean↔impaired gap.
- demrozi2021 ↗, iannizzotto2025 ↗ — the BLE anchor's real-world basis.
- angelopoulos2025_8070 ↗ — the statistician's distribution-free calibration bar.
- zhang2026_ccac ↗, guarino2026 ↗ — the reproducibility protocol the SWE voice invokes.