best practice to suppress roaming?

hi there

what is the best practice with Q24+ and WISMO228 to suppress roaming?

our data logger devices are stationary installed. they should only use their home network for GPRS or, if configured, CSD. if the home network is not available, they should be quiet.

thanks for help in advance


We can use +CREG or +CIND to determine whether the device is correctly roaming.

For example +CREG:
+CREG: ,

equal “5” means registered and roaming.

We can also enable the unsolicited mode AT+CREG=2 so we know immediately when device roam to other carrier.

Please refer to AT command guide for detail.


Ouch … I didn’t saw the forrest cause of all the trees … I’m already checking periodical the connection with +CREG and +CSQ. Currently I don’t do anything if +CREG says the device is not in its home network. I was just wondering, if there is a, somehow magic, AT command to suppress the “5” from +CREG.

Well, thanks for your help.

Depending on where you live and what operator you’re using, blindly relying on CREG: 5 can be misleading…

Case in point:
In Sweden, Tele2 and Telenor combined their 2G networks.

At least when using older SIM-cards from any of the two, CREG shows 5 when on the combined network, indicating that it’s roaming, but since it’s a combined network no extra roaming fees apply.

Same in UK for Orange & T-Mobile.

Have you spoken to your Service Provider to ask if they can disable roaming? Or to negotiate a better deal when roaming?

Or find a better Service Provider?

You could set manual operator selection with AT+COPS=1. But then you risk your device being uncontactable - when roaming would have allowed contact…

Thanks for the answers.

We’re shipping preconfigured m2m SIM-cards, with forbidden foreign networks, together with our data logger, if our customers order this package. But sometimes our customers order the data logger device only and buy the SIM-card on their own.

Currently I follow the strategy to disable data communication while roaming. The data logger can still send emergency SMS or FAX.

Our product management asks now for the solution with AT+COPS=1, hoping the data connections will work most of the time.

So if a GSM/GPRS like a WISMO228 is registered with AT+COPS=0 in a foreign network and the home network is accessible again, does it jumps back home automatically? Or do I have to detach from network and register again?

Hey all sorry to bring up an old post but it was the only one I could find which has the same issue I have

My question is there any way of finding out if which networks are allowed to roam? As I have found using a “Orange” sim card in a windows 7 OS using “Mobile Broadband API” it registers as T-mobile and says this is its Home provider and we have an option to enable roaming if they want to roam to other networks (none “EE” ones) this works perfect.

But the problem we have is when programming on Windows XP we have to use AT commands. When using the Orange Sim (we only have T-mobile signal where we are no orange) in the XP it returns roaming instead of home provider like win 7 does, when it has roamed onto T-mobile, if we detect that we are roaming and we have disabled it we disconnect. I need to distinguish between im allowed to roam on that network and roaming on to any network.

Thank you in advance all :slight_smile: .

Hey ebits007, did you find a solution for this?

Hi arellanoj,

i’m Afraid not I was trying to see if there was a way of looking at allowed roaming network but couldn’t find anything :frowning:. If you find out please post a solution lol

We decided the problem about 10 years ago.

You need to process unsolicited +CREG and try to ask for current registration. These are some variations CREG:
//+CREG: 1,“1111”,“2222” – unsolicited home cell info
//+CREG: 5,“1111”,“2222” – unsolicited roaming cell info

   //+CREG: 2,1,"1111","2222" -- home cell /answer
   //+CREG: 2,5,"1111","2222" -- roaming cell /answer
   //+CREG: 2,0 -- not register, not search /answer
   //+CREG: 2,2 -- not register, search /answer
   //+CREG: 2,1,"6981","708D" -- normal reg / answer
   //+CREG: 2,5,"XXXX","XXXX" -- roaming reg /answer

But you can not rely on the home network flag, it is often “home” in the guest networks…
How should we resolve this inaccuracy? If you ask your SIM card IMSI, you will be able to compare the number of first digits of the code with the first digits of the current registered operator network.

This is a very simplified algorithm:


+COPS: 0,2,“25503”

3> Compare “25503” with 25503xxxxxxxxxx for length of COPS respond. So in this example we have Ukraine, Kyivstar GSM network and the same SIM card.

In case of compare match we are in the HOME network and will use home connection rules.
In case of compare mismatch we have a quasi-home network. Do not trust to CREG data and use roaming connection rules.

4> As a side effect you know a SIM card IMSI and will select GPRS access point from local database.

This algorithm help’s to select home network with any type of GSM equipment. Tested on three generations.
You only need stable respond to reading IMSI and COPS request. And do not forget to use a “magic switch” of the modem’s power - much more interesting events happens even in the home network. Just like in the russian song “Do not cry, do not be afraid, do not call…”

I hope this will help you. Enjoy! :slight_smile:

Thankyou very much “pioneer2” It does help!

so in short match the Operator response from AT+Cops and match it with the frist part of the AT+CIMI ?

On your point 4 which is rather interesting the local storage of the sim card does that store just the operators or the APN’s as well ? Also which AT command has access to this list?

Also (sorry for the million questions) :slight_smile: when you say “Magic switch” are you referring to when you have two sim cards installed?

Thankyou again for your help so far

You will select format of response to AT+COPS command from two options: numeric or text. You need to use “numeric” option and will compare this field with SIM card data returned by AT+CIMI. IMSI always starts by MCC-MNC.

I do not know about standard way to ask APN from all GSM provider. So, we have a local database on our device to resolving MCCMNC -> APN. But you may be faced with uncertainty, as some providers have many different APN for different users, such as contract / prepaid.

For example, ukrainian Kyivstar GSM use pair “” and “”. For client’s VPN Kyivstar will use “”… is it unlimited number of APN? Up to you! But you will know an MCC-MNC pair and to narrow the search.

OK. We use the SIM card switch for cost cutting and it make a customers happy but for system stability you need more. I want to clarify: “The Magic power switch” :slight_smile: 90% of any program is error handlers, but without the circuit breaker (+watchdog) is all empty words. You will upset even humidity … modem blind hangs can not be cured by AT commands.

Luck to you!