<?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>Matter OTA Over Thread — Image Transfer Time Optimization Guidance Needed</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/121963/matter-ota-over-thread-image-transfer-time-optimization-guidance-needed</link><description>Dear Nordic, 
 We’re working on a Smart Door Lock project built on custom hardware that includes an nRF5340 and several other controllers. For firmware updates, we’ve adopted Nordic’s Matter OTA mechanism, with some customizations. Specifically, we modified</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 16 Jun 2025 11:12:26 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/121963/matter-ota-over-thread-image-transfer-time-optimization-guidance-needed" /><item><title>RE: Matter OTA Over Thread — Image Transfer Time Optimization Guidance Needed</title><link>https://devzone.nordicsemi.com/thread/539368?ContentTypeID=1</link><pubDate>Mon, 16 Jun 2025 11:12:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:743b994c-855d-4d7b-a0d8-04a71776f9e9</guid><dc:creator>Marte Myrvold</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;Kaushik,&lt;/p&gt;
&lt;p&gt;As you mentioned, the main issue is battery life. If DFU is done rarely and the update does not take too long, it should be fine, but if the device is updated frequently and updates take 10-15 minutes, then you might see a significant impact on the device&amp;#39;s battery life.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Marte&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Matter OTA Over Thread — Image Transfer Time Optimization Guidance Needed</title><link>https://devzone.nordicsemi.com/thread/538949?ContentTypeID=1</link><pubDate>Thu, 12 Jun 2025 06:11:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6e945e2d-46f3-4cea-bcbc-36a6729bb538</guid><dc:creator>Kaushik Parsana</dc:creator><description>&lt;p data-start="132" data-end="141"&gt;Hi Marte,&lt;/p&gt;
&lt;p data-start="143" data-end="389"&gt;I wanted to share that switching the device role during the Matter OTA process has worked well on my end. It has significantly reduced the image transfer time&amp;mdash;from the earlier 25&amp;ndash;30 minutes down to just 12&amp;ndash;14 minutes.&lt;/p&gt;
&lt;p data-start="391" data-end="702"&gt;I understand that this change could have an impact on battery life. However, could you please let me know if there are any other potential consequences of switching to this mode temporarily during the OTA process? Your insights on this will really help us make an informed decision about adopting this approach.&lt;/p&gt;
&lt;p data-start="704" data-end="739"&gt;Thanks &amp;amp; Regards,&lt;br data-start="721" data-end="724" /&gt; Kaushik Parsana&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Matter OTA Over Thread — Image Transfer Time Optimization Guidance Needed</title><link>https://devzone.nordicsemi.com/thread/538619?ContentTypeID=1</link><pubDate>Tue, 10 Jun 2025 09:43:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1b7775a1-578d-4519-bb04-9f2e65988ca6</guid><dc:creator>Marte Myrvold</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;Kaushik,&lt;/p&gt;
&lt;p&gt;Since changing the interval did not help, you might have to change the role.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can change it by setting the link mode to&amp;nbsp;mRXonWhenIdle like this:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;otInstance *instance = openthread_get_default_instance();
otLinkModeConfig ot_mode = otThreadGetLinkMode(instance);
linkMode.mRxOnWhenIdle = true;
otThreadSetLinkMode=(instance, ot_mode);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;To switch back to SED again, set mRXonWhenIdle = false.&lt;/p&gt;
&lt;p&gt;You can see an example of this in the OpenThread CoAP sample, where you can toggle between MED and SED mode, see&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-nrf/blob/v3.0.2/samples/openthread/coap_client/src/coap_client_utils.c#L194-L213"&gt;https://github.com/nrfconnect/sdk-nrf/blob/v3.0.2/samples/openthread/coap_client/src/coap_client_utils.c#L194-L213&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can switch to MED in&amp;nbsp;&lt;span&gt;&lt;a href="https://github.com/nrfconnect/sdk-connectedhomeip/blob/v3.0.2/src/platform/nrfconnect/OTAImageProcessorImpl.cpp#L70-L90"&gt;PrepareDownload()&lt;/a&gt;&amp;nbsp;and back to SED in&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-connectedhomeip/blob/v3.0.2/src/platform/nrfconnect/OTAImageProcessorImpl.cpp#L139-L150"&gt;Abort()&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-connectedhomeip/blob/v3.0.2/src/platform/nrfconnect/OTAImageProcessorImpl.cpp#L152-L181"&gt;Apply()&lt;/a&gt;, similar to how we do it for Wi-Fi.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Do you have any specific requirements regarding OTA and how long it takes? Matter OTA is happening in the background, so it should not impact the user experience, even if it takes a long time.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Marte&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Matter OTA Over Thread — Image Transfer Time Optimization Guidance Needed</title><link>https://devzone.nordicsemi.com/thread/538553?ContentTypeID=1</link><pubDate>Mon, 09 Jun 2025 12:34:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:00d19d54-404d-4124-9690-5e0d08473f7f</guid><dc:creator>Kaushik Parsana</dc:creator><description>&lt;p&gt;HI Marte,&lt;/p&gt;
&lt;p data-start="92" data-end="161"&gt;In our project, we have the following default polling configurations:&lt;/p&gt;
&lt;ul data-start="163" data-end="222"&gt;
&lt;li data-start="163" data-end="191"&gt;
&lt;p data-start="165" data-end="191"&gt;&lt;strong data-start="165" data-end="182"&gt;Fast Polling:&lt;/strong&gt; 200 ms&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="192" data-end="222"&gt;
&lt;p data-start="194" data-end="222"&gt;&lt;strong data-start="194" data-end="211"&gt;Slow Polling:&lt;/strong&gt; 1 second&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="224" data-end="425"&gt;During Matter OTA, I updated the fast polling interval from 200 ms to 10 ms using the &lt;code data-start="310" data-end="333"&gt;otLinkSetPollPeriod()&lt;/code&gt; API. However, this change doesn&amp;rsquo;t seem to improve the Matter OTA transfer time as expected.&lt;/p&gt;
&lt;p data-start="427" data-end="834"&gt;Could you please guide us on how to switch the Thread device&amp;#39;s role or mode before and after the OTA process? You&amp;#39;ve already shared how to manage this for Wi-Fi, but since we&amp;rsquo;re using a Matter setup that involves both BLE and OpenThread, I&amp;rsquo;d appreciate your help with the Thread-specific approach. If you could provide guidance for handling this with OpenThread, I can implement and test it in our scenario.&lt;br /&gt;&lt;br /&gt;Thanks &amp;amp; Regards,&lt;br /&gt;Kaushik Parsana&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Matter OTA Over Thread — Image Transfer Time Optimization Guidance Needed</title><link>https://devzone.nordicsemi.com/thread/538193?ContentTypeID=1</link><pubDate>Thu, 05 Jun 2025 11:18:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ba4d06e2-b521-41cd-a518-8f929391cdd0</guid><dc:creator>Marte Myrvold</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;Kaushik,&lt;/p&gt;
&lt;p&gt;What have you configured as active (fast polling) and idle (slow polling) intervals?&lt;/p&gt;
&lt;p&gt;These are configured by &lt;code&gt;CONFIG_&lt;/code&gt;&lt;span&gt;&lt;code&gt;CHIP_ICD_FAST_POLLING_INTERVAL&lt;/code&gt; and &lt;code&gt;CONFIG_CHIP_ICD_SLOW_POLL_INTERVAL&lt;/code&gt;&lt;/span&gt;. The default values for these are 200ms for active and 1s for idle. If you increase the active interval, you should see some improvements.&lt;/p&gt;
&lt;p&gt;Another option is temporarily switching to the MED role instead of SED during OTA. Please note that this will have a higher impact on power consumption.&lt;br /&gt;Something similar has been done for Wi-Fi, where the mode is changed for DFU. You can see examples of how that is done here:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/nrfconnect/sdk-connectedhomeip/blame/master/src/platform/nrfconnect/OTAImageProcessorImplWiFi.h#L33"&gt;https://github.com/nrfconnect/sdk-connectedhomeip/blame/master/src/platform/nrfconnect/OTAImageProcessorImplWiFi.h#L33&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a title="https://github.com/nrfconnect/sdk-connectedhomeip/blame/master/src/platform/nrfconnect/otaimageprocessorimplwifi.h#l46" href="https://github.com/nrfconnect/sdk-connectedhomeip/blame/master/src/platform/nrfconnect/OTAImageProcessorImplWiFi.h#L46" rel="noopener noreferrer" target="_blank"&gt;https://github.com/nrfconnect/sdk-connectedhomeip/blame/master/src/platform/nrfconnect/OTAImageProcessorImplWiFi.h#L46&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a title="https://github.com/nrfconnect/sdk-connectedhomeip/blame/master/src/platform/nrfconnect/otaimageprocessorimplwifi.h#l56" href="https://github.com/nrfconnect/sdk-connectedhomeip/blame/master/src/platform/nrfconnect/OTAImageProcessorImplWiFi.h#L56" rel="noopener noreferrer" target="_blank"&gt;https://github.com/nrfconnect/sdk-connectedhomeip/blame/master/src/platform/nrfconnect/OTAImageProcessorImplWiFi.h#L56&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;You can do something similar for OpenThread by modifying&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-connectedhomeip/blob/v3.0.2/src/platform/nrfconnect/OTAImageProcessorImpl.cpp#L70-L90"&gt;PrepareDownload()&lt;/a&gt;&amp;nbsp;to switch to the MED role and then switching back to SED in&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-connectedhomeip/blob/v3.0.2/src/platform/nrfconnect/OTAImageProcessorImpl.cpp#L139-L150"&gt;Abort()&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-connectedhomeip/blob/v3.0.2/src/platform/nrfconnect/OTAImageProcessorImpl.cpp#L152-L181"&gt;Apply()&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Best regards,&lt;br /&gt;Marte&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Matter OTA Over Thread — Image Transfer Time Optimization Guidance Needed</title><link>https://devzone.nordicsemi.com/thread/538052?ContentTypeID=1</link><pubDate>Wed, 04 Jun 2025 12:37:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:31569d1a-e584-410d-a185-03a48b0d03e5</guid><dc:creator>Kaushik Parsana</dc:creator><description>&lt;p&gt;Dear Nordic,&lt;/p&gt;
&lt;p&gt;Any update on this?&lt;br /&gt;&lt;br /&gt;Thanks &amp;amp; Regards,&lt;br /&gt;Kaushik Parsana&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>