Live status · Read the latest
monad-knowledge Wi-Fi sensing lab · FIIT STU
running csi-impairment-sim-to-real simulation simulation

CSI hardware impairments — does the occupancy signal survive a commodity NIC?

In plain words

Does the occupancy signal survive the flaws of an ordinary Wi-Fi card?

clean, from the ray tracer a real card's flaws noise, offsets, gain, rounding what a card would report is the occupancy signal still in there?
The simulator's radio is perfect: no noise, no frequency offset, infinite precision. A real Wi-Fi card is none of those. The design pushes the clean signal through a model of the card's flaws and asks whether the people are still visible on the far side. Schematic of the design, not a measurement.
Why it matters
Simulated radio is perfect by construction. If a real card's noise and offsets wash the people out of the signal, the clean simulation proves nothing about hardware.
How it is done
Bolt a model of a commodity card (noise floor, frequency offset, imbalance, phase noise, 10-bit rounding) onto the clean simulated signal at graded severity and watch the occupancy effect.
Where it stands
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.

Asks, formallyThe occupancy-driven second-order CSI statistics that a clean ray-traced tensor exposes degrade, but do not vanish, once commodity-NIC impairments (CFO, SFO, phase noise, AGC, quantisation) are applied. A graded impairment sweep should show the occupancy effect size shrinking monotonically with impairment severity, staying CI-separated from the null at the AX210-representative profile — otherwise the sim-only mechanism claims do not transfer to hardware.

FoundThe original impairment-prior sensitivity result stands.

StandingCollecting data now · last activity 2026-06-24

RoomSynthetic Tx/Rx link on `test-lab-synth-floor-0` and the `resplan-12439` multiroom layout; the IP-085 impairment profiles applied on top of the clean `exp-csi-static` tensor.

The room

test-lab-synth · test-lab-synth-floor-0 · 8 devices

The floor this experiment runs on — its rooms, walls, furniture and the highlighted sensors placed for it. This is the surveyed layout as last exported; a run's replay below shows the geometry as it was simulated.

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)

  1. CSI impairment grid (c-csi-impairment-sim-to-real): ray-trace the csi-synth-corridor-link scene 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 clean csi.hdf5 oracle is kept alongside each impaired run, so every cell carries its own before/after.
  2. BLE robustness grid (c-ble-impairment-robustness): the same runner on the resplan-12439 multiroom floor with ble.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.
  3. 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?
  4. 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.
Campaigns & sessions 2 campaigns instantiating this experiment
Campaign Session State Runs Started Report
c-ble-impairment-robustness 3C0QFRYJ finished 14 2026-06-24 synthesis →
c-csi-impairment-sim-to-real 651DTWXZ finished 13 2026-06-09 synthesis →
Simulation runs the 13 most recent, newest first
Run Date Gate Campaign Replay
RTMED9JY 2026-06-09 ✓ c-csi-impairment-sim-to-real —
M81AA3T2 2026-06-09 ✓ c-csi-impairment-sim-to-real —
DQ9AA92V 2026-06-09 ✓ c-csi-impairment-sim-to-real —
QDQ8Q3P5 2026-06-09 ✓ c-csi-impairment-sim-to-real —
3J1YX996 2026-06-09 ✓ c-csi-impairment-sim-to-real —
FGPZ2DZK 2026-06-09 ✓ c-csi-impairment-sim-to-real —
K2ZD1YYV 2026-06-09 ✓ c-csi-impairment-sim-to-real —
QZRP28BH 2026-06-09 ✓ c-csi-impairment-sim-to-real —
TT3FC9YV 2026-06-09 ✓ c-csi-impairment-sim-to-real —
BPDGGMN7 2026-06-09 ✓ c-csi-impairment-sim-to-real —
78E738FE 2026-06-09 ✓ c-csi-impairment-sim-to-real —
1BNE976B 2026-06-09 ✓ c-csi-impairment-sim-to-real —
MEBF133P 2026-06-09 ✓ c-csi-impairment-sim-to-real —

All exp-csi-static runs in the workbench →

Provenance

Data origin
simulated
Domain
csi
Room layout
csi-synth-corridor-link

Data types

  • csi-amplitude
  • csi-phase
  • impairment-profile
  • per-link-summary