LTE-M module not registering on network — AT+CEREG? keeps returning 0,2 in Australia
Asked by stale_biscuit_03 ·
First time integrating a cellular module into a project. Got a SIM7080G eval board, a Telstra IoT SIM ("Basic IoT" plan), and I'm talking to it over UART from an ESP32. AT commands are working fine — AT returns OK, AT+GSN gives me the IMEI, all good.
But I cannot get it to register on the network. Keeps bouncing between:
AT+CEREG?
+CEREG: 0,2
and occasionally:
AT+CEREG?
+CEREG: 0,0
I've tried AT+COPS=0 for automatic operator selection. Also tried AT+COPS=? to scan for operators but it either times out or returns an empty list. Antenna is attached (the stubby one that came with the eval board). I'm sitting about 2km from a Telstra tower and have full LTE coverage on my phone.
Followed the cellular IoT overview for background but it doesn't cover what to do when it won't register. What's the troubleshooting sequence here?
3 Replies
Seen this pattern a few times deploying on Australian carriers. Work through these in order — most LTE-M registration failures come down to one of four causes, and they're easy to distinguish with the right AT commands.
1. Check whether the radio is actually on
+CEREG: 0,0 (not registered, not searching) often means the module's radio is
disabled, not that registration failed. Check functionality mode first:
AT+CFUN?
If it returns +CFUN: 0 (minimum functionality) the modem stack is running but
the radio is off — the module won't search at all. Some SIM7080G firmware versions
default to CFUN=0 after a fresh boot. Set it to full functionality:
AT+CFUN=1
If +CFUN: 1 is already the response, this isn't the cause.
2. Lock to Australian LTE-M bands
This is the most common cause of CEREG: 0,2 that never resolves, especially
when AT+COPS=? comes back empty. If the module is searching across its global band
mask, it may be spending most of its scan time on bands that no Australian carrier
deploys for LTE-M.
On the SIM7080G, check what bands are currently configured:
AT+CBANDCFG?
For Telstra LTE-M in Australia, you want Band 28 (700 MHz APT) as the primary band. Telstra also uses Band 3 (1800 MHz) for LTE-M in metropolitan areas, typically alongside Band 28 for wider coverage. Lock to both:
AT+CBANDCFG="LTE-M",28,3
After changing the band config, restart the module with:
AT+CFUN=1,1
This resets to full functionality and forces a fresh network scan. In my experience, if band lock was the issue, you'll have CEREG: 0,1 within about 60 seconds of the module coming back up.
Note that band commands are module-family specific — the SIM7080G syntax above differs from Quectel BG95 or u-blox SARA-R4 equivalents, so check your AT command manual if you're on a different module.
3. Confirm the SIM is readable by the module
Even if AT commands work, a SIM seating issue can prevent registration:
AT+CCID
This returns the ICCID (the 20-digit number printed on the SIM). If you get
ERROR, the SIM isn't being read — check the physical socket and try reseating
it. Then:
AT+CIMI
This returns the IMSI, which the carrier uses to identify the subscriber. You need both CCID and CIMI to return valid values before registration is possible.
4. SIM provisioning for LTE-M
This is the one that isn't obvious from the AT command side. A SIM can return CCID and IMSI correctly and still fail LTE-M registration if the carrier hasn't enabled the right service profile on the account.
Not all Telstra SIMs support LTE-M out of the box — it depends on the specific
plan and whether LTE-M capability has been activated on the subscriber account.
If the SIM profile doesn't include LTE-M access, the network denies registration.
From the module's perspective this looks almost identical to CEREG: 0,2
(searching) — the difference is that the module never transitions to 0,3
(registration denied) because the denial can be silent at the search layer.
Confirm with Telstra IoT support that LTE-M is actually activated on your SIM. If you ordered a "Basic IoT" SIM, it may require an activation step or a specific add-on before LTE-M registration is permitted.
Start with CFUN and band lock — they're the quickest to check and cover the majority of cases. Post what AT+CFUN? and AT+CBANDCFG? return and we can narrow it down.
The band lock is definitely the first thing to check — I've watched a SIM7080G cycle through a global band scan for 45 minutes before giving up, then register in under two minutes after locking to Band 28.
One thing worth knowing for after you solve the registration issue: getting
+CEREG: 0,1 (registered, home network) is only half the story. Registration
and an active data bearer are two separate things. You can be registered and
still not be able to send or receive data if the PDP context hasn't been
activated.
Once you see CEREG: 0,1, check:
AT+CGDCONT?
AT+CGACT?
The first shows your configured APN contexts. Context 1 should reference the
correct APN for your Telstra plan — commonly telstra.iot for IoT-specific
plans, but confirm with Telstra rather than assuming, since APN strings are
carrier-managed and can vary by plan type. The second command shows whether
context 1 is active (1) or not (0). If it's configured but inactive, you'll
need to activate it explicitly or verify the APN string is correct.
The registration failure is what to fix now, but that's the next check to run once CEREG confirms you're on-network.
Had almost the same setup about four months ago — SIM7080G, Telstra, couldn't get CEREG past 0,2. Went through the band lock fix, CFUN was already 1, SIM read fine. Still not registering.
What eventually cracked it: I ran AT+COPS=? and let it finish the full scan (takes a while, worth waiting). Telstra showed up in the results with stat=1 (available, not current), which meant the module could hear the network. So the hardware was fine. But every registration attempt was being rejected silently.
Turned out the SIM had been activated under a standard Telstra prepaid account — it had the ICCID, the IMSI, looked completely valid. But LTE-M wasn't enabled on the subscriber profile. A call to Telstra IoT support (not regular consumer support — the IoT-specific team) switched the SIM to the right service class. The module registered within about 90 seconds of them making the change on their end, without touching anything on mine.
So if band lock and CFUN check out, the SIM reads correctly, and COPS shows the network as available — call the carrier. There's nothing in the AT command interface that distinguishes "module can't find the network" from "network found but rejected this SIM for LTE-M." You have to eliminate the hardware and config side before concluding it's provisioning, but once you're there, no amount of AT command debugging is going to help.
The turnaround from Telstra IoT support on that particular issue was same-day, for what it's worth.