I am using SIM800 Module with Arduino Micro. It reponds well to basic AT commands. But i am unable to send SMS from this module as:


Now while further debugging i saw AT+COPS? Returns 0, means not connected to any operator. That may be causing the CMGF failure. But my AT+COPS=? returns multiple operator. I have an Airtel working sim. Intialyy it was showing AIRTEL too in AT+COPS=? but not now.. anything to do with signal??


+COPS: 0


+COPS: (2,"405800","405800","405800"),(1," IDEA CELLULAR Ltd","IDEA","40404"),(1,"40505","40505","40505"),,(0-4),(0-2)

What is going wrong here. any inputs?


It can take a while for a modem to register on the network - sometimes several minutes.

Turning on CREG URCs can help you monitor what is happening:


You should now start getting +CREG notifications as the network status changes.

Before using AT+COPS? you should really select a reporting mode so you know what you are looking at. I prefer numeric, since it's easier to parse:


That will switch to automatic registration and reporting as numbers.

+COPS: 0

That is not registered.

+COPS: 0,2,"40404"

That is registered on a network with ID 40404.

The +CREG reports tell you what is going on:

+CREG: 1

That tells you that you have just connected to your home network.

If you are roaming, you would see:

+CREG: 5

Of course, if your home network is not available (say you have an AT&T SIM and only Verizon is visible at the moment), and your SIM doesn't have roaming enabled, then registration will never work. You'd expect to see +CREG reports of:

+CREG: 2
+CREG: 3
+CREG: 0

That is "trying to register" (2), "registration denied" (3) and "doing nothing much now" (0).

The best document for learning about these commands is the 3GPP Command Set which is the standard that all modern GPRS modems should adhere to.

  • I am getting error on AT+GREG OK AT+COPS? +COPS: 0 OK AT+COPS=? +COPS: (2,"405800","405800","405800"),(1," IDEA CELLULAR Ltd","IDEA","40404"),(1,"AirTel","AirTel","40410"),,(0-4),(0-2) OK AT+GREG? ERROR AT+GREG1 ERROR AT+GREG=1 ERROR – navjosh Oct 9 '16 at 6:17

If you are using linear voltage regulator such as LM7805 or LM317, then definitely you need to replace with buck converter. Since the dropout at max current 1.5A is 1.8V.

Pls check the module voltage level using AT+CBC. If the voltage dropped less than 3.3V then module would keep restarts. Hence recommended voltage level for sim800 series is 3.7 - 4.4v. In that case you need a proper power supply. Try buck converter which has 3A rating and less dropout voltage too.

You can refer my study on my blog.. http://vimtron.blogspot.in/2017/10/gsm-sim800l-and-arduino-mega-2560.html


1- Do you even a proprely working SIM card? Test it with your phone by calling or texting someone with it.

2- Try putting your SIM card into your phone and unlock the SIM card. This function is usualy in the setting area of your smartphone. It will make it easier later on.

3- As always, reboot your PC and try again.

  • Thanks, We ll as i said it is a working sim i use daily in my HTC android phone. Its not locked and i already restarted PC multiple time. – navjosh Oct 8 '16 at 14:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.