Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF52 SDK14.2 "ble_app_buttonless_dfu" example: What is the value written to the characteristic when entering the bootloader using nRF Connect application (Android).

I am trying the buttonless DFU example from SDK14.2.0. I am not following the testing procedure mentioned at infocentre for SDK14.2. 

Followed test procedure:

1. Erase device.

2. Upload softdevice v5.0.0

3. Upload bootloader_secure_ble bootloader.

4. Compile ble_app_buttonless_dfu example and generate a ZIP package.

5. Device advertising as DfuTarg. Connect and upload generated ZIP package using nRF Connect (Android).

6. Connect to Nordic_Buttonless.

7. Select: Secure DFU Service.

8. Enable Notification and click on Write Characteristic icon.

9. Prompt: "Enter Bootloader mode?"

10. Select: Yes

11. Device exits application, enters bootloader mode and advertises as DfuTarg.

The above procedure works absolutely fine.

Problem arises when I change the vendor specific UUID. 

On doing so, all the steps from 1 to 8, mentioned above work fine, however, I do not get a prompt from step 9. This is expected as the nRF Connect application does not recognise the new UUID and service.

I have to manually enter the value to enable bootloader.

In SDK12.2.0, this value used to be 0x01, however this value does not work for this version of SDK. 

I have tried both 0x01 and 0xB1, but to no vain.

Can you please recreate this test and/or suggest me the exact value to be entered to enter bootloader mode 

  • Can I please have some update on this issue from Nordic Tech Support? 

    Thank you.

  • Hi,

    Sorry for the delayed response. It seems that the Buttonless DFU example has changed in SDK 14. If you compare the infocenter testing document for SDK 12.2 with SDK 14.2, you notice that you don't write 0x01 to the control point anymore. Instead of writing 0x01 to enable the bootloader that starts the dfu process, you can automatically start the dfu process from nrf connect instead. I would recommend testing the example the way it is explained in the SDK 14.2 infocenter document link above.

    Kind Regards,

    Bjørn Kvaale

  • Hi Bjorn,

    Thanks for your response. I have tested the example as described in infocentre document. It works fine. SDK12.2 testing procedure works out as well. The only difference is that now the user does not have to write any value to the characteristic, rather the nRF Connect UI takes care of this by asking a simple Yes/No question to switch to bootloader mode.

    The issue is that the nRF Connect is dependent on the Nordic Vendor Specific UUID. So, by changing the 128-bit UUID, the nRF Connect no longer asks a Yes/No question, and expects a certain value to be written to the characteristic as observed previously in SDK12.2.

    Going through the code, I see only two possibilities 0x01 or 0xB1. I would appreciate if you can test this behaviour and tell me what can I do to make it work.

    Buttonless DFU has to work along with other services and current testing methodology will simply not work in production scenario.

    Thanks,

    Rishi

  • Did you enable CCCD on nrf connect before writing 0x01 to the characteristic? Asked another application engineer & he was sure that writing 0x01 would work to enable the bootloader mode. I have started testing & will get back to you with some more updates.

  • Yes, on enabling CCCD and enabling notification, I get the message, "Indications Enabled" and this is followed by writing the value. 

    I am waiting for your test results. 

    Thanks.

Related