BLE:适配器使用 HCI ACL 协议而不是 LE LL 发送数据

Posted

技术标签:

【中文标题】BLE:适配器使用 HCI ACL 协议而不是 LE LL 发送数据【英文标题】:BLE: adapter sending data using HCI ACL protocol instead of LE LL 【发布时间】:2018-06-02 16:54:25 【问题描述】:

我创建了一个作为中心的 android 应用程序,并且我找到了一个 gatt-server (github.com/Jumperr-labs/python-gatt-server) 的实现,它是 bluez 的一部分。当我问使用来自服务器的特征值的读取请求,生成的数据包使用 HCI ACL 协议发送,据我所知这是不正确的。我已使用 btmgmt 将我的适配器设置为仅 LE 模式,但我看到相同的结果。我我错过了什么?

这是从命令“btmgmt info”获取的当前适配器设置 “当前设置:供电的可连接 le 广告安全连接”

这是 Wireshark 显示的内容 Wireshark

【问题讨论】:

【参考方案1】:

我不知道你在哪里看到这些 ACL 数据包,但 BLE 数据包确实是作为 ACL 数据包通过 HCI 发送的。

如果您看到连接使用蓝牙经典,您可以从 Android 端在 connectGatt 调用中将传输参数设置为 TRANSPORT_LE 以强制使用 BLE。

【讨论】:

我已经在 Android 中设置了这个,否则我无法连接到服务器,但是在网络上的其他一些照片中,我看到wireshark 在发送包中说使用了 LE LL 协议。如果您可以查看我的个人资料,这来自我提出的另一个问题 您是否注意到任何特定问题,或者您是否对了解其工作原理有疑问?你能把你的日志截图发过来吗? 我在原帖中添加了wireshark显示的内容。我试图了解这是否正常。主要问题在这篇文章中(***.com/questions/50255842/…)但我认为这个问题是一个适配器有人提到的限制,直到我在 Wireshark 中看到这个,我认为这是真正的问题。【参考方案2】:

我在某处发现,wireshark 和 hcidump 在 HCI 级别进行分析,但无法查看较低层。只要在 HCI BLE 数据包作为 ACL 数据发送就可以了!要查看较低层,您必须购买 BLE 嗅探器 USB 加密狗。

【讨论】:

以上是关于BLE:适配器使用 HCI ACL 协议而不是 LE LL 发送数据的主要内容,如果未能解决你的问题,请参考以下文章

BLE控制器之HCI接口层

13.BLE---HCI

Android BLE 外围设备与状态码 BLE_HCI_INSTANT_PASSED(0x28) 断开连接

蓝牙简介

BLE蓝牙断开连接原因对照表

BLE蓝牙断开连接原因对照表