我需要从 BLE 传感器读取广告数据包,这些传感器每 5 秒在广告数据包中广播一次温度。制造商告诉我,数据包将是 GAP 扫描响应事件,并且我不必连接到设备来读取此数据包。
运行时会显示传感器的 MAC 地址
sudo hcitool lescan
但是,当我运行
sudo gatttool -I -t random -b 06:09:16:41:87:DB
时,会发生这种情况:
[06:09:16:41:87:DB][LE]> connect
Attempting to connect to 06:09:16:41:87:DB
Error: connect error: Connection refused (111)
此外,当我运行
sudo gatttool -b 06:09:16:41:87:DB -I
并连接时,我得到:
Error: connect error: Transport endpoint is not connected (107)
如果我无法通过 gatttool 进行蓝牙连接,如何阅读此广告包?
好吧,如果您想收听广告事件,那么您不应该连接,因为广告是广播的。你应该只是扫描。如果您在单独的终端中同时使用调试工具“hcitool lescan”和“sudo btmon”,那么您应该看到扫描响应数据。
谢谢,只是要求对此答案进行补充。
使用 hcitool lescan --duplicates &
btmon | grep "ED 02 00 03 60 DD"
我永远得到了很好的记录,每行都有我的反向 Mac 地址
> 04 3E 24 02 01 03 01 ED 02 00 03 60 DD 18 02 01 06 03 03 AA
> 04 3E 24 02 01 03 01 ED 02 00 03 60 DD 18 02 01 06 03 03 AA
> 04 3E 24 02 01 03 01 ED 02 00 03 60 DD 18 02 01 06 03 03 AA
实际广告是32字节,我可以在iPad上看到配置应用程序上的温度、X Y Z加速度计。
我没有找到让 btmon 转储完整记录的方法。在深入了解源代码之前我在这里问?
Raw 就可以了,我可以格式化和剪切任何东西。
谢谢!从秃鹰湾出发