<div dir="ltr">Thanks for the answer.<div><br></div><div>I made a mistake in the text: I can flash multiple cwe but only 1 nvu, sorry.</div><div><br></div><div><br></div><div>> Did the multiple CWE flashing finish correctly really? i.e. do you see<br>> all the flashed CWEs installed in different slots in the firmware<br>> list?<br></div><div><br></div><div>Yes, I call `qmicli -d /dev/cdc-wdm1 --dms-list-stored-images` and all the CWE flashed correctly in different "pri" slots.</div><div>I have log like this:<br>```</div><div>[/dev/cdc-wdm2] Device list of stored images retrieved:<br><br>        [0] Type:    'modem'<br>            Maximum: '4'<br><br>                [modem0]<br>                Unique ID:     '?_?'<br>                Build ID:      '01.08.04.00_?'<br>                Storage index: '1'<br>                Failure count: '0'<br><br>        [1] Type:    'pri'<br>            Maximum: '50'<br><br>                [pri0]<br>                Unique ID:     '000.001_001'<br>                Build ID:      '01.08.04.00_SPRINT'<br><br>                [pri1]<br>                Unique ID:     '002.000_000'<br>                Build ID:      '01.08.04.00_US-CELLULAR'<br><br>                >>>>>>>>>> [CURRENT] <<<<<<<<<<<br>                [pri2]<br>                Unique ID:     '002.015_002'<br>                Build ID:      '01.08.04.00_VERIZON'<br></div><div>```</div><div>But the "modem" will be only with one element.</div><div><br></div><div>I have limitations to re-check real wireless possibilities of the modem but when I try to reflash an already flashed image it says that all is ok and all the calls of qmicli work fine.</div><div><br></div><div><br></div><div>> Yeah, not sure if the modules themselves are ready for that, or at</div>> least we may not have all the necessary info to know how to do that.<br>> qmi-firmware-update is mostly based on reverse engineering USB traces<br>> generated by other proprietary programs :)<div>I have as an example Windows closed source flash tool which can flash without resets. Ok, thanks for the comments. I am continuing my investigation in this field.</div><div><br></div><div><br></div><div>P.S.<br>In addition I have a strange situation when flashing multiple CWE:</div><div>```<br>downloading cwe image: SWI9X50C_01.09.04.00.cwe (79.7 MB)...<br>finalizing download... (may take several minutes, be patient)<br>successfully downloaded in 119.69s (665.6 kB/s)<br>downloading cwe image: SWI9X50C_01.08.04.00.cwe (79.6 MB)...<br>finalizing download... (may take several minutes, be patient)<br>successfully downloaded in 22.31s (3.6 MB/s)<br></div><div>```</div><div>All the CWEs after the 1st one will be flashed much faster. Any ideas why?</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">пн, 7 июн. 2021 г. в 12:16, Aleksander Morgado <<a href="mailto:aleksander@aleksander.es">aleksander@aleksander.es</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hey,<br>
<br>
> I am new to libqmi and want to flash multiple FWs with 1 time call of qmi-firmware-update app (to eliminate resets).<br>
> I run the app like this:<br>
> qmi-firmware-update --update --ignore-version-errors -w /dev/cdc-wdm3 fws/50-SWI9X50C_01.08.04.00_VERIZON_002.015_002/SWI9X50C_01.08.04.00.cwe fws/50-SWI9X50C_01.08.04.00_VERIZON_002.015_002/SWI9X50C_01.08.04.00_VERIZON_002.015_002.nvu fws/50-SWI9X50C_01.09.04.00_DOCOMO_002.015_000/SWI9X50C_01.09.04.00.cwe fws/50-SWI9X50C_01.09.04.00_DOCOMO_002.015_000/SWI9X50C_01.09.04.00_DOCOMO_002.015_000.nvu<br>
><br>
> If I understand correctly that is not supported because multiple nvu files cannot be flashed at 1 time (cwe flashing works fine).<br>
><br>
<br>
I believe you're abusing the command line tool in an unexpected way :)<br>
Did the multiple CWE flashing finish correctly really? i.e. do you see<br>
all the flashed CWEs installed in different slots in the firmware<br>
list?<br>
<br>
The tool is meant to be used only with 1 cwe+ 1 nvu, because we need<br>
to tell the module to which new firmware version + carrier version it<br>
needs to switch, and we get that by parsing the cwe+nvu pair. Once the<br>
module knows the required version is one that it doesn't have<br>
installed, we trigger a reboot and at this point, the module will<br>
accept any kind of new file downloaded. Looks like you're downloading<br>
multiple cwe files at this point and it's working, I really never<br>
tested that myself.<br>
<br>
> And here are some questions:<br>
> - Why multiple nvus cannot be flashed at 1 time?<br>
<br>
Well, I never thought about allowing that truth be told. I don't even<br>
know if the issue is a problem inside the module or in the tool, I<br>
have no idea :)<br>
<br>
> - Maybe it can be patched? Can somebody give me advice on where to search? I can try to patch the source code.<br>
><br>
<br>
I guess we could extend the qmi-firmware-update operation to say:<br>
flash the first CWE+NVU pair found, but also try to flash any<br>
additional CWE or NVU file found. I truly have no idea whether that's<br>
possible, really. I don't recall all the details of the upgrade<br>
process, but I do believe there is a way to select in which slot to<br>
flash, and in the newest firehose based modules the upgrade operation<br>
also preselects the filename inside the module (e.g. all CWE files<br>
would be written as "spkg.cwe", so it could be that even if you're<br>
flashing 10 different CWE files only the last one is really<br>
considered).<br>
<br>
> My main goal is to reduce the time of flashing while working with multiple FWs.<br>
><br>
<br>
Yeah, not sure if the modules themselves are ready for that, or at<br>
least we may not have all the necessary info to know how to do that.<br>
qmi-firmware-update is mostly based on reverse engineering USB traces<br>
generated by other proprietary programs :)<br>
<br>
> P.S.<br>
> Connected email thread: "qmi-firmware-update with multiple NVU for Sierra EM7411".<br>
><br>
<br>
Here's the link to that thread, for context:<br>
<a href="https://lists.freedesktop.org/archives/libqmi-devel/2020-October/003402.html" rel="noreferrer" target="_blank">https://lists.freedesktop.org/archives/libqmi-devel/2020-October/003402.html</a><br>
<br>
--<br>
Aleksander<br>
<a href="https://aleksander.es" rel="noreferrer" target="_blank">https://aleksander.es</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">With best regards,<div>Alexander</div></div></div>