The question: How does BLE-assisted ground truth collection (EXP-001) close the calibration loop that makes CSI human sensing reliable across environments?
Every CSI crowd-counting paper in the vault buries the same confession somewhere in its methodology section: a graduate student sat in the corner with a clipboard. choi2022_17c2 ran four ESP32 link-pairs at 100 Hz and still needed that person in the corner to make the labels honest. The moment that stops being feasible — a real library, a real semester, nobody free to count — is the moment the sensing system quietly stops being trustworthy. meneghello2023_0a93 ↗ put a number on why it compounds: CFR (Channel Frequency Response, the per-subcarrier amplitude-and-phase snapshot that CSI systems use to fingerprint human presence) traces collected in the same empty bedroom on different days were almost uncorrelated. The model you trained yesterday is already lying to you today. The fix isn't a bigger neural network. It's a phone in someone's pocket broadcasting a BLE advertisement once a second.
The hidden labour tax on every CSI deployment
Manual labelling is not just inconvenient — it is structurally incompatible with long-running deployments. You can staff a controlled experiment for a day. You cannot staff a library reading room for three months. And because CSI models are sensitive to furniture rearrangements, seasonal humidity shifts, and even the pattern of who sits where, the model drifts continuously after Day 0. Without fresh labels, you cannot measure the drift, let alone correct it. The thirty-thousand-sample ceiling that shows up repeatedly across the vault's paper pool is a direct symptom: every dataset stops where the clipboard-holder went home.
Phones as a continuous ground-truth oracle
experiments/EXP-001 BLE-Assisted CSI Ground Truth Collection replaces the clipboard with the occupants' own hardware. Each participant runs a mobile app that broadcasts a unique-UUID BLE (Bluetooth Low Energy, the short-range radio protocol used for proximity beacons) advertisement at 1 Hz. A Raspberry Pi scanner on the ceiling counts distinct advertisers in each one-second window. That count is the occupancy ground truth — continuous, automatic, and free once the app is installed.
The experiment runs in three phases. Phase A is a controlled validation: manual counts run in parallel with BLE counts to confirm the scanner's number tracks the room's actual headcount before anything is trusted for real data. Phase B is natural-occupancy collection, where the system runs unsupervised and the BLE count feeds directly into the CSI training pipeline. Phase C stress-tests partial coverage — deliberately dropping to 60% phone participation — to measure how quickly the BLE-derived count decorrelates from true occupancy. That last phase has no results in the vault yet; it is the open wound the FIIT deployment will eventually close.
billah2021_69a2 established the prior art: BLE alone, with reinforcement-learning adaptation on an nRF52840, reaches around 95% occupancy detection accuracy. That track record is what makes BLE credible as a label source for a separate CSI channel rather than just a sensing channel in its own right.
Chaining those labels into a calibration loop
Collecting ground truth continuously only matters if something consumes it. experiments/EXP-003 Periodic BLE Calibration Campaigns is the consumer.
The chain looks like this:
BLE scanner → occupancy count (1 Hz)
│
▼
Disagreement monitor: |BLE_count − CSI_estimate| > 20% for > 1 hour?
│ yes
▼
Calibration campaign trigger (Strategy C)
│
▼
App boosts BLE advertising interval to 100 ms (10×)
Raspberry Pi collects dense labelled CSI window (10–30 min)
│
▼
Fine-tune last layers of CSI model on fresh data
│
▼
Accuracy target: within 5% of Day-0 baseline
The key design choice is last-layer fine-tuning rather than full retraining. Full retraining would require the same data volume as the original training run — back to the clipboard problem. Fine-tuning only the final layers on a short labelled window is cheap enough to run on the edge hardware already in the room. koo2026_a08d explicitly names "lightweight self-calibration routines that run in the background without uploading data" as an open direction; EXP-003's BLE-triggered fine-tune is the first concrete instantiation of that call in the vault, and no other paper in the pool wires BLE-derived labels into a calibration loop for a separate CSI model.
The trigger-based Strategy C variant is what makes the loop sustainable: campaigns fire only on demand, not on a fixed schedule, so the system is not burning compute and battery on recalibration when the model is still accurate.
What's running, what's blocked
The meetings/2026-05-13-csi-experiments meeting locked the deployment timeline. Andrej's ESP32-C5 firmware — 5 GHz channel switching, a 10-second CSI-heartbeat watchdog that restarts the capture pipeline if no packet arrives, and SD-card logging over SPI with a C5+S3 sniffing sidecar — is the hardware substrate. Target: productive install in the FIIT library by October, giving three months of live data before the DP2 January milestone.
experiments/EXP-002 CSI Model Drift Measurement Over Time sits between EXP-001 and EXP-003 in the chain: it is the experiment that will actually quantify how fast the CSI model degrades in the library environment, which determines whether EXP-003's 5% accuracy target is achievable with 10-minute campaigns or whether longer windows are needed. EXP-002 is planned but not yet running — it is blocked on the October hardware install.
One falsifiable prediction: if the BLE calibration loop in EXP-003 is working as designed, a drift event detected by Strategy C should be correctable within a single 30-minute campaign window, and the corrected model's error on the following 24-hour period should fall within 5% of the Day-0 baseline. If the campaign window needs to exceed 30 minutes to recover accuracy, the last-layer fine-tuning assumption is wrong and the experiment collapses back toward full retraining.
The coverage floor we haven't hit yet
There is a race condition baked into the design that EXP-001 Phase C has not yet resolved. The BLE-derived count is only as reliable as phone participation. In a public library, 100% coverage is a fiction — some people leave Bluetooth off, some carry no phone, some use devices that randomise MAC addresses faster than the scanner's deduplication window. The question EXP-003 implicitly assumes away is whether the BLE count is still trustworthy enough to be a calibration signal when participation is partial. If the coverage floor is 60% and that introduces a systematic undercount, Strategy C might trigger on a phantom disagreement — or, worse, fail to trigger on a real one.
That gap has a phase-coherence cousin: EXP-001 captures CSI phase as well as amplitude, but the experiment plan does not yet specify whether BLE-triggered campaigns will fine-tune on phase features. Phase carries most of the geometric information about where people are standing, but it is also the most fragile signal across hardware resets and channel switches. The calibration loop might be fixing only the amplitude half of the problem and leaving the harder half untouched.
When phone coverage drops below the realistic floor for a public space — somewhere between 50% and 70% of actual occupants — how quickly does the BLE-derived count become too noisy to trust as a calibration signal, and does that noise floor arrive before or after the CSI model has already drifted past the 5% accuracy threshold EXP-003 is built to defend?