蓝牙 LE (Bluez) 'permissions write error' 收到通知请求

Bluetooth LE (Bluez) 'permissions write error' on notify request

我正在尝试连接 Wahoo Scale 1.3 以通过蓝牙通知读取一个人的实时体重。

可通过以下特征读取活体重:

handle: 0x0025, char properties: 0x10, char value handle: 0x0026, uuid: 00002b01-0000-1000-8000-00805f9b34fb.

这是在我的 iPhone 上使用 LightBlue 应用程序。

当我尝试通过 gatttool 接收通知时,出现以下错误:

命令行 gatttool:(还尝试了来自不同堆栈溢出主题的许多不同符号)

[XX:XX:XX:XX:XX:XX][LE]> char-write-req 0x0026 0100
Error: Characteristic Write Request failed: Attribute can't be written

btmon 蓝牙日志

< ACL Data TX: Handle 0 flags 0x00 dlen 9                                                                                                                                                                                    [hci0] 4.291021
          ATT: Write Request (0x12) len 4
            Handle: 0x0026
              Data: 0100
    > HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                                                                       [hci0] 4.327199
            Num handles: 1
            Handle: 0
            Count: 1
    > ACL Data RX: Handle 0 flags 0x02 dlen 9                                                                                                                                                                                    [hci0] 4.383580
          ATT: Error Response (0x01) len 4
            Write Request (0x12)
            Handle: 0x0026
            Error: Write Not Permitted (0x03)

我注意到的一件事是在UUID 1901(权重服务)下有3个属性:1:write/indicate,2:notify,3:notify。 Bluetooth characteristics on LightBlue App

我可以用 gatttool 写入第一个 属性,但不能写入第二个和第三个 属性。但是 LightBlue 是如何开始监听通知的呢?

我试过这个两个不同的系统: 带有 QN9021 BLE 控制器的 Beaglebone Black(Bluez 5.38,OpenWrt Linux 4.4) Beaglebone Black WiFi/Bluetooth(Bluez 5.23,Debian Linux 4.4)

我收到这个错误是因为 Bluez 堆栈和 Wahoo Scale 不兼容吗?我该如何解决这个问题?

谢谢!

0x0026 是值的句柄,而不是描述符的句柄。我猜描述符的句柄是 0x0027.