Hello. I have several Globalgig eSIMs that are activated successfully. I want to uses these with several Quectel EC25-As and part of a new product.
I am running this firmware version on the EC25-As:
EC25AFAR05A07M4G_01.001.01.001
The APN for this service is ‘mbb.mobi-data.com’. I have read quite a few blog posts about how to get this to work such as https://1ot.com/resources/blog/at-commands-set-quectel-ec25-e-up-for-esim.
No matter what I do, after enabling BIP mode, as well as roaming, I always get ERROR when I attempt to activate the PDP context with this command:
CGACT=1,1
How can I get this to work? Thank you.
Here are my attempts:
Attempt #1
AT+CFUN=0: “Power Modem on”
AT+CFUN=1: “Power Moem off”
AT+QGMR: “Get version”
AT+QCFG=“roamservice”,1: “Disable roaming”
AT+CMEE=2: “Enable verbose debugging”
AT+CREG=1: “Enable network registration”
AT+QCFG=“bip/auth”,1: “Enable BIP mode”
AT+CGDCONT=1,“IP”,“”: “Set APN”
AT+CGATT?: “Get GPRS service status”
AT+QCFG=“roamservice”: “Get roaming status”
AT+CGACT=1,1: “Activate PDP context”
AT+CGDCONT?: “Get PDP context”
AT+QCFG=“roamservice”,2: “Enable roaming”
AT+CREG?:“Get registration status”
Running command: b’AT+CFUN=0\r’ | Power Modem on
Response: AT+CFUN=0
OK
Running command: b’AT+CFUN=1\r’ | Power Moem off
Response: AT+CFUN=1
OK
Running command: b’AT+QGMR\r’ | Get version
Response: AT+QGMR
EC25AFAR05A07M4G_01.001.01.001
OK
Running command: b’AT+QCFG=“roamservice”,1\r’ | Disable roaming
Response: AT+QCFG=“roamservice”,1
OK
Running command: b’AT+CMEE=2\r’ | Enable verbose debugging
Response: AT+CMEE=2
OK
Running command: b’AT+CREG=1\r’ | Enable network registration
Response: AT+CREG=1
OK
Running command: b’AT+QCFG=“bip/auth”,1\r’ | Enable BIP mode
Response: AT+QCFG=“bip/auth”,1
OK
Running command: b’AT+CGDCONT=1,“IP”,“”\r’ | Set APN
Response: AT+CGDCONT=1,“IP”,“”
OK
Running command: b’AT+CGATT?\r’ | Get GPRS service status
Response: AT+CGATT?
+CGATT: 0
OK
Running command: b’AT+QCFG=“roamservice”\r’ | Get roaming status
Response: AT+QCFG=“roamservice”
+QCFG: “roamservice”,1
OK
Running command: b’AT+CGACT=1,1\r’ | Activate PDP context
Response: AT+CGACT=1,1
ERROR
Running command: b’AT+CGDCONT?\r’ | Get PDP context
Response: AT+CGDCONT?
+CGDCONT: 1,“IP”,“”,“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
OK
Running command: b’AT+QCFG=“roamservice”,2\r’ | Enable roaming
Response: AT+QCFG=“roamservice”,2
OK
Running command: b’AT+CREG?\r’ | Get registration status
Response: AT+CREG?
+CREG: 1,2
OK
Attempt #2
AT+CFUN=0 Power Modem on
AT+CFUN=1 Power Moem off
AT+QGMR Get version
AT+QCFG=“roamservice”,1 Disable roaming
AT+CMEE=2 Enable verbose debugging
AT+CREG=1 Enable network registration
AT+QCFG=“bip/auth”,1 Enable BIP mode
AT+CGDCONT=1,“IP”,“” Set APN
AT+QCFG=“roamservice”,2 Enable roaming
AT+CGACT=1,1 Activate PDP context
AT+CGDCONT? Get PDP context
AT+CREG? Get registration status
Running command: b’AT+CFUN=0\r’ | Power Modem on
Response: AT+CFUN=0
OK
Running command: b’AT+CFUN=1\r’ | Power Moem off
Response: AT+CFUN=1
OK
Running command: b’AT+QGMR\r’ | Get version
Response: AT+QGMR
EC25AFAR05A07M4G_01.001.01.001
OK
Running command: b’AT+QCFG=“roamservice”,1\r’ | Disable roaming
Response: AT+QCFG=“roamservice”,1
OK
Running command: b’AT+CMEE=2\r’ | Enable verbose debugging
Response: AT+CMEE=2
OK
Running command: b’AT+CREG=1\r’ | Enable network registration
Response: AT+CREG=1
OK
Running command: b’AT+QCFG=“bip/auth”,1\r’ | Enable BIP mode
Response: AT+QCFG=“bip/auth”,1
OK
Running command: b’AT+CGDCONT=1,“IP”,“”\r’ | Set APN
Response: AT+CGDCONT=1,“IP”,“”
OK
Running command: b’AT+QCFG=“roamservice”,2\r’ | Enable roaming
Response: AT+QCFG=“roamservice”,2
OK
Running command: b’AT+CGACT=1,1\r’ | Activate PDP context
Response: AT+CGACT=1,1
ERROR
Running command: b’AT+CGDCONT?\r’ | Get PDP context
Response: AT+CGDCONT?
+CGDCONT: 1,“IP”,“”,“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
OK
Running command: b’AT+CREG?\r’ | Get registration status
Response: AT+CREG?
+CREG: 1,2
OK
Attempt #3
AT+QGMR Get version
AT+QSTK=0 Disable toolkit
AT+QESIM=“list” Check eSIM
AT+QCFG=“roamservice”,2 Enable roaming
AT+CGDCONT=1,“IP”,“mbb.mobi-data.com” Set APN
AT+QCFG=“bip/auth”,1 Enable BIP
AT+QCFG=“nwscanmode”,3,1 Enable LTE only
AT+QENG=“servingcell” Enable BIP
AT+CGACT=1,1 Activate PDP context
AT+QCFG=“roamservice” Get roaming status
AT+CGDCONT? Get PDP context
AT+CREG? Get registration status
Running command: b’AT+QGMR\r’ | Get version
Response: AT+QGMR
EC25AFAR05A07M4G_01.001.01.001
OK
Running command: b’AT+QSTK=0\r’ | Disable toolkit
Response: AT+QSTK=0
OK
Running command: b’AT+QESIM=“list”\r’ | Check eSIM
Response: AT+QESIM=“list”
ERROR
Running command: b’AT+QCFG=“roamservice”,2\r’ | Enable roaming
Response: AT+QCFG=“roamservice”,2
OK
Running command: b’AT+CGDCONT=1,“IP”,“mbb.mobi-data.com”\r’ | Set APN
Response: AT+CGDCONT=1,“IP”,“mbb.mobi-data.com”
OK
Running command: b’AT+QCFG=“bip/auth”,1\r’ | Enable BIP
Response: AT+QCFG=“bip/auth”,1
OK
Running command: b’AT+QCFG=“nwscanmode”,3,1\r’ | Enable LTE only
Response: AT+QCFG=“nwscanmode”,3,1
OK
Running command: b’AT+QENG=“servingcell”\r’ | Enable BIP
Response: AT+QENG=“servingcell”
+QENG: “servingcell”,“SEARCH”
OK
Running command: b’AT+CGACT=1,1\r’ | Activate PDP context
Response: AT+CGACT=1,1
ERROR
Running command: b’AT+QCFG=“roamservice”\r’ | Get roaming status
Response: AT+QCFG=“roamservice”
+QCFG: “roamservice”,2
OK
Running command: b’AT+CGDCONT?\r’ | Get PDP context
Response: AT+CGDCONT?
+CGDCONT: 1,“IP”,“mbb.mobi-data.com”,“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
OK
Running command: b’AT+CREG?\r’ | Get registration status
Response: AT+CREG?
+CREG: 1,2
OK
Attempt #4
AT&F0 Reset to factory defaults
AT+CFUN=0 Shutdown Modem
AT+CFUN=1 Startup Modem
AT+CGMI Return the modem’s manufacturer
AT+CGMM Return the modem’s model number
AT+CGSN Return the modem’s serial number
AT+CPIN? Confirm the modem’s SIM is ready
AT+CMEE=2 Enable verbose debugging
AT+CGDCONT=1,“IP”,“mbb.mobi-data.com” Define PDP context
AT+QCFG=“bip/auth”,1 Enable BIP mode
AT+COPS=0 Enable automatic network searching
AT+QCFG=“roamservice”,2,1 Enable roaming
AT+CGACT=1,1 Activate PDP context
AT+QCFG=“roamservice” Get roaming status
AT+CGDCONT? Get PDP context
AT+CEREG? Get registration status2024-01-22 01:52:08,664:INFO:Running modem command: b’AT&F0\r’ | Reset to factory defaults
2024-01-22 01:52:28,681:INFO:Modem response: AT&F0
OK2024-01-22 01:52:28,681:INFO:Running modem command: b’AT+CFUN=0\r’ | Shutdown Modem
2024-01-22 01:52:48,699:INFO:Modem response: AT+CFUN=0
OK2024-01-22 01:52:48,700:INFO:Running modem command: b’AT+CFUN=1\r’ | Startup Modem
2024-01-22 01:53:08,721:INFO:Modem response: AT+CFUN=1
OK2024-01-22 01:53:08,722:INFO:Running modem command: b’AT+CGMI\r’ | Return the modem’s manufacturer
2024-01-22 01:53:28,743:INFO:Modem response: AT+CGMI
QuectelOK
2024-01-22 01:53:28,743:INFO:Running modem command: b’AT+CGMM\r’ | Return the modem’s model number
2024-01-22 01:53:48,755:INFO:Modem response: AT+CGMM
EC25OK
2024-01-22 01:53:48,756:INFO:Running modem command: b’AT+CGSN\r’ | Return the modem’s serial number
2024-01-22 01:54:08,775:INFO:Modem response: AT+CGSN
860858060814522OK
2024-01-22 01:54:08,776:INFO:Running modem command: b’AT+CPIN?\r’ | Confirm the modem’s SIM is ready
2024-01-22 01:54:28,789:INFO:Modem response: AT+CPIN?
+CPIN: READYOK
2024-01-22 01:54:28,789:INFO:Running modem command: b’AT+CMEE=2\r’ | Enable verbose debugging
2024-01-22 01:54:48,811:INFO:Modem response: AT+CMEE=2
OK2024-01-22 01:54:48,811:INFO:Running modem command: b’AT+CGDCONT=1,“IP”,“mbb.mobi-data.com”\r’ | Define PDP context
2024-01-22 01:55:08,824:INFO:Modem response: AT+CGDCONT=1,“IP”,“mbb.mobi-data.com”
OK2024-01-22 01:55:08,824:INFO:Running modem command: b’AT+QCFG=“bip/auth”,1\r’ | Enable BIP mode
2024-01-22 01:55:28,846:INFO:Modem response: AT+QCFG=“bip/auth”,1
OK2024-01-22 01:55:28,846:INFO:Running modem command: b’AT+COPS=0\r’ | Enable automatic network searching
2024-01-22 01:55:48,868:INFO:Modem response: AT+COPS=0
OK2024-01-22 01:55:48,868:INFO:Running modem command: b’AT+QCFG=“roamservice”,2,1\r’ | Enable roaming
2024-01-22 01:56:08,890:INFO:Modem response: AT+QCFG=“roamservice”,2,1
OK2024-01-22 01:56:08,890:INFO:Running modem command: b’AT+CGACT=1,1\r’ | Activate PDP context
2024-01-22 01:56:28,911:INFO:Modem response: AT+CGACT=1,1
+CME ERROR: no network service2024-01-22 01:56:28,912:INFO:Running modem command: b’AT+QCFG=“roamservice”\r’ | Get roaming status
2024-01-22 01:56:48,933:INFO:Modem response: AT+QCFG=“roamservice”
+QCFG: “roamservice”,2OK
2024-01-22 01:56:48,934:INFO:Running modem command: b’AT+CGDCONT?\r’ | Get PDP context
2024-01-22 01:57:08,955:INFO:Modem response: AT+CGDCONT?
+CGDCONT: 1,“IP”,“mbb.mobi-data.com”,“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,1OK
2024-01-22 01:57:08,956:INFO:Running modem command: b’AT+CEREG?\r’ | Get registration status
2024-01-22 01:57:28,977:INFO:Modem response: AT+CEREG?
+CEREG: 0,2OK
Here is my script to get an IP Address with raw_ip and libqmi on Linux:
#!/bin/bash
Define the interface
INTERFACE=$1
Define the APN
CELL_APN=$2
Define the device
DEVICE=“/dev/cdc-wdm0”
Error handler
function handle_cell_error {
echo “*** Error with cellular connection! [Exiting with: $1]”
exit $1
}
echo “*** Setting up cellular connection …”
ip link set dev “${INTERFACE}” down || handle_cell_error “$?”
ifconfig “${INTERFACE}” down || handle_cell_error “$?”
qmi-network ${DEVICE} stop || handle_cell_error “$?”
echo ‘N’ | tee “/sys/class/net/${INTERFACE}/qmi/raw_ip” || handle_cell_error “$?”
echo “Y” > “/sys/class/net/${INTERFACE}/qmi/raw_ip” || handle_cell_error “$?”
qmi-network “${DEVICE}” start || handle_cell_error “$?”
qmicli -d /dev/cdc-wdm0 --device-open-qmi --wds-reset
qmicli -d /dev/cdc-wdm0 --device-open-qmi --wds-start-network=“ip-type=4” --client-no-release-cid
sleep 1
udhcpc -q -f -i “${INTERFACE}” || handle_cell_error “$?”
ip link set dev “${INTERFACE}” up || handle_cell_error “$?”
ifconfig “${INTERFACE}” up || handle_cell_error “$?”
ping -I “${INTERFACE}” -c 3 google.com || handle_cell_error “$?”
echo “*** Cellular connection successfully established …” || handle_cell_error “$?”
exit 0
./start-cellular.sh wwan0 mbb.mobi-data.com
*** Setting up cellular connection …
Profile at ‘/etc/qmi-network.conf’ not found…
Network already stopped
Clearing state at /tmp/qmi-network-state-cdc-wdm0…
N
Profile at ‘/etc/qmi-network.conf’ not found…
Checking data format with 'qmicli -d /dev/cdc-wdm0 --wda-get-data-format '…
Device link layer protocol retrieved: raw-ip
Getting expected data format with ‘qmicli -d /dev/cdc-wdm0 --get-expected-data-format’…
Expected link layer protocol retrieved: raw-ip
Device and kernel link layer protocol match: raw-ip
Starting network with 'qmicli -d /dev/cdc-wdm0 --wds-start-network= --client-no-release-cid '…
error: couldn’t start network: QMI protocol error (14): ‘CallFailed’
call end reason (3): generic-no-service
verbose call end reason (3,2001): [cm] no-service
Saving state at /tmp/qmi-network-state-cdc-wdm0… (CID: 20)
error: network start failed, no packet data handle
Clearing state at /tmp/qmi-network-state-cdc-wdm0…
*** Error with cellular connection! [Exiting with: 2]