<?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>Read characteristic exceeds MTU</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/128667/read-characteristic-exceeds-mtu</link><description>How do I determine if a read characteristic has exceeded the maximum length of the MTU and I need to use BLOB to read all the data. How do I know I have read all data using BLOB? 
 Apologise will using SDK16</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 08 Jul 2026 15:21:09 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/128667/read-characteristic-exceeds-mtu" /><item><title>RE: Read characteristic exceeds MTU</title><link>https://devzone.nordicsemi.com/thread/568919?ContentTypeID=1</link><pubDate>Wed, 08 Jul 2026 15:21:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d4de5eb0-52fc-46f8-bde7-8973a10bc244</guid><dc:creator>Malcolm</dc:creator><description>&lt;p&gt;I assume the answer is that if the length of the response equals the MTU then you assume there is more data to read. Of course if exactly equal we will do a futile read that has length 0&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Read characteristic exceeds MTU</title><link>https://devzone.nordicsemi.com/thread/568903?ContentTypeID=1</link><pubDate>Wed, 08 Jul 2026 12:29:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c678c5e3-ec0e-4c34-94f3-f2c78a789dd5</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Check out&amp;nbsp;the documentation for&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/r/6ufiCB5WB2ID45~3kILwRQ/H1j5QdVUKTWf~~mwy4FZUw?section=ga813daa5810a1d2ed31d2d6fe49d3ef11"&gt;sd_ble_gattc_read&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;(uint16_t conn_handle, uint16_t handle, uint16_t offset) which will trigger the&amp;nbsp;BLE_GATTC_EVT_READ_RSP event, see&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/r/6ufiCB5WB2ID45~3kILwRQ/v6HRLI3gmtp0K1VFDh6mcQ"&gt;ble_gattc_evt_read_rsp_t&amp;nbsp;&lt;/a&gt;.&lt;/span&gt;:&amp;nbsp;&lt;br /&gt;&lt;a href="https://docs.nordicsemi.com/r/6ufiCB5WB2ID45~3kILwRQ/H1j5QdVUKTWf~~mwy4FZUw?section=ga813daa5810a1d2ed31d2d6fe49d3ef11"&gt;https://docs.nordicsemi.com/r/6ufiCB5WB2ID45~3kILwRQ/H1j5QdVUKTWf~~mwy4FZUw?section=ga813daa5810a1d2ed31d2d6fe49d3ef11&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;a href="https://docs.nordicsemi.com/r/6ufiCB5WB2ID45~3kILwRQ/v6HRLI3gmtp0K1VFDh6mcQ"&gt;https://docs.nordicsemi.com/r/6ufiCB5WB2ID45~3kILwRQ/v6HRLI3gmtp0K1VFDh6mcQ&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;This function initiates or resumes a GATT Read (Long) Characteristic or Descriptor procedure. If the Characteristic or Descriptor to be read is longer than ATT_MTU - 1, this function must be called multiple times with appropriate offset to read the complete value.&amp;quot;&lt;/p&gt;
&lt;p&gt;So something along the lines of:&lt;/p&gt;
&lt;p&gt;Client Server&lt;br /&gt; |--- Read(handle, offset=0) ----&amp;gt;|&lt;br /&gt; |&amp;lt;-- ReadRsp(len=max_chunk) -----| ← full chunk, more data&lt;br /&gt; |--- Read(handle, offset+=len) -&amp;gt;|&lt;br /&gt; |&amp;lt;-- ReadRsp(len=max_chunk) -----| ← full chunk, more data&lt;br /&gt; |--- Read(handle, offset+=len) -&amp;gt;|&lt;br /&gt; |&amp;lt;-- ReadRsp(len &amp;lt; max_chunk) ---| ← partial chunk, DONE&lt;/p&gt;
&lt;p&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>