This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Need better performance getting 128-bit UUIDs for services and characteristics

I’m using the nRF5280, accessed using pc-ble-driver (API version 6), with SoftDevice S140

 

I want to efficiently get the list of services from a device, including the 128-bit UUIDs of services. I also want to efficiently get the list of characteristics from the device, including the 128-bit UUIDs of characteristics.  

 

I see how to get these lists in the documentation and support cases such as the following: https://devzone.nordicsemi.com/f/nordic-q-a/17946/how-to-find-128-bit-uuid-services-with-sd_ble_gattc_primary_services_discover

However, for services/characteristics that have 128-bit UUIDs, these calls give me BLE_UUID_TYPE_UNKNOWN, and I’m supposed to do an extra call to sd_ble_gattc_read to get the value of the 128-bit UUID. This is inefficient, and slows down the service discovery.  

 

The BLE trace shows that the 128-bit UUID is returned in the same packets that give the list of services/characteristics.   Another chip/SDK (Bluegiga from Silicon Labs) gives me these 128-bit UUIDs without an extra call and an extra BLE round-trip to the remote device. 

 

I’ll attach a trace “June25-1019AM-HFAGettingServices” from an Ellisys BLE analyzer. When viewing that trace, set the time to show UTC.

 

At around 14:18:08, my pc-ble-driver code gets the list of services by calling sd_ble_gattc_primary_services_discover, here is one line of that trace

Time                    | Item                                                                               | Transmitter                           | Receiver                           | Payload                                                                | Status

2:18:09 PM.938 070 500 | ATT Read By Group Type Response Packet (UUID=89D3502B-0F36-433A-8EF4-C502AD55F8DC) | Slave: 7D:AF:0D:F7:6A:92 (Resolvable) | Master: FE:A9:29:44:18:66 (Static) | 20 bytes (46 00 51 00 DC F8 55 AD 02 C5 F4 8E 3A 43 36 0F 2B 50 D3 89) | OK   

 

This packet gives service range from handle 70 (0x0046) to handle 81  (0x0051) with the UUID of handle 70 (0x0046) being 89D3502B-0F36-433A-8EF4-C502AD55F8DC

 

Because sd_ble_gattc_primary_services_discover doesn’t give me the 128-bit UUID from that packet, I need to use sd_ble_gattc_read, which makes another request to the remote device, which gives me that same UUID again

Time                   | Transmitter                           | Receiver                           | Item                       | Status | Payload                                                                   | Time delta | Application

2:18:11 PM.187 671 500 | Slave: 7D:AF:0D:F7:6A:92 (Resolvable) | Master: FE:A9:29:44:18:66 (Static) | Start/Complete LE-U Packet | OK     | 21 bytes (11 00 04 00 0B DC F8 55 AD 02 C5 F4 8E 3A 43 36 0F 2B 50 D3 89) |            | ATT       

 

These extra calls to sd_ble_gattc_read need to be done for any service/characteristic that has a 128-bit UUID.   I want to speed up the time it takes to get services/characteristics, and this extra call to sd_ble_gattc_read is another place where pc-ble-driver is slower than my existing chip/SDK.

 

What can be done to make this faster, and eliminate these extra requests to the remote device?June25-1019AM-HFAGettingServices.btt

Parents
  • For vendor specific 128 bit UUID handling it is the way it is today. This is something that is being evaluated for future softdevices, since there are room for improvement, however if you are using the pc-ble-driver I would not expect this change to take place soon unfortunately, since the pc-ble-driver is not updated as frequently.

    Best regards,
    Kenneth

Reply
  • For vendor specific 128 bit UUID handling it is the way it is today. This is something that is being evaluated for future softdevices, since there are room for improvement, however if you are using the pc-ble-driver I would not expect this change to take place soon unfortunately, since the pc-ble-driver is not updated as frequently.

    Best regards,
    Kenneth

Children
No Data
Related