内核:Linux 4.9.84 armv7l 搭载
蓝兹:5.65
对等:Android 12 和 IOS 16.6
申请:
btmgmt 关闭电源
btmgmt 可连接
btmgmt 可配对
btmgmt 开机
btmgmt le on
btmgmt io-cap 0x3(设置io能力为NoInputNoOutput)
btmgmt ssp 打开(使用旧模式)
流程:
我没有通过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 消息。
ps :这张图片来自 Core_v5.4 Vol3, Part H, pate 1618
怀疑:
我不太确定问题出在哪里,但是在阅读了确认计算公式后,我怀疑可能是由于我的手机和我的板之间的算法差异或地址问题,因为其他参数似乎是相同的.
我尝试通过蓝牙使用相同的 BlueZ 版本和相同的操作连接到我的虚拟机(ubuntu),并且成功了!因此,我怀疑问题出在我的板子的内核配置上