Network Backoff – Why is my device offline?

If the module is in no-service state for some time, the common MCU application handling is to power-cycle, re-start the module. This may work, or not cause more issues in most scenarios, however there is one scenario that the application needs to be aware of that this is the worst thing to do.

A new command was introduced in BG96 (BG96MAR03A05M1GA), now standard in BG95. Currently it is on progress to add this to BG950A-GL and the other Altair platform modules.

If network rejects the device with a specific ESM reject cause, because of network loading or other reason, the device can stay offline for about 12 minutes at a time.  Restarting the module whilst this timer is active only restarts this 12 minute timer again. This can result in the device offline for as long as the device is constantly being re-started! Other devices on the same network seemingly are online with no problem. Swapping SIMs will reset this backoff timer.
Use this command to check if this network reject timer is active. If so then DO NOT restart the module.  Technically in 3GPP it is called the T3396 backoff timer.

You can check if this is the condition with new command we introduced in the latest BG96 FW (Telstra certified). AT+QNWCFG=”backoff”

Example:

AT+QNWCFG=”backoff”
+QNWCFG: “backoff”,0    //returns number of seconds to back-off from accessing network.  0 mean no back-off active.

Technical details, network backoff – T3396

There are a number of possible scenarios where network can refuse the mobile the requested service.

3GPP it is called the T3396 backoff timer, see the reference below:

Note this backoff timer is started by cause values:
#8 “operator determined barring”,
#27 “missing or unknown APN”,
#32 “service option not supported”,
#33 “requested service option not subscribed” 
Ref: https://www.gsma.com/solutions-and-impact/technologies/networks/resolution_centre/correction-of-t3396-ie-name/

Instead of checking for the specific reject cause value, the MCU application can just check the AT+QNWCFG=”backoff” command for any special handling i.e. don’t reset the module whilst the timer is active.