RC7620 update doesn't finish and no modem is detected

I have tried to update modem rc7620 from SWI9X07H_00.03.03.00 version to SWI9X07H_00.08.24.02 in a imx8 linux based system with qmi tool:

qmi-firmware-update --update --cdc-wdm /dev/cdc-wdm0 RC76xx_Release9_GENERIC_GCF_7620.spk

and updating process remains waiting for device to restart and never finished.

After some minutes, the command was manually stopped but then no modem is detected.

USB device appears for 2-3 seconds on usb bus but then dissapears for other 10-15 seconds, just like it was restarting itself continuously:

root@XXXXXX:~# lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 059: ID 1199:68c0 Sierra Wireless, Inc. Sierra Wireless RC7620
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 125f:dd35 A-DATA Technology Co., Ltd. ADATA USB Flash Drive
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

root@XXXXXX:~# lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 125f:dd35 A-DATA Technology Co., Ltd. ADATA USB Flash Drive
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Tried to flash it again when device is present in usb bus but updating process failed too

root@XXXXXX:~# /usr/bin/qmi-firmware-update --update --cdc-wdm /dev/cdc-wdm0 RC76xx_Release9_GENERIC_GCF_7620.spk
loading device information before the update…
error: couldn’t open QMI device: endpoint hangup

Uploaded verbose log of updating process:
RC7620_Update_error_verbose.txt (9.2 KB)

I have tried swiflash tool but it seems not to be able to execute in arm machine.

AT command neither available, serial port not responding, so couldnt set the device in boot mode (BOOTCMD) or restore to RMA (RMARESET).

Is there any method to restore the device to factory firmware?

Any ideas to recover this device?

thank you!

How about using tp1 pin to kick module to download mode?

Hi, @jyijyi , thanks for your answer.

I have succesfully kick module into download mode by asserting (low-level) TP1 pin at power on.
Now RC7620 device doesn’t dissapear from usb bus and only one serial port is present (/dev/ttyUSB0).
Then I deassert TP1 pin and try to download firmware but it doesn’t work… says “error: unsupported download protocol”:

root@XXXXXXX:~# qmi-firmware-update -t /dev/ttyUSB0 --update-download RC76xx_Release9_GENERIC_GCF_7620.spk -v
[01 Jun 2023, 17:56:42] [Debug] [qfu-udev] sysfs path for ‘ttyUSB0’ found: /sys/devices/platform/soc@0/32f10108.usb/38200000.dwc3/xhci-hcd.2.auto/usb3/3-1
[01 Jun 2023, 17:56:42] [Debug] [qfu-helpers] peer port for ‘/sys/devices/platform/soc@0/32f10108.usb/38200000.dwc3/xhci-hcd.2.auto/usb3/3-1’ found: /sys/devices/platform/soc@0/32f10108.usb/38200000.dwc3/xhci-hcd.2.auto/usb4/4-0:1.0/usb4-port1
[01 Jun 2023, 17:56:42] [Debug] [qfu-utils] couldn’t ping ModemManager: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Name “org.freedesktop.ModemManager1” does not exist
[01 Jun 2023, 17:56:42] [Debug] [qfu-image] loading file info…
[01 Jun 2023, 17:56:42] [Debug] [qfu-image] opening file for reading…
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] reading image headers…
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [0,34879232]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [400,426084]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [800,7680]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 800 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [7680,426084]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 7680 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 400 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [426084,26178380]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [426484,433404]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 426484 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [433404,672268]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 433404 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [672268,26178380]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 672268 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 426084 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [26178380,27381096]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [26178780,26185740]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 26178780 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [26185740,27121040]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 26185740 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [27121040,27223952]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 27121040 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [27223952,27381096]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 27223952 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 26178380 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [27381096,27432883]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [27381496,27388776]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [27381896,27388776]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 27381896 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 27381496 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [27388776,27431881]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [27389176,27431881]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 27389176 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 27388776 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [27431881,27432883]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [27432281,27432883]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 27432281 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 27431881 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 27381096 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [27432883,34495475]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [27433283,27440203]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 27433283 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [27440203,34363963]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 27440203 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [34363963,34495475]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 34363963 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 27432883 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [34495475,34879232]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [34495875,34503155]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [34496275,34503155]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 34496275 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 34495875 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [34503155,34879232]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image offset range: [34503555,34879232]
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 34503555 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 34503155 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] image at offset 34495475 is valid
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] validating data size…
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] preloading firmware/config/carrier…
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] firmware version: 00.08.24.02
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] config version: 001.110_000
[01 Jun 2023, 17:56:42] [Debug] [qfu-image-cwe] carrier: GENERIC
[01 Jun 2023, 17:56:42] [Debug] [qfu,device-selection] single tty device requested in sysfs path ‘/sys/devices/platform/soc@0/32f10108.usb/38200000.dwc3/xhci-hcd.2.auto/usb3/3-1’
[01 Jun 2023, 17:56:42] [Debug] [qfu,device-selection] device found: /dev/ttyUSB0
[01 Jun 2023, 17:56:42] [Debug] [qfu,device-selection] using preferred device: /dev/ttyUSB0
[01 Jun 2023, 17:56:42] [Debug] [qfu-sahara-device] opening TTY: /dev/ttyUSB0
[01 Jun 2023, 17:56:42] [Debug] [qfu-sahara-device] setting terminal in raw mode…
[01 Jun 2023, 17:56:42] [Debug] [qfu-sahara-device] waiting time for device to boot properly…
[01 Jun 2023, 17:56:44] [Debug] [qfu-sahara-device] initializing sahara protocol…
[01 Jun 2023, 17:56:47] [Debug] [qfu-updater] sahara device creation failed: no sahara response received
[01 Jun 2023, 17:56:47] [Debug] [qfu-qdl-device] opening TTY: /dev/ttyUSB0
[01 Jun 2023, 17:56:47] [Debug] [qfu-qdl-device] setting terminal in raw mode…
[01 Jun 2023, 17:56:47] [Debug] [qfu,dload-message] sent sdp:
[01 Jun 2023, 17:56:47] [Debug] [qfu-qdl-device] >> 70:00:00 [3, unframed]
[01 Jun 2023, 17:56:47] [Debug] [qfu-qdl-device] >> 7E:70:00:00:14:46:7E [7]
[01 Jun 2023, 17:56:47] [Debug] [qfu-qdl-device] << 01:00:00:00:30:00:00:00:02:00:00:00:01:00:00:00:00:04:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 [48]
[01 Jun 2023, 17:56:47] [Debug] [qfu-updater] qdl device creation failed: HDLC trailing control character not found
error: unsupported download protocol

Seems very similar behaviour to the issue described in 28067

Is there an alternative method of downloadind the firmware once the device is in Download Mode?
May be a way to restore it to factory firmware?

Thank you!

can you try with another module with this method on TP1 pin?
This can make sure your method is working fine on good module.

Same issue with a working module:

[02 Jun 2023, 10:32:46] [Debug] [qfu,device-selection] device found: /dev/ttyUSB0
[02 Jun 2023, 10:32:46] [Debug] [qfu,device-selection] using preferred device: /dev/ttyUSB0
[02 Jun 2023, 10:32:46] [Debug] [qfu-sahara-device] opening TTY: /dev/ttyUSB0
[02 Jun 2023, 10:32:46] [Debug] [qfu-sahara-device] setting terminal in raw mode…
[02 Jun 2023, 10:32:46] [Debug] [qfu-sahara-device] waiting time for device to boot properly…
[02 Jun 2023, 10:32:48] [Debug] [qfu-sahara-device] initializing sahara protocol…
[02 Jun 2023, 10:32:51] [Debug] [qfu-updater] sahara device creation failed: no sahara response received
[02 Jun 2023, 10:32:51] [Debug] [qfu-qdl-device] opening TTY: /dev/ttyUSB0
[02 Jun 2023, 10:32:51] [Debug] [qfu-qdl-device] setting terminal in raw mode…
[02 Jun 2023, 10:32:51] [Debug] [qfu,dload-message] sent sdp:
[02 Jun 2023, 10:32:51] [Debug] [qfu-qdl-device] >> 70:00:00 [3, unframed]
[02 Jun 2023, 10:32:51] [Debug] [qfu-qdl-device] >> 7E:70:00:00:14:46:7E [7]
[02 Jun 2023, 10:32:51] [Debug] [qfu-qdl-device] << 01:00:00:00:30:00:00:00:02:00:00:00:01:00:00:00:00:04:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 [48]
[02 Jun 2023, 10:32:51] [Debug] [qfu-updater] qdl device creation failed: HDLC trailing control character not found
error: unsupported download protocol

Might it be a problem of uncompatibility between firmware downloading library and system architecture (arm-imx8)?

Is there any other method to download images while in Download Mode for arm devices?

Is it possible to restore it to factory firmware from download mode?

Thank you!

seems your enviroment has problem as it does not work with OK module…

For other method in linux, you can see here:

BTW, can you also try with the exe in windows?

I downloaded SLQS04.00.27-lite tools from Sierra web page and

root@XXXXXXX:~# ./fwdwl-litearm -m 4 -d /dev/ttyUSB0 -f …/…/…/…/RC7620.spk
Modem Manager rules Tested
litefw version :lite-fwSLQS04.00.27
INFO: QDL Port : /dev/ttyUSB0
INFO: Device Path: /dev/qcqmi0
INFO: FW Path : …/…/…/…/RC7620.spk
Package Info:
Carrier :GENERIC
FW Version :00.08.24.02
Model ID :SWI9X07H
Package ID :000
PRI Version:001.110
SKU :9999999
Part Number:9909667
file_type : 4
Modem is QDL mode. Skipping FW preference setting
Waiting for modem to come up in BOOT and HOLD mode …
BOOT and HOLD Mode. Downloading firmware …
litefw_DownloadFW succeeded.
Waiting for modem to come up in ONLINE mode …

And the process remained here, just like the time I flashed the device and then never work again, so I cancelled the process (Ctrl+C) and power-cycled the whole device, lack of hopeness…

… but this time was different! and the modem started to work again!

root@XXXXXXX~# mmcli -M
No modems were found
(+) /org/freedesktop/ModemManager1/Modem/0 [Sierra Wireless, Incorporated] RC7620

root@XXXXXXX~# mmcli -m 0


General | path: /org/freedesktop/ModemManager1/Modem/0
| device id: 178c7099094782f57ca9daeeffc3534cf31e8fc4


Hardware | manufacturer: Sierra Wireless, Incorporated
| model: RC7620
| firmware revision: SWI9X07H_00.08.24.02 f90cbd jenkins 2022/03/21 03:47:54
| carrier config: default
| h/w revision: 0.0
| supported: gsm-umts, lte
| current: gsm-umts, lte
| equipment id: XXXXXXXXXXXXXXXXX


System | device: /sys/devices/platform/soc@0/32f10108.usb/38200000.dwc3/xhci-hcd.2.auto/usb3/3-1
| drivers: qcserial, qmi_wwan
| plugin: sierra
| primary port: cdc-wdm0
| ports: cdc-wdm0 (qmi), ttyUSB0 (qcdm), ttyUSB2 (at), wwan0 (net)

Thank you very much for your help!