<?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>Throughput with nRF UART example</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/1784/throughput-with-nrf-uart-example</link><description>Hi, 
 I have set up the UART example with PCA10000 and PCA10001. Everything works fine but one strange thing is the time to send 100kB of data. See my times below: 
 38 seconds
57 seconds
57 seconds
58 seconds 
 Then I made a reset of the PCA10001</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 06 Mar 2014 09:49:44 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/1784/throughput-with-nrf-uart-example" /><item><title>RE: Throughput with nRF UART example</title><link>https://devzone.nordicsemi.com/thread/7811?ContentTypeID=1</link><pubDate>Thu, 06 Mar 2014 09:49:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5e27b792-f1f9-4f7c-bd99-c91874e184e3</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;There could possibly be instances in which two packets are transmitted, but on average, you shouldn&amp;#39;t see more than one packet per interval. When I test it here, I see numbers pretty close to the expected 37 s. You can use our sniffer to see what actually happens on-air, if you have an additional USB dongle: &lt;a target="_blank" href="https://www.nordicsemi.com/eng/content/download/39099/660783/file/ble-sniffer_win_0.9.5.zip" rel="nofollow"&gt;https://www.nordicsemi.com/eng/content/download/39099/660783/file/ble-sniffer_win_0.9.5.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, I would strongly recommend you to make sure to do all performance tests with a device that is actually the one that will be used for your end application, since MEFW isn&amp;#39;t really meant to be a production quality solution.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Throughput with nRF UART example</title><link>https://devzone.nordicsemi.com/thread/7810?ContentTypeID=1</link><pubDate>Wed, 05 Mar 2014 13:35:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1e6c87dc-ac72-4a75-a89c-42fd29ffeccb</guid><dc:creator>Marcus Rundgren</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;thank you for your answer! It solved my problem.&lt;/p&gt;
&lt;p&gt;BUT!!!&lt;/p&gt;
&lt;p&gt;You wrote that the MEFW is limited to one packet per connection event. So if I had understood, the theoretical min time to transfer 100 kB of data is:&lt;/p&gt;
&lt;p&gt;( 1 packet x 20 B ) / 0.0075 = 2667 B/s&lt;/p&gt;
&lt;p&gt;100 kB / 2667 B/s = &lt;strong&gt;37,5 s&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;But when I send 100 kB after I made the change you recommended it takes &lt;strong&gt;32 s&lt;/strong&gt; (now the same value every time :))&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Throughput with nRF UART example</title><link>https://devzone.nordicsemi.com/thread/7809?ContentTypeID=1</link><pubDate>Wed, 05 Mar 2014 11:47:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bb6718d8-6c06-432f-b1ca-9488a35a34e2</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;I wasn&amp;#39;t quite sure what test you did, but when doing the same test you do, I actually get the same behavior. The reason is that ble_app_uart sends a connection parameter update request, which causes the connection interval to be changed after the first transfer. If you look at the log file that is located in c:\ProgramData\Nordic Semiconductor\MasterEmulator, you can see that there will be a connection parameter update:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
338605;11:32:35.7957 [ReadPacketQueueThread] HCI event: BTLE_EVENT_LE_CONNECTION_COMPLETE, Status: BTLE_STATUS_CODE_SUCCESS, ConnectionHandle: 0x0000, Role: BTLE_CONNECTION_ROLE_MASTER, AddressType: BTLE_ADDR_TYPE_RANDOM, PeerAddress: 0xCD390EF0D28A, ConnectionInterval: 11,25ms, Latency: 0, Timeout: 3000ms, ClockAccuracy: BTLE_CLOCK_ACCURACY_250_PPM
/* First data transfer */
/* ... */
395711;11:33:16.6767 [ReadPacketQueueThread] Received packet: L2capConnectionParameterUpdateRequest, 12-02-08-00-10-00-3C-00-00-00-90-01, IntervalMin: 20ms, IntervalMax: 75ms, SlaveLatency: 0, Timeout: 4000ms
/* Second data transfer ... */
/* ... */

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see from &lt;a href="https://devzone.nordicsemi.com/index.php/how-do-i-calculate-throughput-for-a-ble-link"&gt;this question&lt;/a&gt;, the connection interval have significant effect on throughput.&lt;/p&gt;
&lt;p&gt;When I adjust the ble_app_uart application to accept any connection interval from 7.5 ms, such update request is no longer sent, and the performance is consistent. This can be done by changing the MIN_CONN_INTERVAL define on top of main.c. The time between connection and sending of the update request can be adjusted by changing FIRST_CONN_PARAMS_UPDATE_DELAY.&lt;/p&gt;
&lt;p&gt;Note that sending a request for a lower connection interval than what&amp;#39;s used by default, 7.5 ms instead of 11 ms, would give higher throughput, but the MEFW is limited to only one packet per connection event, so you won&amp;#39;t see very impressive numbers still.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Throughput with nRF UART example</title><link>https://devzone.nordicsemi.com/thread/7808?ContentTypeID=1</link><pubDate>Wed, 05 Mar 2014 08:25:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6911221f-fd09-44cb-a4ed-bc91be725100</guid><dc:creator>Marcus Rundgren</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I have not changed anything in the code...&lt;/p&gt;
&lt;p&gt;Used firmware: ble_app_uart, located:
Keil\ARM\Device\Nordic\nRF51822\Board\pca10001\s110\experimental\ble_app_uart&lt;/p&gt;
&lt;p&gt;The precompiled nRFUart.exe is used. Located:
..\Nordic Semiconductor\Master Emulator\2.1.7.8226\Example code\nRFUart\Precompiled&lt;/p&gt;
&lt;p&gt;Files attached.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/6675.ble_5F00_app_5F00_uart.zip"&gt;ble_app_uart.zip&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Throughput with nRF UART example</title><link>https://devzone.nordicsemi.com/thread/7807?ContentTypeID=1</link><pubDate>Tue, 04 Mar 2014 16:26:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:73ca0065-96a1-4e44-8d38-c8fcb678c744</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;This is not expected, and I suspect there could be some problem with your code that causes this. Can you please supply your complete project, so that we can test it here, either as an attachment here or in a regular support case?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>