I am using GSM 900A modem which requires 5V Supply. I am connecting it to Arduino UNO. I am giving supply to modem by arduino 5V and GND pin. I am connecting RXD pin to TX(pin 1) of arduino TXD pin to RX(pin 0) of arduino and GND to GND of arduino i.e. pin 14. I am running the basic example codes but GSM is not responding. I have also tried other softwares like Putty but I am unable to write any AT command Please help me. When I tested the modem using this code:


 This example tests to see if the modem of the
 GSM shield is working correctly. You do not need
 a SIM card for this example.

 * GSM shield attached

 Created 12 Jun 2012
 by David del Peral
 modified 21 Nov 2012
 by Tom Igoe


 This sample code is part of the public domain


// libraries
#include <GSM.h>

// modem verification object
GSMModem modem;

// IMEI variable
String IMEI = "";

void setup() {
  // initialize serial communications and wait for port to open:
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only

  // start modem test (reset and check response)
  Serial.print("Starting modem test...");
  if (modem.begin()) {
    Serial.println("modem.begin() succeeded");
  } else {
    Serial.println("ERROR, no modem answer.");

void loop() {
  // get modem IMEI
  Serial.print("Checking IMEI...");
  IMEI = modem.getIMEI();

  // check IMEI response
  if (IMEI != NULL) {
    // show IMEI in serial monitor
    Serial.println("Modem's IMEI: " + IMEI);
    // reset modem to check booting:
    Serial.print("Resetting modem...");
    // get and check IMEI one more time
    if (modem.getIMEI() != NULL) {
      Serial.println("Modem is functoning properly");
    } else {
      Serial.println("Error: getIMEI() failed after modem.begin()");
  } else {
    Serial.println("Error: Could not get IMEI");
  // do nothing:
  while (true);

I am getting this output on Serial Monitor for 9600 baud rate:

Starting modem test...ERROR, no modem answer.

Checking IMEI...Modem's IMEI: 0

Resetting modem...Modem is functioning properly


3 Answers 3


The modem library does not communicate on pins 0 and 1. Check the reference library and tutorial. It should be pins 2 (RX) and 3 (TX). Reset is pin 7. The configuration may be found in GSM3IO.h. https://github.com/arduino/Arduino/blob/master/libraries/GSM/src/GSM3IO.h. See also https://www.arduino.cc/en/Main/ArduinoGSMShield

  • Thats for GSM Shield by arduino but I am working with SIM900A Mar 12, 2017 at 13:03
  • Yes, but the library is using pins 2 and 3. Mar 12, 2017 at 13:47
  • But still its not working Mar 12, 2017 at 14:53
  • Mikael Patel pls help on this issue Mar 13, 2017 at 16:55
  • Check the power supply. Measure the voltage when the modem is connected. Does the voltage drop? Mar 13, 2017 at 19:57

If you connect a GSM modem to the Arduino's Hardware Serial pins (1/0) then you cannot also use those pins to communicate with a host PC.

Your question is tagged "Arduino Uno" therefore the status reporting messages to the PC will be sent over these pins, and become hopellesly confused with the traffic to the GSM modem.

You must place the modem on pins distinct from the PC interface - either using a software serial interface on different pins of an Uno, using a Leonardo-type board where the PC interface does not involve the hardware UART pins, or by using a board with multiple hardware UARTs.


This answer may be totally misleading because I can't find a "GSM 900A" but I can find lots of "SIM900A GSM" results. One thing I did notice is they require a 1A+ supply to cater for transmissions so I think running of an Arduino may mean you are not giving it enough power, you should use a 1.5A supply and make sure the grounds are connected.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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