<?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>How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/1105/how-do-i-calculate-throughput-for-a-ble-link</link><description>How can I calculate the maximum throughput for an application running on the nRF51822 and the S110, when connecting to different kind of Central devices?</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 25 Mar 2016 16:31:49 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/1105/how-do-i-calculate-throughput-for-a-ble-link" /><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5200?ContentTypeID=1</link><pubDate>Fri, 25 Mar 2016 16:31:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c0ddf4a6-f9ba-42ba-a656-eb88ddc98404</guid><dc:creator>Chris Barratt</dc:creator><description>&lt;p&gt;Hi,
I&amp;#39;m trying to get solid data for nRF52 which is 4.2 compliant. In the Softdevice spec S132 it indicates that throughput in Client Notification mode is limited to 42 kb/s which is lower than that for nRF51 when using 6 packets of 20 bytes at 7.5ms conn interval.&lt;/p&gt;
&lt;p&gt;Is there a way of increasing throughput for nRF52? I was expecting that with 4.2 I could use longer packets and hence increase throughput for same number of packets and conn interval.&lt;/p&gt;
&lt;p&gt;Chris Barratt&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5190?ContentTypeID=1</link><pubDate>Fri, 11 Sep 2015 10:50:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2344256f-c9c8-40ef-9255-fedde495087d</guid><dc:creator>Tim</dc:creator><description>&lt;p&gt;Worth noting that it seems like S130 only supports 2/3 packets per connection interval (depending on the operation). So if you want max throughput you have to use S110. See: &lt;a href="http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.130.sds.v1.0.0%2Fble_data_throughput%2Fble_data_throughput.html&amp;amp;cp=2_7_2_0_13"&gt;infocenter.nordicsemi.com/index.jsp&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5189?ContentTypeID=1</link><pubDate>Fri, 17 Jul 2015 01:22:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d3316011-56dc-446c-877a-bdfe756e94f2</guid><dc:creator>rvijay007</dc:creator><description>&lt;p&gt;Does anyone know why higher version of iOS result in lower packets per connection interval? Is this an error in the answer, or truly what happens (going from 6 to 3)?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5188?ContentTypeID=1</link><pubDate>Tue, 12 May 2015 15:46:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:68607460-9493-4d61-aadd-bcd1f03aeb30</guid><dc:creator>endnode</dc:creator><description>&lt;p&gt;Hi Ole and Stefan,&lt;/p&gt;
&lt;p&gt;There is actually 4th parameter and that&amp;#39;s MTU size. In case of nRF51 it&amp;#39;s constant so you do not count it as variable but for general/theoretical discussion it&amp;#39;s worth mentioning. We also secretly hope that Nordic stacks will support larger MTUs one day...;) Otherwise great post and great work on the forum!&lt;/p&gt;
&lt;p&gt;Cheers Jan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5199?ContentTypeID=1</link><pubDate>Thu, 20 Mar 2014 13:44:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:015b6498-8e9d-436d-8b1d-8976bf65db4e</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;Please don&amp;#39;t reply to old question with a new question, but post it separately.&lt;/p&gt;
&lt;p&gt;You should also make sure to take a look at this question: &lt;a target="_blank" href="https://devzone.nordicsemi.com/index.php/about-acknowledgement-and-retransmission" rel="nofollow"&gt;https://devzone.nordicsemi.com/index.php/about-acknowledgement-and-retransmission&lt;/a&gt;
I can of course not comment on how things are implemented with our competitors, but with the nRF51/S110 you should not see any data loss with notifications. For a throughput test, you can take a look at this variant of nAN-36: &lt;a target="_blank" href="https://github.com/NordicSemiconductor/nrf51-ble-app-lbs/tree/throughput-test-5.1.0" rel="nofollow"&gt;https://github.com/NordicSemiconductor/nrf51-ble-app-lbs/tree/throughput-test-5.1.0&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5198?ContentTypeID=1</link><pubDate>Thu, 20 Mar 2014 13:27:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9e189e50-0a9a-486c-ab93-33947b9bf171</guid><dc:creator>Jan Krejsa</dc:creator><description>&lt;p&gt;Dear Ole,&lt;/p&gt;
&lt;p&gt;we are little bit confused about notifications and their acknowledgements. By observing some links above it seems that this is perfect way to send more data over notifications, thus according specifications it seems that notifications are not reliable service and there can be data lost. But at some discussion here we could find that even notifications are on radio layer acknowledged.&lt;/p&gt;
&lt;p&gt;Can please put some light onto this. I am about to run test with NORDIC chip with that and Android 4.3 device. I made same test with ST BLUENRG and I experienced some packets lost, not many, of course I did check that they were accepted by link layer (not crazy sending them into device)..but I also could see that by increasing the distance the communication has been correctly paused. So I want to reproduce the same with nRF51822. Thx for advices.&lt;/p&gt;
&lt;p&gt;Jan Krejsa&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5187?ContentTypeID=1</link><pubDate>Tue, 18 Mar 2014 13:14:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4970db94-d099-455a-9d0a-f1a301cd9e87</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;This application on GitHub shows a full example demonstrating max throughput: &lt;a target="_blank" href="https://github.com/NordicSemiconductor/nrf51-ble-app-lbs/tree/throughput-test-5.1.0" rel="nofollow"&gt;https://github.com/NordicSemiconductor/nrf51-ble-app-lbs/tree/throughput-test-5.1.0&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5197?ContentTypeID=1</link><pubDate>Thu, 27 Feb 2014 15:19:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1faea3a4-ddb6-455f-8811-14711b04015a</guid><dc:creator>Ant&amp;#243;nio</dc:creator><description>&lt;p&gt;Hi Morten, thanks for reply.&lt;/p&gt;
&lt;p&gt;I was confused, my goal is to calculate goodput and not throughput ;)&lt;/p&gt;
&lt;p&gt;Send one notification (20bytes) each every 40ms until 1000 packets, measure total time and calculate the amout of bits per second.&lt;/p&gt;
&lt;p&gt;Thanks again&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5196?ContentTypeID=1</link><pubDate>Fri, 21 Feb 2014 16:51:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1f990618-2cb8-4d41-ba58-ce3b4b663826</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;You don&amp;#39;t answer any of the questions I ask you, so you don&amp;#39;t make it very easy or tempting to help you much further. What do you actually want to know?  If you wonder how long it will take to send 1000 packets, assuming you send one every 40 ms, you could do like this: 1000 packets * 40 ms/packet = 40 seconds.&lt;/p&gt;
&lt;p&gt;If you transfer more packets per interval, you could do for example like this: (1000 packets / 2 packets/interval) * 40 ms/interval = 20 seconds.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5195?ContentTypeID=1</link><pubDate>Wed, 19 Feb 2014 14:46:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cddf4104-c5db-4bc4-886a-84772c7d1cb7</guid><dc:creator>Ant&amp;#243;nio</dc:creator><description>&lt;p&gt;hi, thanks again.&lt;/p&gt;
&lt;p&gt;yes i have a TI device but is not important for this case, my question is a teorical question ...a question about a best way to  calculate throughput.&lt;/p&gt;
&lt;p&gt;Only the number of packets per interval are relevant and different in devices.&lt;/p&gt;
&lt;p&gt;My question still the same...i want send 1000packets from peripheral to central, each packet in 400ms.&lt;/p&gt;
&lt;p&gt;At the end (1000 packets receive), in central device, i want calculate throughput like this:&lt;/p&gt;
&lt;p&gt;1packet ----&amp;gt; 40ms
1000packets ---&amp;gt; X&lt;/p&gt;
&lt;p&gt;X = 40seconds&lt;/p&gt;
&lt;p&gt;R = (20Bytes*1000 packets)/40s seconds&lt;/p&gt;
&lt;p&gt;That is correct if the number of packets per interval is 1 ?&lt;/p&gt;
&lt;p&gt;I post this question in this forum because advised me about quality of this forum. sorry if I was rude.
Regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5194?ContentTypeID=1</link><pubDate>Wed, 19 Feb 2014 10:19:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d552b5d9-39bd-491c-b4bb-d46e51b9e84a</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;Your question doesn&amp;#39;t quite make sense. Do you want to calculate throughput (i.e. bytes per second), or do you want to know the time it takes to transmit a certain amount of data (i.e. seconds per x bytes)?&lt;/p&gt;
&lt;p&gt;This question has to do with the former, but it&amp;#39;s basic math going between them, if you know the throughput. Also, did you actually read the first reply here? The number of packets per interval is dependent on the devices you use, and there is hence no general answer to it, you simply have to test the devices you&amp;#39;re interested in knowing the throughput between. As for the TI chip you&amp;#39;re apparently using, I unfortunately don&amp;#39;t know.&lt;/p&gt;
&lt;p&gt;1000 packets also doesn&amp;#39;t say anything about what amounts of data you need to transfer, so I&amp;#39;m not quite sure how you&amp;#39;d suggest using this number for anything.&lt;/p&gt;
&lt;p&gt;I really think that you should take some time to make sure you understand the basics of BLE, what a connection interval is, what happens in a connection event, and how data transfer is ongoing. The previously linked questions may be useful, as well as nAN-36: &lt;a target="_blank" href="https://www.nordicsemi.com/eng/content/download/34055/573345/file/nAN-36.zip" rel="nofollow"&gt;https://www.nordicsemi.com/eng/content/download/34055/573345/file/nAN-36.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finally, I must say I find it rather interesting that you have to visit a Nordic Q&amp;amp;A site to get answers on how to use your TI chip, as both the name of your defines and this questions suggests: &lt;a target="_blank" href="http://e2e.ti.com/support/low_power_rf/f/538/t/322198.aspx" rel="nofollow"&gt;http://e2e.ti.com/support/low_power_rf/f/538/t/322198.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5193?ContentTypeID=1</link><pubDate>Tue, 18 Feb 2014 19:03:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c73ea317-2d71-48cf-8532-69109beed9a9</guid><dc:creator>Ant&amp;#243;nio</dc:creator><description>&lt;p&gt;Hi Ole Morten,&lt;/p&gt;
&lt;p&gt;thanks for the quick response.&lt;/p&gt;
&lt;p&gt;But how do I know how many packets can I send per interval ?&lt;/p&gt;
&lt;p&gt;And i want calculate throughput after receiving 1000 packets, so i have to consider this value in calculations right ? total time would be 40seconds and not 40ms...&lt;/p&gt;
&lt;p&gt;thanks a lot again, but I want to make sure my calculations are correct :\&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5192?ContentTypeID=1</link><pubDate>Tue, 18 Feb 2014 15:46:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7d43fe89-1fea-4ac2-a5d4-6e54cc3afc82</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;As stated above, the throughput is dependent on the connection interval, and you can take a look at this question for an explanation of connection parameters: &lt;a target="_blank" href="https://devzone.nordicsemi.com/index.php/what-is-connection-parameters" rel="nofollow"&gt;https://devzone.nordicsemi.com/index.php/what-is-connection-parameters&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you want to transfer data every 40 ms, you should use a connection interval of 40 ms. For a link with a connection interval of 40 ms, max throughput will be 6 * 20 B * 1/(0.040 s) = 3 kB/s if your devices are capable of transferring six packet per interval and 1 * 20 B * 1/(0.040 s) = 0.5 kB/s if you transfer one packets per interval.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5191?ContentTypeID=1</link><pubDate>Tue, 18 Feb 2014 14:59:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f4ab84ce-e01d-46cf-b5f5-26b1a64a46c9</guid><dc:creator>Ant&amp;#243;nio</dc:creator><description>&lt;p&gt;Hi, I&amp;#39;m still confused about few things.&lt;/p&gt;
&lt;p&gt;How can I calculate the maximum throughput for a ble link between peripheral and central device ? I&amp;#39;m sending a packet (20bytes = 160 bits) every 40ms until send a total of 1000 packets.&lt;/p&gt;
&lt;p&gt;R = (160*1000)/40s = 4000bps =&amp;gt; 3.9kbps&lt;/p&gt;
&lt;p&gt;That is a correct way for calculate throughput for ble ?? and the max and min connection interval ? at this moment my parameters are:&lt;/p&gt;
&lt;p&gt;DEFAULT_DESIRED_MIN_CONN_INTERVAL     32; // 40ms&lt;/p&gt;
&lt;p&gt;DEFAULT_DESIRED_MAX_CONN_INTERVAL     64; //80ms&lt;/p&gt;
&lt;p&gt;How do these values ​​interfere with my calculations?
I dont understand your examples because my propose is calculate throughput after sending 1000 packets.&lt;/p&gt;
&lt;p&gt;Thank you for everyone and please, help me :)&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5186?ContentTypeID=1</link><pubDate>Tue, 10 Dec 2013 16:36:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8a8fe80c-8420-47da-9d0a-a8a542fa2b25</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;Also, for a suggestion of an application algorithm to get high throughput, take a look at this: &lt;a target="_blank" href="https://devzone.nordicsemi.com/index.php/dealing-large-data-packet-s-through-ble" rel="nofollow"&gt;https://devzone.nordicsemi.com/index.php/dealing-large-data-packet-s-through-ble&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I calculate throughput for a BLE link?</title><link>https://devzone.nordicsemi.com/thread/5185?ContentTypeID=1</link><pubDate>Mon, 09 Dec 2013 16:13:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:49a8372a-27ac-482a-9a18-f43d55b68515</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;There are primarily 3 factors that determine maximum throughput with BLE:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;operation type,&lt;/li&gt;
&lt;li&gt;connection interval, and&lt;/li&gt;
&lt;li&gt;number of packets transmitted per connection event.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Operation&lt;/em&gt;
For high-throughput applications, you should make sure to use either Write Commands (Write without response) or Notification. In each such Write Command or Notification, you can have 20 B data. These packets are link-level ACK-ed, but does not provide any application level ACK-ing, and can hence be queued. If you instead use Write Requests or Indications, you can by spec not queue packets and must wait for an ACK to the first packet before sending the next. This significantly reduces throughput (perhaps 10-fold).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Connection interval&lt;/em&gt;
Both the nRF8001 and the nRF51822 supports the lowest connection interval allowed by spec, 7.5 ms. This is also supported by some Android devices, while others does not seem to allow intervals below 37.5 ms. The latest versions of iOS seems to have 30 ms as the lowest documented interval supported.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Number of packets per event&lt;/em&gt;
With regard to number of packets per connection event, the nRF8001 will be able to receive 2-3 but can transmit only 1. The nRF51822 on the other hand can both send or transmit up to 6 packets per interval. It seems that most Android devices supports ~4 packets per interval, while most iOS devices supports up to 6 packets.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Calculation&lt;/em&gt;
As you can see from the above, throughput with BLE isn&amp;#39;t quite straightforward, but given a number of packets per interval n and a connection interval T, the maxiumum throughput can be calculated like this:&lt;/p&gt;
&lt;p&gt;n * 20 B * 1/T&lt;/p&gt;
&lt;p&gt;Some examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;iPhone 5/6 + IOS 8.0/8.1 with nRF51822: 6 * 20 B * 1/0.030 s = 4 kB/s = 32 kbps&lt;/li&gt;
&lt;li&gt;iPhone 5/6 + IOS 8.2/8.3 with nRF51822: 3 * 20 B * 1/0.030 s = 4 kB/s = 16 kbps&lt;/li&gt;
&lt;li&gt;iPhone 5/6 + IOS 8.x with nRF8001: 1 * 20 B * 1/0.030 s = 0.67 kB/s = 5.3 kbps&lt;/li&gt;
&lt;li&gt;Nexus 4 with nRF51822: 4 * 20 B * 1/0.0075 s = 10.6 kB/s = 84 kbps&lt;/li&gt;
&lt;li&gt;Master Emulator Firmware  (MEFW) with nRF51822 0.9.0: 1 * 20 B 1/0.0075 = 2.67 kB/s = 21.33 kbps&lt;/li&gt;
&lt;li&gt;Master Emulator Firmware (MEFW) with nRF51822 0.11.0: 6 * 20 B 1/0.0075 = 16 kB/s = 128 kbps&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How to receive BLE packets via nRF51822/nRF51422 and Master Emulator Firmware is described in &lt;a href="https://devzone.nordicsemi.com/tutorials/4/testing-and-using-a-simple-ble-application/"&gt;this tutorial&lt;/a&gt;, section &amp;quot;Using the nRF51 Dongle&amp;quot;. Further discussion on BLE throughput test is on &lt;a href="https://devzone.nordicsemi.com/question/30611/data-rate-measurment/?answer=30753#post-id-30753"&gt;this thread&lt;/a&gt;.  Also different BLE packet types heavily influence the maximum throughput, as described in &lt;a href="https://devzone.nordicsemi.com/blogs/32/how-different-ble-packet-types-influence-throughpu/"&gt;this blog&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>