<?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>Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/121934/concurrent-channel-sounding-procedures</link><description>Hi, 
 I am trying to create a trilateration system with 3 initiators and 1 reflector (Hopefully multiple reflectors in the future) on the nrf54l15. The channel sounding with range requestor sample code demonstrates a one to one connection, but I modified</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 24 Oct 2025 06:19:52 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/121934/concurrent-channel-sounding-procedures" /><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/552316?ContentTypeID=1</link><pubDate>Fri, 24 Oct 2025 06:19:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ae04ac6a-c923-4f81-9f2b-9300f83e7a02</guid><dc:creator>Elfving</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I might be misunderstanding you here but doing it sequentially is what we currently support.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Elfving&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/552185?ContentTypeID=1</link><pubDate>Wed, 22 Oct 2025 17:07:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2d518cf3-115a-4543-9212-b55884491703</guid><dc:creator>Hareesh123</dc:creator><description>&lt;p&gt;I tried the way you told . Its not working to concurrently get the data. Only when I press reset I am switching to the next board any way to resolve this&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/541971?ContentTypeID=1</link><pubDate>Wed, 09 Jul 2025 14:50:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:66abd854-729e-4eda-9d55-f5f390df5af5</guid><dc:creator>Elfving</dc:creator><description>[quote user="Triscuit"]Could you ask the team if the issue with concurrent is because of the scheduling conflicts in the sdc please?[/quote]
&lt;p&gt;Yeah, this is the case. Not because that there necessarily is a scheduling conflict, but that there&amp;nbsp;&lt;span&gt;scheduling conflicts might happen. I&amp;#39;ve also now learned that it can happen between CS and normal connections as well, which would explain why there would still be issues with just one device doing CS at the time and the other connections just waiting. It might be that rebooting does something with the connection priorities, making these conflicts less frequent. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;It seems that making a new connection for CS each time is the only way of making sure that you are not running into a scheduling conflict at the moment.&amp;nbsp;&lt;/span&gt;&lt;span&gt;I&amp;#39;ll ask the team about your specific scenario.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Regards,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Elfving&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/541514?ContentTypeID=1</link><pubDate>Fri, 04 Jul 2025 22:45:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e14fa0d9-ae58-479e-af4f-a44a6bc7854d</guid><dc:creator>Triscuit</dc:creator><description>&lt;p&gt;Hi Elfving,&lt;/p&gt;
&lt;p&gt;I tried the sequential method where I simply just enable and disable channel sounding&amp;nbsp;as well as connect and disconnect, but they all won&amp;#39;t work unless I reboot the reflectors. Perhaps I did not shut down the procedure properly? But even when I disconnect and try to connect again, they fail to connect. I had a reply from another dev and they said to use the recycle callback but even that did not work. I am not sure what rebooting does that disconnecting and connecting don&amp;#39;t do.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Could you ask the team if the issue with concurrent is because of the scheduling conflicts in the sdc please? It is my ultimate goal to do it concurrently, but right now I have to settle for sequential where I connect, disconnect, and then reboot each reflector every time I disconnect. Thank you so much for your time.&lt;/p&gt;
&lt;p&gt;Sincerely,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Triscuit&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/541477?ContentTypeID=1</link><pubDate>Fri, 04 Jul 2025 13:34:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:872406c7-c728-43d0-8704-683db258bd64</guid><dc:creator>Elfving</dc:creator><description>&lt;p&gt;Hi and sorry about the delay on this one,&lt;/p&gt;
&lt;p&gt;Please let me if these requests are urgent for you. Any update on this from your side?&lt;/p&gt;
[quote user="Triscuit"]Do you know if sequential would work if I enable and disable channel sounding procedure instead of connect and disconnect the devices?[/quote]
&lt;p&gt;Sounds like this would keep the connections and avoid the main issue, which is scheduling conflicts between the different CS procedures- And I agree that keeping the connections alive would be faster. I guess there could also be conflicts between the CS procedures and other normal connections but I haven&amp;#39;t heard of that being a problem. I can check with the relevant team.&lt;/p&gt;
[quote user="Triscuit"]My only idea is that it might be due to the sdc not being optimized to keep multiple connections alive as well as perform channel sounding procedure.[/quote]
&lt;p&gt;I&amp;#39;ll ask with the team about this. Is sequential what you are currently going for?&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Elfving&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/539789?ContentTypeID=1</link><pubDate>Wed, 18 Jun 2025 21:17:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:13f12324-19b0-44a5-9aa2-b5f3ea66bc50</guid><dc:creator>Triscuit</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Do you know if sequential would work if I enable and disable channel sounding procedure instead of connect and disconnect the devices? I tried connecting and disconnecting and it works, but I thought turning on and off the channel sounding itself while keeping the connections alive may be faster. With just one device it works great, and took about half the time of reestablishing the connection every time, however, when I move on to 2 or more devices, the ones after the first were never able to receive any data, it also said &amp;quot;Tried to parse empty step data&amp;quot;. I made sure to wait for connections to establish, wait for cs to enable, wait until ranging_data_get_complete_cb is called. I also gave each iteration a few seconds before proceeding to the next, but nothing worked. I set &lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/kconfig/index.html#CONFIG_BT_CTLR_SDC_CS_COUNT"&gt;BT_CTLR_SDC_CS_COUNT&lt;/a&gt;&amp;nbsp;to the proper number as well as CONFIG_BT_MAX_CONN. I have no more ideas for the software side to make this work.&amp;nbsp;My only idea is that it might be due to the sdc not being optimized to keep multiple connections alive as well as perform channel sounding procedure. Is this also because the sdc isn&amp;#39;t optimized for it? Are there any more steps I can take to fix this issue? Thanks in advance.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Sincerely,&lt;/p&gt;
&lt;p&gt;Triscuit&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/539147?ContentTypeID=1</link><pubDate>Fri, 13 Jun 2025 08:08:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:29d7b5a2-5899-4365-8531-fc31a2f04dbf</guid><dc:creator>Elfving</dc:creator><description>&lt;p&gt;Hi guys,&lt;/p&gt;
&lt;p&gt;It is true that the NRF54L, as well as all of our devices, have only one radio. So with multiple connections, ie. from one BLE central to multiple peripherals, or with device doing both BLE and Zigbee at the same time, or anything like that, things do happen sequentially in the radio. This is typically handled by MPSL in the stack, and&amp;nbsp;still typically thought of as concurrent - much like a multi-threaded program &amp;quot;does things at the same time&amp;quot;. How this is handled on the back-end needs to be optimized for it to work well though.&lt;/p&gt;
&lt;p&gt;And that is the current issue with multiple channel sounding connections.&amp;nbsp;&lt;span&gt;It&amp;#39;s possible to run CS on multiple connections at the same time, but we &lt;em&gt;currently&lt;/em&gt; don&amp;#39;t make much effort to avoid scheduling conflicts, so parameters and kconfigs have to be selected carefully for it to work well. This however, isn&amp;#39;t as much of an issue if the connections are handled sequentially &lt;em&gt;in the application&lt;/em&gt;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;One&amp;nbsp;common pitfall though, is to forget to increase &lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/kconfig/index.html#CONFIG_BT_CTLR_SDC_CS_COUNT"&gt;BT_CTLR_SDC_CS_COUNT&amp;nbsp;&lt;/a&gt;when you doing multiple CS connections. Make sure that you are atleast doing that. &lt;a href="https://docs.nordicsemi.com/bundle/ncs-3.1.0-preview1/page/nrfxlib/softdevice_controller/doc/channel_sounding.html"&gt;We have a few more notes in the docs&lt;/a&gt;, which might help you get the concurrent way to work, though the sequential way is what we&amp;#39;re certain of should work.&lt;/span&gt;&lt;/p&gt;
[quote user="Triscuit"]It also mentioned that in the SoftDevice Controller it only allows one channel sounding procedure to be carried out at a time, which we cannot change unless we request a custom kit from Nordic, is this true? [/quote]
&lt;p&gt;&lt;span&gt;SDC can handle it, though currently isn&amp;#39;t optimized for it. There is no custom kit for this.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Regards,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Elfving&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/538918?ContentTypeID=1</link><pubDate>Wed, 11 Jun 2025 23:00:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1eb5e78a-1884-4531-a42e-8f79e6434d5b</guid><dc:creator>Triscuit</dc:creator><description>&lt;p&gt;I tried a new method with 3 reflectors and 1 initiator instead, however, I am still running into the same issue. I have done a lot of testing and nothing worked. I am starting to believe that this is due to hardware limitation. I asked chatGPT and it mentioned that the nrf54l15dk has only one radio. In order to perform concurrent connections the singular radio needs to switch between two different connections. Channel sounding needs very precise timing and the switch between them causes them to receive poor data and sometimes no data. This aligns with my tests, where if I just run one procedure it works fine, however, when I run multiple they start encountering issues. It also mentioned that in the SoftDevice Controller it only allows one channel sounding procedure to be carried out at a time, which we cannot change unless we request a custom kit from Nordic, is this true? Knowing this, could an engineer maybe provide advice on how to make this work on the software side? Or could someone confirm my suspicion of this hardware limitation and let me know if this is possible. Thanks so much.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/538904?ContentTypeID=1</link><pubDate>Wed, 11 Jun 2025 20:59:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9d7b5bed-e052-45b5-9d28-9fb4f99d3f4d</guid><dc:creator>Triscuit</dc:creator><description>&lt;p&gt;Hi, did you also succeed in setting them both up and enabling cs? I just tried it again but it still only returned data for one of them. I am starting to really think it&amp;#39;s a hardware limitation. Because when I set MAX_CONN to 1 it performs perfectly but when I turn it to 2 or over it performs poorly, but the set up and everything was fine, just the actual get_distance part that is affected.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/538747?ContentTypeID=1</link><pubDate>Wed, 11 Jun 2025 06:50:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:21275005-6931-4c9f-8aaf-4979cea43951</guid><dc:creator>marrycol</dc:creator><description>&lt;p&gt;I run into that problem too...&amp;nbsp;&lt;span style="color:#ffffff;" data-sheets-root="1"&gt;&lt;a class="in-cell-link" style="color:#ffffff;" href="https://mycabinquiz.com/" rel="noopener noreferrer" target="_blank"&gt;godly parent quiz&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/538395?ContentTypeID=1</link><pubDate>Fri, 06 Jun 2025 11:25:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:25f7f7f6-fbaf-4849-bac9-d10d725047c8</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Yes, I assume this is a SW problem, unfortunately I&amp;#39;ve not been able to find the reason for what needs to be changed exactly. I&amp;#39;ll be gone for the next week, so I&amp;#39;m handing this case over to one of my colleagues. Best of luck!&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: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/538297?ContentTypeID=1</link><pubDate>Thu, 05 Jun 2025 17:10:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f542292e-50fd-4dac-8099-b478b823421f</guid><dc:creator>Triscuit</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Since you mentioned the sample simply isn&amp;#39;t designed to do concurrent sampling, do you think it can still be done? I am assuming this is a software problem? And do you have an idea what I need to change in order to make this happen? Thank you so much in advance.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Sincerely,&lt;/p&gt;
&lt;p&gt;Triscuit&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/538152?ContentTypeID=1</link><pubDate>Thu, 05 Jun 2025 06:33:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dfae4dea-7c97-46ea-8aa3-a4019ee43767</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;I don&amp;#39;t think there should be signal interference, as devices use slightly different frequencies for the ranging AFAIK, nor do I think Channel Sounding uses too much memory to have multiple connections.&lt;/p&gt;
&lt;p&gt;I think the main issue is that the sample simply isn&amp;#39;t designed to doo concurrent sampling at the moment, and this is not something we have tested as of yet.&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: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/537931?ContentTypeID=1</link><pubDate>Tue, 03 Jun 2025 17:54:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3891203b-b734-4120-aeac-7ffbdab04cfa</guid><dc:creator>Triscuit</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Yes I am using the NRF54l15 dk for both the initiators and the reflector. I am running the procedure concurrently right now.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;static int find_free_slot(void)
{
    for (int i = 0; i &amp;lt; MAX_CONN; i++) {
        if (connections[i] == NULL) {
            return i;
        }
    }
    return -1;
}

static int find_conn_index(struct bt_conn *conn)
{
    for (int i = 0; i &amp;lt; MAX_CONN; i++) {
        if (connections[i] == conn) {
            return i;
        }
    }
    return -1;
}

static void connected_cb(struct bt_conn *conn, uint8_t err)
{
    char addr[BT_ADDR_LE_STR_LEN];
    bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));
    LOG_INF(&amp;quot;Connected to %s (err 0x%02X)&amp;quot;, addr, err);

    if (err) {
        LOG_ERR(&amp;quot;Connection failed (err 0x%02X)&amp;quot;, err);
        bt_conn_unref(conn);
        return;
    }

    int idx = find_free_slot();  // Find an empty spot
    if (idx == -1) {
        LOG_WRN(&amp;quot;No free connection slots&amp;quot;);
        bt_conn_disconnect(conn, BT_HCI_ERR_CONN_LIMIT_EXCEEDED);
        bt_conn_unref(conn);
        return;
    }

    connections[idx] = bt_conn_ref(conn);
    cs_settings_applied[idx] = false;
    k_sem_give(&amp;amp;conn_sems[idx]);
    dk_set_led_on(CON_STATUS_LED);

    start_advertising();
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I am using an array to keep track of pointers to each connection. Each one is differentiated by their index in the array.&lt;br /&gt;&lt;br /&gt;The issue I have in mind is that maybe it is because there are multiple Bluetooth connections that the signals might interfere with each other. Either that or maybe channel sounding takes up too much memory for a single reflector. Thank you so much for your help.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Concurrent channel sounding procedures</title><link>https://devzone.nordicsemi.com/thread/537884?ContentTypeID=1</link><pubDate>Tue, 03 Jun 2025 13:11:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fed7d40a-1123-4b31-ac06-2cdc2cea6369</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;What HW are you using here, nRF54L15 DKs on both end or custom boards? Are you doing the ranging concurrently, not sequentially, in your application, correct? I know sequential measurements should work, but that ranging multiple devices concurrently has not been tested much on our end yet, so the support we can provide there is rather limited.&lt;/p&gt;
&lt;p&gt;What kind of HW issues are you having in mind? If you&amp;#39;d like I can forward this to our developers to see if they have any clues to why this could be. Would it be possible to add a snippet to show how you handle the concurrent ranging on the reflector side on your end, as I imagine you have a way of differentiating the initiators you&amp;#39;re trying to do ranging from.&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>