【发布时间】:2020-06-29 08:00:35
【问题描述】:
我正在尝试使用我的树莓派连接到蓝牙体重秤。因为我无法连接到它,无论是使用 python-bluepy 还是 gatttool,我都尝试获取更多信息并使用 sudo hcitool lescan --duplicates & 和 sudo hcidump --raw 读取广告包。我从 bluetooth.com 下载了 4.0 到 5.1 版本的蓝牙核心规范。但是我从 hcidump 获得的数据与蓝牙规格不完全匹配。我尝试了其他设备,iPhone 7、Sony WH-1000MX3 和 Oculus Quest。它们都发送 LE 数据包,但都采用(在我看来)非标准数据包格式。 这是我从秤收到的一个数据包(mac a0:91:53:e2:58:db): 04 3E 2B 02 01 03 00 DB 58 E2 53 91 A0 1F 02 01 04 03 03 B0 FF 0F FF AC A0 DB 58 E2 53 91 A0 A2 AD A0 A3 06 B8 07 09 41
我不明白的第一件事是序言 04。我所有的设备都使用它。但是规范说广告包应该有一个 0xAA 的前导码。甚至数据包也应该有 0xAA 或 0x55。但绝不是 0x04。接下来是访问地址。对于广告应该是 0x8E89BED6 但我的设备中没有一个使用它。我也不理解 PDU 标头。长度为 0。有效负载几乎与规范匹配,但在硬件地址 (1F) 后面有一个不应该存在的字节。正如我所说,我所有的设备都使用这种格式(“错误的”前导码、访问地址、PDU 标头、有效负载中的附加字节)。有些设备只有一个字节的 CRC。所以我想知道我是否理解完全错误的东西。谁能解释这些是什么类型的包或为什么它们不符合规范?
【问题讨论】:
标签: bluetooth bluetooth-lowenergy