如何通过bluetoothctl向BLE设备发送指定字节数组?
解决bluetoothctl写入BLE特征值时的"Invalid value at index 0"错误
问题原因
bluetoothctl的write命令不支持你使用的数组格式(带方括号和逗号的写法),它要求输入连续的十六进制字符串,每个字节用两位十六进制数表示,不需要任何分隔符。
解决步骤
将十进制数组转换为十六进制字符串
把你要发送的数组[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 25, 255]逐个转换为两位十六进制:- 1 → 01
- 0 → 00(重复9次)
- 16 → 10
- 25 → 19
- 255 → ff
拼接后得到十六进制字符串:010000000000000000001019ff
执行正确的写入命令
在已选中目标特征的命令行环境下,执行以下命令之一:- 普通写入:
write 010000000000000000001019ff - 无响应写入(对应特征的
write-without-response标识,传输效率更高):write-without-response 010000000000000000001019ff
- 普通写入:
验证执行流程
确保操作流程正确:
- 连接设备成功后进入
menu gatt - 用
select-attribute f29b152d-cb19-40f3-be5c-7241ecb82fd2选中目标特征 - 直接执行上述写入命令,无需添加
data=前缀或引号
内容的提问来源于stack exchange,提问作者test1
相关产品推荐
相关产品推荐

