You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BlueZ 5.47 BLE设备初始连接后后续连接报PIN/Key缺失(0x06)错误

解决BlueZ 5.47与BLE脉搏血氧仪重复连接时的PIN/Key缺失(0x06)错误

问题回顾

你遇到的这个问题非常典型:首次使用BlueZ 5.47连接BLE脉搏血氧仪时,配对、通信都完全正常,但后续任何连接尝试都会触发PIN or Key Missing (0x06)错误,只有通过bluetoothctl移除设备后才能重新连接。结合你提供的btmon日志,我们可以精准定位问题核心。

日志关键节点分析

先看你提供的连接失败日志(格式化后):

< HCI Command: LE Create Connection (0x08|0x000d) plen 25 #3 [hci0] 91.335394
  Scan interval: 60.000 msec (0x0060)
  Scan window: 30.000 msec (0x0030)
  Filter policy: White list is not used (0x00)
  Peer address type: Public (0x00)
  Peer address: 00:1C:05:FF:9C:A5 (OUI 00-1C-05)
  Own address type: Public (0x00)
  Min connection interval: 50.00 msec (0x0028)
  Max connection interval: 70.00 msec (0x0038)
  Connection latency: 0 (0x0000)
  Supervision timeout: 420 msec (0x002a)
  Min connection length: 0.000 msec (0x0000)
  Max connection length: 0.000 msec (0x0000)
> HCI Event: Command Status (0x0f) plen 4 #4 [hci0] 91.347480
  LE Create Connection (0x08|0x000d) ncmd 1
  Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 19 #5 [hci0] 92.874610
  LE Connection Complete (0x01)
  Status: Success (0x00)
  Handle: 1025
  Role: Master (0x00)
  Peer address type: Public (0x00)
  Peer address: 00:1C:05:FF:9C:A5 (OUI 00-1C-05)
  Connection interval: 70.00 msec (0x0038)
  Connection latency: 0 (0x0000)
  Supervision timeout: 420 msec (0x002a)
  Master clock accuracy: 0x01
@ Device Connected: 00:1C:05:FF:9C:A5 (1) flags 0x0000
< ACL Data TX: Handle 1025 flags 0x00 dlen 8 #6 [hci0] 92.928535
  ATT: Write Request (0x12) len 3
  Handle: 0x0019
  Data: 01
> ACL Data RX: Handle 1025 flags 0x02 dlen 6 #7 [hci0] 92.977319
  SMP: Security Request (0x0b) len 1
  Authentication requirement: No bonding, No MITM, Legacy, No Keypresses (0x00)
< HCI Command: LE Start Encryption (0x08|0x0019) plen 28 #8 [hci0] 92.977466
  Handle: 1025
  Random number: 0x8f15c8e27f50c2fc
  Encrypted diversifier: 0x6ee1
  Long term key: b3c9837306766fd8d4024ae4549c6337
> HCI Event: Command Status (0x0f) plen 4 #9 [hci0] 92.988087
  LE Start Encryption (0x08|0x0019) ncmd 1
  Status: Success (0x00)
> ACL Data RX: Handle 1025 flags 0x02 dlen 5 #10 [hci0] 93.117417
  ATT: Write Response (0x13) len 0
> HCI Event: Number of Completed Packets (0x13) plen 5 #11 [hci0] 93.145136
  Num handles: 1
  Handle: 1025
  Count: 1
> HCI Event: Encryption Change (0x08) plen 4 #12 [hci0] 93.327778
  Status: PIN or Key Missing (0x06)
  Handle: 1025
  Encryption: Disabled (0x00)
< HCI Command: Disconnect (0x01|0x0006) plen 3 #13 [hci0] 93.327909
  Handle: 1025
  Reason: Authentication Failure (0x05)
> HCI Event: Command Status (0x0f) plen 4 #14 [hci0] 93.333590
  Disconnect (0x01|0x0006) ncmd 1
  Status: Success (0x00)
> HCI Event: Disconnect Complete (0x05) plen 4 #15 [hci0] 93.397883
  Status: Success (0x00)
  Handle: 1025
  Reason: Authentication Failure (0x05)

从日志里能看到核心矛盾:

  1. 设备发起的安全请求明确要求No bonding(无绑定),但BlueZ还是尝试使用之前存储的**Long Term Key(LTK)**启动加密
  2. 设备端没有对应的LTK,直接返回PIN or Key Missing (0x06),导致连接断开

根本原因推测

这个问题的本质是BlueZ的绑定密钥管理和设备的安全策略不匹配:

  • 你的脉搏血氧仪不支持持久绑定,每次连接都需要无加密/临时安全上下文
  • 但BlueZ在首次连接后,默认会存储绑定密钥(即使设备要求No bonding),后续连接时自动复用该密钥,触发设备的认证失败

可行解决方案

按照优先级从易到难尝试:

1. 连接时强制使用低安全级别

用gatttool连接时,指定--sec-level low参数,匹配设备的无绑定要求:

gatttool -b 00:1C:05:FF:9C:A5 -I --sec-level low --connect

这个参数会告诉BlueZ不要使用已存储的密钥,直接建立无加密的连接,完全符合设备的安全请求。

2. 修改BlueZ配置禁用自动绑定

编辑BlueZ的主配置文件/etc/bluetooth/main.conf,添加/修改以下配置:

# 禁用自动连接
AutoConnect=false
# 设置默认安全级别为低
Security=low
# 禁用自动存储绑定密钥
AutoEnable=false

然后重启蓝牙服务生效:

sudo systemctl restart bluetooth

3. 彻底清理BlueZ的绑定存储

如果本地已经存储了错误的密钥,彻底清除后重新配对:

# 停止蓝牙服务
sudo systemctl stop bluetooth
# 替换下面的[HCI0_MAC]为你的蓝牙适配器MAC(用hciconfig hci0查看)
sudo rm -rf /var/lib/bluetooth/[HCI0_MAC]
# 重启蓝牙服务
sudo systemctl start bluetooth

之后重新连接设备,BlueZ会重新协商安全上下文,不会复用旧密钥。

4. 检查设备的安全设置

部分BLE设备在重启后会清除绑定信息,或者有手动清除配对的选项。尝试重启血氧仪后再连接,看是否能正常复用密钥;如果设备有设置界面,确认是否开启了“禁止持久绑定”之类的选项。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:00:20