<?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>nRF52832 Maximize Data Throughput</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/38406/nrf52832-maximize-data-throughput</link><description>I&amp;#39;m trying to understand the best way in which I can maximize the data throughput on an nRF52832. 
 I am using a custom circuit board which is running an early version of the nRF52 SDK (version 12, I think) in order to maintain compatibility with the</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 17 Sep 2018 08:28:08 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/38406/nrf52832-maximize-data-throughput" /><item><title>RE: nRF52832 Maximize Data Throughput</title><link>https://devzone.nordicsemi.com/thread/148953?ContentTypeID=1</link><pubDate>Mon, 17 Sep 2018 08:28:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:36d423eb-6069-4c83-ba5f-36b6a23386e8</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Kevin&lt;/p&gt;
&lt;p&gt;If you want to contribute I am sure it will be appreciated ;)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You could also&amp;nbsp;open an issue on the Github page and see if there are some existing initiatives to update the nRF52 support, but it doesn&amp;#39;t seem like Sandeep Mistry is very active at the moment:&lt;br /&gt;&lt;a href="https://github.com/sandeepmistry/arduino-BLEPeripheral/issues"&gt;https://github.com/sandeepmistry/arduino-BLEPeripheral/issues&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 Maximize Data Throughput</title><link>https://devzone.nordicsemi.com/thread/148874?ContentTypeID=1</link><pubDate>Sat, 15 Sep 2018 14:01:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c3a48eb4-e3dc-4557-9355-fc51a994a817</guid><dc:creator>webzoid</dc:creator><description>&lt;p&gt;&lt;span&gt;Hi Torbj&lt;/span&gt;&lt;span&gt;&amp;oslash;&lt;/span&gt;&lt;span&gt;rn,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;It&amp;#39;s far from the ideal scenario but time constraints mean that for now, it is acceptable.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I certainly would like to either move across to the official Nordic libraries (and latest SDK) or at least put some time in and bring the Arduino libs up to the later versions. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m certain that there are massive performance gains to be had by doing this&amp;nbsp;- together with a later SoftDevice too.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 Maximize Data Throughput</title><link>https://devzone.nordicsemi.com/thread/148659?ContentTypeID=1</link><pubDate>Thu, 13 Sep 2018 14:24:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:be068780-3d45-4392-91f6-c99263340103</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Kevin&lt;/p&gt;
&lt;p&gt;It&amp;#39;s good to hear that the connection interval change made a difference.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Depending on which SoftDevice version is used by the Arduino library this could also affect the number of features available (such as DLE).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In general I would suggest using the official Nordic libraries for optimal performance and improved support, but if you get the performance you need from the Arduino libraries then you might as well stick to what you know ;)&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 Maximize Data Throughput</title><link>https://devzone.nordicsemi.com/thread/148333?ContentTypeID=1</link><pubDate>Wed, 12 Sep 2018 07:57:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:31b0f60f-5997-4cdf-a5fd-8f43d765e911</guid><dc:creator>webzoid</dc:creator><description>&lt;p&gt;Hi Torbj&lt;span&gt;&amp;oslash;&lt;/span&gt;rn,&lt;/p&gt;
&lt;p&gt;I made the a change to reduce the &amp;quot;connection interval&amp;quot; and this has improved things massively. I&amp;#39;m now getting very low latency between packet transmissions. I&amp;#39;ve actually had the minimum interval set to 7.5ms working with my Samsung Galaxy S Tablet but I&amp;#39;ve not yet tried on an iPhone. I think like you suggest, 15ms is a good compromise.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m not sure if the Arduino library supports the DLE feature nor do I believe it buffers packets for a single transmission. Adding a buffered transmission option would be a worthy addition/upgrade to the library I think.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 Maximize Data Throughput</title><link>https://devzone.nordicsemi.com/thread/148315?ContentTypeID=1</link><pubDate>Wed, 12 Sep 2018 07:00:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:785f3ff7-d4c6-4d03-bf3a-546e1e4c0db3</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Kevin&lt;/p&gt;
&lt;p&gt;If you look at the implementation of the send function you should be able to tell if it returns any of the errors that the stack might return, such as the one that occurs when the stack buffers are full.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Changing the connection interval is a good idea, and should give you improved data rate if the phone supports it. You probably won&amp;#39;t be able to go as low as 7.5ms (at least not on the iPhone), but 15ms or less should be possible.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If the Arduino libraries support the data length extension feature you can also increase the size of the payload, and send multiple 18 byte packets in a single update, but this assumes you are able to buffer your sensor updates before sending them rather than sending them immediately.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 Maximize Data Throughput</title><link>https://devzone.nordicsemi.com/thread/148248?ContentTypeID=1</link><pubDate>Tue, 11 Sep 2018 15:08:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:958271e9-c440-4876-af30-b791dab3a2aa</guid><dc:creator>webzoid</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m using an iPhone and also a Samsung Galaxy S tablet running Android.&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t believe the BLE stack is returning an error.&lt;/p&gt;
&lt;p&gt;I have, however, done some digging around the BLEPeripheral library and it would seem that the initial min and max connection intervals are set to be quite long periods:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;gap_conn_params.min_conn_interval = 40; // in 1.25ms units
gap_conn_params.max_conn_interval = 80; // in 1.25ms unit
gap_conn_params.slave_latency = 0;
gap_conn_params.conn_sup_timeout = 4000 / 10; // in 10ms unit&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;So the minimum is 50ms and max is 100ms, which never get changed. I can look to certainly reduce this.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ll try to set the minimum to 7.5ms first and see if this improves things.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 Maximize Data Throughput</title><link>https://devzone.nordicsemi.com/thread/148238?ContentTypeID=1</link><pubDate>Tue, 11 Sep 2018 14:33:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c105f305-e38a-4618-b2a4-cc332c2e09dc</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Kevin&lt;/p&gt;
&lt;p&gt;What kind of smartphone are you using to receive the data, and which OS version is it running?&lt;/p&gt;
&lt;p&gt;Have you checked if the send function returns any errors when you try to send data more quickly?&lt;br /&gt;Normally you have to push packets until the buffers fill up, at which point you should get some kind of warning or error code from the BLE API.&amp;nbsp;&lt;br /&gt;Then you would have to retry sending the same packet until the function accepts it (adding a small delay for each retransmit).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>