Bluetooth RSSIスキャンを実行するには、カーネル/モジュールを変更する必要がありますか?

Bluetooth RSSIスキャンを実行するには、カーネル/モジュールを変更する必要がありますか?

近くのBluetoothデバイスとRSSI値を表示するスキャナを作成したいと思います。デバイスをペアリングしたり接続したくない。デバイスは完全に静かでなければなりません。私が知っている限り、Unix Bluetoothフレームワーク(bluezなど)には少なくとも1つの接続が必要です。カーネル/ブルートゥースモジュールによって決まりますか?

答え1

クエリスキャン結果とともにRSSI情報が返されるかどうかは、Bluetoothアダプタによって異なります。一部にはこの機能が含まれており、一部には含まれていません。 hciconfigを使用して「RSSI」文字列を検索して、ローカルBluetoothアダプタの機能を識別できます。

# hciconfig -a hci0 features | grep RSSI
    <park state> <RSSI> <channel quality> <SCO link> <HV2 packets> 
    <interlaced iscan> <interlaced pscan> <inquiry with RSSI> 

ハードウェアがRSSIクエリをサポートしている場合は、Bluetoothアダプタのカーネルドライバを変更する必要はありません。 RSSI情報を抽出するには、クエリスキャンの結果を解析するためにBluetoothソケットを開くコードを書く必要があります。 BTFfindにPythonの実装があります。https://github.com/joswr1ght/btfind/blob/master/btfind.pyBTPollerクラスから。

クエリモードスキャンは自動ではありません。 「探索者」はクエリ要求パケットを送信しているため、スニファーは検出できます。静かな選択肢は、Ubertooth Oneハードウェアを使用してパケットスニファモードで実行することです。ただし、2番目のBluetoothアダプタがないと、Bluetoothネットワークに参加できません。

関連情報