Bluez 5 未知连接标识符
Bluez 5 Unknown Connection Identifier
我有一个 Raspberry Pi 3 运行ning 最新的 Raspbian,我有
从 5.23 升级 bluez。到 5.43。我正在尝试连接到 BLE
以 2 秒为间隔发布广告的设备。我写了一些代码
在 gatttool 上并尝试连接到这些设备。我运行进入
LE 连接请求在 2 秒后被取消。因此,我收到状态为 0x02(未知连接标识符)
的 LE 连接完成消息
根据我的研究,我 运行 大约 15 个月前在档案中看到了这个,
https://www.spinics.net/lists/linux-bluetooth/msg65434.html
然而在跟帖之后,我没有看到是否找到解决方案。
我对我的代码、gatttool 实用程序以及使用进行了 运行 测试
蓝牙控制。我在列出的 btmon 中看到相同类型的 activity
下面:
HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7 [hci0] 21:45:51.917070
Type: Passive (0x00)
Interval: 60.000 msec (0x0060)
Window: 30.000 msec (0x0030)
Own address type: Public (0x00)
Filter policy: Ignore not in white list (0x01)
> HCI Event: Command Complete (0x0e) plen 4 [hci0] 21:45:51.917819
LE Set Scan Parameters (0x08|0x000b) ncmd 1
Status: Success (0x00)
HCI Event: Command Complete (0x0e) plen 4 [hci0] 21:45:51.918357
LE Set Scan Enable (0x08|0x000c) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 27 [hci0] 21:45:52.597503
LE Advertising Report (0x02)
Num reports: 1
Event type: Connectable undirected - ADV_IND (0x00)
Address type: Random (0x01)
Address: D3:67:2D:D1:46:46 (Static)
Data length: 15
Flags: 0x06
LE General Discoverable Mode
BR/EDR Not Supported
Company: FedEx Services (321)
Data: 070a111080d28004
RSSI: -63 dBm (0xc1)
HCI Event: Command Complete (0x0e) plen 4 [hci0] 21:45:52.599626
LE Set Scan Enable (0x08|0x000c) ncmd 1
Status: Success (0x00)
HCI Event: Command Status (0x0f) plen 4 [hci0] 21:45:52.600508
LE Create Connection (0x08|0x000d) ncmd 1
Status: Success (0x00)
HCI Event: Command Complete (0x0e) plen 4 [hci0] 21:45:54.684146
LE Create Connection Cancel (0x08|0x000e) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 19 [hci0] 21:45:54.684361
LE Connection Complete (0x01)
Status: Unknown Connection Identifier (0x02)
Handle: 64
Role: Master (0x00)
Peer address type: Random (0x01)
Peer address: D3:67:2D:D1:46:46 (Static)
Connection interval: 67.50 msec (0x0036)
Connection latency: 0.00 msec (0x0000)
Supervision timeout: 420 msec (0x002a)
Master clock accuracy: 0x00
@ Connect Failed: D3:67:2D:D1:46:46 (2) status 0x02
看起来代码中某处有 2 秒超时,可能是内核端。
需要注意的一点是,如果我使用hcitool 连接,我可以连接
大多数时候。我知道这不是 L2CAP 层,但我可以
看到我可以连接了。
此外,如果我将 BLE 设备的广告间隔更改为 1 秒。我可以很好地连接。 (2秒广告间隔的原因是省电)
有没有人最近 运行 处理过这个问题,如果有,是否有任何解决方案?
谢谢
有同样的问题。正如您所指出的,将广告间隔从 10 秒减少到 0.5 秒确实可以解决问题。我也需要更长的间隔来节省电池。我知道使用 Raspbian ( 2016-03-18-raspbian-jessie kernel 4.1.19-v7+ #858 SMP, bluez 5.23 ) 的旧版本工作正常,但是,我还没有得到一个更新的构建工作。
更新
在发现这个 post: https://www.spinics.net/lists/linux-bluetooth/msg67800.html 之后,我在 include/net/bluetooth/hci.h 中更改了以下值:
#define HCI_LE_CONN_TIMEOUT msecs_to_jiffies(22000) /* 22 seconds WAS 2 seconds */
#define HCI_LE_AUTOCONN_TIMEOUT msecs_to_jiffies(22000) /* 22 seconds WAS 2 seconds */
重新编译,现在一切正常,我的设备在最新版本的 Raspbian 内核 4.4.50 和 bluez 5.45 上以 10.24 秒的广播间隔运行。希望这有帮助。
我有一个 Raspberry Pi 3 运行ning 最新的 Raspbian,我有 从 5.23 升级 bluez。到 5.43。我正在尝试连接到 BLE 以 2 秒为间隔发布广告的设备。我写了一些代码 在 gatttool 上并尝试连接到这些设备。我运行进入 LE 连接请求在 2 秒后被取消。因此,我收到状态为 0x02(未知连接标识符)
的 LE 连接完成消息根据我的研究,我 运行 大约 15 个月前在档案中看到了这个,
https://www.spinics.net/lists/linux-bluetooth/msg65434.html
然而在跟帖之后,我没有看到是否找到解决方案。
我对我的代码、gatttool 实用程序以及使用进行了 运行 测试 蓝牙控制。我在列出的 btmon 中看到相同类型的 activity 下面:
HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7 [hci0] 21:45:51.917070 Type: Passive (0x00) Interval: 60.000 msec (0x0060) Window: 30.000 msec (0x0030) Own address type: Public (0x00) Filter policy: Ignore not in white list (0x01) > HCI Event: Command Complete (0x0e) plen 4 [hci0] 21:45:51.917819 LE Set Scan Parameters (0x08|0x000b) ncmd 1 Status: Success (0x00) HCI Event: Command Complete (0x0e) plen 4 [hci0] 21:45:51.918357 LE Set Scan Enable (0x08|0x000c) ncmd 1 Status: Success (0x00) > HCI Event: LE Meta Event (0x3e) plen 27 [hci0] 21:45:52.597503 LE Advertising Report (0x02) Num reports: 1 Event type: Connectable undirected - ADV_IND (0x00) Address type: Random (0x01) Address: D3:67:2D:D1:46:46 (Static) Data length: 15 Flags: 0x06 LE General Discoverable Mode BR/EDR Not Supported Company: FedEx Services (321) Data: 070a111080d28004 RSSI: -63 dBm (0xc1) HCI Event: Command Complete (0x0e) plen 4 [hci0] 21:45:52.599626 LE Set Scan Enable (0x08|0x000c) ncmd 1 Status: Success (0x00) HCI Event: Command Status (0x0f) plen 4 [hci0] 21:45:52.600508 LE Create Connection (0x08|0x000d) ncmd 1 Status: Success (0x00) HCI Event: Command Complete (0x0e) plen 4 [hci0] 21:45:54.684146 LE Create Connection Cancel (0x08|0x000e) ncmd 1 Status: Success (0x00) > HCI Event: LE Meta Event (0x3e) plen 19 [hci0] 21:45:54.684361 LE Connection Complete (0x01) Status: Unknown Connection Identifier (0x02) Handle: 64 Role: Master (0x00) Peer address type: Random (0x01) Peer address: D3:67:2D:D1:46:46 (Static) Connection interval: 67.50 msec (0x0036) Connection latency: 0.00 msec (0x0000) Supervision timeout: 420 msec (0x002a) Master clock accuracy: 0x00 @ Connect Failed: D3:67:2D:D1:46:46 (2) status 0x02
看起来代码中某处有 2 秒超时,可能是内核端。
需要注意的一点是,如果我使用hcitool 连接,我可以连接 大多数时候。我知道这不是 L2CAP 层,但我可以 看到我可以连接了。
此外,如果我将 BLE 设备的广告间隔更改为 1 秒。我可以很好地连接。 (2秒广告间隔的原因是省电)
有没有人最近 运行 处理过这个问题,如果有,是否有任何解决方案?
谢谢
有同样的问题。正如您所指出的,将广告间隔从 10 秒减少到 0.5 秒确实可以解决问题。我也需要更长的间隔来节省电池。我知道使用 Raspbian ( 2016-03-18-raspbian-jessie kernel 4.1.19-v7+ #858 SMP, bluez 5.23 ) 的旧版本工作正常,但是,我还没有得到一个更新的构建工作。
更新 在发现这个 post: https://www.spinics.net/lists/linux-bluetooth/msg67800.html 之后,我在 include/net/bluetooth/hci.h 中更改了以下值:
#define HCI_LE_CONN_TIMEOUT msecs_to_jiffies(22000) /* 22 seconds WAS 2 seconds */
#define HCI_LE_AUTOCONN_TIMEOUT msecs_to_jiffies(22000) /* 22 seconds WAS 2 seconds */
重新编译,现在一切正常,我的设备在最新版本的 Raspbian 内核 4.4.50 和 bluez 5.45 上以 10.24 秒的广播间隔运行。希望这有帮助。