lab-journal 2026-05-14 · 9 min

The Whiteboard Lied Politely: One CSI Session vs. a BLE Architecture

Six days after a tidy BLE positioning architecture got drawn on a whiteboard, Jakub and Andrej sat down for a CSI experiments session — and the numbers didn't match the model. Maya thinks the session was a validation step. Theo thinks that framing is the first mistake.

0:00 9:35

Show notes

Six days after a tidy BLE positioning architecture got drawn on a whiteboard, Jakub and Andrej sat down for a CSI experiments session — and the numbers didn't match the model. Maya thinks the session was a validation step. Theo thinks that framing is the first mistake.

2026-05-14--lab-journal--the-whiteboard-lied-politely-one-csi-session-vs-a-ble-arc-71ce79.mp3

Transcript — click to expand

Maya: The anchor goes up. The first CSI sweep comes back. And the number on the screen is — well, not the model. Not even close. Someone in the room says, quietly, 'so the architecture doc, is that still our reference?' And nobody answers right away.

Theo: That silence is the most honest moment in the whole project. Because the architecture doc was written six days earlier, the May 8th review with Igor, and it had never touched a real signal. The May 13th session with Andrej was the first time the model met the room.

Maya: Right, but, look, I read the May 8th notes. The pipeline decisions felt solid. Sliding-window in-memory processing, an MQTT channel for room-change events, an Indoor GML floor model. That's not a napkin sketch. So the session was there to validate those decisions, right? Confirm the architecture holds under real conditions.

Theo: That framing is the first mistake. Treating a CSI session as validation means you've already decided the architecture is correct and you're hunting for evidence that agrees with you. What the May 13th session actually did was generative. It surfaced signal anomalies the spec never named, and those anomalies are design inputs, not noise.

Maya: Okay, generative versus validation. Walk me through what that distinction looks like when you're standing in the room with the sniffer running.

Theo: So the MONAD2 BLE sniffer, you bring it up with one raw HCI command, hciconfig hci0 leadv 3, hand-type an eight-byte advertisement packet, and you're live. That moment is the bridge. Everything the architecture deferred, channel model assumptions, anchor placement tolerances, calibration cadence, all of it becomes real in that first packet. And the packet does not care about your Indoor GML floor model.

Maya: So the gap isn't a parameter you forgot to tune. It's structural.

Theo: Structural, yes. Guo's 2020 survey on fusion-based indoor positioning puts it plainly: RSS, received signal strength, fluctuates in indoor environments in ways that make the log-normal path loss model almost never accurate in real complex rooms. That model is the load-bearing equation under every whiteboard BLE positioning design. It's wrong the way a category is wrong, not the way a constant is wrong.

Maya: Okay, RSS, received signal strength. And log-normal path loss is basically the equation that says signal drops off predictably with distance? Like a smooth curve on a graph.

Theo: Right. Log-normal path loss says power falls as a logarithmic function of distance, plus a Gaussian noise term. Clean on a whiteboard. In a corridor with people walking through it, the Gaussian term explodes and the assumption collapses. The model predicts a smooth curve; the room gives you a spiky, non-stationary mess.

Maya: And I'd have said, okay, the spiky mess is multipath. Signal bouncing off walls, off furniture, off the glass partition, arriving at the receiver from seventeen directions at once. That's the villain in BLE positioning error.

Theo: (precise, slightly slower on the named term) Almost. But the dominant distortion in the May 13th session isn't multipath. It's Doppler micro-shift from human body occlusion. When a person walks between a BLE anchor and the receiver, their body attenuates and phase-shifts the carrier in a way CSI captures as a frequency smear across subcarriers. That smear is not the same signature as a wall reflection.

Maya: Hold on. Doppler micro-shift, that's the tiny frequency change from the body moving, not just blocking?

Theo: Correct. A static wall reflects; the signal arrives delayed and attenuated but at the same frequency. A walking person both attenuates and Doppler-shifts, because the body is moving relative to the carrier. CSI, channel state information, is the per-subcarrier amplitude and phase fingerprint of the channel, and it captures that shift as a distinctive pattern across the subcarrier array. Multipath is a geometric problem. Body-occlusion Doppler is a kinematic one. Different physics, different fix.

Maya: So the whiteboard architecture was fighting the wrong enemy. It was designed around a geometric problem and the room handed you a kinematic one.

Theo: And the requirements doc made it worse. The May 6th requirements walk-through set positioning tolerances, error budgets, that assumed a static signal environment. Nobody was walking. No body occlusion, no Doppler smear. That error budget is structurally optimistic before a single anchor gets placed, because it was scoped to a room that doesn't exist.

Maya: Painful sentence. The error budget is optimistic before the first anchor. So the architecture inherited a broken baseline from the requirements, and the May 8th review didn't catch it because nobody had run the experiments yet.

Theo: Right. And Demrozi's group in 2021 ran a low-cost BLE distance estimation system, got nine to twelve centimetre RMSE, which sounds impressive. But that number is a direct function of how much offline measurement they poured in. An extensive fingerprint-collection campaign per environment, per anchor layout. The headline RMSE is not a model property; it's a calibration-data property.

Maya: Nine to twelve centimetres is actually pretty good for BLE. So why can't you just run Demrozi's fingerprinting approach, collect enough data per room, and call it done? What breaks when the environment changes?

Theo: The fingerprint table is a snapshot of one room configuration, one furniture layout, one crowd density. Move a desk, change the occupancy pattern, swap the anchor for a unit with slightly different antenna gain, and the fingerprint is stale. The RSSI values it recorded no longer match the room. Recalibration isn't a one-time cost; it's a recurring operational cost proportional to how fast the environment drifts.

Maya: And that drift is exactly what the May 8th architecture didn't budget for. The sliding-window pipeline, the MQTT channel, those are clean abstractions that assume the underlying signal model stays valid. If the room changes and you haven't recalibrated, the pipeline is processing garbage.

Theo: Right. And Guarino's group published this year, 2026, a survey specifically on CSI dataset reproducibility. Their finding: CSI datasets vary so much in hardware, format, and protocol that reproducing one lab's result in another lab is effectively impossible. Same heterogeneity problem. What the May 13th session logged as an anomaly is almost certainly not reproducible from a different sniffer in a different room without a fresh calibration campaign.

Maya: So 'just run another CSI experiment' never lands where the diagram expected it to. Each experiment is effectively a new project.

Theo: In a different environment, yes. In the same room with the same hardware and the same people walking the same path, you get consistent results. But the moment any of those variables shift, you're back to square one on the signal model. That's not a solvable problem; that's a property of the physics.

Maya: Okay, so where does that leave the architecture doc? Because the May 8th review was a lot of work. Igor's pipeline design, the GML floor model, the MQTT channel separation. Are we saying that's all wrong?

Theo: Not wrong. Draft. The architecture survives as a draft. The pipeline structure is fine, the MQTT separation is sensible, the GML floor model is a reasonable abstraction. What changes is the status of every decision that depends on the signal model being stable. Those decisions are open until the experiments close. And the May 13th session didn't close them, it opened them.

Maya: Which is the exact inversion of how I came into this. I thought the session was the closing chapter, confirm the architecture, move to implementation. You're saying it was the opening hypothesis.

Theo: The May 8th review felt like a closing chapter. That's a fair description of what it felt like. But May 13th is the first actual evidence, and every anomaly it logged is a requirement the spec never wrote. Treat those anomalies as noise to filter out, you're building on the wrong foundation.

Maya: So the walk-away: the gap between the whiteboard and the first CSI run is structural. RSS fluctuation, per-deployment heterogeneity, body-occlusion Doppler. And the only thing that actually closes it is periodic empirical recalibration. Not a better equation. Not a cleaner abstraction.

Theo: (honest, slightly quieter) And 'periodic' is doing a lot of work in that sentence. In a room where the furniture stays fixed and occupancy patterns are predictable, you might recalibrate monthly. In a conference space with rolling setups, honestly, I don't know. I haven't measured drift past a week in that scenario, and nobody has published that number for BLE CSI specifically.

Maya: That's a clean place to stop, because the open question is exactly that. If body-occlusion Doppler is the dominant distortion in your indoor environment, not multipath geometry, which decisions from the May 8th review need to be reopened first? Tomorrow we're looking at the MQTT channel design specifically, and whether the room-change event model makes any sense if the signal boundary is a moving person, not a static wall.

Show notes

Topics covered:

  • CSI experiments session 2026-05-13
  • BLE positioning architecture review 2026-05-08
  • BLE requirements walk-through 2026-05-06
  • log-normal path loss model failure indoors
  • Doppler micro-shift from body occlusion
  • multipath reflection vs body occlusion in BLE error
  • RSS fluctuation and indoor signal heterogeneity
  • MONAD2 BLE sniffer hardware setup
  • demrozi2021_bf55
  • guarino2026_e72c
  • guo2020_267f
  • sliding-window in-memory pipeline architecture
  • MQTT room-change channel
  • Indoor GML floor model
  • error budget and static signal assumptions
  • experiment-to-design generative loop
  • recalibration campaigns as the real lever

New literature:

  • guo2020_267f
  • guarino2026_e72c
  • demrozi2021_bf55
  • sadowski2020_f2ba

Meetings referenced:

  • meetings/2026-05-13-csi-experiments.md
  • meetings/2026-05-08-igor-ble-architecture.md
  • meetings/2026-05-08-lukas-monad-bp.md

Diary entries:

  • diary/Hardware-BLE-beacon-setup.md

Open question carried forward: If the dominant CSI distortion in your indoor environment is body-occlusion Doppler rather than multipath geometry, which decisions from the May 8th architecture review need to be reopened first?