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

Modem DFU fails on nRF9160 using nRF Connect

Hi,

I'm trying to update the modem firmware on my nRF9160. I believe the current firmware is mfw-m1_nrf9160_0.6.8-30.alpha. I followed Martin's suggestions here, but nRF Connect fails with a DLL error. Below if the output:

2019-10-06T13:09:59.819Z INFO Application data folder: /home/fredrik/.config/nrfconnect/pc-nrfconnect-programmer
2019-10-06T13:09:59.891Z DEBUG App pc-nrfconnect-programmer v1.2.3 official
2019-10-06T13:09:59.891Z DEBUG App path: /home/fredrik/.nrfconnect-apps/node_modules/pc-nrfconnect-programmer
2019-10-06T13:09:59.892Z DEBUG nRFConnect 3.2.0 is supported by the app (^3.2.0)
2019-10-06T13:09:59.892Z DEBUG nRFConnect path: /tmp/.mount_nrfcon8ZSu9x/resources/app.asar
2019-10-06T13:09:59.892Z DEBUG HomeDir: /home/fredrik
2019-10-06T13:09:59.892Z DEBUG TmpDir: /tmp
2019-10-06T13:09:59.907Z INFO Using nrfjprog library 10.3.0, pc-nrfjprog-js 1.5.8
2019-10-06T13:10:03.194Z INFO Using nrfjprog to communicate with target
2019-10-06T13:10:06.405Z INFO Using J-Link Software version 6.44
2019-10-06T13:10:08.555Z INFO Segger serial:  960010299
2019-10-06T13:10:08.555Z INFO Segger speed:  2000  kHz
2019-10-06T13:10:08.555Z INFO Segger version:  J-Link OB-K22-NordicSemi compiled Feb 14 2019 14:03:18
2019-10-06T13:10:08.559Z INFO Probed: 960010299.
2019-10-06T13:10:08.559Z INFO Model: Unknown model.
2019-10-06T13:10:08.559Z INFO RAM: 256KiB.
2019-10-06T13:10:08.559Z INFO Flash: 1024KiB in pages of 4KiB.
2019-10-06T13:10:09.294Z INFO Device type is unknown. It may be a new version of product from Nordic Semiconductor.
2019-10-06T13:10:09.294Z INFO Please check device list supported by nrfjprog.
2019-10-06T13:10:11.386Z INFO Reading device non-volatile memory. This may take a few seconds.
2019-10-06T13:10:21.416Z INFO Modem DFU starts to write...
2019-10-06T13:10:21.416Z INFO Writing to device with serial number: 960010299
2019-10-06T13:10:21.416Z INFO Writing to device with file: /home/fredrik/Downloads/mfw_nrf9160_1.0.0.zip
2019-10-06T13:10:22.872Z ERROR Modem DFU failed with error: Error: Error occured when program. Errorcode: CouldNotOpenDevice (0x4)
Lowlevel error: NRFJPROG_SUB_DLL_COULD_NOT_BE_OPENED (ffffff69)

This is my environment:

  • Ubuntu 16.04
  • nRF Connect v3.2.0
  • Programmer app v1.2.3
  • nrfjprog version: 10.3.0
  • JLinkARM.dll version: 6.44e
  • SiP marking: nRF9160-SICA BAA-E2.1.5 11S7V

Any ideas?

Parents
  • Hi Fredrik, 

    Is it a custom board or a DK?

    If it's a DK, what version of the DK are you using?

    You could try to erase the chip (nrfjprog -e) before programming modem fw 1.0.1.

    -Amanda H.

  • Hi Amanda,

    It's a DK. This is the information from the back of the DK:

    PCA10090
    0.8.2
    2018.49
    960010299

    I tried erasing the chip, but the problem persists.

  • Hi Sigurd,

    There seems to be an issue with nrfjprog v10.4.0 on Linux64. After unpacking the tar archive, I run

    $ sudo dpkg -i nRF-Command-Line-Tools_10_4_0_Linux-amd64.deb

    And then to check that the installation worked, I run

    $ cd ~
    $ nrfjprog --version
    ERROR: nrfjprog.ini not found. Please reinstall nrfjprog.

    I'm not sure what's wrong here, as nrfjprog.ini is present in /opt/nrfjprog:

    $ ls /opt/nrfjprog/
    DllCommonDefinitions.h          libhighlevelnrfjprog.so             libnrfjprogdll.so  nrfjprog.ini
    highlevelnrfjprogdll.h          libjlinkarm_nrf51_nrfjprogdll.so    LICENSE.txt        nrfjprog_release_notes.txt
    jlinkarm_nrf51_nrfjprogdll.h    libjlinkarm_nrf52_nrfjprogdll.so    nrfdfu.h           QspiDefault.ini
    jlinkarm_nrf52_nrfjprogdll.h    libjlinkarm_nrf91_nrfjprogdll.so    nrfjprog
    jlinkarm_nrf91_nrfjprogdll.h    libjlinkarm_unknown_nrfjprogdll.so  nrfjprogdll.h
    jlinkarm_unknown_nrfjprogdll.h  libnrfdfudll.so                     nrfjprog.h
    

    And running nrfjprog from inside /opt/nrfjprog works fine. Can you confirm that installing v10.4.0 works on Ubuntu?

    Anyway, I reverted to nrfjprog v10.3.0 (which installs without issues using dpkg as decsribed above) and updated successfully to 0.7.0-29.alpha using the included mdm_dfu tool. However, I am still unable to update to either v1.0.0 or v1.0.1 using the Programmer application.

    2019-10-10T11:30:01.121Z ERROR Modem DFU failed with error: Error: Error occured when program. Errorcode: CouldNotOpenDevice (0x4)
    Lowlevel error: NRFJPROG_SUB_DLL_COULD_NOT_BE_OPENED (ffffff69)

    Are there any CLI tools I can use instead? Anything I can do to understand what the Programmer application is having trouble with?

  • Hi,

    Does it work if you run nRF-Connect for Desktop as sudo ?

    Fredrik said:
    Are there any CLI tools I can use instead?

    You could try to do the modem DFU using this python script

    from pynrfjprog import HighLevelapi = HighLevel.API()
    api.open()
    snr = api.get_connected_probes()
    for s in snr:
        probe = HighLevel.IPCDFUProbe(api, s, HighLevel.CoProcessor.CP_MODEM)
        probe.program("mfw-nrf_9160-1.0.0.zip")
        probe.verify("mfw-nrf_9160-1.0.0.zip")
     
    api.close()

     

  • I am unable to run the latest nRF Connect AppImage as root. It returns immediately with exit code 0 without launching anything. I can run version <= 3.0.0 as root, but the Programmer application does not launch from these versions of nRF Connect.

    Your python script fails with the same error (even when running it as sudo):

    Traceback (most recent call last):
      File "dfu.py", line 6, in <module>
        probe = HighLevel.IPCDFUProbe(api, s, HighLevel.CoProcessor.CP_MODEM)
      File "/home/fredrik/.local/lib/python3.7/site-packages/pynrfjprog/HighLevel.py", line 558, in __init__
        raise APIError(result, log=self._logger.error)
    pynrfjprog.APIError.APIError: An error was reported by NRFJPROG DLL: -151 NRFJPROG_SUB_DLL_COULD_NOT_BE_OPENED.

    I tried downgrading pynrfjprog to version 10.3.0 (the same as my current nrfjprog installation) and running the script again. This time it fails here:

    Traceback (most recent call last):
      File "dfu.py", line 13, in <module>
        probe.program("mfw-nrf_9160-1.0.1.zip")
      File "/home/fredrik/miniconda3/lib/python3.7/site-packages/pynrfjprog/HighLevel.py", line 307, in program
        raise APIError(result, log=self._logger.error)
    pynrfjprog.APIError.APIError: An error was reported by NRFJPROG DLL: -3 INVALID_PARAMETER.
    

    I can see the LED blinking on the nRF91 DK just before it crashes though, so there is at least some communication.

    For the record, I am using Python 3.7.3.

  • Do you have multiple versions of nrfjprog installed? Could you check that $PATH only points to one installation?

    Just to be 100% sure that this is a ubuntu environment issue, and not an issue with the board itself, could you try to use e.g a windows computer and try to use that to update the modem fw on the board?

  • FWIW, I have this issue, too.  Using Python 3.6 on Ubuntu 18.04 -- managed to get it to work in a VM -- and AFAIK all installed versions are correct.  Cannot get it to work, again, on any different machines.

Reply Children
Related