<?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>packets Loss in nRF51 &amp;amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/29913/packets-loss-in-nrf51-ios-streaming</link><description>Hello NORDIC community, 
 I am performing a BLE throughput speed test via an example of streaming a buffer of 2500 bytes per second: This says a sending frequency of 19 Kbps. 
 I&amp;#39;m working on an iPhone 6s with a version of iOS: 10.3.2
Since the connection</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 02 Feb 2018 12:32:58 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/29913/packets-loss-in-nrf51-ios-streaming" /><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/119529?ContentTypeID=1</link><pubDate>Fri, 02 Feb 2018 12:32:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7508850b-0a51-4fc4-829d-5534305fff21</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;There is no hard limit with iOS, i.e. you can send a lot of packets in each event. Anyway I&amp;#39;m not sure what happens in lightblue. So you have to check with a ble sniffer to see if you are loosing packets or not. If you follow the flow you describe on the nrf5, I guess it might be an issue with displaying received content in lightblue. Remeber that a notification will be retransmitted until it is received by the peer or until the connection is lost. So it is not possible to loose packets unless the receiving side overwrites it&amp;#39;s RX buffers, or the application does not handle the packets correctly.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/119499?ContentTypeID=1</link><pubDate>Fri, 02 Feb 2018 10:24:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0d152f88-4a38-4e89-b98e-5f19de892a84</guid><dc:creator>Bayram ZAYET</dc:creator><description>&lt;p&gt;I was testing with LightBlue iOS application and I got packets loss.&lt;/p&gt;
&lt;p&gt;But assuming that the connection interval isn&amp;#39;t the problem, can I be sure that iOS packets per connection interval reaches 6 packets? Isn&amp;#39;t it limited to 4 or 3 ?&lt;/p&gt;
&lt;p&gt;Many thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/119425?ContentTypeID=1</link><pubDate>Thu, 01 Feb 2018 20:08:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5e468c5f-c817-4c2a-b662-1054fffa3a6e</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;What iOS app are you testing with? are you sure you handle all the peripheral:didUpdateValueForCharacteristic:error: callbacks?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118972?ContentTypeID=1</link><pubDate>Tue, 30 Jan 2018 14:42:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f29d73c8-bd27-4f31-b3ff-b9c1c11a9432</guid><dc:creator>Nguyen Hoan Hoang</dc:creator><description>&lt;p&gt;I started with iOS 8 up to the latest.  See the &lt;a href="https://motsai.com/products/neblina/"&gt;video on this page&lt;/a&gt;. It was done on an older version using nRF51 &amp;amp; iOS8.  transmitting realtime 9 axis motion data.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118971?ContentTypeID=1</link><pubDate>Tue, 30 Jan 2018 14:07:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e03d0613-a727-428e-92ab-81b9bf6b0351</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;What iOS app are you testing with? are you sure you handle all the peripheral:didUpdateValueForCharacteristic:error: callbacks?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118961?ContentTypeID=1</link><pubDate>Tue, 30 Jan 2018 10:21:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:29aed694-fb23-4604-bb9c-c6b0409f671e</guid><dc:creator>Bayram ZAYET</dc:creator><description>&lt;p&gt;The transfer is from nRF51 to iOS. I am suspecting iOS application because I got no loss using MCP as a master.
I my implementation: I am checking on HVX return and TX_COMPLETE:&lt;/p&gt;
&lt;p&gt;void stream(void)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;while(1)&lt;/p&gt;
&lt;p&gt;{
err_code = ble_send(&amp;amp;m_service, data);
if(err_code != NRF_SUCCESS)
{
break;				
}
}    }&lt;/p&gt;
&lt;p&gt;ble_send() function contains the HVX call.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;	case BLE_EVT_TX_COMPLETE:
					stream();												
                   break;
&lt;/code&gt;&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118968?ContentTypeID=1</link><pubDate>Tue, 30 Jan 2018 10:01:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1a47d44a-aca5-4943-b3f6-ea3b36c41f3c</guid><dc:creator>Bayram ZAYET</dc:creator><description>&lt;p&gt;Yes of course, I am checking the return of the HVX function, especially when I get the NO_TX_PACKETS error, in that case, I wait untill TX_COMPLETE to send again.
Also, a similar streaming test went well without any loss using MCP as a master receiving packets.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118969?ContentTypeID=1</link><pubDate>Tue, 30 Jan 2018 09:29:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f569ce04-e48d-45a5-8429-126667bc521a</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;Actually you shouldn&amp;#39;t lose packets at all. at least not if you are transferring from nRF to iOS. Are you checking the return value of the HVX function?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118970?ContentTypeID=1</link><pubDate>Mon, 29 Jan 2018 19:20:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0ed3c4d7-b738-4b89-8b6b-70865bfe8fab</guid><dc:creator>Bayram ZAYET</dc:creator><description>&lt;p&gt;Hello,
Actually, I got considerably less packets loss by reducing the slave (nRF51) bandwidth which gives only 3 packets per connection interval.
But still didn&amp;#39;t get any hint about iOS stack limits or configuration.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118967?ContentTypeID=1</link><pubDate>Fri, 26 Jan 2018 13:41:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4e00e76d-1e56-41a7-95ce-8f4a8cf02151</guid><dc:creator>Nguyen Hoan Hoang</dc:creator><description>&lt;p&gt;There are min and max values settings.  Wouldn&amp;#39;t that means your firmware can handle that range ?! Your mobile device would work if it falls into the range.  So a range from 7.5 - 40 still falls within the range.  Guidelines means you need to support it as a minimum.  It does not mean you can&amp;#39;t support a wider range than that.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118960?ContentTypeID=1</link><pubDate>Fri, 26 Jan 2018 08:58:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1ee1675a-461f-485d-bf8d-da5d50c77795</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;Are you transfering data from iOS to nRF51 or the other way around? If you are transfering data from iOS to nRF51 using write without response it is possible to overwrite the tx buffers on the iOS side. If you are transfering data from nRF51 to iOS it is not possible to overwrite the tx buffers. instead you will get an error message when calling the hvx function. Please make sure you check this and try again when you get the tx-complete event in case there are no available tx buffers.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118963?ContentTypeID=1</link><pubDate>Fri, 26 Jan 2018 08:56:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:977012d2-7de5-467f-88e0-6899bb818d74</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;You should follow &lt;a href="https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf"&gt;Apples bluetooth design guidelines&lt;/a&gt;. I have never seen an iOS device accepting connection intervals of 7.5ms. HID devices will be able to get down to 11.25ms. But I have usually ended up with 12.5 - 15. But seems like the spec has changed a little so you might be able to get 15 ms now.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118966?ContentTypeID=1</link><pubDate>Fri, 26 Jan 2018 08:24:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b9fcc0ad-db40-4c94-8ab0-f01b071bf41d</guid><dc:creator>Bayram ZAYET</dc:creator><description>&lt;p&gt;Can I know how did you do that with iPhone?
Because I think that iOS developers cannot set or modify neither connection interval nor number of packets per connection interval.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118965?ContentTypeID=1</link><pubDate>Thu, 25 Jan 2018 20:33:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:511032ea-121b-4f91-b81c-61ea425dc5ff</guid><dc:creator>Nguyen Hoan Hoang</dc:creator><description>&lt;p&gt;Ok, I don&amp;#39;t know where that 30ms limit comes from.  I&amp;#39;ve worked with iPhone6 at 7.5ms (old SDK) and 10ms (new SDK14) and 10ms on Android.  Anyway that is up to you.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118964?ContentTypeID=1</link><pubDate>Thu, 25 Jan 2018 20:04:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:acc4bd2e-625a-48b9-8123-7a1fa760ebc4</guid><dc:creator>Bayram ZAYET</dc:creator><description>&lt;p&gt;Thank you for your answer. But I believe that iPhone cannot work with less than 30ms refering to this &lt;a href="https://punchthrough.com/blog/posts/maximizing-ble-throughput-on-ios-and-android"&gt;link&lt;/a&gt; and others.
Am I refering to wrong sources ?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: packets Loss in nRF51 &amp; iOS streaming.</title><link>https://devzone.nordicsemi.com/thread/118962?ContentTypeID=1</link><pubDate>Thu, 25 Jan 2018 18:25:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ef738ffe-2a75-4f11-be47-84be29328709</guid><dc:creator>Nguyen Hoan Hoang</dc:creator><description>&lt;p&gt;iPhone can work at 7.5ms, try min interval at 10ms see what happens&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>