<?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>Mesh DFU Recovery</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/46602/mesh-dfu-recovery</link><description>If the Mesh DFU process fails (maybe a packet gets dropped or something), what happens? Will the device get stuck in an unknown state? What does the recovery process look like? 
 Also is the DFU process atomic (as in, it completely succeeds or completely</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 25 Apr 2019 18:18:56 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/46602/mesh-dfu-recovery" /><item><title>RE: Mesh DFU Recovery</title><link>https://devzone.nordicsemi.com/thread/183900?ContentTypeID=1</link><pubDate>Thu, 25 Apr 2019 18:18:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fa17c31b-dd4d-4f67-a020-211112c56f5a</guid><dc:creator>Thomas-Brilliant</dc:creator><description>&lt;p&gt;Thanks for explanation, Edvin!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Mesh DFU Recovery</title><link>https://devzone.nordicsemi.com/thread/183667?ContentTypeID=1</link><pubDate>Thu, 25 Apr 2019 07:56:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:32a713d4-7bff-45ae-8b25-30711dc8447c</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user=""]If the Mesh DFU process fails (maybe a packet gets dropped or something), what happens? Will the device get stuck in an unknown state? What does the recovery process look like?[/quote]
&lt;p&gt;There is a timeout that handles this. By default, it is set really long (10minutes), but you can change this.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There are to timeouts:&lt;/p&gt;
&lt;p&gt;1: Timeout from the first DFU packet: If the time between the first packet and the transfer complete exeeds&amp;nbsp;TIMER_START_TIMEOUT_US (from nrf_mesh_dfu.c) then the DFU will be aborted.&lt;/p&gt;
&lt;p&gt;2: Timeout from the last DFU packet: If the time between two DFU packets exceeds&amp;nbsp;TIMER_DATA_TIMEOUT_US (from nrf_mesh_dfu.c) then the DFU will be aborted.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;By default both of these defines are 600 000 000 µs = 10 minutes, but you can change them. (Obviously, with the current settings, the&amp;nbsp;TIMER_DATA_TIMEOUT_US would be redundant).&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
[quote user=""]Also is the DFU process atomic (as in, it completely succeeds or completely fails)?[/quote]
&lt;p&gt;Yes. If the DFU times out, or the keys and application version/ID doesn&amp;#39;t match, the entire image is removed.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Best regards,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>