You can configure the Telit GM cellular modem to set its internal real-time clock to the network time and have this value automatically updated each time the module is powered on. Here are the AT commands that you need to issue (I’ve omitted the AT response codes):
AT#SELINT=2 AT#NITZ=7,0 // sync network time to internal clock AT&P0 // profile to be loaded on startup AT&W0 // store the complete profile AT#SHDN // this will turn off the modem // now power on the modem AT+CCLK? // get current time // time response is +CCLK: "09/06/29,15:25:32-28" // time format is yy/MM/dd,hh:mm:ss±zz
The command AT#NITZ=7,0 on your specific modem may not work, check the range of valid inputs for this command using AT#NITZ=?. If you’ve an old module from sparkfun.com then AT#NITZ=? may return #NITZ:(0-1),(0-7). More recent firmwares return #NITZ:(0-7)(0,1). If you’ve an older firmware, then you should set the AT#NITZ=1,0. The difference is that with newer firmware, you will also get the time-zone zz, not so with the older firmware. If you set AT#NITZ=7,1, then when the module gets the network time it is supposed to be echoed as an unsolicited message on the serial port. This didn’t work in my tests. Just as well. In this case, I rather not deal with unsolicited messages for network time, since I can use the real-time clock to get the time when I want to (getting unsolicited messages for AT+CREG is valuable, however).
What do I mean by older firmware? The GM862 module that I bought from sparkfun.com has this firmware:
AT+CGMR PS:5.02.203/AL:6.04.204-GM862 QUAD
The module that I purchased from SemiConductorStore has this firmware:
AT+CGMR 07.03.600

