Hello,
My company is developing a wireless battery powered product based on the nrf82533 which we would like to be able to update using secure DFU over BLE using nrfutil. When using a nrf82540-dongle (pca10059) with the connectivity firmware written to the device using nrf connect for desktop, we are able to update the device reliably using DFU over BLE using nrfutil.
When building the connectivity hex files from the pc-ble-driver repo on github, writing the output file connectivity_1.0.0_usb_with_s132_5.1.0.hex produces a dongle that can update the ble device. Writing connectivity_1.0.0_usb_with_s140_6.1.1.hex results in a dongle that cannot perform the ble dfu update.
Our software uses the S140 soft device version 6.1.1 so it would be ideal for the dongle to use this soft device and perform the dfu update.
How would one build a working ble-connectivity firmware for use with S140 to perform DFU updates over BLE for other Nordic ic devices?
Thank you very much for any input,
Ethan
Here is the output of nrfutil when using the dongle "connectivity_1.0.0_usb_with_s140_6.1.1.hex" to perform a ble dfu update to the product:
$ nrfutil -v -v -v -v dfu ble -pkg mnt/clipdongle/FWha.zip -ic NRF52 -p /dev/ttyACM0 -a $ADDR
2020-11-18 17:01:50,674 Using connectivity board at serial port: /dev/ttyACM0
2020-11-18 17:01:50,677 Sending Application image.
2020-11-18 17:01:54,082 Successfully opened /dev/ttyACM0. Baud rate: 1000000. Flow control: none. Parity: none.
2020-11-18 17:01:54,082 evt> severity(20) message(Successfully opened /dev/ttyACM0. Baud rate: 1000000. Flow control: none. Parity: none.)
2020-11-18 17:01:54,083 RpcAppStatus.resetPerformed: Target Reset performed
2020-11-18 17:01:54,083 evt> status code(RpcAppStatus.resetPerformed) message(Target Reset performed)
2020-11-18 17:01:55,284 RpcAppStatus.connectionActive: Connection active
2020-11-18 17:01:55,284 evt> status code(RpcAppStatus.connectionActive) message(Connection active)
2020-11-18 17:01:55,288 BLE: Scanning for None
2020-11-18 17:01:55,535 RpcAppStatus.ioResourcesUnavailable: serial port read failed on port /dev/ttyACM0. Error: End of file [2]
2020-11-18 17:01:55,535 evt> status code(RpcAppStatus.ioResourcesUnavailable) message(serial port read failed on port /dev/ttyACM0. Error: End of file [2])
2020-11-18 17:01:56,790 Failed to receive response for command
2020-11-18 17:01:56,790 evt> severity(30) message(Failed to receive response for command)
2020-11-18 17:01:56,791 RpcAppStatus.pktSendError: Error sending packet to target. Code: 0x8016
Traceback (most recent call last):
File "/home/esmth/.local/bin/nrfutil", line 8, in <module>
sys.exit(cli())
File "/home/esmth/.local/lib/python3.8/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/home/esmth/.local/lib/python3.8/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/home/esmth/.local/lib/python3.8/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/esmth/.local/lib/python3.8/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/esmth/.local/lib/python3.8/site-packages/click/core.py", line 1066, in invoke
2020-11-18 17:01:56,791 evt> status code(RpcAppStatus.pktSendError) message(Error sending packet to target. Code: 0x8016)
return ctx.invoke(self.callback, **ctx.params)
File "/home/esmth/.local/lib/python3.8/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/home/esmth/.local/lib/python3.8/site-packages/nordicsemi/__main__.py", line 1199, in ble
dfu.dfu_send_images()
File "/home/esmth/.local/lib/python3.8/site-packages/nordicsemi/dfu/dfu.py", line 127, in dfu_send_images
self._dfu_send_image(self.manifest.application)
File "/home/esmth/.local/lib/python3.8/site-packages/nordicsemi/dfu/dfu.py", line 88, in _dfu_send_image
self.dfu_transport.open()
File "/home/esmth/.local/lib/python3.8/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 "/home/esmth/.local/lib/python3.8/site-packages/nordicsemi/dfu/dfu_transport_ble.py", line 152, in connect
self.adapter.driver.ble_gap_scan_start()
File "/home/esmth/.local/lib/python3.8/site-packages/pc_ble_driver_py/ble_driver.py", line 103, in wrapper
raise NordicSemiException(
pc_ble_driver_py.exceptions.NordicSemiException: Failed to ble_gap_scan_start. Error code: NRF_ERROR_SD_RPC_SEND