【问题标题】:Bluetooth (Linux/BlueZ) pair timeout or something?蓝牙(Linux/BlueZ)配对超时还是什么?
【发布时间】:2021-01-07 11:42:48
【问题描述】:

起初我可以配对并连接到设备,它按预期工作。 但我无法理解配对过程的一些特殊性。

如果此操作对之间没有暂停,trust,connect bluetoothctl 日志如下所示:

[bluetooth]#pair FC:58:FA:XX:XX:XX
Attempting to pair with FC:58:FA:XX:XX:XX
[bluetooth]# trust  FC:58:FA:XX:XX:XX
[bluetooth]#                               [CHG] Device FC:58:FA:XX:XX:XX Trusted: yes
[bluetooth]#                               Changing FC:58:FA:XX:XX:XX trust succeeded
[bluetooth]#connect  FC:58:FA:XX:XX:XX
Attempting to connect to FC:58:FA:XX:XX:XX
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX Connected: yes
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 00001108-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000111e-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX ServicesResolved: yes
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX Paired: yes
[ERGO BTS-520]#                            Connection successful
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 00001108-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000111e-0000-1000-8000-00805f9b34fb

使用 Ubuntu 蓝牙连接管理器可以观察到这种行为。

但在我自己的 BT 管理器实现中,配对和连接操作之间存在一些延迟(超过 2-3 秒),在这种情况下,bluetoothctl 的日志完全不同:

[bluetooth]# pair FC:58:FA:XX:XX:XX
Attempting to pair with FC:58:FA:XX:XX:XX
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX Connected: yes
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 00001108-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000111e-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX ServicesResolved: yes
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX Paired: yes
[ERGO BTS-520]#                            Pairing successful
[ERGO BTS-520]# trust FC:58:FA:XX:XX:XX
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX Trusted: yes
[ERGO BTS-520]#                            Changing FC:58:FA:XX:XX:XX trust succeeded
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX ServicesResolved: no
[bluetooth]#                         [CHG] Device FC:58:FA:XX:XX:XX Connected: no
[bluetooth]# connect FC:58:FA:XX:XX:XX
Attempting to connect to FC:58:FA:XX:XX:XX
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX Connected: yes
[ERGO BTS-520]#                            Connection successful
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 00001108-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX UUIDs: 0000111e-0000-1000-8000-00805f9b34fb
[ERGO BTS-520]#                            [CHG] Device FC:58:FA:XX:XX:XX ServicesResolved: yes

如果在配对后 2-3 秒内没有连接到设备,则设备状态变为“断开连接”。

由于依赖于设备属性更改的顺序(ServicesResolved、Connected 等),我的 BT 管理器的逻辑被破坏了。

BlueZ 或 linux HCI 子系统是否以某种方式描述了这种行为?

将不胜感激任何帮助,谢谢。

PS: 我知道这个内核头参数,甚至试图通过增加值来玩弄它。

HCI_DISCONN_TIMEOUT     msecs_to_jiffies(2000)  /* 2 seconds */
HCI_CMD_TIMEOUT     msecs_to_jiffies(2000)  /* 2 seconds */
HCI_LE_AUTOCONN_TIMEOUT msecs_to_jiffies(2000)  /* 2 seconds */

但这似乎不适合我。

【问题讨论】:

    标签: bluetooth bluez hci


    【解决方案1】:

    不确定我是否理解您的问题。配对通常是一次性配置步骤,其中交换密钥并将设备建立为受信任的。一旦设置完成,我希望设备会断开连接。

    后续连接不需要首先进行配对步骤。您需要进行连接和服务发现,因为这两个设备已经配对并受信任。

    Bluetooth SIG 网站上一系列博客中讨论的配对过程:https://www.bluetooth.com/blog/bluetooth-pairing-part-1-pairing-feature-exchange/

    【讨论】:

    • 上面的链接是针对 LE 配对的,但我相信这个问题是关于经典蓝牙配对的。
    • @YoussifSaeed,与安全简单配对等 BR/EDR 安全功能相比,LE 传统配对在安全方面存在一些差异。从用户的角度来看,关联模型类似于 BR/EDR 安全简单配对,名称相同,但提供的保护质量不同。虽然这种细节水平与似乎混淆配对和连接的 OP 无关
    猜你喜欢
    • 2013-01-27
    • 2016-05-18
    • 2017-03-20
    • 2018-08-02
    • 1970-01-01
    • 2015-02-02
    • 2013-12-22
    • 1970-01-01
    相关资源
    最近更新 更多