<?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>Negociate new &amp;quot;connection parameters&amp;quot; from low to high speed</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/383/negociate-new-connection-parameters-from-low-to-high-speed</link><description>Dear Nordic Developer Zone, 
 I have modified the ble_conn_params.c file in order to be able to negotiate new connections speeds between IOS app and Nordic nRF51822 chip on demand. It is working well, but only from high to low communication speed between</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 27 Mar 2015 00:16:00 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/383/negociate-new-connection-parameters-from-low-to-high-speed" /><item><title>RE: Negociate new "connection parameters" from low to high speed</title><link>https://devzone.nordicsemi.com/thread/2004?ContentTypeID=1</link><pubDate>Fri, 27 Mar 2015 00:16:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f1cf4aec-d725-40d9-9c33-d3cdc317c8a8</guid><dc:creator>Philip Odom</dc:creator><description>&lt;p&gt;FYI, there&amp;#39;s a typo in Apple&amp;#39;s list of Connection Parameters (section 3.6, page 22). The 4th bullet point says:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interval Min + 20ms ≤ Interval Max Slave Latency ≤ 4&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That makes no sense and should be divided into 2 items. The complete list should be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interval Max * (Slave Latency + 1) ≤ 2 seconds&lt;/li&gt;
&lt;li&gt;Interval Min ≥ 20 ms&lt;/li&gt;
&lt;li&gt;Interval Min + 20 ms ≤ Interval Max&lt;/li&gt;
&lt;li&gt;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, these parameters work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MIN_CONN_INTERVAL=25 ms&lt;/li&gt;
&lt;li&gt;MAX_CONN_INTERVAL=50 ms&lt;/li&gt;
&lt;li&gt;SLAVE_LATENCY=4&lt;/li&gt;
&lt;li&gt;CONN_SUP_TIMEOUT=5000 ms&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Negociate new "connection parameters" from low to high speed</title><link>https://devzone.nordicsemi.com/thread/2012?ContentTypeID=1</link><pubDate>Wed, 25 Jun 2014 20:37:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:26c9e681-91c3-49e4-a3ae-e376c08df490</guid><dc:creator>Fab</dc:creator><description>&lt;p&gt;Hi guys,&lt;/p&gt;
&lt;p&gt;Have you got any updates on this? Sebastien, how did you solve the problem? I am seeing the same thing.&lt;/p&gt;
&lt;p&gt;Thanks,
Fabio&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Negociate new "connection parameters" from low to high speed</title><link>https://devzone.nordicsemi.com/thread/2011?ContentTypeID=1</link><pubDate>Thu, 29 Aug 2013 10:15:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3466a326-67c1-4968-bcc7-91837d04aae7</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;We&amp;#39;re always happy to help. :-)&lt;/p&gt;
&lt;p&gt;I would however appreciate it if you could accept an answer for this discussion, either Pål&amp;#39;s above or perhaps preferably your own here, since that makes it easier for others to find useful information.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Negociate new "connection parameters" from low to high speed</title><link>https://devzone.nordicsemi.com/thread/2010?ContentTypeID=1</link><pubDate>Thu, 29 Aug 2013 09:34:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:980f9264-89c3-4995-98f4-5623d7feed58</guid><dc:creator>S&amp;#233;bastien Despont</dc:creator><description>&lt;p&gt;Doesn&amp;#39;t matter. I really appreciate the time you spent on my day to day problems. I am going to reinitializate a new connection with the right communication speed if I need to communicate quickly (i.e. only during configuration time would be required not so often)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Negociate new "connection parameters" from low to high speed</title><link>https://devzone.nordicsemi.com/thread/2009?ContentTypeID=1</link><pubDate>Thu, 29 Aug 2013 09:29:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e8687066-7735-4c37-848f-079106044144</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;I don&amp;#39;t really have any further suggestions here then. It could very well be that Apple have chosen to limit the amount of parameter updates a peripheral can do, since there in general shouldn&amp;#39;t be any need to do such frequent updates. This is however pure speculation. Does waiting a long time (i.e. &amp;gt;&amp;gt; 1 minute) between each update change anything?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Negociate new "connection parameters" from low to high speed</title><link>https://devzone.nordicsemi.com/thread/2008?ContentTypeID=1</link><pubDate>Thu, 29 Aug 2013 09:18:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d177ac45-956c-41a8-b73f-5d52bd0065a9</guid><dc:creator>S&amp;#233;bastien Despont</dc:creator><description>&lt;p&gt;Pål Håland, Ole Morten, thanks for your comments.&lt;/p&gt;
&lt;p&gt;I know that the new communication speed is well applied because I have implemented the radio notification interrupt and toggle a led before and after radio communication. Therefore, I can see le led toggling with different speeds. I didn&amp;#39;t know about the 30 seconds recommendation. But,  after some tests, it didn&amp;#39;t change the fact that the 4 (and next tries) try failed.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Negociate new "connection parameters" from low to high speed</title><link>https://devzone.nordicsemi.com/thread/2007?ContentTypeID=1</link><pubDate>Thu, 29 Aug 2013 09:14:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8f8801c6-6671-4049-a4cb-6a4d9610fbc7</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;There is also a recommendation in the Core Specification saying that the time between parameter updates should be at least 30 s, so it could be that the iOS device is enforcing this.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Negociate new "connection parameters" from low to high speed</title><link>https://devzone.nordicsemi.com/thread/2006?ContentTypeID=1</link><pubDate>Thu, 29 Aug 2013 08:35:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ca2e5782-a990-48bd-b142-93030f44dfaa</guid><dc:creator>P&amp;#229;l H&amp;#229;land</dc:creator><description>&lt;p&gt;I don&amp;#39;t know about any such limitation (of how often you can do it)
What you could check is if you receive a BLE_GAP_EVT_CONN_PARAM_UPDATE or if the call to sd_ble_gap_conn_param_update fails. If it fails, then it could be that the phone have not updated the connection parameters after 10 seconds, and the peripheral is still waiting for the change to happen. During this time it is not allowed to send a new Connection Parameter Update request for another 30 seconds (after getting response to the first one)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Negociate new "connection parameters" from low to high speed</title><link>https://devzone.nordicsemi.com/thread/2005?ContentTypeID=1</link><pubDate>Thu, 29 Aug 2013 08:12:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:88022492-d40c-4810-94e1-49bc9d4352e2</guid><dc:creator>S&amp;#233;bastien Despont</dc:creator><description>&lt;p&gt;Thank you for your answer.&lt;/p&gt;
&lt;p&gt;Now I am able to change the comm speed both way, but only 3 times.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;High speed --&amp;gt; Low speed
10 seconds later
Low speed --&amp;gt; High speed
10 seconds later
High speed --&amp;gt; Low speed
10 seconds later
Low speed --&amp;gt; High speed : negociation failed
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I have read the Bluetooth and Apple documentation, but I have not seen any limitation about the number of comm negociation.&lt;/p&gt;
&lt;p&gt;Do you know if this kind of limitation exists?&lt;/p&gt;
&lt;p&gt;Best regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Negociate new "connection parameters" from low to high speed</title><link>https://devzone.nordicsemi.com/thread/2003?ContentTypeID=1</link><pubDate>Thu, 29 Aug 2013 07:10:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:da7cee13-2302-4875-9144-3a19e38d439d</guid><dc:creator>P&amp;#229;l H&amp;#229;land</dc:creator><description>&lt;p&gt;Hi Sébastien&lt;/p&gt;
&lt;p&gt;if you have a look at the &lt;a href="https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf"&gt;developer.apple.com/.../BluetoothDesignGuidelines.pdf&lt;/a&gt; and read the section about Connection Parameters.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Connection Parameters
The Bluetooth accessory is responsible for the connection parameters used for the LE connection. The accessory should request connection parameters appropriate for its use case by sending an L2CAP Connection Parameter Update Request at the appropriate time. See the Bluetooth 4.0 specification, Volume 3, Part A, Section 4.20 for details.&lt;/p&gt;
&lt;p&gt;The connection parameter request may be rejected if it does not comply with all of these rules:
Interval Max * (Slave Latency + 1) ≤ 2 seconds
Interval Min ≥ 20 ms
&lt;strong&gt;Interval Min + 20 ms ≤ Interval Max&lt;/strong&gt;
Slave Latency ≤ 4
connSupervisionTimeout ≤ 6 seconds
Interval Max * (Slave Latency + 1) * 3 &amp;lt; connSupervisionTimeout&lt;/p&gt;
&lt;p&gt;The Apple product will not read or use the parameters in the Peripheral Preferred Connection Parameters characteristic. See the Bluetooth 4.0 specification, Volume 3, Part C, Section 12.5.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The default ones will be rejected because MIN_CONN_INTERVAL == MAX_CONN_INTERVAL&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>