【发布时间】:2026-02-19 21:10:01
【问题描述】:
我有一个运行最新 Raspbian 的 Raspberry Pi 3,并且我有 从 5.23 升级 bluez。到 5.43。我正在尝试连接到 BLE 以 2 秒间隔发布广告的设备。我写了一些基于代码 在 gatttool 上并尝试连接到这些设备。我碰到 LE 连接请求在 2 秒后被取消。因此,我收到状态为 0x02(未知连接标识符)的 LE 连接完成消息
根据我的研究,我在大约 15 个月前的档案中遇到了这个问题,
https://www.spinics.net/lists/linux-bluetooth/msg65434.html
但是在关注线程之后,我没有看到是否找到了解决方案。
我已经使用我的代码、gatttool 实用程序以及使用 蓝牙控制。我在 btmon 中看到列出的相同类型的活动 下面:
HCI 命令:LE 设置扫描参数 (0x08|0x000b) plen 7 [hci0] 21:45:51.917070 类型:被动(0x00) 间隔:60.000 毫秒 (0x0060) 窗口:30.000 毫秒 (0x0030) 自有地址类型:Public (0x00) 过滤策略:忽略不在白名单中 (0x01) > HCI 事件:命令完成 (0x0e) plen 4 [hci0] 21:45:51.917819 LE 设置扫描参数 (0x08|0x000b) ncmd 1 状态:成功 (0x00) HCI 事件:命令完成 (0x0e) plen 4 [hci0] 21:45:51.918357 LE 设置扫描启用 (0x08|0x000c) ncmd 1 状态:成功 (0x00) > HCI 事件:LE 元事件 (0x3e) plen 27 [hci0] 21:45:52.597503 LE 广告报告 (0x02) 报告数量:1 事件类型:可连接无向 - ADV_IND (0x00) 地址类型:随机(0x01) 地址:D3:67:2D:D1:46:46(静态) 数据长度:15 标志:0x06 LE 通用可发现模式 不支持 BR/EDR 公司:联邦快递服务 (321) 资料:070a111080d28004 RSSI:-63 dBm (0xc1) HCI 事件:命令完成 (0x0e) plen 4 [hci0] 21:45:52.599626 LE 设置扫描启用 (0x08|0x000c) ncmd 1 状态:成功 (0x00) HCI 事件:命令状态 (0x0f) plen 4 [hci0] 21:45:52.600508 LE 创建连接 (0x08|0x000d) ncmd 1 状态:成功 (0x00) HCI 事件:命令完成 (0x0e) plen 4 [hci0] 21:45:54.684146 LE 创建连接取消 (0x08|0x000e) ncmd 1 状态:成功 (0x00) > HCI 事件:LE 元事件 (0x3e) plen 19 [hci0] 21:45:54.684361 LE 连接完成 (0x01) 状态:未知连接标识符 (0x02) 手柄:64 角色:大师(0x00) 对等地址类型:随机 (0x01) 对端地址:D3:67:2D:D1:46:46(静态) 连接间隔:67.50 毫秒 (0x0036) 连接延迟:0.00 毫秒 (0x0000) 监督超时:420 毫秒 (0x002a) 主时钟精度:0x00 @ 连接失败:D3:67:2D:D1:46:46 (2) 状态 0x02代码中的某处似乎有 2 秒超时,可能是内核端。
需要注意的是,如果我使用 hcitool 连接,我可以连接 大多数时候。我知道这不是 L2CAP 层,但我可以 看看我可以连接。
另外,如果我将 BLE 设备的广播间隔更改为 1 秒。我可以正常连接。 (2秒广告间隔的原因是省电)
最近有没有人遇到过这个问题,如果有,有解决办法吗?
谢谢
【问题讨论】: