2011-10-02 321 views
5

對於任何Linux的BlueZ/BT專家在這裏(無連接):Linux的藍牙信號強度l2ping

我正在尋找一種方式來「平」之稱BT設備(即BDADDR),如果他們是在範圍我想知道近似的信號強度。

我知道我可以先運行l2ping,然後建立與設備的連接,最後檢查RSSI或者鏈路質量,如果連接不工作的第一配對。

但是我正在尋找的是獲得的信號強度,無需連接裝置第一種方式。完美的是來自l2ping回覆數據包的信號強度測量,但我不知道這些信息是否可用並傳遞給堆棧。

回答

5

您可以查詢掃描過程中獲得的RSSI,無需連接設備。這是一個使用pybluez的例子。你也可以直接從C使用Linux上的Bluez來做同樣的事情。

inquiry-with-rssi.py

+0

感謝您的鏈接和想法,但這需要設備處於發現模式,他們不一定會。 我知道我要來ping /測量所有設備的BD_ADDR,這就是爲什麼我開始了l2ping那裏是沒有必要的目標是在發現模式。 – Tom

+1

在這種情況下,您可以使用hcitool(BlueZ堆棧的一部分)。 [hcitool](http://linuxcommand.org/man_pages/hcitool1.html)。如果你做「hcitool CC」創建無加密/身份驗證的連接,那麼你就可以監視使用「hcitool RSSI」 RSSI。唯一的問題是,如果您不驗證(配對),某些設備可能不會讓連接保持活動狀態。 – TJD

+1

是的,這工作。到目前爲止,我試過的兩種設備都允許(不成對)連接存在,以便我可以檢查rssi/lq。所以這是一個有效的解決方案,但以防萬一的一種方式的人都知道,無需連接而無需目標(S)是發現,我還是很樂意看到這一點。 – 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