<?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 Timing Variation While Streaming Live Microphone Data</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/127406/ble-timing-variation-while-streaming-live-microphone-data</link><description>Hi nordic, 
 I am streaming live microphone PCM data over BLE. The microphone data is continuously captured and stored in a buffer. Whenever 12 KB of audio data is available, I send that data over BLE to the connected device. 
 However, I am observing</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 24 Mar 2026 13:15:55 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/127406/ble-timing-variation-while-streaming-live-microphone-data" /><item><title>RE: BLE Timing Variation While Streaming Live Microphone Data</title><link>https://devzone.nordicsemi.com/thread/563952?ContentTypeID=1</link><pubDate>Tue, 24 Mar 2026 13:15:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ad34da34-e6c7-4c98-aba8-cd17014f7d4e</guid><dc:creator>Sigurd</dc:creator><description>&lt;p&gt;Hi!&lt;br /&gt;In your application directory, create this file:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;your_app/
├── prj.conf
├── sysbuild.conf              ← (optional, for sysbuild-level config)
└── sysbuild/
    └── ipc_radio.conf         ← Network core overlay&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;sysbuild/ipc_radio.conf contents:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;CONFIG_BT_BUF_ACL_TX_SIZE=251
CONFIG_BT_BUF_ACL_RX_SIZE=251
CONFIG_BT_CTLR_DATA_LENGTH_MAX=251&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Verify Your App Core prj.conf&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;# DLE &amp;amp; Buffers
CONFIG_BT_BUF_ACL_TX_SIZE=251
CONFIG_BT_BUF_ACL_RX_SIZE=251
CONFIG_BT_USER_DATA_LEN_UPDATE=y

# PHY
CONFIG_BT_CTLR_PHY_2M=y

# Throughput tuning
CONFIG_BT_BUF_ACL_TX_COUNT=20
CONFIG_BT_L2CAP_TX_MTU=247
CONFIG_BT_ATT_TX_COUNT=20

# Connection parameters
CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=n&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Do a clean build,&amp;nbsp;after&amp;nbsp;&lt;span&gt;building, check the network core&amp;#39;s generated config is correctly set.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;in build/ipc_radio/zephyr/.config&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Search for:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;CONFIG_BT_CTLR_DATA_LENGTH=y          ← must be &amp;#39;y&amp;#39;
CONFIG_BT_CTLR_DATA_LENGTH_MAX=251    ← must be 251
CONFIG_BT_BUF_ACL_TX_SIZE=251&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If CONFIG_BT_CTLR_DATA_LENGTH_MAX=27 or CONFIG_BT_CTLR_DATA_LENGTH is not set, the overlay isn&amp;#39;t being picked up.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE Timing Variation While Streaming Live Microphone Data</title><link>https://devzone.nordicsemi.com/thread/563855?ContentTypeID=1</link><pubDate>Mon, 23 Mar 2026 12:11:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ec97d9a4-6e92-4874-be3e-1b360d56d575</guid><dc:creator>G vandana</dc:creator><description>&lt;p&gt;Hi sigurd&lt;br /&gt;&lt;span&gt;Description:&lt;br /&gt;I am developing a high-throughput application on the nRF5340 (custom board/DK) aiming for 250&amp;ndash;400 kbps. &lt;br /&gt;While MTU and PHY updates are successful, the Data Length Extension (DLE) update consistently fails, bottlenecking the throughput.&lt;br /&gt;&lt;br /&gt;Environment:&lt;br /&gt;&lt;br /&gt;SoC: nRF5340&lt;br /&gt;&lt;br /&gt;SDK: nRF Connect SDK (v3.1.0)&lt;br /&gt;&lt;br /&gt;Peer Device: Samsung A54 (Android 14)&lt;br /&gt;&lt;br /&gt;Current Status &amp;amp; Test Logs:&lt;br /&gt;&lt;br /&gt;MTU Negotiation: Success (MTU 247 / Payload 244).&lt;br /&gt;&lt;br /&gt;PHY Negotiation: Success (2M PHY enabled).&lt;br /&gt;&lt;br /&gt;DLE Negotiation: Fails. Calling bt_conn_le_data_len_update returns Error -5 (EIO).&lt;br /&gt;&lt;br /&gt;Observed Timings:&lt;br /&gt;&lt;br /&gt;Data Size: 32,000 bytes&lt;br /&gt;&lt;br /&gt;Total Time: 5,587 ms&lt;br /&gt;&lt;br /&gt;Effective Throughput: ~45 kbps&lt;br /&gt;&lt;br /&gt;Analysis: The 45 kbps speed at a 7.5ms interval suggests the link is falling back to 27-byte fragments because DLE is not active.&lt;br /&gt;&lt;br /&gt;Code Implementation:&lt;br /&gt;I am using an asynchronous queuing model with bt_gatt_notify_cb and a TX callback to manage in_flight packets. &lt;br /&gt;The in_flight count stays at my limit (55), proving the stack is saturated, but it is processing tiny packets.&lt;br /&gt;&lt;br /&gt;Configuration (prj.conf):&lt;br /&gt;&lt;br /&gt;Makefile&lt;br /&gt;CONFIG_BT_CTLR_DATA_LENGTH_MAX=251&lt;br /&gt;CONFIG_BT_BUF_ACL_TX_SIZE=251&lt;br /&gt;CONFIG_BT_BUF_ACL_RX_SIZE=251&lt;br /&gt;CONFIG_BT_USER_DATA_LEN_UPDATE=y&lt;br /&gt;CONFIG_BT_CTLR_PHY_2M=y&lt;br /&gt;CONFIG_BT_BUF_ACL_TX_COUNT=80&lt;br /&gt;Attempted Fixes:&lt;br /&gt;&lt;br /&gt;Created child_image/hci_rpmsg.conf with matching DLE/ACL buffer sizes to ensure the Network Core is configured.&lt;br /&gt;&lt;br /&gt;Performed &amp;quot;Pristine Builds&amp;quot; to ensure the Controller child-image is rebuilt.&lt;br /&gt;&lt;br /&gt;Verified with nRF Connect Mobile; the phone supports DLE, but the nRF5340 returns Error -5 locally.&lt;br /&gt;&lt;br /&gt;Question:&lt;br /&gt;Why would the nRF5340 Controller return -EIO (-5) when the App Core requests BT_LE_DATA_LEN_PARAM_MAX, &lt;br /&gt;even though the ACL_TX_SIZE and DATA_LENGTH_MAX are set to 251 in both the App and Net core configurations? &lt;br /&gt;How can I verify if the Network Core is actually accepting these memory allocations?&lt;br /&gt;How to achieve max throughput of 250kbps?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE Timing Variation While Streaming Live Microphone Data</title><link>https://devzone.nordicsemi.com/thread/563549?ContentTypeID=1</link><pubDate>Wed, 18 Mar 2026 11:36:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8a16a4e5-c58b-432f-8b3d-27b2ca7386ef</guid><dc:creator>Sigurd</dc:creator><description>&lt;p&gt;For sending large amount of data, I recommend having a look at how the&amp;nbsp;throughput sample is configured. That sample show-cases&amp;nbsp;&lt;span&gt;maximum&amp;nbsp;&lt;/span&gt;&lt;span&gt;throughput performance&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/nrfconnect/sdk-nrf/blob/v3.2.0/samples/bluetooth/throughput/sysbuild/ipc_radio/prj.conf"&gt;https://github.com/nrfconnect/sdk-nrf/blob/v3.2.0/samples/bluetooth/throughput/sysbuild/ipc_radio/prj.conf&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE Timing Variation While Streaming Live Microphone Data</title><link>https://devzone.nordicsemi.com/thread/563434?ContentTypeID=1</link><pubDate>Tue, 17 Mar 2026 11:53:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:39d92a0b-b60b-43e8-9a76-15a81da72eac</guid><dc:creator>G vandana</dc:creator><description>&lt;p&gt;&amp;ldquo;Can you help me configure BLE to send the maximum number of packets within a connection interval? I have set the connection interval to 15 ms, and I want to minimize the time required to transmit a large amount of data (12 KB)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE Timing Variation While Streaming Live Microphone Data</title><link>https://devzone.nordicsemi.com/thread/563135?ContentTypeID=1</link><pubDate>Thu, 12 Mar 2026 13:50:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2265bc84-a1a3-4ef9-bf1a-ff0876b4c1af</guid><dc:creator>Sigurd</dc:creator><description>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;bt_gatt_notify does not transmit data immediately. It only queues data into the BLE stack&amp;#39;s TX buffer, and then it&amp;#39;s sent in the next BLE connect event (if there is nothing else already queued up). So the time here will vary between when you call&amp;nbsp;&lt;span&gt;bt_gatt_notify() in relation to when the next BLE connect event is.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>