Firmware updates for Quectel cellular modules are typically available through Quectel support. Please reach out to your Quectel representative or Quectel Support for assistance with firmware updates.
Please refer to the main Knowlegdebase page for modem-independent configuration tips.
Super SIM does not support NB-IoT.
If you are connecting via LTE, only configure the modem's Radio Access Technology (RAT) preference to Cat-M1: issue the Quectel-specific command AT+QCFG="iotopmode"
with its default setting, 0
, the first numeric parameter of the command below.
AT+QCFG="iotopmode",0,1
If iotopmode
is set to 1
(NB-IoT), the modem will not be able to connect to Cat-M1.
If you wish to limit comms to LTE only, i.e., disable 2G (GSM), issue:
AT+QCFG="nwscanmode",3,1
The first numeric parameter, 3
, indicates LTE only; a value of 1
sets the modem to GSM only. The default, 0
, tells the modem to select the RAT automatically. The setting is applied immediately.
To set the modem to force data-centric attachment — ie., do not make circuit-switched attachments — issue AT+QCFG="servicedomain",1,1
.
The first numeric parameter is the mode:
1
= Packet Switch (PS) attach only.
2
= Circuit Switch and Packet Switch (CS/PS) attach.
This setting is non-volatile.
To configure the Unsolicited Result Code (URC) serial (UART) delivery channel to uart1
, issue AT+QURCCFG="urcport","uart1"
.
To perform a ping to a remote host, issue AT+QPING=1,"<TARGET_IP_ADDRESS_OR_NAME>"
. This will yield, for example:
1+QPING: 0,"8.8.8.8",32,93,2552+QPING: 0,"8.8.8.8",32,78,2553+QPING: 0,"8.8.8.8",32,80,2554+QPING: 0,"8.8.8.8",32,80,2555+QPING: 0,4,4,0,78,93,82
To issue an HTTP GET
request using the built-in HTTP client, run the following commands:
AT+QHTTPCFG="contextid",1
AT+QHTTPCFG="responseheader",1
AT+QIACT=1
AT+QHTTPURL=21
This sets the modem to receive, prompted by the output
CONNECT
. The first parameter is the number of bytes the modem should expect to receive: it will end input after receiving this number of characters. The value of
21
comes from the URL below. The URL you provide must include the protocol, ie.
http://
.
CONNECT
, enter the URL. For example:
http://ifconfig.co/ip
GET
request:
AT+QHTTPGET
AT+QHTTPREAD
The request will look like this:
1HTTP/1.1 200 OK2Date: Sat, 28 Nov 2020 18:38:52 GMT3Content-Type: text/plain; charset=utf-84Content-Length: 155Connection: keep-alive6Set-Cookie: __cfduid=d33c30006be23245591d83133631425031606588732; expires=Mon, 28-Dec-20 18:38:52 GMT; path=/; domain=.ifconfig.co; HttpOnly; SameSite=Lax7Strict-Transport-Security: max-age=15768000; includeSubdomains; preload8CF-Cache-Status: DYNAMIC9cf-request-id: 06b1bfaa91000025ed8fa4600000000110Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?s=8eYWG5vobibOeI8xWFxNSGJpELSCSthW9aAclBXw3esKOGBsYPT4izdckGI2kpOW%2BA7KOhi3OFk%2FLUab3RpQvKu5EYYWLD%2B2fSxV4Q%3D%3D"}],"group":"cf-nel","max_age":604800}11NEL: {"report_to":"cf-nel","max_age":604800}12Server: cloudflare13CF-RAY: 5f96355748c225ed-IAD141599.84.181.201617OK18+QHTTPREAD: 0
This example uses a service that returns the IP address of the requester.
If you need to provide extra HTTP request headers, such Authorization: Basic <API_KEY>
, or a custom header required by your server, issue AT+QHTTPCFG="requestheader",1
to tell the modem to use the custom header that you will provide when you make each request. You must create a full HTTP request header separated from your request body by <CR><LF>
characters. Whether you make a POST
or a GET
request, include a byte-count parameter that totals the header plus the body (POST
request) or header alone (GET
request). For example, AT+QHTTPGET=60,512
for a 512-byte header (including the end-of-header <CR><LF>
). The 60
is a timeout. This defaults to 60 seconds but must be included if a second parameter is also present.
You can check the status of a PDP context with AT+QIACT?
. If activated, this will return the context ID; 0
or 1
whether the context is inactive or active; 1
or 2
whether the context is using IPv4 or IPv6; and the device's IP address.
To issue an HTTPS GET
request using the built-in HTTP client, follow the same procedure outlined above but with extra steps to configure SSL.
AT+QHTTPCFG="contextid",1
AT+QHTTPCFG="responseheader",1
AT+QIACT=1
AT+QHTTPCFG="sslctxid",1
AT+QSSLCFG="sslversion",1,3
AT+QSSLCFG="ciphersuite",1,0xFFFF
0
, i.e., no CA certificate is required:
AT+QSSLCFG="seclevel"=0
AT+QHTTPURL=70
This sets the modem to receive, prompted by the output
CONNECT
. The parameter is the number of bytes the modem should expect to receive: it will end input after receiving this number of characters. The value of
70
comes from the URL below. The URL you provide must include the protocol, ie.
https://
.
CONNECT
, enter the URL. For example:
https://twilio-cms-prod.s3.amazonaws.com/documents/super-sim-test.json
GET
request:
AT+QHTTPGET
AT+QHTTPREAD
The request will look something like this:
1HTTP/1.1 200 OK2Date: Thu, 19 May 2022 10:23:25 GMT3Last-Modified: Thu, 19 May 2022 10:05:25 GMT4Accept-Ranges: bytes5Content-Type: application/json6Server: AmazonS37Content-Length: 12889{10"userId": 1,11"id": 5,12"title": "laboriosam mollitia et enim quasi adipisci quia provident illum",13"completed": false }14OK1516+QHTTPREAD: 0
Sending data from the modem to an Internet-hosted API follows the paths outlined above for the HTTP and HTTPS protocols: call AT+QHTTPOST
instead of AT+QHTTPGET
.
Optionally, the QHTTPOST
command takes a parameter indicating the amount of data you are sending. The modem uses this to read that number of bytes via the UART over which your application is communicating with it. If you are providing a custom HTTP request header, remember to include its length too.
While the BG95 and 96 support low-power modes for eDRX and PSM, support for these features will vary by visited network and location. The commands to enable for each of these are:
1AT+CEDRXS=12AT+CPSMS=1
See also AT+QPTWEDRXS
and AT+CEDRXRDP
in the BG95/96 AT Commands Manual for further options.
Using these features, but especially PSM, can make the modem inaccessible to the terminal during its sleep time. It's best to experiment with these features locally. To disable all power saving, send:
1AT+CEDRXS=02AT+CPSMS=0
You can learn more about implementing these modes in our low-power usage documentation.
The BG95 and BG96 will connect to 2G if they are unable to connect to Cat-M1 and 2G has not been disabled. Unfortunately, if Cat-M1 coverage is restored, or the device moves into an area where Cat-M1 is available, the modem will nonetheless continue to connect to 2G. This is because Quectel modems favor the most recently used RAT when they reconnect, and this value is persisted in non-volatile memory.
To avoid this issue, you can use the following AT command in your application to clear the stored RAT by resetting the modem's RAT searching sequence:
AT+QCFG="nwscanseq",020103,1
The parameter 020103
represents the RAT sequence: 02
is Cat-M1, 01
is GSM, and 03
is NB-IoT. Super SIM is not compatible with NB-IoT, so this is placed last.
The final 1
forces the sequence to be applied immediately, avoiding the need to reboot the modem. Leave this parameter off, or set it to 0
, to impose the new sequence on the next power cycle.
• BG96 AT Commands Manual Quectel sign-in required • BG95, BG77, and BG600L Series AT Commands Manual Quectel sign-in required
If you wish to limit communications to LTE only, i.e., to disable 2G (GSM), issue this command:
AT+QCFG="nwscanmode",3
This setting will be applied immediately.
To instruct the modem to initiate data-centric attachments only — ie., not to make voice-oriented circuit-switched attachments too, which is the default — issue:
AT+QCFG="servicedomain",1
This setting will be applied immediately.
To configure the Unsolicited Result Code (URC) serial (UART) delivery channel to uart1
, issue AT+QURCCFG="urcport","uart1"
.
To perform a ping to a remote host, issue AT+QPING=1,"<TARGET_IP_ADDRESS_OR_NAME>"
. This will yield, for example:
1+QPING: 0,"8.8.8.8",32,172,2552+QPING: 0,"8.8.8.8",32,212,2553+QPING: 0,"8.8.8.8",32,376,2554+QPING: 0,"8.8.8.8",32,174,2555+QPING: 0,4,4,0,172,376,233
To issue an HTTP GET
request using the built-in HTTP client, run the following commands:
AT+QHTTPCFG="contextid",1
AT+QHTTPCFG="responseheader",1
AT+QIACT=1
AT+QHTTPURL=21
This sets the modem to receive, prompted by the output
CONNECT
. The first parameter is the number of bytes the modem should expect to receive: it will end input after receiving this number of characters. The URL you provide must include the protocol, ie.
http://
.
CONNECT
, enter the URL. For example:
http://ifconfig.co/ip
GET
request:
AT+QHTTPGET
AT+QHTTPREAD
The request will look like this:
1HTTP/1.1 200 OK2Date: Sat, 28 Nov 2020 18:38:52 GMT3Content-Type: text/plain; charset=utf-84Content-Length: 155Connection: keep-alive6Set-Cookie: __cfduid=d33c30006be23245591d83133631425031606588732; expires=Mon, 28-Dec-20 18:38:52 GMT; path=/; domain=.ifconfig.co; HttpOnly; SameSite=Lax7Strict-Transport-Security: max-age=15768000; includeSubdomains; preload8CF-Cache-Status: DYNAMIC9cf-request-id: 06b1bfaa91000025ed8fa4600000000110Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?s=8eYWG5vobibOeI8xWFxNSGJpELSCSthW9aAclBXw3esKOGBsYPT4izdckGI2kpOW%2BA7KOhi3OFk%2FLUab3RpQvKu5EYYWLD%2B2fSxV4Q%3D%3D"}],"group":"cf-nel","max_age":604800}11NEL: {"report_to":"cf-nel","max_age":604800}12Server: cloudflare13CF-RAY: 5f96355748c225ed-IAD141599.84.181.201617OK18+QHTTPREAD: 0
This example uses a service that returns the IP address of the requester.
If you need to provide extra HTTP request headers, such Authorization: Basic <API_KEY>
, or a custom header required by your server, issue AT+QHTTPCFG="requestheader",1
to tell the modem to use the custom header that you will provide when you make each request. You must create a full HTTP request header separated from your request body by <CR><LF>
characters. Whether you make a POST
or a GET
request, include a byte-count parameter that totals the header plus the body (POST
request) or header alone (GET
request). For example, AT+QHTTPGET=60,512
for a 512-byte header (including the end-of-header <CR><LF>
). The 60
is a timeout. This defaults to 60 seconds but must be included if a second parameter is also present.
You can check the status of a PDP context with AT+QIACT?
. If activated, this will return the context ID; 0
or 1
whether the context is inactive or active; 1
or 2
whether the context is using IPv4 or IPv6; and the device's IP address.
To issue an HTTPS GET
request using the built-in HTTP client, follow the same procedure outlined above but with extra steps to configure SSL.
AT+QHTTPCFG="contextid",1
AT+QHTTPCFG="responseheader",1
AT+QIACT=1
AT+QHTTPCFG="sslctxid",1
AT+QSSLCFG="sslversion",1,3
AT+QSSLCFG="ciphersuite",1,0xFFFF
0
, i.e., no CA certificate is required:
AT+QSSLCFG="seclevel"=0
AT+QHTTPURL=70
This sets the modem to receive, prompted by the output
CONNECT
. The parameter is the number of bytes the modem should expect to receive: it will end input after receiving this number of characters. The value of
70
comes from the URL below. The URL you provide must include the protocol, ie.
https://
.
CONNECT
, enter the URL. For example:
https://twilio-cms-prod.s3.amazonaws.com/documents/super-sim-test.json
GET
request:
AT+QHTTPGET
AT+QHTTPREAD
The request will look something like this:
1HTTP/1.1 200 OK2Date: Thu, 19 May 2022 10:23:25 GMT3Last-Modified: Thu, 19 May 2022 10:05:25 GMT4Accept-Ranges: bytes5Content-Type: application/json6Server: AmazonS37Content-Length: 12889{10"userId": 1,11"id": 5,12"title": "laboriosam mollitia et enim quasi adipisci quia provident illum",13"completed": false }14OK1516+QHTTPREAD: 0
Sending data from the modem to an Internet-hosted API follows the paths outlined above for the HTTP and HTTPS protocols: call AT+QHTTPOST
instead of AT+QHTTPGET
.
Optionally, the QHTTPOST
command takes a parameter indicating the amount of data you are sending. The modem uses this to read that number of bytes via the UART over which your application is communicating with it. If you are providing a custom HTTP request header, remember to include its length too.
The EG21-G does not support eDRX and PSM.
• EG21-G AT Commands Manual Quectel sign-in required
If you wish to limit communications to LTE only, i.e., to disable 2G (GSM), issue this command:
AT+QCFG="nwscanmode",3
This setting will be applied immediately.
To instruct the modem to initiate data-centric attachments only — ie., not to make voice-oriented circuit-switched attachments too, which is the default — issue:
AT+QCFG="servicedomain",1
This setting will be applied immediately.
To configure the Unsolicited Result Code (URC) serial (UART) delivery channel to uart1
, issue AT+QURCCFG="urcport","uart1"
.
To perform a ping to a remote host, issue AT+QPING=1,"<TARGET_IP_ADDRESS_OR_NAME>"
. This will yield, for example:
1+QPING: 0,"8.8.8.8",32,167,2552+QPING: 0,"8.8.8.8",32,162,2553+QPING: 0,"8.8.8.8",32,164,2554+QPING: 0,"8.8.8.8",32,162,2555+QPING: 0,4,4,0,162,167,163
To issue an HTTP GET
request using the built-in HTTP client, run the following commands:
AT+QHTTPCFG="contextid",1
AT+QHTTPCFG="responseheader",1
AT+QIACT=1
AT+QHTTPURL=21
This sets the modem to receive, prompted by the output
CONNECT
. The first parameter is the number of bytes the modem should expect to receive: it will end input after receiving this number of characters. The URL you provide must include the protocol, ie.
http://
.
CONNECT
, enter the URL. For example:
http://ifconfig.co/ip
GET
request:
AT+QHTTPGET
AT+QHTTPREAD
The request will look like this:
1HTTP/1.1 200 OK2Date: Fri, 20 May 2022 08:52:56 GMT3Content-Type: text/plain; charset=utf-84Content-Length: 135Connection: keep-alive6CF-Cache-Status: DYNAMIC7Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=9fl%2B3t%2FRMhY2tMyWQDFAIM1mfFem0zLc7aONeXJ%2Fg4a%2FJPKFl%2BeGYElL5zwwuxi7%2BIfqx}8NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}9Server: cloudflare10CF-RAY: 70e3d6ceb8cc5b17-IAD11alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400121344.204.32.401415OK1617+QHTTPREAD: 0
This example uses a service that returns the IP address of the requester.
If you need to provide extra HTTP request headers, such Authorization: Basic <API_KEY>
, or a custom header required by your server, issue AT+QHTTPCFG="requestheader",1
to tell the modem to use the custom header that you will provide when you make each request. You must create a full HTTP request header separated from your request body by <CR><LF>
characters. Whether you make a POST
or a GET
request, include a byte-count parameter that totals the header plus the body (POST
request) or header alone (GET
request). For example, AT+QHTTPGET=60,512
for a 512-byte header (including the end-of-header <CR><LF>
). The 60
is a timeout. This defaults to 60 seconds but must be included if a second parameter is also present.
You can check the status of a PDP context with AT+QIACT?
. If activated, this will return the context ID; 0
or 1
whether the context is inactive or active; 1
or 2
whether the context is using IPv4 or IPv6; and the device's IP address.
To issue an HTTPS GET
request using the built-in HTTP client, follow the same procedure outlined above but with extra steps to configure SSL.
AT+QHTTPCFG="contextid",1
AT+QHTTPCFG="responseheader",1
AT+QIACT=1
AT+QHTTPCFG="sslctxid",1
AT+QSSLCFG="sslversion",1,3
AT+QSSLCFG="ciphersuite",1,0xFFFF
0
, i.e., no CA certificate is required:
AT+QSSLCFG="seclevel"=0
AT+QHTTPURL=70
This sets the modem to receive, prompted by the output
CONNECT
. The parameter is the number of bytes the modem should expect to receive: it will end input after receiving this number of characters. The value of
70
comes from the URL below. The URL you provide must include the protocol, ie.
https://
.
CONNECT
, enter the URL. For example:
https://twilio-cms-prod.s3.amazonaws.com/documents/super-sim-test.json
GET
request:
AT+QHTTPGET
AT+QHTTPREAD
The request will look something like this:
1HTTP/1.1 200 OK2Date: Thu, 19 May 2022 10:23:25 GMT3Last-Modified: Thu, 19 May 2022 10:05:25 GMT4Accept-Ranges: bytes5Content-Type: application/json6Server: AmazonS37Content-Length: 12889{10"userId": 1,11"id": 5,12"title": "laboriosam mollitia et enim quasi adipisci quia provident illum",13"completed": false }14OK1516+QHTTPREAD: 0
Sending data from the modem to an Internet-hosted API follows the paths outlined above for the HTTP and HTTPS protocols: call AT+QHTTPOST
instead of AT+QHTTPGET
.
Optionally, the QHTTPOST
command takes a parameter indicating the amount of data you are sending. The modem uses this to read that number of bytes via the UART over which your application is communicating with it. If you are providing a custom HTTP request header, remember to include its length too.
While the EG21-G supports low-power modes for eDRX and PSM, support for these features will vary by visited network and location. The commands to enable for each of these are:
1AT+CEDRXS=12AT+CPSMS=1
Using these features, but especially PSM, can make the modem inaccessible to the terminal during its sleep time. It's best to experiment with these features locally. To disable all power saving, send:
1AT+CEDRXS=02AT+CPSMS=0
You can learn more about implementing these modes in our low-power usage documentation.
• EG25-G AT Commands Manual Quectel sign-in required