<?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>problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/96796/problem-with-uart-update-on-nrf52840</link><description>Good morning, 
 
 in our project we would like to implement a DFU system of our Nordic 52840 through UART. In the final version of the board the 52840 will be connected to another MCU through serial, but for the moment we are updating the Nordic through</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 29 Mar 2023 15:20:22 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/96796/problem-with-uart-update-on-nrf52840" /><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/418156?ContentTypeID=1</link><pubDate>Wed, 29 Mar 2023 15:20:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b3041667-b892-4e0b-b151-60d93ab9be12</guid><dc:creator>ste2108</dc:creator><description>&lt;p&gt;Dear Hung Bui,&lt;/p&gt;
&lt;p&gt;Thanks so much for your help throughout all this thread. In the end the best way for us to implement what you advised in your last message within our code (which does in c exactly what nrfutil does in python) was to ignore the offset and crc returned by the firmware and set both to 0. In this way when the update is restarted after an interruption everything is sent from scratch and the update is successful.&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Stefano&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/418063?ContentTypeID=1</link><pubDate>Wed, 29 Mar 2023 10:30:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b549cc3b-068c-4443-9d08-5e21ae6ec7fc</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stefano,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;From what I can find in the code, if you set&amp;nbsp;NRF_DFU_SAVE_PROGRESS_IN_FLASH to 0 the progress will only be stored in RAM:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;// &amp;lt;q&amp;gt; NRF_DFU_SAVE_PROGRESS_IN_FLASH - Save DFU progress in flash.

// &amp;lt;i&amp;gt; Save DFU progress to flash so that it can be resumed if interrupted, instead of being restarted.
// &amp;lt;i&amp;gt; Keep this setting disabled to maximize transfer speed and minimize flash wear.
// &amp;lt;i&amp;gt; The init packet is always saved in flash, regardless of this setting.

#ifndef NRF_DFU_SAVE_PROGRESS_IN_FLASH
#define NRF_DFU_SAVE_PROGRESS_IN_FLASH 0
#endif&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Here is what I find in nrf_dfu_req_handler.c:&amp;nbsp;&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/pastedimage1680085574246v2.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;So if you set the configuration to 0, the bootloader will store to flash when the whole image is stored.&amp;nbsp;So if you trigger a reset on the DFU target either soft reset or pin/power reset, you should be able to clear the progress.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;However, the init packet progress will always be stored:&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&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/pastedimage1680085532223v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;So if you want to avoid the nrfutil to recover and continue (at least the init packet) from the previous failed DFU update, I would suggest to look at this line:&amp;nbsp;&lt;a href="https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/nordicsemi/dfu/dfu_transport_serial.py#L250"&gt;https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/nordicsemi/dfu/dfu_transport_serial.py#L250&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If we remove the &lt;span&gt;try_to_recover() or change it to always return false&lt;/span&gt;, I believe that nrfutil will always start sending as new image and will not try to continue from where it stopped.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/417807?ContentTypeID=1</link><pubDate>Tue, 28 Mar 2023 07:09:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:201dc0c4-7cbd-4d4f-aa57-c2139efed154</guid><dc:creator>ste2108</dc:creator><description>&lt;p&gt;Just an addendum: I also tried to start the update of our Nordic board with nrfutil and the serial adapter and to unplug the serial adapter instead of killing by ctrl-c. If I restart nrfutil, the update crashes as the offset is still the old one (i.e. 0x0000).&lt;br /&gt;It looks like the update sistematically starts where it was interrupted by requiring the offset related to the last written data (which is of course 0x0000 when the update starts from scratch). Is there a way to always require an update from scratch, maybe by setting some sdk_config define? This would possibily solve our problem since we do not really care about saving time...&lt;br /&gt;Thanks.&lt;br /&gt;Regards,&lt;/p&gt;
&lt;p&gt;Stefano&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/417801?ContentTypeID=1</link><pubDate>Tue, 28 Mar 2023 06:56:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:758ba1af-5f64-4eea-950d-a01770620035</guid><dc:creator>ste2108</dc:creator><description>&lt;p&gt;Dear Hung Bui,&lt;/p&gt;
&lt;p&gt;Thank you for your answer and sorry for being late, I was away a few days.&lt;br /&gt;I performed the test you asked on the dev board and indeed when the nrfutil process is killed and subsequently restarted the update restarts where it was interrupted and is finalized.&lt;br /&gt;What I did subsequently was to compare my sdk_config.h with the one of the official signed serial bootloader (v. 16.0.0). I realigned the defines to the latter version as much as I could (you may remember that we also need the combined BLE bootloader, so all the related BLE defines must be there). After the realignment, an update through nrfutil with a serial adapter connected directly to our board works almost perfectly. That &amp;quot;almost&amp;quot; refer to the fact that, from time to time, I get what is shown in the picture: there I started the update through nrfutil, killed it (at 16%) and then restarted: the update continued where it was stopped. However, when I killed (at 52%) and restarted nrfutil again, it crashed because the continued update started where the first (at about 16%) and not the second (at 52%) nrfutil was stopped. If one looks at the logs, this corresponds to the firmware providing the first offset, as if the second one (i.e. the one corresponding to 52% advancement) was not written in flash when nrfutil was killed the second time.&lt;br /&gt;This looks actually the same&amp;nbsp;way in which the update on our full board (i.e. the Nordic connected to another MCU) fails: when we kill the update and then restart it, the offset provided by the MCU is always 0 (i.e. the beginning of the flash space reserved to the firmware image), thus ignoring what was written up to then.&lt;br /&gt;Can you please tell me how/where this offset is written in flash and let me know if you have any idea on why sometimes it doesn&amp;#39;t seem to be written (rarely with nrfutil, sistematically in our custom update) when we kill the update process?&lt;br /&gt;Many thanks.&lt;br /&gt;Regards,&lt;br /&gt;&lt;br /&gt;Stefano&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/failing_5F00_update.jpg" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/417067?ContentTypeID=1</link><pubDate>Thu, 23 Mar 2023 12:50:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:486e5a16-76e7-4971-823b-27bde6ef2cdd</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stefano,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If your board uses different UART pins then of course the hex file I provided will not work. But I would strongly suggest to try testing on a DK to align what we have with the DK before testing with your board.&amp;nbsp;&lt;br /&gt;I did a quick test here without flow control and it also worked after the interruptions.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/416898?ContentTypeID=1</link><pubDate>Wed, 22 Mar 2023 17:16:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b4b5cb26-dc25-41c0-9b76-58ee7a646c44</guid><dc:creator>ste2108</dc:creator><description>&lt;p&gt;Hello Hung Bui,&lt;/p&gt;
&lt;p&gt;I am using our proprietary board mounting a Nrf52840, connected to a PC with a serial adapter (FTDI FT232RL chip). This is the same configuration under which the (uninterrupted) update works. I can try with your board and I am sure that the combination of the Nordic dev board and your fw will work, but I am not sure this can help much in solving the problem I see.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/416896?ContentTypeID=1</link><pubDate>Wed, 22 Mar 2023 17:10:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:586537e4-cea6-42a2-8610-bd0101abe6c6</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stefano,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To be able to debug the bootloader, you should use the debug version of the bootloader, not the project&amp;nbsp; without &amp;quot;debug&amp;quot;. The one without &amp;quot;debug&amp;quot; is optimized and you can&amp;#39;t step in the code. Make sure you erase the chip before flashing the debug version because it needs to re-write the UICR.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Please let me know which hardware board you are using for testing my firmware.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/416895?ContentTypeID=1</link><pubDate>Wed, 22 Mar 2023 17:07:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:76bd37b9-603c-467b-bb07-97aaaf75e01d</guid><dc:creator>ste2108</dc:creator><description>&lt;p&gt;In addition I am experiencing serious problems debugging the bootloader. I can start the debug session (breakpoint at the beginning of main) and I set a bp in the function you pointed out, but when I let the bl run and I start the update process the debug session sistematically returns a series of errors in reading registers and I have to restart it. Is there some register that I can read, e.g. using nrfjpog, whose value can shed some light on why the interrupted update is not working?&lt;br /&gt; Thanks.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Stefano&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/416893?ContentTypeID=1</link><pubDate>Wed, 22 Mar 2023 16:58:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1ee37e42-3d8c-4c0e-8da4-755fd2eb9b10</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stefano,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Could you let me know which hardware you were using for testing ? I was using nRF52840 DK for testing. And the COM port used was the COMPORT created by the debugger.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/416867?ContentTypeID=1</link><pubDate>Wed, 22 Mar 2023 15:18:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:74937308-4e6d-48ee-a0ab-52f3c2bfbbf6</guid><dc:creator>ste2108</dc:creator><description>&lt;p&gt;Dear Hung Bui,&lt;/p&gt;
&lt;p&gt;I managed to test the files you sent me and here is the result. I uploaded the SD and the BL you sent me (in this order) and then I tried to update the board using your application and nrfutil version 6.1.7 (which should be equal to 6.1.6). As you see in the picture, the update does not event start. On the oscilloscope I see pings from the serial device but no response. The only difference I have wrt what you advised is the flow control, which in my case is set to 0 as I do not have the needed pins on my board.&lt;br /&gt;I do not really need the update to start from the point where it was interrupted, starting from scratch after an interruption would be just fine. Also, I read the flash image just to report the issue to you, it is not something I do sistematically and the result is the same with or without it.&lt;br /&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/update_5F00_not_5F00_starting.jpg" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/416050?ContentTypeID=1</link><pubDate>Fri, 17 Mar 2023 14:25:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0f97bf5f-7938-4dab-af00-0013c2f97e41</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stefano,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I did another test with SDK v16.0 and nrfutil 6.1.6 . I don&amp;#39;t have an issue to continue update after aborting:&amp;nbsp;&lt;br /&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/pastedimage1679062239217v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;But I do find that if I trigger a reset in between the DFU update will start from 0 again. From what I understand, before the image is completely received,&amp;nbsp; the DFU progress is only stored in RAM.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It could be the case when you try to read flash in between the update. The Bootloader will be hung and won&amp;#39;t be able to continue. You will need to do a reset, and it will clear the progress and it will start from 0. So in your next test, please don&amp;#39;t read flash.&lt;/p&gt;
&lt;p&gt;I attached here the files I used. Please use them to test.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/6371.DFU2.zip"&gt;devzone.nordicsemi.com/.../6371.DFU2.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/415774?ContentTypeID=1</link><pubDate>Thu, 16 Mar 2023 15:11:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bca2115d-6048-48f7-88b3-756db0c70577</guid><dc:creator>ste2108</dc:creator><description>&lt;p&gt;Dear Hung Bui,&lt;/p&gt;
&lt;p&gt;Thanks again for your answer. You are right when you say that we are using our own program to update the Nordic (as it is on a mezzanine board connected via UART to another MCU. It is the latter that updates the Nordic, i.e. replaces nrfutil). Anyway I am able to detach the Nordic mezzanine, connect tx/rx to a serial adapter and use nrfutil to update it. The result is what you see attached:&lt;br /&gt;1) If I erase the Nordic, upload the SD+bootloader and then update the Nordic with the signed zip packet through nrfutil, the update is successful and I see the Nordic fw starting at 0x26000 (as the flash is blank the start address of the cached image coincides with the application image I believe), see _1 images. Please note that I used -prn 200 as in your tests and that I cannot use flow control due to its absence in our board. Could this represent an issue?&lt;br /&gt;&lt;br /&gt;2) If I now erase again the Nordic,&amp;nbsp;&lt;span&gt;upload the SD+bootloader and then update the Nordic with the signed zip packet through nrfutil BUT stop the procedure with ctrl+c at about half, I see what I would expect, i.e. data till about half of the application fw size (0x3FC80) and then 0xffs, see _2 images.&lt;br /&gt;&lt;br /&gt;3) If I try the update from nrfutil again (without previously erasing the MCU this time) with the same parameters I see no change in the MCU image wrt point 2. On the oscilloscope one can see nrfutil pinging the MCU (whose bootloader should be active since the upload of the application in point 2 failed) but with no answer from the MCU. You might remember that when our proprietary update tool was used the behaviour was slightly different, with the first 1K of the applcation being sent before the CRC request was not served by the bootloader.&lt;br /&gt;&lt;br /&gt;As for your questions:&lt;br /&gt;- I haven&amp;#39;t modified the bootloader but I enabled the relevant options in the sdk_config.h to operate DFU both through BLE and UART, which is what we need in our application.&lt;br /&gt;- As mentioned before, we use our update tool, but the behaviour with nrfutil is similar (not equal, see point 3)&lt;br /&gt;&lt;br /&gt;I still have to try with 17.1 (should check with other co-developers if this is feasible, as the project might not compile and/or produce unwanted behaviours) and debug the bootloader to see what is going on there. Will do the latter immediately after this, meanwhile any further tips based on this additional info would be great &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;br /&gt;Thanks.&lt;br /&gt;Kind regards,&lt;br /&gt;Stefano&lt;br /&gt;&lt;br /&gt;Stefano&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/SuccessfulUpdate_5F00_1.txt"&gt;devzone.nordicsemi.com/.../SuccessfulUpdate_5F00_1.txt&lt;/a&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Successful_5F00_update_5F00_1.jpg" /&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/InterruptedUpdate_5F00_2.txt"&gt;devzone.nordicsemi.com/.../InterruptedUpdate_5F00_2.txt&lt;/a&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Interrupted_5F00_Update_5F00_2.jpg" /&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/UpdateAfterInterruptedUpdate_5F00_3.txt"&gt;devzone.nordicsemi.com/.../UpdateAfterInterruptedUpdate_5F00_3.txt&lt;/a&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/UpdateAfterInterruptedUpdate_5F00_3.jpg" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/415416?ContentTypeID=1</link><pubDate>Wed, 15 Mar 2023 10:53:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d9bc2d59-de33-4a42-b4f6-0764087b8b90</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stefano,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I think we need to align the test process before continue.&amp;nbsp;&lt;br /&gt;- I assume you haven&amp;#39;t modified the bootloader ?&amp;nbsp;&lt;br /&gt;- In the test you described in your last reply, you used your own update tool, not nrfutil ?&amp;nbsp;&lt;br /&gt;If it&amp;#39;s the case, have you tried to do exactly what I did of breaking nrfutil when updating a .zip test package&amp;nbsp; ?&amp;nbsp;&lt;br /&gt;If it doesn&amp;#39;t work please try again with SDK v17.1 (just for testing). Then we know it must be something changed in the newer SDK.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If nrfutil works, then we will need to look into what&amp;#39;s the different between your update tool and nrfutil.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#39;s quite strange to see the difference between hex #1 and hex #2. From what I can see it seems when you do BLE update the application goes straight into the primary bank, without storing in secondary bank.&amp;nbsp;When with your update tool it does to the secondary bank before copied to primary bank.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Regarding the change at 0XFE000. It&amp;#39;s normal to see that. It&amp;#39;s because the MBR_Param page, when in bootloader mode, will be used as&amp;nbsp;mp_dfu_settings_backup_buffer to back up the DFU settings. You can find that that page is identical to page 0xFF000, because it&amp;#39;s a backup. It&amp;#39;s normal that the bootloader setting change after you start/continue DFU process. It&amp;#39;s where the progress of the DFU is stored.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The question here is that why the bootloader couldn&amp;#39;t continue and calculate the CRC. I think at this point you would need to step into the bootloader and try to debug it to see why it works with nrfutil (at least on my side) but not with your dfu update tool.&amp;nbsp;&lt;br /&gt;I would suggest to test with the debug version of the bootloader. With the debug version you can put a breakpoint and step into the code. You can also add log and print the log out on RTT.&amp;nbsp;&lt;br /&gt;I assume you have turned on PRN (packet receive notification) when you start the DFU bootloader process ?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The main handling of the DFU process is inside nrf_dfu_req_handler.c. The&amp;nbsp;nrf_dfu_command_req() function is where you should start.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/415242?ContentTypeID=1</link><pubDate>Tue, 14 Mar 2023 14:13:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:12305c9a-18c6-4c23-a225-79cb4a06643a</guid><dc:creator>ste2108</dc:creator><description>&lt;p&gt;Dear Hung Bui,&lt;/p&gt;
&lt;p&gt;Thank you for your answer. I performed the test you advised yesterday. In the attached file _1 and _2 you can see Nordic MCU flash images where a successful update is performed respectively using the BLE nordic nrf connect app (starting with just the SD+bootloader onboard) and our update tool, which reproduces the Nordic update through the slip protocol via UART, including sending the nordic in bootloader by setting the related pin to active while rebooting. As you can see the two images are the same, except that in the UART version I see the cached copy of the new fw starting at 0x57000. Only Nordic fw is uploaded this time, no other hidden data.&lt;/p&gt;
&lt;p&gt;In file _3 you can see an interrupted update. The update started on a Nordic set up as in flash image _2. The&amp;nbsp; differences between _3 and _2, as you can see by comparing the two files, are the &amp;quot;0xff-set&amp;quot; 0x1000 bytes at address 0x05E000 (the starting address different from the one in my former email because of the randomicity of my ctrl+c update interruption) and a few bytes at address 0xFE000, which according to the linker script is where the mbr_params_range is. If I then try to repeat the update after the interruption (image _4) I see that the update process stops after sendin the first 0x1000 bytes. By comparing&amp;nbsp; images _3 and _4 the only difference is in the first 0x1000 bytes at 0x57000, which in _4 are set to 0xff. By looking at the oscilloscope during this update process I can confirm that only the first 0x1000 byte data is sent to the Nordic, but somehow not written, the CRC is not returned to the program updating the Nordic and thus the update process exits. As a comparison, in the successful update before the interruption I can see the whole firmware flowing on the serial link with the oscilloscope.&lt;/p&gt;
&lt;p&gt;Could the modified lines at 0xFE000 in _3 have something to do with the failing update? Or could somehow the flash enter a state where it is not writable after I interrupt the update, so that when I try the update again (_4 file) the first 0x1000 data batch is sent to the Nordic but not written? Or maybe this used to be a problem in old Nordic libraries which is now solved (I have to use 16.0.0 for legacy reasons)?&lt;/p&gt;
&lt;p&gt;Really running short of ideas here, any tip is very welcome!&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Stefano&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/Nordic_5F00_Update_5F00_with_5F00_app_5F00_1.txt"&gt;devzone.nordicsemi.com/.../Nordic_5F00_Update_5F00_with_5F00_app_5F00_1.txt&lt;/a&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/Nordic_5F00_Update_5F00_from_5F00_serial_5F00_2.txt"&gt;devzone.nordicsemi.com/.../Nordic_5F00_Update_5F00_from_5F00_serial_5F00_2.txt&lt;/a&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/Nordic_5F00_Update_5F00_from_5F00_serial_5F00_with_5F00_interruption_5F00_3.txt"&gt;devzone.nordicsemi.com/.../Nordic_5F00_Update_5F00_from_5F00_serial_5F00_with_5F00_interruption_5F00_3.txt&lt;/a&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/Nordic_5F00_Update_5F00_from_5F00_serial_5F00_after_5F00_interruption_5F00_4.txt"&gt;devzone.nordicsemi.com/.../Nordic_5F00_Update_5F00_from_5F00_serial_5F00_after_5F00_interruption_5F00_4.txt&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/415079?ContentTypeID=1</link><pubDate>Tue, 14 Mar 2023 09:00:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cb1c951c-a0e6-4e41-bb5d-8e3a3796941d</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stefano,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;&lt;span&gt;bank_0.image_size that you can find in the code is from the init data inside the .zip file that you use to DFU update the current firmware. If you have a look at a DFU .zip package you will find this (here is the test image in the SDK)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&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/pastedimage1678784426502v1.png" alt=" " /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The .dat file contain the information about the size of the image. It will be transmitted to the bootloader and the bootloader use the information to receive the image. Please take a look here:&amp;nbsp;&lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.1.0/lib_bootloader_dfu_validation.html?cp=9_1_3_5_1_1_0#lib_bootloader_dfu_init"&gt;https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.1.0/lib_bootloader_dfu_validation.html?cp=9_1_3_5_1_1_0#lib_bootloader_dfu_init&lt;/a&gt;&lt;br /&gt;If you generate the .zip file after you manipulate with the hex I think the app_size should reflect the new size of the hex. I am not aware of anywhere in the hex we store the original size of the image.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/414992?ContentTypeID=1</link><pubDate>Mon, 13 Mar 2023 16:34:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:65d2a99b-7cbe-4330-ade8-4a71e4dbb6a5</guid><dc:creator>ste2108</dc:creator><description>&lt;p&gt;Dear Hung Bui,&lt;/p&gt;
&lt;p&gt;I will perform the test you advised tomorrow morning, could not do it today. Just one question in the meanwhile: I create the manipulated image by adding the additional firmware to the standard Nordic firmware with srecord and then I sign the resulting hex (with &amp;quot;nrf package generate&amp;quot;) to be able to upload it to a secure bootloader. I guess what you said means that somewhere in the new hex there is still the value of the standalone nordic image (i.e.&amp;nbsp;&lt;span&gt;bank_0.image_size) in place of the Nordic+custom data size, and this somehow causes problems when the update is interrupted (but does not seem to prevent a &amp;quot;regular&amp;quot; update). Can you tell me exactly where this value is in the hex?&lt;br /&gt;&lt;/span&gt;Thank you.&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Stefano&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/414835?ContentTypeID=1</link><pubDate>Mon, 13 Mar 2023 09:51:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c1793718-3df9-4c63-b20f-d7bca7afdacd</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stefano,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks for the explanation.&amp;nbsp;&lt;br /&gt;Your understanding is correct. The bootloader will allocate the new image into bank 1 starting from the first page right after the current application.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you have a look at update_data_addr_get() you can find how it&amp;#39;s calculated.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Basically&amp;nbsp;nrf_dfu_bank1_start_addr()&amp;nbsp;= nrf_dfu_bank0_start_addr() +&amp;nbsp;bank_0.image_size&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;nrf_dfu_bank0_start_addr() is either MBR or softdevice size, depends if the softdevice is flashed or not.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;bank_0.image_size is the image size you provide in your init packet of the previous DFU update.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;So what I suspect is that the image size may not match with the actual image size you have including the extra data pages.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I would suggest to test first with a &amp;quot;normal&amp;quot;&amp;nbsp; image , for example our example project. And make sure you can continue after&amp;nbsp; you break the DFU process.&amp;nbsp;After that you can test with your customized image. Please double check which bank_0.image_size you have.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/414719?ContentTypeID=1</link><pubDate>Fri, 10 Mar 2023 16:27:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e5ea9685-bcee-4b97-8abe-25b4b2a7869f</guid><dc:creator>ste2108</dc:creator><description>&lt;p&gt;Dear Hung Bui,&lt;/p&gt;
&lt;p&gt;Thank you for your quick answer. The 0x57000 address is not where the application starts (instead it correctly starts at the flash address in the linker script, 0x26000) but where the fw I am sending through the slip protocol is cached before being moved to 0x26000. My understanding is that in the dual bank framework the bootloader starts caching the fw I send through the slip protocol from the first useful address after the &amp;quot;old&amp;quot; application ends, in blocks of 0x1000: indeed my old application starts at 0x26000 and ends at 0x56EE0 and, in the case of successful update (_1 file) I see a copy of the application fw from 0x57000 on. My settings in the sdk_config is not to force dual bank update, but I believe there is enough space to proceed with dual bank (and I assume that in a single bank update an abrupt interruption of the update process would corrupt the application fw).&amp;nbsp; &amp;nbsp;&lt;br /&gt;If I interrupt the update process (_2 file) I see 4k (sorry if in my previous message I said 1k, it is 0x1000=4096) set to 0xFF from the address 0x64000 to 0x65000, which should correspond to the 0x1000 being transmitted when I hit the ctrl-c keys. If I then retry the process (_3 file), the initial 0x1000 (i.e. from 0x57000 to 0x58000) is set to 0xff, which means that the update failed when trying to upload the first 4k data.&lt;br /&gt;I should also mention that the first image present before the first successful update is larger than the one uploaded through the serial protocol, as it contains some additional, extra-fw data we need for our application, which you can see in the _1 dump starting at 0x58000 and finishing at about 0x71000. Even if those data are never reached by the application fw, the packet has been generated in such a way that those bytes are part of the fw itself, i.e. the computed crc is coherent (and indeed the Nordic correctly boots after the application has been loaded). Can you clarify to me how exactly the bootloader sets the initial address where the CACHED fw is stored during the update process before being moved to the application address? In our case I would expect the bootloader to cache the new image at about 0x72000, instead it starts at 0x57000, thus erasing our custom data (which are not relevant to us anymore at that moment).&lt;br /&gt;The dump was taken with J-flash v. 7.84.&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Stefano&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/414633?ContentTypeID=1</link><pubDate>Fri, 10 Mar 2023 12:47:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:94656b95-2d1b-4e78-822a-6cb5db4ffd13</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stefano,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Did you do any modification to the bootloader ?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Why you application starts at 0x57000 ? Is there any reason for that? It&amp;#39;s not a familiar start address to me. How did you configure the bootloader to jump to this address ?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;How large is your application ? I would assume the size of the application should be around 0x64000 - 0x57000 = 52 kB ?&lt;/p&gt;
&lt;p&gt;I assume it&amp;#39;s dual bank DFU you are doing.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Normally&amp;nbsp;the bootloader would receive the new image to the secondary bank (slot 1, the application is in primary bank-slot 0). Only after the image is received properly it will start erasing the original application and swapping the new image to the primary bank. So it&amp;#39;s very strange that 0x57000 being erase even before the DFU update process is finished.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Which software did you use to get the flash dump out ? I just want to double check if the address is correct.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/414471?ContentTypeID=1</link><pubDate>Thu, 09 Mar 2023 17:15:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:60c6bb4f-9518-4e16-bb73-000572218ffa</guid><dc:creator>ste2108</dc:creator><description>&lt;p&gt;Dear Hung Bui,&lt;/p&gt;
&lt;p&gt;thank you for your answer and sorry for being late, I was stuck between multiple deadlines...&lt;/p&gt;
&lt;p&gt;In order to do the test I actually interrupted&amp;nbsp;nrfutil with a Ctrl+C, as you do in your example. I am also sure that the device is in DFU mode, as it answers to initial SLIP packets (whose protocol is only implemented in the bootloader, and not in my application). Consider that in my case I do not have flow control, I do not know if it makes any difference.&lt;/p&gt;
&lt;p&gt;I also collected memory readouts of the entire chip which might shed some light on what is going on. The first one shows a readout where a successful (i.e. non-interrupted) update has taken place. The second shows a readout of an interrupted update. By comparing with the first readout one sees that 1k starting from 0x64000 is set to 0xff (my firmware starts at 0x57000, which is probably where the bootloader caches the received data before moving them to the address specified by the linker), most probably the one being transferred when I hit ctrl+c. One can also see that some bits in the end are also different, probably those related to the CRC. The third readout refers to an update attempt after the interruption has taken place. One sees that, with respect to the second readout, the initial 1k (i.e. the one starting at 0x57000) is set to 0xff, which means that the first block was erased by the update process but the update could not proceed. From my log I can see indeed that the first 1k was transferred (see slip_log.txt), but the CRC requested after it was never received.&lt;br /&gt;&lt;br /&gt;I believe that the interrupted fw update triggers somehow a wrong CRC when a subsequent update attempt is performed, but I cannot clearly see how to cure it. Do you have more insight on the issue?&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;Regards,&lt;br /&gt;&lt;br /&gt;Stefano&lt;br /&gt;&lt;br /&gt;PS: the &amp;quot;Nordic&amp;quot; txt files are originally .mot files which I renamed. For some reason Nordic page does not allow to upload .mot files&lt;/p&gt;
&lt;p&gt;Stefano&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/slip_5F00_log.txt"&gt;devzone.nordicsemi.com/.../slip_5F00_log.txt&lt;/a&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/Nordic_5F00_after_5F00_successful_5F00_update_5F00_1.txt"&gt;devzone.nordicsemi.com/.../Nordic_5F00_after_5F00_successful_5F00_update_5F00_1.txt&lt;/a&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/nordic_5F00_after_5F00_interrupted_5F00_update_5F00_2.txt"&gt;devzone.nordicsemi.com/.../nordic_5F00_after_5F00_interrupted_5F00_update_5F00_2.txt&lt;/a&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/nordic_5F00_after_5F00_interrupted_5F00_update_5F00_and_5F00_failed_5F00_second_5F00_attempt_5F00_3.txt"&gt;devzone.nordicsemi.com/.../nordic_5F00_after_5F00_interrupted_5F00_update_5F00_and_5F00_failed_5F00_second_5F00_attempt_5F00_3.txt&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/410689?ContentTypeID=1</link><pubDate>Fri, 17 Feb 2023 15:11:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c57d0d77-e341-4c6b-acfd-7f3aba756d59</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stefano,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Could you let me know how exactly you did the test ? How you interrupt the DFU process&amp;nbsp; , by killing nrfutil or by resetting the nRF5 ?&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I did a quick test here and found that the nrfutil actually can continue a DFU update that was interrupted, as long as you turn on the PRN.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can see the screen shot here , I break (Ctrl+C) nrfutil at 17% and then it continue from 17% next time I started it. Then I break again at 51% and then next time it will start at 51% and will eventually finish DFU.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;img style="max-height:153px;max-width:583px;" height="153" src="https://devzone.nordicsemi.com/resized-image/__size/1166x306/__key/communityserver-discussions-components-files/4/pastedimage1676646534769v1.png" width="583" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;( I use nrfutil v7.x , it requires extra parameter nrf5sdk-tools to use the &amp;quot;legacy&amp;quot; nrfutil feature)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If I do a reset of the chip, the next time it will start from 0 and I don&amp;#39;t see the issue that the device don&amp;#39;t response.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Have you made sure after you reset the device enter DFU mode? By default you need to hold Button 4 on the DK to make the device enter DFU mode.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/410671?ContentTypeID=1</link><pubDate>Fri, 17 Feb 2023 14:06:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b24ee4f3-57e9-4b18-8c96-4ad7d34d9803</guid><dc:creator>ste2108</dc:creator><description>&lt;p&gt;Dear Hung Bui,&lt;/p&gt;
&lt;p&gt;Thank you for your quick answer. Trying to understand which is the last unsent packet and restart the update from there can be tricky and we don&amp;#39;t want to do that. However, the problem I described in my message takes place not only if I perform an update attempt (through nrfutil) immediately after I cancelled the ongoing one, but also if I stop the update, switch the board off/on and then perform the second DFU attempt. In our custom board we perform a board reset each time we attempt a DFU (because we need to send the board in DFU mode from the application fw) and the result is the same as the one observed on the Nordic updated through nrfutil and connected straight to a serial adapter&lt;br /&gt;Do you have some other ideas on why this happens? Could you do a quick test on your side (it takes justa&amp;nbsp; couple of minutes) to confirm if you see the same behaviour?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Stefano&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: problem with UART update on nRF52840</title><link>https://devzone.nordicsemi.com/thread/410650?ContentTypeID=1</link><pubDate>Fri, 17 Feb 2023 13:04:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c30cc0d7-7061-4636-b2d6-ecc88bfc503d</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stefano,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As far as I know nrfutil doesn&amp;#39;t have the feature to continue DFU update after interrupted. The documentation &lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.1.0/lib_dfu_transport_serial.html?cp=9_1_3_5_2_3_1_2#lib_dfu_transport_serial_msc_data"&gt;here&lt;/a&gt; mentioned about that the DFU master can start by select the last object was sent and can determine that it should re-send the object or continue with the new object.&amp;nbsp;&lt;br /&gt;But this feature is not implemented in nrfutil.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;From the log you provided nrfutil simply send a new init packet (initialize packet ) for a new DFU update. The problem here is that the bootloader is still in the process of the interrupted DFU update. I would assume that it wouldn&amp;#39;t expect the init packet and didn&amp;#39;t response to the init packet send request.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;So in your case if you are planning to make your own DFU master then you can implement this feature to continue DFU update after interrupted (you can refer to our BLE DFU library on the phone that you can find inside nRF Toolbox or nRF Device Firmware Update. As far as I know the feature to continue after interrupted is implemented on the apps.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Another option is to send an&lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.1.0/lib_dfu_transport.html?cp=9_1_3_5_2_0_11#lib_dfu_transport_op_abort"&gt; abort command &lt;/a&gt;(0x0C) to reset the bootloader and start a new DFU update. I don&amp;#39;t think we have the feature implemented on nrfutil neither. The solution is do a power/pin reset on the board after you have an interrupted DFU update.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>