Hi,
for a project I need to perform a DFU Update over BLE. After I prepared the bootloader (generating public and private keys and building it), I prepared the update packet (.zip) as described on the nrfutil github page.
With nrfconnect everything works fine under Windows. So I decided to try nrfutil to perform the update, since my client wants an automated test system like a Jenkins server.
This also worked fine on Windows wih the following command:
nrfutil dfu ble -ic NRF52 -pkg app.zip -p COM12 -snr 682185632 -a D75839569FFA -f
First the connectivity IC was flashed and than the update was performed. This worked for Bootloader and Buttonless DFU applications.
Once I switched to Ubuntu Linux, I changed the Port to ttyACM0 for my dongle board. The board gets flashed with the connectivity firmware
(I erased the flash before testing it under linux). But the the following error is displayed while performing an update:
Board already flashed with connectivity firmware.
[------------------------------------] 0%
Traceback (most recent call last):
File "/usr/local/bin/nrfutil", line 9, in <module>
load_entry_point('nrfutil==3.5.1', 'console_scripts', 'nrfutil')()
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 722, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/nordicsemi/__main__.py", line 838, in ble
dfu.dfu_send_images()
File "/usr/local/lib/python2.7/dist-packages/nordicsemi/dfu/dfu.py", line 129, in dfu_send_images
self._dfu_send_image(self.manifest.application)
File "/usr/local/lib/python2.7/dist-packages/nordicsemi/dfu/dfu.py", line 90, in _dfu_send_image
self.dfu_transport.open()
File "/usr/local/lib/python2.7/dist-packages/nordicsemi/dfu/dfu_transport_ble.py", line 450, in open
self.dfu_adapter.open()
File "/usr/local/lib/python2.7/dist-packages/nordicsemi/dfu/dfu_transport_ble.py", line 106, in open
self.adapter.driver.open()
File "/usr/local/lib/python2.7/dist-packages/pc_ble_driver_py/ble_driver.py", line 126, in wrapper
raise NordicSemiException('Failed to {}. Error code: {}'.format(wrapped.__name__, err_code))
pc_ble_driver_py.exceptions.NordicSemiException: Failed to open. Error code: 3
After that I tried to use the dongle board with nrfconnect also on ubuntu. I got the promt asking if I wanted to flash the dongle board
with the connectivity firmware, which I just had done with nrfutil. I clicked on yes and the board was flashed and then nrfconnect frezzed.
I tried different boards, to see if mine was faulty, but the results were identical. So I asked a college to try on his ubuntu install
and he had the exact same behavior. I am assuming that this could be a bug in nrfutil, since on Windows it worked perfectly fine, while on
ubuntu it did not.
Since I need to performe the update on linux as well as on windows, I really hope that you can help me with my issue.
Thanks in advance