2011-10-02 45 views
5

ここにすべてのLinuxのbluez/BTの専門家のために:LinuxのBluetoothは(接続せずに?)信号強度とl2ping

私は「ピング」知らBTデバイス(知らBDADDR)への道を探していますし、彼らがしている場合範囲私はおおよその信号強度を知りたいです。

私は最初にl2pingを実行してから、デバイスとの接続を確立し、接続が最初にペア設定されていないとrssiまたはリンクの品質を確認できることがわかりました。

私が探しているのは、まずデバイスに接続せずに信号強度を得る方法です。 Perfectはl2ping応答パケットからの信号強度測定値ですが、その情報がまったく利用可能で、スタックに沿って渡されたかどうかはわかりません。

答えて

5

デバイスに接続せずに、照会スキャン中にRSSIを取得できます。 pybluezを使った例です。また、Linux上でBluezを使用してCから直接同じことを行うこともできます。

inquiry-with-rssi.py

+0

リンクとアイデアのおかげで、これはデバイスが必ずしもそうではない発見可能なモードにある必要があります。 私はping/measureを行うすべてのデバイスのbd_addrを知っています。そのため、ターゲットが検出可能モードになる必要がないl2pingから始めました。 – Tom

+1

その場合、hcitool(BlueZスタックの一部)を使用することができます。 [hcitool](http://linuxcommand.org/man_pages/hcitool1.html)。暗号化/認証なしで接続を作成する 'hcitool cc'を実行すると、 'hcitool rssi'を使用してrssiを監視できます。唯一の問題は、認証されていない(ペアになっていても)接続をアクティブにしないデバイスがあることです。 – TJD

+1

ええ、それは動作します。これまでに試した2つのデバイスのうち、rssi/lqをチェックできるように、(ペアのない)接続が存在するようにしました。これは実用的な解決策ですが、誰もが接続せずにターゲットを発見できないまま知っている場合には、私はまだそれを見るのが大好きです。 – Tom

2

私は私のiPhone 7とラズベリーパイでこのコードを使用することだし、それは素晴らしい作品。

#!/bin/bash 

sudo hcitool cc AA:BB:CC:DD:EE:FF 2> /dev/null 

while true 
do 
    bt=$(hcitool rssi AA:BB:CC:DD:EE:FF 2> /dev/null) 
    if [ "$bt" == "" ]; then 
     sudo hcitool cc AA:BB:CC:DD:EE:FF 2> /dev/null 
     bt=$(hcitool rssi AA:BB:CC:DD:EE:FF 2> /dev/null) 
    fi 

    echo "$bt" 
done 
関連する問題