Can't register on network

Hi, as some others I can’t get the device online despite following the instructions. I increased the timeout to 120 in network.py…

step_check_network = Step(
          function=self.check_network_registration,
          name="check_network_registration",
          success="success",
          fail="failure",
          interval=5,
          retry=120,  # 120 times = 10 minute
      )

but I always just get

DEBUG: check_network_registration : {'response': ['+CREG: 0,2', 'OK'], 'status': 1}
DEBUG: Response: ['\r\n+CREG: 0,2\r\n\r\nOK\r\n']
DEBUG: Processed: ['+CREG: 0,2', 'OK']
DEBUG: Fault: +CREG: 0,2

Tried some AT commands

ATI: {'response': ['Quectel', 'BG95-M3', 'Revision: BG95M3LAR02A03', 'OK'], 'status': 0}
AT+CSQ: {'response': ['+CSQ: 99,99', 'OK'], 'status': 0}
AT+QCSQ: {'response': ['+QCSQ: "NOSERVICE"', 'OK'], 'status': 0}

Not sure what to do here. Using the device for the first time, SIM is active, balance should be fine. Do I manually have to select band/provider? Thanks!

Hi,

Make sure that the module is within an area with sufficient cellular network coverage for the selected network. Verify if other devices in the same location can establish a network connection. Then follow the instructions below and set the modem mode to GSM network priority and try.

Hi, so I tried GSM network priority but no difference. I even went outside (blue sky, good weather) with two phones next to me (T-Mobile and Vodafone), both had good LTE connectivity.

I don’t know how to select any (other) network, the only thing I see in Sixfab dashboard preferences is the APN called “super” but I can’t change that.

So not sure what to do here. My assumption would be that the defined LTE frequency bands are not matching with the region I’m in but thats a rather wild guess and I am no expert in the field.

Update - so I got this “fixed” by nuking the flash file as described here:

https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html#resetting-flash-memory

After that and reinstalling things connectivity worked right away.

So I have 12 of these. Most new ones connect fine, I just have to wait up to 10 minutes the first time it connects. But I had one new one and some I have had working for 9 months - they all connected and were posting http requests - but eventually stopped connecting. I’m getting the error messages shown in this thread and the status light (which blinks long on, short off when connected to a network) is a continuous long off, short on blinking.

I tried nuking and reinstalling, did not work.

I left it on for an hour, did not work.

I tried the GSM network priority, did not work.

Have I broken my LTE unit? Is there a way to reset or nuke the unit, itself, not the Pico? Is there a way to figure out what I did so I don’t do it again?

My project involves monitoring sensors and is powered by solar. Could too little power cause this? Could too much cause it? Could powering from the Pico’s Vsys pin or the Vbus pin cause this?

Update 1:
I also checked that each device is active and has a sufficient balance.

Update 2:

Debug stack trace from post.py example:


MPY: soft reboot
1
DEBUG: Power status: 0
DEBUG: Power status: 0
DEBUG: Response: ['AT\r\r\nOK\r\n']
DEBUG: Processed: ['AT\r', 'OK']
DEBUG: COM: {'response': ['AT\r', 'OK'], 'status': 0}
DEBUG: Response: ['ATE0\r\r\nOK\r\n']
DEBUG: Processed: ['ATE0\r', 'OK']
2
DEBUG: Response: ['\r\n+CREG: 0,2\r\n\r\nOK\r\n']
DEBUG: Processed: ['+CREG: 0,2', 'OK']
DEBUG: Fault: +CREG: 0,2
DEBUG: check_network_registration : {'response': ['+CREG: 0,2', 'OK'], 'status': 1}
DEBUG: Response: ['\r\nOK\r\n']
DEBUG: Processed: ['OK']
DEBUG: check_communication       : {'response': ['OK'], 'status': 0}
DEBUG: Response: ['\r\n+CPIN: READY\r\n\r\nOK\r\n']
DEBUG: Processed: ['+CPIN: READY', 'OK']
DEBUG: Desired: +CPIN: READY
DEBUG: check_sim_ready           : {'response': ['+CPIN: READY', 'OK'], 'status': 0}
DEBUG: Response: ['\r\n+CGDCONT: 1,"IP","super","0.0.0.0",0,0,0\r\n\r\nOK\r\n']
DEBUG: Processed: ['+CGDCONT: 1,"IP","super","0.0.0.0",0,0,0', 'OK']
DEBUG: Desired: +CGDCONT: 1,"IP","super","0.0.0.0",0,0,0
DEBUG: check_apn                 : {'response': ['+CGDCONT: 1,"IP","super","0.0.0.0",0,0,0', 'OK'], 'status': 0}
DEBUG: Response: ['\r\n+CREG: 0,2\r\n\r\nOK\r\n']
DEBUG: Processed: ['+CREG: 0,2', 'OK']
DEBUG: Fault: +CREG: 0,2
DEBUG: check_network_registration : {'response': ['+CREG: 0,2', 'OK'], 'status': 1}
DEBUG: Response: ['\r\n+CREG: 0,2\r\n\r\nOK\r\n']
DEBUG: Processed: ['+CREG: 0,2', 'OK']
DEBUG: Fault: +CREG: 0,2
DEBUG: check_network_registration : {'response': ['+CREG: 0,2', 'OK'], 'status': 1}
DEBUG: Response: ['\r\n+CREG: 0,2\r\n\r\nOK\r\n']
DEBUG: Processed: ['+CREG: 0,2', 'OK']
DEBUG: Fault: +CREG: 0,2
DEBUG: check_network_registration : {'response': ['+CREG: 0,2', 'OK'], 'status': 1}
DEBUG: Response: ['\r\n+CREG: 0,2\r\n\r\nOK\r\n']
DEBUG: Processed: ['+CREG: 0,2', 'OK']
DEBUG: Fault: +CREG: 0,2
DEBUG: check_network_registration : {'response': ['+CREG: 0,2', 'OK'], 'status': 1}
DEBUG: Response: ['\r\n+CREG: 0,2\r\n\r\nOK\r\n']
DEBUG: Processed: ['+CREG: 0,2', 'OK']
DEBUG: Fault: +CREG: 0,2
DEBUG: check_network_registration : {'response': ['+CREG: 0,2', 'OK'], 'status': 1}
DEBUG: Response: ['\r\n+CREG: 0,2\r\n\r\nOK\r\n']
DEBUG: Processed: ['+CREG: 0,2', 'OK']
DEBUG: Fault: +CREG: 0,2
DEBUG: check_network_registration : {'response': ['+CREG: 0,2', 'OK'], 'status': 1}

Hello @chris1,

Thank you for sharing the detailed information and debug output.

To further investigate the issue, we recommend running a diagnostic script from our documentation. This will help us gather more information about your device’s network and module status.

Please follow these steps:

  1. Refer to the Pico LTE Hello World Test documentation.

  2. Use the Sixfab PicoLTE MicroPython SDK available here: PicoLTE MicroPython SDK.

  3. Run the script located under:

    examples/__basic__/monitor_network.py
    
  4. Share the full output of this script here so we can analyze the results.

Once we receive the output, we will review the data and guide you through the next steps to resolve the issue.

MPY: soft reboot
INFO: ========== PicoLTE Device and Network Status Check Start ==========

INFO: — Device Information —
INFO: 1. Device General Info: {‘response’: [‘Quectel’, ‘BG95-M3’, ‘Revision: BG95M3LAR02A03’, ‘OK’], ‘status’: 0}
INFO: 2. IMEI (Unique Module ID): {‘response’: [‘863740060182778’, ‘OK’], ‘status’: 0}
INFO: 3. Firmware Version: {‘response’: [‘BG95M3LAR02A03_01.200.01.200’, ‘OK’], ‘status’: 0}
INFO: 4. Manufacturer Name: {‘response’: [‘Quectel’, ‘OK’], ‘status’: 0}
INFO: 5. Model Name: {‘response’: [‘BG95-M3’, ‘OK’], ‘status’: 0}
INFO:

INFO: — SIM Card Information —
INFO: 6. SIM ICCID (Card Serial Number): {‘status’: 0, ‘response’: [‘+QCCID: 89883070000037864301’, ‘OK’], ‘value’: ‘89883070000037864301’}
INFO: 7. SIM Ready Status: {‘response’: [‘+CPIN: READY’, ‘OK’], ‘status’: 0}
INFO:

INFO: — Network Type Information —
INFO: 8. Network Scan Mode: {‘response’: [‘+QCFG: “nwscanmode”,0’, ‘OK’], ‘status’: 0}
INFO: 9. IoT Optimization Mode: {‘response’: [‘+QCFG: “iotopmode”,2’, ‘OK’], ‘status’: 0}
INFO: 10. Current Network Technology: {‘status’: 0, ‘response’: [‘+COPS: 0’, ‘OK’], ‘value’: ‘GSM’}
INFO:

INFO: — Signal Quality —
INFO: 11. Signal Quality (CSQ - RSSI/BER): {‘response’: [‘+CSQ: 99,99’, ‘OK’], ‘status’: 0}
INFO:

INFO: — Network Status —
INFO: 12. Operator Info + Access Tech: {‘response’: [‘+COPS: 0’, ‘OK’], ‘status’: 0}
INFO: 13. LTE Network Registration (CEREG): {‘response’: [‘+CEREG: 0,2’, ‘OK’], ‘status’: 0}
INFO: 14. Serving Cell Info: {‘response’: [‘+QNWINFO: No Service’, ‘OK’], ‘status’: 0}
INFO: 15. Extended Signal Quality (QCSQ - RSRP/RSRQ/SINR): {‘response’: [‘+QCSQ: “NOSERVICE”’, ‘OK’], ‘status’: 0}
INFO: 16. Signaling Connection Status (QCSCON): {‘response’: [‘+QCSCON: 0,0’, ‘OK’], ‘status’: 0}
INFO:

INFO: — Packet Service and APN Info —
INFO: 17. PDP Context (APN Settings): {‘response’: [‘+CGDCONT: 1,“IP”,“super”,“0.0.0.0”,0,0,0’, ‘OK’], ‘status’: 0}
INFO: 18. IP Address Info: {‘response’: [‘+CGPADDR: 1,0.0.0.0’, ‘OK’], ‘status’: 0}
INFO: 19. Packet Attach Status (CGATT): {‘response’: [‘+CGATT: 0’, ‘OK’], ‘status’: 0}
INFO:

INFO: — QPING Command —
INFO: 20. QPING (Single Ping Test): {‘response’: [‘OK’], ‘status’: 0}
INFO:

INFO: ========== PicoLTE Device and Network Status Check Complete ==========

I left it on for another 4 hours after running the test script and it finally connected. I swear I drove around town with this device on battery power trying to get it to connect. I left it on for 24+ hours. Nothing seemed to work. Any indication what was the issue? And did running the script have anything to do with the fix?

Hello @chris1,

Thank you for sharing the detailed output and update, we are glad to hear the device eventually connected.

From the log, it appears that the module was initially searching for a network but couldn’t register right away. This can happen if the module cycles through multiple network types (e.g., GSM, LTE-M, NB-IoT) or if the signal conditions vary by location.

To speed up the network registration process in the future, you can manually set the module to prioritize LTE-M (CAT M1) networks using the following AT commands:

AT+QCFG="nwscanseq",020301     // Set preferred network scan sequence
AT+QCFG="nwscanmode",3         // Search for LTE networks only
AT+QCFG="iotopmode",0          // Use CAT M1 only

These commands will help the module focus on LTE-M networks instead of scanning for all available types, which can shorten connection time.

For more details and customization options, you can refer to our documentation here:
Network Searching Scheme – Quectel BG95 Series (Section 5)

Please try applying these settings and let us know if you notice improved connection stability.

1 Like