This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

DFU Thread with nRF52840 Dongle (PCA10059)

Hello,

I am trying to use a nRF52840 Dongle to perform DFU over Thread: I am using a PCA10059 board, already provided with the default bootloader. I also programmed the board with the connectivity firmware provided by repository pc-ble-driver: I used pre-compiled hex files provided in the hex folder of the repository (I don't know exactly which branch I should use; I focused on the release branches)

When I run the nrfutil command to perform DFU over Thread, I always get the same error:

The firmware I tried is the connectivity_4.1.1_usb_with_s140_6.1.1.hex but I also tried other versions, as the 4.1.4 release.

I would like to know the following:

a) which repository branch to use

b) which sd_api version to use (I suppose sd_api_v6 is the one to be used since it's the latest)

c) if I should make changes to the source code to adapt it to the PCA10059 board

d) if the source code is available somewhere (I know the code is based on SDK/example/connectivity/ble_connectivity but I also know there are patches to be made..)

Thanks!

Parents
  • Hi Kalpino,

    The DFU over Thread does not use pc-ble-driver. The nrfutil source codes shows connectivity firmware from pc-ble-driver is only used in ble dfu. While in the thread dfu part, you can find codes in the nordicsemi/thread/tncp.py shows it uses one 4 years old version of the pre-build ncp.hex file which only works on nRF52840 DK.

    The good news is that a nRF52840 Dongle can also run as NCP. The bad news is that the latest NCP doest not compatible with the old one.

    I need some time to find the reason, will reply to you later.

    Best regards,

    Charlie

Reply
  • Hi Kalpino,

    The DFU over Thread does not use pc-ble-driver. The nrfutil source codes shows connectivity firmware from pc-ble-driver is only used in ble dfu. While in the thread dfu part, you can find codes in the nordicsemi/thread/tncp.py shows it uses one 4 years old version of the pre-build ncp.hex file which only works on nRF52840 DK.

    The good news is that a nRF52840 Dongle can also run as NCP. The bad news is that the latest NCP doest not compatible with the old one.

    I need some time to find the reason, will reply to you later.

    Best regards,

    Charlie

Children
  • Hi Kalpino,

    I try the latest NCP build from ot-nrf528xx/src/nrf52840 at main · openthread/ot-nrf528xx (github.com) and it works.

    You can try now with the following steps:

    1. Build NCP for nRF52840 Dongle from that GitHub repository, you will get this firmware: 
      ot_ncp_ftd.hex
    2. Program nRF52840 Dongle.
    3. Comment line 223 and 224 on your nrfutil installation: Python/Python38/Lib/site-packages/nordicsemi/thread/tncp.py
              # if (self._config[NCPTransport.CFG_KEY_RESET]) and not self._wpan.cmd_reset():
              #     raise Exception('Failed to reset NCP. Please flash connectivity firmware.')
    4.  Run DFU Thead server with command "nrfutil dfu thread -pkg app_dfu_package.zip -p COMx --channel 11 --panid 43981"

    Just let me know if it works on your setup.

    Best regards,

    Charlie

  • Thanks Charlie for sharing the correct repository. I've been looking for it for a while now.

    I quickly tried to program a nRF52840 Dongle, already provided with its default bootloader, with the hex file you provided at point (1): the error message that I get is the same as before (Failed to reset NCP. Please flash connectivity firmware.)

    Do I have to use a different bootloader or add any  softdevice?

  • Sorry, I forget to mention one modification. I have added one more step to the original answer.

Related