Unable to upgrade firmware on EC20 using QFirehose

Hi,

I am trying to upgrade firmware of EC20 module, but it is failing.
Same process is working on EC25 module
Following is the log

./QFirehose  -f ./EC20CEFAGR06A16M4G
[000.000]: Version: QFirehose_Linux_Android_V1.4.17
[000.000]: Builded: Dec 27 2024 05:05:23
[000.000]: Find md5 check file <./EC20CEFAGR06A16M4G/md5.txt>
[000.000]: md5 checking: ./EC20CEFAGR06A16M4G/contents.xml pass
[000.007]: md5 checking: ./EC20CEFAGR06A16M4G/update/appsboot.mbn pass
[000.009]: md5 checking: ./EC20CEFAGR06A16M4G/update/ENPRG9x07.mbn pass
[000.009]: md5 checking: ./EC20CEFAGR06A16M4G/update/firehose/partition_complete_p4K_b256K.mbn pass
[000.009]: md5 checking: ./EC20CEFAGR06A16M4G/update/firehose/patch_p4K_b256K.xml pass
[000.011]: md5 checking: ./EC20CEFAGR06A16M4G/update/firehose/prog_nand_firehose_9x07.mbn pass
[000.011]: md5 checking: ./EC20CEFAGR06A16M4G/update/firehose/rawprogram_nand_p4K_b256K_update.xml pass
[000.081]: md5 checking: ./EC20CEFAGR06A16M4G/update/mdm9607-perf-boot.img pass
[000.663]: md5 checking: ./EC20CEFAGR06A16M4G/update/mdm9607-perf-sysfs.ubi pass
[000.788]: md5 checking: ./EC20CEFAGR06A16M4G/update/mdm-perf-recovery-image-mdm9607-perf.ubi pass
[001.289]: md5 checking: ./EC20CEFAGR06A16M4G/update/NON-HLOS.ubi pass
[001.291]: md5 checking: ./EC20CEFAGR06A16M4G/update/NPRG9x07.mbn pass
[001.295]: md5 checking: ./EC20CEFAGR06A16M4G/update/oemapp.ubi pass
[001.296]: md5 checking: ./EC20CEFAGR06A16M4G/update/partition.mbn pass
[001.296]: md5 checking: ./EC20CEFAGR06A16M4G/update/partition_nand.xml pass
[001.298]: md5 checking: ./EC20CEFAGR06A16M4G/update/rpm.mbn pass
[001.300]: md5 checking: ./EC20CEFAGR06A16M4G/update/sbl1.mbn pass
[001.307]: md5 checking: ./EC20CEFAGR06A16M4G/update/tz.mbn pass
[001.307]: Totals checking 18 files md5 value, 0 file fail!
[001.307]: find 'prog_nand_firehose_9x07.mbn'
[001.307]: find_firehose_mbn prog_nand_firehose_9x07.mbn
[001.308]: [1] /sys/bus/usb/devices/1-1.2 5c6/9008/0
[001.308]: qusb_read_speed_atime speed: 480, st_atime: 20250213_11:56:22
[001.309]: P: /dev/bus/usb/001/007 idVendor=05c6 idProduct=9008
[001.309]: C: /dev/bus/usb/001/007 bNumInterfaces: 1
[001.309]: I: If#= 0 Alt= 0 #EPs= 2 Cls=ff Sub=ff Prot=ff
[001.309]: E: Ad=81 Atr=02 MxPS= 512 Ivl=0ms
[001.309]: E: Ad=01 Atr=02 MxPS= 512 Ivl=0ms
[001.309]: <=== Q_SAHARA_ONE
[001.309]: Q_SAHARA_TWO ===>
[001.309]: <=== Q_SAHARA_THREE
[001.309]: 0x0000000d 0x00000000 0x00000034
[001.309]: <=== Q_SAHARA_THREE
[001.309]: 0x0000000d 0x00000034 0x00000060
[001.309]: <=== Q_SAHARA_THREE
[001.310]: 0x0000000d 0x00001000 0x00000088
[001.310]: <=== Q_SAHARA_THREE
[001.310]: 0x0000000d 0x00002000 0x00001000
[001.311]: <=== Q_SAHARA_THREE
[001.311]: 0x0000000d 0x00003000 0x00001000
[001.311]: <=== Q_SAHARA_THREE
[001.311]: 0x0000000d 0x00004000 0x00001000
[001.312]: <=== Q_SAHARA_THREE
[001.312]: 0x0000000d 0x00005000 0x00001000
[001.313]: <=== Q_SAHARA_THREE
[001.313]: 0x0000000d 0x00006000 0x00001000
[001.314]: <=== Q_SAHARA_THREE
[001.314]: 0x0000000d 0x00007000 0x00001000
[001.314]: <=== Q_SAHARA_THREE
[001.314]: 0x0000000d 0x00008000 0x00001000
[001.315]: <=== Q_SAHARA_THREE
[001.315]: 0x0000000d 0x00009000 0x00001000
[001.316]: <=== Q_SAHARA_THREE
[001.316]: 0x0000000d 0x0000a000 0x00001000
[001.316]: <=== Q_SAHARA_THREE
[001.316]: 0x0000000d 0x0000b000 0x00001000
[001.317]: <=== Q_SAHARA_THREE
[001.317]: 0x0000000d 0x0000c000 0x00001000
[001.318]: <=== Q_SAHARA_THREE
[001.318]: 0x0000000d 0x0000d000 0x00001000
[001.319]: <=== Q_SAHARA_THREE
[001.319]: 0x0000000d 0x0000e000 0x00001000
[001.319]: <=== Q_SAHARA_THREE
[001.319]: 0x0000000d 0x0000f000 0x00001000
[001.320]: <=== Q_SAHARA_THREE
[001.320]: 0x0000000d 0x00010000 0x00001000
[001.321]: <=== Q_SAHARA_THREE
[001.321]: 0x0000000d 0x00011000 0x00001000
[001.322]: <=== Q_SAHARA_THREE
[001.322]: 0x0000000d 0x00012000 0x00001000
[001.323]: <=== Q_SAHARA_THREE
[001.323]: 0x0000000d 0x00013000 0x00001000
[001.323]: <=== Q_SAHARA_THREE
[001.323]: 0x0000000d 0x00014000 0x00001000
[001.324]: <=== Q_SAHARA_THREE
[001.324]: 0x0000000d 0x00015000 0x00001000
[001.325]: <=== Q_SAHARA_THREE
[001.325]: 0x0000000d 0x00016000 0x00001000
[001.326]: <=== Q_SAHARA_THREE
[001.326]: 0x0000000d 0x00017000 0x00001000
[001.326]: <=== Q_SAHARA_THREE
[001.326]: 0x0000000d 0x00018000 0x00001000
[001.327]: <=== Q_SAHARA_THREE
[001.327]: 0x0000000d 0x00019000 0x00001000
[001.328]: <=== Q_SAHARA_THREE
[001.328]: 0x0000000d 0x0001a000 0x00001000
[001.329]: <=== Q_SAHARA_THREE
[001.329]: 0x0000000d 0x0001b000 0x00001000
[001.329]: <=== Q_SAHARA_THREE
[001.329]: 0x0000000d 0x0001c000 0x00001000
[001.330]: <=== Q_SAHARA_THREE
[001.330]: 0x0000000d 0x0001d000 0x00001000
[001.331]: <=== Q_SAHARA_THREE
[001.331]: 0x0000000d 0x0001e000 0x00001000
[001.332]: <=== Q_SAHARA_THREE
[001.332]: 0x0000000d 0x0001f000 0x00000690
[001.358]: <=== Q_SAHARA_FOUR
[001.358]: q_image_id = 13, q_status = 0
[001.358]: Q_SAHARA_FIVE ===>
[001.359]: <=== Q_SAHARA_SIX
[001.359]: q_image_tx_status = 0
[001.359]: Sahara protocol completed
[001.359]: find 'rawprogram_nand_p4K_b256K_update.xml'
[001.360]: find 'patch_p4K_b256K.xml'
[001.360]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="partition_complete_p4K_b256K.mbn" num_partition_sectors="640" physical_partition_number="0" start_sector="640"/>

[001.360]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\oemapp.ubi" num_partition_sectors="768" physical_partition_number="0" start_sector="9408"/>

[001.360]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\tz.mbn" num_partition_sectors="320" physical_partition_number="0" start_sector="10176"/>

[001.360]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\rpm.mbn" num_partition_sectors="384" physical_partition_number="0" start_sector="10496"/>

[001.360]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\appsboot.mbn" num_partition_sectors="320" physical_partition_number="0" start_sector="10880"/>

[001.360]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\mdm9607-perf-boot.img" num_partition_sectors="2304" physical_partition_number="0" start_sector="11200"/>

[001.360]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\mdm9607-perf-boot.img" num_partition_sectors="2304" physical_partition_number="0" start_sector="13504"/>

[001.361]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\mdm-perf-recovery-image-mdm9607-perf.ubi" num_partition_sectors="3584" physical_partition_number="0" start_sector="16128"/>

[001.361]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\NON-HLOS.ubi" num_partition_sectors="15872" physical_partition_number="0" start_sector="23936"/>

[001.361]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\mdm-perf-recovery-image-mdm9607-perf.ubi" num_partition_sectors="7680" physical_partition_number="0" start_sector="40128"/>

[001.361]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\NON-HLOS.ubi" num_partition_sectors="14336" physical_partition_number="0" start_sector="47808"/>

[001.361]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\mdm9607-perf-sysfs.ubi" num_partition_sectors="14848" physical_partition_number="0" start_sector="62144"/>

[001.361]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\mdm9607-perf-sysfs.ubi" num_partition_sectors="54080" physical_partition_number="0" start_sector="76992"/>

[001.361]: fh_xml_find_value: no key sparse in <program PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" filename="..\sbl1.mbn" num_partition_sectors="640" physical_partition_number="0" start_sector="0"/>

[002.555]: <log value="Supported Functions: program configure power benchmark read getstorageinfo erase nop "/>
[003.556]: <configure MemoryName="nand" Verbose="0" AlwaysValidate="0" MaxDigestTableSizeInBytes="2048" MaxPayloadSizeToTargetInBytes="8192"  ZlpAwareHost="1" SkipStorageInit="0" />
[003.557]: <response value="ACK" MemoryName="NAND" MaxPayloadSizeFromTargetInBytes="2048" MaxPayloadSizeToTargetInBytes="8192" MaxPayloadSizeToTargetInBytesSupported="16384" TargetName="9x07" />
[003.557]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="640" physical_partition_number="0" start_sector="0"/>
[003.558]: <log value="start_sector = 0 and num_partition_sectors =0x280)"/>
[003.572]: <response value="ACK" />
[003.572]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="640" physical_partition_number="0" start_sector="640"/>
[003.572]: <log value="start_sector = 640 and num_partition_sectors =0x280)"/>
[003.586]: <response value="ACK" />
[003.586]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="768" physical_partition_number="0" start_sector="9408"/>
[003.587]: <log value="start_sector = 9408 and num_partition_sectors =0x300)"/>
[003.603]: <response value="ACK" />
[003.604]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="320" physical_partition_number="0" start_sector="10176"/>
[003.604]: <log value="start_sector = 10176 and num_partition_sectors =0x140)"/>
[003.611]: <response value="ACK" />
[003.611]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="384" physical_partition_number="0" start_sector="10496"/>
[003.612]: <log value="start_sector = 10496 and num_partition_sectors =0x180)"/>
[003.620]: <response value="ACK" />
[003.620]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="320" physical_partition_number="0" start_sector="10880"/>
[003.621]: <log value="start_sector = 10880 and num_partition_sectors =0x140)"/>
[003.628]: <response value="ACK" />
[003.628]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="2304" physical_partition_number="0" start_sector="11200"/>
[003.628]: <log value="start_sector = 11200 and num_partition_sectors =0x900)"/>
[003.678]: <response value="ACK" />
[003.678]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="2304" physical_partition_number="0" start_sector="13504"/>
[003.679]: <log value="start_sector = 13504 and num_partition_sectors =0x900)"/>
[003.729]: <response value="ACK" />
[003.729]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="3584" physical_partition_number="0" start_sector="16128"/>
[003.729]: <log value="start_sector = 16128 and num_partition_sectors =0xe00)"/>
[003.807]: <response value="ACK" />
[003.807]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="15872" physical_partition_number="0" start_sector="23936"/>
[003.807]: <log value="start_sector = 23936 and num_partition_sectors =0x3e00)"/>
[004.150]: <response value="ACK" />
[004.150]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="7680" physical_partition_number="0" start_sector="40128"/>
[004.150]: <log value="start_sector = 40128 and num_partition_sectors =0x1e00)"/>
[004.316]: <response value="ACK" />
[004.317]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="14336" physical_partition_number="0" start_sector="47808"/>
[004.317]: <log value="start_sector = 47808 and num_partition_sectors =0x3800)"/>
[004.626]: <response value="ACK" />
[004.627]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="14848" physical_partition_number="0" start_sector="62144"/>
[004.627]: <log value="start_sector = 62144 and num_partition_sectors =0x3a00)"/>
[004.627]: <log value="Block erase request exceeding total number of blocks"/>
[004.627]: <log value="start_block:971,last_block:1203,total_block_count:1024"/>
[004.628]: <log value="ERROR 6: Line 1512: STORAGE_DEVICE_ERASE_FAILURE"/>
[004.628]: <response value="NAK" />
[004.628]: firehose_protocol.c fh_process_erase 1108 fail
[004.628]: firehose_protocol.c firehose_main 1950 fail
[004.628]: Upgrade module failed.

Request help regarding issue.

Thanks & Regards
Praveen

From the log, it seems that the Firmware you used is not compatible with module.
Could you show the IMEI of the EC20?

The module is EC20CEFILG but you flashed it with the EC20CEFAG.
Of course you cannot flash it.
Could you tell me the current firmware of the EC20CEFILG?

current version is EC20CEFILGR06A07M1G
EC20CEFAGR06A16M4G was provided to us by local distributer
I will try to get correct firmware version and re-flash
thank you Bean Wang

Regards
Praveen

Please try the EC20CEFILGR06A13M1G I sent. Do not reply in Message.

I could upgrade the firmware to EC20CEFILGR06A13M1G
is this the final firmware, I want to upgrade to latest firmware to get XLAT functionality
but that command is not working in this version.

below are the command output

AT+GMR
EC20CEFILGR06A13M1G

OK
AT+QCFG=“clat”
ERROR

Thanks & Regards
Praveen

If so I am afraid that the firmware do not support XLAT.
And it is already the lastest firmware version maybe you have to switch to another module that support XLAT.
EC20CEFILGR08 support the XLAT, if you must need the XLAT please tell the sales that you need the R08.