<?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>Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/9528/very-low-throughput-ios8-1-and-nrf51822</link><description>Hi !
I have a rather strange problem: 1 packet is transmitted for 30 milliseconds.
I use iPhone-4s with iOS8.1 and custom board with nRF51822 
 In the firmware exists 4 characteristics: 2 - for receive data and 2 - for send.
Here are settings nRF51822</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 02 Oct 2015 19:26:07 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/9528/very-low-throughput-ios8-1-and-nrf51822" /><item><title>RE: Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/thread/35198?ContentTypeID=1</link><pubDate>Fri, 02 Oct 2015 19:26:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c7cacffc-4a41-46b8-ba24-1e01053bdb05</guid><dc:creator>Vyacheslav Lebets</dc:creator><description>&lt;p&gt;Sorry, Hung, but in said section are given certain rules when using Sequential Protocol and nothing is said about what it should be in the connection interval.
As my mind, I think that several request-response pairs can occur in one connection interval.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/thread/35197?ContentTypeID=1</link><pubDate>Fri, 02 Oct 2015 11:47:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0a61fb9a-c7fb-436c-bf0a-0a4187aa498d</guid><dc:creator>Vyacheslav Lebets</dc:creator><description>&lt;p&gt;Ok, Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/thread/35196?ContentTypeID=1</link><pubDate>Fri, 02 Oct 2015 11:45:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:60daea75-6c19-4e1c-97f9-7cee1906dbb1</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Yes, you can have a look at section 3.3.2 part F Vol 3 in the Bluetooth Core spec v4.2&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/thread/35195?ContentTypeID=1</link><pubDate>Fri, 02 Oct 2015 11:04:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:70534a1a-feea-4e90-a65d-4dd739b7dc69</guid><dc:creator>Vyacheslav Lebets</dc:creator><description>&lt;p&gt;Hi, Hung.
Thanks for responce!
I did not know that to do only one request/indication at a connection interval. Is this exist in Bluetooth specification?&lt;/p&gt;
&lt;p&gt;Well, now I will try... :)&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/thread/35194?ContentTypeID=1</link><pubDate>Fri, 02 Oct 2015 10:38:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:46dde823-ebd6-4a28-a836-85df663c5770</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Vyacheslav,&lt;/p&gt;
&lt;p&gt;From the sniffer trace we can see that you are using Write request (from the master side) and indication (from the slave side) to send data.
If you want high throughput, this is not a good idea.&lt;/p&gt;
&lt;p&gt;By spec, there will be only one request/indication at a time. Only when the request got response or the indication got confirmation the next one can be sent.&lt;/p&gt;
&lt;p&gt;This explains why you got low throughput. You should use write command and notification instead.
Please have a look &lt;a href="https://devzone.nordicsemi.com/blogs/32/how-different-ble-packet-types-influence-throughpu/"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/thread/35200?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2015 20:19:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d8ba5e2f-d70a-4634-be4f-a7eff8221312</guid><dc:creator>Vyacheslav Lebets</dc:creator><description>&lt;p&gt;It makes no difference.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/thread/35199?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2015 20:02:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:11dd0ba4-49f2-49e4-8865-226e660aa152</guid><dc:creator>kirkus</dc:creator><description>&lt;p&gt;Try setting your min and max connection interval settings to conform to Apple&amp;#39;s Bluetooth Guidelines (&lt;a href="https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf):"&gt;developer.apple.com/.../BluetoothDesignGuidelines.pdf):&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interval Max * (Slave Latency + 1) ≤ 2 seconds&lt;/li&gt;
&lt;li&gt;Interval Min &amp;gt;= 20ms&lt;/li&gt;
&lt;li&gt;Interval Min + 20 ms ≤ Interval Max Slave Latency ≤ 4&lt;/li&gt;
&lt;li&gt;connSupervisionTimeout ≤ 6 seconds&lt;/li&gt;
&lt;li&gt;Interval Max * (Slave Latency + 1) * 3 &amp;lt; connSupervisionTimeout&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#define MIN_CONN_INTERVAL MSEC_TO_UNITS(20, UNIT_1_25_MS)
#define MAX_CONN_INTERVAL MSEC_TO_UNITS(30, UNIT_1_25_MS)
#define SLAVE_LATENCY 0
#define CONN_SUP_TIMEOUT MSEC_TO_UNITS(6000, UNIT_10_MS)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;See if that makes a difference.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/thread/35193?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2015 12:27:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1f05aa40-2ddb-4479-a20b-261bb8f93961</guid><dc:creator>Wojtek</dc:creator><description>&lt;p&gt;Try using write without response and notification instead of indication.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/thread/35192?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2015 11:43:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:76d0cabb-9b47-43ce-a679-53436d187fa2</guid><dc:creator>Vyacheslav Lebets</dc:creator><description>&lt;p&gt;nRF - is peripheral, i use s110 v7.0.0.
booth devises can transmit up to 128 bytes (with chunk = 20 bytes), and on nRF side i have buffer fo placing received data up to 128 byte.
But there is no difference if I pass one packet (20 byte) or more, always packet is transmitted approximately 30 ms from write_with_responce to confirm (in ios) and from indication to confirm (in nRF).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/thread/35191?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2015 11:23:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f29d61e8-1d59-4fc7-ac6d-e4799a5836d0</guid><dc:creator>Wojtek</dc:creator><description>&lt;p&gt;Ok - what softdevice are are you using? nrf51822 is peripheral or central? which device has to transmit that large packet, both? I don&amp;#39;t know ios, but on the nrf51 side: do you fill tx buffers until you get error? I haven&amp;#39;t tested receiving with high throughput with nordic, but I have no problems to transmit (notifications, not indications!) 6 packets/connection interval to Master Control Panel app, and 4 packets/interval to my i9505. Device which is receiving (in your case iphone4s) may be limiting that.  S110 specification says that it is possible to receive write commands with 125kbps which means 6packets/interval, but write requests only 10kbps&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/thread/35190?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2015 11:13:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e62da8eb-e054-45aa-9753-c5e00174d77d</guid><dc:creator>Vyacheslav Lebets</dc:creator><description>&lt;p&gt;Ok, but in connection interval ios may send 6 packet and nordic 4 packets? why only ONE packet transmitted?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Very low throughput iOS8.1 and nRF51822</title><link>https://devzone.nordicsemi.com/thread/35189?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2015 11:06:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:35996141-28d0-4c38-8f26-8f38f9260a4c</guid><dc:creator>Wojtek</dc:creator><description>&lt;p&gt;You can sniff CONN_REQ packet when initializing connection and you will probably see that connection is established at 30ms connection interval (or slave requests connection parameter update to make it 30ms...). Anyway - it is probably because connection interval that is used between your devices.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>