128 bit characteristic


I wrote the following for the NRF52 BLE

# Create a GATT Service: 03B80E5A-EDE8-4B33-A751-6CE34EC4C700
s = ble.Service(bytes([0x00,0xC7,0xC4,0x4E,0xE3,0x6C,0x51,0xA7,0x33,0x4B,0xE8,0xED,0x5A,0x0E,0xB8,0x03]))

# Create a GATT Characteristic: 7772E5DB-3868-4112-A1A9-F2669D106BF3
c = ble.Characteristic(bytes([0xF3,0x6B,0x10,0x9D,0x66,0xF2,0xA9,0xA1,0x12,0x41,0x68,0x38,0xDB,0xE5,0x72,0x77]), ble.WRITE | ble.READ | ble.NOTIFY,20,“BLE-MIDI”,ble.BYTES)

but the characteristic class does not take 128 bits uuids.


Hi jarosmartin,
as reported in the Zerynth documentation

about Service class (link):
For customuuids it is possible to specify all 128 bits passing a bytes or bytearray object to base_uuid. base_uuid represents the 128 bit uuid as a sequece of 16 bytes in little endian order. 13th and 14th bytes are ignored and substituted by uuid.

about Characteristic class (link):

  • uuid: a 16 bit uuid, standard uuids can be found here

so, for now, characteristic with 16 bit uuid only are allowed..


That’s easy to see. I guess the real question was when are you going to change it ?



Do you think this will be added? It feels wrong to use the 16 bit uuid’s when they don’t cover what you want to do with your application. I think it’s technically not even allowed to use them outside there spec. Our company would really like to use our own base-uuid for the characteristics as well.


I would also really like to see this added to Zerynth.
IMHO it’s essential to be able to use custom UUID’s.