Read NMEA 0183 — every sentence verified.
GNSS receivers, echo sounders, wind and depth instruments speak NMEA 0183. Trace listens on the serial line, splits the sentences from $ to *, verifies every XOR checksum and shows talker and sentence type. Live, searchable and saved as a recording.
No mail app set up? Write directly to support@trace-analyzer.net.
Access is currently free and granted on request.
- ✓ XOR checksum verified
- ✓ Talker and sentence type as label
- ✓ Several devices on several ports
- ✓ Faulty sentences stay visible
From the wire to the telegram.
Three sentences from a GNSS receiver — the last one with a wrong checksum.
$GPRMC,225446,A,4916.45,N,12311.12,W,000.5,054.7,191194,020.3,E*68␍␊
$GPGLL,5133.81,N,00042.25,W,225444,A*36␍␊
In the third sentence the checksum does not match (it should be 35). Trace keeps it in the list and marks it as FrameError.
NMEA 0183, verified sentence by sentence.
Checksum on every sentence
Trace computes the XOR over all characters between $ and * and compares it with the two hex digits at the end of the sentence. A corrupted sentence is marked, not dropped.
Talker and sentence type at a glance
GPGGA, GPRMC, SDDBT: the address of every sentence is the label of its telegram. Search finds all sentences of one type or from one talker.
Long-term capture with timestamps
Every byte gets a timestamp. That shows when a receiver lost its fix or a device went quiet — even hours later in the recording.
- SearchFull-text search across all telegrams, even in the live stream.
- RecordingRaw bytes and the finished interpretation in one .msf file.
- Multiple portsSeveral interfaces in one session, on a shared timeline.
- RemoteProbe at the machine, analysis in the browser — no inbound port.
What is still missing.
So you don't have to find the limits by trying:
- No per-sentence fields. Latitude, longitude, time or fix quality appear as text in the Data field, not individually. You can add the split for GGA, RMC or GLL to the definition yourself.
- AIS sentences starting with ! (such as AIVDM) are not covered.
- No NMEA 2000. It is a separate protocol based on CAN and not part of this definition.
- Serial lines only. Trace does not capture NMEA over UDP or TCP.
Sentence frame and checksum in a few lines.
The NMEA definition is an open TrIML file. On the wire the checksum is two ASCII characters; one attribute makes Trace decode them before comparing.
<const type="byte" value="0x24" name="$" /> <!-- Address up to the first comma, Data up to '*' --> <unify type="string" name="Address"> … </unify> <const type="byte" value="0x2C" name="," /> <unify type="string" name="Data"> … </unify> <calc name="ChecksumXor" type="ByteXor" from="1" to="-1" resultType="byte" /> <const type="byte" value="0x2A" name="*" /> <const ref="ChecksumXor" validate="true" type="ascii-byte" name="Checksum" />
Frequently asked questions
Which baud rate does NMEA 0183 use?
Usually 4800 baud, 8N1; many GNSS modules and NMEA 0183-HS use 38400 baud or more. You set the baud rate on the serial interface — the definition does not depend on it.
Can I capture several devices at once?
Yes. Each interface is its own port in the same session, and the sentences of all ports share one timeline.
Do I need hardware to try it?
No. To try it, an excerpt from an existing hex capture is enough. For live use, the Trace probe runs on the computer the interface adapter is plugged into.
Try NMEA 0183 with Trace.
Tell us briefly what you are measuring. We will enable your access — and whatever you find missing goes straight into development.
No mail app set up? Write directly to support@trace-analyzer.net.