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

nrfutil v6.1.0 dfu ble fail with connectivity firmware v4.1.2

Hi, devzone

I tested nrfutil6.1.0 dfu ble feature and pca10040 as host board to upgrade another board pca10040, successful!

when test nrf connect desktop v3.6.0 and pca10059 as host board to upgrade another board pca10040, successful!

But, when test nrfutil6.1.0 and pca10059 as host board to upgrade another board pca10040 , result fail(BLE Connection failed due to 0x3e)

Env:

PC:WIN10, python3.8, installed nrfutil 6.1.0 and pc-ble-driver-py 0.15.0

Hardware: PCA10059 and PCA10040

Connectivity Firmware: connectivity_4.1.2_usb_with_s132_3.1.0_dfu_pkg.zip

pca10040 dfu package: SDK15.3\..ble_app_buttonless_dfu_without_bonds_s132.zip

bootloader: SDK15.3\..open_bootloader\pca10059_usb_debug

First, Test with nRF_Connect_desktop v3.6.0

erase pca10059 and programe open usb bootloader. Result is OK, dfu successful and stable.

nRF Connect Desktop 3.6.0 log:

14:13:26.926	Device setup completed
14:13:26.932	Connectivity firmware version: ble-connectivity 4.1.2+Jul-14-2020-05-48-48. SoftDevice API version: 5. Baud rate: 1000000.
14:13:26.973	Opening adapter connected to COM3
14:13:27.944	Successfully opened COM3. Baud rate: 1000000. Flow control: none. Parity: none.
14:13:27.946	Reset performed on adapter COM3
14:13:29.032	Adapter connected to COM3 opened

Then, Test with nrfutil v6.1.0 :

1>erase pca10059 and program usb bootloader

2>change nrfutil python code where https://github.com/NordicSemiconductor/pc-nrfutil/blame/v6.1/nordicsemi/__main__.py#L1177 to select connectivity  usb firmware pkg v4.1.2

    python driver that comes with nrfutil_v6.1.0 is pc-ble-driver-py(v0.15.0), inside folder has hex/sd_api_v3 and sd_api_v5, all firmware file is version 4.1.2, not 4.1.1.

    I also tested tconnectivity firmware v4.1.1, Fail, there are a lot of  other error that I forget to record , and, this should not be the point of this problem

    PS: I had been report a issue on nrfutil github here https://github.com/NordicSemiconductor/pc-nrfutil/issues/341

3>run cmd: nrfutil dfu ble <...> -f 

PS C:\Users\Administrator> nrfutil dfu ble -ic NRF52 -pkg "E:\nrfutil_DFU_test\ble_app_buttonless_dfu_without_bonds_s132.zip" -n Nordic_Buttonless -f
Please select connectivity serial port:
        0 : COM4 - C13C3EDEBED8
Enter your choice: : 0
Flashing connectivity firmware...
Connectivity firmware flashed.
PS C:\Users\Administrator> nrfutil dfu ble -ic NRF52 -pkg "E:\nrfutil_DFU_test\ble_app_buttonless_dfu_without_bonds_s132.zip" -n Nordic_Buttonless -p COM3

Traceback (most recent call last):
  File "C:\Python38\Scripts\nrfutil-script.py", line 11, in <module>
    load_entry_point('nrfutil==6.1.0', 'console_scripts', 'nrfutil')()
  File "c:\python38\lib\site-packages\click\core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "c:\python38\lib\site-packages\click\core.py", line 782, in main
    rv = self.invoke(ctx)
  File "c:\python38\lib\site-packages\click\core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "c:\python38\lib\site-packages\click\core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "c:\python38\lib\site-packages\click\core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "c:\python38\lib\site-packages\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "c:\python38\lib\site-packages\nordicsemi\__main__.py", line 1197, in ble
    dfu.dfu_send_images()
  File "c:\python38\lib\site-packages\nordicsemi\dfu\dfu.py", line 127, in dfu_send_images
    self._dfu_send_image(self.manifest.application)
  File "c:\python38\lib\site-packages\nordicsemi\dfu\dfu.py", line 88, in _dfu_send_image
    self.dfu_transport.open()
  File "c:\python38\lib\site-packages\nordicsemi\dfu\dfu_transport_ble.py", line 474, in open
    self.target_device_name, self.target_device_addr = self.dfu_adapter.connect(
  File "c:\python38\lib\site-packages\nordicsemi\dfu\dfu_transport_ble.py", line 153, in connect
    self.verify_stable_connection()
  File "c:\python38\lib\site-packages\nordicsemi\dfu\dfu_transport_ble.py", line 257, in verify_stable_connection
    raise Exception("Failure - Connection failed due to 0x3e")
Exception: Failure - Connection failed due to 0x3e

Similar problem in thread nrfutil dfu random failures

Hope someone can figure out,and let me know,any point will be appreciated

  • Unfortunately, it did not resolve.

    step1, via jlink erase dongle

    step2, via jlink program dongle with bootloader

    step3, PC plug in dongle, Enumerate into nRF52 SDFU USB(COM4)

    step4, open nRF Connect for Desktop->Programmer, select COM3, and upload connectivity_4.1.2_usb_with_s132_5.1.0.hex. hit "Write"

    COM port become nRF Connect USB CDC ACM (COM3)

    It seems that the programmer operation is ok , but still FAIL when use nrfutil dfu ble

  • You did use the bootloader from the nrf52840 dongle programming tutorial? If not, try to use it (attached here: 0045.pca10059_bootloader.zip)

    If you can confirm that this is the bootloader you programmed on the dongle, looking into your log:

    Is the dongle and the target device properly powered? And are they well within range?

    And do you restart the DFU process manually after the error code 12290? And is there something missing in the log at the line saying "..."? Or did nrfutil print this?

    BR,

    Edvin

Related