Search code examples
bluezgattbluetooth-gatt

Bluetoothctl GATT mysterious output byte


I use bluetoothctl (a Linux command line tool based on BlueZ) to read a BLE GATT heart rate sensor (I select the heart rate measurement attribute then use "notify on").

In the previous bluetoothctl version, here was an output sample:

[CHG] Attribute /org/bluez/hci0/dev_F7_AD_24_25_D4_05/service000c/char000d Value: 0x00 //flags
[CHG] Attribute /org/bluez/hci0/dev_F7_AD_24_25_D4_05/service000c/char000d Value: 0x40 //HR

In the current version, here is another output sample:

[CHG] Attribute /org/bluez/hci0/dev_A0_9E_1A_3B_6F_24/service0026/char0027 Value:
  00 4c                                            .L   

So, all bytes are now on the same line, OK, but there is now an extra byte at the end (".L") whose meaning I don't know (not in the GATT spec) but whose content varies. The bluetoothctl documentation is unfortunately rather sparse (https://docs.ubuntu.com/core/en/stacks/bluetooth/bluez/docs/reference/gatt-services) and is of no help to me.

Does anyone know if this byte has any meaning, and if so, how to interpret it?


Solution

  • It seems to first print the bytes in hex and then in ascii. It prints "." for the 0x00 byte and "L" for the 0x4c byte.