I am using the RG255C-GL module on a Quectel 5G RedCap EVB board.
Initially, the module was working correctly:
- Network registration successful
- NET_MODE LED blinking
- AT+CSQ and AT+QENG commands working
- SIM detected and operational
AT
OK
AT+CVERSION
VERSION: RG255CGLABR01A04M4G
Jun 24 2024 15:04:10
Authors: Quectel
OK
AT+CSUB
SubEdition: V02
OK
AT+QGMR
RG255CGLABR01A04M4G_01.002.01.002
OK
AT+COPS=?
AT
+COPS: (1,"IND-JIO","JIO","405864",7),(1,"IND airtel","airtel","40490",12),(1,"IND-JIO","JIO","405864",12),(1,"Vi India","Vi India","40422",7),(1,"CellOne","CellOne","40466",7),(1,"IND airtel","airtel","40490",7),,(0-4),(0-2)
OK
However, during firmware upgrade using qfirehose due to vpn connection issue - it failed and when we try re-flash it stuck in the below section
rohit.jagtap:~/Desktop/Data/Quectel_Project/Tools/QFirehose_Linux_Android_V1.7/out$ sudo ./QFirehose -f ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/
[000.000]: Version: QFirehose_Linux_Android_V1.7.1
[000.000]: Builded: Apr 9 2026 19:16:16
[000.001]: Find md5 check file <../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/md5.txt>
[000.001]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/contents.xml pass
[000.225]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/NON-HLOS.ubi pass
[000.227]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/abl.elf pass
[000.228]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/aop.mbn pass
[000.228]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/aop_devcfg.mbn pass
[000.228]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/apdp.mbn pass
[000.270]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/boot.img pass
[000.272]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/cmnlib.mbn pass
[000.273]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/cpucp.elf pass
[000.273]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/devcfg.mbn pass
[000.273]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/firehose/partition_complete_p2K_b128K.mbn pass
[000.273]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/firehose/patch_p2K_b128K.xml pass
[000.281]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/firehose/prog_firehose_sdx35.elf pass
[000.281]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/firehose/rawprogram_nand_p2K_b128K_update.xml pass
[000.281]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/fw_ipa_gsi_5.2_le.elf pass
[000.282]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/km41_32.mbn pass
[000.282]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/multi_qti.mbn pass
[000.282]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/partition.mbn pass
[000.282]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/partition_nand.xml pass
[000.305]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/qdsp6m.qdb pass
[000.305]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/qupv3fw.elf pass
[000.389]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/recoveryfs.ubi pass
[000.389]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/shrm.elf pass
[000.748]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/sysfs.ubi pass
[000.754]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/tz.mbn pass
[000.769]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/uefi.elf pass
[000.770]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/usrdata.ubi pass
[000.771]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/xbl_config.elf pass
[000.774]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/xbl_ramdump.elf pass
[000.779]: md5 checking: ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/xbl_s_nand.melf pass
[000.779]: Totals checking 30 files md5 value, 0 file fail!
[000.779]: find 'prog_firehose_sdx35.elf'
[000.779]: find_firehose_mbn prog_firehose_sdx35.elf
[000.779]: main prog_firehose_sdx35.elf
[000.779]: [1] /sys/bus/usb/devices/1-2 5c6/9008/0
[000.779]: qusb_read_speed_atime speed: 480, st_atime: 20260409_19:32:18
[000.779]: P: /dev/bus/usb/001/023 idVendor=05c6 idProduct=9008
[000.779]: C: /dev/bus/usb/001/023 bNumInterfaces: 1
[000.779]: I: If#= 0 Alt= 0 #EPs= 2 Cls=ff Sub=ff Prot=11
[000.779]: E: Ad=81 Atr=02 MxPS= 512 Ivl=0ms
[000.779]: E: Ad=01 Atr=02 MxPS= 512 Ivl=0ms
[000.779]: tmp=/sys/bus/usb/devices/usb1/../driver, driver=../../../bus/pci/drivers/xhci_hcd
[000.779]: sahara_main full_path:../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/update/firehose/prog_firehose_sdx35.elf
[000.779]: <=== Q_SAHARA_ONE
[000.780]: Q_SAHARA_TWO ===>
[000.787]: <=== Q_SAHARA_EIGHTEEN
[000.787]: 0x0000000d 0x00000000 0x00000040
[000.787]: <=== Q_SAHARA_EIGHTEEN
[000.787]: 0x0000000d 0x00000034 0x00000040
[000.787]: <=== Q_SAHARA_EIGHTEEN
[000.787]: 0x0000000d 0x00000074 0x00001000
[000.818]: <=== Q_SAHARA_EIGHTEEN
[000.818]: 0x0000000d 0x00001074 0x0000028c
[000.824]: <=== Q_SAHARA_EIGHTEEN
[000.824]: 0x0000000d 0x00001300 0x00000040
[000.825]: <=== Q_SAHARA_EIGHTEEN
[000.825]: 0x0000000d 0x00001334 0x00000180
[000.825]: <=== Q_SAHARA_EIGHTEEN
[000.825]: 0x0000000d 0x0002d300 0x00002eb0
[000.835]: <=== Q_SAHARA_EIGHTEEN
[000.835]: 0x0000000d 0x00002000 0x00011000
[000.841]: <=== Q_SAHARA_EIGHTEEN
[000.841]: 0x0000000d 0x00013000 0x00011000
[000.846]: <=== Q_SAHARA_EIGHTEEN
[000.846]: 0x0000000d 0x00024000 0x0000085c
[000.846]: <=== Q_SAHARA_EIGHTEEN
[000.847]: 0x0000000d 0x0002485c 0x00004794
[000.848]: <=== Q_SAHARA_EIGHTEEN
[000.848]: 0x0000000d 0x00028ff0 0x00001064
[000.849]: <=== Q_SAHARA_EIGHTEEN
[000.849]: 0x0000000d 0x0002a054 0x00002400
[000.855]: <=== Q_SAHARA_EIGHTEEN
[000.855]: 0x0000000d 0x000301b0 0x00000040
[000.856]: <=== Q_SAHARA_EIGHTEEN
[000.856]: 0x0000000d 0x000301e4 0x00000120
[000.856]: <=== Q_SAHARA_EIGHTEEN
[000.856]: 0x0000000d 0x000e11b0 0x00002e20
[000.866]: <=== Q_SAHARA_EIGHTEEN
[000.866]: 0x0000000d 0x000311b0 0x00011000
[000.869]: <=== Q_SAHARA_EIGHTEEN
[000.869]: 0x0000000d 0x000421b0 0x00011000
[000.872]: <=== Q_SAHARA_EIGHTEEN
[000.872]: 0x0000000d 0x000531b0 0x00011000
[000.874]: <=== Q_SAHARA_EIGHTEEN
[000.874]: 0x0000000d 0x000641b0 0x00011000
[000.877]: <=== Q_SAHARA_EIGHTEEN
[000.877]: 0x0000000d 0x000751b0 0x00011000
[000.880]: <=== Q_SAHARA_EIGHTEEN
[000.880]: 0x0000000d 0x000861b0 0x00011000
[000.882]: <=== Q_SAHARA_EIGHTEEN
[000.882]: 0x0000000d 0x000971b0 0x0000f000
[000.885]: <=== Q_SAHARA_EIGHTEEN
[000.885]: 0x0000000d 0x000a61b0 0x00010000
[000.887]: <=== Q_SAHARA_EIGHTEEN
[000.887]: 0x0000000d 0x000b61b0 0x00011000
[000.890]: <=== Q_SAHARA_EIGHTEEN
[000.890]: 0x0000000d 0x000c71b0 0x00002000
[000.891]: <=== Q_SAHARA_EIGHTEEN
[000.891]: 0x0000000d 0x000c91b0 0x00011000
[000.893]: <=== Q_SAHARA_EIGHTEEN
[000.893]: 0x0000000d 0x000da1b0 0x00007000
[000.900]: <=== Q_SAHARA_EIGHTEEN
[000.900]: 0x0000000d 0x000e3fd0 0x00000040
[000.901]: <=== Q_SAHARA_EIGHTEEN
[000.901]: 0x0000000d 0x000e4004 0x000000e0
[000.901]: <=== Q_SAHARA_EIGHTEEN
[000.901]: 0x0000000d 0x00122fd0 0x00001238
[000.904]: <=== Q_SAHARA_EIGHTEEN
[000.904]: 0x0000000d 0x000e4fd0 0x00011000
[000.907]: <=== Q_SAHARA_EIGHTEEN
[000.907]: 0x0000000d 0x000f5fd0 0x00011000
[000.909]: <=== Q_SAHARA_EIGHTEEN
[000.909]: 0x0000000d 0x00106fd0 0x00008000
[000.910]: <=== Q_SAHARA_EIGHTEEN
[000.910]: 0x0000000d 0x0010efd0 0x00008000
[000.912]: <=== Q_SAHARA_EIGHTEEN
[000.912]: 0x0000000d 0x00116fd0 0x0000c000
[000.918]: <=== Q_SAHARA_EIGHTEEN
[000.918]: 0x0000000d 0x00124208 0x00000040
[000.918]: <=== Q_SAHARA_EIGHTEEN
[000.918]: 0x0000000d 0x0012423c 0x00000120
[000.918]: <=== Q_SAHARA_EIGHTEEN
[000.918]: 0x0000000d 0x00151208 0x000012dc
[000.921]: <=== Q_SAHARA_EIGHTEEN
[000.922]: 0x0000000d 0x0012435c 0x0000015c
[000.922]: <=== Q_SAHARA_EIGHTEEN
[000.922]: 0x0000000d 0x001244b8 0x00008804
[000.923]: <=== Q_SAHARA_EIGHTEEN
[000.923]: 0x0000000d 0x0012ccbc 0x00008804
[000.925]: <=== Q_SAHARA_EIGHTEEN
[000.925]: 0x0000000d 0x001354c0 0x00008804
[000.926]: <=== Q_SAHARA_EIGHTEEN
[000.926]: 0x0000000d 0x0013dcc4 0x00008804
[000.927]: <=== Q_SAHARA_EIGHTEEN
[000.927]: 0x0000000d 0x001464c8 0x00003904
[000.928]: <=== Q_SAHARA_EIGHTEEN
[000.928]: 0x0000000d 0x00149dcc 0x00006fbc
[000.934]: <=== Q_SAHARA_FOUR
[000.934]: q_image_id = 13, q_status = 0
[000.934]: Q_SAHARA_FIVE ===>
[000.934]: <=== Q_SAHARA_SIX
[000.934]: q_image_tx_status = 1
[000.934]: Successfully flash all images
[000.934]: Sahara protocol completed
[000.935]: find 'rawprogram_nand_p2K_b128K_update.xml'
[000.935]: retrieve rawprogram namd file failed.
[000.935]: find 'patch_p2K_b128K.xml'
[001.184]: <log value="INFO: Binary build date: Sep 25 2024 @ 17:32:02" />
[001.184]: <log value="INFO: Binary build date: Sep 25 2024 @ 17:32:02." />
[001.184]: <log value="INFO: Chip serial num (0xf9bf1af9) Chip ID (0x44c)" />
[001.184]: <log value="INFO: Supported Functions (15):" />
[001.184]: <log value="INFO: program" />
[001.184]: <log value="INFO: read" />
[001.185]: <log value="INFO: nop" />
[001.185]: <log value="INFO: patch" />
[001.185]: <log value="INFO: configure" />
[001.185]: <log value="INFO: setbootablestoragedrive" />
[001.185]: <log value="INFO: erase" />
[001.185]: <log value="INFO: power" />
[001.185]: <log value="INFO: firmwarewrite" />
[001.185]: <log value="INFO: getstorageinfo" />
[001.186]: <log value="INFO: benchmark" />
[001.186]: <log value="INFO: emmc" />
[001.186]: <log value="INFO: ufs" />
[001.186]: <log value="INFO: fixgpt" />
[001.186]: <log value="INFO: getsha256digest" />
[001.186]: <log value="INFO: End of supported functions 15" />
[004.940]: <configure MemoryName="nand" Verbose="0" AlwaysValidate="0" MaxDigestTableSizeInBytes="2048" MaxPayloadSizeToTargetInBytes="8192" ZlpAwareHost="1" SkipStorageInit="0" />
[004.941]: <log value="INFO: Calling handler for configure" />
[004.941]: <log value="INFO: Storage type set to value nand" />
[004.941]: <response value="ACK" MemoryName="nand" MinVersionSupported="1" Version="1" MaxPayloadSizeToTargetInBytes="8192" MaxPayloadSizeToTargetInBytesSupported="16384" MaxXMLSizeInBytes="4096" DateTime="Sep 25 2024 - 17:32:02" />
[004.941]: <erase PAGES_PER_BLOCK="64" SECTOR_SIZE_IN_BYTES="2048" num_partition_sectors="1920" physical_partition_number="0" start_sector="0"/>
[004.941]: <log value="INFO: Calling handler for erase" />
[008.950]: <log value="INFO: [285] Bad Block Check 0% complete." />
[008.961]: <log value="INFO: [285] Bad Block Check 2% complete." />
[008.973]: <log value="INFO: [285] Bad Block Check 4% complete." />
[008.984]: <log value="INFO: [285] Bad Block Check 7% complete." />
[008.996]: <log value="INFO: [285] Bad Block Check 9% complete." />
[009.007]: <log value="INFO: [285] Bad Block Check 12% complete." />
[009.019]: <log value="INFO: [285] Bad Block Check 14% complete." />
[009.030]: <log value="INFO: [285] Bad Block Check 17% complete." />
[009.042]: <log value="INFO: [285] Bad Block Check 19% complete." />
[009.054]: <log value="INFO: [285] Bad Block Check 21% complete." />
[009.065]: <log value="INFO: [285] Bad Block Check 24% complete." />
[009.077]: <log value="INFO: [285] Bad Block Check 26% complete." />
[009.088]: <log value="INFO: [285] Bad Block Check 29% complete." />
[009.100]: <log value="INFO: [285] Bad Block Check 31% complete." />
[009.111]: <log value="INFO: [285] Bad Block Check 34% complete." />
[009.123]: <log value="INFO: [285] Bad Block Check 36% complete." />
[009.134]: <log value="INFO: [285] Bad Block Check 39% complete." />
[009.146]: <log value="INFO: [285] Bad Block Check 41% complete." />
[009.157]: <log value="INFO: [285] Bad Block Check 43% complete." />
[009.169]: <log value="INFO: [285] Bad Block Check 46% complete." />
[009.180]: <log value="INFO: [285] Bad Block Check 48% complete." />
[009.192]: <log value="INFO: [285] Bad Block Check 51% complete." />
[009.204]: <log value="INFO: [285] Bad Block Check 53% complete." />
[009.215]: <log value="INFO: [285] Bad Block Check 56% complete." />
[009.227]: <log value="INFO: [285] Bad Block Check 58% complete." />
[009.238]: <log value="INFO: [285] Bad Block Check 61% complete." />
[009.250]: <log value="INFO: [285] Bad Block Check 63% complete." />
[009.262]: <log value="INFO: [285] Bad Block Check 65% complete." />
[009.273]: <log value="INFO: [285] Bad Block Check 68% complete." />
[009.284]: <log value="INFO: [285] Bad Block Check 70% complete." />
[009.296]: <log value="INFO: [285] Bad Block Check 73% complete." />
[009.307]: <log value="INFO: [285] Bad Block Check 75% complete." />
[009.319]: <log value="INFO: [285] Bad Block Check 78% complete." />
[009.331]: <log value="INFO: [285] Bad Block Check 80% complete." />
[009.342]: <log value="INFO: [285] Bad Block Check 83% complete." />
[009.354]: <log value="INFO: [285] Bad Block Check 85% complete." />
[009.365]: <log value="INFO: [285] Bad Block Check 87% complete." />
[009.377]: <log value="INFO: [285] Bad Block Check 90% complete." />
[009.388]: <log value="INFO: [285] Bad Block Check 92% complete." />
[009.400]: <log value="INFO: [285] Bad Block Check 95% complete." />
[009.411]: <log value="INFO: [285] Bad Block Check 97% complete." />
[009.423]: <log value="INFO: [check_projectname_exist] Invalid e_project_version" />
[009.423]: <log value="INFO: Erasing start sector 0, num sectors 0" />
[009.425]: <log value="INFO: NAND Erase 0% complete." />
[009.466]: <response value="ACK" rawmode="false" />
[009.466]: <erase a_rawdata_start_sector="15488" b_rawdata_num_sector="448" c_project_name="RG255CGL_VC" d_project_type="STD" e_project_version="RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01" vendor="quectel"/>
[009.466]: <log value="INFO: Calling handler for erase" />
[009.466]: <log value="INFO: NAND was previously open, returning existing handle 0." />
[009.473]: <log value="INFO: [check_projectname_exist] magic1=0x57464C51, magic2=0x2D524556." />
[009.473]: <log value="INFO: [check_projectname_exist] rawdata_version=V2.01." />
[009.473]: <log value="INFO: [check_projectname_exist] project_name module=RG255CGL_VA." />
[009.473]: <log value="INFO: [check_projectname_exist] project_version module=38,RG255CGLAAR01A01M4G_OCPU_BETA20230505A." />
[009.473]: <log value="INFO: [check_projectname_exist] project_version firmware=46,RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01." />
[009.473]: <log value="INFO: [check_projectname_exist] project_type module=OL." />
[009.473]: <log value="INFO: [ql_ati_version_compare] The position of RxxAxx [10:10]" />
[009.474]: <log value="ERROR: [check_projectname_exist] project version = RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01 error!" />
[009.474]: <response value="NAK" rawmode="false" />
[009.474]: firehose_protocol.c firehose_main 1372 fail
[009.474]: inf[0] ep_in -1/1024, errno = 108 (Cannot send after transport endpoint shutdown)
[009.474]: qusb_noblock_read read=-1, errno: 108 (Cannot send after transport endpoint shutdown)
[009.474]: qusb_noblock_read cur=0, min_size=1
[009.474]: Upgrade module failed.
rohit.jagtap:~/Desktop/Data/Quectel_Project/Tools/QFirehose_Linux_Android_V1.7/out$
To come out of this - I have performed a full erase using the “-e” option.
rohit.jagtap:~/Desktop/Data/Quectel_Project/Tools/QFirehose_Linux_Android_V1.7/out$ sudo ./QFirehose -f ../../../Firmware/RG255CGLABR01A04M4G_OCPU_BETA240929A_01.001.01.001/ -e
After this:
Current issues:
- AT+CFUN=1 fails with CME ERROR: 0
- AT+CSQ returns 99,99
- AT+QENG=“servingcell” returns empty
- AT+QNWINFO returns ERROR
- NET_MODE LED not blinking
- Device stuck in CFUN=5 (RF disabled)
SIM is detected correctly:
- AT+CPIN: READY
- AT+QUSIM: 1
I re-flashed the module with non-OCPU firmware - RG255CGLABR01A05M4G_A0.300.A0.300 (without -e), but the issue persists.
ATI
Quectel
RG255C-GL
Revision: RG255CGLABR01A05M4G
OK
AT+QGMR
RG255CGLABR01A05M4G_A0.300.A0.300
OK
AT+CGSN
869710030002905
OK
AT+CFUN?
+CFUN: 5
OK
AT+CFUN=1
+CME ERROR: 0
AT+CSQ
+CSQ: 99,99
OK
AT+QENG="servingcell"
OK
AT+QNWINFO
ERROR
AT+CPIN?
+CPIN: READY
OK
AT+COPS=?
ERROR
It appears that RF calibration / NV data may have been erased.
Request:
@silvia Could you please provide the procedure to recover from above issue or restore procedure of RF functionality?
Thank you.