Massive problems with connecting to Mobile Network (BC660K-GL)

Hello and good morning.
I am working since 2 weeks on my firmware for transmitting data over NB-IoT (I chose BC660K-GL modules). This technology is so extremely different to the M35 module I used years ago, I am meanwhile a bit disappointed because of it. But possibly this can be improved by some AT commands sent to the module…

Sadly this is working extremely bad. Time pressure increases, because I have to present a first functional device, so I kindly please for any help you can provide.


Here a list of issues I have:

  1. This module is a bit crazy in point of configuration. Many settings are immediately stored in NVRAM (whatever this physically is), but there is no command to restore factory settings. I also could not find any command to get a complete list of default settings, So I cannot read out defaults to write them into a possibly misconfigured module (doing “factory settings” this way).
    Can you provide me a way to do that (re-flashing module firmware is no option, btw.)

  2. I am a bit scared about writing too often AT commands to the module which immediately write to NVRAM. As I do not know which kind of NVRAM it is, I do not know how many writes are allowed in lifetime of this module, and I do not want to write the NVRAM to death.
    Any real modem I had in my life understood AT&F (= Restore Factory Settings), AT&Z (Restore previously saved settings), AT&W (Write current settings), so it was easily possible to try and test commands, and finally (on success) do a final AT&W to save then forever. It seems that todays engineers want to make things more complicated, and not to make them simpler…

  3. Meanwhile I found a configuration where the BC660 connects to the mobile network. But this is working horribly slow. I wonder if I can speed this timing up by modem settings.
    After applying an external Reset, I currently get this modem output:
    +CFUN: 1
    +CEREG: 2
    – it needs very long until it proceeds, sometimes 2 minutes, sometimes it never happens at all –
    +CEREG: 5 ← Now it is operable?
    +QNBIOTEVENT: “ENTER DEEPSLEEP” ← Can I prevent this? I want to have the modem permanently on. Usually I will transfer data every 10 minutes.
    I powered down and up the modem afterwards, now it fluently ran through all messaged and reached +CREG: 5 within seconds.
    Can I change some parameters to get a quick connection, reducing the delay between +CEREG: 2 and +CEREG: 5 to reach always an operational status within 1 minute or so?

  4. This NB-IoT modem will be used in moving environment (inside slow driving cars). So it will happen for sure that a radio cell will be left and a new cell will be entered. This probably will happen more often inside cities (smaller and more radio cells) than countryside, but it will happen.
    ? - Does the BC660K-GL automatically switch to the new radio cell, or does it simply “lose connection” and report “+CEREG: 0” or some other connection status? Need something to reliably know if the radio connection is operational or dead. an URC message is preferred as it can be directly addigned to an internal connection status of my device.
    ? - If so, how should I re-initialize a re-connecting to the network? Doing an external RESET?
    ? - I implemented using the signal quality +CSQ: xx,yy to know a bit more. What is the minimum for stable transmission without endless retries?

I hope I could express where I currently stuck with this project. Any useful information is very welcome.


BC660K does not support restoring the default configuration. If you execute the relevant AT command, please check the rationality of the configuration


It indicates that the network registration was successful
BC660K does not support handover of data service. In mobile state, services may be disconnected due to movement,However, in idle state, the BC660K supports reselection

Hi, herbert.pan-Q

BC660K does not support restoring the default configuration. If you execute the relevant AT command, please check the rationality of the configuration

That BC660K does not support restoring the default configuration, I already figured out. Well, this appears a little bit stupid to me, because it requires only a little extension to existing firmware and making developer’s life LOTS easier, because…
Every usual modem since 70’s supports AT&F (for restore Factory settings), AT&W (for Write current settings) and ATZ (for restore to saved settings).

  1. This drastically reduces code size in the MCU, because you can revert back to start without any code. But saving resources appears to be of no interest any more???

  2. One can try as long as necessary new settings. If they are not satisfying, a simple AT&F (for full restore) or ATZ (for back to last stored settings) is a very simple task compared to testing every particular setting for rationality.

  3. Writing every setting immediately to NV-RAM means writing the NV-RAM step-by-step to death. Every cell only has a limited number of writes until it gets worse. Adding a simple AT&W command allows to do as many settings as needed temporarily. If they are tested and working as expected, one AT&W will save all of them in one operation to NV-RAM. This drastically reduces wear of NV-RAM. This should be urgently considered by Quectel.

  4. A recall command (as ATZ is) allows to recall settings previously stored by AT&W. This allows the user to easily set everything needed back to a known status (including ATE and lots more) by a simple command of 3 characters.

BC660K does not support handover of data service. In mobile state, services may be disconnected due to movement. However, in idle state, the BC660K supports reselection.

This answer is not very clear, please explain more detailed.

  • Please specify|explain “idle”. When is “idle” reached, and/or how can I bring the modem into idle state?
    I usually use at+qiopen, then a series of at+qisend commands (and +QIURC: “recv” responses), and finally I send the at+qiclose command. In case of transmission issues, I call at+qiclose and then give up.
    Is the modem then entering idle state (immediately, or after which time) in this case? Can I issue other (local) commands and the modem is still in idle, i.e. reading signal quality, reading the time, …

  • Does the modem automatically revert to +CEREG: 2 in this case by itself? Or does this have to be explicitly initiated by AT+CFUN=0 and AT+CFUN=1 from the MCU?

  • Is there a way to reduce the time between +CEREG: 2 and +CEREG: 5 ? It sometimes needs up to 30+ minutes, but often it is only 10 seconds.

Can you tell me what your product is? Why does it move?

This is a data recording device, installed in cars. Because of cost NB-IoT is the only one that can be used, all other products cause lots higher cost (more expensive per SIM card).

I have 15 times higher transmission speed than recording speed, so this is suitable. Even when I have temporary disconnections, it will catch up relatively quickly again. The internal data buffer allows still continuous recording.

I think NB is not suitable for your requirements;You need to use a module that supports mobile service for handover, such as the CAT1 module, to ensure the stability of data transmission

I am afraid this is not really matching my cost expectations. A BC660K module costs approx. USD 7.00 (so it is very cheap) and allows using NB-IOT services (with very low cost of only $10/SIM for 10 years). Last is the most important point, because this cost are accumulating over time.

What cost do I have with CAT1 module ?
IIRC, modules with CAT1 have 4 times higher price, only talking of the module itself.
And doesn’t the NB-IoT by its nature not support handover?

When the modem is able to reliably report a loss of connection to the cell as URC, I can push it to initiate a re-registration (by at+cfun=0 and sending a bit later at+cfun=1), until I am registered again.
It is a question of how smart the modem’s firmware is. (Looking on missing AT&F, AT&W, ATZ, I doubt that it is very brilliant in such things.)

NB technology itself does not support handover
If you have high requirements for real-time data transmission and delay, I think NB is not the best choice

I never said that real-time data transmission is mandatory. It is not. But I expect that I can transmit data within a reasonable time window of - let’s say 30 minutes.

What I need is a reliably working modem, able to tell me if it is able to transmit now, or not.
Means: When the modem is outside the radio cell where it had registered, it shall either be smart enough to start a new registration (to the new cell), or it shall report that it is currently “offline”. Then I can enforce a re-registration when this module is too dumb to do that automatically.

If this can be done, NB-IoT is perfectly matching my needs.

Because your terminal is always on the move, modules will be connected and disconnected frequently, and if you can’t handle registration and de-registration well, I think cat1 is easier

I am afraid you miss the point.

To handle registration well, I need to know a proper way to find out if the radio side is currently functional or not, even when I am currently not transmitting data,

I transmit data in intervals of 10 minutes. Every 10 minutes I open a TCP/IP connection, send out all data I have, and close the connection afterwards. When the transmission exceeds timeout, I do an early abort, do a at+qiclose to logically close the connection inside the modem, and try again in 10 minutes.

So I normally have no connection open for most of this 10 minutes.

But only as question of interest:
What is the cheapest CAT1 module you have? Can you tell me a “China price” as I buy there?