AN-001: NMEA 0183 Protocol Structure & Sentence Dictionary

DOC_ID: KMX-AN-001 | REV: 1.1.0 | READ: 26 min

Scope

AN-001 is a field-level NMEA 0183 reference for GNSS receiver output. It is designed for engineers who need to look up sentence fields, version differences, protocol value codes, and GNSS ID handling during integration. For checksum code, Python/C examples, serial-stream handling, and RTK workflow interpretation, see Mastering NMEA 0183.

Part 1 — Protocol Structure and Parsing Rules

NMEA 0183 defines how navigation devices transmit line-based ASCII sentences over a serial link. For GNSS receivers, the important parsing units are the talker ID, sentence formatter, comma-separated fields, checksum, and CR/LF line ending.

1.1 Transport Model: Single Talker, Multiple Listeners

NMEA 0183 is designed around a single talker sending printable ASCII sentences to one or more listeners. The protocol does not provide guaranteed delivery, retransmission, or high-bandwidth data transfer. For GNSS integration, the receiver output should be treated as a one-way navigation and status stream, not as a transactional bus.

This is why NMEA 0183 stays common in GNSS modules: it is easy to inspect, log, and bring up on UART or RS-422 links. The tradeoff is on the host side: dropped lines, partial reads, null fields, and vendor-specific sentences must be handled explicitly.

1.2 General Sentence Structure

NMEA 0183 sentences use a line-based ASCII structure: a start delimiter, a talker ID, a sentence formatter, comma-separated fields, a checksum delimiter, and a CR/LF line ending.

$TTSSS,field1,field2,...,fieldN*HH<CR><LF>

The core structure of standard NMEA 0183 GNSS sentences follows a fixed ASCII sequence of delimiters, talker IDs, sentence formatters, comma-separated fields, checksum, and CR/LF line ending:

Element Meaning Parser Note
$ Start delimiter Must appear at the beginning of a sentence.
TT Talker ID Identifies source constellation or combined solution context.
SSS Sentence formatter Defines the field layout, such as GGA, RMC, or GSV.
, Field delimiter Empty fields are valid and must be preserved.
fieldN Data field Meaning depends on sentence formatter and field index.
* Checksum delimiter Ends the checksum scope.
HH Checksum 8-bit XOR formatted as two uppercase hexadecimal digits.
<CR><LF> Line ending Terminates the sentence.

Parser rule: do not remove empty fields before indexing. Empty fields preserve field positions, and dropping them shifts every field after the gap.

Parser Rule — Length Limit

Classic NMEA 0183 sentences are conventionally limited to 82 characters including $ and <CR><LF>. Modern proprietary or vendor-specific sentences may exceed that limit, so a GNSS parser should allocate a larger receive buffer, commonly 256 bytes or more, and log overlength lines instead of crashing.

1.3 Standard, Query, and Proprietary Sentences

NMEA 0183 streams may contain standard GNSS sentences, query-style sentences, and proprietary vendor sentences. A field dictionary should treat these differently. Standard GNSS sentences such as GGA, RMC, GSA, and GSV have broadly documented field layouts. Proprietary sentences, often starting with a vendor prefix such as $P..., should be parsed only when the receiver manual defines them.

Production parsers should accept the standard formatters they need and log unknown vendor sentences without rejecting the entire stream. For an example of vendor command and output documentation, see the SCOUT PRO Protocol Reference and GUIDE Module Protocol.

1.4 Talker Identifiers

The NMEA 0183 talker identifier is the first two characters after the $ symbol and describes the source system or combined GNSS context:

Talker ID Source Version Context Parser Note
GP GPS Legacy / common Do not hard-code as the only valid prefix.
GL GLONASS Multi-GNSS May appear in GSA/GSV output.
GA Galileo Multi-GNSS May appear in GSA/GSV output.
GB BeiDou v4.11 relevance Important in Asia-Pacific receiver output.
GQ QZSS v4.11 relevance Japan regional system.
GI NavIC / IRNSS v4.11 relevance India regional system.
GN Combined GNSS Modern receiver output Common for fused multi-constellation position solutions.

Production parsers should match the sentence formatter, such as GGA or RMC, rather than the full address field, such as GPGGA or GNGGA.

1.5 Null Fields

NMEA 0183 represents missing data with an empty field, not with zero. A parser must preserve empty fields and treat numeric zero as a real value unless the status or quality field says the fix is invalid.

Pattern Meaning Parser Behavior
,, Missing field Treat as null / unknown.
0 Numeric zero Treat as a real numeric value.
0.000,N,0.000,E Real coordinate pair Do not infer “no data” from coordinate value alone.
GGA Quality = 0 Invalid fix Ignore position fields even if present.

1.6 Checksum Field

The checksum is the XOR of all bytes after $ and before *, formatted as two uppercase hexadecimal digits. This application note defines the field and scope only. For Python, C, and manual checksum examples, see Mastering NMEA 0183 §Checksum.

Part 2 — NMEA 0183 v3.01 vs v4.x: Version-Related Parsing Differences

NMEA 0183 version differences matter because older GPS-era parsers often assume fixed talker IDs and field counts, while v4.x-era GNSS receivers may output combined talkers, trailing status fields, System IDs, and Signal IDs.

2.1 Why Version Matters

NMEA 0183 v3.01, the last widely referenced GPS-era revision, often appears in older parser examples and legacy receiver integrations. v4.10-era GNSS output may include multi-GNSS talkers, trailing fields, mode indicators, System ID fields, and Signal ID fields that older parsers were not written to expect.

2.2 Version Summary Table

The evolution from legacy GPS-era NMEA 0183 v3.01 to multi-constellation v4.10 and v4.11 introduced several parser-facing changes:

Version Engineering Context Main Change Parser Impact
v3.01 Legacy GPS-era reference GPS-centric field expectations Older parsers often expect $GP....
v4.10 Common GNSS integration reference GN talker, navigation status, system / signal fields in some output Parser must tolerate extra trailing fields.
v4.11 Multi-constellation expansion BeiDou / QZSS / NavIC talker and System ID assignments Parser must not hard-code GP/GN only.
v4.30 Latest official revision Latest published specification revision and maintenance updates Adoption varies by receiver vendor and firmware generation.

2.3 v3.01 → v4.10: Field-Level Diff

A v3.01-era parser usually fails on current GNSS receiver logs because it assumes GPS-only talkers, shorter field layouts, and fixed field counts.

Sentence v3.01-Era Layout v4.10-Era Behavior Parser Impact
GGA Core structure largely stable Most integrations still parse the same core fields Low risk; avoid hard-coding $GPGGA.
RMC Older layouts may omit trailing status fields Mode / navigation status may appear as trailing fields Old parser may reject or misread trailing fields.
GSA GPS-centric assumptions common System ID may appear in multi-GNSS output Needed for constellation-level grouping.
GSV Satellite blocks without signal-level context Signal ID may appear in extended output Needed for signal-level diagnostics.
Area v3.01-Era Assumption v4.10-Era Receiver Behavior Risk
Talker ID $GP... expected $GN..., $GA..., $GB... may appear Valid fixes dropped.
Field count Fixed shorter layouts Extra trailing fields may appear Index errors or false rejection.
GSA/GSV GPS-centric satellite model Multi-constellation output Incomplete sky model.
RMC status Minimal trailing fields Mode / navigation status fields may appear Wrong field mapping.
Signal info Not expected Signal ID may appear Unknown trailing field handling needed.

2.4 v4.10 → v4.11: Talker ID Expansion

In v4.11-era output, BeiDou, QZSS, and NavIC/IRNSS talker identifiers become important for multi-constellation receivers. A parser should treat these as valid GNSS talkers and should tolerate future or vendor-specific talkers without crashing.

Talker ID System Parsing Requirement
GB BeiDou Treat as valid GNSS talker.
GQ QZSS Treat as valid GNSS talker.
GI NavIC / IRNSS Treat as valid GNSS talker.
Unknown future talker Vendor / future system Preserve raw sentence; do not crash.

2.5 v4.30 Note

NMEA 0183 v4.30 is the latest official revision. For GNSS integrators, its practical significance is ongoing standard maintenance, not a reason to rewrite every v4.10/v4.11 parser. Many receiver manuals and firmware outputs still document v4.10/v4.11-era behavior around talker IDs, System ID, Signal ID, and sentence-specific trailing fields. Always check the receiver vendor manual for exact field support.

2.6 Backward Compatibility Checklist

Use this checklist when adapting older GPS-era parser examples to current multi-GNSS receiver output.

Check Why
Match formatter, not full talker prefix Avoid $GPGGA vs $GNGGA failures.
Count fields before indexing Avoid crashes on shorter or longer layouts.
Preserve null fields Avoid shifting field positions.
Ignore unknown trailing fields safely Support newer receiver output.
Validate checksum before parsing fields Avoid interpreting corrupted bytes.
Preserve raw sentence in logs Enable later debugging when vendor output differs.

Part 3 — NMEA 0183 Sentence Dictionary (Messages & Field Tables)

In NMEA 0183, GGA carries fix quality and RTK status, RMC carries date and velocity, GSA reports satellites used in the solution, and GSV reports satellites in view. The field tables below preserve NMEA field order; empty fields should be preserved by the parser.

3.1 GGA Message — Global Positioning System Fix Data

The NMEA 0183 GGA sentence is the core fix-data string for GNSS receivers. It reports position, altitude, fix quality, satellite count, HDOP, correction age, and station ID:

$GNGGA,072446.00,3114.562,N,12128.050,E,4,21,0.6,15.2,M,8.9,M,1.0,0031*50
# Field Name Format / Example Description Parser Note
0 Address $GNGGA Talker + formatter Parse formatter GGA.
1 UTC Time 072446.00 Fix time No date.
2 Latitude 3114.562 DDMM.MMMM Convert before map use.
3 N/S Indicator N Latitude hemisphere S = negative.
4 Longitude 12128.050 DDDMM.MMMM Convert before map use.
5 E/W Indicator E Longitude hemisphere W = negative.
6 Quality Indicator 4 Fix status See Part 4.1.
7 Satellites Used 21 Satellites in solution Not satellites in view.
8 HDOP 0.6 Horizontal dilution Geometry indicator.
9 Altitude 15.2 Altitude above MSL Unit in field 10.
10 Altitude Unit M Meters Usually M.
11 Geoid Separation 8.9 Separation from ellipsoid Unit in field 12. See Beyond WGS84.
12 Geoid Unit M Meters Usually M.
13 Correction Age 1.0 Age of differential / RTK correction Optional. See RTCM Unpacked.
14 Station ID 0031 Base station ID Optional.
Checksum Checksum *50 XOR checksum Not a comma field.

Coordinate Warning

NMEA latitude and longitude use DDMM.MMMM / DDDMM.MMMM format, not decimal degrees. Passing 3114.562 directly to a map API as decimal degrees will produce a wrong location.

  • GGA does not contain date.
  • GGA Field 6 carries RTK fix status.
  • Satellites used is not the same as satellites in view.
  • Altitude and geoid separation should not be mixed.
  • For engineering interpretation of Quality 4/5, see Mastering NMEA 0183 §RTK Applications.

3.2 RMC Message — Recommended Minimum Specific GNSS Data

The NMEA 0183 RMC sentence is the minimum navigation record. Compared with GGA, it adds date, speed over ground, and course over ground in one string:

$GNRMC,072446.00,A,3114.562,N,12128.050,E,10.5,180.0,200625,0.0,E,R,S*71
# Field Name Format / Example Description Parser Note
0 Address $GNRMC Talker + formatter Parse formatter RMC.
1 UTC Time 072446.00 Fix time Combine with date field.
2 Status A Data validity A valid, V warning.
3 Latitude 3114.562 DDMM.MMMM Position.
4 N/S N Hemisphere S = negative.
5 Longitude 12128.050 DDDMM.MMMM Position.
6 E/W E Hemisphere W = negative.
7 Speed Over Ground 10.5 Knots Convert if needed.
8 Course Over Ground 180.0 Degrees true Course, not heading.
9 Date 200625 DDMMYY RMC’s key advantage.
10 Magnetic Variation 0.0 Degrees Often empty.
11 Variation Direction E E/W Often empty.
12 Mode Indicator R Positioning mode Version-dependent.
13 Navigation Status S Status flag Version-dependent / optional.
Checksum Checksum *71 XOR checksum Not a comma field.

GGA vs RMC: GGA carries altitude and fix quality but no date; RMC carries date and course over ground but no altitude.

  • RMC includes date; GGA does not.
  • RMC does not include altitude.
  • Course over ground is not true heading.
  • Mode / navigation status fields are version-dependent; count fields before indexing.

3.3 GLL — Geographic Position

The NMEA 0183 GLL sentence carries geographic position, UTC time, and validity status in a compact position-only format.

$GNGLL,3114.562,N,12128.050,E,072446.00,A,R*6C
# Field Name Format / Example Description Parser Note
0 Address $GNGLL Talker + formatter Parse formatter GLL.
1 Latitude 3114.562 DDMM.MMMM Position only.
2 N/S N Hemisphere S = negative.
3 Longitude 12128.050 DDDMM.MMMM Position only.
4 E/W E Hemisphere W = negative.
5 UTC Time 072446.00 Time No date.
6 Status A Data valid / warning A valid, V warning.
7 Mode Indicator R Positioning mode Version-dependent.
Checksum Checksum *6C XOR checksum Not a comma field.
  • GLL has no altitude.
  • GLL has no GGA-style RTK quality field.
  • It is common in legacy and marine-style logs.

3.4 GNS — GNSS Fix Data

The NMEA 0183 GNS sentence is the multi-constellation alternative to GGA and can expose a per-system mode indicator string when the receiver supports it.

$GNGNS,072446.00,3114.562,N,12128.050,E,RR,21,0.6,15.2,8.9,1.0,0031*7F
# Field Name Format / Example Description Parser Note
0 Address $GNGNS Talker + formatter Parse formatter GNS.
1 UTC Time 072446.00 Fix time No date.
2 Latitude 3114.562 DDMM.MMMM Position.
3 N/S N Hemisphere S = negative.
4 Longitude 12128.050 DDDMM.MMMM Position.
5 E/W E Hemisphere W = negative.
6 Mode Indicators RR Mode per constellation GNS-specific value; receiver support varies.
7 Satellites Used 21 Satellites in solution Not satellites in view.
8 HDOP 0.6 Horizontal dilution Geometry indicator.
9 Altitude 15.2 Altitude above MSL Unit implied by receiver context.
10 Geoid Separation 8.9 Geoid / ellipsoid separation Optional.
11 Correction Age 1.0 DGNSS / RTK correction age Optional.
12 Station ID 0031 Differential reference station ID Optional.
Checksum Checksum *7F XOR checksum Not a comma field.
  • GNS is useful when output distinguishes fix modes by constellation.
  • The mode indicator string is the key field that separates GNS from a simple GGA substitute.
  • Receiver support varies; treat GNS as optional unless your vendor manual requires it.

3.5 VTG — Course Over Ground and Ground Speed

The NMEA 0183 VTG sentence carries course over ground and ground speed, usually in knots and kilometers per hour.

$GNVTG,180.0,T,180.0,M,10.5,N,19.4,K,A*35
# Field Name Format / Example Description Parser Note
0 Address $GNVTG Talker + formatter Parse formatter VTG.
1 Course True 180.0 Track made good, true Course, not heading.
2 True Indicator T True reference Usually T.
3 Course Magnetic 180.0 Track made good, magnetic May be empty.
4 Magnetic Indicator M Magnetic reference May be empty.
5 Speed Knots 10.5 Speed over ground Knots.
6 Knots Unit N Nautical miles per hour Usually N.
7 Speed km/h 19.4 Speed over ground Kilometers per hour.
8 km/h Unit K Kilometers per hour Usually K.
9 Mode Indicator A Positioning mode Version-dependent.
Checksum Checksum *35 XOR checksum Not a comma field.
  • VTG reports course over ground, not true heading.
  • Low-speed robots may see noisy or unstable course-over-ground values.
  • Use HDT or a dual-antenna / INS heading source when true heading is required.

3.6 HDT — Heading, True

The NMEA 0183 HDT sentence carries true heading when the receiver or host system has a heading-capable source.

$GNHDT,123.4,T*2F
# Field Name Format / Example Description Parser Note
0 Address $GNHDT Talker + formatter Parse formatter HDT.
1 Heading 123.4 Degrees true True heading value.
2 True Indicator T True north reference Usually T.
Checksum Checksum *2F XOR checksum Not a comma field.

HDT typically appears with dual-antenna GNSS, INS integration, or another heading-capable source. A single moving antenna can provide course over ground, but not true heading while stationary.

3.7 GSA Message — GNSS DOP and Active Satellites

The NMEA 0183 GSA sentence reports the satellites used in the current solution and the DOP values that describe satellite geometry:

$GNGSA,A,3,03,07,11,14,,,,,,,,,1.5,0.6,1.2,1*31
# Field Name Format / Example Description Parser Note
0 Address $GNGSA Talker + formatter Parse formatter GSA.
1 Mode 1 A Manual / automatic See Part 4.3.
2 Mode 2 3 Fix type 1 no fix, 2 2D, 3 3D.
3–14 Satellite IDs 03,07,11,14... Satellites used in solution Empty fields are valid.
15 PDOP 1.5 Position dilution of precision 3D geometry.
16 HDOP 0.6 Horizontal dilution of precision Horizontal geometry. See GNSS Accuracy Decoded.
17 VDOP 1.2 Vertical dilution of precision Vertical geometry.
18 System ID 1 GNSS system identifier Optional / version-dependent. See Part 4.6.
Checksum Checksum *31 XOR checksum Not a comma field.

GSV lists satellites in view; GSA lists satellites used in the current navigation solution.

  • Multi-GNSS receivers may output multiple GSA sentences.
  • System ID support and location may vary by receiver and NMEA revision; count fields before indexing.
  • Preserve empty satellite ID fields rather than compressing the list.

3.8 GSV Message — GNSS Satellites in View

The NMEA 0183 GSV sentence lists satellites currently in view. Because one GSV sentence can carry up to four satellite blocks, multi-satellite sky views are reported through pagination:

$GPGSV,3,1,12,03,45,150,42,07,30,210,39,11,62,080,45,14,15,310,35,1*60
# Field Name Format / Example Description Parser Note
0 Address $GPGSV Talker + formatter Parse formatter GSV.
1 Total Messages 3 Total GSV pages in this cycle Use for pagination.
2 Message Number 1 Current GSV page Starts at 1.
3 Satellites in View 12 Total visible satellites Not satellites used.
4–7 Satellite Block 1 03,45,150,42 ID, elevation, azimuth, SNR One satellite.
8–11 Satellite Block 2 07,30,210,39 ID, elevation, azimuth, SNR One satellite.
12–15 Satellite Block 3 11,62,080,45 ID, elevation, azimuth, SNR One satellite.
16–19 Satellite Block 4 14,15,310,35 ID, elevation, azimuth, SNR One satellite.
20 Signal ID 1 Signal / frequency context Optional / version-dependent. See Part 4.5.
Checksum Checksum *60 XOR checksum Not a comma field.
  • GSV lists satellites in view, not satellites used in the fix.
  • Read Field 1 and Field 2 before reconstructing a sky-view cycle.
  • Group GSV pages by talker ID, message number, and Signal ID when Signal ID is present.

3.9 GST — GNSS Pseudorange Error Statistics

The NMEA 0183 GST sentence reports pseudorange residual statistics and error estimates used during receiver diagnostics.

$GNGST,072446.00,1.2,0.8,0.6,45.0,0.5,0.4,0.9*7E
# Field Name Format / Example Description Parser Note
0 Address $GNGST Talker + formatter Parse formatter GST.
1 UTC Time 072446.00 Time of statistics No date.
2 RMS 1.2 RMS pseudorange residual Diagnostics. See GNSS Accuracy Decoded.
3 Semi-major Error 0.8 Error ellipse semi-major axis 1-sigma style output context.
4 Semi-minor Error 0.6 Error ellipse semi-minor axis 1-sigma style output context.
5 Orientation 45.0 Error ellipse orientation Degrees.
6 Latitude Error 0.5 Latitude error estimate Diagnostics.
7 Longitude Error 0.4 Longitude error estimate Diagnostics.
8 Altitude Error 0.9 Altitude error estimate Diagnostics.
Checksum Checksum *7E XOR checksum Not a comma field.
  • GST is not always enabled by default.
  • GST reports pseudorange residual statistics used during receiver diagnostics.
  • Use GGA/RMC for fix state; use GST for error statistics.

3.10 ZDA — Time and Date

The NMEA 0183 ZDA sentence carries UTC time and calendar date without position fields.

$GNZDA,072446.00,20,06,2025,00,00*7A
# Field Name Format / Example Description Parser Note
0 Address $GNZDA Talker + formatter Parse formatter ZDA.
1 UTC Time 072446.00 Time hhmmss.ss.
2 Day 20 UTC day Calendar date.
3 Month 06 UTC month Calendar date.
4 Year 2025 UTC year Four digits.
5 Local Zone Hours 00 Local zone offset hour Often zero for UTC workflows.
6 Local Zone Minutes 00 Local zone offset minute Often zero for UTC workflows.
Checksum Checksum *7A XOR checksum Not a comma field.
  • ZDA is useful for timestamping when date is needed separately from position.
  • GGA has time but no date; ZDA can provide the missing date context.
  • ZDA has no position fields.

Part 4 — NMEA 0183 Codes, Field Values, and GNSS IDs

NMEA 0183 encodes fix quality, positioning mode, navigation status, signal context, and constellation identity as compact numeric or single-character codes. The tables below enumerate the values a GNSS parser should recognize without hard-failing on unknown future values.

4.1 GGA Quality Indicator — Spec Enumeration

This table is a value reference. For RTK workflow interpretation and expected field behavior, see Mastering NMEA 0183 §RTK Applications.

Value Name Related RMC Mode Note
0 Invalid N No usable fix.
1 GNSS fix / Autonomous A Basic GNSS fix.
2 DGNSS / Differential D Differential corrections applied.
3 PPS / Precise P Precise service.
4 RTK Fixed R Fixed ambiguity.
5 RTK Float F Float ambiguity.
6 Estimated / DR E Estimated / dead reckoning.
7 Manual Input M Manually entered.
8 Simulator S Test mode.

4.2 RMC Mode Indicator — Spec Enumeration

Older RMC sentences may omit this field. Treat a missing mode indicator as unknown, not invalid.

Mode Name Related GGA Quality
A Autonomous 1
D Differential 2
E Estimated / DR 6
F Float RTK 5
M Manual Input 7
N No Fix 0
P Precise 3
R RTK Fixed 4
S Simulator 8

4.3 GSA Mode Fields

GSA uses two mode fields: one for manual/automatic selection and one for fix dimension. These values should be parsed before the satellite ID list.

Field Value Meaning
Mode 1 M Manual.
Mode 1 A Automatic.
Mode 2 1 No fix.
Mode 2 2 2D fix.
Mode 2 3 3D fix.

Navigation status fields may be absent depending on NMEA version, sentence layout, and receiver firmware. Use these values only when the field is present and documented by the receiver vendor.

Value Meaning Parser Note
S Safe Use with receiver documentation.
C Caution Treat as degraded / context-dependent.
U Unsafe Do not use for safety-critical decisions without validation.
V Not valid / unavailable Vendor/version dependent.

4.5 Signal ID Reference / Handling Notes

Signal ID fields are version- and receiver-dependent. Treat them as optional metadata unless your application explicitly needs signal-level diagnostics. Signal ID numbering is per-constellation: the same numeric value can map to different signals depending on the system, so always interpret Signal ID together with the talker ID or System ID.

Context Meaning Parser Guidance
Signal ID present Identifies signal / frequency context Preserve value; do not reject unknown values.
Signal ID missing Older or simpler output Treat as unknown.
Multi-frequency output Multiple signal contexts may appear Group by talker/system and satellite ID.
Vendor-specific output May not follow generic expectations Check receiver manual.

Do not reject a valid GSA or GSV sentence only because the Signal ID is missing, unfamiliar, or outside your hard-coded map. For signal and frequency background, see GNSS Constellations and L1/L2/L5 Frequencies.

Constellation Common Signal Context Parser Note
GPS L1 C/A, L2C, L5 Vendor support varies.
Galileo E1, E5 Vendor support varies.
BeiDou B1, B2, B3 Talker may be GB or GN.
GLONASS G1/G2 Slot / frequency handling varies.
QZSS L1/L5 Regional system.
NavIC L5 / S-band Regional system.

4.6 GNSS System ID

GNSS System ID assignments differ between v4.10 and v4.11: v4.10 defines 1–3 for GPS, GLONASS, and Galileo, while BeiDou, QZSS, and NavIC/IRNSS appear in v4.11-era expansion.

System ID v4.10 Meaning v4.11-Era Meaning Parser Note
1 GPS GPS Core v4.10 context.
2 GLONASS GLONASS Core v4.10 context.
3 Galileo Galileo Core v4.10 context.
4 Reserved BeiDou Do not interpret as BeiDou unless receiver/version context supports it.
5 Reserved QZSS Verify receiver manual.
6 Reserved NavIC / IRNSS Verify receiver manual.
7–F Reserved Reserved / future / vendor context Preserve raw value; do not crash.

4.7 Satellite ID / SV ID Allocation — Common NMEA Context

In v4.10-era GSA/GSV output, constellation context should be interpreted through talker ID and System ID first. Satellite ID values are local to that system context; global ranges used by some receivers are implementation conventions, not a universal parsing rule.

Context Common Meaning Parser Guidance
System ID + Satellite ID v4.10-style constellation-aware identification Prefer system/talker context before interpreting the numeric satellite ID.
1–32 Common GPS satellite ID range Safe as a GPS-context reference.
33–64 Common SBAS context Some receivers use alternative SBAS ranges.
65–96 Common GLONASS receiver convention Do not treat as the official v4.10 global mechanism without system context.
Galileo / BeiDou / QZSS / NavIC Often identified by talker or system context Do not infer constellation from number alone.
Unknown ID range Vendor / future behavior Preserve raw value and log if needed.

Part 5 — Frequently Asked Questions

What changed between NMEA 0183 v3.01 and v4.10?

NMEA 0183 v4.10-era receiver output is more tolerant of multi-GNSS operation than v3.01-era parser examples usually assume. A modern receiver may output combined talkers such as GN, extra trailing fields, System IDs, Signal IDs, and version-dependent mode/status fields that older GPS-only parsers may reject or misread.

How does NMEA 0183 handle negative coordinates?

NMEA 0183 does not use minus signs in latitude or longitude fields. Latitude uses the N/S indicator, where S means negative latitude; longitude uses the E/W indicator, where W means negative longitude.

What is the difference between GGA and RMC?

GGA carries fix quality, satellite count, HDOP, altitude, correction age, and station ID, but it does not include date. RMC carries date, time, position, speed over ground, course over ground, and validity, but it does not include altitude.

Why does my NMEA parser crash on the GSV sentence?

GSV is paginated. A receiver tracking more than four satellites sends multiple GSV sentences per cycle, so the parser must read the Total Messages and Message Number fields before reconstructing the full sky view.

What is the difference between an empty field and zero in NMEA 0183?

An empty field means the value is null, unknown, or unavailable. A zero is a valid numeric value. Parsers must preserve empty fields so comma-separated field indexes do not shift.

How should a parser handle unknown Talker IDs, System IDs, or Signal IDs?

A parser should preserve unknown Talker IDs, System IDs, and Signal IDs instead of hard-failing. Match the sentence formatter first, validate checksum, parse the fields you support, and keep unknown identifiers in logs for receiver-specific debugging.

Zero Jiang - Founder of Kalmix

Zero Jiang

Founder, Kalmix

Dedicated to making high-precision GNSS positioning accessible and reliable for global developers. Passionate about autonomous systems, RTK technology, and robust hardware engineering.

Need receiver-side help with NMEA output or RTK integration?
Back to blog