This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

DFU not working

Few issues I'm facing -

1. I have gone through the related blogs, tutorial, documentation for DFU. nRFConnect cannot connect to the Fanstel BM832 chip. It gives me an error BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED

2. Can another controller flash the application firmware to BLE chip over UART or does it still need the nrfutil?

3. Can nrfjprog.dll be used to flash code over BLE? Is nrfjprog.dll only used to flash code over UART or USB?

4. If I were to update application firmware over BLE, what are my options besides using nRFConnect & Nordic DK? How do I create my own tool to update the firmware?

5. What all changes are required to use NRF_BL_DFU_ENTER_METHOD_GPREGRET? Should I only enable it in sdk_config.h? Which is a simpler way to automate the process of entering DFU mode - NRF_BL_DFU_ENTER_METHOD_GPREGRET or NRF_BL_DFU_ENTER_METHOD_BUTTONLESS? Which examples should I use for buttonless DFU? Is the ble_app_buttonless_dfu used as application firmware?

6. Could you explain the purpose of 2 separate files - one says with bonds & other no bonds?

7. Where can I find a single or dual bank application update examples?

8. Dual bootloader - DFU (BLE) + UART

9. Does the DFU bootloader have a timeout?

10. How can I remove the dependency of nrf kit/dongle + nRFConnect + Mobile to flash firmware on BLE chip?

11. How is firmware.zip sent over BLE? Is it broken into packets?

12. Relation between WDT & DFU

  • While I'm waiting for your response, I tried 

    1. Generate keys. Run 01_generate_private_public_keys.bat
    2. Run make in micro-ecc
    3. Run C:\nRF5_SDK_15.2.0_9412b96\external\micro-ecc\build_all.bat
    4. Compile C:\nRF5_SDK_15.2.0_9412b96\examples\dfu\secure_bootloader\pca10040_ble\arm5_no_packs\secure_bootloader_ble_s132_pca10040.uvprojx, which is the secure BLE bootloader for nRF52832 & rename hex file to bootloader.hex
    5. Copy bootloader.hex & s132_nrf52_6.1.0_softdevice.hex in the folder containing .bat files. Run 02_flash_SD_and_bootloader.bat
    6. After power cycle, it will advertise as DfuTarg
    7. Copy application .hex file & rename it to app.hex.
    8. Run 03b_create_fw_zip_package_noSD.bat & change SD version if required to create FW.zip https://github.com/NordicSemiconductor/pc-nrfutil

    Later on, I also tried re-entering DFU mode by

    I think that in my Desktop app, I should write these values to characteristics in DFU. But what do I do after that? What are the steps to send FW.zip over BLE? Should my Desktop app use your .dll file?

  • Hi Sonal, 

    Please get familiar with the bootloader first. After you managed to do an DFU it will help answered many of your questions. 

    Please go though my step by step guide here and let me know at which point you have an issue.

    The guide you pointed to on git hub is an advanced guide for buttonless application. Please do a normal DFU first before testing with that guide. 

  • Hi Hung, I do not have any problems in performing DFU by using your tools. I have already referred to your guide, especially the last point. Can you please tell me how do I write my own Desktop application to update the firmware?

    Can you point me to a guide explaining how the .zip file is actually sent over BLE? Is it broken into packets? What happens in the background when I click DFU button on nrfconnect? How can I remove the dependency of nrf kit/dongle + nRFConnect + Mobile to flash the firmware on BLE chip? Can nrfjprog.dll be used to flash code over BLE? Is nrfjprog.dll only used to flash code over UART or USB?

    Can another controller flash the application firmware to BLE chip over UART or does it still need the nrfutil?

    I think the easiest way for me is to update just the application firmware over DFU service. If 0x01 is written to the characteristic in DFU service, the BLE device goes into bootloader mode. All this without an extra nrf DK. Can I write my own Desktop application which does this?

    As you can see, I'm concentrating more on what happens on host side.

  • https://devzone.nordicsemi.com/f/nordic-q-a/43357/qt-ble-firmware-upgrade/186156#186156 I came across this ticket which says that BLE DFU using Desktop makes use of nrf DK which is unavoidable. So my options are creating a mobile app based on Nordic DFU Library or custom transport layer. Am I right?

  • Hi on IOS we are using this library: https://cocoapods.org/pods/iOSDFULibrary. I believe that the code for nrfConnect is on github. There isn't much around about it apart from what you have mentioned.

    Cheers paul

Related