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

使用gatttool读取小米手环8心率数据失败及无通知问题求助

问题:无法通过BlueZ gatttool获取小米手环8的心率通知数据

尝试使用BlueZ的gatttool读取小米手环8的心率数据,目标特征UUID为0x2a37(心率测量特征),属性为NOTIFY,但操作后既收不到通知,读取特征时还报错:

Error: Characteristic value/descriptor read failed: Attribute can't be read

已执行的操作:

  1. 发现特征及描述符:
[AA:BB:CC:DD:EE:FF][LE]> char-desc 0x0025 0xffff
handle: 0x0026, uuid: 00002a37-0000-1000-8000-00805f9b34fb  (Heart Rate Measurement characteristic)
handle: 0x0027, uuid: 00002902-0000-1000-8000-00805f9b34fb  (Client Characteristic Configuration Descriptor)
  1. 尝试启用心率通知:
[AA:BB:CC:DD:EE:FF][LE]> char-write-req 0x0026 0100
Characteristic value was written successfully
  1. 尝试读取特征值:
[AA:BB:CC:DD:EE:FF][LE]> char-read-hnd 0x0026
Error: Characteristic value/descriptor read failed: Attribute can't be read

已确认手环佩戴正确且处于心率测量状态,但始终收不到通知。


解决方法

核心问题分析

  1. 开启通知的handle错误:你把0100写到了心率特征的handle(0x0026)上,但NOTIFY的开关是写在**Client Characteristic Configuration Descriptor(CCCD)**的handle(0x0027)上,这是最关键的错误。
  2. NOTIFY特征无法主动读取:属性为NOTIFY的特征是设备主动推送数据,不能用char-read-hnd主动读取,这就是报错的直接原因。

正确操作步骤

  1. 进入gatttool交互模式并连接手环:
gatttool -b AA:BB:CC:DD:EE:FF -I
connect
  1. 写入CCCD开启通知:
    目标handle是CCCD的0x0027,写入0100表示启用通知:
[AA:BB:CC:DD:EE:FF][LE]> char-write-req 0x0027 0100
  1. 保持交互模式等待通知:
    执行完写入命令后,不要退出gatttool,保持当前窗口打开,手环的心率数据会主动推送到终端中,格式类似:
Notification handle = 0x0026 value: 00 4b

其中4b是十六进制心率值(对应十进制75)。

额外注意事项

  • 确保手环处于持续心率监测模式:有些手环默认是触发式测量(比如仅打开APP时才测),需要在手环设置里切换为持续监测。
  • 检查蓝牙连接稳定性:如果连接断开,需要重新执行连接和开启通知的步骤。
  • 若char-write-req无效,尝试用char-write-cmd:部分设备需要无响应的写入命令:
char-write-cmd 0x0027 0100

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:46:05