GSMToolsTestModem
Read the IMEI of your modem and print it in the Serial Monitor.
GSM Test Modem
This sketch tests the modem on the GSM shield to see if it is working correctly. You do not need a SIM card for this example.
Hardware Required
- Arduino Board 
Circuit
 
  
    
    
Code
First, import the GSM library
#include <GSM.h>Create an instance of the GSMModem class:
GSMModem modem;Create a variable to hold the IMEI number of the modem
1String IMEI = "";In
setup1void setup(){2
3  Serial.begin(9600);4
5  Serial.print("Starting modem test...");Call
modem.begin()setup()1if(modem.begin())2
3    Serial.println("modem.begin() succeeded");4
5  else6
7    Serial.println("ERROR, no modem answer.");8}Inside
loopmodem.getIMEI()1void loop()2{3
4  // get modem IMEI5
6  Serial.print("Checking IMEI...");7
8  IMEI = modem.getIMEI();If there is a valid response from
getIMEI()modem.begin()1if(IMEI != NULL)2
3  {4
5    // show IMEI in serial monitor6
7    Serial.println("Modem's IMEI: " + IMEI);8
9    // reset modem to check booting:10
11    Serial.print("Resetting modem...");12
13    modem.begin();Once reset, check the IMEI again. If it is a valid return again, the modem is functioning as expected.
1if(modem.getIMEI() != NULL)2
3    {4
5      Serial.println("Modem is functioning properly");6
7    }If, after resetting the modem, there is not a valid return from
getIMEI()1else2
3    {4
5      Serial.println("Error: getIMEI() failed after modem.begin()");6
7    }If you never received an IMEI after starting the sketch, report it, and end the program.
1}2
3  else4
5  {6
7    Serial.println("Error: Could not get IMEI");8
9  }10
11  // do nothing:12
13  while(true);14}Once your code is uploaded, open the serial monitor. You should see the HTML of http://arduino.cc print out on screen when it is received.
Complete Sketch
The complete sketch is below.
1/*2
3 This example tests to see if the modem of the4
5 GSM shield is working correctly. You do not need6
7 a SIM card for this example.8
9 Circuit:10
11 * GSM shield attached12
13 Created 12 Jun 201214
15 by David del Peral16
17 modified 21 Nov 201218
19 by Tom Igoe20
21 http://www.arduino.cc/en/Tutorial/GSMToolsTestModem22
23 This sample code is part of the public domain24
25 */26
27// libraries28#include <GSM.h>29
30// modem verification object31
32GSMModem modem;33
34// IMEI variable35
36String IMEI = "";37
38void setup() {39
40  // initialize serial communications and wait for port to open:41
42  Serial.begin(9600);43
44  while (!Serial) {45
46    ; // wait for serial port to connect. Needed for Leonardo only47
48  }49
50  // start modem test (reset and check response)51
52  Serial.print("Starting modem test...");53
54  if (modem.begin()) {55
56    Serial.println("modem.begin() succeeded");57
58  } else {59
60    Serial.println("ERROR, no modem answer.");61
62  }63}64
65void loop() {66
67  // get modem IMEI68
69  Serial.print("Checking IMEI...");70
71  IMEI = modem.getIMEI();72
73  // check IMEI response74
75  if (IMEI != NULL) {76
77    // show IMEI in serial monitor78
79    Serial.println("Modem's IMEI: " + IMEI);80
81    // reset modem to check booting:82
83    Serial.print("Resetting modem...");84
85    modem.begin();86
87    // get and check IMEI one more time88
89    if (modem.getIMEI() != NULL) {90
91      Serial.println("Modem is functioning properly");92
93    } else {94
95      Serial.println("Error: getIMEI() failed after modem.begin()");96
97    }98
99  } else {100
101    Serial.println("Error: Could not get IMEI");102
103  }104
105  // do nothing:106
107  while (true);108}Last revision 2018/08/23 by SM
Suggest changes
The content on docs.arduino.cc is facilitated through a public GitHub repository. If you see anything wrong, you can edit this page here.
License
The Arduino documentation is licensed under the Creative Commons Attribution-Share Alike 4.0 license.