BLEShark Nano · product photo. The project visuals below are AI-prepared illustrations based on my original screenshots.
The problem
BLE advertisements reveal only part of a device’s behavior, and raw Wi-Fi signal measurements need interpretation before they become useful observations. I wanted to move beyond discovery and understand the data exposed by my test devices.
The solution
I built two Rust-based tools with the BLEShark Nano SDK: a GATT inspector to examine services, characteristics, and readable values, and a motion-detection experiment that analyzes short-term variation in Wi-Fi RSSI. The lab notes below document the setup, results, and limitations.
The idea
Learn what Bluetooth Low Energy devices expose, and turn raw observations into a useful lab notebook.
On the workbench
I’ve been experimenting with the BLEShark Nano and its Rust SDK, inspecting GATT services and characteristics and working through connection and address-type behavior.
What I’m documenting
Next steps
Keep recording reproducible observations and develop small scripts for my own test devices.
Wi-Fi motion detection with RSSI
I built a small Rust-based motion detector using the BLEShark Nano SDK. It monitors the RSSI of a fixed 2.4 GHz Wi-Fi access point and uses short-term signal variation to distinguish stable conditions from movement.
How it works
Wi-Fi access point → RSSI samples → rolling standard deviation → motion score → STABLE / MOTION / HIGH MOTION.
What I observed
In the experiment documented in my screenshots, RSSI standard deviation stayed around 0.5–1.1 under stable conditions and rose to approximately 1.9–2.9 when someone moved through the RF path. These are observations from this setup, rather than universal motion thresholds.
Rust BLE & GATT inspector
I wrote a custom Rust script using the BLEShark Nano SDK from InfiShark Technologies to inspect Bluetooth Low Energy devices at the GATT/protocol level.
From discovery to inspection
Results from the screenshots
A 15-second active scan reported 275 unique BLE addresses; that does not necessarily mean 275 physical devices. A selected Buds2 Pro connection used a random address type and returned 15 GATT services.
The output includes Battery Service (0x180F) and Battery Level (0x2A19), with a raw hexadecimal value of 0x63 decoded as 99%. Another battery read timed out, which is also shown in the adapted visual. Finding a service or characteristic does not by itself establish access to every operation it advertises.



