<?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>ncs 3.3.0: Achieve non-concurrent switching between ESB/BLE</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/128839/ncs-3-3-0-achieve-non-concurrent-switching-between-esb-ble</link><description>Hi: 
 I use ncs3.3.0 and nrf54l15dk. 
 PC BLE pairing nrf54l15dk failed log: 
 
 prj.conf 
 
 But with BT configuration, turning off ESB related content, it can be paired successfully. 
 Then no non ESB and BLE concurrent routines were found in ncs3.3</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 03 Aug 2026 13:07:37 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/128839/ncs-3-3-0-achieve-non-concurrent-switching-between-esb-ble" /><item><title>RE: ncs 3.3.0: Achieve non-concurrent switching between ESB/BLE</title><link>https://devzone.nordicsemi.com/thread/569809?ContentTypeID=1</link><pubDate>Mon, 03 Aug 2026 13:07:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:70c54fb8-8371-4e90-9de3-9ad42d8b53e1</guid><dc:creator>stak</dc:creator><description>&lt;p&gt;&lt;span&gt;ESB Fast Switching on the nRF54L15 isn&amp;#39;t supported yet in the SDK. So,&amp;nbsp;&lt;/span&gt;&lt;span&gt;ESB and BLE cannot run concurrently on the same radio&lt;/span&gt;. ESB requires exclusive use of the radio (&lt;code&gt;NRF_RADIO&lt;/code&gt;), while BLE is managed by the SoftDevice Controller via MPSL.&lt;/p&gt;
&lt;p&gt;The dynamic-interrupt options in your config (&lt;code&gt;CONFIG_ESB_DYNAMIC_INTERRUPTS&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;CONFIG_MPSL_DYNAMIC_INTERRUPTS&lt;/code&gt;, etc.) allow runtime IRQ handover, but they do&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;not&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;enable true simultaneous operation. That is why pairing works when ESB is disabled, and fails when ESB is enabled.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Some configuration notes:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Remove&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;CONFIG_ESB_FAST_SWITCHING&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;CONFIG_ESB_FAST_CHANNEL_SWITCHING&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;— these are for nRF54H20 only, not nRF54L15.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CONFIG_ESB_CLOCK_INIT&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;— not a&amp;nbsp;&lt;span&gt;valid nCS Kconfig option?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Avoid forcing&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;CONFIG_ESB_RADIO_IRQ_PRIORITY=0&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;unless strictly needed; default values are recommended.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to use both ESB and BLE in the same product, the radio must be&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;em&gt;time-sliced&lt;/em&gt; in application code.&amp;nbsp;&lt;/span&gt;You can switch between BLE and ESB by disable/re-init&amp;nbsp;the two:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;bt_disable()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;— this calls&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;mpsl_lib_uninit()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and cleans up MPSL/BLE radio usage&lt;/li&gt;
&lt;li&gt;&lt;code&gt;esb_init()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;— ESB takes over the radio interrupts&lt;/li&gt;
&lt;li&gt;When ESB is finished:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;esb_disable()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;To return to BLE:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;bt_enable()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;— MPSL/BLE reclaim the radio&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;esb_init()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;installs ESB’s radio (and related) interrupt handlers. If MPSL has not been properly cleaned up/uninitialized first, ESB can receive unexpected radio interrupts because both stacks may contend for the same IRQ path.&lt;br /&gt;&lt;br /&gt;Stine&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ncs 3.3.0: Achieve non-concurrent switching between ESB/BLE</title><link>https://devzone.nordicsemi.com/thread/569782?ContentTypeID=1</link><pubDate>Mon, 03 Aug 2026 07:48:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a0c9a56e-db63-4455-92b8-54e3f38091ec</guid><dc:creator>stak</dc:creator><description>&lt;p&gt;Hi John,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;I’m looking into this. I will come back to you asap.&lt;/p&gt;
&lt;p&gt;Stine&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>