Hello, I would like to update our 4G Modules. Could you please provide me with the latest firmware.
Quectel EC20:
Current version EC20AQAR02A03E2G 1 [Dec 10 2015 10:21:29]
Thanks,
János
Hello, I would like to update our 4G Modules. Could you please provide me with the latest firmware.
Quectel EC20:
Current version EC20AQAR02A03E2G 1 [Dec 10 2015 10:21:29]
Thanks,
János
Thank you so much @leon.bao for sending over the firmware.
Could you please direct me to the instructions which describe how I could can run execute the upgrade procedure?
I am using the module connected to an arm64 linux-based device.
Thank you very much. I managed to download everything.
I will try to upgrade the firmware, and will come back a bit later.
Dear @leon.bao could you please share the firmware update utility for Windows 10?
I tried to build QFirehose for my Linux environment, but I unfortunately failed.
It tried plugging the 4G module to an older Windows laptop to do the upgrade, but I don’t have the upgrade utility for Windows.
Thank you again! I am downloading it right now.
@leon.bao Sorry to bother you again, but I would need the Windows 10 (64-bit) drivers for EC20 too, because otherwise, the serial ports don’t show up, and without those I can’t do the upgrade.
Thanks for your help so far!
@leon.bao Thank you so much for your ongoing excellent support!
I now have to fix some other things on the laptop where I’m planning to execute firmware upgrade.
I will come back if I need anything else or have any other question.
@leon.bao I’ve got quite an andventure behind me, ensuring that the card was usable in my old Lenovo T430.
Unfortunately after installing the drivers you shared, I couldn’t add them as new drivers, because Windows deemed them unsuitable for my card. (I went to device manager, right clicked one of the unknown Quectel devices, right clicked and selected add/install new drivers, then selected the folder where the drivers were installed (checked the search subfolders checkbox too), but no luck.
So I then decided to boot a Ubuntu 24.04 live system, then built QFirehose, and tried to run it with the folder where I extracted the firmware zip file you shared earlier.
(I have disabled ModemManager and also unloaded the qcserial.ko kernel module.)
Unfortunately, this is the error I am getting:
root@kubuntu:/home/kubuntu/Desktop/eeee# QFirehose_Linux_and_Android_V1.4.21/out/QFirehose -f fw
[000.000]: Version: QFirehose_Linux_Android_V1.4.21
[000.000]: Builded: May 27 2025 07:02:21
[000.000]: Cann't find md5.txt in fw, Please check it!
[000.001]: find_firehose_mbn fail to find firehose mbn file in fw
[000.001]: main (null)
[000.001]: qfirehose.c main 728 fail
root@kubuntu:/home/kubuntu/Desktop/eeee# ll fw
total 155260
drwxr-xr-x 2 root root 440 máj 27 06:52 ./
drwxr-xr-x 4 root root 100 máj 27 06:57 ../
-rw-r--r-- 1 root root 10118592 jún 30 2017 9615-cdp-recovery-image-9615-cdp.yaffs2
-rw-r--r-- 1 root root 28936512 jún 30 2017 9615-cdp-usr-image.usrfs.yaffs2
-rw-r--r-- 1 root root 81792 jún 30 2017 appsboot.mbn
-rw-r--r-- 1 root root 6320128 jún 30 2017 boot-oe-msm9615.img
-rw-r--r-- 1 root root 3461752 márc 4 2017 dsp1.mbn
-rw-r--r-- 1 root root 35500288 júl 9 2017 dsp2.mbn
-rw-r--r-- 1 root root 6796077 jún 4 2015 dsp3.mbn
-rw-r--r-- 1 root root 9728 szept 23 2015 EC20_A20150923.qcn
-rw-r--r-- 1 root root 210660 ápr 15 2015 ENPRG9x15.hex
-rw-r--r-- 1 root root 10429056 jún 30 2017 msm-9615-cdp-image--ipk-20170630-9615-cdp.rootfs.yaffs2
-rw-r--r-- 1 root root 172078 ápr 15 2015 NPRG9x15.hex
-rw-r--r-- 1 root root 464 ápr 15 2015 partition2.mbn
-rw-r--r-- 1 root root 464 szept 17 2014 partition.mbn
-rw-r--r-- 1 root root 505826 júl 14 2017 Quectel_EC20-A_Firmware_Release_Notes_V0208.pdf
-rw-r--r-- 1 root root 6320128 jún 30 2017 recovery-boot-oe-msm9615.img
-rw-r--r-- 1 root root 104536 ápr 15 2015 rpm.mbn
-rw-r--r-- 1 root root 118548 dec 4 2015 sbl1.mbn
-rw-r--r-- 1 root root 365008 dec 4 2015 sbl2.mbn
-rw-r--r-- 1 root root 31457280 jún 30 2017 yaffs_head.aa
-rw-r--r-- 1 root root 18032640 jún 30 2017 yaffs_head.ab
Could you please help me how to proceed? I’ve tried to look at all the documentation previously provided, but couldn’t figure out how to solve the problem.
Hi,@Janos_Szigetvari
Perhaps your module is too old. Many files in the firmware are different from those in the new version of the firmware, so the new version of the tool is not very compatible. For the problem of MD5 verification failure, you can try adding the “-n” option to skip the verification and then try the upgrade again.
Hello @leon.bao thanks for the suggestion.
I tried the -n option, but got similar results:
root@kubuntu:/home/kubuntu/Desktop/eeee# QFirehose_Linux_and_Android_V1.4.21/out/QFirehose -f fw -n
[000.000]: Version: QFirehose_Linux_Android_V1.4.21
[000.000]: Builded: May 27 2025 07:02:21
[000.000]: find_firehose_mbn fail to find firehose mbn file in fw
[000.000]: main (null)
[000.000]: qfirehose.c main 728 fail
root@kubuntu:/home/kubuntu/Desktop/eeee#
Does this mean, that I won’t be able to update the firmware with QFirehose (as it is not compatible)?
If yes, then was there something used before that, to do the firmware upgrade on Linux?
Or if no, then I think I should give Windows and QFlash another chance.
But then again, the it seems that Windows doesn’t recognize the driver properly. Are there some extra steps I have to do before being able to add the new drivers?
Dear @leon.bao I did a bit more digging:
I tried to install the drivers you supplied, for each of the unknown devices in Windows, but Windows did not recognize any of the drivers as belonging to the devices.
My Quectel EC20 has the following hardware IDs:
USB\VID_05C6&PID_9215&REV_0232&MI_04
USB\VID_05C6&PID_9215&REV_0232&MI_00
USB\VID_05C6&PID_9215&REV_0232&MI_01
USB\VID_05C6&PID_9215&REV_0232&MI_02
USB\VID_05C6&PID_9215&REV_0232&MI_03
Which translates to a USB VID: 0x05C6 and USB PID: 0x9215.
On the other hand, in the driver installer *.inf files, I can see the following:
[14:08] user@host{79}:[/media/user/user/ec20/driver/DriverInstaller/windows10]{0}$ fgrep -A 8 EC20 *.inf
qcfilter.inf:;EC21 EC25 EC20 R2.0
qcfilter.inf-%Quectel2C7C0125% = qcfilter, USB\VID_2C7C&PID_0125
qcfilter.inf-%Quectel2C7C0121% = qcfilter, USB\VID_2C7C&PID_0121
--
qcfilter.inf:;EC21 EC25 EC20 R2.0
qcfilter.inf-%Quectel2C7C0125% = qcfilter, USB\VID_2C7C&PID_0125
qcfilter.inf-%qcfilter.DeviceDesc0125% = qcfilter, USB\VID_2C7C&PID_4006
qcfilter.inf-%Quectel2C7C0121% = qcfilter, USB\VID_2C7C&PID_0121
--
qcfilter.inf:;EC21 EC25 EC20 R2.0
qcfilter.inf-qcfilter.DeviceDesc0125 = "Quectel USB Composite Device"
qcfilter.inf-qcfilter.DeviceDesc0121 = "Quectel USB Composite Device"
--
qcmdm.inf:;EC21 EC25 EC20 R2.0
qcmdm.inf-%Quectel2C7C012503Modem% = Modem2, USB\VID_2C7C&PID_0125&MI_03
qcmdm.inf-%Quectel2C7C012103Modem% = Modem2, USB\VID_2C7C&PID_0121&MI_03
--
qcmdm.inf:;EC21 EC25 EC20 R2.0
qcmdm.inf-%Quectel2C7C012503Modem% = Modem2, USB\VID_2C7C&PID_0125&MI_03
qcmdm.inf-%Quectel2C7C012103Modem% = Modem2, USB\VID_2C7C&PID_0121&MI_03
--
qcmdm.inf:;EC21 EC25 EC20 R2.0
qcmdm.inf-Quectel0125 = "Quectel USB Modem"
qcmdm.inf-Quectel0121 = "Quectel USB Modem"
--
qcwwan.inf:;EC21 EC25 EC20 R2.0
qcwwan.inf-%Quectel2C7C012504NDIS% = qcwwan.ndi, USB\VID_2C7C&PID_0125&MI_04
qcwwan.inf-%Quectel2C7C012104NDIS% = qcwwan.ndi, USB\VID_2C7C&PID_0121&MI_04
--
qcwwan.inf:;EC21 EC25 EC20 R2.0
qcwwan.inf-%Quectel2C7C012504NDIS% = qcwwan.ndi, USB\VID_2C7C&PID_0125&MI_04
qcwwan.inf-%Quectel2C7C012104NDIS% = qcwwan.ndi, USB\VID_2C7C&PID_0121&MI_04
--
qcser.inf:;EC21 EC25 EC20 R2.0
qcser.inf-%Quectel2C7C012502AT% = QportInstall00, USB\VID_2C7C&PID_0125&MI_02
qcser.inf-%Quectel2C7C012501NMEA% = QportInstall00, USB\VID_2C7C&PID_0125&MI_01
qcser.inf-%Quectel2C7C012500DM% = QportInstall00, USB\VID_2C7C&PID_0125&MI_00
qcser.inf-%Quectel2C7C012102AT% = QportInstall00, USB\VID_2C7C&PID_0121&MI_02
qcser.inf-%Quectel2C7C012101NMEA% = QportInstall00, USB\VID_2C7C&PID_0121&MI_01
qcser.inf-%Quectel2C7C012100DM% = QportInstall00, USB\VID_2C7C&PID_0121&MI_00
--
qcser.inf:;EC21 EC25 EC20 R2.0
qcser.inf-%Quectel2C7C012502AT% = QportInstall00, USB\VID_2C7C&PID_0125&MI_02
qcser.inf-%Quectel2C7C012501NMEA% = QportInstall00, USB\VID_2C7C&PID_0125&MI_01
qcser.inf-%Quectel2C7C012500DM% = QportInstall00, USB\VID_2C7C&PID_0125&MI_00
qcser.inf-%Quectel2C7C012102AT% = QportInstall00, USB\VID_2C7C&PID_0121&MI_02
qcser.inf-%Quectel2C7C012101NMEA% = QportInstall00, USB\VID_2C7C&PID_0121&MI_01
qcser.inf-%Quectel2C7C012100DM% = QportInstall00, USB\VID_2C7C&PID_0121&MI_00
--
qcser.inf:;EC21 EC25 EC20 R2.0
qcser.inf-Quectel01251 = "Quectel USB DM Port"
qcser.inf-Quectel01252 = "Quectel USB NMEA Port"
qcser.inf-Quectel01253 = "Quectel USB AT Port"
qcser.inf-Quectel01211 = "Quectel USB DM Port"
qcser.inf-Quectel01212 = "Quectel USB NMEA Port"
qcser.inf-Quectel01213 = "Quectel USB AT Port"
qcser.inf-Quectel90080 = "Quectel QDLoader 9008"
[14:08] user@host{79}:[/media/user/user/ec20/driver/DriverInstaller/windows10]{0}$
This suggests that apparently the files expect the device to have a USB VID of 0x2C7C and a USB PID of 0x0125 or 0x0121.
According to the Linux USB ID database these correspond to
|[0121] EC21 LTE modem|
|[0125] EC25 LTE modem|
as in: htt ps://usb-ids.gowdy.us/read/UD/2c7c
On the other hand, my card is the following:
htt ps://usb-ids.gowdy.us/read/UD/05c6/9215
Probably you sent me the driver for the R2.0 version of the card. I probably have an older one.
Could you help me in getting the right driver and could you also verify that the firmware is for my version of the card.
Thanks!
Hi,@Janos_Szigetvari
Sorry,The oldest driver is also around version 2.0. Your module was produced between 2015 and 2017, while the oldest driver was released in 2021. I haven’t found a driver applicable to your module as it’s too old.
@leon.bao Thanks for getting back to me.
Then it seems I am stuck with Linux and using QFirehose.
On the other hand, that also has its own problems, as QFirehose complains about find_firehose_mbn fail to find firehose mbn file in fw
.
If that doesn’t work, then how can we go ahead with the update?
Is there perhaps a solution that was used to updte the firmware before QFirehose?
Or is there maybe an older version of it, that would support these older-style firmware packages?
At first glance it seems to me that sahara is the older version of the update protocol and firehose is the new one. Is that so, or did I misunderstand something? Maybe sahara could still be used for the update?
Hi,@Janos_Szigetvari
The update of the current EC2x module depends on the “prog_nand_firehose_9x07.mbn” file. However, this file is not included in the old version of the firmware, so an error will be reported during the upgrade. I’ve found a very old QFlash tool based on Linux. Please try it to see if the upgrade can be carried out.
Hello @leon.bao,
I appretiate you going the extra mile of digging up these older tools for me. Not many support people would put into it this much effort. I am really impressed and happy at the same time about it.
On the other hand, sorry to keep you waiting for so long, but I finally found the time to attempt the upgrade.
I used a Kubuntu 24.04 live system for the upgrade.
The upgrade tool compiled successfully, though with some compiler warnings.
When attempting the upgrade, the outputs suggested that some steps were executing successfully, but in the end I encountered the following problem:
root@kubuntu:~/eeee/updater# ./QFlash -f fffff/
EC20_QFlash_Linux&Android_V3.1.0
***********************
The CPU is little endian
***********************
firmware path: /root/eeee/updater/fffff/
Module upgrade tool, Wed Jun 11 12:31:31 2025
unknow file EC20_A20150923.qcn in firmware path
Detect yaffs_head.aa file
Detect yaffs_head.ab file
module status detection
/root/eeee/updater/QFlash fastboot devices
MDM9615 fastboot
/root/eeee/updater/QFlash fastboot erase aboot
erasing 'aboot'...
OKAY [ 0.019s]
finished. total time: 0.019s
/root/eeee/updater/QFlash fastboot reboot
rebooting...
finished. total time: 0.001s
in download mode
in PRG Status
send /root/eeee/updater/fffff//NPRG9x15.hex
progress : 100% finished
tx:7e 05 41 70 00 00 f7 63 7e
tx:7e 06 4e 95 7e
rx:7e 0e 49 6e 76 61 6c 69 64 20 43 6f 6d 6d 61 6e 64 0a 58 bd 7e 7e 0d 05 00 00 00 49 6e 76 61 6c 69 64 20 43 6f 6d 6d 61 6e 64 bf c3 7e
in go mode
start to download firmware
tx:7e 17 01 57 c6 7e
rx:7e
rx:18
rx:b1
rx:6c
rx:7e
tx:7e 19 00 9a 1b 7d 5d aa bc 48 7d 5d 1f 03 00 00 00 10 00 00 00 30 3a 4d 49 42 49 42 00 00 00 00 00 00 00 00 00 06 00 00 00 04 00 00 00 ff ff ff
handle_parti_tbl command = 1a, status = 00
flash 0:SBL1 /root/eeee/updater/fffff//sbl1.mbn
sending '0:SBL1' (115KB)
progress : 100% finished
OKAY
flash 0:SBL2 sbl2_tmp.mbn
progress : 100% finished
OKAY
flash 0:RPM /root/eeee/updater/fffff//rpm.mbn
sending '0:RPM' (102KB)
progress : 100% finished
OKAY
flash 0:APPSBL appsboot_tmp.mbn
progress : 100% finished
OKAY
tx:7e 0b ab 4e 7e
rx:7e
rx:0c
rx:14
rx:3a
rx:7e
/root/eeee/updater/QFlash fastboot devices
MDM9615 fastboot
/root/eeee/updater/QFlash fastboot flash sbl2 "/root/eeee/updater/fffff//sbl2.mbn"
error: cannot open device
Upgrade module unsuccessfully, Wed Jun 11 12:31:48 2025
This was what I saw in the Linux systems kernel log:
[Wed Jun 11 12:35:50 2025] usb 3-4: new high-speed USB device number 8 using xhci_hcd
[Wed Jun 11 12:35:50 2025] usb 3-4: New USB device found, idVendor=05c6, idProduct=9215, bcdDevice= 0.00
[Wed Jun 11 12:35:50 2025] usb 3-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[Wed Jun 11 12:35:50 2025] usb 3-4: Product: QHSUSB_DLOAD
[Wed Jun 11 12:35:50 2025] usb 3-4: Manufacturer: Qualcomm CDMA Technologies MSM
[Wed Jun 11 12:35:50 2025] qcserial 3-4:1.0: Qualcomm USB modem converter detected
[Wed Jun 11 12:35:50 2025] usb 3-4: Qualcomm USB modem converter now attached to ttyUSB0
[Wed Jun 11 12:36:03 2025] usb 3-4: USB disconnect, device number 8
[Wed Jun 11 12:36:03 2025] qcserial ttyUSB0: Qualcomm USB modem converter now disconnected from ttyUSB0
[Wed Jun 11 12:36:03 2025] qcserial 3-4:1.0: device disconnected
[Wed Jun 11 12:36:04 2025] usb 3-4: new high-speed USB device number 9 using xhci_hcd
[Wed Jun 11 12:36:04 2025] usb 3-4: New USB device found, idVendor=18d1, idProduct=d00d, bcdDevice= 1.00
[Wed Jun 11 12:36:04 2025] usb 3-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Wed Jun 11 12:36:04 2025] usb 3-4: Product: Android
[Wed Jun 11 12:36:04 2025] usb 3-4: Manufacturer: Google
[Wed Jun 11 12:36:04 2025] usb 3-4: SerialNumber: MDM9615
[Wed Jun 11 12:38:12 2025] usb 2-1.2: USB disconnect, device number 5
Currently the device doesn’t offer any virtual serial ports, but shows up as the following USB device:
Bus 003 Device 009: ID 18d1:d00d Google Inc. Xiaomi Mi/Redmi 2 (fastboot)
Do you perhaps have any further suggestions, that I might try?
@leon.bao In the meantime I found this topic here:
After reading through things, could you please send me the utility QFlash V4.19 for Windows and the Quectel_Customer_FW_Download_Tool_V4.48?