GNU/Linux >> Linux の 問題 >  >> Linux

Bluetooth LE 信号強度 Linux

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
…

相対信号強度インジケーター rssi -80 です 、しかし、リストには、このデバイスや他のデバイスに関するより多くの情報が含まれています.

最も強力な RSSI を持つ一意の MAC アドレスのみを示す Bluetooth 近隣をスパイするには、次のコマンドを実行します。

$ 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

Linux では、これを行う方法は hcitool コマンドを使用することです。ただし、デバイスの rssi を取得するには接続する必要があります。コマンドラインからこれを実現したい場合は、以下を試してください:

#hcitool rssi AA:BB:CC:DD:EE:FF

これを実現するための実際の C コードを見たい場合は、cmd_rssi 関数の下にある bluez tools/hcitool.c ファイルを見てください。

static void cmd_rssi(int dev_id, int argc, char **argv)
{
    ...
}

Bluetooth Low Energy の場合 、これを行う方法を 1 つだけ知っています。それは #btmon コマンドを使用することです。バックグラウンドで btmon を実行し、Bluetooth Low Energy デバイスをスキャンします:

#./btmon &
# hcitool lescan

モニターに表示される結果は次のようになります:

> 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>

btmon を使用する場合、BLE デバイスの rssi を取得するために接続する必要はありません。


Linux
  1. UNIX/Linux シグナル処理:SIGEV_THREAD

  2. Linux での複数スレッドによるシグナル処理

  3. Linuxで特殊文字を入力するには?

  1. UNIX / Linux:プロセスにシグナルを送信する 3 つの方法

  2. Linux シグナルの基礎 – パート I

  3. Linux / UNIX OS サービス :Bluetooth

  1. Linuxで絵文字を入力する方法

  2. Linux でシグナルを使用した IPC

  3. bluetooth/bluetooth.h は Linux のどこにありますか?