EG25 to EG25-G migration / EG25-G not registering to network

I previously tested the EG25 with T-Mobile service as part of an external modem solution from Multitech (Multiconnect microCell), and initial testing was successful.

Multitech has since replaced the EG25 with an EG25-G in the latest revision of this device.

Using the exact same SIM and the exact same initialization used in my previously successful test, I cannot get the EG25-G to connect. More specifically, I cannot even get it to successfully register on the T-Mobile network.

I am using the modem with PPP (serial modem mode) and am initializing via AT commands. The response to AT commands for the EG25-G (BAD) is as follows:

BAD EG25-G (bad CREG, no connect):

ATI
Quectel
EG25-G(D)
Revision: EG25GGDR07A08M2G

OK
AT+CFUN?
+CFUN: 1

OK
AT+CGDCONT?
+CGDCONT: 1,“IP”,“b2b.static”,“0.0.0.0”,0,0,0,0
+CGDCONT: 2,“IPV4V6”,“ims”,“0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0”,0,0,0,0
+CGDCONT: 3,“IPV4V6”,“sos”,“0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0”,0,0,0,1
+CGDCONT: 4,“IPV4V6”,“tmus”,“0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0”,0,0,0,0

OK
AT+CPIN?
+CPIN: READY

OK
AT+COPS?
+COPS: 0

OK
AT+CREG?
+CREG: 0,3

OK
AT+CGREG?
+CGREG: 0,3

OK

I note from this that CREG is returning 3, which means the device is not registered on the network. Further COPS does not return a carrier (operator) name.

For comparison, a successful initialization and connect with the EG25 (including the subsequent successful PPP connection) is as follows:

GOOD EG25 (connects via PPPD):

ATI
Quectel
EG25
Revision: EG25GGBR07A08M2G

OK
AT+CFUN?
+CFUN: 1

OK
AT+CGDCONT?
+CGDCONT: 1,“IP”,“b2b.static”,“0.0.0.0”,0,0,0,0
+CGDCONT: 2,“IPV4V6”,“ims”,“0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0”,0,0,0,0
+CGDCONT: 3,“IPV4V6”,“sos”,“0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0”,0,0,0,1
+CGDCONT: 4,“IPV4V6”,“tmus”,“0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0”,0,0,0,0

OK
AT+CPIN?
+CPIN: READY

OK
AT+COPS?
+COPS: 0,0,“T-Mobile”,7

OK
AT+CREG?
+CREG: 0,1

OK
AT+CGREG?
+CGREG: 0,1

OK

SUCCESSFUL connection:
reiengine@raspberrypi:~ $ sudo pppd /dev/ttyUSB2 115200 connect “chat -v -s -t 20 ABORT ‘BUSY’ ABORT ‘ERROR’ ABORT ‘NO ANSWER’ ABORT ‘NO CARRIER’ ‘’ AT OK ATD99**1# CONNECT ‘’” debug local usepeerdns defaultroute noipdefault ipcp-accept-local ipcp-accept-remote nodetach noauth lcp-echo-interval 20 lcp-echo-failure 3 noipv6 disconnect "chat -t 10 -v -s ABORT ‘BUSY’ ABORT ‘ERROR’ ABORT ‘NO DIALTONE’ ‘’ ‘\K’ ‘’ ‘+++ATH’ SAY ‘PDP context detached’ " &
[1] 3244
reiengine@raspberrypi:~ $ abort on (BUSY)
abort on (ERROR)
abort on (NO ANSWER)
abort on (NO CARRIER)
send (AT^M)
expect (OK)
AT^M^M
OK
– got it

send (ATD991#^M)
expect (CONNECT)
^M
ATD
99
**1#^M^M
CONNECT
– got it

send (^M)
Script chat -v -s -t 20 ABORT ‘BUSY’ ABORT ‘ERROR’ ABORT ‘NO ANSWER’ ABORT ‘NO CARRIER’ ‘’ AT OK ATD99**1# CONNECT ‘’ finished (pid 3246), status = 0x0
Serial connection established.
using channel 14
Using interface ppp0
Connect: ppp0 <–> /dev/ttyUSB2
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x39a58719> ]
rcvd [LCP ConfReq id=0x0 <asyncmap 0x0> <magic 0x2b3ea769> ]
sent [LCP ConfNak id=0x0 ]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x39a58719> ]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x2b3ea769> ]
sent [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x2b3ea769> ]
sent [LCP EchoReq id=0x0 magic=0x39a58719]
sent [PAP AuthReq id=0x1 user=“raspberrypi” password=]
rcvd [LCP DiscReq id=0x2 magic=0x2b3ea769]
rcvd [LCP EchoRep id=0x0 magic=0x2b3ea769 39 a5 87 19]
rcvd [PAP AuthAck id=0x1 “”]
PAP authentication succeeded
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
rcvd [LCP ProtRej id=0x3 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f]
Protocol-Reject for ‘Compression Control Protocol’ (0x80fd) received
rcvd [IPCP ConfReq id=0x0]
sent [IPCP ConfNak id=0x0 <addr 0.0.0.0>]
rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>]
sent [IPCP ConfReq id=0x2 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfAck id=0x1]
rcvd [IPCP ConfNak id=0x2 <addr 162.191.169.129> <ms-dns1 8.8.8.8> <ms-dns2 8.8.4.4>]
sent [IPCP ConfReq id=0x3 <addr 162.191.169.129> <ms-dns1 8.8.8.8> <ms-dns2 8.8.4.4>]
rcvd [IPCP ConfAck id=0x3 <addr 162.191.169.129> <ms-dns1 8.8.8.8> <ms-dns2 8.8.4.4>]
Could not determine remote IP address: defaulting to 10.64.64.64
Script /etc/ppp/ip-pre-up started (pid 3252)
Script /etc/ppp/ip-pre-up finished (pid 3252), status = 0x0
not replacing default route to wlan0 [192.168.0.254]
local IP address 162.191.169.129
remote IP address 10.64.64.64
primary DNS address 8.8.8.8
secondary DNS address 8.8.4.4
Script /etc/ppp/ip-up started (pid 3256)
Script /etc/ppp/ip-up finished (pid 3256), status = 0x0

Both tests were using the same SIM and service.

Can anyone advise what might be different between the EG25 and EG25-G, and what configuration setting I should be checking?

In the manufactures documentation (Multitech), most of their technical documentation is just the Quectel provided guides.

The one odd thing is that in their user guide for the devices is they reference a command to select the internal firmware based on carrier, AT#FWSWITCH, but I can find no reference to this command in the Quectel literature and the module does not appear to support it (just gives ERROR). The default was supposed to be “AT&T/other” and the only other option is “Verizon” so I assume the default should work with T-Mobile.

Please advise.

Hi @sneal
I think you can use AT+COPS=? Query the list of scanned carriers and check whether the PLMN of T-Mobile exists.