SIM900/SIM800 not working – Possible reasons – Tips n Tricks

Baud rate :

You need to check at what baud rate your SIM900/SIM800 module is set to, using the command AT+IPR? . And use the same baud rate in your UART configuration. If your SIM900/SIM800 is set into auto baud mode(AT+IPR=0). Then the first AT command you send to the module from your controller should be in capital letters. Like AT and not at. This will help the module to set itself into appropriate baud rate. If your terminal software and SIM900/SIM800 are set into different baud rates you will see dots and junk characters printed. 

Also note that when there is a baud rate mismatch, when you restart the module there will be some characters printed on the terminal software screen, like ….IIII they are some startup preamble hex characters printed by the module. 

Power :

The SIM900 needs around 2A on startup or when a call or a network intensive action takes place. So if your power supply is not able to provide around 2A of surge current then it will be a problem and SIM900 will keep shutting down.

Normally when it doesnt get enough power or current, it outputs a URC string like NORMAL_POWER_DOWN or UNDER_VOLTAGE_POWERDOWN, only if it is already ON. If it is starting up and there is not enough power for it to consume then it will keep switching On and off and it will not output any URC making it hard to debug. 

Ideally I would give a 4V 2A supply to it using a LM2596 switching regulator or  LM39302 LDO  or similar.

Even though you have provide the right source for the current needed, you might have made mistakes in the PCB layout and drew thin tracks. This happened with me, I had drawn thinner lines  and fewer vias for connecting the power lines to VBAT pins. Use thicker tracks and multiple vias for making better connections. if power source is too far then use a 1000uF capacitor very close to the VBAT pins.

IO voltage levels :

The voltage levels acceptable on the SIM900/SIM800 UART pins is 2.8V- 3V . So its IO system works at 2.8V levels. If you are interfacing to a controller running at 5V or 3.3V then it might damage the IO driver circuit of the modules UART pins.

Same is applicable to other pins of SIM900/SIM800 including the PWRKEY pin.

Normally everyone runs their MCU on 3.3V or 5V DC. But if the design permits, i suggest that you could run the MCU on 3VDC or 2.8VDC using LDO like MCP1700-3V so that we can avoid using IO level translation circuits. 

I recommend TXS0102 or TXS0104 bidirectional voltage level translators for this application if you are running micro controller at a higher voltage above 3V. 

Turing the module ON :

You need to provide the proper duration ON pulse on the PWRKEY pin of SIM900/SIM800 to turn it ON. Not too long and not too short. 1 second pulse is recommended.

Also take care of the IO levels here also. In evaluation modules normally a switch is provided.

Basic Checks to be done in case you face any problems :

First things I would check a new module in a custom board is,

  • Is the module getting the network, It blinks the network LED every 3 seconds when it acquires a network. Or it blinks every second if its searching for network. Or 2 times in a second (very fast) when it is connected to internet or GPRS. 
  • Are you getting basic AT commands working on it. If you get a OK as response then you can think of further functionality. So get the basic AT commands working first. 
  • If you are getting basic AT commands to work but other AT commands for HTTP, FTP, DTMF, EMAIL are not working then it means that you need a firmware update. Watch this video for more details
  • I would ring the number of the SIM card inserted in the module to check if the module is connected to the network. Here the command AT+CREG? will help only if you have got the AT commands working. 
  • Use the AT+CBAND? command to find out the current band setting. EGSM_MODE,ALL_BAND works for all countries 2G bands, if its a quad band module. Or use appropriate band settings, like i used PCS_MODE,ALL_BAND on SIM808 for USA with a T-Mobile SIM card.

Sleep mode and wake up from sleep mode : 

For power saving you need to use the command AT+CSCLK=2 to put SIM900/SIM800 into sleep mode 2 whenever it is IDLE.  It goes into sleep mode at 5 seconds of inactivity on UART or network and wakes up whenever a event like a Call/SMS occurs. Here if your module is already in sleep mode then if you want send a command to the module then you need to first send a dummy command to it and within 5 seconds send the actual command to be executed. Here the first command will only awaken the module. 

Similar is the case with AT+CSCLK=1.  In this mode DTR pin is used to wake up the module and you are supposed to send a disable sleep command (AT+CSCLK=0) within a few seconds of making DTR low. Otherwise the module enters sleep mode again. 

Also see :

8 thoughts on “SIM900/SIM800 not working – Possible reasons – Tips n Tricks”

  1. hi
    I’m working on the sim800l module.
    It worked for a few days and after that, it is not connecting to the network.
    I checked the power supply and Tx Rx connection which are correct. I’m using a 3.8v Lippo battery for power needs.
    AT commands are working but no network, not connecting to the network (nw led blinking every 1s 7times and then 4-5s delay )

    what could be the possible solution?

  2. Hello,
    I am trying to connect sim800L to my pc via a USB to serial converter. the following connections have been made, (Following which the gsm module was able to connect to the network (LED blinking 3 times)).
    – SIM800L powered by a 12V DC adapter via a dc-dc buck converter. (4.15V)
    -TX of USB to serial converter (5V) is connected to RX of sim800L(2.8V) via a voltage divider.
    -RX of USB to serial converter (5V) is connected to TX of sim800L (2.8V) using 74HC4050 IC.
    -GND of both modules is common.
    I am testing AT commands through RealTerm at baud rate 19200. Unable to receive any response from the gsm module on sending AT commands like AT, AT+IPR? etc.
    The gsm module only sends null values when trying to re-establish connection with the network.

    Thanks in advance.

  3. Hello,
    I have GSM/GPRS A6 module i am testing module by sending sms using arduino its working fine at baud rate 19200.But unable to receive any response from the gsm module and also not on sending AT commands like AT, AT+IPR?

  4. Hiren Kumar Kanojia

    I am using sim900a and arduino uno to make a project but in my sim900a only power led is glowing and the network and status led is off. when I set the baud rate to 96200 and send AT it is responding ?????? continuously, what to do now

    1. Make sure the module is set to auto baud first and then send AT command in caps and it should detect the baud rate automatically. First try different baud rates to see in which baud rate the module is already programmed to. Try using A terminal first, not using Arduino.

Leave a Comment