【问题标题】:Bluetooth LE Advertisment Packet format doesn't match Bluetooth specifications蓝牙 LE 广告数据包格式与蓝牙规范不匹配
【发布时间】: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。所以我想知道我是否理解完全错误的东西。谁能解释这些是什么类型的包或为什么它们不符合规范?

BLE Advertisment Package

【问题讨论】:

    标签: bluetooth bluetooth-lowenergy


    【解决方案1】:

    您在 hcitool 中看到的是 HCI 编码的数据包,而不是原始的链路层数据包。

    0x04 是 HCI 事件数据包的 hci 数据包指示符。 其余的是 LE 广告报告事件。

    地址前两个位置的0x03表示ADV_NONCONN_IND,表示设备当前不接受连接。也许您的体重秤有一个按钮或您需要先按下才能使其连接的东西。

    【讨论】:

    • 谢谢。我现在看得更清楚了。不幸的是,秤(Insmart)没有按钮。也许我必须发送广告以使秤接受连接。这可能吗?我认为这与问题的主题有点不合。我应该为此提出一个新问题吗?
    • 尝试从制造商那里找到文档。否则我们只能推测。
    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2015-03-23
    • 2013-11-13
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多