<?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>nRF52 SDK 15 iOS -&amp;gt; low data rate</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/47446/nrf52-sdk-15-ios---low-data-rate</link><description>Using nRF52832 w/ SDK 15.2 as peripheral connecting to an iOS 12.2 central (iPhone XS Max). 
 IDE: SEGGER Embedded Studio for ARM, Release 4.10a 
 The max data rate I can achieve is ~1250 Bytes per second using sd_ble_gatts_hvx notifications. Once I attempt</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 29 May 2019 23:01:00 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/47446/nrf52-sdk-15-ios---low-data-rate" /><item><title>RE: nRF52 SDK 15 iOS -&gt; low data rate</title><link>https://devzone.nordicsemi.com/thread/189993?ContentTypeID=1</link><pubDate>Wed, 29 May 2019 23:01:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6e079608-facb-4f90-ba96-4398bafca01e</guid><dc:creator>BitsAndBytes</dc:creator><description>&lt;p&gt;Ok, have the answer now (thanks to &amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/members/foolsday"&gt;Daniel Veilleux&lt;/a&gt;&amp;nbsp;!)&lt;/p&gt;
&lt;p&gt;The original issue was due to me setting:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;bleCfg.conn_cfg.params.gap_conn_cfg.event_length = BLE_GAP_EVENT_LENGTH_DEFAULT;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;strong&gt;BLE_GAP_EVENT_LENGTH_DEFAULT&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;is too small for Extended&amp;nbsp;Data Length, therefore I was getting errors in the log when connecting but didn&amp;#39;t notice:&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=""&gt;&lt;b class=""&gt;&amp;lt;error&amp;gt; nrf_ble_gatt: sd_ble_gap_data_length_update() (request) on connection 0x1 returned NRF_ERROR_RESOURCES.&lt;/b&gt;&lt;/div&gt;
&lt;div class=""&gt;&lt;b class=""&gt;&amp;lt;error&amp;gt; nrf_ble_gatt: The requested TX/RX packet length is too long by 95/95 octets.&lt;/b&gt;&lt;/div&gt;
&lt;div class=""&gt;&lt;b class=""&gt;&amp;lt;info&amp;gt; app: NRF_BLE_SCAN_EVT_CONNECTED&lt;/b&gt;&lt;/div&gt;
&lt;div class=""&gt;&lt;b class=""&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=""&gt;So the fix is setting event_length to something larger, for example:&lt;/div&gt;
&lt;div class=""&gt;&lt;strong&gt;bleCfg.conn_cfg.params.gap_conn_cfg.event_length = BLE_GAP_EVENT_LENGTH_DEFAULT * 10;&lt;/strong&gt;&lt;/div&gt;
&lt;div class=""&gt;
&lt;div&gt;
&lt;div&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;This fixed the low data rate issue.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52 SDK 15 iOS -&gt; low data rate</title><link>https://devzone.nordicsemi.com/thread/189903?ContentTypeID=1</link><pubDate>Wed, 29 May 2019 13:35:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:19543a14-e85f-4044-a8f7-725093913bd5</guid><dc:creator>BitsAndBytes</dc:creator><description>&lt;p&gt;Urghh. After further testing... commenting out the lines above is a no go since now I&amp;#39;m getting errors related to not enough memory for my characteristics (characteristic_add --&amp;gt; error 4).&lt;/p&gt;
&lt;p&gt;Anyone with a fix/knowledge why the above code effects throughput?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52 SDK 15 iOS -&gt; low data rate</title><link>https://devzone.nordicsemi.com/thread/188641?ContentTypeID=1</link><pubDate>Wed, 22 May 2019 16:16:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:eb0a63bd-3afb-4677-9892-75c512026a93</guid><dc:creator>BitsAndBytes</dc:creator><description>&lt;p&gt;Just found the issue. Not sure why yet, but after &lt;strong&gt;removing&lt;/strong&gt; the following lines of code in my bleStackInit function I&amp;#39;m able to achieve ~264kbps (~33kBytes/sec).&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;// Setup memory for a max sized attribute table&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;memset&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;bleCfg, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(bleCfg));&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bleCfg.&lt;/span&gt;&lt;span&gt;gatts_cfg&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;attr_tab_size&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;attr_tab_size&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; BLE_GATTS_ATTR_TAB_SIZE_DEFAULT &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;512&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;err_code &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sd_ble_cfg_set&lt;/span&gt;&lt;span&gt;(BLE_GATTS_CFG_ATTR_TAB_SIZE, &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;bleCfg, ramStart);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;APP_ERROR_RESET&lt;/span&gt;&lt;span&gt;(err_code);&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;// Setup memory for a max number of connections&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;memset&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;bleCfg, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(bleCfg));&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bleCfg.&lt;/span&gt;&lt;span&gt;conn_cfg&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;params&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;gap_conn_cfg&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;conn_count&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (peripheralConnections &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; centralConnections);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bleCfg.&lt;/span&gt;&lt;span&gt;conn_cfg&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;params&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;gap_conn_cfg&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;event_length&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; BLE_GAP_EVENT_LENGTH_DEFAULT;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bleCfg.&lt;/span&gt;&lt;span&gt;conn_cfg&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;conn_cfg_tag&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; APP_BLE_CONN_CFG_TAG;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;err_code &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sd_ble_cfg_set&lt;/span&gt;&lt;span&gt;(BLE_CONN_CFG_GAP, &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;bleCfg, ramStart);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;APP_ERROR_RESET&lt;/span&gt;&lt;span&gt;(err_code);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;If anyone has insight on the &amp;#39;why&amp;#39;, please share.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52 SDK 15 iOS -&gt; low data rate</title><link>https://devzone.nordicsemi.com/thread/188371?ContentTypeID=1</link><pubDate>Tue, 21 May 2019 20:31:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:88b25603-a28e-41a2-80c6-746c11ab2924</guid><dc:creator>BitsAndBytes</dc:creator><description>&lt;p&gt;Thanks for the response.&lt;/p&gt;
&lt;p&gt;I&amp;#39;d be happy with 400kbps but still hitting the 10kbps (~1250 Bytes/sec) wall. Can you help me achieve the 400kbps?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52 SDK 15 iOS -&gt; low data rate</title><link>https://devzone.nordicsemi.com/thread/188203?ContentTypeID=1</link><pubDate>Tue, 21 May 2019 11:22:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a070d573-023b-49e7-a8ab-79ca0ab9fa51</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Unfortunately, 400kbps seem to be about the maximum possible with iOS (&lt;a href="https://devzone.nordicsemi.com/support-private/support/218063"&gt;https://devzone.nordicsemi.com/support-private/support/218063&lt;/a&gt;). There is a talk about throughput in: &lt;a href="https://developer.apple.com/videos/play/wwdc2017/712/"&gt;https://developer.apple.com/videos/play/wwdc2017/712/&lt;/a&gt; from 30-31 minutes and onwards.&lt;/p&gt;
&lt;p&gt;I guess you have also seen the throughput examples in the Softdevice specification here: &lt;span&gt;&lt;a title="Bluetooth Low Energy data throughput" href="https://infocenter.nordicsemi.com/topic/sds_s132/SDS/s1xx/ble_data_throughput/ble_data_throughput.html?cp=3_4_1_0_16"&gt;Bluetooth Low Energy data throughput&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>