<?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>CoAP Block-wise Transfer over OpenThread (tested via OT-CLI)</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/126464/coap-block-wise-transfer-over-openthread-tested-via-ot-cli</link><description>I’m trying to transmit a payload of up to 2,450 bytes using CoAP over OpenThread. Before jumping into firmware development, I want to evaluate the feasibility of transmitting large payloads using the OT-CLI sample. 
 As a starting point, let me clarify</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 26 Feb 2026 16:48:04 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/126464/coap-block-wise-transfer-over-openthread-tested-via-ot-cli" /><item><title>RE: CoAP Block-wise Transfer over OpenThread (tested via OT-CLI)</title><link>https://devzone.nordicsemi.com/thread/562168?ContentTypeID=1</link><pubDate>Thu, 26 Feb 2026 16:48:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2bf75085-cbc0-47d2-88b7-5a196627e8d6</guid><dc:creator>gc0rreiab</dc:creator><description>&lt;p data-start="75" data-end="314"&gt;Given that the OT-CLI sample uses direct IEEE 802.15.4 radio integration with the OpenThread stack, would you still recommend using the Zephyr CoAP API instead of following the OT-CLI implementation approach?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CoAP Block-wise Transfer over OpenThread (tested via OT-CLI)</title><link>https://devzone.nordicsemi.com/thread/561943?ContentTypeID=1</link><pubDate>Tue, 24 Feb 2026 11:59:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2a4f1986-11bf-4290-b394-5fdfdd79b9a3</guid><dc:creator>Benjamin</dc:creator><description>&lt;p&gt;I need to correct myself. The default architecture in the CLI sample is the direct IEEE 802.15.4 radio integration with the OpenThread Stack, not the integration with Zephyr networking layer (L2).&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CoAP Block-wise Transfer over OpenThread (tested via OT-CLI)</title><link>https://devzone.nordicsemi.com/thread/561740?ContentTypeID=1</link><pubDate>Fri, 20 Feb 2026 19:53:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e4abcda6-34c2-4817-8412-eacbbb62c0c3</guid><dc:creator>gc0rreiab</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Thank you for the effort and guidance &amp;mdash; I really appreciate it. I&amp;rsquo;ll test this on my side and provide feedback shortly.&lt;/p&gt;
&lt;p&gt;Regarding your suggestion to use the Zephyr CoAP API, do you foresee any issues with combining the Zephyr CoAP API (using OpenThread as the transport layer) with direct OpenThread API calls?&lt;/p&gt;
&lt;p&gt;In my application, I infer the location of SED devices based on their parent router&amp;rsquo;s MAC address and cross-reference this information with a LUT that maps all Thread Router devices, their MAC addresses, and their physical locations. Consequently, one of the data fields included in the large payload (up to 2500 bytes) that the SED needs to transmit to the CoAP server via block-wise transfer is the MAC address of its OpenThread parent router, which I obtain through direct OpenThread API calls.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CoAP Block-wise Transfer over OpenThread (tested via OT-CLI)</title><link>https://devzone.nordicsemi.com/thread/561733?ContentTypeID=1</link><pubDate>Fri, 20 Feb 2026 15:34:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:127e49ac-e0ee-43ea-b823-53c84a21ce98</guid><dc:creator>Benjamin</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I reproduced your&amp;nbsp;issue with block-wise transfers and confirmed that the block count parameter was being treated as the payload.&lt;/p&gt;
&lt;p&gt;When building the sample, you are using the prebuilt OpenThread library, so the configuration changes are not applied. Block-wise CoAP is not enabled by default so it fails.&lt;/p&gt;
&lt;p&gt;To fix this:&lt;/p&gt;
&lt;p&gt;Enable block-wise CoAP support:&lt;br /&gt; &lt;code&gt;CONFIG_OPENTHREAD_COAP_BLOCK=y&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This maps to:&lt;br /&gt; &lt;code&gt;OPENTHREAD_CONFIG_COAP_BLOCKWISE_TRANSFER_ENABLE&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Force OpenThread to rebuild by enabling:&lt;br /&gt; &lt;code&gt;CONFIG_OPENTHREAD_SOURCES=y&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;After enabling both options and rebuilding, block-wise transfers work correctly. I was able to send a request successfully using:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ot coap post &amp;lt;synthesized IPv6 address&amp;gt; &amp;lt;uri&amp;gt; block-64 8&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;For the last question. You should rely on the Zephyr CoAP API as described in these&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/protocols/thread/overview/ot_integration.html#overview"&gt;docs&lt;/a&gt;, this requires no changes as this is the default.&amp;nbsp;The docs also describes the pros and cons of each approach.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Benjamin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CoAP Block-wise Transfer over OpenThread (tested via OT-CLI)</title><link>https://devzone.nordicsemi.com/thread/561703?ContentTypeID=1</link><pubDate>Fri, 20 Feb 2026 12:02:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:975173f2-cad7-43a1-8162-33c5d94e6cfe</guid><dc:creator>gc0rreiab</dc:creator><description>&lt;p&gt;Hi Benjamin,&lt;/p&gt;
&lt;p&gt;Are there any updates on this? I&amp;rsquo;m still unable to determine whether it&amp;rsquo;s possible to test CoAP Block-Wise transfers over OpenThread using the ot-cli sample or directly through the OpenThread APIs in the nRF Connect SDK.&lt;/p&gt;
&lt;p&gt;Even after enabling the relevant Kconfig parameters, the feature does not work as expected:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;# Enable OpenThread
CONFIG_OPENTHREAD=y
# Enable OpenThread features 
CONFIG_OPENTHREAD_NORDIC_LIBRARY_MASTER=y
CONFIG_OPENTHREAD_COAP_BLOCK=y&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CoAP Block-wise Transfer over OpenThread (tested via OT-CLI)</title><link>https://devzone.nordicsemi.com/thread/561201?ContentTypeID=1</link><pubDate>Mon, 16 Feb 2026 08:56:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:21ffc667-275f-432b-9f6b-cd341bbfb51a</guid><dc:creator>Benjamin</dc:creator><description>&lt;p&gt;&lt;span&gt;Hi,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thank you for your response and for your patience. We have not had the opportunity to review your ticket yet, but we hope to&amp;nbsp;provide an update before the end of the week.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Best regards,&lt;br /&gt;Benjamin&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CoAP Block-wise Transfer over OpenThread (tested via OT-CLI)</title><link>https://devzone.nordicsemi.com/thread/560777?ContentTypeID=1</link><pubDate>Tue, 10 Feb 2026 10:48:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:17938b97-5c07-48e2-a6b8-eb16a2d932f0</guid><dc:creator>gc0rreiab</dc:creator><description>&lt;p&gt;&lt;span&gt;Sorry for the late response. Regarding the specific Border Router I&amp;rsquo;m currently using, I&amp;rsquo;m running a prebuilt Docker container with a working Border Router from the &lt;/span&gt;&lt;a href="https://openthread.io/guides/border-router/prepare"&gt;official page&lt;/a&gt;&amp;nbsp;on an RPi CM4 + nRF52840 Dongle&lt;span&gt;. As far as I understand, each CoAP Block-Wise transfer is treated as an independent CoAP message. Therefore, if all normal CoAP messages transmitted by my SED device are reaching the CoAP server, I assume the issue is not related to the OTBR. Have you already run any tests on your side?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Another question you have been ignored in my different&amp;nbsp;post:&amp;nbsp;I need to send CoAP payloads larger than 2.5 KB over OpenThread (nRF54L15DK) and noticed that both the Zephyr CoAP API and the OpenThread CoAP API support block-wise transfers. For this use case, which should be preferred? Should I use the Zephyr CoAP API or rely directly on the OpenThread CoAP API for block-wise payloads over OpenThread, and what are the main pros&amp;nbsp;and cons of each approach?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CoAP Block-wise Transfer over OpenThread (tested via OT-CLI)</title><link>https://devzone.nordicsemi.com/thread/558718?ContentTypeID=1</link><pubDate>Wed, 14 Jan 2026 14:59:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:365d3e6a-d7f4-4ab4-a28a-f9089775393e</guid><dc:creator>Benjamin</dc:creator><description>&lt;p&gt;&lt;span&gt;Hi,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I have not tested it&amp;nbsp;yet, but I will try to reproduce.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;What are you using as your&amp;nbsp;Border Router?&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Could you share your build log and the exact shell commands you run, step by step?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If available, an 802.15.4 sniffer trace would also be very helpful.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Regards,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Benjamin&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CoAP Block-wise Transfer over OpenThread (tested via OT-CLI)</title><link>https://devzone.nordicsemi.com/thread/558632?ContentTypeID=1</link><pubDate>Tue, 13 Jan 2026 18:00:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:38fa2e6a-1ed4-4583-bc23-fc086da5dae7</guid><dc:creator>gc0rreiab</dc:creator><description>&lt;p&gt;I&amp;rsquo;ve added the suggested configuration to my &lt;code&gt;prj.conf&lt;/code&gt;, but the behavior of the &lt;code&gt;ot-cli&lt;/code&gt; sample when using the block-wise command remains the same.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#
# Copyright (c) 2020 Nordic Semiconductor
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#

# Enable OpenThread
CONFIG_OPENTHREAD=y
# Enable OpenThread features 
CONFIG_OPENTHREAD_NORDIC_LIBRARY_MASTER=y
CONFIG_OPENTHREAD_COAP_BLOCK=y

# Network shell
CONFIG_SHELL=y
CONFIG_OPENTHREAD_SHELL=y
CONFIG_SHELL_ARGC_MAX=26
CONFIG_SHELL_CMD_BUFF_SIZE=2510
CONFIG_GPIO_SHELL=y

# Increase Settings storage size
CONFIG_PM_PARTITION_SIZE_SETTINGS_STORAGE=0x8000
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Below are the steps I&amp;rsquo;m following.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;code&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;1. From the &lt;code&gt;ot-cli&lt;/code&gt; sample (running on the nRF54L15 DK), obtain the synthesized IPv6 address:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;pre class="ui-code" data-mode="text"&gt;uart:~$  ot dns resolve4 coap.me
DNS response for coap.me. - fd84:eb3c:3ceb:2:0:0:8666:da12 TTL:300 
Done&lt;/pre&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2. Send a block-wise CoAP request:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;pre class="ui-code" data-mode="text"&gt;uart:~$ ot coap post fd84:eb3c:3ceb:2:0:0:8666:da12 large-create block-64 20
Done&lt;/pre&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Based on the &lt;code&gt;coap.me&lt;/code&gt; web interface, the server appears to receive only the value &lt;code&gt;20&lt;/code&gt;, rather than 20 blocks of random data as described in the documentation.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1768327034548v2.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;Have you tested this on your side? How can block-wise transfer be enabled in the ot-cli sample?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CoAP Block-wise Transfer over OpenThread (tested via OT-CLI)</title><link>https://devzone.nordicsemi.com/thread/558566?ContentTypeID=1</link><pubDate>Tue, 13 Jan 2026 09:21:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e3830e0a-32e7-44de-b3d4-3b7fd3bb6dca</guid><dc:creator>Benjamin</dc:creator><description>&lt;p&gt;Hi,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You do not set&amp;nbsp;OPENTHREAD_CONFIG_COAP_BLOCKWISE_TRANSFER_ENABLE&lt;span&gt;&amp;nbsp;directly in your prj.conf as this is not a Kconfig symbol. It is part of&lt;span&gt;&amp;nbsp;OpenThread’s CMake feature flags.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Try setting CONFIG_OPENTHREAD_COAP_BLOCK=y instead.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;Benjamin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CoAP Block-wise Transfer over OpenThread (tested via OT-CLI)</title><link>https://devzone.nordicsemi.com/thread/558448?ContentTypeID=1</link><pubDate>Sun, 11 Jan 2026 07:48:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:63b9eda7-5efd-488a-ac89-2ff7c61cf53b</guid><dc:creator>Achim Kraus</dc:creator><description>&lt;p&gt;Not as answer to you question, more a general note on blockwise (with a decade of experience ;-) ):&lt;/p&gt;
&lt;p&gt;Using PUT blockwise comes with the challenge, that in case of failures it&amp;#39;s not clear how to recover and usually requires a &amp;quot;full retry&amp;quot;.&lt;/p&gt;
&lt;p&gt;Exchanging the roles (usually easy with CoAP though all messages share the same basic structure, regardless or request or response) enables in common cases to use a GET blockwise, which is much easier to recover from failures, as long as the resources to read is &amp;quot;stable enough&amp;quot;.&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>