Live status · Read the latest
monad-knowledge Wi-Fi sensing lab · FIIT STU
superseded EXP-005

Hybrid BLE+CSI Occupancy Estimation

In plain words

Do two sensors that fail in opposite ways, phone counting and Wi-Fi sensing, give a better headcount together than either alone?

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
Bluetooth counts phones exactly but misses anyone without one. Wi-Fi feels every body but is vague about how many. The hope is that each covers the other's blind spot.
How it is done
Before building the fusion on hardware, check the premise in simulation: does the Bluetooth signal grow step by step with more people, or does it only flip between empty and occupied?
Where it stands
Superseded historical design. Current work and evidence limits are recorded under EXP-F3; this card has no primary data.

Asks, formallyFusing BLE advertisement counting (device-based) with CSI sensing (device-free) produces more robust occupancy estimates than either modality alone, especially in scenarios with partial phone penetration.

FoundSuperseded design retained for provenance, reviewed September 15, 2026.

StandingReplaced by later work · last activity 2026-07-07

RoomFIIT STU — meeting room or seminar room, mixed device coverage

Hybrid BLE+CSI Occupancy Estimation

Current assessment (2026-09-15)

Superseded design retained for provenance, reviewed September 15, 2026. No primary data are attributed to this card. Fusion is conditional on reference quality and device carriage. It has not been shown to beat both inputs in every field regime, especially when no participant phone is observed.

Fusion is conditional on reference quality and device carriage. It has not been shown to beat both inputs in every field regime, especially when no participant phone is observed.

Next evidence needed: Use EXP-F3 for the current protocol and evidence. The earlier plan below is not an instruction to reopen this experiment.

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

Picture a doorway counter that works by how much a Bluetooth beacon's signal gets blocked. One person steps into the beam and the signal drops a bit — great, you can tell "someone is here." Now a second person steps in, and a third. Does the signal keep dropping in neat, equal steps you could count backwards from? Or does it saturate — drop once and then barely move no matter how many more people crowd in, because the first body already blocked the important path?

That saturation question is the crux. Device-based counting (BLE) is precise about phones, but a phone is a proxy for a person, and not everyone carries one that is discoverable. Device-free counting (CSI) sees everyone but is coarse. The fusion idea needs the BLE side to contribute graded information — otherwise BLE is just a presence switch and the "fusion" is really CSI doing all the counting. A well-known way to fight saturation is where you put the anchors: concentrate them where people actually cluster and transit, so successive occupants keep blocking fresh signal paths. That is exactly the lever these two campaigns pulled.

What we are trying to prove

  • Umbrella hypothesis (falsifiable, not yet tested on hardware): a model that fuses BLE advertisement counting with CSI features beats either modality alone across phone-penetration rates from 0 % to 100 %, degrading gracefully to CSI-only at 0 %. A null here means BLE adds nothing beyond what CSI already provides — the "fusion" is redundant.
  • The sub-hypothesis we actually tested (in silico): the BLE anchor's aggregate signal drop is a monotone, graded function of headcount — steeper and cleaner when anchors are placed on the building's high-traffic hub than when dispersed one-per-room. If it only distinguishes empty from occupied, BLE is a presence sensor, and the fusion must lean entirely on CSI for counting.
  • What a null means here (and it is what we got): if topology-informed placement does not produce a resolvably steeper graded slope than dispersed placement, then anchor relocation cannot buy graded BLE counting — the saturation is intrinsic to single-Tx narrowband blockage at this density. That narrows the BLE arm's claim from "graded counter" to "reliable presence + a consistent-but-shallow response."

How the experiment works (plain method)

  1. The full umbrella design (planned, hardware): collect five phone-penetration scenarios (100 %, 75 %, 50 %, 25 %, 0 % of 8 people carrying the app), measure BLE-only, CSI-only, and three fusion models (linear correction, learned penetration rate, feature-level gradient boosting), and plot MAE vs penetration rate. This is the IP-106 testbed work — not yet run.
  2. The sub-question we ran (simulation): on a real multi-room floor plan (resplan-12439), ray-trace the BLE + CSI channel under a sweep of occupancy N ∈ {0, 2, 4, 6, 8, 12}, and fit the BLE anchor's mean ΔRSSI (baseline-normalised) against N. The slope in dB/person is the "graded count" signal.
  3. The placement contrast: compare dispersed anchors (one per peripheral bedroom) against topology-informed anchors (concentrated on the high-betweenness living-0 corridor hub plus the large bedroom-1), paired by seed so each crowd trajectory runs through both layouts.
  4. The powering: the pilot used 3 random seeds; the audited re-run used 8 seeds — the number the observed variance says you need for ~90 % power against the pilot's effect. The unit of replication is the seed, not the ~11,520 individual frame×link events (treating those as independent is the classic way to fake significance).

What we've found so far (honest)

Neither campaign is a phantom — the pilot attached 18 real runs + one figure; the powered re-run attached 96 gate-passed runs with a seed-clustered bootstrap. What changed between them is the whole point.

Claim Pilot (c-ble-anchor-placement, n = 3) Powered re-run (c-ble-graded-count-powered, n = 8, 96 runs)
Topology graded slope −0.48 dB/person (monotone) mean −0.353 (8/8 seeds negative, but the sign test's p = 0.0078 is just the attainable floor at n = 8, not a margin)
Dispersed graded slope +0.08 dB/person (flat — "saturates") mean −0.227 (7/8 negative — does not actually saturate)
Topology − dispersed difference claimed a real gap −0.126 dB/person, 95% CI [−0.412, +0.113], exact sign-flip p = 0.461, d = −0.32
Fine graded count (per ΔN=2 step) coarse ΔN≥4 "recovered" 0 / 20 cells survive BH-FDR(0.05); ΔN=2 topology 0/3
Presence (empty vs occupied) d 2.32 → 2.56 preserved (well-separated)

Read plainly:

  • The pilot's graded-recovery headline was an n = 3 seed-variance artifact. The powered interval [−0.412, +0.113] excludes the pilot's own −0.498 point — the design that could detect a −0.498 effect looked and did not find it. The per-seed differences straddle zero (−0.92, −0.39, −0.18, −0.15, −0.02, +0.08, +0.24, +0.33): a couple of favourable seeds, not a mechanism.
  • The pilot's story was also wrong. It claimed dispersed placement saturates flat; at power, dispersed carries a negative response too. So the "saturation the good placement rescues" was itself a small-sample mirage.
  • What survives is narrow and honest: BLE resolves occupancy presence robustly (large effect sizes), and a hub+large-room layout gives a more consistent (8/8 negative) but shallow response — good for a reliable presence/response sensor, not for reading off a headcount. The deliverable for IP-106 flips from "place anchors to get a graded count" to "place anchors for response consistency; do not budget for fine BLE headcount off placement alone."
  • This is a powered negative for the pilot-sized effect, not proof the true difference is zero. The interval still admits differences out to −0.412 dB/person; a genuinely tiny ~0.13 dB/person effect would need ~75 seeds to resolve and is below the 0.30 dB/person the brief pre-declared as practically meaningful anyway. A sentinel check confirmed the null is not a degenerate-data artifact (all 96 cells carry 120 events, no NaN, N=12 spans −0.99 to −9.26 dB).

How to read the figures

  • fig_csi_ble_anchor_placement (pilot session, the one rendered figure): two panels. Left — mean ΔRSSI vs occupancy N, one line per placement; the dispersed line dips at N=2 then bounces back toward zero (the saturation signature the pilot leaned on), the topology line keeps sliding down. Right — a resolvable-ΔN effect-size grid. Caveat when you look at it: this is n = 3 seeds; the powered re-run below overturns the between-placement gap this figure suggests. Trust the presence separation, distrust the graded gap.
  • Powered session (c-ble-graded-count-powered): the synthesis narrates three figures — seed_trace (RSSI vs N, every seed a faint trace, mean bold, one panel per layout), paired_diff (per-seed dispersed−hub slope-difference dots with the CI on the difference), and perm_null (paired-permutation null histogram with the observed statistic marked). Provenance flag: the session's machine-readable figures[] list is empty even though the prose claims these three were rendered — treat the figures as unverified until the artefact prefix is confirmed (see the Software Engineer's note).

Key references

  • longo2019_b72f ↗ — the closest real prior on combining Wi-Fi and BLE for occupancy; the fusion premise this umbrella tests.
  • depatla2018_97a9 ↗, zou2018_1590 ↗ — device-free CSI counting; where the graded burden actually lives.
  • iannizzotto2025_b55c ↗ — graded BLE counting does exist, but via deep features, not a raw RSSI slope.
  • demrozi2021_bf55 ↗, koksal2025_426c ↗ — real BLE occupancy/presence, the deployable floor.
  • zhen2022_bb0b ↗, afghantoloee2021_8628 ↗ — anchor-placement optimization, the campaign's motivation.
  • zhang2026_ccac ↗, guarino2026_e72c ↗ — the reproducibility/evaluation bar the SWE and Statistician invoke.
  • wang2026_2758 ↗, huang2025_060d ↗ — the sim-to-real gap and a real multi-user anchor the Red-Team demands.
  • zhang2024_1d32 ↗, simoni2023_f197 ↗ — the privacy design the Ethics voice requires.
Simulation runs the 20 most recent, newest first
Run Date Gate Campaign Replay
GPQSBVZQ 2026-07-07 ✓ c-ble-graded-count-powered —
EC376ZTW 2026-07-07 ✓ c-ble-graded-count-powered —
3G05N18M 2026-07-07 ✓ c-ble-graded-count-powered —
DB70QCV3 2026-07-07 ✓ c-ble-graded-count-powered —
BQJV95NC 2026-07-07 ✓ c-ble-graded-count-powered —
NYPQAW3Y 2026-07-07 ✓ c-ble-graded-count-powered —
DSQ8B36S 2026-07-07 ✓ c-ble-graded-count-powered —
NT8D00DV 2026-07-07 ✓ c-ble-graded-count-powered —
9R8F2V8T 2026-07-07 ✓ c-ble-graded-count-powered —
GT9AMSCC 2026-07-07 ✓ c-ble-graded-count-powered —
TR9M9YK1 2026-07-07 ✓ c-ble-graded-count-powered —
ZB8J21YR 2026-07-07 ✓ c-ble-graded-count-powered —
E69RYZMK 2026-07-07 ✓ c-ble-graded-count-powered —
S3GYYG12 2026-07-07 ✓ c-ble-graded-count-powered —
KKTK9APH 2026-07-07 ✓ c-ble-graded-count-powered —
TP3DBBDQ 2026-07-07 ✓ c-ble-graded-count-powered —
SNAWYD88 2026-07-07 ✓ c-ble-graded-count-powered —
KNRETJ7V 2026-07-07 ✓ c-ble-graded-count-powered —
R954F1MX 2026-07-07 ✓ c-ble-graded-count-powered —
TPB6JZHA 2026-07-07 ✓ c-ble-graded-count-powered —

All exp-csi-static runs in the workbench →

Provenance

—
not recorded

Data types

  • csi-amplitude
  • csi-phase
  • ble-advertisement-count
  • ble-rssi
  • ground-truth-occupancy
  • fusion-model-output