<?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>S130 Ble throughput optimization</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/14535/s130-ble-throughput-optimization</link><description>Hello 
 I am developing an application where the data troughput is very important.
As i understand, the data thoughput is dependent on the connection interval and the number of packets sent at every connection interval. 
 I am only able to get one</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 17 Jun 2016 13:05:24 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/14535/s130-ble-throughput-optimization" /><item><title>RE: S130 Ble throughput optimization</title><link>https://devzone.nordicsemi.com/thread/55526?ContentTypeID=1</link><pubDate>Fri, 17 Jun 2016 13:05:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fe9a4681-e165-43ef-a17a-5bab768a3148</guid><dc:creator>Kristian Nielsen</dc:creator><description>&lt;p&gt;It seems that i trusted the timestamps in the sniffer trace to much. When using timestamps from more reliable sources my calculations where more as expected.
When looking at the event counter of the sniffed packet it was possible to see what connection interval they where in.
Also i forgot to make my peripheral make a connection parameter update request after the connections has been established.&lt;/p&gt;
&lt;p&gt;It looks like that my LG Nexus 5(6.0.1) has limitations to the possible throughput.
If i set the connection interval to max 15ms, my phone adjusts the number of packet pr connection interval to 3 instead of 4. The highest trhoughput i got was 3.8KB/s.
Also when running 30ms it seems to reach a point where only 1-2 packets are available.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: S130 Ble throughput optimization</title><link>https://devzone.nordicsemi.com/thread/55522?ContentTypeID=1</link><pubDate>Fri, 17 Jun 2016 12:54:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d09a2ba9-83b0-480d-a36c-a09d8d10d6f4</guid><dc:creator>Kristian Nielsen</dc:creator><description>&lt;p&gt;Me 2... Thanks for your inputs :-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: S130 Ble throughput optimization</title><link>https://devzone.nordicsemi.com/thread/55525?ContentTypeID=1</link><pubDate>Fri, 17 Jun 2016 12:43:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:62ae76e4-ee8e-4bdd-b6fd-44ff4155d696</guid><dc:creator>Jorge</dc:creator><description>&lt;p&gt;I&amp;#39;m glad you got closer to the possible throughput.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: S130 Ble throughput optimization</title><link>https://devzone.nordicsemi.com/thread/55524?ContentTypeID=1</link><pubDate>Fri, 17 Jun 2016 12:39:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b8a3dbab-d243-431f-9a30-0a2a6499f5f2</guid><dc:creator>Kristian Nielsen</dc:creator><description>&lt;p&gt;My Android application is using the SystemClock to give &amp;quot;reliable&amp;quot; timestamps.
I just found out that i have forgotten to make the peripheral make a connection parameter update request when connection is established. When i do that my expected min and max intervals are obeyed by the Android phone(obviously). I altered my test scenario to send 10x1024 bytes to my peripheral and return a packet when all packets has been received. I use the SystemClock time stamp in android to calculate my values. This setup gives me a thorughput of 2.5KB/s. Still a little short from 2.6KB expected. But when looking in the trace it seems that Android comes to a point where it stops  using 4 packets / interval but rather 1 or 2. This could explain the 2.5KB/s throughput.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: S130 Ble throughput optimization</title><link>https://devzone.nordicsemi.com/thread/55523?ContentTypeID=1</link><pubDate>Fri, 17 Jun 2016 12:21:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dc45dbdf-6a32-4856-acea-853a4defeffc</guid><dc:creator>Jorge</dc:creator><description>&lt;p&gt;to calculate precisely the amount of data you are sending/receiving, try to make a timer and continuously send data during one second, or more if you want, and count the number of packets you send (seeing the timestamps on the terminal is not a good idea).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: S130 Ble throughput optimization</title><link>https://devzone.nordicsemi.com/thread/55521?ContentTypeID=1</link><pubDate>Fri, 17 Jun 2016 09:30:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2bda640c-8082-464b-81cd-f85f73c22ae7</guid><dc:creator>Kristian Nielsen</dc:creator><description>&lt;p&gt;So i have started looking at the android output and the console output of my application.
In here are some completely different time values. But the thoughput is still not good enough. When calculating the times in the android and my application it takes 1328 ms to exchange 1024 bytes(2048 bytes transfered) This is a thoughput of approx 1.5KB/s.
Android is sending 4 packets pr connection interval and the max connection interval is 30ms. This should give me a worst case thoughput of 2.6KB/s. So it seems that i am still missing 1.1KB/s :-/&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: S130 Ble throughput optimization</title><link>https://devzone.nordicsemi.com/thread/55520?ContentTypeID=1</link><pubDate>Fri, 17 Jun 2016 09:30:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:82b19101-71db-470a-ac16-19e499845441</guid><dc:creator>Kristian Nielsen</dc:creator><description>&lt;p&gt;I am jusing the SoftDevice 130 2.0.0. Cool that you got such a great throughput.
I just found out that my problem is actually not that my packets are not being sent in the same connection interval. I just looked at the eventcounter in the sniffer trace an can clearly see that thay are sent the way as they should. But the timestamps in my sniffer trace is pretty far from the expected amount of times used pr. packet. In the sniffer trace there are 8 to 20 ms between the packets which gives a huge amount of time for the data exchange. It seems that the sniffer trace is unreliable when looking at the time stamps.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: S130 Ble throughput optimization</title><link>https://devzone.nordicsemi.com/thread/55519?ContentTypeID=1</link><pubDate>Thu, 16 Jun 2016 14:30:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ccb1a535-d1cc-4fb9-a7b2-c904a0608d2c</guid><dc:creator>Jorge</dc:creator><description>&lt;p&gt;I don&amp;#39;t know which version of the softdevice you are using. but the SD130 v1.0 only allow one connection, as on the SD130 v2.0 it allows 6 or 7 changes per connection. I achieved a max throughput of 123kbps between two nrf51422, but using a interval of 7.5ms.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>