Skip to content

NMEA 0183

Readable marine sentences still require timing and formatter discipline.

Status Examples Runtime example Source posture
final-copy synthetic/passive available standards metadata plus public/tooling cross-checks

A Concrete Artifact

$GPGGA,120000,0000.000,N,00000.000,E,1,04,1.0,10.0,M,0.0,M,,*45

Synthetic

Synthetic offline sample for explanation; not a real operational trace or live-system instruction.

Inspection Trap

Readable ASCII can feel safer than binary traffic. The trap is to treat a checksum-correct NMEA sentence as fresh navigation truth without talker, formatter, receiver, gateway, and timing authority.

This page inspects one synthetic GGA sentence as text evidence: delimiters, talker ID, formatter, fields, blank values, checksum, and cadence boundaries.

Worked Decode

  1. $ marks the start of a conventional NMEA sentence.
  2. GP is the talker ID in this synthetic sentence; it suggests GPS-source formatting, not universal receiver truth.
  3. GGA identifies the formatter for fix data fields.
  4. 120000 is the UTC time field in the formatter context.
  5. Latitude and longitude are deliberately zeroed teaching values. They are not a field capture from a vessel.
  6. 1,04,1.0 indicates a fix-quality-like field, four satellites, and an HDOP-like value under the GGA formatter.
  7. The checksum covers the characters between $ and *. For this synthetic sentence, XOR over GPGGA,120000,0000.000,N,00000.000,E,1,04,1.0,10.0,M,0.0,M,, produces 0x45, matching *45.
  8. The empty trailing fields before *45 are not zero. Blank fields are their own evidence: unknown, unavailable, or not supplied under the formatter context.
  9. A matching checksum proves only sentence-text integrity. It does not prove that the fix is fresh, that the receiver has current sky view, or that a gateway has not replayed old text.

What The Evidence Supports

  • The artifact supports sentence-boundary, talker, formatter, comma-field, blank-field, and checksum inspection.
  • The checksum result supports sentence-text integrity for the synthetic body between $ and *.
  • Repeated timestamped sentences can support sentence cadence, stale fields, checksum-failure, talker/formatter mix, stream continuity, timing context, and whether observations remain coherent over time.

What The Evidence Does Not Support

  • The artifact does not prove vessel position, receiver health, sky view, installation identity, or freshness by itself.
  • It does not redistribute proprietary formatter tables or cover every NMEA sentence family.
  • It does not make blank fields equal to zero or make a gatewayed stream equivalent to direct sensor truth.

Field Layout / Anatomy

Element Shape Inspection meaning
Start delimiter $ or ! families Separates sentence boundaries in a text stream.
Talker ID 2 characters Names the source family or integration convention.
Formatter 3 characters Defines field order and interpretation.
Comma fields variable Carry sentence-specific values; blank fields are meaningful evidence.
Checksum two hex characters after * XOR-style integrity evidence for sentence text.
Line ending CR/LF in normal form Stream boundary and parser synchronization evidence.

Visual Model

packet +1: "$" +2: "Talker GP" +3: "GGA" +53: "Comma fields" +1: "*" +2: "45"
flowchart LR sentence["GGA sentence"] --> fields["time / position / fix / altitude"] fields --> cadence["sentence cadence"] cadence --> state["navigation observations"] formatter["formatter definition"] --> fields
flowchart LR body["characters between $ and *"] --> xor["XOR checksum"] xor --> ok["0x45 matches *45"] ok --> bounded["sentence text survived<br/>not freshness or truth"] cadence["expected GGA cadence"] --> fresh{"still arriving?"} fresh -- "yes" --> state["freshness hypothesis"] fresh -- "pause" --> unknown["loss, gateway delay,<br/>mode change, or stale state"]

Timing And Authority

NMEA authority is partly textual and partly temporal. The formatter definition tells field meaning, while the serial stream and talker cadence tell freshness. Semantic authority comes from the NMEA sentence definitions, receiver documentation, and installation context. A correct checksum does not prove that position, altitude, or fix state is current.

Semantic authority

Bytes rarely explain themselves. Name the source that defines meaning before naming engineering values: standard metadata, label table, DBC, PGN/SPN definition, object dictionary, register map, DID catalog, LDF, ARXML, channel metadata, or vendor profile.

Failure And Ambiguity

  • Talker, formatter, and installed receiver identity can diverge when gateways rewrite streams.
  • Stale fields can remain syntactically valid and checksum-correct.
  • Blank fields are not zero; treating them as zero creates false observations.
  • Mixed GNSS talkers can make a single-stream assumption wrong.
  • Sentence cadence gaps can indicate loss, throttling, multiplexer behavior, or normal mode changes.

Python Model

The current package exposes a concrete sentence inspection example:

"""Runnable NMEA 0183 sentence inspection example for the schoolbus binder."""

from schoolbus.protocols.nmea0183 import Nmea0183Sentence

sentence = Nmea0183Sentence.from_raw(
    "$GPGGA,120000,0000.000,N,00000.000,E,1,04,1.0,10.0,M,0.0,M,,*45"
)

print(sentence.show_fields())
print(sentence.explain())

The model parses sentence shape, exposes checksum and formatter evidence, and keeps navigation observations tied to source and timing context rather than treating a valid checksum as physical truth.

The first workbook sample pack includes passive synthetic NMEA 0183 fixtures under samples/first-workbook/ for valid checksum, bad checksum, and blank-field inspection.

Source Notes

Source confidence: High for sentence-shape pedagogy and observer framing; exact formatter semantics remain standard/vendor documentation territory.

Teaching claim Source role Limit
NMEA 0183 uses delimited sentences. canonical metadata formatter tables remain metadata-only here
Checksum protects sentence text. tooling reference not proof of physical position or freshness
GGA field meaning needs formatter authority. de facto/proprietary format context no proprietary sentence tables are redistributed
This sentence is zeroed and synthetic. synthetic teaching artifact not vessel data
Field Value
Governance tier Tier 1 Core Lab
Canonical source status yes
Public explainer status no
Open-source tool status yes
Sample-data status none listed; use synthetic teaching artifacts
Confidence high
Citation specificity document-metadata-level
Canonical source(s) NMEA 0183 Interface Standard (National Marine Electronics Association; NMEA 0183; paywalled; metadata-only)
Public explainer/tooling source(s) none listed in atlas
Open-source tool references pyserial: Serial port IO
Signal K Server: Marine Signal K server

Simplification

The sentence is synthetic and intentionally uses zeroed coordinates. The page avoids reproducing proprietary sentence tables and keeps electrical details, AIS encapsulation depth, and gateway behavior out of scope.

References

Public Sources

Project posture is aggregated in the protocol support policy, source policy, and project charter.