Cellular, GSM & LTE DISCUSSION

Which AT commands should I send to check SIM, signal and registration on a GSM/LTE module?

Started by rehanakhtar AT commandsAT+CSQ signal qualityAT+CREG registrationSIM7600modem start-up sequence
5 replies 248 views 6 participants
Latest activity · 30 Sep 2026

Which AT commands should I send to check SIM, signal and registration on a GSM/LTE module?

rehanakhtar Cellular, GSM & LTE Forum
#1

I am writing firmware for a SIM7600-class LTE module (and testing on an older SIM800 as well). My code currently sends a fixed list of commands with delays in between, and it often tries to open a data connection before the module is ready, then gets ERROR.

What is a sensible start-up sequence of AT commands to confirm that the SIM is present, the signal is usable and the module is registered, and how should the firmware handle the responses?

Community replies 5

Re: Which AT commands should I send to check SIM, signal and registration on a GSM/LTE module?

#2

A typical bring-up order is: AT until you get OK (the module can take several seconds after power-on), ATE0 to turn off command echo so parsing is simpler, AT+CMEE=2 for descriptive error text instead of a bare ERROR, then AT+CPIN?. The answer you want is +CPIN: READY. SIM PIN means the card is locked and needs its PIN, and a SIM-not-inserted error usually means a contact or orientation problem, or a card that was inserted after the module was powered.

Only when the SIM is ready is it worth checking signal and registration.

Re: Which AT commands should I send to check SIM, signal and registration on a GSM/LTE module?

#3

AT+CSQ returns +CSQ: rssi,ber. The first number runs from 0 to 31, with 99 meaning not known, and converts to power as dBm = -113 + 2 × rssi. A reading of 10 is -93 dBm, which is marginal; 15 is -83 dBm and workable; 20 or more (-73 dBm and better) is good. A value of 99 right after power-on is normal until the module has found a cell.

On LTE this number is only a rough guide, since link quality there is better described by RSRP, RSRQ and SINR. Most LTE modules have a vendor-specific command that reports those, so look in the AT manual for your module if you need to judge coverage properly.

Re: Which AT commands should I send to check SIM, signal and registration on a GSM/LTE module?

#4

Registration is reported by AT+CREG? for the circuit-switched network, AT+CGREG? for 2G/3G packet data and AT+CEREG? for LTE. Each answers with two numbers, such as +CEREG: 0,1, and the second is the status: 0 not registered and not searching, 1 registered on the home network, 2 searching, 3 registration denied, 5 registered while roaming. Proceed on 1 or 5.

Status 3 usually points to the subscription (SIM not activated, no roaming agreement, or the technology not allowed for that SIM), not to the hardware. Status 2 that never ends suggests the antenna, the band variant of the module, or no coverage for that technology; remember that a SIM800 is 2G only and 2G has been switched off in a number of countries.

Re: Which AT commands should I send to check SIM, signal and registration on a GSM/LTE module?

#5

On the firmware side, replace fixed delays with a small state machine. Send a command, then read lines until you see a final result (OK, ERROR or +CME ERROR) or a timeout that suits the command. Most commands answer within a second, but network operations can take much longer; a manual operator scan with AT+COPS=? may need a minute or more. Poll registration every couple of seconds, with an overall limit of a few minutes before power-cycling the module.

Be ready for unsolicited lines that arrive between your commands, such as RING, SMS indications, or registration changes if you enabled them with AT+CEREG=1. The parser should recognise them rather than mistake them for the answer to the last command.

Re: Which AT commands should I send to check SIM, signal and registration on a GSM/LTE module?

#6

Once registered, check the data side before opening sockets. AT+CGATT? should report 1 (attached to packet service). Define the access point with AT+CGDCONT=1,"IP","your.apn", using the APN your operator specifies. On LTE the module activates a default bearer while registering, so set the APN before it registers or make it re-register afterwards. AT+CGPADDR=1 then shows the IP address assigned to that context.

No address means the APN or the subscription is wrong, and no amount of retrying the socket commands will help. Settings such as echo and error mode can be stored with AT&W on most modules, but sending them at every start-up is more robust.

TEP COMMUNITY