No es necesario conectarse cuando se usa btmgmt
$ sudo btmgmt find
Discovery started
hci0 type 7 discovering on
hci0 dev_found: 50:8C:FD:99:0A:EC type LE Random rssi -80 flags 0x0000
AD flags 0x06
eir_len 23
…
El indicador de intensidad de señal relativa es rssi -80
, pero la lista es mucho más larga y contiene más información sobre este y otros dispositivos.
Para espiar su vecindario Bluetooth mostrando solo direcciones MAC únicas con su RSSI más fuerte, ejecute el siguiente comando:
$ sudo btmgmt find |grep rssi |sort -n |uniq -w 33
hci0 dev_found: 40:43:42:B3:71:11 type LE Random rssi -53 flags 0x0000
hci0 dev_found: 44:DA:5F:EA:C6:CF type LE Random rssi -78 flags 0x0000
hci0 dev_found: 7F:7D:08:6B:E0:37 type LE Random rssi -74 flags 0x0000
hci0 dev_found: A4:58:0F:21:A1:8C type BR/EDR rssi -79 flags 0x0000
En Linux, la forma de hacerlo es con el comando hcitool. Sin embargo, debe estar conectado para obtener el rssi de un dispositivo. Si desea lograr esto desde la línea de comando, intente:
#hcitool rssi AA:BB:CC:DD:EE:FF
Si desea ver el código C real para lograr esto, eche un vistazo al archivo bluez tools/hcitool.c, en la función cmd_rssi.
static void cmd_rssi(int dev_id, int argc, char **argv)
{
...
}
Para Bluetooth de bajo consumo , solo conozco una forma de hacer esto, y es usando el comando #btmon. Ejecute btmon en segundo plano y busque dispositivos Bluetooth Low Energy:
#./btmon &
# hcitool lescan
Los resultados que se muestran en el monitor deben ser similares a esto:
> HCI Event: LE Meta Event (0x3e) plen 12
LE Advertising Report (0x02)
Num reports: 1
Event type: Scan response - SCAN_RSP (0x04)
Address type: Public (0x00)
Address: AA:BB:CC:DD:EE:FF (<Vendor Name>)
Data length: 0
***RSSI: -34 dBm (0xde)***
AA:BB:CC:DD:EE:FF <Device Name>
Tenga en cuenta que al usar btmon no tiene que conectarse para obtener el rssi de un dispositivo BLE.