Skip to main content
Skip table of contents

NMEA messages

NMEA protocol

The NMEA framing and behavior is defined by the NMEA 0183 standard (v4.11 and erratas).

In NMEA speak messages are called Sentences. Frames (messages) are in this form:

$TalkerFormatter,field1,field2,…,fieldN*CC\r\n

Where:

  • The NMEA style framing:

    • $ – Start character (“$”, ASCII 36)

    • *CC – Checksum: “*” (ASCII 42) and two digit XOR value of all payload characters in captial hexadecimal notation, for example: “FPX” = 'F' ^ 'P' ^ 'X' = 70 ^ 80 ^ 88 = 78 = 0x4e = checksum 4E

    • \r\n – Sentence termination characters (CR + LF, ASCII 13 + 10)

  • A Talkerer ID – Two capital characters:

    • GP – Talker ID for GPS, also legacy resp. “compatibility”

    • GL – Talker ID for GLONASS

    • GA – Talker ID for Galileo

    • GB – Talker ID for BeiDou

    • GQ – Talker ID for QZSS

    • GI – Talker ID for NavIC (IRNSS)

    • GN – Talker ID for any combination of GNSS

  • A Formatterer ID – Three capital characters, for example:

    • RMC for the message containing recommended minimum specific GNSS data

  • Data fields (payload)

    • field1,field2,…,fieldN – The structure of the message data is defined by the msg_type and version. Each field can contain all printable 7-bit ASCII characters (ASCII 32–126), excluding the reserved characters ! (ASCII 33), $ (ASCII 36), * (ASCII 42), , (ASCII 44), \ (ASCII 92), ~ (ASCII 126).

  • Field separators

    • All fields (identifier, message type, message version, data fields) are separated by a comma (,, ASCII 44)

  • Null fields

    • Data fields can be null, meaning their value is absent to indicate that no data is available. The data for null fields is the empty string. For example:

      • Definition: …,fieldi,fieldi+1,fieldi+2,…

      • Values: fieldi = 123, fieldi+1 = null, fieldi+2 = 456

      • Payload string: …,123,,456,…

  • Data field types:

    • Numeric: Decimal integer number, one or more digits (0-9) and optional leading “-” sign

    • Float (.x): Decimal floating point number, one or more digits (0-9) and optional leading “-” sign, with x digits fractional part separated by a dot (“.”)

    • Float (x): Decimal floating point number with x significant digits, optional leading “-“, optional fractional part separated by a dot (“.”)

    • String: String of allowed payload characters (but not the , field separator)

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.