<?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>BLE Multilink example + Throughput example</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/79924/ble-multilink-example-throughput-example</link><description>Hi there, I&amp;#39;m trying to combine the BLE Multilink example with the Throughput example, with the hope that I can connect 1 Central to 2 Peripherals and get a high throughput. 
 In creating the AMTS instance, I&amp;#39;m a bit unsure of which ones have to be 2</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 11 Nov 2021 22:39:34 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/79924/ble-multilink-example-throughput-example" /><item><title>RE: BLE Multilink example + Throughput example</title><link>https://devzone.nordicsemi.com/thread/338662?ContentTypeID=1</link><pubDate>Thu, 11 Nov 2021 22:39:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:64644f47-2e78-4dd0-8b65-2e10b13bde44</guid><dc:creator>Cecylia</dc:creator><description>&lt;p&gt;Hi Simon,&lt;br /&gt;&lt;br /&gt;After reading many resources I think there&amp;#39;s a basic fallacy in my initial&amp;nbsp;understanding that prompted this question.&lt;br /&gt;&lt;br /&gt;At first I thought I would run it like this:&lt;br /&gt;&lt;br /&gt;Central (running 2 amts)&amp;nbsp; ----------------------&amp;gt; Peripheral 1 (running amtc)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |________&amp;gt; Peripheral 2 (running amtc)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;But, amts from Nordic&amp;#39;s throughput example is basically a GATT Server (thus the &amp;quot;s&amp;quot;), and you cannot have 2 GATT servers running in one device.&amp;nbsp; For example, mentioned &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/40588/running-multiple-server-instances-or-just-add-more-characteristics"&gt;here&lt;/a&gt;.&amp;nbsp; And upon further reading, actually the roles are reversed in my understanding.&amp;nbsp; The Peripherals who are going to send the data should run the GATT Server, while the central who&amp;#39;s going to receive the data should run the GATT Client.&amp;nbsp; So it should be like this:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Central (running 2 amt&lt;strong&gt;c&lt;/strong&gt;)&amp;nbsp; ----------------------&amp;gt; Peripheral 1 (running amt&lt;strong&gt;s&lt;/strong&gt;)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |________&amp;gt; Peripheral 2 (running amt&lt;strong&gt;s&lt;/strong&gt;)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So I removed all amts code from my central, and replaced it with initialization of 2 amtc instances.&amp;nbsp; And, I put the amts code on my peripheral.&amp;nbsp; With this approach it works much better.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Cecyila&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE Multilink example + Throughput example</title><link>https://devzone.nordicsemi.com/thread/331473?ContentTypeID=1</link><pubDate>Tue, 28 Sep 2021 10:27:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:116e3e06-ae47-4a83-8182-7c253c66a3dd</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi Cecylia&lt;/p&gt;
&lt;p&gt;It should not be possible that connecting to a second peripheral will change or affect the connection handle of the first application at all. Where exactly do you see that both connection handles are set to 1? There must be something in the connection process you&amp;#39;ve changed from the multilink_central example project, for something like this to occur. I think it should be sufficient to use the multilink central as is and change the LED button service instances to rather use the &amp;quot;AMTS&amp;quot; service you plan on using.&lt;/p&gt;
&lt;p&gt;What &amp;quot;more information&amp;quot; did you get from the debugging?&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE Multilink example + Throughput example</title><link>https://devzone.nordicsemi.com/thread/331394?ContentTypeID=1</link><pubDate>Mon, 27 Sep 2021 19:01:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f6156258-a862-4a41-ab64-9ab6be53f585</guid><dc:creator>Cecylia</dc:creator><description>&lt;p&gt;Hello&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/members/simonr"&gt;Simonr&lt;/a&gt;, any thoughts? :) help, please...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE Multilink example + Throughput example</title><link>https://devzone.nordicsemi.com/thread/331163?ContentTypeID=1</link><pubDate>Sat, 25 Sep 2021 01:26:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:980560e7-2412-4798-b330-04102e137ede</guid><dc:creator>Cecylia</dc:creator><description>&lt;p&gt;Hi Simon,&lt;br /&gt;&lt;br /&gt;I added the verbosity level and I got more information.&amp;nbsp; As you predicted,&amp;nbsp;I didn&amp;#39;t seem to initialize the Central&amp;#39;s Services properly.&lt;br /&gt;&lt;br /&gt;Here&amp;#39;s how I initialized.&amp;nbsp; I tried to separate the functions for the 2 servers (m_amts) for debugging.&lt;pre class="ui-code" data-mode="text"&gt;// NRF_SDH_BLE_CENTRAL_LINK_COUNT is 2

NRF_BLE_QWRS_DEF(m_qwr_array_c, NRF_SDH_BLE_CENTRAL_LINK_COUNT);
NRF_BLE_GATT_DEF(m_gatt); /**&amp;lt; GATT module instance. */
BLE_DB_DISCOVERY_ARRAY_DEF(m_ble_db_discovery, NRF_SDH_BLE_CENTRAL_LINK_COUNT); /**&amp;lt; Database discovery module instances. */
NRF_BLE_SCAN_DEF(m_scan); /**&amp;lt; Scanning Module instance. */
NRF_BLE_GQ_DEF(m_ble_gatt_queue, /**&amp;lt; BLE GATT Queue instance. */
NRF_SDH_BLE_CENTRAL_LINK_COUNT,
NRF_BLE_GQ_QUEUE_SIZE);

// Here&amp;#39;s how I initialized m_amts
nrf_ble_amts_t m_amts[NRF_SDH_BLE_CENTRAL_LINK_COUNT];
NRF_SDH_BLE_OBSERVER(m_amts_ble_obs, BLE_AMTS_BLE_OBSERVER_PRIO, nrf_ble_amts_on_ble_evt, &amp;amp;m_amts[0]);
NRF_SDH_BLE_OBSERVER(m_amts_ble_obs1, BLE_AMTS_BLE_OBSERVER_PRIO, nrf_ble_amts_on_ble_evt1, &amp;amp;m_amts[1]);

...

// And then here&amp;#39;s the server init
static void server_init(void)
{
    qwr_init();

    for (uint8_t qq = 0; qq &amp;lt; NRF_SDH_BLE_CENTRAL_LINK_COUNT; qq++) {
        nrf_ble_amts_init(&amp;amp;m_amts[qq], amts_evt_handler, 244 /*sizeof(client_to_marc_t)*/,
                        sizeof(marc_to_client_t));
        m_amts[qq].conn_handle = BLE_CONN_HANDLE_INVALID;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;When I power on the 1st peripheral board and the first connection happens, both &lt;span style="background-color:#99ccff;"&gt;&lt;em&gt;nrf_ble_amts_on_ble_evt&lt;/em&gt; &lt;/span&gt;and &lt;span style="background-color:#ffcc99;"&gt;&lt;em&gt;nrf_ble_amts_on_ble_evt&lt;strong&gt;1&lt;/strong&gt;&lt;/em&gt; &lt;/span&gt;are called and m_amts[0] and m_amts[1] are updated.&amp;nbsp; I.e., both conn_handle are now set to 0.&lt;br /&gt;&lt;br /&gt;Then when I power on the 2nd board, both m_amts[0] and m_amts[1]&amp;#39;s connection handles are set to 1.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I believe this is wrong.&amp;nbsp; I think the first connection should only set the conn_handle for the first server, so if done correctly they should end up as:&lt;br /&gt;m_amts[0].conn_handle = 0&lt;br /&gt;m_amts[1].conn_handle = 1&lt;/p&gt;
&lt;p&gt;Instead of what I have now, where after the 2nd connection,both are set to 1.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;So, my question is, when an event happen, and both&amp;nbsp;&lt;/p&gt;
&lt;p&gt;void &lt;span style="background-color:#99ccff;"&gt;nrf_ble_amts_on_ble_evt&lt;/span&gt;(ble_evt_t const * &lt;span style="background-color:#ffff99;"&gt;p_ble_evt&lt;/span&gt;, void * p_context)&lt;/p&gt;
&lt;p&gt;and&lt;/p&gt;
&lt;p&gt;void &lt;span style="background-color:#ffcc99;"&gt;nrf_ble_amts_on_ble_evt&lt;strong&gt;1&lt;/strong&gt;&lt;/span&gt;(ble_evt_t const * &lt;span style="background-color:#ffff99;"&gt;p_ble_evt&lt;/span&gt;, void * p_context)&lt;br /&gt;&lt;br /&gt;are called, can I put a condition inside these functions so that&amp;nbsp;based on the information inside &lt;span style="background-color:#ffff99;"&gt;p_ble_evt &lt;/span&gt;I can know if it should be handled by the first or the 2nd connection?&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Or should the fix be way earlier, ie during the init, such that BLE events for the 1st connection should not even call the 2nd handler?&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;PS: I didn&amp;#39;t get much information from chasing the &amp;quot;&lt;span&gt;sd_ble_gatts_hvx&amp;quot;.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Thanks a lot,&lt;br /&gt;Cecylia&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE Multilink example + Throughput example</title><link>https://devzone.nordicsemi.com/thread/331092?ContentTypeID=1</link><pubDate>Fri, 24 Sep 2021 12:59:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:914b7d0f-631d-49d7-a0eb-1d07fed5b3d1</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi again&lt;/p&gt;
&lt;p&gt;It seems like you&amp;#39;re only logging the &amp;lt;info&amp;gt; and &amp;lt;error&amp;gt; messages. Please try adding DEBUG to your preprocessor definitions in order to get more information in terms of logging (as explained in the link in my last reply).&amp;nbsp;If you&amp;#39;re able to see what error message the&amp;nbsp;&lt;span&gt;sd_ble_gatts_hvx() error returns you can take a look at the description of the possible errors here (from ble_gatts.h) :&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;@retval ::NRF_SUCCESS Successfully queued a notification or indication for transmission, and optionally updated the attribute value.
 * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
 * @retval ::NRF_ERROR_INVALID_STATE One or more of the following is true:
 *                                   - Invalid Connection State
 *                                   - Notifications and/or indications not enabled in the CCCD
 *                                   - An ATT_MTU exchange is ongoing
 * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
 * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
 * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied. Only attributes added directly by the application are available to notify and indicate.
 * @retval ::BLE_ERROR_GATTS_INVALID_ATTR_TYPE Invalid attribute type(s) supplied, only characteristic values may be notified and indicated.
 * @retval ::NRF_ERROR_NOT_FOUND Attribute not found.
 * @retval ::NRF_ERROR_FORBIDDEN The connection&amp;#39;s current security level is lower than the one required by the write permissions of the CCCD associated with this characteristic.
 * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied.
 * @retval ::NRF_ERROR_BUSY For @ref BLE_GATT_HVX_INDICATION Procedure already in progress. Wait for a @ref BLE_GATTS_EVT_HVC event and retry.
 * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value.
 * @retval ::NRF_ERROR_RESOURCES Too many notifications queued.
 *                               Wait for a @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event and retry.
 * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection.
 */&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;One thought is that your service (on the central side) doesn&amp;#39;t handle the connection handles correctly and isn&amp;#39;t able to separate the two notification requests from each other.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Best regards,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Simon&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE Multilink example + Throughput example</title><link>https://devzone.nordicsemi.com/thread/330936?ContentTypeID=1</link><pubDate>Fri, 24 Sep 2021 03:43:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:555db099-0a96-427c-ae13-b1d9eab954d8</guid><dc:creator>Cecylia</dc:creator><description>&lt;p&gt;Hi Simon,&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been using the IAR Segger debugger, and also Serial UART print for debug log for debugging these past few days.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;I wonder if you can look at my log here and point me to where the issue is, or at least how to debug further?&lt;br /&gt;The first connection&amp;nbsp;is always successful, but the 2nd connection fails to set Notifications enabled.&amp;nbsp; And it seems to be because the incoming &lt;strong&gt;p_ble_evt-&amp;gt;evt.gatts_evt.params.write.handle&lt;/strong&gt;&amp;nbsp;value matches with the first instance instead of the second one.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m thinking that if the Central is trying to establish connection to the 2nd peripheral, the incoming p_ble_evt&amp;#39;s handler should match that of the 2nd one.&amp;nbsp; But, why is it still using the first connection&amp;#39;s handler?&lt;/p&gt;
&lt;p&gt;Maybe it&amp;#39;s clearer from the log.&amp;nbsp; This is the log from the Central&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Central waiting for Peripheral to connect.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#cc99ff;"&gt;[00:00:00.396,484] &amp;lt;info&amp;gt; app: Multilink example started.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#cc99ff;"&gt;[00:00:00.396,484] &amp;lt;info&amp;gt; app: Start scanning for device name PIVOT Yoga 000H1 and PIVOT Yoga 000S1.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Powering on 1st Peripheral.&amp;nbsp; Establishing 1st Connection&lt;/strong&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:08.990,966] &amp;lt;info&amp;gt; app: CONNECTION 0x0 established, starting DB discovery.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:08.990,966] &amp;lt;info&amp;gt; app: Discovering GATT database...&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:08.991,027] &amp;lt;info&amp;gt; app: Sending PHY Update, 2 Mbps.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:08.991,088] &amp;lt;info&amp;gt; app: Resume scanning&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:08.991,088] &amp;lt;info&amp;gt; app: Start scanning for device name PIVOT Yoga 000H1 and PIVOT Yoga 000S1.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:09.202,453] &amp;lt;info&amp;gt; app: Conn:0 ATT MTU exchange completed. MTU set to 247 bytes.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:09.232,482] &amp;lt;info&amp;gt; app: Conn:0 Data length updated to 251 bytes.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:09.652,587] &amp;lt;error&amp;gt; AMTS: cwati on_write Conn:&lt;strong&gt;0x0&lt;/strong&gt; p_ble_evt&amp;#39;s&lt;strong&gt; gatts_evt handle:14&lt;/strong&gt; len:2 &lt;strong&gt;m_amts[0&lt;/strong&gt;].amts_char_handles.&lt;strong&gt;cccd_handle&lt;/strong&gt;:&lt;strong&gt;14&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:09.652,587] &amp;lt;info&amp;gt; app:&lt;strong&gt; AMTS: Conn 0 Notifications enabled.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:09.680,419] &amp;lt;info&amp;gt; app: Connection 0 PHY update accepted. PHY set to 2 Mbps.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:09.832,275] &amp;lt;info&amp;gt; AMTC: cwati: AMT service discovered at peer. uuid:0x1525 rbc_handle:16 conn_handle:0&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:09.832,336] &amp;lt;info&amp;gt; app: AMTC: Conn 0 service discovered at peer.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#99ccff;"&gt;[00:00:09.892,395] &amp;lt;info&amp;gt; AMTC: cwati CCCD configured. Conn 0 Peer DB amt_cccd_handle:10056&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Powering on the 2nd Peripheral.&amp;nbsp; 2nd Connection always fails to get Notifications enabled&lt;/strong&gt;&lt;br /&gt;&lt;span style="background-color:#ff99cc;"&gt;[00:00:26.318,664] &amp;lt;info&amp;gt; app: CONNECTION 0x1 established, starting DB discovery.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ff99cc;"&gt;[00:00:26.318,664] &amp;lt;info&amp;gt; app: Discovering GATT database...&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ff99cc;"&gt;[00:00:26.318,725] &amp;lt;info&amp;gt; app: Sending PHY Update, 2 Mbps.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ff99cc;"&gt;[00:00:26.318,786] &amp;lt;info&amp;gt; app: CONNECTION COMPLETE. Got both connection. Will not scan.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ff99cc;"&gt;[00:00:26.452,514] &amp;lt;info&amp;gt; app: Conn:1 ATT MTU exchange completed. MTU set to 247 bytes.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ff99cc;"&gt;[00:00:26.512,573] &amp;lt;info&amp;gt; app: Conn:1 Data length updated to 251 bytes.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ff99cc;"&gt;[00:00:26.870,422] &amp;lt;info&amp;gt; app: Connection 1 PHY update accepted. PHY set to 2 Mbps.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ff99cc;"&gt;[00:00:26.872,497] &amp;lt;error&amp;gt; AMTS: cwati on_write &lt;strong&gt;Conn:0x1&lt;/strong&gt; &lt;strong&gt;p_ble_evt&amp;#39;s gatts_evt handle:14&lt;/strong&gt; len:2 m_amts[&lt;strong&gt;1&lt;/strong&gt;].&lt;strong&gt;amts_char_handles.cccd_handle:20&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Since the handlers don&amp;#39;t match, the Notifications enabled will never get established.&amp;nbsp; If I remove this check then I do get the &amp;quot;Conn 1 Notifications enabled&amp;quot;.&amp;nbsp; But, further communication from Central to 2nd Peripheral will fail with &amp;quot;&amp;nbsp;AMTS: sd_ble_gatts_hvx() conn 1 failed: 0x3401&amp;quot;&amp;nbsp; So I think I need to resolve this properly&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color:#ff99cc;"&gt;[00:00:27.052,368] &amp;lt;info&amp;gt; AMTC: cwati: AMT service discovered at peer. uuid:0x1525 rbc_handle:16 conn_handle:1&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ff99cc;"&gt;[00:00:27.052,368] &amp;lt;info&amp;gt; app: AMTC: Conn 1 service discovered at peer.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ff99cc;"&gt;[00:00:27.172,363] &amp;lt;info&amp;gt; AMTC: cwati CCCD configured. Conn 1 Peer DB amt_cccd_handle:11772&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ff99cc;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Really appreciate your help!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks,&lt;br /&gt;Cecylia&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE Multilink example + Throughput example</title><link>https://devzone.nordicsemi.com/thread/330842?ContentTypeID=1</link><pubDate>Thu, 23 Sep 2021 12:22:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3ffc8be7-a5f1-4539-b3f3-31275ab6af4b</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi Cecylia&lt;/p&gt;
&lt;p&gt;It should be fine for the two peripherals to have the same service sets. What have you done in terms of &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/10729/my-device-is-freezing-and-restarting"&gt;debugging&lt;/a&gt;? Are you able to see any error codes on the central side when trying to connect to the second peripheral. Debugging should give you a better idea of what exactly goes wrong when trying to connect to the second device. You&amp;#39;ll need to find out what specifically causes the connection to fail.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>