This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Full modem firmware update doesn't recognize zip file

Hi

Trying to implement Full modem firmware update over serial port (USB) on nrf9160 in accordance with nrf\samples\nrf9160\fmfu_smp_svr in ncs version 1.5.1.

It seems the PC side does not recognize the zip file as parameter but tries to interpret it as a digest. Output from PC is:

python scripts/update_modem.py scripts/mfw_nrf9160_1.3.1.zip COM20 1337
# modem firmware upgrade over serial port started.
[HighLevel] Creating new probe
[HighLevel] Initialize new probe.
[Probes.COM20] [ModemUARTDFUProbe] Dll directory is C:\workspace\ncs2\toolchain\opt\bin\Lib\site-packages\pynrfjprog\lib_x64.
[Probes.COM20] [ModemUARTDFUProbe] Find and connect to dfu dll
[Probes.COM20] [ModemUARTDFUProbe] Using DFU dll at C:\workspace\ncs2\toolchain\opt\bin\Lib\site-packages\pynrfjprog\lib_x64\NRFDFU.dll.
[Probes.COM20] [ModemUARTDFUProbe] Load library at C:\workspace\ncs2\toolchain\opt\bin\Lib\site-packages\pynrfjprog\lib_x64\NRFDFU.dll.
[Probes.COM20] [ModemUARTDFUProbe] Library loaded, loading member functions.
[Probes.COM20] [ModemUARTDFUProbe] Member functions succesfully loaded.
[Probes.COM20] [ModemUARTDFU-COM20] Initialize new probe.
[Probes.COM20] [ModemUARTDFU-COM20] Successfully opened port: COM20@1337,flow_control:none,parity:none.
[Probes.COM20] [ModemUARTDFU-COM20] {
    "duration": 866,
    "error_code": "Ok",
    "operation": "open_uart",
    "outcome": "success",
    "progress_percentage": 100
}
[HighLevel] Probe initialization complete!
[Probes.COM20] [ModemUARTDFU-COM20] Check if provided file exists
[Probes.COM20] [ModemUARTDFU-COM20] Check if provided file can be read
[Probes.COM20] [ModemUARTDFU-COM20] Evaluating file scripts/mfw_nrf9160_1.3.1.zip.
[Probes.COM20] [ModemUARTDFU-COM20] File must be a hex file.
[Probes.COM20] [ModemUARTDFU-COM20] Skipping file scripts/mfw_nrf9160_1.3.1.zip.
[Probes.COM20] [ModemUARTDFU-COM20] Verifying flash contents against digest file scripts/mfw_nrf9160_1.3.1.zip.
[Probes.COM20] [ModemUARTDFU-COM20] Check if provided file exists
[Probes.COM20] [ModemUARTDFU-COM20] Check if provided file can be read
[Probes.COM20] [ModemUARTDFU-COM20] Open provided file
[Probes.COM20] [ModemUARTDFU-COM20] Could not parse segment line 0 in digest file. Line will be ignored.
[Probes.COM20] [ModemUARTDFU-COM20] Expected "Range: 0x%08X--0x%08X SHA256:            %64s"
[Probes.COM20] [ModemUARTDFU-COM20] Got      "PK
[Probes.COM20] [ModemUARTDFU-COM20] Could not parse segment line 1 in digest file. Line will be ignored.
[Probes.COM20] [ModemUARTDFU-COM20] Expected "Range: 0x%08X--0x%08X SHA256:            %64s"
[Probes.COM20] [ModemUARTDFU-COM20] Got      "\ufffdT*%\ufffd\ufffd\U000dffa2\ufffd7\u06ff\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd}y\ufffdk\ufffd\u059e{\ufffd4\ufffd\ufffd\ufffd\ufffd\u03f2L\ufffd\ufffd\ufffdn\ufffd7\ufffdz\u06fb\ufffd\ufffd\ufffdH}\ufffd4|l\ufffd\ufffd\ufffd\ufffd{\ufffdk\ufffd\ufffd\ufffd\ufffdWs{\u0395/.\ufffd\ufffd9t\ufffd\ufffd\ufffd|\ufffd8`\\ufffdn{\ufffd\ufffd\ufffdR\ufffd\ufffd\ufffd\ufffd\ufffdU\ufffd.\ufffdR\u02fa\ufffdQO.s\ufffd\ufffdk"
[Probes.COM20] [ModemUARTDFU-COM20] Verification success.
[Probes.COM20] [ModemUARTDFUProbe] Uninitializing ModemUARTDFU probe at serial port COM20.
[Probes.COM20] [ModemUARTDFU-COM20] Sending device reset request
[Probes.COM20] [ModemUARTDFU-COM20] Sending reset request to device.
[Probes.COM20] [ModemUARTDFU-COM20] Closing connection to mcuboot device
[Probes.COM20] [ModemUARTDFU-COM20] serial port COM20 closed.
[Probes.COM20] [ModemUARTDFU-COM20] {
    "duration": 0,
    "error_code": "Ok",
    "operation": "close_uart",
    "outcome": "success",
    "progress_percentage": 100
}
[HighLevel] Done.
-------------------------------------------------------
The operation took 0.92 seconds
[HighLevel] Closing and freeing sub dlls.
python scripts/blam.py -p COM20 --boot91 1
Boot91: Application

I suspect that this is only some component that is outdated or similar. I have toolchain for ncs-v1.5.1 incl. Python then


$ nrfjprog --version
nrfjprog version: 10.14.0 external
JLinkARM.dll version: 6.88a
$ pip list
Package                        Version
------------------------------ ----------
aenum                          3.0.0
alabaster                      0.7.12
anytree                        2.8.0
appdirs                        1.4.4
arrow                          0.17.0
astroid                        2.4.2
atomicwrites                   1.4.0
attrs                          20.3.0
autopep8                       1.5.7
Babel                          2.9.0
bcrypt                         3.1.7
breathe                        4.26.1
canopen                        1.2.0
cbor                           1.0.0
certifi                        2020.12.5
cffi                           1.14.0
chardet                        4.0.0
click                          7.1.2
cmsis-pack-manager             0.2.10
colorama                       0.4.4
commonmark                     0.9.1
coverage                       5.4
cryptography                   3.2
decorator                      5.1.0
distlib                        0.3.1
docopt                         0.6.2
docutils                       0.16
ecdsa                          0.16.1
enum34                         1.1.10
filelock                       3.0.12
future                         0.18.2
gcovr                          4.2
gitlint                        0.15.0
idna                           2.10
imagesize                      1.2.0
imgtool                        1.7.0
importlib-metadata             3.4.0
iniconfig                      1.1.1
intelhex                       2.3.0
intervaltree                   3.1.0
isort                          5.7.0
Jinja2                         2.11.2
jsonpath-rw                    1.4.0
jsonpath-rw-ext                1.2.2
junit2html                     30.0.4
junitparser                    1.6.3
lazy-object-proxy              1.4.3
lpc-checksum                   2.2.0
lxml                           4.6.2
MarkupSafe                     1.1.1
mccabe                         0.6.1
milksnake                      0.1.5
mock                           4.0.3
mypy                           0.800
mypy-extensions                0.4.3
naturalsort                    1.5.1
packaging                      20.8
paho-mqtt                      1.5.1
paramiko                       2.7.1
pbr                            5.6.0
Pillow                         8.1.0
pip                            21.0.1
pluggy                         0.13.1
ply                            3.11
prettytable                    2.0.0
progress                       1.5
psutil                         5.8.0
py                             1.10.0
pycodestyle                    2.7.0
pycparser                      2.20
pyelftools                     0.27
Pygments                       2.7.4
pykwalify                      1.8.0
pylink-square                  0.8.1
pylint                         2.6.0
PyNaCl                         1.3.0
pynrfjprog                     10.14.0
pyocd                          0.29.0
pyparsing                      2.4.7
pyserial                       3.4
pytest                         6.2.2
python-can                     3.3.4
python-dateutil                2.8.1
python-magic                   0.4.18
pytz                           2020.5
pyusb                          1.1.1
pywinusb                       0.4.2
PyYAML                         5.4.1
recommonmark                   0.6.0
regex                          2020.11.13
requests                       2.25.1
robotframework                 3.2.1
robotframework-seriallibrary   0.3.1
ruamel.yaml                    0.16.12
ruamel.yaml.clib               0.2.2
scp                            0.13.2
setuptools                     56.0.0
sh                             1.14.1
six                            1.14.0
snowballstemmer                2.1.0
sortedcontainers               2.3.0
Sphinx                         3.4.3
sphinx-rtd-theme               0.5.1
sphinx-tabs                    2.0.0
sphinxcontrib-applehelp        1.0.2
sphinxcontrib-devhelp          1.0.2
sphinxcontrib-htmlhelp         1.0.3
sphinxcontrib-jsmath           1.0.1
sphinxcontrib-mscgen           0.5
sphinxcontrib-qthelp           1.0.3
sphinxcontrib-serializinghtml  1.1.4
sphinxcontrib-svg2pdfconverter 1.1.1
tabulate                       0.8.7
toml                           0.10.2
typed-ast                      1.4.2
typing-extensions              3.7.4.3
urllib3                        1.26.3
virtualenv                     20.0.31
wcwidth                        0.2.5
west                           0.9.0
wheel                          0.36.2
windows-curses                 2.2.0
wrapt                          1.12.1
zipp                           3.4.0

Any idea what is wrong?

  • Hello Jens,

    It seems the PC side does not recognize the zip file as parameter but tries to interpret it as a digest.

    thanks a lot for reporting this. I can reproduce the exact same behaviour in NCS v1.7.0. I will report this to our development team and keep you posted.

    Regards,

    Markus

  • Hello Markus.

    Nice that you could reproduce.

    Is there any way you are aware of that we could test the embedded code before you fix this in some upcoming version?

    I tried the GUI tools but it wouldn't conect through the serial port (need a Segger or Nordic USB port).

    Some earlier version of command line tools or pynrfjprog perhaps?

    Regards

    --Jens

  • Hello Jens,

    Jens Cameron said:
    Is there any way you are aware of that we could test the embedded code before you fix this in some upcoming version?

    we have fixed the issue and a new release of pynrfjprog is scheduled for next week. The update can be triggered via:

    pip3 install --user pynrfjprog

    Until then, you might want to try to downgrade to an older version of pynrfjprog. I’m not sure if this will solve the issue, but you could try using the following commands (and step through older versions):

    pip3 uninstall pynrfjprog
    pip3 install --user -Iv pynrfjprog==10.13.0

    Additionally, please be aware that the sample only works with Segger J-Link software up to version 6.88a on the DK.

    NCSDK-9441: Fmfu SMP server sample is unstable with the newest J-Link version
    Full modem serial update does not work on development kit with debugger chip version delivered with J-Link software > 6.88a

    I hope this will help you!

    Regards,

    Markus

Related