当前位置: 首页 > 知识库问答 >
问题:

Bluez 5未知连接标识符

颛孙庆
2023-03-14

我有一个运行最新Raspbian的Raspberry Pi 3,我已经从5.23升级了bluez。至5.43。我正在尝试连接到以2秒间隔播发的BLE设备。我基于gatttool编写了一些代码,并尝试连接到这些设备。2秒后,我遇到LE connect请求被取消。因此,我得到一个状态为0x02(未知连接标识符)的LE连接完成消息

根据我的研究,我在大约15个月前的档案中发现了这个,

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

然而,在遵循线程之后,我没有看到是否找到了解决方案。

我已经使用我的代码、gatttools实用程序以及使用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秒广告间隔的原因是省电)

最近是否有人遇到过这个问题,如果有,是否有任何解决方案?

谢谢

共有1个答案

卫劲
2023-03-14

有同样的问题。正如您所指出的,将广告间隔从10秒减少到0.5秒确实解决了这个问题。我还需要更长的间隔来节省电池。我知道使用较旧版本的Raspbian(2016-03-18-raspbian-jessie内核4.1.19-v7#858 SMP, Bluez 5.23)可以正常工作,但是,我还没有让更新的版本工作。

更新发现这篇文章后:https://www.spinics.net/lists/linux-bluetooth/msg67800.html我改变了以下值,包括/网/蓝牙/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 */
 类似资料:
  • 问题内容: 我下面这个线程,这一个建立自己的KDE没有须藤权限。由于没有在工作站上安装Git和CMake。我只是将它们都安装在 / home / <用户>下,并将 / home / <用户> / bin和 / home / <用户> / lib添加 到PATH和LD_LIBRARY_PATH中。由于KDE构建仅支持CMake,因此不进行配置。因此,我必须通过CMake设置前缀,如下所示:。在这一点

  • 本文向大家介绍Mysql连接join查询原理知识点,包括了Mysql连接join查询原理知识点的使用技巧和注意事项,需要的朋友参考一下 Mysql连接(join)查询 1、基本概念 将两个表的每一行,以“两两横向对接”的方式,所得到的所有行的结果。 假设: 表A有n1行,m1列; 表B有n2行,m2列; 则表A和表B“对接”之后,就会有: n1*n2行; m1+m2列。 2、则他们对接(连接)之后

  • 当我把URL放入浏览器时,它的连接很好。当我使用Java时: 它抛出 这个问题展示了如何忽略整个证书的事情,但这感觉不对。我只是想使用与浏览器相同的证书。 我已经尝试添加属性,该属性将异常更改为,我从这个问题中得出的意思是它找不到称为的信任存储。不过,我不知道还能说明些什么。

  • 我正在用Node、Express和MongoDB构建一个REST api服务。我安装了MongoDB,它在我的PC上运行正常,本地主机:27017。我可以添加集合并阅读它们。在我的app.js文件中,我有这样的设置 我总是得到一个错误-mongoerror-cannot connect UNKNOWN我搜索了几个小时,没有找到任何解决方案。我该如何修复它,使它可以连接到MongoDB(工作正常).

  • 我在开发一个应用程序。人们从他们的手机上传视频,从其他地方。 使用PHP中的CMS(它是应用程序开发的语言),我需要生成一个独特的视频与这些部分上传。 为什么不加入2? 上传的视频,将是非常不同的格式,所以我不能定义编解码器。

  • 问题内容: 我尝试运行以下代码。顺便说一句,我是python和sklearn的新手。 其中y是0和1的np.ndarray 我收到以下信息: 文件“ C:\ Anaconda3 \ lib \ site-packages \ sklearn \ linear_model \ logistic.py”,行> 1174,适合check_classification_targets(y) 文件“ C:\