Skip to content

gps: Support multiconstellation NMEA#922

Open
Mixaill wants to merge 4 commits into
EttusResearch:masterfrom
Mixaill:gps-multiconstellation
Open

gps: Support multiconstellation NMEA#922
Mixaill wants to merge 4 commits into
EttusResearch:masterfrom
Mixaill:gps-multiconstellation

Conversation

@Mixaill

@Mixaill Mixaill commented May 15, 2026

Copy link
Copy Markdown

Description

Add support for correct handling of NMEA sentences with different talker IDs, such as $GN, $GL, $GA, or $GB.

Some third-party GNSS+OCXO / GPSDO are based on u-blox modules, and without changes, time synchronization is broken and the following warnings are generated:

[WARNING] [GPS] Unexpected GPSDO string: $GNVTG,,,,,,,,,N*2E
[WARNING] [GPS] Unexpected GPSDO string: $GNGGA,174855.50,,,,,0,00,99.99,,,,,,*77
[WARNING] [GPS] Unexpected GPSDO string: $GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99,1*33
[WARNING] [GPS] Unexpected GPSDO string: $GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99,3*31
[WARNING] [GPS] Unexpected GPSDO string: $GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99,4*36
[WARNING] [GPS] Unexpected GPSDO string: $GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99,5*37
[WARNING] [GPS] Unexpected GPSDO string: $GPGSV,1,1,01,07,,,24,1*64
[WARNING] [GPS] Unexpected GPSDO string: $GAGSV,1,1,00,0*74
[WARNING] [GPS] Unexpected GPSDO string: $GBGSV,1,1,00,0*77
[WARNING] [GPS] Unexpected GPSDO string: $GQGSV,1,1,00,0*64

Which devices/areas does this affect?

  • libuhd
  • devices with GPSDO module support

Testing Done

  • added host/tests/gps_ctrl_test.cpp
  • tested with USRP B210 with 3rdparty GNSS + OCXO module.

Checklist

  • I have read the CONTRIBUTING document.
  • My code follows the code style of this project. See CODING.md.
  • I have updated the documentation accordingly.
  • I have added tests to cover my changes, and all previous tests pass.
  • I have checked all compat numbers if they need updating (FPGA compat, MPM compat, noc_shell, specific RFNoC block, ...)

Mixaill added 4 commits May 15, 2026 19:48
NMEA sentences use a two-digit hexadecimal checksum.
The `_recv()` function may return NMEA sentences with trailing carriage return
and newline characters.
Modern GNSS receivers emit standard NMEA sentences (RMC, GGA, etc.) under
multiple talker IDs (GP, GL, GA, etc.).

Normalizes these sentences to their three-letter format, allowing the GPS logic to
remain compatible with various multi-constellation receivers.
@github-actions

github-actions Bot commented May 15, 2026

Copy link
Copy Markdown

CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅

@Mixaill

Mixaill commented May 15, 2026

Copy link
Copy Markdown
Author

I have read the CLA Document and I hereby sign the CLA

@mbr0wn

mbr0wn commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

This is a big change, will take time to review. It's not high on our priority. How did you try this? Did you put a third-party GPSDO into a B210 or X310?

@Mixaill

Mixaill commented Jun 11, 2026

Copy link
Copy Markdown
Author

Did you put a third-party GPSDO into a B210 or X310?

Yes, I installed a third-party GPSDO receiver (based on u-blox m10) into the B210.

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.

2 participants