My nRF9160 is plugged into a Raspberry Pi and located somewhere far away from my office, where it can receive an LTE Cat-M signal. I'd like to update the LTE firmware, but the nrf9160_mdm_dfu
doesn't run. I have the SEGGER J-Link for ARM tools installed in /opt/SEGGER, but it seems the pynrfjprog python library only comes with libraries for x64 and x86 and so the tool fails with this error:
pi@raspberrypi:~/nrf-fw $ ./nrf9160_mdm_dfu/env/bin/nrf9160_mdm_dfu --update
Traceback (most recent call last):
File "/home/pi/nrf-fw/nrf9160_mdm_dfu/env/lib/python3.5/site-packages/pynrfjprog/API.py", line 408, in __init__
self._lib = ctypes.cdll.LoadLibrary(nrfjprog_dll_path)
File "/usr/lib/python3.5/ctypes/__init__.py", line 425, in LoadLibrary
return self._dlltype(name)
File "/usr/lib/python3.5/ctypes/__init__.py", line 347, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /home/pi/nrf-fw/nrf9160_mdm_dfu/env/lib/python3.5/site-packages/pynrfjprog/lib_x86/libnrfjprogdll.so: cannot open shared object file: No such file or directory
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./nrf9160_mdm_dfu/env/bin/nrf9160_mdm_dfu", line 11, in <module>
sys.exit(main())
File "/home/pi/nrf-fw/nrf9160_mdm_dfu/env/lib/python3.5/site-packages/nrf9160_mdm_dfu/bin/nrf9160_mdm_dfu.py", line 24, in main
nrf_dfu = nrf_dfu_API.nrf_dfu_API(quiet=args.quiet)
File "/home/pi/nrf-fw/nrf9160_mdm_dfu/env/lib/python3.5/site-packages/nrf9160_mdm_dfu/api/nrf_dfu_API.py", line 37, in __init__
self.api = API.API("NRF91")
File "/home/pi/nrf-fw/nrf9160_mdm_dfu/env/lib/python3.5/site-packages/pynrfjprog/API.py", line 410, in __init__
raise RuntimeError("Could not load the NRFJPROG DLL: '{}'.".format(error))
RuntimeError: Could not load the NRFJPROG DLL: '/home/pi/nrf-fw/nrf9160_mdm_dfu/env/lib/python3.5/site-packages/pynrfjprog/lib_x86/libnrfjprogdll.so: cannot open shared object file: No such file or directory'.
pi@raspberrypi:~/nrf-fw $ file /home/pi/nrf-fw/nrf9160_mdm_dfu/env/lib/python3.5/site-packages/pynrfjprog/lib_x86/libnrfjprogdll.so
/home/pi/nrf-fw/nrf9160_mdm_dfu/env/lib/python3.5/site-packages/pynrfjprog/lib_x86/libnrfjprogdll.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=413b5533ab2c1e894fee338b30bd2c708ae0176a, stripped
pi@raspberrypi:~/nrf-fw $ uname -a
Linux raspberrypi.home.thejpster.org.uk 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux
How can I update the LTE firmware on my nRF9160 without physically driving to the facility and programming it from an x64 laptop?