首先,我可以配对并连接到设备,它可以正常工作。 但是我无法理解配对过程的一些特殊之处。
如果此操作对之间没有暂停的位置,则信任,连接蓝牙日志如下所示:
[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 */
但这似乎对我不起作用。
答案 0 :(得分:3)
不确定我能理解你的问题。配对通常是一次性设置步骤,在该步骤中交换密钥并建立设备为受信任的设备。我希望一旦安装完成,设备就会断开连接。
后续连接不需要先进行配对步骤。您将进行连接和服务发现,因为两台设备已经配对并且受信任。
Bluetooth SIG网站上的一系列博客中讨论了配对过程:https://www.bluetooth.com/blog/bluetooth-pairing-part-1-pairing-feature-exchange/