Unable to get GPS location to work on BG93M3 PCIE

Hello everyone. I am having some difficulty with getting GPS location with my BG93M3 module

Hardware: BG95M3 Mini PCIe
Firmware: BG95M3LAR02A03_BETA1110A
Issue: GPS state not changing from 3 (WWAN loaded) to 4 (GNSS loaded) after AT+QGPS=1,1,0,1

Initialization Commands

  1. AT - Check module ready
  2. AT+CPIN? - Check SIM card status
  3. AT+CMEE=2 - Enable verbose error reporting

GPS Configuration Sequence (Following Quectel GNSS Application Note V1.3)

Step 1: Set GNSS Priority Mode (CRITICAL - MUST BE FIRST)

AT+QGPSCFG="priority",0,1
  • Purpose: Set GNSS priority mode (0 = GNSS priority, 1 = save to NVRAM)
  • Expected Response: OK
  • Verification: AT+QGPSCFG="priority" → Should return +QGPSCFG: "priority",0,3 (state 3 = WWAN loaded, will change to 4 when GPS starts)

Step 2: Configure GNSS Constellation

AT+QGPSCFG="gnssconfig",1
  • Purpose: Configure GNSS constellation (1 = GPS+GLONASS)
  • Expected Response: OK
  • Note: Takes effect after reboot

Step 3: Configure NMEA Output Source

AT+QGPSCFG="nmeasrc",1
  • Purpose: Enable NMEA output for AT+QGPSGNMEA commands
  • Expected Response: OK

Step 4: Configure GPS Antenna

AT+QGPSCFG="antennatype",1
  • Purpose: Configure active antenna (1 = active antenna)
  • Expected Response: OK or +CME ERROR: 501 (may not be supported on this firmware)
  • Note: GPS may still work with default antenna settings

Step 5: Enable XTRA Feature (Assisted GPS)

AT+QGPSXTRA=1
  • Purpose: Enable XTRA (Assisted GPS) for faster fixes
  • Expected Response: OK
  • Note: Takes effect after module reboot

Step 6: Clear Assistance Data (Cold Start)

AT+QGPSDEL=0
  • Purpose: Delete all assistance data for cold start
  • Expected Response: OK

Step 7: Ensure GPS is Off

AT+QGPSEND
  • Purpose: Ensure GPS is off before starting
  • Expected Response: OK or +CME ERROR: 505 (GPS already off - this is OK)

Step 8: Verify No Active Data Connection

AT+CGACT?
  • Purpose: Check if PDP context is active
  • Expected Response: +CGACT: 1,0 (inactive) or +CGACT: 1,1 (active)

If PDP is active, deactivate:

AT+CGACT=0,1
  • Expected Response: OK or ERROR (if fails, try detaching first)

If deactivation fails, detach from network:

AT+CGATT=0
  • Expected Response: OK
  • Then retry: AT+CGACT=0,1

Step 9: Turn On GPS Module

AT+QGPS=1,1,0,1
  • Parameters:
    • 1 = Mode: Stand-alone
    • 1 = Accuracy: Low (faster fix, recommended for challenging conditions)
    • 0 = Fix count: Continuous positioning
    • 1 = Fix rate: 1 second intervals
  • Expected Response: OK
  • CRITICAL: After this command, state should change from 3 (WWAN loaded) to 4 (GNSS loaded)

Step 10: Verify State Changed to 4 (CRITICAL CHECK)

AT+QGPSCFG="priority"
  • Purpose: Verify state changed to 4 (GNSS loaded)
  • Expected Response: +QGPSCFG: "priority",0,4 (state 4 = GNSS loaded)
  • ISSUE: Sometimes returns +QGPSCFG: "priority",0,3 (state 3 = WWAN loaded) - GPS cannot work in this state!

Step 11: Check GPS Status

AT+QGPS?
  • Purpose: Verify GPS reports it is ON
  • Expected Response: +QGPS: 1 (GPS is ON)

Step 12: Check Satellite Visibility

AT+QGPSGNMEA="GSV"
  • Purpose: Get satellite visibility data (GSV = Satellites in View)
  • Expected Response: +QGPSGNMEA: $GPGSV,... (NMEA sentences) or OK (if no satellites found yet)

Step 13: Attempt to Get Location

AT+QGPSLOC=2
  • Purpose: Get GPS location (2 = format with date/time)
  • Expected Response:
    • +QGPSLOC: <lat>,<lon>,<alt>,<date>,<time>,<num_sat>,<hdop> (success)
    • +CME ERROR: 516 (No fix - GPS not fixed yet - this is normal, keep trying)

Step 14: Turn Off GPS

AT+QGPSEND
  • Purpose: Turn off GPS module
  • Expected Response: OK

Problem Description

Issue: After running AT+QGPS=1,1,0,1 and receiving OK, the state verification (AT+QGPSCFG="priority") sometimes shows state is still 3 (WWAN loaded) instead of 4 (GNSS loaded).

Expected Behavior:

  • State should change from 3 to 4 immediately after AT+QGPS=1,1,0,1 returns OK
  • GPS can only work when state is 4 (GNSS loaded)

Observed Behavior:

  • First test run: State correctly changed to 4
  • Second test run: State remained at 3 ✗ (GPS cannot work)

Additional Notes:

  • Priority mode is set correctly: AT+QGPSCFG="priority",0,1 returns OK
  • Priority mode query shows: +QGPSCFG: "priority",0,3 (priority_type = 0 is correct, but state is still 3)
  • AT+QGPS? returns +QGPS: 1 (GPS reports it is ON, but state is still 3)
  • PDP context is deactivated before GPS activation
  • No network registration is performed (GPS should work independently)

Questions for Quectel:

  1. Why would state remain at 3 after AT+QGPS=1,1,0,1 returns OK?
  2. Is there a delay required between setting priority mode and turning on GPS?
  3. Are there any prerequisites that must be met before state can change to 4?
  4. Could this be a firmware issue with BG95M3LAR02A03_BETA1110A?
  5. Is there a way to force the state to change to 4?

Complete Command Sequence (in order)

AT
AT+CPIN?
AT+CMEE=2
AT+QGPSCFG="priority",0,1
AT+QGPSCFG="priority"                    (verify)
AT+QGPSCFG="gnssconfig",1
AT+QGPSCFG="nmeasrc",1
AT+QGPSCFG="antennatype",1
AT+QGPSXTRA=1
AT+QGPSDEL=0
AT+QGPSEND
AT+CGACT?                                 (check PDP)
AT+CGACT=0,1                              (if PDP active)
AT+CGATT=0                                (if deactivation fails)
AT+CGACT=0,1                              (retry after detach)
AT+QGPS=1,1,0,1                           (turn on GPS)
AT+QGPSCFG="priority"                     (verify state = 4)
AT+QGPS?                                  (verify GPS is ON)
AT+QGPSGNMEA="GSV"                        (check satellites)
AT+QGPSLOC=2                              (get location - repeat until fix)
AT+QGPSEND                                (turn off GPS)

I was able to get the GPS functionality to work. It turns out I cannot get a signal inside of the building I am in.

Inside the room, the GPS signal will be greatly weakened and blocked. Your device needs to be placed outdoors or in an open area.

Herbert, do you see any areas where my logic can be refined?

I think your logic is reasonable.