蓝牙LE(Bluez)'权限写错误'通知请求

时间:2017-04-16 10:14:31

标签: bluetooth bluetooth-lowenergy scale bluez

我正在尝试连接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 bluetooth log

< 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:写/指示,2:通知,3:通知。 Bluetooth characteristics on LightBlue App

我可以用gatttool写入第一个属性,但不能写入2和3属性。但LightBlue如何开始收听通知?

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

由于Bluez堆栈和Wahoo Scale的不兼容性,我是否会收到此错误?我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

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