NMEA 0183 is a combined electrical and data specification for communication between marine electronics such as echo sounder, sonars, anemometer, gyrocompass, autopilot, GPS receivers and many other types of instruments. It has been defined and is controlled by the National Marine Electronics Association (NMEA). It replaces the earlier NMEA 0180 and NMEA 0182 standards.[1] In leisure marine applications, it is slowly being phased out in favor of the newer NMEA 2000 standard,[2][3] though NMEA 0183 remains the norm in commercial shipping.
The electrical standard that is used is EIA-422, also known as RS-422, although most hardware with NMEA-0183 outputs are also able to drive a single EIA-232 port. Although the standard calls for isolated inputs and outputs, there are various series of hardware that do not adhere to this requirement.
The NMEA 0183 standard uses a simple ASCII, serial communications protocol that defines how data are transmitted in a "sentence" from one "talker" to multiple "listeners" at a time. Through the use of intermediate expanders, a talker can have a unidirectional conversation with a nearly unlimited number of listeners, and using multiplexers, multiple sensors can talk to a single computer port.
While NMEA 0183 only defines an RS-422 transport, there also exists a de facto standard in which the sentences from NMEA 0183 are placed in UDP datagrams (one sentence per packet) and sent over an IP network.
Most GPS manufacturers include special messages in addition to the standard NMEA set in their products for maintenance and diagnostics purposes. Extended messages begin with "$P". These extended messages are not standardized.
NMEA 0183 continued to be maintained separately: V4.10 was published in early May 2012, and an erratum noted on 12 May 2012.[15] On November 27, 2018, it was issued an update to version 4.11, which supports Global Navigation Satellite Systems other than GPS.[16]
NMEA 0183 is a proprietary protocol issued by the National MarineElectronics Association for use in boat navigation and controlsystems. Because early GPS sensors were designed for compatibilitywith these systems, GPS reporting protocols are often a smallsubset of NMEA 0183 or mutated from such as subset. AIS, theMarine Automatic Identification system, also uses NMEA0183-likepacket formats.
This document is a list of NMEA 0183 sentences with field descriptions.It is primarily intended to help people understand GPS reports, butalso exists because the author finds life-critical protocols withonly closed/proprietary documentation deeply offensive.
The master of this document is in asciidoc format at the GPSD projectwebsite; you are probably seeing it as a web page. You may encounterversions of it, in plain ASCII, that do not have a revision number anddo not list an editor. These are older and should be consideredobsolescent.
This collection may originally have been redacted from the documentcited as [BETKE]; see the list of sources at the end of thisdocument. The official NMEA 0183 standard was not consulted at anypoint, thus this document is not a derivative work of that standardand is not controlled by the rapacious lawyers of NMEA.
It appears there is an international standard, IEC 61162-1, publishedin 2000, that is essentially NMEA 0183. [IEC61162-1] says it "is closelyaligned with NMEA 0183 version 2.30". Unfortunately, it costs moneyand is not redistributable.
Recently the National Marine Electronics Association has attempted toreplace NMEA 0183 with a very differently structured protocol namedNMEA 2000. It is binary rather than textual, a profile orinterpretation of the Controller Area Network (CAN) protocol used inautomotive networking. Unlike NMEA 0183 it is frame-based and cannotbe transmitted over serial links.
The NMEA specification requires a physical-level protocol compatiblewith RS422 at 4800bps, 8N1 or 7N2. It is RS422 rather than RS232because NMEA expects many navigational devices to feed a common serialbus. The data encoding is ASCII with the high data bit not used andzeroed.
Consumer-grade GPS sensors normally report over an RS232 port or a USBport emulating an RS232 serial device; some use Bluetooth. Baud rateis variable, with 9600 probably the most common. Most devices use8N1; there are rare exceptions that use 7N2 (San Jose Navigation) oreven 8O1 (Trimble).
Most GPS sensors emit only RMC, GSA, GSV, GLL, VTG, and (rarely) ZDA.Newer ones conforming to NMEA 3.x may emit GBS as well. Other NMEAsentences are usually only emitted by high-end maritime navigationsystems.
In NMEA 2.3, several sentences (APB, BWC, BWR, GLL, RMA, RMB, RMC,VTG, WCV, and XTE) got a new last field carrying the signal integrityinformation needed by the FAA. (The values in the GGA mode field wereextended to carry this information as well.) Here are the values:
Data is transmitted in serial async, 1 start-bit, 8 data-bits,1 stop-bit, no parity. Data-bits are in least-significant-bitorder. The standard specifies 4800 as the speed, but this is nolonger common. The most-signifacant-bit is always zero.
Where a numeric latitude or longitude is given, the two digitsimmediately to the left of the decimal point are whole minutes, to theright are decimals of minutes, and the remaining digits to the left ofthe whole minutes are whole degrees.
In NMEA 3.01 (and possibly some earlier versions), the character "^"(HEX 5E) is reserved as an introducer for two-character hex escapesusing 0-9 and A-F, expressing an ISO 8859-1 (Latin-1) character [ANON].
The Checksum is mandatory, and the last field in a sentence. It isthe 8-bit XOR of all characters in the sentence, excluding the "$", "I",or "*" characters; but including all "," and "^". It is encoded astwo hexadecimal characters (0-9, A-F), the most-significant-nibblebeing sent first.
Date and time in GPS is represented as number of weeks from the startof zero second of 6 January 1980, plus number of seconds into theweek. GPS time is not leap-second corrected, though satellites alsobroadcast a current leap-second correction which may be updated onthree-month boundaries according to rotational bulletins issued by theInternational Earth Rotation and Reference Systems Service (IERS).
The leap-second correction is only included in the multiplexed satellitesubframe broadcast, once every 12.5 minutes. While the satellites donotify GPSes of upcoming leap-seconds, this notification is notnecessarily processed correctly on consumer-grade devices, and may notbe available at all when a GPS receiver has just cold-booted. Thus,reported UTC time may be slightly inaccurate between a cold boot or leapsecond and the following subframe broadcast.
GPS date and time are subject to a rollover problem in the 10-bit weeknumber counter, which will re-zero every 1024 weeks (roughly every 19.6years). The first rollover since GPS went live in 1980 was in Aug-1999,followed by Apr-2019, the next will be in Nov-2038 (the 32-bit and POSIXissues will probably be more important by then). The new "CNAV" dataformat extends the week number to 13 bits, with the first rolloveroccurring in Jan-2137, but this is only used with some newly added GPSsignals, and is unlikely to be usable in most consumer-grade receiverscurrently.
For accurate time reporting, therefore, a GPS requires a supplementaltime references sufficient to identify the current rollover period,e.g. accurate to within 512 weeks. Many NMEA GPSes have a wired-inassumption about the UTC time of the last rollover and will thus reportincorrect times outside the rollover period they were designed in.
For these reasons, NMEA GPSes should not be considered high-qualityreferences for absolute time. Some do, however, emit pulse-per-secondRS232 signals which can be used to improve the precision of anexternal clock. See [PPS] for discussion.
The "Navigation receiver warning" is 'A' for Active and 'V' for Void.(or warning). You will see it when either there is no satellite lock,or to indicate a valid fix that has a DOP too high, or which fails anelevation test. In the latter case the visible satellites are below somefixed elevation of the horizon (usually 15%, but some GNSS receivers make thisadjustable) making position unreliable due to poor geometry and morevariable signal lag induced by lengthened atmosphere transit.
Status will be 0 when the sample from which the reportingsentence was generated does not have a valid fix, 1 when it hasa valid (normal-precision) fix, and 2 when the fig is DGPS corrected(reducing the base error).
NMEA sentences do, however, include a "talker ID" a two-characterprefix that identifies the type of the transmitting unit. By far themost common talker ID is "GP", identifying a generic GPS, but all ofthe following are well known:
For satellites 1-32, the GPS constellation, these numbers are thesame. For satellites associated with WAAS (Wide Area AugmentationSystem), EGNOS (European Geostationary Navigation Overlay Service),and MSAS (Multi-functional Satellite Augmentation System), they aredifferent.
The numbers 33-64 are reserved for WAAS satellites. The WAAS systemPRN numbers are 120-138. The offset from NMEA WAAS SV ID to WAAS PRNnumber is 87. A WAAS PRN number of 120 minus 87 yields the SV ID of 33.The addition of 87 to the SV ID yields the WAAS PRN number.
The numbers 65-96 are reserved for GLONASS satellites. GLONASSsatellites are identified by 64+satellite slot number. The slotnumbers are 1 through 24 for the full constellation of 24 satellites,this gives a range of 65 through 88. The numbers 89 through 96 areavailable if slot numbers above 24 are allocated to on-orbit spares.
GLONASS satellite numbers come in two flavors. If a sentencehas a GL talker ID, expect the skyviews to be GLONASS-only andin the range 1-32; you must add 64 to get a globally-uniqueNMEA ID. If the sentence has a GN talker ID, the device emitsa multi-constellation skyview with GLONASS IDs already inthe 65-96 range.
BeiDou-1 consists of 4 geostationary satellites operated by China,operational since 2004. Coverage area is the Chinese mainland.gpsd does not support this, as this requires special hardware,and prior arrangements with the operator, who calculates andreturns the position fix.
c80f0f1006