GATTTool 无法 read/write 特性

GATTTool fails to read/write characteristics

我正在尝试使用 bluez 的 gatttool 在 BLE 定制板上写入一些演示特性。具体来说,我希望写入一个特征并读回值。这是我正在做的(其中 0x25 是特性的句柄):

bluepy$ gatttool -b EC:24:B8:23:1C:39 -I
[   ][EC:24:B8:23:1C:39][LE]> connect
[CON][EC:24:B8:23:1C:39][LE]> char-read-hnd 0x0025 
[CON][EC:24:B8:23:1C:39][LE]> Characteristic value/descriptor: 01
[CON][EC:24:B8:23:1C:39][LE]> char-write-cmd 0x25 0x02
[CON][EC:24:B8:23:1C:39][LE]> char-read-hnd 0x0025
[CON][EC:24:B8:23:1C:39][LE]> Characteristic value/descriptor: 00

有谁知道为什么读取到的特征值是00而不是02(char-write-cmd的第二个参数)?

如有任何帮助,我们将不胜感激。

虽然 BLE 有规则和标准,但底层设备可以简单地忽略这些并做自己的事情。因此,它可能将属性列为可读写并似乎接受新值,但随后只是删除了这些值。它不应该那样做,但没有理由不能。

但是,您应该确保它实际上发送了正确的数据,并且问题出在设备上......正如评论中提到的 gatttool 解释输入可能有点混乱(较新版本比旧的更好),所以尝试 022 而不是 0x02。您也可以尝试使用 btmon 来检查 gatttool 是否确实发送了您想要的值。

检查是否有其他软件未访问蓝牙。

我在尝试读取特征时遇到了类似的问题,node-red 也在访问同一设备。 gatttool 已连接到设备但无法进行读/写通信。我一停止 node-red,它就开始工作了。