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

How to flash the nRF52832 over UART?

I need to be able to upload my application to an nRF52832 through an ARM architecture Linux machine that I have remote access to. nrfjprog is not available for machines with ARM architectures and I cannot use JLinkExe directly since my computer is not connected to the nRF over USB. I have been trying to use nrfutil but so far to no avail. I've generated a DFU package from a hex file I compiled for my application but I'm unable to flash it using nrfutil dfu serial.

When I run  

nrfutil dfu serial -pkg app_dfu_package.zip -p /dev/ttymxc3 -b 115200
I get the following error message:

Traceback (most recent call last):
  File "/home/user/.local/bin/nrfutil", line 11, in <module>
    sys.exit(cli())
  File "/home/user/.local/lib/python2.7/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/user/.local/lib/python2.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/user/.local/lib/python2.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/user/.local/lib/python2.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/user/.local/lib/python2.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/user/.local/lib/python2.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/user/.local/lib/python2.7/site-packages/nordicsemi/__main__.py", line 1042, in serial
    timeout)
  File "/home/user/.local/lib/python2.7/site-packages/nordicsemi/__main__.py", line 956, in do_serial
    dfu.dfu_send_images()
  File "/home/user/.local/lib/python2.7/site-packages/nordicsemi/dfu/dfu.py", line 129, in dfu_send_images
    self._dfu_send_image(self.manifest.application)
  File "/home/user/.local/lib/python2.7/site-packages/nordicsemi/dfu/dfu.py", line 90, in _dfu_send_image
    self.dfu_transport.open()
  File "/home/user/.local/lib/python2.7/site-packages/nordicsemi/dfu/dfu_transport_serial.py", line 225, in open
    raise NordicSemiException("No ping response after opening COM port")
pc_ble_driver_py.exceptions.NordicSemiException: No ping response after opening COM port

I suspect that whatever bootloader exists on the nRF52832 currently is not expecting a DFU package and thus does not respond to the ping. I feel as though I am stuck since the only method I have found to update the bootloader involves using nrfjprog, which I cannot use. Am I correct in my assumption that my bootloader does not support firmware updates via DFU? If so how can I change the bootloader? If there are any alternative ways to upload my application I would also like to know them.

Related