[DFU] How to create dfu using a standalone command

Hi,

i am developing under NCS 3.2.1.

I would like to if there exist a stand-alone command for creating DFU (nrfutil sub-command or similar) instead of https://github.com/nrfconnect/sdk-nrf/blob/v3.2.1/scripts/bootloader/generate_zip.py.

Thank you,

Alessandro

  • That is a python script, which you can trivially turn into an .exe executable with pyinstaller.

  • That answer is not helpful. I too am trying to get to a standalone DFU installer, or a C file I can add to a PC application to allow an end user to do firmware updates as needed. The instructions for nrfutil are convoluted and do not work, even just to generate a zipfile let alone to program it. This is a deep rabbit hole so far. I need to be able to provide the user a single file, either a .hex file or the .zip that is ostensibly generated by nRFUtil, and a simple way to send that to the device (nRF52832 or nRF52840), preferably via USB. Surely this is not an unusual request, and Nordic's developers should be able to provide a simple and useful answer.

  • Hi all,

    To keep it simple, I will assume the case is for an application with MCUboot as an immutable bootloader.

    TL;DR: To manually generate files for DFU, use imgtool.py.

    zephyr.signed.bin

    To update an application with MCUboot, you need zephyr.signed.bin. This file is automatically generated by our build system, as part of the Output Build Files.

    You can generate your own signed binary manually using imgtool.py if you prefer. If you do this, you can start with build/<app>/zephyr.hex, which is your application.

    To learn how to upload zephyr.signed.bin to a device to perform DFU, see DevAcademy -> nRF Connect SDK Intermediate ->  Lesson 9 on DFU.

    dfu_application.zip

    Some places you see dfu_application.zip being generated and used, such as in the DevAcademy course for FOTA. However, in this case, dfu_application is not used directly by the SoC. Instead, dfu_application contains zephyr.signed.bin and a manifest json file. The application responsible for the DFU, for example nRF Connect for Mobile or nRF Cloud, will then unzip this file, and DFU the containing zephyr.signed.bin as instructed in the manifest file. This method is useful for more flexible DFU solutions, such as multi image DFU.

    The script you refer to is used to generate dfu_application.zip from already signed binary files.

    Regards,
    Sigurd Hellesvik

  • You're on the right track, but this rabbit hole has a lot of blind alleys. I was able to download and install Python, but now I'm stuck on finding Pip3. I would really like to find or create a simple Windows app that my customer could use to program a simple hex file via DFU to my target (currently nRF52840, could be 52832 on future products). Just using this for field firmware updates.

  • Let us take a step back here:

    Why do you need a standalone app to generate the file for DFU?
    The easiest way is normally to get the automatically generated zephyr.signed.bin.
    Let's have a look at why this method is not a good fit for you, and we can hopefully find out which solution is best for your use-case

Related