<?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>How to improve throughput in a 3-node relay system</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/124253/how-to-improve-throughput-in-a-3-node-relay-system</link><description>Hi, I’m currently working on a setup with three nodes: 
 
 
 Node A : collects data 
 
 
 Node B : acts as a relay, forwarding data 
 
 
 Node C : processes the data and then sends the result back to Node B 
 
 
 The basic communication flow (A → B →</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 10 Sep 2025 14:28:40 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/124253/how-to-improve-throughput-in-a-3-node-relay-system" /><item><title>RE: How to improve throughput in a 3-node relay system</title><link>https://devzone.nordicsemi.com/thread/548385?ContentTypeID=1</link><pubDate>Wed, 10 Sep 2025 14:28:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9195372e-8f64-4efe-a422-5422c6f65882</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;The relatively high connection interval of 400 ms might be the reason why you get low throughput. Even if you have set long event length (you did not tell what configuration you have for that), then if any packet is lost during one connection event, the connection event ends and no further packets are sent. Therefore, a shorter connection interval (which also may give shorter event lengths) will often provide better reliability.&lt;/p&gt;
&lt;p&gt;Restructuring to one central only could also help, yes, but I recommend trying shorter connection intervals first.&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Terje&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to improve throughput in a 3-node relay system</title><link>https://devzone.nordicsemi.com/thread/548321?ContentTypeID=1</link><pubDate>Wed, 10 Sep 2025 07:50:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c9d91908-767e-4177-a6f8-34242ef19012</guid><dc:creator>ChenyangR</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Here is more detailed information:&lt;/p&gt;
&lt;p data-start="101" data-end="177"&gt;&lt;strong data-start="101" data-end="119"&gt;Wireless tech:&lt;/strong&gt; Bluetooth Low Energy using &lt;strong data-start="147" data-end="176"&gt;Nordic UART Service (NUS)&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-start="179" data-end="212"&gt;&lt;strong data-start="179" data-end="210"&gt;Roles / topology (3 nodes):&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-start="213" data-end="450"&gt;
&lt;li data-start="213" data-end="271"&gt;
&lt;p data-start="215" data-end="271"&gt;&lt;strong data-start="215" data-end="225"&gt;Node A&lt;/strong&gt; = &lt;strong data-start="228" data-end="242"&gt;Peripheral&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="213" data-end="271"&gt;
&lt;p data-start="215" data-end="271"&gt;&lt;strong data-start="228" data-end="242"&gt;&lt;/strong&gt;&lt;strong data-start="274" data-end="284"&gt;Node B&lt;/strong&gt; = &lt;strong data-start="287" data-end="316"&gt;both Central &amp;amp; Peripheral&lt;/strong&gt;&amp;nbsp;(relay: A to B as Central, B to C as Peripheral)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="362" data-end="450"&gt;
&lt;p data-start="364" data-end="450"&gt;&lt;strong data-start="364" data-end="374"&gt;Node C&lt;/strong&gt; = &lt;strong data-start="377" data-end="388"&gt;Central&lt;/strong&gt; (processes data received from B, then sends result back to B)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="452" data-end="480"&gt;&lt;strong data-start="452" data-end="478"&gt;Link roles explicitly:&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-start="481" data-end="572"&gt;
&lt;li data-start="481" data-end="527"&gt;
&lt;p data-start="483" data-end="527"&gt;&lt;strong data-start="483" data-end="501"&gt;Link #1 (A&amp;rarr;B):&lt;/strong&gt; A=Peripheral, B=Central&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="528" data-end="572"&gt;
&lt;p data-start="530" data-end="572"&gt;&lt;strong data-start="530" data-end="548"&gt;Link #2 (B and C):&lt;/strong&gt; B=Peripheral, C=Central&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="574" data-end="615"&gt;&lt;strong data-start="574" data-end="613"&gt;Connection parameters (both links):&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-start="616" data-end="1029"&gt;
&lt;li data-start="616" data-end="697"&gt;
&lt;p data-start="618" data-end="697"&gt;&lt;strong data-start="618" data-end="642"&gt;Connection interval:&lt;/strong&gt; 400 ms (interval_min = interval_max = 320 * 1.25 ms)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="616" data-end="697"&gt;
&lt;p data-start="618" data-end="697"&gt;&lt;strong data-start="700" data-end="718"&gt;&lt;/strong&gt;&lt;strong data-start="725" data-end="749"&gt;Supervision timeout:&lt;/strong&gt; 4 s (400)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="762" data-end="837"&gt;
&lt;p data-start="764" data-end="837"&gt;&lt;strong data-start="764" data-end="772"&gt;PHY:&lt;/strong&gt; 2M &lt;strong data-start="776" data-end="789"&gt;requested&lt;/strong&gt; on both links (&lt;code data-start="805" data-end="828"&gt;bt_conn_le_phy_update&lt;/code&gt; to 2M)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="838" data-end="935"&gt;
&lt;p data-start="840" data-end="935"&gt;&lt;strong data-start="840" data-end="848"&gt;MTU:&lt;/strong&gt; I call GATT MTU exchange on connect. (No custom max MTU set beyond Zephyr defaults.)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Would restructuring to &lt;strong data-start="2183" data-end="2203"&gt;one central only&lt;/strong&gt; (B as the sole central, with &lt;strong data-start="2233" data-end="2264"&gt;A and C both as peripherals&lt;/strong&gt;) help scheduling and throughput as you suggested?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to improve throughput in a 3-node relay system</title><link>https://devzone.nordicsemi.com/thread/548247?ContentTypeID=1</link><pubDate>Tue, 09 Sep 2025 13:36:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cad63ab0-db48-44fb-9006-75cef7b93d5b</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Since the proper setup depends on technology, please share what wireless technology you are using for the network, and describe the setup.&lt;/p&gt;
&lt;p&gt;If for instance you use normal Bluetooth LE connections, then the best approach would be to have the relay (B) be central, and the other nodes (A and C) be peripherals. The reason for this is that with Bluetooth LE, the timing follows the clock of the central. If you have devices communicating with different centrals, or both as central and peripheral, then there will be packet collisions or event overlaps between the different connections. If there is only one central, then events will be scheduled without overlap if possible. Further, if you use long connection events, then you might see lower throughput due to packet loss (long connection events are aborted on the first packet loss of the event.) Similarly, if the connection interval is large, there will be fewer packets sent and therefore lower throughput. 40 kbps is extremely low for BLE, though, so if you are using BLE, please share the setup (which devices have which roles) and connection parameters.&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Terje&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>