Skip to content

Connecting to Network

Timothy Woo edited this page Apr 14, 2020 · 27 revisions

UPDATE (12/9/18): All example sketches have been updated to include setPreferredMode(), setPreferredLTEMode(), and setOperatingBand() functions in the commented section after module initialization for LTE modems. This is especially needed for the SIM7000G which can operate over a wide selection of bands.

UPDATE (11/5/18): All example sketches have been updated to include a revised setNetworkSettings() function which now uses the command AT+CGDCONT to set the PDP context, and also AT+CFUN=1 using setFunctionality().


If you're having trouble getting your device connected to a cell network, this is the place to be. I'll try to keep this as concise as possible and some of these might sound trivial, so please bear with me:

  • Go online and activate your SIM card, whichever SIM you're using
  • Whichever SIM card you're using, make sure it supports LTE CAT-M or NB-IoT, otherwise you're either stuck on GSM (2G) or nothing at all (as in the case with SIM7000A modules which don't support GSM). The Hologram SIM works great for LTE CAT-M in the USA.
  • Plug the SIM card into the shield and make sure the antenna is properly connected (remember, the LTE and GPS wires criss-cross!)
  • Remember to connect a 3.7V LiPo battery to your shield! If you don't you might see the module turn on, print out "+CPIN: READY" and "+CFUN: 1" then turn back off and reboot and print those things again, and keep power cycling.
  • Make sure the SIM7000 module actually turns on! You should see the green "PWR" light next to the module if it's on
  • Make sure you're able to send AT commands to the module and receive responses in some way, either via the Arduino IDE or by installing USB drivers.
  • Make sure RF is actually enabled on your device by checking with the command AT+CFUN?. If it's 0 you need to switch it to 1 before anything will work! (AT+CFUN=1). There seems to be something going on with the B02 firmware version of the SIM7000G that makes it boot up with CFUN set to 0.
  • To check your network connection, run the command AT+CREG? and what you want to see is either "+CREG: 0,1" (home) or "+CREG:0,5" (roaming) indicating that you're connected. With the Hologram SIM you'll see "0,5".

So that's enough debugging and checking if you're connected. Now if you're NOT connected, here's some of my experience with the different SIM7000 versions using the Hologram SIM card:

  • In the USA the SIM7000A-V connects automatically to Verizon's LTE CAT-M1 network using the Hologram SIM card without having to do anything.
  • If your module doesn't automatically connect (as may be the case with SIM7000A-A or SIM7000G in the US with Hologram SIM card), use the command AT+CGDCONT=1,"IP","hologram" with the proper APN. (However, note that this is already done in the setNetworkSettings() function which is enabled by default in the example sketches). You shouldn't have to restart the module, but for good measure you can. You can power it off by pulsing the PWRKEY pin of the module (pin 6) to GND for about 1.5-2s, and turn it back on by pulsing the PWRKEY pin again. (Note: the SIM7000A-A module stickers have an extra "A" at the very end of the "P/N" line, whereas the SIM7000A-V modules don't)
  • For the SIM7000G on firmware version B01 it connected just fine after the AT+CGDCONT command shown above, but on firmware version B02 it would only see a GSM network by default. To fix this I had to run the command AT+CNMP=38 to select LTE only (or use the setPreferredMode(38) function which is commented in the example code). To see the options you can use AT+CNMP=? and you should see the available options.
  • Furthermore, depending on where you are in the world and what networks are available to you, you may need to use the command AT+CMNB=1 (or use the setPreferredLTEMode(1) which is commented in the example code) to choose LTE CAT-M only, etc. This command and the previous one seem to be particularly necessary for the SIM7000G. Again, you can use AT+CMNB=? to see the list of options.
  • Another thing you can set is the LTE CAT-M or NB-IoT band using AT+CBANDCFG (or change and use the setOperatingBand("CAT-M",12) function which is commented in the example code). This is particularly useful if, for example, you are using a Hologram SIM card which supports both AT&T (band 12) and Verizon (band 13) LTE CAT-M networks in the USA but you only want it to connect to the AT&T network.
  • If you still don't automatically connect after setting the things above, check which networks your module sees by running AT+COPS=? (Note that it might take several seconds). You might get a response like "+COPS: (2,"AT&T","AT&T","310410",7),(1,"310 260","310 260","310260",0),(1,"311 480","311 480","311480",7),(1,"313 100","313 100","313100",7),,(0,1,2,3,4),(0,1,2)"
  • Once you get a list of networks you can try to manually connect to one of them using a command like AT+COPS=1,2,"310410",7 (Change the six-digit network code with the one you see above). You could also just do AT+COPS=1,2,"310410" without the last number.

If you try the things above you should be able to get it connected to a network!