Characteristic Discovery with 128bit UUID

Hi,

We are evaluating the possibility to connect our nRF52840 to another BLE device but we are facing issues with UUID Nordic handling strategy.

Quickly: 

  • We have a central nRF and two pheripheral. The first is Nordic the second is system in production and we cannot change the SW.
  • We created a custom service on the Nordic pheripheral and it works properly (characteristic discovered sendind data etc.)
  • Later we tried to discovery the service on the second pheripheral.
    Second pheripheral has:
    • SERVICE UUID acbd3540-0211-4126-8c1f-45bcb7722f9e
    • CHAR_1 UUID acbd3540-0211-4126-8c1f-45bcb7722fA0
    • CHAR_2 UUID acbd3540-0211-4126-8c1f-45bcb7722fA1
    • CHAR_3 UUID acbd3540-0211-4126-8c1f-45bcb7722fA2

As you can see the other vendor is adopting the same Nordic strategy for UUID but on 00-01 octet instead of 12-13 octet as Nordic.

We added SERVICE UUID and CHAR_1 UUID to UUID List in the SD (sd_ble_uuid_vs_add(..) ) and we provide 0x3540 to ble_db_discovery_evt_register

It connects to the pheripheal but the discovery fail.
Here the log:

ble_db_disc: Starting discovery of service with UUID 0x3540 on connection handle 0x1

nrf_ble_gq: Adding item to the request queue

nrf_ble_gq: GATTC Primary Services Discovery Request

nrf_ble_gq: SD GATT procedure (2) succeeded on connection handle: 1

nrf_ble_gq: Processing the request queue...

ble_db_disc: Service UUID 0xB03E not found

Did someone solved a similar problem or someone from Nordic can support?

Alessandro

Parents
  • Hi

    You can check out the ble_bas_on_db_disc_evt() in the nRF5 SDK that handles sevice and characteristic discovery of the BAS service, you can make a similar function for your custom UUID as well. It's important to note that while registering the 128-bit UUID using sd_ble_uuid_vs_add(), and choose what 16-bit UUID you want to use for service and characteristic discovery.

    If you need a better understanding before trying to implement this on the central side, please check out the BLE central tutorial which explains scanning, connecting and service discovery from a central perspective. It is somewhat dated, but it has been updated for SDK v15, so it is still relevant.

    Best regards,

    Simon

Reply
  • Hi

    You can check out the ble_bas_on_db_disc_evt() in the nRF5 SDK that handles sevice and characteristic discovery of the BAS service, you can make a similar function for your custom UUID as well. It's important to note that while registering the 128-bit UUID using sd_ble_uuid_vs_add(), and choose what 16-bit UUID you want to use for service and characteristic discovery.

    If you need a better understanding before trying to implement this on the central side, please check out the BLE central tutorial which explains scanning, connecting and service discovery from a central perspective. It is somewhat dated, but it has been updated for SDK v15, so it is still relevant.

    Best regards,

    Simon

Children
No Data
Related