Hello, hope you are doing well.
I have faced the issue sending USSD when connected to 4G. There’s no VoLTE, and there must be short switch to 3G/2G to send USSD. I had been working with SIM7600 before, it does this by default. But I can’t find how to achieve it for EC25. Doing it manually requires precise algorithm and error handling not to permanently lose the connection to remote device.
Can you please share how to implement this fallback automatically (the best way) or manually?
Thanks!
When nwscanmode is 1 or 2, USSD works. When it is 0 (auto), the modem immediately returns CME ERROR 30 (no service) without falling back to 3G/2G.
When nwscanmode is 1 or 2 sending USSD works properly. When nwscanmode is 0 (auto) modem immediately returns CME ERROR 30 (no service) without falling back to 3G/2G.
Dear @Eugeny,
Thank You for reaching out to us,
For the Quectel EC25 module, handling USSD while on a 4G (LTE) network without VoLTE typically requires a process called Circuit Switched Fallback (CSFB) . This allows the module to temporarily switch to 2G or 3G to perform the request.
Please try following this steps:
- Execute: AT+QCFG=“ims/ut”,0 .
◦ This forces the module to use CSFB for supplementary services.
◦ Note: This command usually requires a reboot (AT+CFUN=1,1 ) to take effect
- Check current mode: AT+QCFG=“nwscanmode” .
◦ If it returns 3 (LTE only), change it to 0 (AUTO) to allow fallback: AT+QCFG=“nwscanmode”,0,1 .
- Execute USSD : With the above settings, the module should automatically handle the switch.
◦ Enable USSD result presentation: AT+CUSD=1 .
Furthermore, If automatic CSFB is failing due to local network complexities, you can implement a manual algorithm as below:
-
Pre-check : Ensure you have registered on the network (AT+CREG? returns 1 or 5).
-
Switch to 3G/2G : Force the module to WCDMA/GSM.
-
AT+QCFG=“nwscanmode”,2,1 (WCDMA only) or 1,1 (GSM only).
-
Wait for Registration : Periodically poll AT+CREG? until the module registers on the lower technology (typically 30–60 seconds).
-
Send USSD : Use AT+CUSD as described above.
-
Restore 4G : Immediately switch back to LTE or Auto mode.
-
AT+QCFG=“nwscanmode”,0,1 .
Error Handling : If the USSD or registration fails, implement a watchdog timer. If the module does not return to 4G within a specific window (e.g., 2 minutes), trigger a full functionality reset using AT+CFUN=1,1
Send the USSD request: *AT+CUSD=1,"xxx#",15
Thank You and Have a Great Day!
Hello Alwin, thank you so much!
It gives ERROR, while it is listed in the AT+QCFG=? listing. I even did copy-paste from the listing, hoping I type it wrongly, but no…
Just “ims” does not give error, but it also does not help.
FW is EC25EFAR08A03M4G.
For some reason I can’t edit my posts
AT+QCFG="ims"
+QCFG: "ims",1,0
which means IMS is enabled and VoLTE is disabled.
The copy-and-paste will have included unicode double quotation marks, whereas you need to use ASCII values.
Please try a copy-and-paste of this version, with corrected values for the quotes:
AT+QCFG="ims/ut",0
(I’m using “Preformatted text” here.)
Thank you very much, but no difference. I also have R06 revision, and it behaves the same way. Copy-pasted as you said. I am certain I was entering manually properly before too - from the terminal window.
ATI
Quectel
EC25
Revision: EC25EFAR06A10M4G
OK
AT
OK
AT+QCFG="ims/ut",0
ERROR
It seems I am not alone with this issue…
I am stuck now. Playing with this R06 module. While it behaves absolutely the same say regarding ims/ut, it is actually ABLE to send USSD, and I see it falling back. So maybe there’s something wrong with R08A03 one?
Unable to explain but now it works on all modules. No idea what have happened. Can’t say for mobile operator, maybe something has changed in their environment. Thanks!