If a device is connecting in to the server OK, but it is not updating location, or getting fresh fixes, it is generally due to one of the below reasons:
- Placement of the device which is blocking GPS signal
- Overly aggressive GPS parameters being applied - causing the device to give up on a fix attempt early, or discard a fix it deems too inaccurate.
- Issue with the GPS module or LNA on the device
To troubleshoot we can check each of these items.
1. Enable GPS Debug Logging to check signal strength
- Login to www.oemserver.com
- Select the device(s) - explained here
- Set the debug level - explained here
- To enable debugging, be sure to set the GPS module to Info - others can be set to Severe. Check the Debug Expiry (when the extra logging will end) is set far enough in the future so that you can receive enough logs.
- Wait for the device to connect and receive the logging change instruction
- After this change instruction, on the next fix attempt/upload extra debug information will be uploaded to the server.
[Click to expand]
Viewing Debug Logs
[Click to expand]
Reading the Logs
When the debug level is set to Info, all GPS debug messages will appear in the log. In addition to individual fix times, signal level diagnostics whenever a fix takes longer than 36 seconds, or the GPS decides to stay awake after a fix to collect more satellite information. Please note that while debug messages are enabled, uploads will use extra data.
Uploaded debug messages will look look like this:
- Debug[GPS][Info]: TTFF: 16s
This states that the device obtained the first fix in 16 seconds
- Debug[GPS][Info]: G01*26,G02*25,G06*20,G17*29,G19*22,R09/13,R21/14,
This indicates the constellation used, the satellite number, what occurred with the satellite and the strength. The constellations that could be used are G = GPS, R= GLONASS, E = Galileo, or Q = QZSS. The three different symbols that can be seen are *, #, and /. * indicates the satellite was used, # means the device has downloaded ephemeris and / shows the device is tracking the satellite but not strong enough to use.
- Debug[GPS][Info]: Valid=39s PDOP(x10)=36 3Dfix=1:
The device obtained a valid fix in 39 seconds with a PDOP of 3.6. This is after the fix has met the minimum requirements for a good fix. These are usually set-able in System Parameters.
Debug[CON][Warn]: Timeout detecting signal
Debug[GPS][Info]: GPS Off
In the example above it downloaded ephemeris from GPS 18 but the other two were too weak. It will need at least 4 satellites for the fix but only 1 had OK signal resulting in the GPS fix failing.
The GPS fix failing could be from either signal, device placement, or in rare cases device issue. See actions to take below.
Actions to take to improve GPS performance:
Check mounting location of the device.
GPS signal can be poor or attenuated if the device is mounted either inside metal containers or near large buildings, metal structures, large reflective surfaces. If we see poor signal strengths in the device logs, it is an indicator that this may be the issue. Remove the device from it's current location and test out in the open - if the strengths significantly improve - we know the mounting location was the issue.
If strengths do not improve, it may be a hardware issue, in this case return the device to DM as per our Digital Matter Warranty Returns Policy for inspection.
Adjust GPS fix Parameters
If we see good signal strength, but the GPS location is not updating, the issue may be overly strict parameters. We can loosen the fix requirements on the device. Check the below parameters:
Above are the default parameters. The idea of these settings is that the device will give up trying to get a GPS fix early if it sees essentially no signal early on (we might be in a basement for example).
At least 4 satellites are required for a GPS fix, so with this knowledge, behavior of the above parameters is as follows:
- Device wakes up and attempts to get a GPS Fix
- If after 20 seconds, we can't even see 1 satellite at all (even with weak signal), give up
- If after another 5 sec (25 sec total), we can't see 2, give up
- If after another 5 sec (30 sec total), we can't see 3, give up
- If after another 5 sec (35 sec total), we can't see 4, give up
This prevents the device trying to get a fix for a full 60 seconds when there is very limited signal early on, and it's unlikely to get one even if it tried for this long (or even longer).
This is based on the assumption that signal conditions are unlikely to improve during the fix attempt. i.e. if we can't see any satellites early, we must be in a garage or basement where we will never get a fix.
It should be suitable for most use-cases, but not all.
If you are having trouble getting fixes, try setting your parameters as follows to prevent the device giving up early:
This is the maximum time to wait to get a fix. In poor/low signal conditions, we may need to extend this if we are repeatedly failing fixes. Try 120 seconds. This will impact battery life.
Defaults shown above. Of importance is
- If it is much lower than the default of 5.0 (i.e 1.0, 2.0) - best to revert to defaults
- Position Accuracy
- If it is much lower than the default 50, fixes may be being discarded. Revert to 50 or even try setting to 100 temporarily
- Speed Accuracy
- Revert to default
- Discard First N Fixes
- Set to 0 temporarily
- To revert all these parameters to default, simply Remove the parameter tab and update parameters