GPRS Shield Not Communicating


I am attempting to interface the seeedstudio GPRS shield with an Arduino Mega 2560 R3. I have tried connecting them together both via a SoftwareSerial port and hardware serial port. When using the SoftwareSerial port no communication whatsoever was possible, whereas when using the hardware serial port I was able to transmit commands but did not receive any responses (such as “OK” after transmitting the initial “AT”).

The following is the code I am using (from the wiki). Are there any compatibility issues with the Arduino Mega that I am missing? Or anything I might be missing relating to the configuration of the GPRS shield?

Is the RED LED (D1) blinking each 3 seconds? I had the same issue, had to unlock the SIM card so it does not ask a PIN code before connecting to the network. For a newbee as me, this was not really clear first.


Thank you for the quick reply. When I power on the shield, the red LED turns on and the green LED adjacent to it rapidly blinks. After a while (20-30 seconds), the green LED blinks intermittently while the red LED remains on. Should the red LED be blinking for correct operation?

As for the SIM card, I am using one from, which sells unlocked SIM cards for use with any GSM carrier. Could this be my issue?

I really appreciate your advice, I am definitely a newbie when it comes to this stuff :slight_smile:

Sorry, I ment the GREEN LED (D1) should blink, important, with an interval of approx. 3 seconds. If it blinks faster, a locked SIM card may be the issue.
The RED LED should be on.

I misinterpreted the word “locked”. If you have an unlocked SIM, meaning you can use it on any network, this is a good start. But, you have to remove the security from the SIM card. It’s easy to test, put it in a mobile, start the mobile, and when the mobile does not ask for a PIN code, it’s OK. When it asks for a PIN code, it’s locked. Normally you can remove this then via the security functions of your mobile phone (cfr. for exaple … ndroid-os/ ).

Thanks again for your quick response!

I’m actually away from my hardware at the moment, but should be able to test this out tomorrow night. I’ll definitely keep you posted on whether or not this fixes my issue!


I have tested my SIM card in an actual phone and it is indeed unlocked.

Are there any other reasons why I am unable to communicate with this device via the serial port? I read something on here about updating the SIM900 firmware, could that be my issue? Or is my device potentially faulty?


FYI the following is the hardware configuration I am using:

Uploaded with

Has ANYBODY been able to successfully use Seeed’s GPRS module? I have not heard from one person that has been successfully able to interface this device and am EXTREMELY disappointed in its performance. Does anybody know some solution for how I can make this work or will I have to buy another device elsewhere?

I am using GPRS shield without problems. Though I have the older v0.9 and a Stalker and a Seeduino, don’t have a Mega.

thecubswin, have you connected GND on Mega to GND on GPRS shield?
From you post on “Wed Mar 21, 2012 10:05 am” seems like your SIM card has been successfully registered on the GSM network, so the problem is really with the connection between these boards.
Besides, you can talk to the GPRS shield even without a SIM card inserted.

I am using a Arduino Mega 2560 with the GPRS shield v1.2 and its working fine, with the 1.0 IDE on Windows 7

Hardware setup: I inserted the shield onto the MEGA, the jumpers were in the soft serial position. I took 2 jumper wires from pin 7,8 (which I set to input mode), and hooked them up to pin 52,53 on the mega.

Software, I used the same terminal software as whats displayed on they wiki. If I didnt, I got some garbage printed to the IDE’s terminal. I also had to send carriage returns via the terminal software. I didnt get the exact “startup” response from the board. But after the I see the “<0>…” (Im typing this part from memory), I was able to send an “AT” command and got the reply “OK”. I couldnt figure out how to do the CTRL+Z thing on windows, as that does an undo on the terminal client.

I also managed to take pins 7,8 to Serial2, and that works aswell.

I was able to take the example code on the wiki under Sending SMS: using Hardware UART, changed the Serial to Serial2, I also had to add the pinMode(9, OUTPUT); digitalWrite(9,LOW); delay(1000); digitalWrite(9,HIGH); delay(2500); digitalWrite(9,LOW); delay(3500); segment to start up the module, since it always started up in the off mode for me with this code.

Also, the IDE complained about the
line Serial.print(26,BYTE); replaced it with something like Serial.print("\x1A"); and I received the SMS.

I will add my modified version of the code when I get back home tonight.

Here it is:

[code]void setup(){

pinMode(7, INPUT);
pinMode(8, INPUT);

pinMode(9, OUTPUT);

Serial2.begin(19200); //Default serial port setting for the GPRS modem is 19200bps 8-N-1
delay(1000); //Wait for a second while the modem sends an “OK”
Serial2.print(“AT+CMGF=1\r”); //Because we want to send the SMS in text mode

Serial2.print(“AT+CMGS=”+27820000000"\r"); //Start accepting the text for the message
//to be sent to the number specified.
//Replace this number with the target mobile number.
Serial2.print(“Arduino ROCKS!!\r”); //The text for the message
Serial2.print("\x1A"); //Equivalent to sending Ctrl+Z

void loop()


Thank you all for your replies!

x-f, it turns out that you were right, I just needed to connect the GNDs together. It is now successfully communicating.

Thanks for all of the help, I definitely appreciate it!

My next task is upgrading the firmware in order to add MMS functionality to the shield. Has anybody tried doing this before? I will generally be using the procedure outlined here: … are_Update . I’ll be sure to post the outcome to this forum.

I received a few GPRS shields today, none of which seemed to be working, until after struggling for a while I observed the following:

  1. The default speed was not set at 19200 but 9600, as soon as I changed the line




I started to get readable replies. You can set the speed to 19200 with the command AT+IPR=19200, but the you have to change your code again.
You could also use AT+IPR=0 which makes the SIM900 automagically adjust the speed. At speeds of 19200 or more the Arduino serial monitor may garble up some characters.

  1. Oddly enough the first AT sent to the modem mustbe in uppercase. Following AT commands can be sent in lowercase.

  2. After each AT command you must send a Carriage Return (a newline is not recognised as the end of a command)

  3. The wiki page explicitely states that for a Stalker V2.0 board the OK_READ Jumper must be removed. This is also the case for the Stalker V2.1

  4. The wiki page states that you need to have a SIM card without PIN code. This is not true. If the SIM has a PIN you can enter the pin with the command

AT CPIN=xxxx (where XXXX is the PIN)

  1. The GPRS shield needs 5V. So if you use the UARTSBEE on a Stalker board, make sure the switch is set to 5V.

Hope this helps some of you out there to make things work.