user4834: I am using an Arduino Mega and an Arduino GSM shield. I am using the receive SMS example under GSM in the Arduino IDE. My GSM shield's hardware IP is set correctly.
Here is the sketch:

/*
 SMS receiver

 This sketch, for the Arduino GSM shield, waits for a SMS message
 and displays it through the Serial port.

 Circuit:
 * GSM shield attached to and Arduino
 * SIM card that can receive SMS messages

 created 25 Feb 2012
 by Javier Zorzano / TD

 This example is in the public domain.

 http://arduino.cc/en/Tutorial/GSMExamplesReceiveSMS

*/

// include the GSM library
#include <GSM.h>

// PIN Number for the SIM
#define PINNUMBER ""

// initialize the library instances
GSM gsmAccess;
GSM_SMS sms;

// Array to hold the number a SMS is retreived from
char senderNumber[20];

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

  Serial.println("SMS Messages Receiver");

  // connection state
  boolean notConnected = true;

  // Start GSM connection
  while (notConnected) {
    if (gsmAccess.begin(PINNUMBER) == GSM_READY)
      notConnected = false;
    else {
      Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("GSM initialized");
  Serial.println("Waiting for messages");
}

void loop() {
  char c;

  // If there are any SMSs available()
  if (sms.available()) {
    Serial.println("Message received from:");
    // Get remote number
    sms.remoteNumber(senderNumber, 20);
    Serial.println(senderNumber);
    // An example of message disposal
    // Any messages starting with # should be discarded
    if (sms.peek() == '#') {
      Serial.println("Discarded SMS");
      sms.flush();
    }

    // Read message bytes and print them
    while (c = sms.read())
      Serial.print(c);
    Serial.println("\nEND OF MESSAGE");

    // Delete message from modem memory
    sms.flush();
    Serial.println("MESSAGE DELETED");
  }
  delay(1000);
}

The issue is this line:
if (gsmAccess.begin(PINNUMBER) == GSM_READY)

The serial monitor outputs everything until that line.
It just never gets past it, so I assume it cannot connect? The SIM has no pin code: I have tried it with my phone. The SIM has full signal strength when in my phone. I have tried my other SIM card also but the same thing happens.
This seem to be the same question, yet no answer:
http://forum.arduino.cc/index.php?topic=270551.0

user4861: You could always try setting a pin code and then retry
http://arduino.cc/en/Tutorial/GSMToolsPinManagement
What version of the Arduino IDE are you using ? Also, are you sure you are suppying the board correctly ? "It is recommended that the board be powered with an external power supply that can provide between 700mA and 1000mA. Powering an Arduino and the GSM shield from a USB connection is not recommended, as USB cannot provide the required current for when the modem is in heavy use."

user19865: I Have The Same Problem.
But First Of All you have to set your modem Network Band according to your cellular Network Band.
GSMBand band;
String newBand= "GSM_MODE_EGSM_DCS";// Your Band In My case That was 
  band.begin();
  Serial.println("Modem restarted.");
  String bandName = band.getBand(); // Get and print band name
  Serial.print("Current band:");
  Serial.println(bandName);

band.setBand(newBand);

Band Help:
  GSM_MODE_EGSM                ---- E-GSM(900)
  GSM_MODE_DCS                 ---- DCS(1800)
  GSM_MODE_PCS                 ---- PCS(1900)
  GSM_MODE_EGSM_DCS            ---- E-GSM(900)+DCS(1800) ex: Europe
  GSM_MODE_GSM850_PCS          ---- GSM(850)+PCS(1900) Ex: USA, South Am.
  GSM_MODE_GSM850_EGSM_DCS_PCS ---- GSM(850)+E-GSM(900)+DCS(1800)+PCS(1900)

Then You Have To use 
gsm.access.begin();


user34926: I had the same problem. Then I used gsm.shutdown(); before gsm.begin(PINNUMBER). After that it goes past gsm.begin(PINNUMBER) but not always. I don't know if this is the right way to do it, but it works for me. 

4834: <p>I am using an Arduino Mega and an Arduino GSM shield. I am using the receive SMS example under GSM in the Arduino IDE. My GSM shield's hardware IP is set correctly.</p>

<p>Here is the sketch:
</p>

<pre class="lang-cpp prettyprint-override"><code>/*
 SMS receiver

 This sketch, for the Arduino GSM shield, waits for a SMS message
 and displays it through the Serial port.

 Circuit:
 * GSM shield attached to and Arduino
 * SIM card that can receive SMS messages

 created 25 Feb 2012
 by Javier Zorzano / TD

 This example is in the public domain.

 http://arduino.cc/en/Tutorial/GSMExamplesReceiveSMS

*/

// include the GSM library
#include &lt;GSM.h&gt;

// PIN Number for the SIM
#define PINNUMBER ""

// initialize the library instances
GSM gsmAccess;
GSM_SMS sms;

// Array to hold the number a SMS is retreived from
char senderNumber[20];

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

  Serial.println("SMS Messages Receiver");

  // connection state
  boolean notConnected = true;

  // Start GSM connection
  while (notConnected) {
    if (gsmAccess.begin(PINNUMBER) == GSM_READY)
      notConnected = false;
    else {
      Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("GSM initialized");
  Serial.println("Waiting for messages");
}

void loop() {
  char c;

  // If there are any SMSs available()
  if (sms.available()) {
    Serial.println("Message received from:");
    // Get remote number
    sms.remoteNumber(senderNumber, 20);
    Serial.println(senderNumber);
    // An example of message disposal
    // Any messages starting with # should be discarded
    if (sms.peek() == '#') {
      Serial.println("Discarded SMS");
      sms.flush();
    }

    // Read message bytes and print them
    while (c = sms.read())
      Serial.print(c);
    Serial.println("\nEND OF MESSAGE");

    // Delete message from modem memory
    sms.flush();
    Serial.println("MESSAGE DELETED");
  }
  delay(1000);
}
</code></pre>

<p>The issue is this line:</p>

<pre class="lang-cpp prettyprint-override"><code>if (gsmAccess.begin(PINNUMBER) == GSM_READY)
</code></pre>

<p>The serial monitor outputs everything until that line.</p>

<p>It just never gets past it, so I assume it cannot connect? The SIM has no pin code: I have tried it with my phone. The SIM has full signal strength when in my phone. I have tried my other SIM card also but the same thing happens.</p>

<p>This seem to be the same question, yet no answer:
<a href="http://forum.arduino.cc/index.php?topic=270551.0" rel="nofollow noreferrer">http://forum.arduino.cc/index.php?topic=270551.0</a></p>
 4861: <p>You could always try setting a pin code and then retry
<a href="http://arduino.cc/en/Tutorial/GSMToolsPinManagement" rel="nofollow">http://arduino.cc/en/Tutorial/GSMToolsPinManagement</a></p>

<p>What version of the Arduino IDE are you using ? Also, are you sure you are suppying the board correctly ? "It is recommended that the board be powered with an external power supply that can provide between 700mA and 1000mA. Powering an Arduino and the GSM shield from a USB connection is not recommended, as USB cannot provide the required current for when the modem is in heavy use."</p>
 19865: <p>I Have The Same Problem.
But First Of All you have to set your modem Network Band according to your cellular Network Band.</p>

<pre><code>GSMBand band;
String newBand= "GSM_MODE_EGSM_DCS";// Your Band In My case That was 
  band.begin();
  Serial.println("Modem restarted.");
  String bandName = band.getBand(); // Get and print band name
  Serial.print("Current band:");
  Serial.println(bandName);

band.setBand(newBand);
</code></pre>

<p>Band Help:</p>

<pre><code>  GSM_MODE_EGSM                ---- E-GSM(900)
  GSM_MODE_DCS                 ---- DCS(1800)
  GSM_MODE_PCS                 ---- PCS(1900)
  GSM_MODE_EGSM_DCS            ---- E-GSM(900)+DCS(1800) ex: Europe
  GSM_MODE_GSM850_PCS          ---- GSM(850)+PCS(1900) Ex: USA, South Am.
  GSM_MODE_GSM850_EGSM_DCS_PCS ---- GSM(850)+E-GSM(900)+DCS(1800)+PCS(1900)
</code></pre>

<p>Then You Have To use </p>

<pre><code>gsm.access.begin();
</code></pre>
 34926: <p>I had the same problem. Then I used <code>gsm.shutdown();</code> before <code>gsm.begin(PINNUMBER)</code>. After that it goes past <code>gsm.begin(PINNUMBER)</code> but not always. I don't know if this is the right way to do it, but it works for me. </p>
