<?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>Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/87104/characteristic-uuid-for-buttonless-bootloader-changes-between-nrf-sdk-v-11-0-0-and-sdk-v15-3-0</link><description>Hello, 
 I have been working with a BLE custom board project for a few months and the product requires buttonless DFU feature. The bootloader that I initially used was derived from SDK v.11.0.0 but I realized it didn&amp;#39;t have all the features required for</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 01 Jul 2022 22:50:52 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/87104/characteristic-uuid-for-buttonless-bootloader-changes-between-nrf-sdk-v-11-0-0-and-sdk-v15-3-0" /><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/375170?ContentTypeID=1</link><pubDate>Fri, 01 Jul 2022 22:50:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:af87a679-0065-4b3a-ad1b-bf13fcb928ce</guid><dc:creator>Aashyk</dc:creator><description>&lt;p&gt;Sorry for the late response, but I figured out the issue with the buttonless bootloader. It seems that setting up DFU with bonds UUID service on the application code seems to have caused the issue. Just setting up the control point UUID service seems to have fixed the issue!!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/367079?ContentTypeID=1</link><pubDate>Tue, 10 May 2022 07:48:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f24498fc-c913-404f-8e31-d83b074daeba</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;So you are using the buttonless service (with the correct &amp;quot;new&amp;quot; UUIDs from SDK 15.3 (or other &amp;quot;new&amp;quot; SDK with the secure bootloader? And you are using the secure bootloader. If so, then that should be good. Then I do not immediately have any other ideas.&lt;/p&gt;
&lt;p&gt;Perhaps to get more info you could test with nRF Connect for Android instead - does it fail to connect after entering DFU mode as well? If so, can you upload the full debug log from the app here? You could also make a sniffer trace of the communication both when&amp;nbsp;entering DFU mode and of the nRF advertising afterwards. That way we would know both what happens on air, what the nRF is advertising after entering DFU mode and what the Android log says.&amp;nbsp;Looking at&amp;nbsp;that together could hopefully give some pointers.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/367049?ContentTypeID=1</link><pubDate>Tue, 10 May 2022 02:44:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:58d44b28-7e22-4b70-9660-1e9c6f2af2b0</guid><dc:creator>Aashyk</dc:creator><description>[quote userid="7377" url="~/f/nordic-q-a/87104/characteristic-uuid-for-buttonless-bootloader-changes-between-nrf-sdk-v-11-0-0-and-sdk-v15-3-0/366706#366706"]First of all, are you using the buttonless DFU service&amp;nbsp;from later SDKs now, or are you using the old (legacy) buttonless DFU service? If there is a mismatch between the buttonless DFU service (secure or legacy) and the DFU service in the bootloader, the app may filter on wrong parameters when scanning for the device again after it has reset into DFU mode.[/quote]
&lt;p&gt;By buttonless DFU service, do you mean the BLE service set with the UUID 0xFE59. If so yes, and the corresponding characteristics (control, packet and without bonding) from the table above.&lt;/p&gt;
[quote userid="7377" url="~/f/nordic-q-a/87104/characteristic-uuid-for-buttonless-bootloader-changes-between-nrf-sdk-v-11-0-0-and-sdk-v15-3-0/366706#366706"]Secondly, is the BLE address incremented by 1 while in&amp;nbsp;bootloader mode? That should always be done when using DFU without bonding in the bootloader, also in the legacy bootloader, but it is worth double-checking.[/quote]
&lt;p&gt;Yeah, it is present in the bootloader under the function gap_address_change() which is called by gap_params_init(), which in turn is called by the function, ble_dfu_transport_init()&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/366706?ContentTypeID=1</link><pubDate>Fri, 06 May 2022 11:46:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c60c0a0b-f72e-49b3-a37b-5d82df0898ff</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I can think of a few reasons that is worth checking out.&lt;/p&gt;
&lt;p&gt;First of all, are you using the buttonless DFU service&amp;nbsp;from later SDKs now, or are you using the old (legacy) buttonless DFU service? If there is a mismatch between the buttonless DFU service (secure or legacy) and the DFU service in the bootloader, the app may filter on wrong parameters when scanning for the device again after it has reset into DFU mode.&lt;/p&gt;
&lt;p&gt;Secondly, is the BLE address incremented by 1 while in&amp;nbsp;bootloader mode? That should always be done when using DFU without bonding in the bootloader, also in the legacy bootloader, but it is worth double-checking.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/366445?ContentTypeID=1</link><pubDate>Thu, 05 May 2022 11:57:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e87d98cb-5802-4165-a40d-27ea3e64a44a</guid><dc:creator>Aashyk</dc:creator><description>&lt;p&gt;&lt;/p&gt;
[quote userid="7377" url="~/f/nordic-q-a/87104/characteristic-uuid-for-buttonless-bootloader-changes-between-nrf-sdk-v-11-0-0-and-sdk-v15-3-0/366430#366430"]Is it that the phone app does not automatically connect to the device after it entered DFU mode and you need to scan for devices and connect to it again, and then do the DFU? Or something else?[/quote]
&lt;p&gt;Yes, the phone app fails to recognize that the device is in the bootloader and therefore the device times out of bootloader and enters the application code after a while. If I abort and restart the DFU process before the device jumps to the application code, OTA DFU works.&lt;/p&gt;
&lt;p&gt;I am wondering if I have missed some key information with implementing the buttonless feature on the application code so that it is compatible with the Nordic DFU app&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/366430?ContentTypeID=1</link><pubDate>Thu, 05 May 2022 11:28:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ab3b468e-f63e-41cf-8210-d5873da58de3</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
[quote user="Aashyk"]But I can update the firmware through OTA once the device is stuck in the bootloader and before the bootloader timeout reset takes place.[/quote]
&lt;p&gt;I see - what exactly is the issue then? Is it that the phone app does not automatically connect to the device after it entered DFU mode and you need to scan for devices and connect to it again, and then do the DFU? Or something else?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/366364?ContentTypeID=1</link><pubDate>Thu, 05 May 2022 07:33:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5d0a19c5-f596-4ea9-af96-1e4897bf9374</guid><dc:creator>Aashyk</dc:creator><description>[quote userid="7377" url="~/f/nordic-q-a/87104/characteristic-uuid-for-buttonless-bootloader-changes-between-nrf-sdk-v-11-0-0-and-sdk-v15-3-0/366127#366127"]Do you get any more logs before the application starts or is this it? Also, how long does it take before the application is started?[/quote]
&lt;p&gt;Yeah, there are logs on the WDT timer feed and the application starts right after the end of the log. The device gets out of the bootloader two minutes after entering the bootloader. Here is the rest of log:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;lt;debug&amp;gt; app: Enter main loop
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed
&amp;lt;debug&amp;gt; app: timer_stop (0x20005984)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005984)
&amp;lt;info&amp;gt; app: Inactivity timeout.
&amp;lt;debug&amp;gt; app: Resetting bootloader.
&amp;lt;info&amp;gt; nrf_dfu_settings: Backin&amp;lt;info&amp;gt; app: Inside main
&amp;lt;debug&amp;gt; app: In nrf_bootloader_init
&amp;lt;info&amp;gt; app: MAIN: last_reboot_reason = 0
&amp;lt;debug&amp;gt; nrf_dfu_settings: Calling nrf_dfu_settings_init()...
&amp;lt;debug&amp;gt; nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
&amp;lt;debug&amp;gt; nrf_dfu_settings: Using settings page.
&amp;lt;debug&amp;gt; nrf_dfu_settings: Copying forbidden parts from&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The RESETREAS seems to be zero as well.&lt;/p&gt;
[quote userid="7377" url="~/f/nordic-q-a/87104/characteristic-uuid-for-buttonless-bootloader-changes-between-nrf-sdk-v-11-0-0-and-sdk-v15-3-0/366127#366127"]for instance check if this happens if you test without enabling the WDT (just to rule it out)?[/quote]
&lt;p&gt;So, I tried disabling the WDT on the application and now the device stays in bootloader but the firmware still doesn&amp;#39;t update. But I can update the firmware through OTA once the device is stuck in the bootloader and before the bootloader timeout reset takes place.&lt;/p&gt;
&lt;p&gt;It doesn&amp;#39;t seem the WDT being the issue since the bootloader feeds the watchdog properly, and the issue persists even with the WDT turned off.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/366127?ContentTypeID=1</link><pubDate>Wed, 04 May 2022 08:40:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:73a9d55d-d522-46d0-b9a2-8f301622bca5</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Thanks for providing the background for the questions - that is always useful to know.&lt;/p&gt;
[quote user="Aashyk"]From the debug terminal, on line 12 we can see the GPREGRET initiated the DFU mode but doesn&amp;#39;t seem to perform the actual update. (and code jumps to the application code right after)&amp;nbsp;[/quote]
&lt;p&gt;Yes, Based on your bootloader log I see that DFU mode is entered based on GPREGRET and the BLE transport is initialized, so it should start to advertise, and the phone (DFU master) should be able to connect and perform DFU at this point but that does not seem to happen.&lt;/p&gt;
&lt;p&gt;Do you get any more logs before the application starts or is this it? Also, how long does it take before the application is started? Can you check the RESETREAS register after starting the app again to see if the reset was caused by a WDT reset (even though it should have been fed)? Or for instance check if this happens if you test without enabling the WDT (just to rule it out)? It would also be interesting if you could check if you see the bootloader advertising when it should be in DFU mode (before something happens and the app is started)?&lt;/p&gt;
[quote user="Aashyk"]Also, I think the topic question has been answered, so let me know if I need to create a new topic to continue conversation on the buttonless DFU feature[/quote]
&lt;p&gt;Generally opening new cases for new (not directly related) questions is a good idea. As we are already starting with this it is OK to continue here, but if you make new cases for new questions in the future that would be much appreciated &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;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/366074?ContentTypeID=1</link><pubDate>Tue, 03 May 2022 21:16:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:961e10af-30f0-4489-8abc-7917e4283799</guid><dc:creator>Aashyk</dc:creator><description>&lt;p&gt;Thanks for the response! Sorry I couldn&amp;#39;t keep up with this thread as soon as possible.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
[quote userid="7377" url="~/f/nordic-q-a/87104/characteristic-uuid-for-buttonless-bootloader-changes-between-nrf-sdk-v-11-0-0-and-sdk-v15-3-0/365101#365101"]There is no obligation for you to use the same mechanism for the buttonless feature as we do in our libraries (including same UUIDs) - you can do whatever you like. When the bootloader enters DFU mode, DFU operation will commence the same regardless.[/quote]
&lt;p&gt;I think I should establish what the bigger goal of my project is before continuing with the technical questions. I have implemented the application code for my project using custom build environment and have implemented the custom BLE protocol to simulate UART over BLE and send &amp;amp; receive commands from and to a central device (Android and iPhone) using the s132 6.1.1. After implementing mentioned features, we decided to include the DFU OTA feature into the product, so we ended up using the custom bootloader based on SDK v11.0.0 (not sure if they were compatible with s132 6.1.1., but they worked without issues) and also used the Nordic Toolbox app on the mobile side to perform the OTA Device firmware updates.&lt;/p&gt;
&lt;p&gt;Later in the project, I have realized that the project requirements had been updated to have cybersecurity features, which would include device bonding, secure bootloader (cryptographic signature &amp;amp; application version checking), which were not available in the SDK v.11.0.0. which is okay since the bootloader based on SDK 15.3.0 had those features out of the box and is meant to work with s132 6.1.1, and hence the decision to upgrade to the bootloader from SDK v15.3.0&lt;/p&gt;
&lt;p&gt;Broader Goals for the project:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Application: Implement buttonless DFU which supports bonding, (compatible with existing custom application code)&lt;/li&gt;
&lt;li&gt;Bootloader: Implement secure bootloader with cryptographic signature and version checking (Use Nordic semiconductor&amp;#39;s secure bootloader, assuming it&amp;#39;s efficient to modify application code that&amp;#39;s compatible than writing a bootloader code from scratch)&lt;/li&gt;
&lt;li&gt;Mobile app: Implement the DFU OTA code that is compatible with device code, which would be both custom application code and the bootloader (Use Nordic semiconductor&amp;#39;s Android and iOS library, &lt;span&gt;assuming it&amp;#39;s efficient to modify application code that&amp;#39;s compatible than writing a mobile app code from scratch&lt;/span&gt;)&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The real issue is that I hadn&amp;#39;t used the SDK v15.3.0 to develop my application code and the development has progressed to the point where it&amp;#39;s no longer feasible to introduce the SDK libraries into the application code.&lt;/p&gt;
&lt;p&gt;Current goal for this project is making number 1. the custom application code that is compatible with Number 2. and 3. the bootloader and mobile app, hopefully without having to import all of the SDK functionalities. That&amp;#39;s the reason why I would like to know how the bootloader works (and the mobile app as well in future) to make the application code compatible with them, as the result spawning this thread&lt;/p&gt;
&lt;p&gt;So, back to the matter at hand...&lt;/p&gt;
[quote userid="7377" url="~/f/nordic-q-a/87104/characteristic-uuid-for-buttonless-bootloader-changes-between-nrf-sdk-v-11-0-0-and-sdk-v15-3-0/365101#365101"]In a nutshell you only need a characteristic you write something to, to indicate that the nRF should enter DFU mode. Then the nRF just need to write a magic word to GPREGRET and reset[/quote]
&lt;p&gt;So, I implemented the code as you had suggested, and I was able to get the device to reset and get into the bootloader mode. but it seems that the bootloader recognizes the GPREGRET magic number but doesn&amp;#39;t recognize the firmware update. I was able to perform the OTA DFU with the same bootloader when there is no application code on the device though. From the debug terminal, on line 12 we can see the GPREGRET initiated the DFU mode but doesn&amp;#39;t seem to perform the actual update. (and code jumps to the application code right after)&amp;nbsp;&lt;pre class="ui-code" data-mode="text"&gt;&amp;lt;debug&amp;gt; app: In nrf_bootloader_init
&amp;lt;debug&amp;gt; nrf_dfu_settings: Calling nrf_dfu_settings_init()...
&amp;lt;debug&amp;gt; nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
&amp;lt;debug&amp;gt; nrf_dfu_settings: Using settings page.
&amp;lt;debug&amp;gt; nrf_dfu_settings: Copying forbidden parts from backup page.
&amp;lt;debug&amp;gt; nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
&amp;lt;info&amp;gt; nrf_dfu_settings: Backing up settings page to address 0x7E000.
&amp;lt;debug&amp;gt; nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
&amp;lt;debug&amp;gt; app: Enter nrf_bootloader_fw_activate
&amp;lt;info&amp;gt; app: No firmware to activate.
&amp;lt;debug&amp;gt; app: App is valid
&amp;lt;debug&amp;gt; app: DFU mode requested via GPREGRET.
&amp;lt;info&amp;gt; nrf_bootloader_wdt: WDT enabled CRV:327680 ticks
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Starting a timer (324480 ticks) for feeding watchdog.
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;debug&amp;gt; app: in weak nrf_dfu_init_user
&amp;lt;debug&amp;gt; app: timer_stop (0x20005984)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005984)
&amp;lt;info&amp;gt; app: Entering DFU mode.
&amp;lt;debug&amp;gt; app: Initializing transports (found: 1)
&amp;lt;debug&amp;gt; nrf_dfu_ble: Initializing BLE DFU transport
&amp;lt;debug&amp;gt; nrf_dfu_ble: Setting up vector table: 0x00071000
&amp;lt;debug&amp;gt; nrf_dfu_ble: Enabling SoftDevice.
&amp;lt;debug&amp;gt; nrf_dfu_ble: Configuring BLE stack.
&amp;lt;debug&amp;gt; nrf_dfu_ble: Enabling the BLE stack.
&amp;lt;debug&amp;gt; nrf_dfu_ble: No advertising name found
&amp;lt;debug&amp;gt; nrf_dfu_ble: Using default advertising name
&amp;lt;debug&amp;gt; nrf_dfu_ble: Advertising...
&amp;lt;debug&amp;gt; nrf_dfu_ble: BLE DFU transport initialized.
&amp;lt;debug&amp;gt; nrf_dfu_flash: Initializing nrf_fstorage_sd backend.
&amp;lt;debug&amp;gt; app: Enter main loop
&amp;lt;debug&amp;gt; app: timer_stop (0x20005994)
&amp;lt;debug&amp;gt; app: timer_fire (0x20005994)
&amp;lt;debug&amp;gt; app: timer_activate (0x20005994)
&amp;lt;info&amp;gt; nrf_bootloader_wdt: Internal feed&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s a screenshot from the Android DFU app (recently split from the Toolbox app),&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/Screenshot_5F00_20220503_2D00_140210.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;The OTA DFU does work when there is only bootloader on the device. It&amp;#39;s only when the buttonless DFU is initialed, the functionality doesn&amp;#39;t work&lt;/p&gt;
&lt;p&gt;Also, I think the topic question has been answered, so let me know if I need to create a new topic to continue conversation on the buttonless DFU feature&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/365101?ContentTypeID=1</link><pubDate>Wed, 27 Apr 2022 07:30:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1a5a54e7-c160-433d-9dc4-6f793182cdcb</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Ah, OK. So the question here is really just about the buttonless functionality? That is fundamentally very simple (though it can be complicated with some additional optional features). This is supported by the buttonless DFU service in the SDK, so you can base your code on that, but if you want something simple and generic you can also make something yourself. In a nutshell you only need a characteristic you write something to, to indicate that the nRF should enter DFU mode. Then the nRF just need to write a magic word to GPREGRET and reset, for instance like this (which is&amp;nbsp;adapted&amp;nbsp;from the buttonless DFU service implementation in SDK 17.1.0 - components\ble\ble_services\ble_dfu\ble_dfu.c):&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;    err_code = sd_power_gpregret_clr(0, 0xffffffff);
    VERIFY_SUCCESS(err_code);

    err_code = sd_power_gpregret_set(0, BOOTLOADER_DFU_START);
    VERIFY_SUCCESS(err_code);

    (void)sd_nvic_SystemReset();&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;There is no obligation for you to use the same mechanism for the buttonless feature as we do in our libraries (including same UUIDs) - you can do whatever you like. When the bootloader enters DFU mode, DFU operation will commence the same regardless. (The difference is if you want to use some of the additional features of the buttonless DFU service, like setting bootloader advertising name or share bonds to use encrypted link in the bootloader).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/365049?ContentTypeID=1</link><pubDate>Tue, 26 Apr 2022 22:30:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:22ef3076-c3d2-47e9-8f9b-216c136d95a7</guid><dc:creator>Aashyk</dc:creator><description>&lt;p&gt;Thanks for the reply and sorry for getting back late to this thread. From your reply, my understanding is that not only the UUID characteristic that has changed, but also the protocol and implementation for buttonless DFU has changed. I also understand that the SDK has libraries for buttonless DFU that I would be able to use out of the box.&lt;/p&gt;
&lt;p&gt;The problem that I&amp;#39;m facing is that I have implemented a custom BLE application code to handle most of the BLE services, including the legacy DFU protocol (note that I have used and still planning to use nRF SDK provided bootloader). So, it seems I would have to import the SDK to the existing application code.&lt;/p&gt;
&lt;p&gt;I am wondering if it would be possible to import only file dependencies relevant to buttonless DFU and if so, is there a documentation that lists those dependencies that you could point me to?&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/364366?ContentTypeID=1</link><pubDate>Fri, 22 Apr 2022 07:01:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e7598a68-f543-489f-9bb3-807056112964</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
[quote user="Aashyk"]I understand the bootloader code is different between the versions,[/quote]
&lt;p&gt;It is not just the code that is different. The protocol etc. is also different. This is not generally the case between SDK versions, but the bootloader in SDK 15.3.0 is the secure bootloader, and this is a different bootloader and DFU architecture than wha tis used in the legacy bootloader. (There are similarities as the secure bootloader was based on the legacy bootloader, but that is not so relevant in this case.)&lt;/p&gt;
[quote user="Aashyk"]When you mention that we can&amp;#39;t reuse any DFU related code, do you mean the functions provided in the SDK, or examples or both (on application that is)?[/quote]
&lt;p&gt;This was a general point, bootloader, method to enter buttonless DFU mode, bond sharing (if you use DFU with bonding), phone side implementation - everything is different. We provide libraries for all though, so it does not mean it is a huge task. My point was just that this is a far bigger change than just the UUID numbers, so the focus must be much broader.&lt;/p&gt;
[quote user="Aashyk"]In my application code, I only check for the control point characteristic to see if it received the value 0x0001 and set the GPREGRET TO 0XB1 and reset start the device to enter the bootloader code. Has that changed in the new version?[/quote]
&lt;p&gt;This principle remain the same. You write 1 to the buttonless characteristic (BLE_DFU_BUTTONLESS_CHAR_UUID if you use without bonds) to enter DFU mode, and that should trigger a write to GPREGRET and a reset. This is implemented by the ble_dfu service which you find under &amp;lt;SDK 15.3&amp;gt;/components/ble/ble_services/ble_dfu/.&lt;/p&gt;
[quote user="Aashyk"]Also, I want to make sure if I have understood the updated UUIDs right, so I have attached a table here; If you can verify and confirm, that would be greatly appreciated![/quote]
&lt;p&gt;The Table looks correct. Note that you do not need to think much about this as we provide libraries for it (the&amp;nbsp;bootloader libraries for the bootloader, the buttonless DFU service for the application, and DFU libraries for various mobile operating systems).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/364340?ContentTypeID=1</link><pubDate>Fri, 22 Apr 2022 02:20:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6032aa62-c10e-4157-95c4-4aa8b17618a9</guid><dc:creator>Aashyk</dc:creator><description>&lt;p&gt;Thanks for the response! I understand the bootloader code is different between the versions, but I would like to know what does it mean for the DFU function on the application code? When you mention that we can&amp;#39;t reuse any DFU related code, do you mean the functions provided in the SDK, or examples or both (on application that is)? In my application code, I only check for the control point characteristic to see if it received the value 0x0001 and set the GPREGRET TO 0XB1 and reset start the device to enter the bootloader code. Has that changed in the new version? Also, I want to make sure if I have understood the updated UUIDs right, so I have attached a table here; If you can verify and confirm, that would be greatly appreciated!&lt;/p&gt;
&lt;table dir="ltr" border="1" cellpadding="0" cellspacing="0"&gt;&lt;colgroup&gt;&lt;col width="119" /&gt;&lt;col width="277" /&gt;&lt;col width="277" /&gt;&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UUID list&lt;/td&gt;
&lt;td&gt;UUID number for version 11.0.0&lt;/td&gt;
&lt;td&gt;UUID number for version 15.3.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DFU OTA primary service&lt;/td&gt;
&lt;td&gt;00001530-1212-EFDE-1523-785FEABCD123&lt;/td&gt;
&lt;td&gt;FE59&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Control point UUID&lt;/td&gt;
&lt;td&gt;00001531-1212-EFDE-1523-785FEABCD123&lt;/td&gt;
&lt;td&gt;8EC90001-F315-4F60-9FB8-838830DAEA50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Packet UUID&lt;/td&gt;
&lt;td&gt;00001532-1212-EFDE-1523-785FEABCD123&lt;/td&gt;
&lt;td&gt;8EC90002-F315-4F60-9FB8-838830DAEA50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DFU with bonds&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;8EC90003-F315-4F60-9FB8-838830DAEA50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DFU without bonds&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;8EC90004-F315-4F60-9FB8-838830DAEA51&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Characteristic UUID for buttonless bootloader changes between nrf SDK v.11.0.0 and SDK v15.3.0</title><link>https://devzone.nordicsemi.com/thread/363856?ContentTypeID=1</link><pubDate>Wed, 20 Apr 2022 10:28:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0dfc011f-e7b6-4b01-8a1a-23842abe4966</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;The UUIDs are different, yes. The UUID for the &lt;a href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.sdk5.v15.3.0/lib_dfu_transport_ble.html"&gt;Secure bootloader service&lt;/a&gt; is 0xFE59 (see also documentation for the &lt;a href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.sdk5.v15.3.0/service_dfu.html"&gt;buttonless secure DFU service&lt;/a&gt;&amp;nbsp;that is used to trigger DFU mode). Note that it it is not only the UUID that is different between the SDK 11 legacy bootloader and the SDK 15.3 secure bootloader - they are in fact completely different. So you cannot re-use any DFU related code going from the legacy DFU bootloader to the secure DFU bootloader.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>