• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 303
  • Last Modified:

re-connecting to network


I have a TC45 gprs module which runs embedded java applicaitons. When I start up the module and enter my SIMs pin the module automatically connects to the gsm/gprs  network. Like a mobile phone often does my module can loose a connection to the network when signal strength is low. However unlike a mobile phone it does not seem to begin searching for a network again

My question therefore, is there an AT command i can issue when my module looses it's signal  and force it to search for a network again.

I can check if i'm connected to a gsm network using AT+COPS .

any ideas ?


  • 3
1 Solution
Some ideas:

1) ATO or ATO=0 : switch back to data mode (from command mode)
2) AT+CGDATA if you already have your contexts activated.
3) If you need to know when it happens try turning on registration status with AT+CGREG=1 .
4) If GPRS event reporting is supported than that might be useful also to you. AT+CGEREP

reference 3gpp spec 07.07

p.s. you do have a PPP stack that takes care of the echo response, right? Just to make sure you're not being dropped for something other than signal.

kfc23Author Commented:
thanks for the help,

I've managed to find an AT command CREG for registering with the network and AT+CSQ for checking signal strength. Also in documentation with the TC45 it gives an example to force the module to search for network :

AT+CREG=2 Activates extended URC mode.
AT+COPS=0 Forces ME to automatically search network  
OK operator.
+CREG: 2 URC reports that ME is currently searching.
+CREG: 1,"0145","291A"   URC reports that operator has been found.

So in my Java app running on the module I can check the signal strength every minute or so and if it's low I can issue an AT+COPS=0 . Or i suppose I could just issue an AT+COPS? to check if the module is connection to the netowork and if not i could issue AT+COPS=0

is that the way to go ?

ken .
What a shame you feel you need to do so much network polling. That puts a tremendous performance hit on your application. I question whether it's really RSSI or a network issue.

When you turn on AT+CGREG=2 you are actually turning on unsolicited messages from the far end. (you really don't need =2 for that, =1 will also turn it on and is less verbose.) So you should get an unsolicited "+CGREG: 0" or "+CGREG: 2" notification from far end when your registration drops out for any reason.  BTW dropping the subscriber is common in GPRS networks, and not always because of poor signal.

If you have any interrupt capability at all you should also look into AT+CGEREP=2,1 - you'll get unsolicited notification of changes in your GPRS context status.

If the signal is too low to support even data, then there isn't much you can do about it - but you CAN probably rectify dropped registration or a network timeout due to inactivity or capacity.  COPS is a big performance hit so only use it as a last resort and if you're certain you've got RSSI  > 3.

Make sure AT+CMEE is set =1 or =2 for error reporting.  AT+CEER gives you detailed reporting the error.
e.g. . a CME ERROR of 256 is "busy, searching for operator" reason, which could be due to capacity issues, while cause code 30 means there is no network service at all and 31 is for a network timeout. Network timeout can happen for variety of things not connected to RSSI.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now