<div dir="ltr"><div dir="ltr">Excuse for troubling. The issue was on the side of the environment. One of the ttyUSB interfaces was damaged. I re-created it manually and now it works fine.<div><br></div><div>So I can confirm that parallel flashing works fine and speed ups the flashing by the time of the app instances.</div><div><br></div><div>If you are interested:</div><div><br></div><div><font face="monospace">|                                      | Duration downloading, sec | Duration overall, sec |<br>|--------------------------------------|---------------------------|-----------------------|<br>| Flash 1 FW with qmi-firmware-update  | ~120                      | ~220                  |<br>| Parallel flashing of 2 modems (1 FW) | ~111 (104,118)            | ~210 (203, 216)       |<br>| Parallel flashing of 3 modems (1 FW) | ~121 (120,121,121)        | ~187 (193,199,168)    |</font><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">ср, 9 июн. 2021 г. в 11:32, Alexander Dydychkin <<a href="mailto:alexander.dydychkin@vicuesoft.com">alexander.dydychkin@vicuesoft.com</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"><div dir="ltr">Hi all,<div>I continue research on how to speed up flashing of multiple modems. In addition to flashing without resets which discussed in another thread I try to flash modems parallel.</div><div><br></div><div>I have 3 devices:</div><div>```</div><div>ls /dev</div><div>cdc-wdm1</div><div>cdc-wdm2</div><div>cdc-wdm3<br clear="all"><div>```</div><div>All Sierra modems right now.</div><div><br></div><div>How I start:</div><div>```</div><div>sudo -E ./_debug_build/src/qmi-firmware-update/qmi-firmware-update --verbose-log=/home/libqmi/wdm1.log -w /dev/cdc-wdm1 --update /home/0/DOCOMO/SWI9X50C_01.09.04.00.cwe /home/0/DOCOMO/SWI9X50C_01.09.04.00_DOCOMO_002.015_000.nvu & \<br>sudo -E ./_debug_build/src/qmi-firmware-update/qmi-firmware-update --verbose-log=/home/libqmi/wdm2.log -w /dev/cdc-wdm2 --update /home/0/SPRINT/SWI9X50C_01.08.04.00.cwe /home/0/SPRINT/SWI9X50C_01.08.04.00_SPRINT_000.001_001.nvu & \ <br>sudo -E ./_debug_build/src/qmi-firmware-update/qmi-firmware-update --verbose-log=/home/libqmi/wdm3.log -w /dev/cdc-wdm3 --update /home/0/GENERIC/SWI9X50C_01.11.00.00.cwe /home/0/GENERIC/SWI9X50C_01.11.00.00_GENERIC_002.023_000.nvu &<br></div><div>```</div><div><br></div><div>I get the error like:</div><div>```<br>[07 Jun 2021, 18:11:34] [Debug] [qfu-udev] event: add 3-4.4<br>[07 Jun 2021, 18:11:34] [Debug] [qfu-udev] event: add 3-4.4:1.0<br>[07 Jun 2021, 18:11:34] [Debug] [qfu-udev] event: add ttyUSB2<br>[07 Jun 2021, 18:11:34] [Debug] [qfu-udev] waiting device (tty) matched: ttyUSB2<br>[07 Jun 2021, 18:11:34] [Debug] [qfu-updater] TTY device found: /dev/ttyUSB2<br>[07 Jun 2021, 18:11:34] [Debug] [qfu-sahara-device] opening TTY: /dev/ttyUSB2<br>[07 Jun 2021, 18:11:34] [Debug] [qfu-sahara-device] setting terminal in raw mode...<br>[07 Jun 2021, 18:11:34] [Debug] [qfu-updater] sahara device creation failed: error getting serial port attributes: Inappropriate ioctl for device<br>[07 Jun 2021, 18:11:34] [Debug] [qfu-qdl-device] opening TTY: /dev/ttyUSB2<br>[07 Jun 2021, 18:11:34] [Debug] [qfu-qdl-device] setting terminal in raw mode...<br>[07 Jun 2021, 18:11:34] [Debug] [qfu-updater] qdl device creation failed: error getting serial port attributes: Inappropriate ioctl for device <br></div><div>```</div><div>As I understood the code block is:</div><div>```</div><div>    errno = 0;<br>    g_debug ("[qfu-sahara-device] setting terminal in raw mode...");<br>    if (tcgetattr (self->priv->fd, &terminal_data) < 0) {<br>        inner_error = g_error_new (G_IO_ERROR, G_IO_ERROR_FAILED,<br>                                   "error getting serial port attributes: %s",<br>                                   g_strerror (errno));<br>        goto out<br></div><div>```</div><div><br></div><div>I am working on the improvement right now but I have a question from the architecture level. All the processes are independent and have only 1 crossing point - driver. What do you think about my approach? Any "contraindications"? :)  Any comments?</div><div><br></div><div><br></div>-- <br><div dir="ltr"><div dir="ltr">With best regards,<div>Alexander</div></div></div></div></div>
</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></div>