如何在不配对的情况下读取BLE广告包

问题描述 投票:0回答:2

我需要从 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 进行蓝牙连接,如何阅读此广告包?

linux bluetooth-lowenergy
2个回答
4
投票

好吧,如果您想收听广告事件,那么您不应该连接,因为广告是广播的。你应该只是扫描。如果您在单独的终端中同时使用调试工具“hcitool lescan”和“sudo btmon”,那么您应该看到扫描响应数据。


0
投票

谢谢,只是要求对此答案进行补充。

使用 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 就可以了,我可以格式化和剪切任何东西。

谢谢!从秃鹰湾出发

© www.soinside.com 2019 - 2024. All rights reserved.