1

Currently I am doing a project which is requiring some sensor reading from Huawei Watch GT-DEE with gatttool, Python and Raspberry Pi 4. Here, the server and the client are Huawei Watch and Raspberry Pi respectively. However, I got this article which pretty much close to my target. I was looking for more detail and got this article and this article. Anyway, I am getting following BLE primary services:

[aa:bb:cc:dd:ee:ff][LE]> primary
attr handle: 0x0001, end grp handle: 0x0009 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x000a, end grp handle: 0x000d uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0010, end grp handle: 0x0020 uuid: 0000180a-0000-1000-8000-00805f9b34fb
attr handle: 0x002a, end grp handle: 0x0034 uuid: 0000fe86-0000-1000-8000-00805f9b34fb
attr handle: 0x0100, end grp handle: 0x0112 uuid: 00001812-0000-1000-8000-00805f9b34fb
attr handle: 0x0300, end grp handle: 0xffff uuid: 00003802-0000-1000-8000-00805f9b34fb

and getting following characteristics:

[aa:bb:cc:dd:ee:ff][LE]> characteristics
handle: 0x0002, char properties: 0x02, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0004, char properties: 0x02, char value handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x0006, char properties: 0x02, char value handle: 0x0007, uuid: 00002aa6-0000-1000-8000-00805f9b34fb
handle: 0x0008, char properties: 0x02, char value handle: 0x0009, uuid: 00002ac9-0000-1000-8000-00805f9b34fb
handle: 0x000b, char properties: 0x20, char value handle: 0x000c, uuid: 00002a05-0000-1000-8000-00805f9b34fb
handle: 0x0011, char properties: 0x02, char value handle: 0x0012, uuid: 00002a29-0000-1000-8000-00805f9b34fb
handle: 0x0013, char properties: 0x02, char value handle: 0x0014, uuid: 00002a23-0000-1000-8000-00805f9b34fb
handle: 0x0015, char properties: 0x02, char value handle: 0x0016, uuid: 00002a24-0000-1000-8000-00805f9b34fb
handle: 0x0017, char properties: 0x02, char value handle: 0x0018, uuid: 00002a25-0000-1000-8000-00805f9b34fb
handle: 0x0019, char properties: 0x02, char value handle: 0x001a, uuid: 00002a26-0000-1000-8000-00805f9b34fb
handle: 0x001b, char properties: 0x02, char value handle: 0x001c, uuid: 00002a27-0000-1000-8000-00805f9b34fb
handle: 0x001d, char properties: 0x02, char value handle: 0x001e, uuid: 00002a28-0000-1000-8000-00805f9b34fb
handle: 0x001f, char properties: 0x02, char value handle: 0x0020, uuid: 00002a2a-0000-1000-8000-00805f9b34fb
handle: 0x002b, char properties: 0x0c, char value handle: 0x002c, uuid: 0000fe01-0000-1000-8000-00805f9b34fb
handle: 0x002d, char properties: 0x10, char value handle: 0x002e, uuid: 0000fe02-0000-1000-8000-00805f9b34fb
handle: 0x0030, char properties: 0x0c, char value handle: 0x0031, uuid: 0000fe03-0000-1000-8000-00805f9b34fb
handle: 0x0032, char properties: 0x10, char value handle: 0x0033, uuid: 0000fe04-0000-1000-8000-00805f9b34fb
handle: 0x0101, char properties: 0x02, char value handle: 0x0102, uuid: 00002a4a-0000-1000-8000-00805f9b34fb
handle: 0x0103, char properties: 0x02, char value handle: 0x0104, uuid: 00002a4b-0000-1000-8000-00805f9b34fb
handle: 0x0106, char properties: 0x04, char value handle: 0x0107, uuid: 00002a4c-0000-1000-8000-00805f9b34fb
handle: 0x0108, char properties: 0x12, char value handle: 0x0109, uuid: 00002a22-0000-1000-8000-00805f9b34fb
handle: 0x010b, char properties: 0x0e, char value handle: 0x010c, uuid: 00002a32-0000-1000-8000-00805f9b34fb
handle: 0x010d, char properties: 0x12, char value handle: 0x010e, uuid: 00002a4d-0000-1000-8000-00805f9b34fb
handle: 0x0111, char properties: 0x06, char value handle: 0x0112, uuid: 00002a4e-0000-1000-8000-00805f9b34fb
handle: 0x0301, char properties: 0x1e, char value handle: 0x0302, uuid: 00004a02-0000-1000-8000-00805f9b34fb

According to this article, 2a00 service (uuid: 00002a00-0000-1000-8000-00805f9b34fb, char value handle by 0x0003) refers to the device name (1800 in primary) which I am getting correctly as follows:

[aa:bb:cc:dd:ee:ff][LE]> char-read-hnd 0x0003
Characteristic value/descriptor: 48 55 41 57 45 49 20 57 41 54 43 48 20 47 54 2d 44 45 45

However, I was looking for BMP value which is defined by 2a37 service which is missing in the characteristics (or 180d in primary) output section. According the specifications (please have a look at Sensors section), it has Optical heart rate sensor. Anyway, I can see the heart rate at the watch screen as well as in the Health app in the mobile phone.

Question:

Why gatttool is not showing the service 2a37 in characteristics or 180d in primary section?

testuser
  • 793
  • 3
  • 13
  • 35
  • 3
    Maybe the watch just does not use the official characteristic for the BMP value. You could try using the nRF Connect app on your phone to find out which characteristic actually contains the wanted value, but there is no way of telling whether that would be successful. You would need to use a BLE sniffer to find out which data is actually read by your phones Health app. The protocolll could be something Huawei specific – Michael Kotzjan Nov 03 '20 at 10:22

0 Answers0