Asking the fleet what it is doing…
monad-knowledge Wi-Fi sensing lab · FIIT STU
running csi-impairment-fit simulation simulation

exp-csi-calibration, finally — fitting the CSI impairment profile from a month of empty room

In plain words

What does our real Wi-Fi card actually add to a clean signal, measured from a month of empty room?

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
The simulator's model of a card's flaws is a guess from the literature, and its own code says so. An earlier study found that mild flaws can halve the occupancy signature and flip the sign of one feature.
How it is done
Estimate each of the seven flaw parameters (noise, frequency and timing offsets, gain imbalance, phase noise, rounding depth) from first-party empty-room captures and compare with the shipped prior.
Where it stands
Not yet run. It was blocked on real capture until the fleet existed.

Asks, formallyEvery parameter of `ImpairmentProfile` is estimable from first-party empty-room capture, and the fitted values differ materially from the commodity-NIC literature prior the simulator currently ships. The consequential claim is the second-order one: because the IP-101 impairment grid found that mild NIC impairments halve the occupancy attenuation signature and sign-flip the Rician-K slope, the fitted operating point decides whether the project's in-silico occupancy results were computed at an impairment level the real hardware has.

FoundNot yet run.

StandingCollecting data now · last activity 2026-08-28

RoomReal first-party capture: `EXP-F2`, 86 sessions, 2,641,389,896 declared records, 2026-07-27 → 2026-08-28, ten AX210/Pi5 nodes in the FIIT library, `useful_yield` 0.927–0.976. Per-tone complex CSI read from the csiq containers on S3 — NOT from the measurement lake, whose `packets` table carries scalars only and whose `ratio_*` columns cancel a common CFO by construction.

The room

fiit · fiit-ground-0 · 10 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.

Executive summary

The simulator's measurement model is a guess, and it says so in its own docstring. Seven parameters — SNR, CFO, STO, I/Q amplitude and phase imbalance, oscillator phase noise, quantisation depth — were set from Atheros and Intel CSI-tool conventions in the literature, and flagged unproven pending a real capture.

The real capture has existed since 27 July. This card fits the seven parameters from it and then asks the only question that matters downstream: does the occupancy signature survive at the fitted values?

What each parameter is read from

Parameter Estimated from the empty-room corpus
snr_db per-link amplitude variance against RSSI
cfo_hz packet-to-packet common phase rotation across tones
sto_samples linear phase-ramp slope across subcarriers, per packet
iq_amp_imbalance_db, iq_phase_imbalance_deg mirror-tone conjugate correlation
phase_noise_deg_rms residual per-tone phase RMS after CFO and STO removal
n_bits read from the csiq container. Known, not fitted.

symbol_duration_s is a constant of the standard and is not a free parameter.

The trap in the data path

The measurement lake cannot answer this. packets carries chain_amp_rms, ratio_amp_db and ratio_phase_rad. The last two are inter-chain ratios taken within one NIC, so a common carrier-frequency offset cancels exactly — the column that looks like a phase measurement is the one column in which CFO is invisible. The fit reads per-tone complex CSI from the csiq containers through the csi package.

What a null means

If the fitted values land inside the shipped prior's neighbourhood, the simulator's measurement model was right by luck or by good reading, and every prior in-silico result keeps its current standing. That is a clean, quotable outcome.

If they land far outside — and the impairment grid says the region where the attenuation signature halves and the K-slope sign-flips is close by — then the project's published in-silico occupancy figures were computed at an impairment level the AX210 does not have, and each needs a stated correction rather than a footnote.

Secondary, if the primary lands

OccupancyDiffuse.from_real_anchor fits {k0_db, k_slope_db_per_person} from a real anchor's (count, Rician-K) pairs. It is currently fitted against WiMANS and OPERAnet. A first-party anchor is strictly better, but it needs labelled occupancy, which the fleet does not yet have. Named here so it is not forgotten, and explicitly out of scope for this session.

Campaigns & sessions 1 campaign instantiating this experiment
Campaign Session State Runs Started Report
c-csi-impairment-fit RZ4N272W finished 16 2026-08-28 synthesis →
Simulation runs the 16 most recent, newest first
Run Date Gate Campaign Replay
H5AQ5S9Q 2026-08-28 c-csi-impairment-fit
RDPYGXX6 2026-08-28 c-csi-impairment-fit
TR40JXFV 2026-08-28 c-csi-impairment-fit
3GN45EC7 2026-08-28 c-csi-impairment-fit
19WRZM30 2026-08-28 c-csi-impairment-fit
001RYDP9 2026-08-28 c-csi-impairment-fit
7DTY1GXD 2026-08-28 c-csi-impairment-fit
Q74SXRSF 2026-08-28 c-csi-impairment-fit
YXMFKP2P 2026-08-28 c-csi-impairment-fit
25Y8QXWN 2026-08-28 c-csi-impairment-fit
QVB33Q8F 2026-08-28 c-csi-impairment-fit
GRB7P96M 2026-08-28 c-csi-impairment-fit
RV4RGRQG 2026-08-28 c-csi-impairment-fit
MAZJWDZM 2026-08-28 c-csi-impairment-fit
GZN350BN 2026-08-28 c-csi-impairment-fit
E1ZXKF8W 2026-08-28 c-csi-impairment-fit

All exp-csi-static runs in the workbench →

Provenance

Data origin
mixed
Domain
csi
Room layout
fiit-ground-fleet

Data types

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