![Image 1 — [OC] Bluetooth devices broadcasting in one room over 37 minutes. Each line is a unique device; each step takes its angle from the detection timestamp and its length from signal strength.](https://preview.redd.it/t7np26umerih1.png?width=3050&format=png&auto=webp&s=fb5343de4ac225c9f8cdc9c6368e80a4957d4aa1)
![Image 2 — [OC] Bluetooth devices broadcasting in one room over 37 minutes. Each line is a unique device; each step takes its angle from the detection timestamp and its length from signal strength.](https://preview.redd.it/xdbwdia0brih1.png?width=3900&format=png&auto=webp&s=ab3260a3bc515035e2f237683e2af23f9c84f6a3)
![Image 3 — [OC] Bluetooth devices broadcasting in one room over 37 minutes. Each line is a unique device; each step takes its angle from the detection timestamp and its length from signal strength.](https://preview.redd.it/p0kbqx82brih1.png?width=3900&format=png&auto=webp&s=85c9bba1a45a965713afc2bf8864978de4c1885e)
![Image 4 — [OC] Bluetooth devices broadcasting in one room over 37 minutes. Each line is a unique device; each step takes its angle from the detection timestamp and its length from signal strength.](https://preview.redd.it/b5s83e41crih1.jpg?width=3024&format=pjpg&auto=webp&s=960aab4b091828a54030e6ac9bd2a509fb973acb)
![Image 5 — [OC] Bluetooth devices broadcasting in one room over 37 minutes. Each line is a unique device; each step takes its angle from the detection timestamp and its length from signal strength.](https://preview.redd.it/4e7fvn6ubrih1.jpg?width=3024&format=pjpg&auto=webp&s=73b4d6bb64b50b661a41ea028396f35919193d04)
![Image 6 — [OC] Bluetooth devices broadcasting in one room over 37 minutes. Each line is a unique device; each step takes its angle from the detection timestamp and its length from signal strength.](https://preview.redd.it/gd27ghzybrih1.jpg?width=3024&format=pjpg&auto=webp&s=2ad240086eb7a606787e7ef0e8fd7e13c9c3fffd)
![Image 7 — [OC] Bluetooth devices broadcasting in one room over 37 minutes. Each line is a unique device; each step takes its angle from the detection timestamp and its length from signal strength.](https://preview.redd.it/5sj78e41crih1.jpg?width=3548&format=pjpg&auto=webp&s=8b634a5d1e1fec6e57d1a5e4678160a49d7b14f5)
[OC] Bluetooth devices broadcasting in one room over 37 minutes. Each line is a unique device; each step takes its angle from the detection timestamp and its length from signal strength.
Dead Reckoning: This is a data visualization of BLE signals, part of an ongoing print series and a continuation of my creative practice exploring the invisible networks and communication systems around us.
Data source: Custom-built system that scans for and logs Bluetooth LE advertisement packets from devices around me. Devices like phones, watches, laptops, earbuds — captured on my phone. Every device broadcasts its presence continuously, to no one in particular, several times a second; this is a recording of that traffic. 388 device addresses, 68,373 detections, over 37 minutes on Aug. 8, 2026. Each record is the UUID, device address, signal strength, and timestamp.
Tools: BLE captured through my Data as Material app (React Native, react-native-ble-plx), streamed over datanet.art... also a data platform I built. The drawing engine is plain JavaScript (ES modules), HTML canvas on screen, and a hand-written SVG exporter for the print. No charting library.
Encoding — two variables, both straight from the packet:
- Step angle ← timestamp. Where the detection falls in a repeating 15-second period becomes a compass bearing. Top of the period is straight up, then clockwise: 3.75s is east, 7.5s is south.
- Step length ← RSSI. Signal strength, mapped linearly from −5dBm (shortest step, closest) to −100dBm (longest, weakest).
Each line starts at a random position on the page. Every detection adds one segment to that device's line, fixed from the previous position using only bearing and distance, with no external reference — which is how ships navigated before GPS (or pirate maps). That's not a metaphor; it's the same procedure, which is where the title comes from. Error compounds, so a line drifts further from any true position the longer it runs.
Two things you can read directly off the image: a device that lingers leaves a long, tangled path, and the busier the room, the denser the picture.
The scan happened in a static location, so this is visualizing the signals at a specific location for a specific duration of time. It's indexical: every line is a trace of a device that was physically present and broadcasting. Replay the same capture, and you get a near-identical drawing (minus the random start position). Device addresses are used only to group a line and seed its colour; nothing else from the packets is stored.
More about the project is available on my site: https://www.jordanshaw.com/home/dead-reckoning