<?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>nRF 52 Throughput with different phones</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/56956/nrf-52-throughput-with-different-phones</link><description>Hello, 
 I&amp;#39;m using BT840XE module and ATT_MTU Throughput Example with S140. My goal is to measure maximum data transfer speed between module and different phones. Module acts as peripheral and phone as master. For phones, I use nRF Connect app. 
 Problem</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 04 Feb 2020 13:05:32 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/56956/nrf-52-throughput-with-different-phones" /><item><title>RE: nRF 52 Throughput with different phones</title><link>https://devzone.nordicsemi.com/thread/232569?ContentTypeID=1</link><pubDate>Tue, 04 Feb 2020 13:05:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e8842c86-9707-4f3d-81e1-0e053094bf86</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;ok. Then you are maxed out.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF 52 Throughput with different phones</title><link>https://devzone.nordicsemi.com/thread/232556?ContentTypeID=1</link><pubDate>Tue, 04 Feb 2020 12:44:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9a768962-0549-44ce-99ef-334b27dddcb5</guid><dc:creator>Rytis </dc:creator><description>&lt;p&gt;1. I&amp;#39;m working with ATT_MTU Throughput Example.&lt;/p&gt;
&lt;p&gt;2. NRF_SDH_BLE_GATT_MAX_MTU_SIZE&amp;nbsp; 247&lt;/p&gt;
&lt;p&gt;3. I&amp;#39;m sending 244 length uint8_t array&lt;/p&gt;
&lt;p&gt;4. p_ctx-&amp;gt;max_payload_len =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p_gatt_evt-&amp;gt;params.att_mtu_effective - OPCODE_LENGTH - HANDLE_LENGTH;&lt;/p&gt;
&lt;p&gt;after that line max_payload_len set to 244.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF 52 Throughput with different phones</title><link>https://devzone.nordicsemi.com/thread/232547?ContentTypeID=1</link><pubDate>Tue, 04 Feb 2020 12:33:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:47641242-7c1d-4990-830c-33cb251be4a2</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;What example are you working from?&lt;/p&gt;
&lt;p&gt;What is your&amp;nbsp;NRF_SDH_BLE_GATT_MAX_MTU_SIZE?&lt;/p&gt;
&lt;p&gt;What is the length of the notifications you are sending?&lt;/p&gt;
&lt;p&gt;When gatt_evt_handler() is called, what is the p_evt-&amp;gt;params.att_mtu_effective - OPCODE_LENGTH - HANDLE_LENGTH? It should be printed in the log:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;m_ble_nus_max_data_len = p_evt-&amp;gt;params.att_mtu_effective - OPCODE_LENGTH - HANDLE_LENGTH;
        NRF_LOG_INFO(&amp;quot;Data len is set to 0x%X(%d)&amp;quot;, m_ble_nus_max_data_len, m_ble_nus_max_data_len);&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF 52 Throughput with different phones</title><link>https://devzone.nordicsemi.com/thread/232537?ContentTypeID=1</link><pubDate>Tue, 04 Feb 2020 12:12:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a09476ef-fbf0-4b17-b308-13fcf920f767</guid><dc:creator>Rytis </dc:creator><description>&lt;p&gt;I did some tests and best throughput results are with 15ms connection interval. nRF receives 3 BLE_GATTS_EVT_HVN_TX_COMPLETE events in one connection interval. As i understand that means 3 notification packets are sent in connection interval?&lt;/p&gt;
&lt;p&gt;If connection interval is bigger than 15ms same 3 BLE_GATTS_EVT_HVN_TX_COMPLETE&amp;nbsp; events occurs. So increasing connection interval doesn&amp;#39;t help in this case.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF 52 Throughput with different phones</title><link>https://devzone.nordicsemi.com/thread/232530?ContentTypeID=1</link><pubDate>Tue, 04 Feb 2020 11:56:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4d9e0895-7a0e-4b18-b242-aaecf26a0fdf</guid><dc:creator>Edvin</dc:creator><description>[quote user="Rytis "]Could it be that iOS devices limits BLE speed?[/quote]
&lt;p&gt;&amp;nbsp;Indeed it does. But that is understandable. The phone doesn&amp;#39;t want to use the radio 100% for Bluetooth. It has a lot of other things to handle as well. The theoretical limit when you use 1Mbps&amp;nbsp;is roughly 750kbps.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In order to get higher throughput, you must increase the connection interval, and on phones this is not up to the application to decide. You can try to change to 2MBPS (if supported). That will increase the throughput, but other than that, the speed you are seeing now is probably the most you will get out of a BLE link with that phone.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user="Rytis "]If phone has Bluetooth 4.2 doesn&amp;#39;t what mean that maximum BLE 1M throughput(~700000b/s) should be &lt;span lang="en"&gt;&lt;span title=""&gt;reachable&lt;/span&gt;&lt;/span&gt;?[/quote]
&lt;p&gt;&amp;nbsp;A phone doesn&amp;#39;t give you 700kbps even though it has Bluetooth 4.2. Only if both devices (central and peripheral) can agree on connection parameters that will maximize the throughput it will give you closer to the theoretical maximum.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I think a connection interval of 50ms would be more ideal in your case, but I don&amp;#39;t think Apple supports that.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF 52 Throughput with different phones</title><link>https://devzone.nordicsemi.com/thread/232518?ContentTypeID=1</link><pubDate>Tue, 04 Feb 2020 11:00:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0a75a1db-c909-4c69-9229-caf014626439</guid><dc:creator>Rytis </dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;as suggested using ble_app_att_mtu_throughput example with Iphone 7 i managed to get only ~350000 b/s rate. This is only half theoretical 4.2 1M ble speed. I used 15ms connection interval, enabled DLE and Event Length extension.&lt;/p&gt;
&lt;p&gt;Could it be that iOS devices limits BLE speed?&lt;/p&gt;
&lt;p&gt;Also nRF board sends only 3 packets per connection interval to Iphone 7, and i think this is reason why throughput to iPhone 7 is not as big as could be theoretically.&lt;/p&gt;
&lt;p&gt;If phone has Bluetooth 4.2 doesn&amp;#39;t what mean that maximum BLE 1M throughput(~700000b/s) should be &lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;reachable&lt;/span&gt;&lt;/span&gt;?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF 52 Throughput with different phones</title><link>https://devzone.nordicsemi.com/thread/231318?ContentTypeID=1</link><pubDate>Tue, 28 Jan 2020 08:40:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6b6ad069-02a9-4243-bfe5-357d9f8e545b</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Test the ble_app_mtu throughput example. If you write config print, you should have these settings, which gives the maximum throughput:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/support-attachments/beef5d1b77644c448dabff31668f3a47-b940b306189c4930b4b66d3a8c3067dd/pastedimage1580198299315v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;Note that this is between two nRFs. You will not get the same throughput to a phone. And by the way. The &lt;a href="https://www.devicespecifications.com/en/model/6b4f34a8" rel="noopener noreferrer" target="_blank"&gt;Samsung J7&lt;/a&gt; looks like it has Bluetooth 4.1, not 4.2.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Look at the &lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v16.0.0/ble_sdk_app_att_mtu.html?cp=7_1_4_2_1_0_1#ble_sdk_app_att_mtu_test" rel="noopener noreferrer" target="_blank"&gt;test description&lt;/a&gt; for how to test the throughput example to see how to use putty to run the commands. You want to set both the MTU and Data length to maximum.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you test the ble_app_uart example, this already requests these parameters, but as I mentioned, I don&amp;#39;t think the Samsung J7 supports these features. And even if it is 4.2, many of the features that are added in Bluetooth are optional, so it still may not support increased data length.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF 52 Throughput with different phones</title><link>https://devzone.nordicsemi.com/thread/231298?ContentTypeID=1</link><pubDate>Tue, 28 Jan 2020 06:20:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4b014593-9ded-4bff-8113-db541cf23dfb</guid><dc:creator>Rytis </dc:creator><description>&lt;p&gt;Last question.&lt;/p&gt;
&lt;p&gt;So there is also a function to enbale DLE? Or MTU size just need to be increased?&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Rytis&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF 52 Throughput with different phones</title><link>https://devzone.nordicsemi.com/thread/231041?ContentTypeID=1</link><pubDate>Mon, 27 Jan 2020 09:06:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bb8ebed3-ac2d-4d7c-8c0e-b9bdd3c537b3</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;    ret_code_t err_code;
    ble_opt_t  opt;

    memset(&amp;amp;opt, 0x00, sizeof(opt));
    opt.common_opt.conn_evt_ext.enable = 1;

    err_code = sd_ble_opt_set(BLE_COMMON_OPT_CONN_EVT_EXT, &amp;amp;opt);
    APP_ERROR_CHECK(err_code);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I copied this from the ble_app_att_mtu_throughput example. I normally don&amp;#39;t recommend this example as a starting point, because it is quite complex, and can act as both a peripheral and central during runtime. However, you can see how the different settings are being set based on the incoming CLI commands.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;when you write a command, you typically get a response on the CLI. search for this response in the project, and you will find the function that will set the configuration.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF 52 Throughput with different phones</title><link>https://devzone.nordicsemi.com/thread/230888?ContentTypeID=1</link><pubDate>Fri, 24 Jan 2020 14:07:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:94204d8e-10d2-4e47-a0bd-52cd9b2cf8d7</guid><dc:creator>Rytis </dc:creator><description>&lt;p&gt;Hi Edvin,&lt;/p&gt;
&lt;p&gt;Thank you for fast response.&lt;/p&gt;
&lt;p&gt;Is there some function in SoftDevice API to request increasing Event Length?&lt;/p&gt;
&lt;p&gt;If phone accept larger MTU this means DLE is enabled?&lt;/p&gt;
&lt;p&gt;My goal is to deal with phones with at least Bluetooth 4.2 (My Samsung has 4.2). I tested iPhoneX also and it behaved similar to Samsung J7.&lt;/p&gt;
&lt;p&gt;Have a nice day,&lt;/p&gt;
&lt;p&gt;Rytis&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF 52 Throughput with different phones</title><link>https://devzone.nordicsemi.com/thread/230876?ContentTypeID=1</link><pubDate>Fri, 24 Jan 2020 13:51:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3d42e313-dbf8-4bd5-9923-fc4e76f6a2ba</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Different phones have different behavior, yes. So throughput will vary from phone to phone. However, some phones may initiate parameter changes to increase the throughput, while others don&amp;#39;t, and some simply do not support certain features.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;If you want to maximize throughput you should initiate these parameter changes from the nRF, such as requesting PHY change to 2MBPS, request to increase the MTU and DLE (Data length extension), request to increase Event Length, but in the end you will see that there will still be some differences between phones. Older phones don&amp;#39;t support certain features. Samsung J7 is a bit old (Bluetooth 4.1 I think), so it will have significantly less throughput.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>