<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://test-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 UART data loss at speed</title><link>https://test-devzone.nordicsemi.com/f/nordic-q-a/88219/ble-uart-data-loss-at-speed</link><description>Hi, 
 We have an application based on BLE_UART TXing sensor data. 
 Most of our sensors are read through PPI with minimal code interaction (except for packet counters etc.) 
 It&amp;#39;s running on our own hardware using the 52833 and S140 SD. 
 It&amp;#39;s sending</description><dc:language>en-US</dc:language><generator>Telligent Community 13 Non-Production</generator><lastBuildDate>Wed, 01 Jun 2022 11:21:09 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://test-devzone.nordicsemi.com/f/nordic-q-a/88219/ble-uart-data-loss-at-speed" /><item><title>RE: BLE UART data loss at speed</title><link>https://test-devzone.nordicsemi.com/thread/370417?ContentTypeID=1</link><pubDate>Wed, 01 Jun 2022 11:21:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:66bbf3f2-cfda-44c8-8171-f16b42293001</guid><dc:creator>user2111</dc:creator><description>&lt;p&gt;There is a nice tutorial here on how to improve throughput:&lt;br /&gt;&lt;a href="https://www.novelbits.io/bluetooth-5-speed-maximum-throughput/"&gt;https://www.novelbits.io/bluetooth-5-speed-maximum-throughput/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Longer range typically means using coded phy instead of 2Mbps, since coded phy have better sensitivity, but drawback is use 8times longer on-air (=higher risk for interference, higher power consumpion and lower throughput). Using higher output power can also increase range.&lt;/p&gt;
&lt;p&gt;You can call&amp;nbsp;&lt;span&gt;ble_nus_data_send() from anywhere below interrupt priorty 4:&lt;br /&gt;&lt;a href="https://infocenter.nordicsemi.com/topic/sds_s132/SDS/s1xx/processor_avail_interrupt_latency/exception_mgmt_sd.html"&gt;https://infocenter.nordicsemi.com/topic/sds_s132/SDS/s1xx/processor_avail_interrupt_latency/exception_mgmt_sd.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The important is that you call it sufficiently often that it&amp;#39;s called between BLE connection intervals. How you implement this is entirely up to you.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Kenneth&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE UART data loss at speed</title><link>https://test-devzone.nordicsemi.com/thread/369937?ContentTypeID=1</link><pubDate>Mon, 30 May 2022 10:17:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3eb46792-d622-4bec-a12a-c88688436310</guid><dc:creator>user4482</dc:creator><description>&lt;p&gt;Hi Kenneth,&lt;/p&gt;
&lt;p&gt;I guess the more data bit is not being set because we only have 120 Kbit/s even at 4ms, thats 6% of the max 2 Mbit/s capacity.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We added a (32 for now) deep buffer and it seems to work at 4ms without error.&lt;/p&gt;
&lt;p&gt;Our strategy is to sent the data every 4ms, if&amp;nbsp;we get&amp;nbsp;&lt;span&gt;NRF_ERROR_RESOURCES&amp;nbsp;we wait till we get&amp;nbsp;BLE_GATTS_EVT_HVN_TX_COMPLETE.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Depending on the length of the error/s our buffer will fill up in the background.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;So once&amp;nbsp;BLE_GATTS_EVT_HVN_TX_COMPLETE clears we will start sending packets in quick&amp;nbsp; succession (as you suggested) till our buffer is empty.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Only if our buffer is blown will we lose data.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Below is our code (with some debug) our sdk_config.h is attached. Could you sanity check it?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Two questions....&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1. How do we set BLE to longer distance/lower speed?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2. Is there a better way to call ble_nus_data_send() rather than a look in main()?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thanks&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;void nus_data_send(uint8_t * message, uint16_t length)&lt;br /&gt;{&lt;br /&gt; static uint32_t err_code;&lt;br /&gt; // If the message is too long set it to max&lt;br /&gt; if ( length &amp;gt; BLE_NUS_MAX_DATA_LEN )&lt;br /&gt; {&lt;br /&gt; length = BLE_NUS_MAX_DATA_LEN;&lt;br /&gt; } &lt;br /&gt;b_ready_to_tx = false;&lt;br /&gt; err_code = ble_nus_data_send(&amp;amp;m_nus, (uint8_t *)message, &amp;amp;length, m_conn_handle);&lt;/p&gt;
&lt;p&gt;if ( err_code == NRF_ERROR_INVALID_STATE )&lt;br /&gt; {&lt;br /&gt; err_invalid_state_count++;&lt;br /&gt; }&lt;br /&gt; else if ( err_code == NRF_ERROR_RESOURCES )&lt;br /&gt; {&lt;br /&gt; err_resources_count++;&lt;br /&gt; debug_tx [debug_tx_ctr][0] = packet_ctr;&lt;br /&gt; debug_tx [debug_tx_ctr][1] = buffer_read_idx;&lt;br /&gt; debug_tx [debug_tx_ctr][2] = buffer_write_idx;&lt;br /&gt; &lt;br /&gt; if( debug_tx_ctr &amp;lt; 1000 )&lt;br /&gt; {&lt;br /&gt; debug_tx_ctr++;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; while( ! b_ready_to_tx )&lt;br /&gt; {&lt;br /&gt; }&lt;br /&gt; err_code = ble_nus_data_send(&amp;amp;m_nus, (uint8_t *)message, &amp;amp;length, m_conn_handle);&lt;br /&gt; }&lt;br /&gt; else if ( err_code == NRF_ERROR_NOT_FOUND )&lt;br /&gt; {&lt;br /&gt; err_not_found_count++;&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="https://test-devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/0285.sdk_5F00_config.h"&gt;test-devzone.nordicsemi.com/.../0285.sdk_5F00_config.h&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE UART data loss at speed</title><link>https://test-devzone.nordicsemi.com/thread/369934?ContentTypeID=1</link><pubDate>Mon, 30 May 2022 09:51:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6e746d63-096a-4b5b-b482-e9399621398f</guid><dc:creator>user2111</dc:creator><description>&lt;p&gt;I can see from the log that the More Data bit is not set as frequently as I would expect it to be set, the More Data bit should be set if the peripheral have more data to be sent. If it&amp;#39;s not set this indicate to the central that there is no more data to be fetched.&lt;/p&gt;
&lt;p&gt;The problem based on this I believe is that you are not calling&amp;nbsp;&lt;span&gt;ble_nus_data_send() as frequently as you should be able to, you can call&amp;nbsp;ble_nus_data_send() several times until&amp;nbsp;NRF_ERROR_RESOURCES, in which case you can wait for&amp;nbsp;BLE_GATTS_EVT_HVN_TX_COMPLETE&amp;nbsp;event (as you do) and then you can call&amp;nbsp;ble_nus_data_send() several times&amp;nbsp;again. Alternatively instead (and possibly the easiest) may just be to call&amp;nbsp;ble_nus_data_send() several times from a 10ms app_timer timeout handler, and call it until&amp;nbsp;NRF_ERROR_RESOURCES, in which case you try again in 10ms. As long as the app_timer timeout handle is shorter than the connection interval that should work well and keep the softdevice buffer full.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If changing the implementation as suggested above doesn&amp;#39;t help, can you share your sdk_config.h file?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Edit, you can find these two links useful in general (though I think the biggest&amp;nbsp;problem at the moment is that the More Data bit is not set as expected):&lt;br /&gt;&lt;a href="https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf"&gt;https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;a href="https://www.novelbits.io/bluetooth-5-speed-maximum-throughput/"&gt;https://www.novelbits.io/bluetooth-5-speed-maximum-throughput/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Best regards,&lt;br /&gt;Kenneth&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE UART data loss at speed</title><link>https://test-devzone.nordicsemi.com/thread/369621?ContentTypeID=1</link><pubDate>Wed, 25 May 2022 20:51:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1d260c29-4f6d-48f9-a6f0-92a4161e1630</guid><dc:creator>user4482</dc:creator><description>&lt;p&gt;Hi Kenneth,&lt;/p&gt;
&lt;p&gt;Below is our updated code.&lt;/p&gt;
&lt;p&gt;If the API returns&amp;nbsp;&lt;span&gt;NRF_ERROR_RESOURCES i&lt;/span&gt;t simply waits for&amp;nbsp;&lt;span&gt;BLE_GATTS_EVT_HVN_TX_COMPLETE in the form of a flag&amp;nbsp;b_ready_to_tx to set and just re-sends the message. The packet data is created in another thread so could be modified by the time it is re-sent, but w&lt;/span&gt;&lt;span&gt;e will implement a buffer to ensure no data is lost, if needed.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;We did tests at 16, 20 and 24ms.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The packet loss seen in each test are as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;56 Packets Lost when IMU_READ_RATE =&amp;nbsp;24ms&lt;/li&gt;
&lt;li&gt;1264 Packets Lost when IMU_READ_RATE =&amp;nbsp;20ms&lt;/li&gt;
&lt;li&gt;5204 Packets Lost when IMU_READ_RATE =&amp;nbsp;16ms&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Attached are the wire shark sniffs for each, can you please have a look and let me know what we can do to improve?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Some questions:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1. Can we increase the SD buffer?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2. How can we change the connection interval?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thanks&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;BTW for this data here are our connection inteval settings:&lt;/p&gt;
&lt;p&gt;#define MIN_CONN_INTERVAL MSEC_TO_UNITS(20, UNIT_1_25_MS) /**&amp;lt; Minimum acceptable connection interval (20 ms), Connection interval uses 1.25 ms units. */&lt;/p&gt;
&lt;p&gt;#define MAX_CONN_INTERVAL MSEC_TO_UNITS(75, UNIT_1_25_MS) /**&amp;lt; Maximum acceptable connection interval (75 ms), Connection interval uses 1.25 ms units. */&lt;/p&gt;
&lt;p&gt;Are this limited by the iPad?&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://test-devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/IMU_5F00_READ_5F00_RATE_5F00_20ms.pcapng"&gt;test-devzone.nordicsemi.com/.../IMU_5F00_READ_5F00_RATE_5F00_20ms.pcapng&lt;/a&gt;&lt;a href="https://test-devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/IMU_5F00_READ_5F00_RATE_5F00_24ms.pcapng"&gt;test-devzone.nordicsemi.com/.../IMU_5F00_READ_5F00_RATE_5F00_24ms.pcapng&lt;/a&gt;&lt;a href="https://test-devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/IMU_5F00_READ_5F00_RATE_5F00_16ms.pcapng"&gt;test-devzone.nordicsemi.com/.../IMU_5F00_READ_5F00_RATE_5F00_16ms.pcapng&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;void nus_data_send(uint8_t * message, uint16_t length)&lt;br /&gt;{&lt;br /&gt; static uint32_t err_code;&lt;br /&gt; // If the message is too long set it to max&lt;br /&gt; if ( length &amp;gt; BLE_NUS_MAX_DATA_LEN )&lt;br /&gt; {&lt;br /&gt; length = BLE_NUS_MAX_DATA_LEN;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; b_ready_to_tx = false;&lt;br /&gt; err_code = ble_nus_data_send(&amp;amp;m_nus, (uint8_t *)message, &amp;amp;length, m_conn_handle);&lt;/p&gt;
&lt;p&gt;if ( err_code == NRF_ERROR_INVALID_STATE )&lt;br /&gt; {&lt;br /&gt; err_invalid_state_count++;&lt;br /&gt; }&lt;br /&gt; else if ( err_code == NRF_ERROR_RESOURCES )&lt;br /&gt; {&lt;br /&gt; err_resources_count++;&lt;/p&gt;
&lt;p&gt;while( ! b_ready_to_tx )&lt;br /&gt; {&lt;br /&gt; }&lt;br /&gt; err_code = ble_nus_data_send(&amp;amp;m_nus, (uint8_t *)message, &amp;amp;length, m_conn_handle);&lt;br /&gt; }&lt;br /&gt; else if ( err_code == NRF_ERROR_NOT_FOUND )&lt;br /&gt; {&lt;br /&gt; err_not_found_count++;&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;br /&gt; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE UART data loss at speed</title><link>https://test-devzone.nordicsemi.com/thread/369570?ContentTypeID=1</link><pubDate>Wed, 25 May 2022 14:10:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b2181712-cd68-4cd9-a77b-673d2c6b422b</guid><dc:creator>user2111</dc:creator><description>[quote user="Ian Mellor"]If you send a packet ( call: ble_nus_data_send() ) and it returns&amp;nbsp;&lt;span&gt;NRF_ERROR_RESOURCES does that mean that that packet has been accepted&lt;/span&gt;[/quote]
&lt;p&gt;No, that is the whole point of the return error, to tell the application that the packet was not buffered. If you want me to look at your throughput, then please provide an on-air sniffer log (e.g. using nrf sniffer for ble).&lt;/p&gt;
&lt;p&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE UART data loss at speed</title><link>https://test-devzone.nordicsemi.com/thread/369567?ContentTypeID=1</link><pubDate>Wed, 25 May 2022 13:58:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5582d535-a310-4733-bedc-26680013a48d</guid><dc:creator>user4482</dc:creator><description>&lt;p&gt;Hi Kenneth,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;If you send a packet ( call: ble_nus_data_send() ) and it returns&amp;nbsp;&lt;span&gt;NRF_ERROR_RESOURCES does that mean that that packet has been accepted and will be sent. i.e. does it indicate packet accepted send no more?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Can the BLE SD buffer be increased?&lt;/p&gt;
&lt;p&gt;If we need our own FIFO buffer is there a library for that (or do we just write our own)?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;How do we change the connection interval?&lt;/p&gt;
&lt;p&gt;BTW we are sending 232 bytes per packet so it&amp;#39;s reasonably efficient.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Ian&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE UART data loss at speed</title><link>https://test-devzone.nordicsemi.com/thread/369562?ContentTypeID=1</link><pubDate>Wed, 25 May 2022 13:44:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8f784d7f-c089-4013-ab57-1584afdfd953</guid><dc:creator>user2111</dc:creator><description>&lt;p&gt;The NRF_ERROR_RESOURCES simply means that the softdevice buffer is full, and the application should wait for BLE_GATTS_EVT_HVN_TX_COMPLETE event before trying again. So I suggest to change your code a bit, either ignore NRF_ERROR_RESOURCES (which means packet will be lost) or the application need to buffer the packet on NRF_ERROR_RESOURCES event, and try again on BLE_GATTS_EVT_HVN_TX_COMPLETE event. You may also consider changing the connection interval (make it shorter) to allow more throughput in general. I am not sure how large packets you are sending for every notification, but typically combining more data into each notification is a good idea to increase throughput.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE UART data loss at speed</title><link>https://test-devzone.nordicsemi.com/thread/369361?ContentTypeID=1</link><pubDate>Tue, 24 May 2022 16:33:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:41b2c62d-278a-40ec-ae4e-b5b42c58fbce</guid><dc:creator>user4482</dc:creator><description>&lt;p&gt;Hi Kenneth,&lt;/p&gt;
&lt;p&gt;Just to clarify we are not using the UART we just adapted the example code.&lt;/p&gt;
&lt;p&gt;Data is simply sent from and received by the application.&lt;/p&gt;
&lt;p&gt;Most of the data is sent as a stream of packets from the IMU plus other peripherals (using PPI).&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Below is our TX code with some debug error counters.&lt;/p&gt;
&lt;p&gt;The only error we are getting is:&amp;nbsp;NRF_ERROR_RESOURCES&lt;/p&gt;
&lt;p&gt;At 140 PDUs/s we are loosing about 8 packets per minute.&lt;/p&gt;
&lt;p&gt;At 250 PDUs/s we are loosing about 800 packets per minute.&lt;/p&gt;
&lt;p&gt;What does &lt;span&gt;NRF_ERROR_RESOURCES mean and what&amp;nbsp;&lt;/span&gt;can we do to fix this problem?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Also if we add the (commented out) do - while loop we get re-transmissions of PDUs, w&lt;span&gt;hy would this be?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;void nus_data_send(uint8_t * message, uint16_t length)&lt;br /&gt;{&lt;br /&gt; static uint32_t err_code;&lt;br /&gt; // If the message is too long set it to max&lt;br /&gt; if ( length &amp;gt; BLE_NUS_MAX_DATA_LEN )&lt;br /&gt; {&lt;br /&gt; length = BLE_NUS_MAX_DATA_LEN;&lt;br /&gt; } &lt;br /&gt; &lt;br /&gt;// do&lt;br /&gt;// {&lt;br /&gt; err_code = ble_nus_data_send(&amp;amp;m_nus, (uint8_t *)message, &amp;amp;length, m_conn_handle);&lt;/p&gt;
&lt;p&gt;if ( err_code == NRF_ERROR_INVALID_STATE )&lt;br /&gt; {&lt;br /&gt; err_invalid_state_count++;&lt;br /&gt; }&lt;br /&gt; else if ( err_code == NRF_ERROR_RESOURCES )&lt;br /&gt; {&lt;br /&gt; err_resources_count++;&lt;br /&gt; }&lt;br /&gt; else if ( err_code == NRF_ERROR_NOT_FOUND )&lt;br /&gt; {&lt;br /&gt; err_not_found_count++;&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;// } while (err_code == NRF_ERROR_RESOURCES);&lt;br /&gt; &lt;br /&gt;}&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BLE UART data loss at speed</title><link>https://test-devzone.nordicsemi.com/thread/369317?ContentTypeID=1</link><pubDate>Tue, 24 May 2022 14:05:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:de30ce33-04ab-40b6-983c-f491e8757ac1</guid><dc:creator>user2111</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;This is kind of classic development problem, meaning that something works until it doesn&amp;#39;t work. So you need to try to narrow it down a bit, data should not be lost or corrupted by itself, so you need to look into whether any of the api call return an error code, and possible also look into adding additional buffers in both transmit and receive to handle the potential &amp;quot;overlap&amp;quot; due the increased throughput between BLE and UART occuring at the same time.&lt;/p&gt;
&lt;p&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>