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

如何使用bluetoothctl以BLE安全模式1等级3连接设备并解决认证错误

解决BLE设备写入特征时的"Insufficient authentication (5)"错误(配置Mode 1 Level 3安全等级)

我帮你梳理下问题和解决方案:你已经成功配对并连接了BLE设备,但写入特定特征时遇到Insufficient authentication (5)的ATT错误,核心原因是当前连接没有使用Mode 1 Level 3(即带认证的加密连接),而且设备未被标记为可信,导致BlueZ没有启用高安全等级的连接。

下面是具体的操作步骤,用bluetoothctl就能搞定:


步骤1:断开当前连接(如果设备已连接)

先确保设备处于断开状态,避免后续设置冲突:

bluetoothctl
disconnect D2:A7:4C:76:F3:E0

步骤2:标记设备为可信

BlueZ默认不会给未标记为可信的设备启用高等级加密,所以先把设备设为可信:

trust D2:A7:4C:76:F3:E0
# 验证是否设置成功
info D2:A7:4C:76:F3:E0

执行info后,你应该能看到Trusted: yes的状态。

步骤3:配置安全模式为Mode 1 Level 3

进入安全菜单,强制启用带认证的加密连接(对应Mode 1 Level 3):

menu security
# 设置安全模式为1(蓝牙Security Mode 1,基于链路层的安全)
set-security-mode 1
# 设置安全等级为3(Authenticated Encryption,既认证又加密)
set-security-level 3
# 或者直接用简化命令启用认证加密
set-encryption authenticated
# 退出安全菜单
back

步骤4:重新连接设备

现在重新连接设备,此时BlueZ会自动建立加密连接:

connect D2:A7:4C:76:F3:E0

你可以用hcidump观察,此时会出现LE Start Encryption相关的HCI命令,说明加密连接已经建立。

步骤5:再次尝试写入特征

连接成功后,重新进入GATT菜单执行写入操作:

menu gatt
select-attribute /org/bluez/hci0/dev_D2_A7_4C_76_F3_E0/service000c/char0013
write 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF

补充说明

  • 关于你提到的写入时只发送1字节且循环的问题,这是BlueZ 5.50版本在连接未加密时的小bug,当安全等级问题解决后,这个现象会自动消失,树莓派5.43版本能发送完整的8字节请求也验证了这一点,只是当时因为安全不足被设备拒绝。
  • Mode 1 Level 3是蓝牙中要求最高的链路层安全等级,既需要设备配对认证,又需要链路加密,正好匹配你设备的特征访问要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:48:20