<?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>ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/121251/esb-link-in-prx-mode-requires-re-initialization-after-minutes-with-nrf54l15</link><description>We are experiencing some ESB link failures on the receiver end of our system: nrf54L15. After minutes to hours of use the receiver will stop getting data (we know the transmitter is still sending). If we re-initialize esb subsystem everything is back</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 15 May 2025 17:39:33 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/121251/esb-link-in-prx-mode-requires-re-initialization-after-minutes-with-nrf54l15" /><item><title>RE: ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/thread/535662?ContentTypeID=1</link><pubDate>Thu, 15 May 2025 17:39:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:084480c2-f900-4775-88a1-477753a0cbdd</guid><dc:creator>galenchurch</dc:creator><description>&lt;p&gt;Thanks for the results, that is good to hear.&lt;br /&gt;&lt;br /&gt;We have also produced similar results with RevB and Rev1 DKs as you have (issues are not there) though there are also other variations to our custom board but I think we can be optimistic this will be resolved on our next spin and its isolated to RevA.&lt;br /&gt;&lt;br /&gt;We are putting payloads in the ACK, we are not switching roles.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/thread/535656?ContentTypeID=1</link><pubDate>Thu, 15 May 2025 16:04:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2a22fa7c-80e7-46c1-b666-6dc394e72b89</guid><dc:creator>Johnny Nguyen</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve tested overnight on both SDK 2.8.0 and SDK 3.0.0 on rev 1 and rev B devices and the issue did not present itself overnight. This was at maximum communication frequency possible. (This to me rules out a subtle change in the SDK potentially being the culprit and points more at the HW).&lt;/p&gt;
&lt;p&gt;I do not think the slowed down comm frequency, which was one packet every 200 ms on the old chips, is acceptable for an ESB application -- it was slowed down due to invasive debugging in the ESB library to see what the radio state was when it locked up (but it never locked up even in 14+ hours at the slower rate)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Your stop gap seems acceptable until you can get back on the latest devices, but if it winds up giving grief you may need to restart the radio, I am not sure what is problematic on the old device.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Before your next boards are built, could you mock hardware specific functions that are for your board and just validate the ESB side with dummy data on a current DK?&lt;/p&gt;
&lt;p&gt;The only other divergence between our test setups is potentially what you state about sending messages back to the PTX other than acks -- to clarify: are you flipping their roles for this, or putting payloads in the ack?&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/thread/535410?ContentTypeID=1</link><pubDate>Wed, 14 May 2025 18:43:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a5037a85-fc0c-4caf-9e48-64605b7bd72c</guid><dc:creator>galenchurch</dc:creator><description>&lt;p&gt;That&amp;#39;s good to hear you can re-produce. I can speak with the team if reducing the comm frequency is possible.&amp;nbsp; What freq did you find worked well?&amp;nbsp; &lt;br /&gt;&lt;br /&gt;We have RevA on our current custom boards and cannot replace until our next boards are built.&amp;nbsp; It would be great to know if this will be a problem for latest versions (Rev1 or Rev2?)... i appreciate your continued testing.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/thread/535408?ContentTypeID=1</link><pubDate>Wed, 14 May 2025 18:35:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8725a59e-3173-4981-989e-78e298bc19a2</guid><dc:creator>galenchurch</dc:creator><description>&lt;p&gt;1 - we are using CONFIG_SOC_NRF_FORCE_CONSTLAT already &lt;br /&gt;2 - well the PRX is always the PRX but we do send some messages back to the PTX other then ack&amp;#39;s. We are receiving transmissions at 12Hz and replying at 1Hz (from the problematic PRX)&lt;br /&gt;&lt;br /&gt;One of my colleagues looked into migrating to v3.0.0 but was having some issues getting things to run on the EngA silicon (what is on our boards).&amp;nbsp; I went through it and cherry picked things that looked like they might have an effect, specifically: &lt;a id="" href="https://github.com/nrfconnect/sdk-nrf/commit/be1549932bd0200a7d2da4c61e2c7b8132d514d2"&gt;https://github.com/nrfconnect/sdk-nrf/commit/be1549932bd0200a7d2da4c61e2c7b8132d514d2&lt;/a&gt; (didn&amp;#39;t improve anything really).&lt;br /&gt;&lt;br /&gt;Lastly what i did do as a hack to improve things after noticing it was hung at the ack state is add the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static void on_radio_disabled_rx_ack(void)
{
	esb_fem_for_ack_rx();

	if (IS_ENABLED(CONFIG_ESB_FAST_SWITCHING)) {
		nrf_radio_shorts_set(NRF_RADIO, radio_shorts_common);
		nrf_radio_task_trigger(NRF_RADIO, NRF_RADIO_TASK_RXEN);
	} else {
		nrf_radio_shorts_set(NRF_RADIO, (radio_shorts_common |
						 NRF_RADIO_SHORT_DISABLED_TXEN_MASK));
	}

	update_rf_payload_format(esb_cfg.payload_length);

	nrf_radio_packetptr_set(NRF_RADIO, rx_payload_buffer);
	on_radio_disabled = on_radio_disabled_rx;

	esb_state = ESB_STATE_PRX;

#if defined(CONFIG_ESB_USE_PRX_ACK_TIMEOUT)

#if IS_EMPTY(CONFIG_ESB_PRX_ACK_TIMEOUT_US)
#error &amp;quot;No ESB_PRX_ACK_TIMEOUT_US provided but ESB_USE_PRX_ACK_TIMEOUT enabled&amp;quot;
#endif

	/* Configure timer to produce an ISR after retransmit_delay */
	nrf_timer_task_trigger(esb_timer.p_reg, NRF_TIMER_TASK_CLEAR);
	nrfx_timer_clear(&amp;amp;esb_timer);
	nrfx_timer_compare(&amp;amp;esb_timer, NRF_TIMER_CC_CHANNEL1,
		CONFIG_ESB_PRX_ACK_TIMEOUT_US, true);

	/* Configure PPI to start the timer when transmission ends */
	esb_ppi_for_wait_for_rx_set();

	nrf_timer_event_clear(esb_timer.p_reg, NRF_TIMER_EVENT_COMPARE1);

	on_timer_compare1 = on_timeout;

#endif

}

#if defined(CONFIG_ESB_USE_PRX_ACK_TIMEOUT)
static void on_timeout(){
	LOG_ERR(&amp;quot;Timeout function called on_timeout&amp;quot;);
	nrf_timer_int_disable(esb_timer.p_reg,  nrf_timer_compare_int_get(NRF_TIMER_CC_CHANNEL1));
	esb_ppi_for_wait_for_rx_clear();

	clear_events_restart_rx();
	LOG_ERR(&amp;quot;Timeout function called on_timeout return&amp;quot;);
}
#endif&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;For the most part this seems to be working to add a timeout to that state that will clear the events and restart rx via `clear_events_restart_rx()`.&amp;nbsp; If you had any advice on any unforeseen implications that might occur here that would be very helpful. Additionally I&amp;#39;m not sure if there are other states the system will hang id need to add something like this too, but ill cross that bridge when i get there.&amp;nbsp; Otherwise for now this seems like a good stopgap until we can migrate to v3.0.0 and Rev1/2 on our next spin of boards.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/thread/535406?ContentTypeID=1</link><pubDate>Wed, 14 May 2025 18:23:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:52bc0dff-02ee-4497-aa1e-df8d8d7a98a7</guid><dc:creator>Johnny Nguyen</dc:creator><description>&lt;p&gt;an update:&lt;br /&gt;after leaving it running for hours on revB and NCS 2.8.0, I was seeing the PRX stuck lockup requiring a reset. I slowed down the ESB communication frequency and it did not lock up during extended time testing.&lt;/p&gt;
&lt;p&gt;As an extra datapoint, I tested latest 54L15 on NCS 3.0.0 and was not able to replicate the failure, even at maximum transmission rate. I am still leaving this test running to see if it comes up.&lt;/p&gt;
&lt;p&gt;Any reason you are locked on v2.8.0 and revA chips?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/thread/535214?ContentTypeID=1</link><pubDate>Wed, 14 May 2025 00:09:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:23b1fec5-2e2c-48d0-bb7b-48688e5efba6</guid><dc:creator>Johnny Nguyen</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Thanks for letting me know.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1- Out of curiosity, if you use &lt;a href="https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/chapters/power.html#ariaid-title3"&gt;TASKS_CONSTLAT&lt;/a&gt;, does the failure still present itself? You should be using CONSTLAT when the radio is enabled regardless. &lt;em&gt;(You can use the accompanying &lt;a href="https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/chapters/power.html#ariaid-title4"&gt;TASKS_LOWPOWER &lt;/a&gt;when you are through with it, but for exploring the failure case let&amp;#39;s keep it enabled.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;2- Is the PRX always a PRX?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Amanda touched on some useful debugging tools and info, you can also use PPI to observe the radio activity on IO pin toggles.&lt;/p&gt;
&lt;p&gt;(Some examples:&amp;nbsp;&lt;a href="https://github.com/droidecahedron/esb_multi/issues/5"&gt;Add alternative to radio library ppi pair for something more flexible. · Issue #5 · droidecahedron/esb_multi&lt;/a&gt;,&amp;nbsp;&lt;a href="https://github.com/droidecahedron/esb_multi/blob/68694693cb49272320ade3253a0546d0029f6535/esb_prx_blefallback/src/main.c#L23-L49"&gt;https://github.com/droidecahedron/esb_multi/blob/68694693cb49272320ade3253a0546d0029f6535/esb_prx_blefallback/src/main.c#L23-L49&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;but it would mostly just show you when the radio is active/inactive so you could see missed packets and connection events.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And for more information around ESB, I find the following insightful:&lt;/p&gt;
&lt;p&gt;Old nRF24 user guide:&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/bundle/nRF24LE1_PS_v1.6/resource/nRF24LE1_PS_v1.6.pdf"&gt;nRF24LE1 Product Specification v1.6&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Blog by my colleague:&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/nordic/nordic-blog/b/blog/posts/intro-to-shockburstenhanced-shockburst"&gt;(+) Intro to ShockBurst/Enhanced ShockBurst - Blogs - Nordic Blog - Nordic DevZone&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Said colleague&amp;#39;s FOSS example project:&amp;nbsp;&lt;a href="https://github.com/inductivekickback/rc_radio"&gt;inductivekickback/rc_radio: Remote Control Radio library for nRF52 using Enhanced ShockBurst&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Please let me know what you find as you collect more logs around the failure case.&lt;/p&gt;
&lt;p&gt;I am working on replicating it on my end -- but am unable to do so reliably. Is the only thing that causes this lock up just a long period of receiving packets?&lt;/p&gt;
&lt;p&gt;&lt;span&gt;As an extra datapoint, could you try current 54L15DKs and NCS v3.0.0 stock PRX/PTX operation and see if the failure persists there as well?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/thread/535191?ContentTypeID=1</link><pubDate>Tue, 13 May 2025 18:18:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9eb99935-d7ec-4e8d-a947-bf73982a0bea</guid><dc:creator>galenchurch</dc:creator><description>&lt;p&gt;For the PRX I am using NCS v2.8.0 for our custom board with nRF54L15 EngA &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/thread/535182?ContentTypeID=1</link><pubDate>Tue, 13 May 2025 16:20:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4cf34838-a63c-47b2-b6a8-4ff04e39ee4d</guid><dc:creator>Amanda Hsieh</dc:creator><description>&lt;p&gt;&lt;span&gt;What NCS version are you using?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/thread/534952?ContentTypeID=1</link><pubDate>Mon, 12 May 2025 17:11:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4c24a4f9-ba7a-4188-ab51-f5022fa90372</guid><dc:creator>galenchurch</dc:creator><description>&lt;p&gt;Hi &lt;a href="https://devzone.nordicsemi.com/members/amanda"&gt;Amanda Hsieh&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I have added more logging and I can see when the PRX side hangs after what i assume is sending an ack payload via `esb.c::on_radio_disabled_rx_ack()`.&amp;nbsp; I know that function returns and normally we would get another event on `esb_radio_direct_irq_handler` to handle normal reception, but none occurs.&amp;nbsp; There is no event triggering that ISR to be called again and therefor `esb.c::radio_irq_handler()` is never called.&amp;nbsp; What could cause the system to be hung in this state?&lt;br /&gt;&lt;br /&gt;Just to reiterate, if we reset the PRX everything returns to normal, i.e. no change to the PTX device is required to return to normal and we know the PTX is still transmitting.&lt;br /&gt;&lt;br /&gt;Thank,&lt;/p&gt;
&lt;p&gt;Galen&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/thread/534475?ContentTypeID=1</link><pubDate>Thu, 08 May 2025 13:09:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7a64f73c-0872-4887-857a-bedebb659d1f</guid><dc:creator>galenchurch</dc:creator><description>&lt;p&gt;Hi&lt;a href="https://devzone.nordicsemi.com/members/amanda"&gt;Amanda Hsieh&lt;/a&gt; , thanks for this initial info.&amp;nbsp; I will add in some additional logging around the radio and let you know when i have some better information/results from that.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/thread/534474?ContentTypeID=1</link><pubDate>Thu, 08 May 2025 13:03:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:585eeb4b-903d-453c-8101-804747030372</guid><dc:creator>Amanda Hsieh</dc:creator><description>&lt;p&gt;Hi,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There is no other documentation than: &lt;a title="https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/protocols/esb/index.html" href="https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/protocols/esb/index.html" rel="noopener noreferrer" target="_blank"&gt;https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/protocols/esb/index.html&lt;/a&gt; and &lt;a title="https://docs.nordicsemi.com/bundle/nrf-apis-latest/page/group_esb.html" href="https://docs.nordicsemi.com/bundle/nrf-apis-latest/page/group_esb.html" rel="noopener noreferrer" target="_blank"&gt;https://docs.nordicsemi.com/bundle/nrf-apis-latest/page/group_esb.html&lt;/a&gt;, unfortunately.&lt;/p&gt;
&lt;p&gt;A way to see more of what&amp;#39;s happening would be to use logging. The ESB subsystem only logs a few error messages, but you can add debug logs to see where the execution gets stuck.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Regarding the register that can be checked - ESB is not a driver nor a HW subsystem - it is a protocol implementation, so there is no dedicated register for ESB. However, you can check some radio registers to understand the issue better: e.g. State register: &lt;a title="https://docs.nordicsemi.com/bundle/ps_nrf54l15/page/radio.html#ariaid-title102" href="https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/radio.html#ariaid-title102" rel="noopener noreferrer" target="_blank"&gt;https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/radio.html#ariaid-title102&lt;/a&gt; or event registers.&lt;/p&gt;
&lt;p&gt;Please provide the &lt;span&gt;guidance or shared snippets of application code to help us reproduce the issue.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;-Amanda H.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ESB link in PRX mode requires re-initialization after minutes with nRF54L15</title><link>https://devzone.nordicsemi.com/thread/534354?ContentTypeID=1</link><pubDate>Wed, 07 May 2025 19:32:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a2049715-3b44-44ac-ae32-4995a7b3e92d</guid><dc:creator>Amanda Hsieh</dc:creator><description>&lt;p&gt;Hi,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I am checking with the team and will update the case when I collect enough information.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Amanda H.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>