<?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>Multi peripheral with windows device API (BluetoothLEDevice/C#</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/86764/multi-peripheral-with-windows-device-api-bluetoothledevice-c</link><description>Hi, 
 I&amp;#39;m using s140 trying to connect up to 8 devices to windows BLE adapter and BluetoothLEDevice object, I have 2 problems, 
 1- the maximum throughput with different configurations, connection interval (7.5ms , 11.25ms , 20.25ms , 40ms) or opt.common_opt</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Sat, 09 Apr 2022 21:18:35 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/86764/multi-peripheral-with-windows-device-api-bluetoothledevice-c" /><item><title>RE: Multi peripheral with windows device API (BluetoothLEDevice/C#</title><link>https://devzone.nordicsemi.com/thread/362711?ContentTypeID=1</link><pubDate>Sat, 09 Apr 2022 21:18:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:162057cc-bd17-4359-bcef-4f1d41e8c512</guid><dc:creator>mhassan@thoughttechnology.com</dc:creator><description>&lt;p&gt;I could find the reason of problem 1, The problem was my BT dongle adapter which is &amp;quot;Laird BT820-2&amp;quot; it seems the dongle does not support 2M PHY also the connection event always get one packet each 7.5ms., now I&amp;#39;m using laptop dongle which is&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;table class="banded"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;LMP 10&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p class=""&gt;Bluetooth Core Specification 5.1&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I could achieve 800K throughput , and the&lt;span&gt;&amp;nbsp;&lt;/span&gt;optimized&lt;span&gt;&amp;nbsp;&lt;/span&gt;connection interval in my case is 30ms, maybe windows only accept (specific number of packet each interval because in theory longer interval should result less overhead of interval event itself).&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;ATT MTU size: 247
hvn_tx_queue_size = 32
#define NRF_SDH_BLE_GAP_EVENT_LENGTH MSEC_TO_UNITS(30, UNIT_1_25_MS) 
#define MIN_CONN_INTERVAL               MSEC_TO_UNITS(30, UNIT_1_25_MS) 
#define MAX_CONN_INTERVAL               MSEC_TO_UNITS(30, UNIT_1_25_MS)		
.tx_phys = BLE_GAP_PHY_2MBPS,
.rx_phys = BLE_GAP_PHY_2MBPS
opt.common_opt.conn_evt_ext.enable = 1;

TX Buffer size increased to 32 has very high effect on speed(couldn&amp;#39;t set more because of memory error but I believe we can fix this problem)
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The problem 2 still remained, the simple definition is when we connect several devices only one of them connects with maximum speed an the others connect with lower speed for example in the last&amp;nbsp;test, 4 devices connected as , A:550K , B:80K . C:80k , D:80k&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multi peripheral with windows device API (BluetoothLEDevice/C#</title><link>https://devzone.nordicsemi.com/thread/362679?ContentTypeID=1</link><pubDate>Fri, 08 Apr 2022 23:03:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3ac601a1-d8a7-4043-9ce0-f62354fcca9d</guid><dc:creator>mhassan@thoughttechnology.com</dc:creator><description>&lt;p&gt;So, for the sending process, I have an application buffer which is 16K and each time I send part of this buffer (each tx packet 244 bytes), I&amp;#39;ve either tested :&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 1- pooling mode by checking&amp;nbsp;sd_ble_gatts_hvx to push data and if it returns&amp;nbsp;NRF_SUCCESS&amp;nbsp;will prepare another 244 bytes to send. the pooling is very fast and most of time is less than 1ms.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 2- Event mode by waiting for&amp;nbsp;BLE_GATTS_EVT_HVN_TX_COMPLETE to send the next tx packet&lt;/p&gt;
&lt;p&gt;for the measurement In the FW side I&amp;#39;m using&amp;nbsp;UART to see successfully &lt;span&gt;sd_ble_gatts_hvx&amp;nbsp;&amp;nbsp;&lt;/span&gt;buffering time also can see &lt;span&gt;BLE_GATTS_EVT_HVN_TX_COMPLETE&amp;nbsp;time and distance between 2 subsequent events&amp;nbsp;&lt;/span&gt;, &lt;span&gt;The log shows almost each 7.5ms one packet is accepted as we can see in the logs here.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;In the application side I measure received RX bytes and it is 220 kb/s. It seems windows always receive packets each 7.5ms and it doesn&amp;#39;t matter what is connection interval time!. is there any solution for that or is there anyone could achieve more than one packet each 7.5ms (more than 260kb) with windows?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;and why even when i don&amp;#39;t send data, connecting&amp;nbsp;second device reduces first connected device speed!?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;thanks!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="175" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1649458734441v5.png" width="216" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Maximum rate is in the PHY RX rate field&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="232" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1649457613497v1.png" width="220" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;this log &lt;span&gt;above,&amp;nbsp;&lt;/span&gt;is for 7.5ms connection interval with conn_evt_ext enabled&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="292" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1649458101947v3.png" width="225" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;this log above, is for 23.75ms connection interval with&lt;span&gt;&amp;nbsp;&lt;/span&gt;conn_evt_ext enabled&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="242" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1649457775727v2.png" width="206" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;this log above, is for 23.75ms connection interval with&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;conn_evt_ext&amp;nbsp;disabled, this one shows if we disable multipacket each interval only receives one packet&amp;nbsp;and if it is enabled windows acts like 7.5ms connection interval.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multi peripheral with windows device API (BluetoothLEDevice/C#</title><link>https://devzone.nordicsemi.com/thread/362628?ContentTypeID=1</link><pubDate>Fri, 08 Apr 2022 13:26:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:32a4044d-5ea6-40aa-8b42-b705e3ace4bf</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;How do you send your packets that you measure the throughput on? And what is your event length? I see that you have a definition NRF_SDH_BLE_GAP_EVENT_LENGTH, but where do you use that in your application? By default it is used in nrf_sdh_ble.c, so unless you have changed it, it should be used there.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Throughput on BLE with many connections is really quite complex. I suggest you test the example ble_app_att_mtu_throughput from SDK\examples\ble_central_and_peripheral\experimental\&lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.1.0/ble_sdk_app_att_mtu.html?cp=8_1_4_2_1_0"&gt;ble_app_att_mtu_throughput&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Regarding Issue 2: Does it consistently happen only when you use device A and B? And is A, B and C running the exact same application?&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: Multi peripheral with windows device API (BluetoothLEDevice/C#</title><link>https://devzone.nordicsemi.com/thread/362488?ContentTypeID=1</link><pubDate>Fri, 08 Apr 2022 06:44:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:caa5812a-4602-4eab-b1be-4aaab8455c28</guid><dc:creator>mhassan@thoughttechnology.com</dc:creator><description>&lt;p&gt;I tested more devices for the problem 2, so device #A and #B have this effect but (A# with #C ) or&amp;nbsp;&lt;span&gt;(B#&amp;nbsp;with #C ) working fine, so is there any id or some identification number which causes conflict between 2 specific devices? or is there any RF Frequency conflict between this 2 devices?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>