对于任何Linux BlueZ / BT专家:
我正在寻找一种方法来“ping”已知的BT设备(已知的BDADDR),如果它们在范围内,我想知道近似的信号强度。
我知道我可以先运行l2ping,然后建立与设备的连接,如果连接工作没有先配对,最后检查rssi或链路质量。
然而,我正在寻找的是一种在不连接设备的情况下获得信号强度的方法。完美的是来自l2ping应答包的信号强度测量,但我不知道该信息是否可用并且是否已经传递到堆栈。
答案 0 :(得分:5)
您可以在查询扫描期间获取RSSI,而无需连接到设备。这是使用pybluez的一个例子。你也可以在Linux上使用Bluez直接从C做同样的事情。
答案 1 :(得分:2)
我在iPhone 7和Raspberry Pi上使用此代码,效果很好。
#!/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
答案 2 :(得分:1)
非常老的问题,但是可能有人仍然对此感兴趣。
先前的回答是在查询扫描期间谈论RSSI。是正确的,但并非总是可行的,即无法发现的设备。
对于此类设备,您可以建立连接并最终请求连接RSSI。可以使用BlueZ命令rd = 3499211612
rd = 3499211612
rd = 3499211612
test1 = 0.297901 test2 = 0.297901 test2 = 0.297901
获得连接RSSI。
混合hcitool rssi <MAC:ADDRESS>
和l2ping
可以解决问题。
因此,我创建了这个存储库:[https://github.com/edoardesd/myBluez ]
输出:
hcitool rssi