<?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>MTU exchange procedure</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/61709/mtu-exchange-procedure</link><description>When the macro NRF_SDH_BLE_GATT_MAX_MTU_SIZE is changed in the sdk_config.h file of any example from the ble_peripheral folder, the slave sends the message Exchange MTU Request (ATT_EXCHANGE_MTU_REQ) immediately after the connect event. Is it correct</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 29 May 2020 07:36:05 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/61709/mtu-exchange-procedure" /><item><title>RE: MTU exchange procedure</title><link>https://devzone.nordicsemi.com/thread/252309?ContentTypeID=1</link><pubDate>Fri, 29 May 2020 07:36:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:808e4525-bbfe-460f-8bca-cb2684d15458</guid><dc:creator>Amanda Hsieh</dc:creator><description>&lt;p&gt;Thanks for your feedback. I will report to the internal. &lt;span class="emoticon" data-url="https://devzone.nordicsemi.com/cfs-file/__key/system/emoji/1f642.svg" title="Slight smile"&gt;&amp;#x1f642;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;-Amanda H.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: MTU exchange procedure</title><link>https://devzone.nordicsemi.com/thread/252217?ContentTypeID=1</link><pubDate>Thu, 28 May 2020 13:45:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:552c157e-7076-40f1-8994-ad7f8ab2b0f4</guid><dc:creator>alemv</dc:creator><description>&lt;p&gt;In my opinion, your interpretation of the &amp;quot;The ATT_EXCHANGE_MTU_REQ PDU is used by the client to inform the server&amp;quot; as &amp;quot;the paragraph does not explicitly prohibit the server from doing the same&amp;quot; is very controversial.&lt;br /&gt;Because:&lt;br /&gt;1. The ATT_EXCHANGE_MTU_REQ PDU has &amp;quot;Client Rx MTU&amp;quot; parameter, not &amp;quot;Rx MTU&amp;quot; or &amp;quot;Server Rx MTU&amp;quot;;&lt;br /&gt;2. If the GATT server sends the MTU request, it may cause problems:&lt;br /&gt;- with Windows 10, see &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/38758/why-is-ble_gatts_evt_exchange_mtu_request-coming-from-a-gatt-server/171781#171781"&gt;this message&lt;/a&gt;&lt;br /&gt;- with Linux (Python + BluePY + Bluez), see &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/48593/mtu-change-does-not-change-packet-size"&gt;this thread&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So, in my opinion, the modifying on_connected_evt() function in nrf_ble_gatt.c like&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/48593/mtu-change-does-not-change-packet-size/193356#193356"&gt;in this message&lt;/a&gt; is not a good alternative. A preprocessor macro or other choice for a programmer would be better.&lt;/p&gt;
&lt;p&gt;Anyway, thank you for your time and clarification of your position.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: MTU exchange procedure</title><link>https://devzone.nordicsemi.com/thread/252144?ContentTypeID=1</link><pubDate>Thu, 28 May 2020 11:16:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c0a16cdb-ed04-4eb7-9357-4144ec2c22da</guid><dc:creator>Amanda Hsieh</dc:creator><description>&lt;p&gt;Hi,&amp;nbsp;&lt;/p&gt;
[quote user="alemv"]The ATT_EXCHANGE_MTU_REQ PDU is used by the client to inform the server of the client’s maximum receive MTU size and request the server to respond with its maximum receive MTU size.[/quote]
&lt;p&gt;The spec. indicates&amp;nbsp;&lt;span&gt;that MTU exchange is only used by the Client, but the paragraph does not explicitly prohibit the server from doing the same. BT spec is usually not this vague in its description.&amp;nbsp;Both Central and Peripheral devices can issue an MTU exchange request, regardless of the GATT role. Our SoftDevice will handle the request so as to be in accordance with BT spec.&amp;nbsp;&lt;/span&gt;&lt;span&gt; Please see &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/38758/why-is-ble_gatts_evt_exchange_mtu_request-coming-from-a-gatt-server/237085#237085"&gt;this similar question&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;-Amanda H.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: MTU exchange procedure</title><link>https://devzone.nordicsemi.com/thread/251941?ContentTypeID=1</link><pubDate>Wed, 27 May 2020 12:17:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bfb6d7db-7049-4225-9a2b-91481eccc474</guid><dc:creator>alemv</dc:creator><description>&lt;p&gt;The topic you were referring to does inform nothing about ATT_EXCHANGE_MTU_REQ.&lt;br /&gt;&lt;br /&gt;It seems you do not understand my question. I will try to explain in steps:&lt;br /&gt;- select for example BLE Blinky Application (&amp;lt;InstallFolder&amp;gt;\examples\ble_peripheral\ble_app_blinky);&lt;br /&gt;- increase NRF_SDH_BLE_GATT_MAX_MTU_SIZE in sdk_config.h:&lt;br /&gt;#define NRF_SDH_BLE_GATT_MAX_MTU_SIZE 50;&lt;br /&gt;- build and run example;&lt;br /&gt;- establish BLE connection.&lt;br /&gt;&lt;br /&gt;The roles of the BLE Blinky Application in this connection are:&lt;br /&gt;- LL slave&lt;br /&gt;- GAP peripheral&lt;br /&gt;- GATT server&lt;br /&gt;&lt;br /&gt;So the question is the same: Why does the GATT server (BLE Blinky Application) send an ATT_EXCHANGE_MTU_REQ request at all?&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/965x203/__key/communityserver-discussions-components-files/4/mtu_5F00_request.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;BLUETOOTH CORE SPECIFICATION Version 5.2 | Vol 3, Part F&lt;br /&gt;3.4.2 MTU exchange&lt;br /&gt;3.4.2.1 ATT_EXCHANGE_MTU_REQ&lt;br /&gt;The ATT_EXCHANGE_MTU_REQ PDU is used by the client to inform the server of the client&amp;rsquo;s maximum receive MTU size and request the server to respond with its maximum receive MTU size.&lt;br /&gt;&lt;br /&gt;Please do not redirect me to the threads not related to the question.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: MTU exchange procedure</title><link>https://devzone.nordicsemi.com/thread/251900?ContentTypeID=1</link><pubDate>Wed, 27 May 2020 10:28:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8557968c-312e-404c-b983-056f0d9bab85</guid><dc:creator>Amanda Hsieh</dc:creator><description>&lt;p&gt;Hi,&amp;nbsp;&lt;/p&gt;
[quote user="alemv"]Why does the GATT Server (any peripheral example) send an ATT_EXCHANGE_MTU_REQ request at all?[/quote]
&lt;p&gt;&lt;span&gt;As the central and peripheral are the GAP roles of the device, while the server and client are the GATT roles of the device. Better explained in&amp;nbsp;&lt;/span&gt;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/71/what-is-a-client-and-server-in-ble"&gt;this thread&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;-Amanda H.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: MTU exchange procedure</title><link>https://devzone.nordicsemi.com/thread/251666?ContentTypeID=1</link><pubDate>Tue, 26 May 2020 09:57:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:29a09ccb-1853-4f15-9721-207c24f2375a</guid><dc:creator>alemv</dc:creator><description>&lt;p&gt;You did not answer my question.&lt;br /&gt;Your link &amp;quot;Data Length Update Procedure&amp;quot; is not related to the question at all (this is a procedure for LL PDU).&lt;br /&gt;The &amp;quot;GATTC ATT_MTU Exchange&amp;quot; link shows the correct procedure for the GATT Client, the &amp;quot;GATTS ATT_MTU Exchange&amp;quot; link - for the GATT Server.&lt;br /&gt;But the question was different: Why does the GATT Server (any peripheral example) send an ATT_EXCHANGE_MTU_REQ request at all?&lt;br /&gt;Bluetooth Core Specification indicates that &amp;quot;The ATT_EXCHANGE_MTU_REQ PDU is used by the client to inform the server of the client&amp;rsquo;s maximum receive MTU size and request the server to respond with its maximum receive MTU size&amp;quot;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: MTU exchange procedure</title><link>https://devzone.nordicsemi.com/thread/251624?ContentTypeID=1</link><pubDate>Tue, 26 May 2020 08:15:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bc4bef2a-c843-49c9-82c4-5f9c8f124eb0</guid><dc:creator>Amanda Hsieh</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&lt;span&gt;See&amp;nbsp;&lt;/span&gt;&lt;a title="GATTS ATT_MTU Exchange" href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.0.0/group___b_l_e___g_a_t_t_s___m_t_u___e_x_c_h_a_n_g_e.html?cp=2_3_1_1_0_2_4_3_1"&gt;GATTS ATT_MTU Exchange&lt;/a&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;a title="GATTC ATT_MTU Exchange" href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.0.0/group___b_l_e___g_a_t_t_c___m_t_u___e_x_c_h_a_n_g_e.html?cp=2_3_1_1_0_2_2_3_0"&gt;GATTC ATT_MTU Exchange&lt;/a&gt;&lt;span&gt;, and&amp;nbsp;&lt;/span&gt;&lt;a title="Data Length Update Procedure" href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.0.0/group___b_l_e___g_a_p___d_a_t_a___l_e_n_g_t_h___u_p_d_a_t_e___p_r_o_c_e_d_u_r_e___m_s_c.html?cp=2_3_1_1_0_2_1_3_6"&gt;Data Length Update Procedure&lt;/a&gt;&lt;span&gt;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;-Amanda H.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>