EFCom GPRS/GSM Shield I have an EFCom GPRS/GSM Shield 
http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield
and I am using it with a mega 2560. The problem is that the code in the wiki page 

//Serial Relay - Arduino will patch a  
//serial link between the computer and the GPRS Shield 
//at 19200 bps 8-N-1 
//Computer is connected to Hardware UART 
//GPRS Shield is connected to the Software UART 

#include &lt;SoftwareSerial.h&gt;   
SoftwareSerial mySerial(2, 3);   
void setup() {   
  mySerial.begin(19200);               // the GPRS baud rate
  Serial.begin(19200);                 // the GPRS baud rate    
}   

void loop() {   
  if (mySerial.available())
    Serial.write(mySerial.read());   
  if (Serial.available())
    mySerial.write(Serial.read()); 
}


makes use of software serial but mega 2560 cannot use software serial on pin 2, as in the arduino reference, thus I changed the pins to 50 and 51 and used external female-male headers to connect s_tx to pin 50 "rx" , and s_rx to pin 51 "tx", still no response with the AT command...

code after update is :

#include &lt;SoftwareSerial.h&gt;   
SoftwareSerial mySerial(50, 51);   
void setup() {   
  mySerial.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);                 // the GPRS baud rate   
}

void loop() {  
  if (mySerial.available())
    Serial.write(mySerial.read());   
  if (Serial.available())
    mySerial.write(Serial.read());    
}


Note that I am using the Arduino IDE serial monitor.
Try to connect "Pin RX on Mega to Pin RX on Shield" an "Pin TX on Mega to Pin TX on Shield":


Pin 50 (Rx)  on Mega &lt;==> Pin 2 GSM Rx on Shield
Pin 51 (Tx)  on Mega &lt;==> Pin 3 GSM Tx on Shield


I use an Geeetech Shield with a Mega 2560 and connect RX to Rx and TX to TX. Works fine.

Another solution is to use Serial1 instead of using SoftwareSerial ...

First connect:


Pin 19 (Rx1)  on Mega &lt;==> Pin 2 GSM Rx on Shield 
Pin 18 (Tx1)  on
Mega &lt;==> Pin 3 GSM Tx on Shield



    //Serial Relay
    unsigned char buffer[64];  // buffer array for data receive over serial port
    int count=0;               // counter for buffer array

void setup()
{
  Serial1.begin(19200);
  Serial.begin(19200);
}

void loop()
{
  if (Serial1.available())
  {
    while(Serial1.available())
    {
      buffer[count++]=Serial1.read();
      if(count == 64)break;
    }
    Serial.write(buffer,count);
    clearBufferArray();
    count = 0;
  }
  if (Serial.available())
    Serial1.write(Serial.read());
}

void clearBufferArray()
{
  for (int i=0; i&lt;count;i++)
  {
    buffer[i]=NULL;
  }
}




You can use a Arduino IDE's Serial Monitor, Serial Terminals(sscom32) or Bray++ Terminal to send AT commands to the Shield, communicate with it.

I hope this information is helpful.