I need some advice (MC8705)


We have built a ‘box’ (hardware + embedded software) that is installed into some people homes (sorry to be so vague) in the French country. This box has an AirPrime MC8705 module that allows sending to a server the data ‘captured’ with the box (for example measurements).

In France we have three major carriers (Orange, SFR, and Bouygues Telecom) with different cellular coverage. So when we install a box somewhere, we don’t know which carrier will provide the better access to the Internet (for example, for a specific area, one will be barely able to provide 2G/GPRS accces while another one will be able to offer at least UMTS access).

As a direct consequence, we cannot configure our box in advance with a dedicated SIM card, but instead, when we install the box, we must try a SIM, check if it is working, and if not, try another one, etc.

So far we proceed as follows (we don’t sell too many boxes, so this is procedure is currently acceptable): At our company office, we Install one sim card at time. We launch AirCard watcher for each card so that the card profile is loaded into the card.

At someone home, the guy/girl that installs our box uses a very simple GUI (provided by our Python/Qt software) to select the carrier. Then our code, using some AT commands, selects the right profile and makes it start automatically (as the default profile). Thus After this configuration phase, the connection will start automatically and we don’t need to do anything else.

Now, if for example, a box breaks and the factory sends a new one, as a replacement, directly at someone home, then the box does not have any profile configured, and, as expected, we are not able to connect to the Internet.

My question is then: what is the best approach to handle this problem?

  1. Use of some additional AT commands? (for example to force the loading of a SIM data into a card profile ?)
  2. Use of the 3G SDK? (will it be able to start the connection ? Interface problem between python and C++ ?)
  3. Something else?

Thanks in advance for any answers



Did you try talking to your distributor ?



He sent messages to Sierra Wireless and he got no answers so far!



May I get below info?

  1. What exact information was configured using watcher during initial installation? If only the same has to be configured after replacement (only APN and username/pwd)?
  2. If same network SIM will be used on that location onward and must be working?
  3. On current design, if end-user runs the GUI application or if there are MCU connected with the module that can send AT or use SDK?


APN, username/password and sometimes DNS.
My first thoughts were to program (using AT commands) all these paramaters each time one carrier is selected. But, what if the carrier changes some parameters or if we decide to change our M2M plan resulting in new sim cards with different parameters?
So, if there are no other solutions, I plan to use this one, but, I would really prefer to avoid it.

Sorry, I do not understand your question.

Yes, there is a MCU that can send at commands (or use the SDK).


Thanks for prompt reply.

I am thinking if it is possible that your MCU or the GUI application keep a list of profiles for all known operators, and this list can be updated over the internet from time to time.

The flow would be something like:

  1. power up
  2. wait for network registration
  3. send AT+COPS? to get registered operator name
  4. get the network detail from the list
  5. configure the required parameter (AT+CGDCONT, etc)
  6. start data connection
    a) (extra) update the list periodically

This can be done using both AT command and SDK and the network parameter can be configured based on the registered network dynamically… Does it fit your scenario?

I think there are lots of possible solution, e.g. putting the network parameter in SIM card.

Hope this helps.

So you are saying that even if the SIM card is not able to connect to the internet (because the PDP context is not (yet) configured correctly), it will at least allow for a network registration, thus I will be able to get meaningful information from AT+COPS?

In that case, I would not need to specify “by hands” what is the current carrier, which is obviously a better solution. Then I would set up the various parameters for the PDP context based on the list of profiles and the current carrier.

I will try your proposal as soon as I find some free time (I am working on a new top priority project, which is of course of higher priority than the Sierra project that was already a top priority :frowning: !!)

Anyway, thanks for your support.

By the way, how I wait for Network registration?


The normal flow is module (and even cell phone) first search for available network and then camp and register based on the SIM card, then user can request data connection.

Module should takes 10-15 sec from power up to complete network registration, but the time may vary depends on environment, network coverage, etc.

You can send AT+CREG=2 / AT+CGREG=2 to enable network registration notification. Such that module will output <+CREG: 1,“xxxx”,“xxxxxxxx”,2> upon registered on network. Please refer to AT command guide for details.

I think you can first check the behavior using AT command before you implement on your application.
Don’t hesitate to come back if you face any issue.

Hope this helps. Thanks.

Hi again,

So by using AT+CREG=2 I will no longer have to configure AirCard watcher to automatically launch at startup. Correct?

Now, what is not clear to me, is how I decide which command to send (AT+CREG or AT+CGREG)? Would AT+CREG work event if I am not lucky and our device is located in an area with no UTRAN coverage? or do I need to analyse the stat code and deduce that for myself?

Thanks in advance.


“AT+CREG=2” is not relate to Watcher. Are you (or end user) use Watcher?
Watcher use different channel to communicate with module so not interact with AT cmd.

“AT+CREG” tells you the registration status, whether it registered to network (1) or searching for operator (2) or denied (3).
Your application can send AT+CREG? repeatly (e.g. every 3sec) to poll the registration status or you can enable notification by AT+CREG=2 (so unsolicited +CREG will be received when registration state changed).

Just to rephase, AT+CREG is to check if network registration success, you can still use below flow:

  1. power up
  2. wait for network registration (query AT+CREG? every 3sec)
  3. send AT+COPS? to get registered operator name
  4. get the network detail from the list
  5. configure the required parameter (AT+CGDCONT, etc)
  6. start data connection
    a) (extra) update the list periodically

Hope it helps.

It helps a lot
Thank you very much

Just to let you know that based on your recommandations, I was able to connect to the Internet from scratch (that is using only AT commands).

Again, thanks for your support.