配合bluez 5未知的连接标识符

问题描述:

我有一个树莓派3运行最新的Raspbian,我也从5.23 升级的bluez。到5.43。我试图连接到以2秒为间隔通告的BLE 设备。我在gatttool上编写了一些基于 的代码并试图连接到这些设备。我跑进 LE连接请求在2秒后被取消。因此,我下面后得到一个LE连接完成消息以0x02的状态(未知连接标识符)配合bluez 5未知的连接标识符

从我的研究,我在档案里过这个跑了大约15个月前,

https://www.spinics.net/lists/linux-bluetooth/msg65434.html

然而线程,我没有看到是否找到了解决方案。

我已经跑测试我的代码,该gatttool实用性和以及使用 bluetoothctl。我看到下面列出 在btmon同类型的活动:

 

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内核4.1.19-v7 +#858 SMP,bluez 5.23)可以正常工作,但是,我还没有得到一个更新的版本。

UPDATE 后发现这篇文章:https://www.spinics.net/lists/linux-bluetooth/msg67800.html我在include /网/蓝牙/ 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和蓝色5.45的10.24秒广播时间间隔。希望这可以帮助。

+1

你应该张贴一封电子邮件,邮件列表,其中正确的家伙挂:http://www.bluez.org/development/lists/ – Emil

+0

谢谢!会做! –

+0

这听起来像是我的解决方案。只是想仔细检查一下,这是一个内核参数,并且内核需要重新编译? – vagrant4ever