My research on bluetooth proximity using open tools such as hcitool
,btmgmt
, l2ping
, and hcidump
. A follow up to Raspberry Pi – Bluetooth Proximity blog post.
Commands
Replace <MAC>
with a bluetooth mac address.
Scan for Bluetooth LE Devices:
timeout --signal=SIGINT 30 hcitool lescan
Get Bluetooth LE Devices with RSSI values:
btmgmt find
Response:
hci0 dev_found: <SOME_MAC> type LE Random rssi -92 flags 0x0000
AD flags 0x1a
eir_len 14
hci0 dev_found: <SOME_MAC> type LE Random rssi -97 flags 0x0000
AD flags 0x1a
eir_len 18
hci0 dev_found: <SOME_MAC> type LE Random rssi -77 flags 0x0000
AD flags 0x06
name N016Y
hci0 dev_found: <SOME_MAC> type LE Public rssi -100 flags 0x0004
AD flags 0x00
eir_len 28
hci0 dev_found: <SOME_MAC> type LE Random rssi -94 flags 0x0000
Ping bluetooth enable device without pairing:
l2ping -c 3 <MAC>
Response:
Ping: <MAC> from <THIS DEVICE> (data size 44) ...
44 bytes <MAC> id 0 time 6.05ms
44 bytes <MAC> id 1 time 9.90ms
♥2 sent, 2 received, 0% loss
Dump all data of a paired bluetooth device:
hcidump -a
To request authorization from device:
hcitool cc <MAC>; hcitool auth <MAC>
Attempt connection then get RSSI value:
hcitool cc <MAC> && hcitool con && hcitool rssi <MAC>
Response:
Connections:
< ACL <MAC> handle 12 state 7 lm MASTER
RSSI return value: -4
This attempts to connect which doesn't work but the RSSI value is now present for device.
Attempt to get RSSI value without trying to connect to device:
hcitool cmd 0x05 0x0005 0x00 0x00 <MAC>
Some Resources
http://techiesanswer.com/ubuntu-command-line/unix-bluetoothctl-and-bluetooth-sendto-tools-to-send-file/ https://www.jaredwolff.com/get-started-with-bluetooth-low-energy/#show1 https://raspberry-projects.com/pi/pi-operating-systems/raspbian/bluetooth/bluetooth-commands access terminal over bluetooth https://ieeexplore.ieee.org/document/7124822 https://pdfs.semanticscholar.org/a0b3/67e1ade049f80ff787e1c1b2e9bbc7de6795.pdf https://stackoverflow.com/a/56522568/2414540 https://www.raspberrypi.org/forums/viewtopic.php?t=47466