<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/108832/gatt-service-discovery-failure-on-sig-base-uuid</link><description>Support, 
 I&amp;#39;ve encountered a challenge while integrating my product with device from a third-party. Unfortunately, they&amp;#39;ve utilized the SIG base UUID for their unregistered vendor services, and with their product already on the market for a few years</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 15 Jul 2024 23:22:07 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/108832/gatt-service-discovery-failure-on-sig-base-uuid" /><item><title>RE: GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/thread/494000?ContentTypeID=1</link><pubDate>Mon, 15 Jul 2024 23:22:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5a4b95b7-9ec4-4153-8996-43b6e55d60b5</guid><dc:creator>matt_wilson</dc:creator><description>&lt;p&gt;Vidar,&lt;/p&gt;
&lt;p&gt;I have made some progress in resolving this issue, but I encountered another problem and have opened a new ticket for it.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/113066/gatt-service-discovery---hard-fault"&gt;https://devzone.nordicsemi.com/f/nordic-q-a/113066/gatt-service-discovery---hard-fault&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/thread/472130?ContentTypeID=1</link><pubDate>Mon, 04 Mar 2024 17:59:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9960c0a5-eab6-45ea-bed6-53de64d28ec1</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Matt,&lt;/p&gt;
&lt;p&gt;I cannot confirm with 100% certainty that this is why service discovery is failing, as I do not have a GATT server that would provide the same &amp;#39;Read by Group Type&amp;#39; response as your &amp;#39;Device B&amp;#39;. However, I believe&amp;nbsp;it&amp;#39;s&amp;nbsp;the most likely explanation. In any case,&amp;nbsp;&lt;span style="font-family:inherit;"&gt;I&amp;#39;m hoping you can work around the problem by using the other discovery method that the&amp;nbsp;&lt;span&gt;&amp;#39;ble_app_interactive&amp;#39; example uses.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:inherit;"&gt;&lt;span&gt;-Vidar&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/thread/472096?ContentTypeID=1</link><pubDate>Mon, 04 Mar 2024 16:34:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9d1fdf19-c032-43ce-b5a7-5517bb492caf</guid><dc:creator>matt_wilson</dc:creator><description>&lt;p&gt;Vidar,&lt;/p&gt;
&lt;p&gt;Thank you for confirming the problem and offering a suggestion. Although I&amp;#39;m not familiar with the suggested approach, I did some research in the SDK documentation and found the blue_app_interactive example. Do you think this would be a good starting point for implementing the recommended solution?&lt;/p&gt;
&lt;p&gt;nRF5_SDK_17.1.0_ddde560/examples/ble_central_and_peripheral/experimental/ble_app_interactive&lt;/p&gt;
&lt;p&gt;- Matt&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/thread/472041?ContentTypeID=1</link><pubDate>Mon, 04 Mar 2024 13:55:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c4c20a06-bde5-4261-addd-75bb4488c1ff</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Thanks for providing the HCI log. This confirms that Device B is responding with the 128-bit UUID in the type response, rather than the 16-bit UUID like device A, which might be confusing the SoftDevice.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Could you try to discover &amp;#39;ALL&amp;#39; services using the SD API directly, as shown in the message sequence chart (&lt;a title="GATTC Primary Service Discovery" href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s140.api.v7.3.0/group___b_l_e___g_a_t_t_c___p_r_i_m___s_r_v_c___d_i_s_c___m_s_c.html?cp=5_7_4_1_2_2_3_10"&gt;GATTC Primary Service Discovery&lt;/a&gt;)? This might be a possible workaround that will allow you to find the attribute handles despite the non-standard use of UUIDs by Device B.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1709560504296v1.png" alt=" " /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/thread/471880?ContentTypeID=1</link><pubDate>Fri, 01 Mar 2024 21:32:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:06288384-b6b2-445f-920b-a6058b7d809a</guid><dc:creator>matt_wilson</dc:creator><description>&lt;p&gt;As I examined the logs, I observed variances highlighted in the screenshots. Notably, there&amp;#39;s a differences&amp;nbsp;in the response to a GATT primary service declaration request. I speculate whether the issue revolves around the 128-bit UUID response. Given that this UUID is categorized as a SIG base UUID, could it be plausible that the Softdevice is encountering parsing difficulties?&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screen-Shot-2024_2D00_03_2D00_01-at-3.22.54-PM.png" alt=" " /&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screen-Shot-2024_2D00_03_2D00_01-at-3.22.28-PM.png" alt=" " /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/thread/471874?ContentTypeID=1</link><pubDate>Fri, 01 Mar 2024 20:38:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ca56c489-1eda-4307-a32b-cea576d35f72</guid><dc:creator>matt_wilson</dc:creator><description>&lt;p&gt;I&amp;#39;ve got a Bluetooth packet logger installed on my phone. I&amp;#39;ve used it to gather these logs for each device. If this information isn&amp;#39;t sufficient, I can switch to my sniffer setup and attempt to capture more data.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/device_5F00_a_5F00_packet_5F00_log.pklg"&gt;devzone.nordicsemi.com/.../device_5F00_a_5F00_packet_5F00_log.pklg&lt;/a&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/device_5F00_a_5F00_packet_5F00_log_5F00_raw.txt"&gt;devzone.nordicsemi.com/.../device_5F00_a_5F00_packet_5F00_log_5F00_raw.txt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/device_5F00_b_5F00_packet_5F00_log.pklg"&gt;devzone.nordicsemi.com/.../device_5F00_b_5F00_packet_5F00_log.pklg&lt;/a&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/device_5F00_b_5F00_packet_5F00_log_5F00_raw.txt"&gt;devzone.nordicsemi.com/.../device_5F00_b_5F00_packet_5F00_log_5F00_raw.txt&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/thread/471861?ContentTypeID=1</link><pubDate>Fri, 01 Mar 2024 15:31:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8b8bcd96-e957-4b70-9d9a-52b543af0036</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Matt,&lt;/p&gt;
&lt;p&gt;Are you able to capture a sniffer trace (&lt;a href="https://www.nordicsemi.com/Products/Development-tools/nrf-sniffer-for-bluetooth-le"&gt;nRF Sniffer for Bluetooth LE&lt;/a&gt;) of the service discovery procedure for both device A and device B? I&amp;#39;m hoping this might provide us with some additional clues.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/thread/471858?ContentTypeID=1</link><pubDate>Fri, 01 Mar 2024 15:24:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:266ed2f7-17ec-4327-a552-82e14f78803b</guid><dc:creator>matt_wilson</dc:creator><description>&lt;p&gt;Vidar,&lt;/p&gt;
&lt;p&gt;Thanks for investigating this. I recall having a GATT Browser app installed on my Mac. I utilized it with the two devices, and you can also observe where it highlights the disparities between them. Device-A reports the short UUID while Device-B reports the full UUID. I&amp;#39;m able to discover and connect to Device-A with the short UUID when utilizing the SIG base UUID.&lt;/p&gt;
&lt;p&gt;Device-A&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1709306512347v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;Device-B&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1709306522762v2.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;- Matt&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/thread/471849?ContentTypeID=1</link><pubDate>Fri, 01 Mar 2024 15:02:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:032b033b-4820-4963-a902-a1b7ed9f861c</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Matt,&lt;/p&gt;
&lt;p&gt;Sorry, I misunderstood the problem; I assumed it was the other way around. That is, I&amp;nbsp;assumed you were able to discover the service on device B.&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t understand why iOS doesn&amp;#39;t discover the service as having a 16-bit UUID for device B considering it&amp;#39;s using the same reserved base UUID. I tried replicating this by using the UART peripheral sample and replacing the NUS base UUID with the Bluetooth SIG&amp;#39;s, but that resulted in the same behavior as seen with device A.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/5078.pastedimage1709304471391v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/6406.pastedimage1709304504111v2.png" alt=" " /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;nRF Connect log&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;Attempting to connect...
cbCentralManager.connect()
[Callback] centralManager(central, didConnect: peripheral)
Connected.
Discovering Services...
peripheral.discoverServices(nil)
[Callback] peripheral(peripheral, didDiscoverServices: nil)
Discovered FFFE Services.
Discovering Characteristics for FFFE...
peripheral.discoverCharacteristics(nil, for: FFFE)
[Callback] peripheral(peripheral, didDiscoverCharacteristicsFor: FFFE, error: nil)
Discovering Descriptors for Characteristic 0002...
peripheral.discoverDescriptors(for: 0002)
Discovering Descriptors for Characteristic 0003...
peripheral.discoverDescriptors(for: 0003)
[Callback] peripheral(peripheral, didDiscoverDescriptorsFor: 0002, error: nil)
Discovered Characteristics 0002 and 0003 for Service FFFE.
Characteristic 0002 has no Descriptors.
[Callback] peripheral(peripheral, didDiscoverDescriptorsFor: 0003, error: nil)
Discovered Client Characteristic Configuration for Characteristic 0003&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;There must be some details in the specification that I&amp;#39;m not aware of. I will need to investigate this further on my side. The advertisement payload should not have any influence on the service discovery.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Vidar&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/thread/471837?ContentTypeID=1</link><pubDate>Fri, 01 Mar 2024 14:38:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:66cba7da-1823-4908-a845-6d035f775492</guid><dc:creator>matt_wilson</dc:creator><description>&lt;p&gt;&lt;span&gt;Vidar&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Based on what I&amp;#39;ve seen, Device-B is advertising&amp;nbsp;its service with a 128-bit UUID. We see that in the logs. &amp;nbsp;Since it&amp;#39;s using the SIG base UUID, is the Softdevice defaulting to searching for services with a 16-bit UUID, which might explain why it&amp;#39;s not discovering the service? Device-A is broadcasting a 16-bit UUID, which can be accurately identified since it also employs the SIG base UUID.&lt;/p&gt;
&lt;p&gt;- Matt&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/thread/471820?ContentTypeID=1</link><pubDate>Fri, 01 Mar 2024 13:59:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2137c34d-f4fe-462b-8c6c-a78f767bd304</guid><dc:creator>matt_wilson</dc:creator><description>&lt;p&gt;Vidar,&lt;/p&gt;
&lt;p&gt;Thanks for getting back to me promptly. I fully understand&amp;nbsp;your reply. My product also&amp;nbsp;interfaces with multiple other vendor products through their distinct UUIDs and services. When I integrated other products a few years back, I followed the NUS client model as outlined.&lt;/p&gt;
&lt;p&gt;In my explanation, both devices utilize the SIG base UUID for their services. This can be verified in the screenshot of the nRF Connect logs I posted. &amp;nbsp;My client code for connecting to Device-A functions smoothly. Since the services of Device-A and Device-B appear identical, I aimed to utilize the same code to connect to either device. When connecting to Device-A, there are no issues with discovering the service. Upon reviewing the logs, we observe that it returns the short UUID (2-byte). However, Device-B is now returning the full UUID (16-byte), and inexplicably, it cannot be discovered, resulting in an &amp;quot;attribute not found&amp;quot; error. So in short, the discovery process cannot find the service&amp;nbsp;&amp;quot;0000FFE0-0000-1000-8000-00805F9B34FB&amp;quot; (Device-B) but can find &amp;quot;FFE0&amp;quot; (Device-A).&lt;/p&gt;
&lt;p&gt;Logs from nRF Connect for both devices, with the highlighted comparison.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1709301239024v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;Device-B debug output from the connection attempt reveals failure due to the inability to find the service FFE0 during the discovery process.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;lt;info&amp;gt; srm_ble_svcs: CENTRAL: Scan Event - Found Peripheral Device PeekSmith-030CA3&#x2;
.
&amp;lt;info&amp;gt; srm_ble_svcs: CENTEAL: Peripheral Device Address - D0:78:87:05:0C:A3
&amp;lt;debug&amp;gt; nrf_sdh_ble: BLE event: 0x10.
&amp;lt;debug&amp;gt; nrf_ble_gatt: Requesting to update ATT MTU to 247 bytes on connection 0x0.
&amp;lt;debug&amp;gt; nrf_ble_gatt: Updating data length to 251 on connection 0x0.
&amp;lt;info&amp;gt; srm_ble_svcs: CENTRAL: Scan Event - Connected to device.
&amp;lt;debug&amp;gt; ble_display_c: CONNECTED Event Recieved!
&amp;lt;info&amp;gt; srm_ble_svcs: CENTRAL: GAP - Device Connected, handle 0
&amp;lt;info&amp;gt; ble_display_c: Assigning Connection Handle, handle 0
&amp;lt;debug&amp;gt; nrf_ble_gq: Registering connection handle: 0x0000
&amp;lt;debug&amp;gt; ble_db_disc: Starting discovery of service with UUID 0xFFE0 on connection handle 0x0.
&amp;lt;debug&amp;gt; nrf_ble_gq: Adding item to the request queue
&amp;lt;debug&amp;gt; nrf_ble_gq: GATTC Primary Services Discovery Request
&amp;lt;debug&amp;gt; nrf_ble_gq: SD is currently busy. The GATT request procedure will be attempted                       again later.
&amp;lt;debug&amp;gt; nrf_ble_gq: Processing the request queue...
&amp;lt;debug&amp;gt; nrf_ble_gq: GATTC Primary Service Discovery Request
&amp;lt;debug&amp;gt; nrf_ble_gq: SD is currently busy. The GATT request procedure will be attempted                           again later.
&amp;lt;debug&amp;gt; nrf_sdh_ble: BLE event: 0x39.
&amp;lt;debug&amp;gt; nrf_ble_gq: Processing the request queue...
&amp;lt;debug&amp;gt; nrf_ble_gq: GATTC Primary Service Discovery Request
&amp;lt;debug&amp;gt; nrf_ble_gq: SD is currently busy. The GATT request procedure will be attempted                           again later.
&amp;lt;debug&amp;gt; nrf_sdh_ble: BLE event: 0x3A.
&amp;lt;debug&amp;gt; nrf_ble_gatt: ATT MTU updated to 247 bytes on connection 0x0 (response).
&amp;lt;debug&amp;gt; srm_ble_svcs: GATT: ATT MTU exchange completed. central 0xF7 peripheral 0xF7
&amp;lt;debug&amp;gt; nrf_ble_gq: Processing the request queue...
&amp;lt;debug&amp;gt; nrf_ble_gq: GATTC Primary Service Discovery Request
&amp;lt;debug&amp;gt; nrf_ble_gq: SD GATT procedure (2) succeeded on connection handle: 0.
&amp;lt;debug&amp;gt; nrf_sdh_ble: BLE event: 0x24.
&amp;lt;debug&amp;gt; nrf_ble_gatt: Data length updated to 251 on connection 0x0.
&amp;lt;debug&amp;gt; nrf_ble_gatt: max_rx_octets: 27
&amp;lt;debug&amp;gt; nrf_ble_gatt: max_tx_octets: 251
&amp;lt;debug&amp;gt; nrf_ble_gatt: max_rx_time: 328
&amp;lt;debug&amp;gt; nrf_ble_gatt: max_tx_time: 2120
&amp;lt;debug&amp;gt; srm_ble_svcs: GATT: ATT MTU exchange completed. central 0xF7 peripheral 0xF7
&amp;lt;debug&amp;gt; nrf_sdh_ble: BLE event: 0x30.
&amp;lt;debug&amp;gt; ble_db_disc: Service UUID 0xFFE0 not found.
&amp;lt;info&amp;gt; srm_ble_svcs: CENTRAL: Display Database Discovery Event.
&amp;lt;debug&amp;gt; ble_display_c: Database Discovery Event: BLE_DB_DISCOVERY_SRV_NOT_FOUND
&amp;lt;info&amp;gt; srm_ble_svcs: CENTRAL: Display Database Discovery Event.
&amp;lt;debug&amp;gt; ble_display_c: Database Discovery Event: BLE_DB_DISCOVERY_AVAILABLE
&amp;lt;debug&amp;gt; nrf_ble_gq: Processing the request queue...
&amp;lt;debug&amp;gt; nrf_sdh_ble: BLE event: 0x39.
&amp;lt;debug&amp;gt; nrf_ble_gq: Processing the request queue...
&amp;lt;debug&amp;gt; nrf_sdh_ble: BLE event: 0x39.
&amp;lt;debug&amp;gt; nrf_ble_gq: Processing the request queue...
&amp;lt;debug&amp;gt; nrf_sdh_ble: BLE event: 0x39.
&amp;lt;debug&amp;gt; nrf_ble_gq: Processing the request queue...&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s the code snippet for initializing the client.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;// 00000000-0000-1000-8000-00805F9B34FB
#define BLE_SIG_UUID_BASE                 { 0xFB, 0x34, 0x9B, 0x5F, 0x80, 0x00, 0x00, 0x80, \
                                            0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }

....

#define PS_UUID_DISPLAY_SERVICE  0xFFE0
#define PS_UUID_DISPLAY_CHAR_1   0xFFE1
#define PS_UUID_DISPLAY_CHAR_2   0xFFE2
#define PS_UUID_DISPLAY_CHAR_3   0xFFE3
#define PS_UUID_DISPLAY_CHAR_4   0xFFFF

....

ret_code_t m_ble_display_c_init(ble_display_c_init_t  *p_ble_display_c_init,
                                ble_display_config_t **p_display_config) {
    ret_code_t err_code;
    
    VERIFY_PARAM_NOT_NULL(p_ble_display_c_init);
    VERIFY_PARAM_NOT_NULL(p_ble_display_c_init-&amp;gt;p_gatt_queue);

    memcpy(&amp;amp;s_display_config, &amp;amp;s_display_config_default, sizeof(ble_display_config_t));
    *p_display_config = &amp;amp;s_display_config;

    ble_uuid128_t base_uuid = BLE_SIG_UUID_BASE;
    err_code = sd_ble_uuid_vs_add(&amp;amp;base_uuid, &amp;amp;m_ble_display_c.uuid_type);
    VERIFY_SUCCESS(err_code);
    
    ble_uuid_t srvc_uuid = {
	.type = m_ble_display_c.uuid_type,
	.uuid = PS_UUID_DISPLAY_SERVICE
    };

    m_ble_display_c.peer_display_db.cccd_handle    = BLE_GATT_HANDLE_INVALID;
    m_ble_display_c.peer_display_db.display_handle = BLE_GATT_HANDLE_INVALID;
    m_ble_display_c.conn_handle                    = BLE_CONN_HANDLE_INVALID;
    m_ble_display_c.p_gatt_queue                   = p_ble_display_c_init-&amp;gt;p_gatt_queue;
    //m_ble_display_c.uuid_type                      = BLE_UUID_TYPE_VENDOR_BEGIN;
    //m_ble_display_c.uuid_type                      = BLE_UUID_TYPE_BLE;

    return ble_db_discovery_evt_register(&amp;amp;srvc_uuid);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;- Matt&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: GATT Service Discovery Failure on SIG BASE UUID</title><link>https://devzone.nordicsemi.com/thread/471768?ContentTypeID=1</link><pubDate>Fri, 01 Mar 2024 11:52:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bdc1aff8-2bb8-48da-a26b-0ac78982ff6e</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;When working with vendor-specific UUIDs that do not use the BT SIG base UUID, you must first add the 128-bit base UUID to the SoftDevice&amp;#39;s UUID table. This allows the application to reference the UUID later.&amp;nbsp;New base UUIDs&amp;nbsp;are added through the &lt;a title="sd_ble_uuid_vs_add" href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v7.3.0/group___b_l_e___c_o_m_m_o_n___f_u_n_c_t_i_o_n_s.html?cp=5_7_3_1_2_0_2_2_8#ga265b4251110a15120d0aa97e5152163b"&gt;sd_ble_uuid_vs_add&lt;/a&gt;&lt;span&gt;()&amp;nbsp;&amp;nbsp;&lt;/span&gt;function.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1709290991229v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;Note: If &lt;a title="sd_ble_uuid_vs_add" href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v7.3.0/group___b_l_e___c_o_m_m_o_n___f_u_n_c_t_i_o_n_s.html?cp=5_7_3_1_2_0_2_2_8#ga265b4251110a15120d0aa97e5152163b"&gt;sd_ble_uuid_vs_add&lt;/a&gt;&lt;span&gt;()&amp;nbsp;&lt;/span&gt;returns NRF_ERROR_NO_MEM, it means you must increase the &amp;#39;NRF_SDH_BLE_VS_UUID_COUNT&amp;#39; in sdk_config.h to allocate additional UUID slots in the SoftDevice table.&lt;/p&gt;
&lt;p&gt;You&amp;nbsp;can take a look at the &lt;a title="Nordic UART Service Client" href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.1.0/ble_sdk_app_nus_c.html?cp=9_1_4_2_0_7"&gt;Nordic UART Service Client&lt;/a&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;project for a practical example of a client using a 128-bit vendor-specific UUID. This&amp;nbsp;client&amp;nbsp;include the following service and characteristics:&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1709291300818v2.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Code to add the Nordic UART service base uuid&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define NUS_BASE_UUID                   {{0x9E, 0xCA, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x00, 0x00, 0x40, 0x6E}} /**&amp;lt; Used vendor-specific UUID. */

...

uint32_t ble_nus_c_init(ble_nus_c_t * p_ble_nus_c, ble_nus_c_init_t * p_ble_nus_c_init)
{
    uint32_t      err_code;
    ble_uuid_t    uart_uuid;
    ble_uuid128_t nus_base_uuid = NUS_BASE_UUID;

    VERIFY_PARAM_NOT_NULL(p_ble_nus_c);
    VERIFY_PARAM_NOT_NULL(p_ble_nus_c_init);
    VERIFY_PARAM_NOT_NULL(p_ble_nus_c_init-&amp;gt;p_gatt_queue);

    err_code = sd_ble_uuid_vs_add(&amp;amp;nus_base_uuid, &amp;amp;p_ble_nus_c-&amp;gt;uuid_type);
    VERIFY_SUCCESS(err_code);
    ...&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Notice&amp;nbsp;that the NUS_BASE_UUID symbol is represented in little-endian format, as opposed to the big-endian representation that tends to be used in user-facing applications and documentation. Also, the &amp;#39;p_ble_nus_c--&amp;gt;uuid_type&amp;#39; holds the index of the base UUID, which the app uses as a tag to reference the UUID.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Service discovery&amp;nbsp;registration&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1709293862791v3.png" alt=" " /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Characteristic discovery&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1709293916709v4.png" alt=" " /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If anything is unclear, please let me know.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Vidar&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>