Live status · Read the latest
monad-knowledge Wi-Fi sensing lab · FIIT STU
running ble-csi-coregistration simulation simulation

BLE/CSI co-registration — does the RSSI anchor resolve occupancy where temporal CSI collapses?

In plain words

When a seated crowd stops stirring the Wi-Fi signal, can a Bluetooth reading solved from the same scene still tell how many people are there?

device observations device carriage varies CSI features motion sensitivity varies both independent references establish the person scale
Device carriage affects phone observations; motion and acquisition quality affect CSI features. Fusion tests whether combining these uncertain readings helps after the person scale is independently calibrated. Schematic of the design, not a measurement.
Why it matters
A second observation may help when one CSI feature loses sensitivity, but its person scale still needs an independent reference.
How it is done
Thirty simulated runs of a still room with 0 to 12 people at three noise levels, with Bluetooth and Wi-Fi both computed from the same simulated radio field.
Where it stands
Thirty simulations support complementary presence information under the tested model. Graded headcount and field reference accuracy remain unvalidated.

Asks, formallyWhen temporal-CSI counting collapses (static or low-motion regimes), the co-registered BLE-RSSI anchor channel — solved from the same scene — carries residual occupancy information the CSI amplitude has lost. Expected: the BLE channel adds discriminability precisely in the regime where CSI temporal variance is flat; if it does not, the two modalities are redundant rather than complementary and the fusion premise weakens.

FoundThirty simulations support complementary presence information under the tested model.

StandingCollecting data now · last activity 2026-06-24

Room`resplan-12439-floor-0` multiroom layout with co-registered CSI + BLE from one channel solve — a design no measured dataset supports.

The room

resplan-12439 · resplan-12439-floor-0 · 52 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.

BLE/CSI co-registration: does the RSSI anchor resolve occupancy where temporal CSI collapses?

Current assessment (2026-09-15)

Thirty simulations support complementary presence information under the tested model. Graded headcount and field reference accuracy remain unvalidated.

The co-registered RSSI feature separated empty from occupied with reported effect sizes 2.3–3.7, but it saturated within the occupied range. These are descriptive simulated effects, not uncertainty bounds for real BLE device counting. A frozen simulated crowd also omits breathing and fidgeting.

Next evidence needed: Keep RSSI presence, unique-device counting and participant zone observations separate in EXP-F1. Validate each against independently timed reference counts before treating it as a calibration anchor.

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 counting people in a room by listening to how much the radio "shimmers." When people walk, they scatter the signal and the shimmer grows — that is how Wi-Fi crowd counting works, and it works because bodies in motion keep changing the channel. Now sit everyone down. The shimmer stops. The counter has nothing left to measure, even though the room is just as full. Device-free CSI counting is well studied (zhou2020 ↗; zou2018 ↗), and this static/seated blind spot is one of its known weak points.

The idea we test is to bolt on a second, unrelated radio that does not depend on motion. Bluetooth Low Energy beacons are cheap, everywhere, and a body standing between a beacon and a receiver simply blocks and weakens the signal — a static effect that survives even when nobody is moving. BLE has an independent track record as an occupancy and coarse-counting sensor (demrozi2021 ↗; longo2019_b72f ↗; iannizzotto2022 ↗). The bet: where CSI's temporal feature starves, BLE's blockage feature still carries the signal — and because we solve both radios from one and the same simulated scene, any disagreement between them is a real physical fact, not a calibration mismatch.

What we are trying to prove

  • Hypothesis (falsifiable): in the static/seated regime where the temporal CSI feature provably collapses, the co-registered BLE anchor still carries occupancy information — concretely, pooled mean RSSI should fall monotonically with the number of people N (Spearman rho(N, RSSI) <= -0.6 per seed), and a resolvable-step analysis should say how fine a headcount difference Delta-N is distinguishable given the event noise.
  • What a null means: if RSSI stayed flat as the room filled, or fell only in a way that could not be told apart from noise, the anchor would add nothing in the CSI dead zone and the whole "BLE-anchored ground truth" premise would need to be rebuilt (e.g. by moving beacons next to occupant zones) before any hardware money is spent — a cheap, valuable negative.
  • What the brief explicitly forbids: any BLE-vs-CSI accuracy contest. The BLE measurement noise is a self-authored sigma = ble.noise_db standing in for real per-event fading and MAC jitter, so an accuracy claim against it would be circular by construction. The honest deliverable is a sensitivity table, not a MAE number.

How the experiment works (plain method)

  1. Take a real multiroom floor (resplan-12439-floor-0) and, on a static through-wall rig (a still placement of bodies = a seated-crowd proxy), ray-trace the channel for N in {0, 2, 4, 6, 8, 12} people across three seeds.
  2. From the same solved channel (one ray-tracing pass, no second solve), emit both outputs: the CSI (links.parquet / csi.hdf5) and the co-registered BLE (ble_links.parquet, a ~2 MHz narrowband slice of the same channel plus a per-event Gaussian noise term). Co-registration is by construction — this is a design no measured dataset offers, which is the point and also the caveat.
  3. For each run, pool the BLE advertising events per link, subtract the empty-room baseline per link (to remove the ~4 dB fixed path-loss offset between links), and measure how the resulting Delta-RSSI moves with N.
  4. Compute the honest deliverables: per-seed Spearman rho(N, Delta-RSSI), and an effect-size table d = |Delta mean| / SE that says which occupancy steps are resolvable — then repeat the presence step at higher injected noise (4.0 and 6.0 dB) to see how fast it degrades.

What we've found so far (honest)

One finished session, 30 runs, one figure, and a verdict that split the three success criteria clean down the middle — pass / fail / pass.

Criterion 1 — both channels from one channel solve — PASS. All 30 runs emitted links.parquet / csi.hdf5 and ble_links.parquet (5 receive links x 24 placement events) from the same solved channel with ble.enabled: true, every file read with no NaN/Inf. Co-registration by construction confirmed — the plumbing is sound (the kind of check the 2026-07-15 integrity audit found is often skipped elsewhere).

Criterion 2 — graded monotone RSSI, rho <= -0.6 per seed — FAIL (not uniformly). Baseline-normalised Spearman rho(N, Delta-RSSI) per seed at 2.0 dB noise: seed0 = -0.83, seed1 = -0.66, seed2 = -0.09. Two of three seeds clear the bar; seed2 is wrecked by a single low-N placement that dropped a body into a strong-blockage spot. But the deeper problem is the shape: not a clean graded slope, but an empty -> occupied step (Delta-RSSI approx -1 to -2 dB) followed by a saturated plateau — N=6 and N=12 land within ~0.2 dB of each other. The anchor does not encode graded count in this geometry.

Criterion 3 — resolvable-Delta-N sensitivity table + noise degradation — PASS (deliverable produced; honest reading). Effect size after event-averaging (M approx 120 events per level):

comparison d @ noise 2.0 dB reading
empty -> occupied (0 -> any N) 2.32 - 3.70 presence strongly resolvable
within-occupied, Delta-N=2 (2->4, 4->6, 6->8) 0.43 - 0.77 graded count not resolvable
within-occupied, Delta-N=4-6 0.19 - 1.02 marginal at best

Presence survives noise: d(empty -> first occupants) = 2.32 @ 2.0 dB -> 1.81 @ 4.0 dB -> 1.54 @ 6.0 dB, staying above d = 1 even at 6 dB event noise. Meanwhile the pooled per-event spread is ~6-12 dB and is dominated by cross-link and placement variability, not the injected measurement noise — that spread is the budget any finer occupancy term would have to clear, and it cannot.

Bottom line. The enabling premise holds in the honest, narrow sense: where temporal CSI starves, a co-registered BLE anchor still robustly says "the room is occupied." It does not deliver graded headcount here. This lands between the brief's "informative" and "needs rework" outcomes: informative for presence, needs beacon-placement-near-occupants or per-link calibration before it could support counting. Accordingly ble-ground-truth-sufficiency (H1) stays supported on literature weight — not bumped on this synthetic evidence, and ble-periodic-calibration (H2) stays plausible. (An earlier 14-run session, 01KT9E56..., was the plumbing shakedown; this 30-run session supersedes it.)

How to read the figure

fig_csi_ble_coregistration.png has two panels:

  • Left — Delta-RSSI vs N. Baseline-subtracted mean signal drop on the y-axis, number of people on the x-axis, one trace per seed. The story is in the elbow: a clear drop from 0 to the first occupants, then a flat plateau. Read the shape, not the endpoints — a counter would need a steady downward ramp, and there isn't one. seed2's near-flat line is the placement-unlucky realization, not a bug.
  • Right — per-event sigma. The ~6-12 dB spread of individual advertising events. This panel is the honest reality check: it shows the occupancy signal (a 1-2 dB step) sitting inside a much larger event-to-event scatter, which is why presence is resolvable only after averaging ~120 events and graded count is not resolvable at all.

Key references

  • zhou2020 ↗, zou2018 ↗ — device-free CSI counting and its static/seated blind spot, which motivates the anchor.
  • depatla2018 ↗ — through-wall Wi-Fi counting; the geometry-diversity requirement the Field Scientist invokes.
  • demrozi2021 ↗, longo2019_b72f ↗, iannizzotto2022 ↗, billah2021_69a2 ↗ — BLE occupancy/counting, the second modality's real-world basis and its known saturation.
  • rampa2022 ↗ — multi-body blockage physics; explains the plateau as expected, not a defect.
  • bocus2022 ↗ — the real co-modal CSI + BLE/PWR anchor the Red-Team demands for cross-check; huang2025_060d ↗ — public real-CSI counting bar.
  • zhang2026_ccac ↗, guarino2026 ↗ — the reproducibility bar the SWE voice invokes.
  • zhang2024_1d32 ↗, rusca2024 ↗ — privacy-preserving occupancy, the Ethics voice's basis.
  • chaudhari2026_85b1 ↗ — occupancy-for-energy framing behind the Building-Systems voice.
  • zhao2023_b424 ↗ — learned RF synthesis, the adjacent approach to the ray-traced CSI/BLE used here.
Campaigns & sessions 1 campaign instantiating this experiment
Campaign Session State Runs Started Report
c-ble-csi-coregistration Z77Q1ANT finished 30 2026-06-24 synthesis →
3R9REFP4 finished 14 2026-06-04 synthesis →
Simulation runs the 20 most recent, newest first
Run Date Gate Campaign Replay
Z7FH1Q1D 2026-06-24 ✓ c-ble-csi-coregistration —
88N9NBEE 2026-06-24 ✓ c-ble-csi-coregistration —
1YEQCC1W 2026-06-24 ✓ c-ble-csi-coregistration —
DVVHKGTC 2026-06-24 ✓ c-ble-csi-coregistration —
ZK0FM16G 2026-06-24 ✓ c-ble-csi-coregistration —
DWTQG6R5 2026-06-24 ✓ c-ble-csi-coregistration —
VGKTS5RW 2026-06-24 ✓ c-ble-csi-coregistration —
MH0S61BX 2026-06-24 ✓ c-ble-csi-coregistration —
TEZ8GNKB 2026-06-24 ✓ c-ble-csi-coregistration —
HX2T1Z9S 2026-06-24 ✓ c-ble-csi-coregistration —
RG3HSDZ2 2026-06-24 ✓ c-ble-csi-coregistration —
J1MPEPF2 2026-06-24 ✓ c-ble-csi-coregistration —
1V76XCG8 2026-06-24 ✓ c-ble-csi-coregistration —
EQ336TYZ 2026-06-24 ✓ c-ble-csi-coregistration —
8SNN4Z2K 2026-06-24 ✓ c-ble-csi-coregistration —
8314A7TR 2026-06-24 ✓ c-ble-csi-coregistration —
F08QFY0N 2026-06-24 ✓ c-ble-csi-coregistration —
ACSHA8CQ 2026-06-24 ✓ c-ble-csi-coregistration —
DNQ60Y1N 2026-06-24 ✓ c-ble-csi-coregistration —
AKEQ5RSK 2026-06-24 ✓ c-ble-csi-coregistration —

All exp-csi-static runs in the workbench →

Provenance

Data origin
simulated
Domain
csi
Room layout
csi-link-resplan-12439-multiroom

Data types

  • csi-amplitude
  • ble-rssi
  • per-link-summary