NMEA 0183 is a combined electrical and data specification for communication betweenmarine electronics such asecho sounder,sonars,anemometer,gyrocompass,autopilot,GPS receivers and many other types of instruments. It has been defined and is controlled by theNational Marine Electronics Association (NMEA). It replaces the earlierNMEA 0180 andNMEA 0182 standards.[1] In leisure marine applications, it is slowly being phased out in favor of the newerNMEA 2000 standard,[2][3] though NMEA 0183 remains the norm in commercial shipping.
The electrical standard that is used isEIA-422, also known as RS-422, although most hardware with NMEA-0183 outputs are also able to drive a singleEIA-232 port. The standard calls for optically isolated inputs. There is no requirement for isolation for the outputs.
The NMEA 0183 standard uses a simpleASCII,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 usingmultiplexers, multiple sensors can talk to a single computer port.
At theapplication layer, the standard also defines the contents of each sentence (message) type, so that all listeners can parse messages accurately.
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 inUDP datagrams (one sentence per packet) and sent over an IP network.
The NMEA standard is proprietary and sells for at least US$2000 (except for members of the NMEA) as of September 2020.[4][5] However, much of it has been reverse-engineered from public sources.[6][7]
| TypicalBaud rate | 4800 |
| Data bits | 8 |
| Parity | None |
| Stop bits | 1 |
| Handshake | None |
There is a variation of the standard called NMEA-0183HS that specifies a baud rate of 38,400. This is in general use byAIS devices.
| ASCII | Hex | Dec | Use |
|---|---|---|---|
| <CR> | 0x0d | 13 | Carriage return |
| <LF> | 0x0a | 10 | Line feed, end delimiter |
| ! | 0x21 | 33 | Start of encapsulation sentence delimiter |
| $ | 0x24 | 36 | Start delimiter |
| * | 0x2a | 42 | Checksum delimiter |
| , | 0x2c | 44 | Field delimiter |
| \ | 0x5c | 92 | TAG block delimiter |
| ^ | 0x5e | 94 | Code delimiter for HEX representation of ISO/IEC 8859-1 (ASCII) characters |
| ~ | 0x7e | 126 | Reserved |
<CR><LF> ends the message.As an example, a waypoint arrival alarm has the form:
Another example for AIS messages is:
The main talker ID includes:[8][9]
NMEA message mainly include the following "sentences" in the NMEA message:[10]
| Sentence | Description |
|---|---|
| $Talker ID+GGA | Global Positioning System Fixed Data |
| $Talker ID+GLL | Geographic Position—Latitude and Longitude |
| $Talker ID+GSA | GNSS DOP and active satellites |
| $Talker ID+GSV | GNSS satellites in view |
| $Talker ID+RMC | Recommended minimum specific GPS data |
| $Talker ID+VTG | Course over ground and ground speed |
One example, the sentence for Global Positioning System Fixed Data for GPS should be "$GPGGA".
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 is supported by various navigation and mapping software. Notable applications include:
nmea(4)pseudo-device driver[12]A sample file produced by a Tripmate 850 GPS logger. This file was produced inLeixlip,County Kildare,Ireland. The record lasts two seconds.
$GPGGA,092750.000,5321.6802,N,00630.3372,W,1,8,1.03,61.7,M,55.2,M,,*76$GPGSA,A,3,10,07,05,02,29,04,08,13,,,,,1.72,1.03,1.38*0A$GPGSV,3,1,11,10,63,137,17,07,61,098,15,05,59,290,20,08,54,157,30*70$GPGSV,3,2,11,02,39,223,19,13,28,070,17,26,23,252,,04,14,186,14*79$GPGSV,3,3,11,29,09,301,24,16,09,020,,36,,,*76$GPRMC,092750.000,A,5321.6802,N,00630.3372,W,0.02,31.66,280511,,,A*43$GPGGA,092751.000,5321.6802,N,00630.3371,W,1,8,1.03,61.7,M,55.3,M,,*75$GPGSA,A,3,10,07,05,02,29,04,08,13,,,,,1.72,1.03,1.38*0A$GPGSV,3,1,11,10,63,137,17,07,61,098,15,05,59,290,20,08,54,157,30*70$GPGSV,3,2,11,02,39,223,16,13,28,070,17,26,23,252,,04,14,186,15*77$GPGSV,3,3,11,29,09,301,24,16,09,020,,36,,,*76$GPRMC,092751.000,A,5321.6802,N,00630.3371,W,0.06,31.66,280511,,,A*45
Note some blank fields, for example:
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 supportsGlobal Navigation Satellite Systems other thanGPS.[16] As of December 2023, NMEA has published the version 4.30 which replaces Version 4.11 and includes updates to the entire suite of GNSS sentences with significant interface updates for the use of GPS, GLONASS, GALILEO, BDS, QZSS, and NavIC/IRNSS satellite systems.[17][18]
| Ver. | Year | Changes | Refs |
|---|---|---|---|
| 1.?? | 1983 | Initial release | |
| 2.00 | 1992 | Migrate fromRS-232 toRS-422 | |
| 2.01 | 1994 | ||
| 2.10 | 1995 | ||
| 2.20 | 1997 | ||
| 2.30 | 1998 | ||
| 3.00 | 2000 | ||
| 3.01 | 2002 | ||
| 4.00 | 2008 | ||
| 4.10 | 2012 | ||
| 4.11 | 2018 | ||
| 4.30 | 2023 |
| Ver. | Year | Changes | Refs |
|---|---|---|---|
| 1.00 | 2000 | Initial release of 38.4K baud, known as "high speed" | |
| 1.01 | 2012 |