Skip to content

GPS support in firmware#43

Open
MoridinBG wants to merge 24 commits into
sghctoma:mainfrom
MoridinBG:firmware/gps
Open

GPS support in firmware#43
MoridinBG wants to merge 24 commits into
sghctoma:mainfrom
MoridinBG:firmware/gps

Conversation

@MoridinBG

@MoridinBG MoridinBG commented Jan 4, 2026

Copy link
Copy Markdown
Contributor

This PR adds support for GPS tracking.
I am using a Quectel LC76G over UART with NMEA0183 messages as the concrete hardware implementation

The flow is as follows:

  • Start a recording
    • If there is GPS configured and available, it checks for a fix
      • If no good fix found, wait for it, shows GPS... on the screen with num of satelites and EPE (estimated position error) underneath. "Good" fix means >= 6 satelites visible, 3D error < 6m, 10 consecutive good samples
        • If Left is pressed again, while waiting for a fix, starts a session without GPS and powers it down
      • If good fix found, shows GPS OK and waits for Left to start recording.
    • If no GPS found or configured, star recording normally.

It disables stdio over uart, as it uses uart0 over GPO 0 & 1, but with stdio over usb that shouldn't be too big of a deal.

I have source dropped a fork of lwgps for parsing & validating NMEA messages while under dev, but ideally it would be a submodule.

Reads values from the Quectel specific PQMT messages - this gives us EPE and slightly more convenient values. Also gets in 2 messages what would need 3 with standard NMEA
Right button during GPS fix skips gps and records without it. Left cancels recording completely
…If left is pressed while waiting for fix, skip gps and start recording without it.
@MoridinBG MoridinBG marked this pull request as ready for review January 5, 2026 17:13
@MoridinBG

Copy link
Copy Markdown
Contributor Author

Initial testing looks promising. I have only walked around the house, but compared to my Garmin Enduro 3, the track appears to be much closer to the actual path taken. Better than iPhone 15 Pro as well.

Using an inline USB power meter, I am getting 0.1W/0.02A consumption while idle, both with GPS connected and idle and with power lines disconnected.
With GPS active and tracking it goes up to 0.06A/0.26-0.31W when all constellations are enabled (GPS, GLONASS, Galilelo, BeiDou) and down to 0.04A/0.21-0.26W with only GPS enabled. 1Hz vs 10Hz doesn't seem to make a difference at the (low) resolution my power meter has.

I have added a tool at test_utils/sst_to_gpx.py that will create a GPX file out of a SST file with GPS chunks.

@MoridinBG MoridinBG changed the title [DRAFT] GPS support in firmware GPS support in firmware Jan 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant