Pico LTE refuses to get a GPS Fix

Using two different GPS antennas (an active and a passive) sitting in my driveway in suburban America with a clear view of the sky, i’m unable to get a GPS fix. I just get CME Error 516. I know the antennas work because i’ve used them with other GPS modules/modems. Any ideas?

Same problem here. Beginning to think the chip they used is rubbish because I have no problems with the Adafruit GPS module.

Does this come with the Raspberry Pi Pico W?

Hi,

I’m sorry to hear that you’re facing difficulties with getting a GPS fix on your Pico LTE. Let’s try to troubleshoot the issue. CME Error 516 indicates that the GPS module is unable to get a fix. Here are a few things you could try:

  • Connection: Double-check the antenna connections to ensure they are properly connected to the Pico LTE. Loose connections can affect GPS reception.

  • Placement: Make sure the antennas have an unobstructed view of the sky. In urban environments, tall buildings, trees, and structures can block GPS signals. Try placing the antennas in different locations to see if you can get a better signal.

  • Power Supply: Confirm the module gets stable power. Voltage changes can affect performance.

  • Interference: Check for devices around causing radio frequency interference.

  • Antenna Settings: Make sure to select passive antenna type for Pico LTE settings.

GPS signal acquisition can sometimes be affected by various factors and can take time to fix. To find the problem, try each step one by one.

I encountered a recurring problem with GPS fix: warm restarts were inconsistent, and cold restarts took longer than they should to get a fix. Despite setting GNNS as a priority achieving a reliable GPS fix remained hit or miss. Frustrated, I delved into the documentation and devised two functions that solved that issue:

  1. Set XTRA – This function initiates the download of a file that, along with current time data, significantly accelerates GPS fix acquisition.
  2. Set XTRA Auto Download – This function automatically downloads the XTRA file once GPS is enabled. Keep in mind that these files have expiration dates; the default download file expires after 3 days, but you can adjust this to 1, 3, or 7 days. Also, note that the file size varies based on the selected expiration duration.

There are additional options like time injection and checking XTRA validity outlined in the GNSS application note, which offers a comprehensive understanding of the entire process. However, it’s important to note that these files need to be downloaded, which accumulates over time and will impact data consumption. I opted to enable this feature because my device typically experiences a cold start once a month, necessitating a swift GPS fix. Consider your usage patterns before enabling these functions.

For those interested, here are the functions I created to address these issues. This was created in a hurry just to verify that would fix my issue so please forgive me if best practices were ignored. Simply add them to the gps.py file and call them from your main using 1 as a parameter. Hope this help! :

def set_xtra(self, feature):
“”"
Set the xtra file download feature for GPS.

Parameters
----------
feature : int
    xtra file download feature for the GPS.
    * 0 --> disable xtra
    * 1 --> enable xtra

Returns
-------
dict
    Result that includes "status" and "response" keys
* Checks if xtra is enabled and will enable/disable.
**Module will restart to activate the feature if enabled
"""
check_xtra_command = 'AT+QGPSXTRA?'
is_xtra_enabled = self.atcom.send_at_comm(check_xtra_command)

if feature == 1 and '+QGPSXTRA: 1' not in is_xtra_enabled['response']:
    xtra_command = f'AT+QGPSXTRA={feature}'
    return self.atcom.send_at_comm(xtra_command)
elif feature == 0 and '+QGPSXTRA: 0' not in is_xtra_enabled['response']:
    xtra_command = f'AT+QGPSXTRA={feature}'
    return self.atcom.send_at_comm(xtra_command)

return is_xtra_enabled

def set_xtra_autodownload(self, feature):
“”"
Set the xtra file autodownload when GPS is enabled.

Parameters
----------
feature : int
    xtra file autodownload feature for the GPS.
    * 0 --> disable xtra autodownload
    * 1 --> enable xtra autodownload

Returns
-------
dict
    Result that includes "status" and "response" keys
* Checks if xtra autodownload is enabled and if it's not will enable/disable it.
**Module will restart to activate the feature if enabled
"""
check_xtra_autodownload_command = 'AT+QGPSCFG="xtra_autodownload"'
is_xtra_autodownload_enabled = self.atcom.send_at_comm(check_xtra_autodownload_command)

if feature == 1 and '+QGPSCFG: "xtra_autodownload",1' not in is_xtra_autodownload_enabled:
    xtra_autodownload_command = f'AT+QGPSCFG="xtra_autodownload",{feature}'
    return self.atcom.send_at_comm(xtra_autodownload_command)
elif feature == 0 and '+QGPSCFG: "xtra_autodownload",0' not in is_xtra_autodownload_enabled['response']:
    xtra_autodownload_command = f'AT+QGPSCFG="xtra_autodownload",{feature}'
    return self.atcom.send_at_comm(xtra_autodownload_command)

return is_xtra_autodownload_enabled