OTA Update with nrf52840DK rev. 3.0.1 vs. rev. 2.0.1

Hello Forum,

I have one working nrf52840DK rev. 2.0.1

I can use it to OTA-flash a BM833 (MAC:E419E134561C) in the following way (in Ubuntu Linux command line) with the prepared app_dfu_package.zip:

nrfjprog --recover

/usr/local/bin/nrfutil dfu ble -f -ic NRF52 -pkg /tmp/app_dfu_package.zip -p /dev/ttyACM1 -a E419E134561C

Now I'm using the same commands, the same app_dfu_package.zip BUT nrf52840DK rev. 3.0.1.

This renders in the program's output:

Flashing connectivity firmware...
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/pc_ble_driver_py/ble_driver.py", line 3201, in call_cmd
    return subprocess.check_output(argstr, stderr=subprocess.STDOUT, shell=True)
  File "/usr/lib/python3.8/subprocess.py", line 415, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/usr/lib/python3.8/subprocess.py", line 516, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command 'nrfjprog --snr 1050239327 --program /usr/local/lib/python3.8/dist-packages/pc_ble_driver_py/hex/sd_api_v5/connectivity_4.1.4_1m_with_s132_5.1.0.hex --family NRF52' returned non-zero exit status 52.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/nrfutil", line 33, in <module>
    sys.exit(load_entry_point('nrfutil==6.1.3', 'console_scripts', 'nrfutil')())
  File "/usr/lib/python3/dist-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/nrfutil-6.1.3-py3.8.egg/nordicsemi/__main__.py", line 1172, in ble
    flasher.fw_flash()
  File "/usr/local/lib/python3.8/dist-packages/pc_ble_driver_py/ble_driver.py", line 3166, in fw_flash
    self.program(hex_file)
  File "/usr/local/lib/python3.8/dist-packages/pc_ble_driver_py/ble_driver.py", line 3194, in program
    self.call_cmd(args)
  File "/usr/lib/python3/dist-packages/wrapt/decorators.py", line 443, in _synchronized
    return wrapped(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/pc_ble_driver_py/ble_driver.py", line 3206, in call_cmd
    raise RuntimeError(f"{e.__str__()}\n{e.output}")
RuntimeError: Command 'nrfjprog --snr 1050239327 --program /usr/local/lib/python3.8/dist-packages/pc_ble_driver_py/hex/sd_api_v5/connectivity_4.1.4_1m_with_s132_5.1.0.hex --family NRF52' returned non-zero exit status 52.
b'Parsing image file.\nERROR: The file specified is not a valid hex file, has data outside valid areas\nERROR: or does not have data in valid areas.\n'

What needs to be done to get the process to work with nrf52840DK rev. 3.0.1?

Best regards,

Richard

  • Hi

    Hehe, yeah that was a bit far from my first suggestion when I initially looked through the case (just to clarify I misread "using DKs to update other devices" as "Update DKs", which is why I touched upon the usb ports)

    Nonetheless, I'm glad to hear that you solved the issue, and we're very thankful for you posting the solution in this thread! 

    As always, please feel free to create new tickets if new issues or questions comes up and we'll assign them to an application engineer and answer them as soon as we can

    Kind regards,
    Andreas

Related