The Yabby3 has various parameters which determine it's behavior when acquiring GPS fixes:
- Timeouts (how long without getting a fix before giving up)
- GPS operating mode
- Accuracy requirements for getting a fix
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.
Advanced GPS Settings
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 15 seconds, we can't even see 1 satellite at all (even with weak signal), give up
- If after another 5 sec (20 sec total), we can't see 2, give up
- If after another 5 sec (25 sec total), we can't see 3, give up
- If after another 5 sec (30 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:
The GPS module has two modes of operation: Low Power and Performance. Performance mode uses approximately 1.5x the power of Low Power mode but works harder at getting a fix. The default is Performance Mode.
If you are having trouble acquiring fixes, ensure Performance Mode is set.
Position Accuracy/TTFF Priority
When the device attempts to get a fix, by default, it prioritises getting a fix as fast as possible (yet still meeting the PDOP and position accuracy requirements). This maximises battery life.
Instead, the setting Prioritise Position Accuracy = Yes will changes this behaviour.
In our testing of a device in an office window, we observed:
- In 20,000 fixes, with Position Accuracy Prioritised - it failed 90 fixes, vs 60 when prioritising TTFF
- Failing more fixes uses additional battery, but this is only a 0.1% difference
- When fixes succeeded the average TTFF was about the same - but how many are failed/succeeded with Position Accuracy Prioritised will depend on the conditions.
In the figure below, red is with Priortise Position Accuracy = Yes. It can be seen a few of the larger outliers are filtered out by the GNSS module with this setting.
PDOP, Position Accuracy and Speed Accuracy are the minimum accuracy requirements for a fix to be considered 'valid'. When the device attempts to get a GPS fix, turns on it's GPS module and attempts to get a fix each second. It may in fact get a rough location fix, but it will not be accepted or logged, and the device will keep trying until it has one that meets this requirement, or the fix fails. We log the first fix that meets the requirements and turn off the GPS after this.
As such lowering these values doesn't automatically result in more accurate fixes, it will often result in more failures. The defaults are a good starting point - fixes are generally accurate to within 10m when in decent signal.
If we are having trouble acquiring a fix we can loosen these fix requirements e.g.
This has the device 'hold' it's current position (lat/long) if the uncertainty in position is below this value. The idea being if we get subsequent fixes only a few meters apart, this is more likely due to the uncertainty vs actual motion - so no need to update position and have the unit appear to 'wander'.
Require 3D Fix
Setting to NO will mean we can get a fix with 3 satellites instead of 4 - but altitude isn't returned. Setting to No may help in acquiring a fix in low signal conditions.
Discard First N Fixes
Discards a configurable number of valid fixes from the GPS before accepting a final fix. This gives the GPS some time to improve its accuracy, and lowers the chance of outlying GPS fixes slipping through the filters. Increasing this number means the device is more 'sure' of it's position - reducing will allow fixes to be acquired more easily (but potentially less accurate)
Minimum Initial Satellites
This option allows you to discard all GPS positions until a certain number of satellites have been acquired at a specified signal strength. Like the Discard First Fixes option, this gives the module more time to refine and cross-check its estimate, reducing the risk of erroneous fixes. It is intended for advanced use cases that require very high position certainty (ie. mission critical geofencing). Since it can affect fix times badly, the default is zero (disabled)
Minimum Initial Signal Margin
This is the minimum signal strength for the Minimum Initial Satellites option. Setting it to a low value (-20) makes the Minimum Initial Satellites function simply count the number of satellites in the fix, rather than requiring that they be high power. A value of zero requires a decent signal strength, and 5 requires a strong signal. It is generally difficulty to get more than a few satellites with strong signals, and most benefit comes from acquiring many satellites rather than a few strong ones. So if you really need the Minimum Initial Satellites features, the best place to start is with a low value.