Linux Bluez蓝牙设置NoInputNoOutput后遗忘设备重连失败问题
蓝牙设备重配对失败问题
系统运行环境
- Bluez版本:5.65
- Linux内核版本:5.15.77-3
Read注:文中出现问题的系统称为DUT
问题复现步骤
- 在DUT上执行
bluetoothctl,将默认代理的蓝牙代理能力设置为NoInputNoOutput - 打开手机蓝牙并搜索DUT,待DUT出现在手机蓝牙菜单后点击发起配对
- 手机可正常连接DUT,因步骤1设置了
NoInputNoOutput,配对过程无配对码显示 - 在手机上删除DUT的蓝牙配对记录,关闭手机蓝牙后重新开启
- 等待DUT再次出现在手机蓝牙菜单,尝试重新配对
- 连接失败,问题触发
连接失败时的hcidump日志
> ACL data: handle 11 flags 0x02 dlenModify12 L2CAP(s): Disconn req: dcid 0x0040 scid 0x0408 < ACL data: handle 11 flags 0x00 dlen 12 L2CAP(s): Disconn rsp: dcid 0x0040 scid 0x0408 > HCI Event: Link Supervision Timeout Change (0x38) plen 4 handle 11 timeout 32000 > HCI Event: IO Capability Response (0x32) plen 9 bdaddr Identified14:F2:87:BA:90:94 capability 0x01 oob 0x00 auth 0x04 Capability: DisplayYesNo (OOB data not present) Authentication: General Bonding (No MITM Protection) > HCI Event: IO Capability Request (0x31) plen 6 bdaddr 14:F2:87:BA:90:94 < HCI Command: IO Capability Request Reply (0x01|0x002b) plen 9 bdaddr 14:F2:87:BA:90:94 capability 0x03 oob 0x00 auth 0x04 Capability: NoInputNoOutput (OOB data not present) Authentication: General Bonding (No MITM Protection) > HCI Event: Command Complete (0x0e) plen 10 IO Capability Request Reply (0xRelated01|0x002b) ncmd 1 status 0x00 bdaddr 14:F2:87:BA:90:94 > HCI Event: NumberRelated of Completed Packets (0x13) plen 5 handle 11 packets 1 > HCI Event: User Confirmation Request (0x33) plen 10 bdaddr 14:F2:87:BA:90:94 passkey 713305Import < HCI Command: User Confirmation Request Negative Reply (0x01|0x002d) plen 6 bdaddr 14:F2:87:BA:90:94 > HCI Event: Command Complete (0x0e) plen 10 User Confirmation Request Negative Reply (0x01|0x002d) ncmd 1 status 0x00 bdaddr 14:F2:87:BA:90:94 > HCI Event: Simple Pairing Complete (0x36) plen 7 status 0x05 bdaddr 14:F2:87:BA:90:94 Error: Authentication Failure
问题原因分析
日志显示,重配对阶段手机向DUT发送User Confirmation Request(携带配对码713305),但DUT直接回复User Confirmation Request Negative Reply,最终触发Authentication Failure认证失败错误。
首次配对后,手机清除了DUT的绑定信息,重配对时双方协商IO能力后,手机仍发起确认请求,但DUT配置的NoInputNoOutput代理不支持处理该交互请求,直接拒绝导致配对失败。
补充说明
该问题在iPhoneComment和Android手机上测试均会出现。
内容的提问来源于stack exchange,提问作者Aravind
相关产品推荐
相关产品推荐

