在正常工作模式下通过 BlueZ 进行蓝牙配对失败 - 确认值失败

问题描述 投票:0回答:1

内核:Linux 4.9.84 armv7l 搭载
蓝兹:5.65
对等:Android 12 和 IOS 16.6
申请

  • 使用btmgmt打开蓝牙设置

btmgmt 关闭电源
btmgmt 可连接
btmgmt 可配对
btmgmt 开机
btmgmt le on
btmgmt io-cap 0x3(设置io能力为NoInputNoOutput)
btmgmt ssp 打开(使用旧模式)

btmgmt settings

  • L2CAP 套接字的 BT_SECURITY 已设置为低,并且对一项特性应用了加密要求。

btgatt-server settings

流程:
我没有通过bluetoothctl手动创建具有IO功能的代理,但是通过上述操作,当我尝试访问具有加密要求的特征时,协议似乎自动创建了一个代理来处理配对问题。
我们可以通过 btmon 看到通信。

> ACL Data RX: Handle 24 flags 0x02 dlen 11                                                                                                                                                                                                              #240 [hci0] 74.105218
  SMP: Pairing Request (0x01) len 6
    IO capability: KeyboardDisplay (0x04)
    OOB data: Authentication data not present (0x00)
    Authentication requirement: Bonding, MITM, SC, No Keypresses, CT2 (0x2d)
    Max encryption key size: 16
    Initiator key distribution: EncKey IdKey Sign LinkKey (0x0f)
    Responder key distribution: EncKey IdKey Sign LinkKey (0x0f) 
< ACL Data TX: Handle 24 flags 0x00 dlen 11                                                                                                                                                                                                              #241 [hci0] 74.105300
      SMP: Pairing Response (0x02) len 6
        IO capability: NoInputNoOutput (0x03)
        OOB data: Authentication data not present (0x00)
        Authentication requirement: Bonding, MITM, Legacy, No Keypresses (0x05)
        Max encryption key size: 16
        Initiator key distribution: EncKey Sign (0x05)
        Responder key distribution: EncKey Sign (0x05)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                                                                                                   #242 [hci0] 74.224936
        Num handles: 1
        Handle: 24 Address: 67:D0:40:D9:1D:BF (Resolvable)
        Count: 1
> ACL Data RX: Handle 24 flags 0x02 dlen 21                                                                                                                                                                                                              #243 [hci0] 75.304575
      SMP: Pairing Confirm (0x03) len 16
        Confim value: bf331d0c1af509252c7ac50a03acc66f
< ACL Data TX: Handle 24 flags 0x00 dlen 21                                                                                                                                                                                                              #244 [hci0] 75.304672
      SMP: Pairing Confirm (0x03) len 16
        Confim value: ac378c91768d6efd8b5b07ad5cd78ba4
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                                                                                                   #245 [hci0] 75.425942
        Num handles: 1
        Handle: 24 Address: 67:D0:40:D9:1D:BF (Resolvable)
        Count: 1
> ACL Data RX: Handle 24 flags 0x02 dlen 21                                                                                                                                                                                                              #246 [hci0] 75.484575
      SMP: Pairing Random (0x04) len 16
        Random value: 830af66a612fb5dcb8bf8376a43b8dda
< ACL Data TX: Handle 24 flags 0x00 dlen 6                                                                                                                                                                                                               #247 [hci0] 75.486908
      SMP: Pairing Failed (0x05) len 1
        Reason: Confirm value failed (0x04)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                                                                                                   #248 [hci0] 75.545938
        Num handles: 1
        Handle: 24 Address: 67:D0:40:D9:1D:BF (Resolvable)
        Count: 1
> HCI Event: Disconnect Complete (0x05) plen 4                                                                                                                                                                                                           #249 [hci0] 79.624942
        Status: Success (0x00)
        Handle: 24 Address: 67:D0:40:D9:1D:BF (Resolvable)
        Reason: Remote User Terminated Connection (0x13)

btmon data

问题: 我遇到了外设(我的主板)确认在确认阶段失败的问题。详情请参见上图中的 btmon 消息。

Error Phase
ps :这张图片来自 Core_v5.4 Vol3, Part H, pate 1618

怀疑:
我不太确定问题出在哪里,但是在阅读了确认计算公式后,我怀疑可能是由于我的手机和我的板之间的算法差异或地址问题,因为其他参数似乎是相同的.

Confirm value calculation
C1 formula
Function e

我尝试通过蓝牙使用相同的 BlueZ 版本和相同的操作连接到我的虚拟机(ubuntu),并且成功了!因此,我怀疑问题出在我的板子的内核配置上

linux-kernel bluetooth-lowenergy bluez bluetooth-gatt
1个回答
0
投票

问题最终定位在Linux内核配置
Bluez推荐的配置如下图所示。 enter image description here

(官网下载的A1蓝牙Linux学习指南-安装与配置.pdf第4页截图)

但是这个配置会导致确认值计算失败,所以需要

额外配置

* User-space interface for random number generator algorithms
    
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.