-
Notifications
You must be signed in to change notification settings - Fork 52
19. GPS Setting Guide
This guide explains the GPS settings shown in the device Settings app. It is a
user-facing companion to docs/specs/gps.md: the spec defines runtime semantics,
while this guide explains which settings to change and which settings to leave
alone.
For most users, start with this profile:
| Setting | Recommended value | Why |
|---|---|---|
| GPS Enabled | ON |
Allows the runtime to power and poll GPS. |
| Receiver Baud | Auto |
Lets the board use its default compatible baud. |
| Probe Window | 900 ms |
Balanced startup detection window. |
| Receiver Profile | Auto |
Avoids assuming a receiver family. |
| RXM Init | Auto |
Lets the runtime decide whether receiver power-mode commands are safe. |
| GNSS Init | Auto |
Lets the runtime decide whether constellation commands are safe. |
| NMEA Init | Auto |
Lets the runtime decide whether internal NMEA setup is safe. |
| Location Mode | High Accuracy |
Best default when power is available. |
| Satellite Systems | GPS+BDS+GAL |
Good default for multi-GNSS receivers. |
| Position Strategy | Continuous |
Keeps GPS available for map, tracker, and team features. |
| Update Interval |
1s or 5s
|
Use 1s for live tracking; use 5s for lower update volume. |
| Altitude Reference | Sea Level |
Most user-facing altitude displays expect MSL-style altitude. |
| Coordinate Format | DD |
Decimal degrees are the safest default for maps and sharing. |
| NMEA Export | OFF |
Leave off unless an external tool needs NMEA output. |
| NMEA Sentences | GGA+RMC+GSA+GSV |
Full diagnostic set if export is enabled. |
For ordinary T-Deck with an external GPS or GPS shield, prefer conservative receiver settings until the module is proven:
| Setting | Safer value |
|---|---|
| Receiver Baud |
9600 if Auto does not find the module |
| Receiver Profile |
NMEA Passive for generic NMEA/CASIC/L76K-style modules |
| RXM Init |
Skip unless the receiver is known to support the command |
| GNSS Init |
Skip unless the receiver is known to support the command |
| NMEA Init |
Skip unless the receiver is known to support the command |
The GPS settings fall into three separate groups. Do not treat every setting as an accuracy knob.
-
Transport and receiver compatibility.
These settings decide how the firmware opens and initializes the receiver: baud rate, probe timing, receiver family profile, and whether receiver-specific setup commands may be sent.
-
Runtime behavior.
These settings decide how the GPS runtime behaves once the receiver is usable: enabled state, collection interval, power strategy, location mode, and constellation selection.
-
Presentation and external export.
These settings decide how position data is displayed or exported. They do not make the internal GPS parser more accurate.
The key distinction:
-
GPS Enabledmeans user intent. -
Readyin diagnostics means the transport path is open. - A valid fix means the receiver has produced a usable position.
- NMEA export is for external consumers and is separate from the internal GPS stream used by the firmware.
Controls whether the GPS runtime is allowed to power and poll the receiver.
Use ON when you want maps, tracker, team position, time sync, or sky plot data.
Use OFF to stop live GPS collection and power down the receiver when the board
supports doing so.
This is not the same as fix state. GPS Enabled = ON does not guarantee that the
receiver is connected, speaking, or fixed.
Controls the UART baud rate used to talk to the GPS receiver.
Options:
Auto96003840011520057600192004800
Use Auto first. Use a fixed baud when the module documentation states a known
rate or Auto opens the transport but the receiver never produces valid NMEA.
For ordinary T-Deck GPS shield or L76K/CASIC-style modules, 9600 is the safest
manual starting point.
Changing this setting may require restarting GPS or rebooting before the physical UART is reopened with the new rate.
Controls the short startup window used for receiver detection or compatibility probing.
Options:
250 ms500 ms900 ms1600 ms
Use 900 ms as the default. Shorter windows start faster but can miss slow or
cold receivers. Longer windows help slow modules but increase startup time.
If the receiver occasionally appears after boot but not consistently, try
1600 ms.
Tells the runtime how conservative it should be with receiver-specific behavior.
Options:
AutoNMEA Passiveu-blox Legacyu-blox Modern
Use Auto for normal operation. Use NMEA Passive for generic NMEA modules,
CASIC/L76K-style modules, or unknown GPS modules where the safest behavior is to
listen for NMEA and avoid vendor-specific commands.
Use u-blox Legacy or u-blox Modern only when the installed receiver is known
to be u-blox and you want the firmware to allow UBX configuration commands.
Selecting a u-blox profile for a non-u-blox receiver can prevent useful GPS
traffic or create confusing diagnostics.
Controls whether the firmware may send receiver power-mode configuration.
Options:
AutoSkipSend
Use Auto normally. Use Skip for unknown, generic NMEA, CASIC/L76K-style, or
problematic external modules. Use Send only when the receiver is known to
support the command path selected by the active receiver profile.
On ordinary T-Deck, Auto is intentionally conservative and skips UBX
configuration unless the receiver/protocol profile allows it.
Controls whether the firmware may send constellation configuration to the receiver.
Options:
AutoSkipSend
Use Auto normally. Use Skip if the receiver is generic NMEA, unknown, or if
changing Satellite Systems causes GPS traffic to stop. Use Send only for known
receivers that support the configured command family.
This setting gates whether Satellite Systems can be pushed into the receiver.
If it is skipped, the UI preference may be saved but the receiver can continue
using its own internal constellation configuration.
Controls whether the firmware may send internal NMEA message-rate configuration to the receiver.
Options:
AutoSkipSend
Use Auto normally. Use Skip for unknown or NMEA-passive receivers. Use Send
only for receivers that support the selected command family.
This setting is about receiver configuration, not the external NMEA export feature.
Selects the desired receiver behavior profile.
Options:
High AccuracyPower SaveFix Only
Use High Accuracy when you care about live maps, tracking, or stable team
position updates.
Use Power Save when battery life matters more than update responsiveness. Some
receiver/configuration combinations may ignore this setting.
Use Fix Only when the product goal is to obtain a position occasionally rather
than keep a continuously warm receiver.
On u-blox-style configuration paths, power-save behavior may be disabled when GLONASS is selected because that combination is not supported by the current receiver command logic.
Selects the GNSS constellations the firmware should request from compatible receivers.
Options:
GPS+BDS+GALGPSGPS+BDSGPS+GALGPS+BDS+GAL+GLO
Use GPS+BDS+GAL as the default. It gives broad sky coverage without enabling
every possible constellation.
Use GPS for older or simpler receivers, or when you want the most conservative
configuration.
Use GPS+BDS+GAL+GLO only when the receiver supports it and you do not need
power-save receiver mode. GLONASS can conflict with some power-save paths.
This setting only changes the receiver when GNSS initialization is allowed and supported. It does not create satellites on a receiver that lacks that GNSS capability.
Controls when GPS should stay powered.
Options:
ContinuousMotion WakeLow Power Off
Use Continuous for normal navigation, map following, track recording, and team
location sharing.
Use Motion Wake when the board has a supported motion sensor and you want GPS
to stay active while moving, then power down after the motion idle timeout.
Use Low Power Off when you want to keep GPS off for battery saving. In this
mode, diagnostics may show GPSD_POWER_OFF even though GPS Enabled is still
on.
Team mode can force GPS on while team features need live position.
Controls the collection or publish interval for GPS observations.
Options:
1s2s5s10s
Use 1s for live navigation and detailed tracks. Use 5s or 10s when battery
life and smaller logs matter more.
This is not the UART poll interval. The firmware may still read the receiver more frequently internally. This setting controls how often GPS observations are published or sampled by runtime policy.
Low battery power tiers may force a longer effective interval than the UI value.
Controls how altitude should be interpreted or displayed.
Options:
Sea LevelEllipsoid
Use Sea Level for most user-facing altitude displays. Use Ellipsoid only when
you know your workflow expects raw ellipsoid height rather than mean sea level
style altitude.
Controls how coordinates are displayed in UI surfaces that honor this setting.
Options:
DDDMSUTM
Use DD for decimal degrees. It is the most compatible format for maps, links,
and sharing.
Use DMS when you need degrees-minutes-seconds notation. Use UTM for grid
navigation workflows.
This setting does not change the GPS receiver or the internal coordinate system.
Controls user-visible NMEA output for external consumers.
Options:
OFF1Hz5Hz
Leave this OFF unless another tool needs NMEA output. Turning it on is not
required for the internal GPS runtime, map, tracker, or sky plot.
NMEA export is separate from the internal GPS stream. Do not use it as a privacy control and do not assume disabling export disables internal GPS parsing.
Selects which sentence group to export when NMEA Export is enabled.
Options:
GGA+RMC+GSA+GSVRMC+GSA+GSVGGA+RMC
Use GGA+RMC+GSA+GSV when debugging or feeding tools that need satellite
diagnostics. Use GGA+RMC for compact position-only consumers. Use
RMC+GSA+GSV when altitude/quality from GGA is not needed.
This setting does not decide which internal receiver sentences the firmware needs for its own GPS features.
Opens a snapshot of GPS health.
Important fields:
-
Code: high-level diagnostic result such asGPSD_OK,GPSD_NO_FIX,GPSD_NO_UART_TRAFFIC, orGPSD_POWER_OFF. -
Supported: whether the board build supports GPS. -
Enabled: user intent from GPS Enabled. -
Powered: whether the runtime currently has GPS powered. -
Ready: whether the transport path is open. -
Fix: whether a valid position is available. -
Sats,View,Use: satellite counts when known. -
CharsandRecent: receiver/parser traffic counters. -
Last RX: age of the last receiver byte. -
Poll: internal receiver poll interval. -
Publish: effective GPS collection interval.
Do not read Ready=1 as "GPS module is healthy." On UART-backed boards it can
mean only that the UART transport is open.
Start with:
- GPS Enabled:
ON - Receiver Baud:
9600 - Probe Window:
900 ms - Receiver Profile:
NMEA Passive - RXM Init:
Skip - GNSS Init:
Skip - NMEA Init:
Skip - Location Mode:
High Accuracy - Satellite Systems:
GPS+BDS+GAL - Position Strategy:
Continuous - Update Interval:
1sor5s
This profile listens for receiver output without assuming the module is u-blox. It is the safest first configuration for user-replaceable GPS modules.
If valid NMEA appears and the module documentation confirms u-blox support, you
can try a u-blox profile and Auto/Send init policies later. Change one
setting at a time.
Start with:
- Receiver Profile:
u-blox Modernfor modern u-blox modules, oru-blox Legacyfor older modules. - RXM Init:
Auto - GNSS Init:
Auto - NMEA Init:
Auto - Satellite Systems: choose the constellations supported by the module.
Use Send only when Auto is too conservative and you are sure the receiver
supports the command. If GPS traffic stops after changing these settings, return
the relevant init policy to Skip and reboot.
Start with:
- Position Strategy:
Motion Wakeif the board has a supported motion sensor. - Update Interval:
5sor10s. - Location Mode:
Power Save. - NMEA Export:
OFF.
If the board has no supported motion sensor, Motion Wake may behave like Continuous or may not provide the expected savings.
Use this sequence:
- Set GPS Enabled to
ON. - Set Position Strategy to
Continuous. - Set Receiver Baud to
Auto; if no traffic appears, try the documented module baud, commonly9600. - Set Receiver Profile to
NMEA Passive. - Set RXM Init, GNSS Init, and NMEA Init to
Skip. - Open Diagnostics.
- Wait outdoors or near a window with antenna sky view.
Interpret the result:
| Diagnostic pattern | Meaning |
|---|---|
Powered=0 |
GPS is off due to strategy, board support, or runtime power policy. |
Ready=0 |
Transport is not open or the board has not prepared GPS. |
Ready=1, Chars=0, Last RX=never
|
UART is open but no receiver traffic has been seen. Check baud, wiring, power, and reset. |
Recent rises but no fix |
Receiver is speaking but has not fixed yet, or the stream is noise. Check raw logs and sky view. |
| Valid NMEA appears but no fix | Receiver is alive; wait longer, move outdoors, or check antenna. |
Random [GPS][RAW_BURST] appears after LoRa TX |
See the T-Deck GPS UART / LoRa TX noise known issue document. |
On ordinary T-Deck, LoRa TX can induce bytes on the external GPS UART RX path if
the GPS TX line is floating or weakly driven. GPS settings can reduce parser
confusion, but they cannot remove the physical noise from GPIO44 / UART0_RX.
For this issue:
- Keep Receiver Profile at
NMEA Passiveunless the receiver is proven u-blox. - Keep RXM Init, GNSS Init, and NMEA Init at
Skipwhile debugging unknown modules. - Use Diagnostics and serial logs to distinguish real GPS data from UART noise.
- If changing LoRa TX power changes GPS UART byte counts, treat it as a hardware coupling symptom, not as a GPS accuracy setting.
See docs/devices/lilygo-tdeck-gps-uart-lora-noise.md for the hardware
verification procedure.
- Do not enable u-blox profiles for unknown GPS modules just to "try harder."
- Do not set all init policies to
Sendunless the receiver supports them. - Do not treat GPS Enabled as a guarantee of a physical module or a fix.
- Do not treat NMEA Export as required for internal GPS operation.
- Do not use Update Interval to diagnose UART noise.
- Do not change several compatibility settings at once. Change one setting, reboot or restart GPS if needed, then check Diagnostics.
English
- Home
- 0. Why This Exists
- 1. Quick Start
- 2. Supported Hardware
- 3. Installation & Flashing
- 3.5 Configuration Guide
- 4. Protocols & Data
- 4.1 Reticulum, LXMF and RNode Bridge
- 5. Offline Maps
- 6. Trail Mate Center
- 7. Team Features
- 8. UI Overview
- 9. Build from Source
- 10. Codebase Overview
- 11. Architecture
- 12. Design Decisions
- 13. FAQ
- 14. Troubleshooting
- 15. Logging and Debugging
- 16. Roadmap
- 17. Contributing
- 18. License and Third-Party
- 19. GPS Setting Guide
中文
- Home (中文)
- 0. Why This Exists (中文)
- 1. Quick Start (中文)
- 2. Supported Hardware (中文)
- 3. Installation & Flashing (中文)
- 3.5 Configuration Guide (中文)
- 4. Protocols & Data (中文)
- 4.1 Reticulum, LXMF and RNode Bridge (中文)
- 5. Offline Maps (中文)
- 6. Trail Mate Center (中文)
- 7. Team Features (中文)
- 8. UI Overview (中文)
- 9. Build from Source (中文)
- 10. Codebase Overview (中文)
- 11. Architecture (中文)
- 12. Design Decisions (中文)
- 13. FAQ (中文)
- 14. Troubleshooting (中文)
- 15. Logging and Debugging (中文)
- 16. Roadmap (中文)
- 17. Contributing (中文)
- 18. License and Third-Party (中文)