<?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>Workaround for bricked DFU over BLE that can only update application.</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/46206/workaround-for-bricked-dfu-over-ble-that-can-only-update-application</link><description>Hi I have been put into at task with a nrf52832 device (Mesh) that can only update the application. This is a big problem because we already have multiple device all over the world and now want to update to SDK 15.2 (softdevice 6.1.0) for use with latest</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 03 May 2019 10:29:54 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/46206/workaround-for-bricked-dfu-over-ble-that-can-only-update-application" /><item><title>RE: Workaround for bricked DFU over BLE that can only update application.</title><link>https://devzone.nordicsemi.com/thread/185133?ContentTypeID=1</link><pubDate>Fri, 03 May 2019 10:29:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3e68762b-1d47-4dea-890b-7930e3cd21f0</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello Jesper,&lt;/p&gt;
&lt;p&gt;I am glad you found the root of the issue, and I appreciate the feedback.&lt;/p&gt;
&lt;p&gt;I will take this to our SDK team, so that they can consider the improvement.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Have a nice weekend &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;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Workaround for bricked DFU over BLE that can only update application.</title><link>https://devzone.nordicsemi.com/thread/185062?ContentTypeID=1</link><pubDate>Fri, 03 May 2019 07:50:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bf8a50c5-992f-4717-8685-94a0812ef1d6</guid><dc:creator>Jesper W.</dc:creator><description>&lt;p&gt;Hi Edvin,&lt;/p&gt;
&lt;p&gt;I have identified the problem and solved it.&lt;/p&gt;
&lt;p&gt;It turns out that the validation during flash manager initialization caused an assert, where&amp;nbsp;the validation wrongly identified&amp;nbsp;flashmanager data as proper data.&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;validation of flash manager metadata is&amp;nbsp;VERY weak in sdk 15.2 .. and maybe you should improve ;-)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;static inline bool metadata_is_valid(const flash_manager_metadata_t * p_metadata)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; return (p_metadata-&amp;gt;metadata_len != 0xFF &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p_metadata-&amp;gt;metadata_len &amp;gt;= 8 &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p_metadata-&amp;gt;page_index != 0xFF &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p_metadata-&amp;gt;pages_in_area != 0xFF);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;My solution was to moved a temporary recovery-application located just below the bootloader (same area as used by flash-manager) to another location and erase the flashpages, before installing/running the application.&lt;/p&gt;
&lt;p&gt;So the rule no 1 is to make sure that the flash area used by the flashmanager should initially be erased, because it can not verify it itself as valid flash data.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;/Jesper&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Workaround for bricked DFU over BLE that can only update application.</title><link>https://devzone.nordicsemi.com/thread/184788?ContentTypeID=1</link><pubDate>Thu, 02 May 2019 08:31:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a62c408a-f25b-451d-b047-00e1560b5d5e</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello &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;/p&gt;
&lt;p&gt;What SDK does your previous Bootloader and SD come from? And is there something in particular I need to know? Did you change anything in the previous bootloader? Or in this one?&lt;/p&gt;
&lt;p&gt;I am asking because I would like to try to reproduce your issue, to see if I can figure out why it isn&amp;#39;t starting up the bootloader.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Are you able to debug the bootloader? Or do you have logging enabled? Are you able to see a reason for why the application is not activated?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Just to get things right, you have updated the SD + bootloader, right? And it accepted the new application image? But it failed to start the application (at least it doesn&amp;#39;t advertise, or behave like it does when you flash all the things at once, BL, SD, App, BL-settings?)&lt;/p&gt;
&lt;p&gt;Do you have some way of enabling logging in the application that you are updating to? My suspicion is that the app is runnning, and it is getting caught in an APP_ERROR_CHECK(), since you don&amp;#39;t see the BL advertisements. If you can update your application with the preprocessor define &amp;quot;DEBUG&amp;quot; and logging enabled, it should say whether it was caught in an APP_ERROR_CHECK or not.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Workaround for bricked DFU over BLE that can only update application.</title><link>https://devzone.nordicsemi.com/thread/184682?ContentTypeID=1</link><pubDate>Wed, 01 May 2019 09:13:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0ab9b1da-1962-4d3e-981e-ecaccd1311b9</guid><dc:creator>Jesper W.</dc:creator><description>&lt;p&gt;Hi Andreas,&lt;/p&gt;
&lt;p&gt;As a follow up, I&amp;#39;ll just confirm that the two upper sector (0x07e000 + 0x07f000) is not needed in order for the BL to enter DFU mode .. only the&amp;nbsp;&amp;nbsp;&lt;span&gt;UICR values need to be correct pointing at BL and 0x07E00.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;My next question comes when I try to transfer an application,&amp;nbsp;onto the newly updated SoftDevice (15.2) &amp;amp; BL.&lt;br /&gt;The DFU over BLE runs fine using nrfConnect (v2.6.2), but the application never starts up, even though the application is placed properly at 0x026000 as it should when using softdevice 6.1.0 (SDK 15.2 s132).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The Application DFU ZIP package is generated using nrfutil 4.0.0 and these settings:&lt;/p&gt;
&lt;p&gt;nrfutil pkg generate --debug-mode --hw-version 52 --sd-req 0xAF --sd-id 0xAF --application application.hex --application-version 0x00 --key-file privkey.pem Dfu_App.zip&lt;/p&gt;
&lt;p&gt;After the &lt;span&gt;Application DFU ZIP update, then uicr and Settings looks like this.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;J-Link&amp;gt;mem32 0x10001014 2&lt;br /&gt;10001014 = 00072000 0007E000&lt;/p&gt;
&lt;p&gt;J-Link&amp;gt;mem32 0x07f000 75&lt;br /&gt;0007F000 = E410A579 00000001 00000000 00000000&lt;br /&gt;0007F010 = 00000000 00000001 000252F4 BF9F02A1&lt;br /&gt;0007F020 = 00000001 00000000 00000000 00000000&lt;br /&gt;0007F030 = 00000000 00000000 00000000 00000000&lt;br /&gt;0007F040 = 00000000 00000000 00026000 00000000&lt;br /&gt;0007F050 = 00000000 00000000 00000000 FFFFFFFF&lt;br /&gt;0007F060 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F070 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F080 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F090 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F0A0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F0B0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F0C0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F0D0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F0E0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F0F0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F100 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F110 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F120 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F130 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F140 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F150 = 00000000 00000000 00000000 FFFFFFFF&lt;br /&gt;0007F160 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F170 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F180 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F190 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F1A0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F1B0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F1C0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F1D0 = FFFFFFFF&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;&lt;span&gt;0x07E000 (backup) contains the same as sector 0x07F000.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;It seem like the DFU task received the application and place it properly, updates the settings (0x7f000 and 0xf7e000), but can not activate the application properly ..&amp;nbsp;&lt;br /&gt;Any suggestions to solve this problem ?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;BTW .. I have verified that the whole setup i working fine by flashing the merged hex file of&amp;nbsp;(SD + BL + APP + generated settings).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;The UICR and Settings looks like after flashing with the merged hex fil.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;J-Link&amp;gt;mem32 0x10001014 2&lt;br /&gt;10001014 = 00072000 0007E000&lt;br /&gt;J-Link&amp;gt;mem32 0x07f000 75&lt;br /&gt;0007F000 = 1C0C3778 00000001 00000000 00000002&lt;br /&gt;0007F010 = 00000000 00000000 000252F4 BF9F02A1&lt;br /&gt;0007F020 = 00000001 00000000 00000000 00000000&lt;br /&gt;0007F030 = 00000000 00000000 00000000 00000000&lt;br /&gt;0007F040 = 00000000 00000000 00000000 00000000&lt;br /&gt;0007F050 = 00000000 00000000 00000000 FFFFFFFF&lt;br /&gt;0007F060 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F070 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F080 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F090 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F0A0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F0B0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F0C0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F0D0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F0E0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F0F0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F100 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F110 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F120 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F130 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F140 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F150 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F160 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F170 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F180 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F190 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F1A0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F1B0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F1C0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF&lt;br /&gt;0007F1D0 = FFFFFFFF&lt;br /&gt;J-Link&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Workaround for bricked DFU over BLE that can only update application.</title><link>https://devzone.nordicsemi.com/thread/182683?ContentTypeID=1</link><pubDate>Wed, 17 Apr 2019 21:39:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:81324ac4-b83e-4e19-88d8-c4994476b8af</guid><dc:creator>Jesper W.</dc:creator><description>&lt;p&gt;Hi Andreas,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m using 15.3 at another project and it works fine, but for this project/product I&amp;#39;m not allowed to upgrade yet, because we already have fully working, tested and certified application/bootloader based on 15.2.&lt;br /&gt;So my&amp;nbsp; task is to upgrade&amp;nbsp;our bricked&amp;nbsp;DFU devices to this level.&lt;/p&gt;
&lt;p&gt;No .. the &amp;#39;upgraded&amp;#39; device is not in dfu mode since I can not see it as an advertising device. I tested it on my Win10 laptop with USB dongle and android app using nrfConnect.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-----------------------------------&lt;/p&gt;
&lt;p&gt;Ok .. In my next test I&amp;#39;ll keep the MBR parameters + Setting data and&amp;nbsp;&lt;span&gt;UICR-&amp;gt;NRFFW[1] erased and pointing the&amp;nbsp;UICR-&amp;gt;NRFFW[0] at the bootloader address.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Actually I think I have already tried that, but let&amp;#39;s try it once again :-)&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&gt;I will update you when tested.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Workaround for bricked DFU over BLE that can only update application.</title><link>https://devzone.nordicsemi.com/thread/182630?ContentTypeID=1</link><pubDate>Wed, 17 Apr 2019 13:13:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:392a4a3c-d269-48e3-a5c0-fdbbbd4a61d2</guid><dc:creator>AndreasF</dc:creator><description>&lt;p&gt;Hi.&lt;/p&gt;
&lt;p&gt;First, can I ask why you don&amp;#39;t just upgrade to 15.3 while you&amp;#39;re at it? :-)&lt;/p&gt;
[quote user=""]Finally I ends up with a device that contains &amp;quot;exactly&amp;quot; the same as the running device with softdevice 6.1.0 and my new bootloader, but it is not running (going info DFU mode).&amp;nbsp;[/quote]
&lt;p&gt;&amp;nbsp;I&amp;#39;m a bit unsure about what you mean here, &lt;/p&gt;
&lt;p&gt;Does it end up in DFU mode?&lt;/p&gt;
&lt;p&gt;Could you please explain some more?&lt;/p&gt;
&lt;p&gt;___________________________________________&lt;/p&gt;
&lt;p&gt;The additional questions you had:&lt;/p&gt;
&lt;p&gt;1) Yes, although in later version (I think it is from 15.1, the MBR settings page works as a backup for the bootloader settings page)&lt;/p&gt;
&lt;p&gt;2) You should only be concerned about the UICR values.&lt;/p&gt;
&lt;p&gt;3) You could do the procedure the bootloader does when it starts the application?&lt;/p&gt;
&lt;p&gt;Note: It is public holiday in Norway from 18 - 23 April, so I will be out of office those days.&lt;/p&gt;
&lt;p&gt;Happy Easter!&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>