NMEA 2000 Explained - A Simple Intro [2023]
Need a simple, practical intro to NMEA 2000?
In this guide we introduce the N2K protocol (IEC 61162-3) used in maritime vessels such as boats, yachts, tugs and other ships. In particular, we'll cover the NMEA 2000 standards, key concepts, links to other protocols (NMEA 0183, CAN/J1939), topology and connectors. We also cover NMEA 2000 PGNs and Fast Packets.
To ensure this stays practical, we also explain how to record and decode NMEA 2000 data - with practical use cases and examples.
Learn more below!
What is NMEA 2000?
NMEA 2000 (IEC 61162-3) is a communication standard used in the maritime industry for connecting e.g. engines, instruments and sensors on boats. It is based on the Controller Area Network (CAN) and allows data to be sent/received between devices over a single network 'backbone' cable.
The higher layer functionality of NMEA 2000 (aka N2K) is based on SAE J1939 and ISOBUS (ISO 11783), commonly used in heavy-duty vehicles and agriculture/forestry machinery, respectively.
NMEA 2000 succeeds the older NMEA 0183 and is today used in most modern maritime vessels like boats, ships, yachts and related equipment/sensors.
Importantly, a maritime vessel may use multiple networks.
For example, a twin engine speed boat may comprise an NMEA 2000 network connecting both outboard engines to the helm accessories (control head, keys, displays). This network will typically be constructed by the boat OEM. The engines themselves may internally communicate via e.g. the J1939 protocol with a gateway/filter module feeding engine related data to the NMEA 2000 network.
In addition, various sensors measuring e.g. GPS position, wind, water depth etc. may be added to same NMEA 2000 network. However, cases also exist where such sensors are retrofitted by the boat operator onto a separate NMEA 2000 network.
NMEA 2000 vs NMEA 0183
NMEA 0183 (IEC 61162-1) is the predecessor to NMEA 2000 (IEC 61162-3). The NMEA organization published the NMEA 0183 protocol with the purpose of standardizing the communication between different electronic equipment in maritime vessels.
The protocol replaced NMEA 0180 and NMEA 0182. The NMEA 0183 protocol remains in active use today, although NMEA 2000 has become the industry standard.
The NMEA 0183 protocol uses the electrical standard RS232/RS422 for communication instead of CAN bus. In this setup, one 'talker' (e.g. a GPS module) can communicate with multiple 'listener' nodes (e.g. an autopilot and a chartplotter). However, it is not possible to have multiple 'talkers' on the same network (in contrast to CAN). As a result, a separate NMEA 0183 network is required for every 'talker' node - which quickly becomes complex when the networks are interconnected.
Data is communicated in an ASCII format as standardized 'sentences' defined in the application layer. The data is transmitted as printable ASCII characters in the range 0x20 to 0x7E and reflect 'physical values' (e.g. degrees), rather than 'raw data' as in NMEA 2000. For a detailed overview of the message/sentence structure, see this table.
Key benefits of NMEA 2000 vs. NMEA 0183
Overall, NMEA 2000 is a far more modern and flexible communication protocol compared to NMEA 0183, and is therefore today widely used in marine electronic systems. Below we outline the key advantages:
NMEA 2000 allows all nodes to communicate with each other (multiple talkers) and the power supply is directly integrated in the backbone, reducing wiring costs and simplifying the network vs. NMEA 0183. The standardized T-connectors also simplify integration
NMEA 2000 enables a higher data transmission rate than NMEA 0183 (250K vs. 4.8K), meaning it can transmit more data in a given amount of time. This is useful when real-time data is required, such as in navigation or engine monitoring applications
NMEA 2000 is designed to allow different devices from different manufacturers to be connected to the same network and to exchange data in a standardized way. This makes it easier to mix and match devices on the same network, and reduces the risk of compatibility issues
NMEA 2000 networks can be larger than NMEA 0183 networks, as they are designed to support more devices (up to 50 nodes) and transmit data over longer distances. This can be useful in larger vessels or systems where a greater number of devices need to be connected
NMEA 2000 uses the Controller Area Network (CAN) bus, which is a digital communication protocol that is less susceptible to noise and interference than the serial communication protocol used by NMEA 0183. This makes NMEA 2000 networks more reliable and resilient
NMEA 2000 enables integration of NMEA 0183 devices via low cost gateways, enabling the integration of existing electronics into new networks. The reverse is, however, not true - i.e. NMEA 2000 nodes cannot be added to NMEA 0183 networks
NMEA organization, history and certification
The National Marine Electronics Association (NMEA) is a non-profit organization founded in 1957. It represents manufacturers, distributors, and dealers in the maritime industry and helps ensure device compatibility across brands/manufacturers through the promotion of data communication standardization, education and certification.
To some extent, the role of NMEA can be compared to that of the Agricultural Industry Electronics Foundation (AEF) in the agriculture/forestry industry. Both NMEA 2000 and ISOBUS share the need for strict protocol conformance requirements in order to deliver on the promise of plug & play integration of products across manufacturers. Here, the organisations play a key role in facilitating a standardised process for product certification - as well as in providing a database for identifying conforming manufacturers/products.
NMEA history
- 1957: National Marine Electronics Association (NMEA) founded
- 1983: NMEA 0183 v1.00 published by NMEA
- 1985: NMEA 0183 standardized as IEC 61162-1
- 1992: NMEA 0183 v2.00 released
- 1994: N2K development begun by Standards Committee
- 2000: NMEA 0183 v3.00 released
- 2001: NMEA 2000 v1.000 released
- 2008: NMEA 2000 standardized as IEC 61162-3
- 2008: NMEA 0183 v4.00 released
- ~2009: NMEA 2000 becomes the industry standard
- 2022: NMEA 2000 v3.000 released
NMEA 2000 conformance certification
To ensure interoperability of N2K nodes, NMEA facilitates a certification process through which a product can become 'NMEA 2000 Certified' and add a certification logo to the product.
In practice, the certification is done via a self-certification process using mandated test equipment (the NMEA 2000 Certification Tool, i.e. a CAN interface/software) and validation by NMEA.
Certification does not imply that a specific product must produce certain data. Rather, it ensures that a product is compatible with other NMEA 2000 certified products - enabling them to coexist on the same network without causing interference.
The NMEA 2000 product certification can be granted as both a Class 1 and Class 2, with a Level A and B in each. Class 1 devices rely on a single NMEA 2000 interface for communication, while Class 2 devices provide two interfaces for the purpose of redundancy. For each class, Levels A and B allow for distinguishing between sophisticated devices (with full communication support incl. e.g. implementation of ISO TP communication) and more simplistic devices with a smaller scope of required communication functionality.
Some third-party products may use alternative classifications from the 'NMEA 2000 Certified':
- NMEA 2000 Approved: These products are able to implement NMEA 2000 and have passed the physical hardware tests of the N2K certification program
- NMEA 2000 Certified for use with [Approved Product Name]: These products may be used in combination with a specific NMEA 2000 Approved product, together creating a fully compatible product
- NMEA 2000 Certified for use with [Certified Gateway Product Name]: These products may be used in combination with an NMEA 2000 Certified gateway product.
Finally, another classification is 'NMEA 2000 Approved Diagnostic Tool - Not for permanent connection to a NMEA 2000 backplane' - intended for tools that may e.g. disrupt safety-critical functionality in the NMEA 2000 network if used incorrectly.
NMEA 2000 OSI model & standards
Below we briefly outline the link between each OSI model layer and the NMEA 2000 standard (as well as referenced standards).
- Application: This layer is fully defined by the NMEA 2000 standard and defines approved PGNs/signals incl. a provision for manufacturer-specific proprietary messages. NMEA Appendix A defines PGNs, while Appendix B provides a full list of the standardized NMEA 2000 PGNs and signals
- Transport: In NMEA 2000, the transport layer is responsible for establishing and maintaining connections between devices, as well as fragmenting and reassembling messages as needed. This can be done via the transport protocol used in ISOBUS/J1939 or via NMEA Fast Packets (see also the Data Link layer)
- Network: This layer is to be further defined in the future in the NMEA 2000 standard
- Data Link: This layer is responsible for transmitting data across the communication channel and ensuring that the data is delivered correctly. The NMEA 2000 standard uses the CAN protocol at the data link layer, which includes error detection and correction mechanisms to ensure reliable transmission. Note that this layer references ISO 11783-3 (ISOBUS), SAE J1939-21 and 11898-1 (CAN) The NMEA 2000 standard defines additional requirements/functionality, including the NMEA Fast Packet for multi-frame communication
- Physical: This layer is fully defined by the NMEA 2000 standard, including signal voltages, cables and connectors. Note also the inclusion of 11898-2 (CAN) to reflect the role of CAN bus as the basis for NMEA 2000. This also specifies the standard baud rate of 250K for NMEA 2000 and details on cables and connectors
Further, the 'Network Management' is defined by ISO 11783-5 (ISOBUS). Note in particular that all NMEA 2000 compliant devices must support dynamic address claiming
NMEA 2000 vs. J1939 vs. ISOBUS
As evident, NMEA 2000 is closely related to J1939 and ISOBUS. Here we briefly clarify the link between these protocols.
First, let's do a very quick history recap:
In 1994, the Society of Automotive Engineers (SAE) published the J1939 protocol for use in heavy-duty vehicles.
Next, ISOBUS was derived from J1939 for agriculture/forestry machinery, formally standardized in 2007 (ISO 11783).
NMEA 2000 was released in 2001 and references parts of SAE J1939 and ISO 11783 almost interchangeably. ISO 11783-3 is referenced for the data link layer, but in turn references J1939-21. Similarly, NMEA 2000 references ISO 11783-5 for the network management, which is virtually identical to J1939-81.
In other words, NMEA 2000 is based on ISO 11783 standards that are in turn based on J1939 standards.
In practical applications, NMEA 2000 is often seen in combination with J1939 or ISOBUS. For example, some boat engines use J1939 internally and deploy a gateway/filter to parse certain information onto standardized NMEA 2000 PGNs. In some cases, NMEA 2000 and J1939 messages even co-exist on the same CAN bus. This is possible as none of the NMEA 2000 PGNs overlap with J1939 PGNs. Similarly, NMEA 2000 messages are often broadcast onto an ISOBUS network since many GPS modules are used in both maritime and agricultural use cases. See our ISOBUS intro for details.
NMEA 2000 connectors & network topology
Below we describe the most common connectors encountered in maritime vessels:
#1 T connector (M12 5-pin)
The T-connector (aka T-piece) is used in constructing the NMEA 2000 CAN bus 'backbone' in a linear fashion and for connecting equipment. It is a three-way connector consisting of two female connectors and one male connector. The connectors are standardised DeviceNet 5-pin A-coded M12 connectors. The physical connector and pinout differ between mini type (for backbones) and micro type (for small backbones and for drop cables). The micro M12 connector is also used in industrial applications like CANopen and enable easy connection of CAN based equipment - e.g. CAN bus data loggers.
M12 adapter cable#2 Engine connector (J1939 9-pin)
Many maritime engines (e.g. from Cummins) deploy the J1939 protocol for their internal communication. Some of this information may be broadcast onto the NMEA 2000 network directly or through a gateway that converts the PGN information to the corresponding NMEA 2000 encoding. Many engines come with separate diagnostic connectors that allow direct access to the raw J1939 data - and the most common connector for these would be the J1939 deutsch 9-pin connector.
J1939 adapter cable#3 Engine connector (CAT 9-pin)
Some maritime engines (e.g. from Caterpillar) use a deutsch 9-pin CAT adapter. This looks almost identical to the J1939 9-pin connector, but uses a different pinout.
CAT adapter cable#4 Engine connector (Deutsch DT06-6P)
In some maritime engines (e.g. from Volvo Penta), alternative diagnostic connectors are used such as the DT06-6P (male 6-pin) and DT06-6S (female 6-pin). You'll often be able to convert from these connectors to other popular connectors (like OBD2) via off-the-shelf adapters.
DT06 adapter cableNMEA 2000 physical layer requirements
The NMEA 2000 standard also specifies requirements in terms of the physical layer as shown below.
- The standard bit rate is 250 kb/s
- The CAN bus should be constructed as a linear 'backbone'
- The distance between two T-connectors must not exceed 100m
- The maximum length of the network is 200m
- The network supports up to 50 connected devices
- The max 'drop cable' length (between a T-connector and device) is 6m
- The max cumulative drop cable length is 78m
- Cables must adhere to DeviceNet (ODVA) standards
- The backbone must include a grounded power supply in the 9-16 V DC range (e.g. from the vessel 12 V DC power supply or from an isolated 15 V DC supply)
- Three cable types: Mini/thick (for backbones requiring 4-8 amps per leg), mid (for backbones) and micro/thin (for drop cables and small backbones)
NMEA 2000 Fast Packet
A key part of the NMEA 2000 standard is the 'Fast Packet'.
As per SAE J1939-21 and ISO 11783-3, the NMEA 2000 standard supports multi-packet communication of up to 1785 bytes via the ISO 15765-2 (ISO TP) standard.
However, NMEA 2000 often requires frame payloads that exceed 8 bytes, but far less than 1785 bytes. Thus, the Fast Packet was introduced as a more efficient transport protocol for medium-size payloads up to 223 bytes without any transfer protocol delays. See the table overview for a comparison.
In the NMEA 2000 Fast Packet methodology, every frame retains the original PGN identifier. This means that the multi-frame message can be uniquely identified at the ID level, in contrast to the ISO TP implementation in J1939, ISOBUS and UDS, in which message identification requires extraction of information from the 1st CAN frame payload data.
Fast Packet trace example
Below we show an NMEA 2000 Fast Packet example. As evident, all the transmitted frames contain a 'sequence counter' in the 1st nibble and a 'frame counter' in the 2nd nibble of the 1st byte. Further, the first frame transmitted contains the total payload length in the 2nd byte. To enable decoding, the frame needs to be reassembled as shown.
The CANedge Python API enables automatic reassembly of Fast Packets into single with the full data payload (stripped of the sequence counters and payload length). This in turn enables easy DBC decoding of the data using the NMEA 2000 DBC file. See our api-examples repository for script examples.
NMEA 2000 PGN & data fields
NMEA 2000 uses the concept of Parameter Group Numbers (PGN) from the J1939 protocol. This means that messages are identified based on 18-bit PGNs, which can be extracted from the full 29-bit CAN identifiers.
Signals aka parameters will be 'packaged' in the data payload of each message. Note that in contrast to J1939, signals are not referred to as Suspect Parameter Numbers (SPN), but instead as Data Fields (DF) or simply parameters.
We do not cover the PGN structure here as it is already covered in our SAE J1939 intro. However, we will provide a few practical comments on NMEA 2000 PGNs and parameters.
NMEA 2000 PGN database
While NMEA 2000 was originally based on J1939, the standard J1939 PGNs (from J1939-71) do not sufficiently cover the maritime requirements of the NMEA standard.
To solve this, the NMEA 2000 application layer defines a number of PGNs unique to NMEA 2000, which are described in the NMEA 2000 standard, Appendix B. The appendix lists a number of PGNs and the data fields contained within each of them. Each data field is described through a 'Data Dictionary'. This can be compared to how J1939-71 describes each PGN and their underlying SPNs.
As evident from the PGN extract, the Appendix B PDF contains information for decoding parameters like Wind Speed. However, extracting this manually would be time-consuming as the PDF contains 170+ PGNs and 1500+ parameters.
Instead, we recommend using the NMEA 2000 DBC file, which includes the PGN and parameter information in a structured way, ready for use in decoding raw NMEA 2000 data.
The NMEA 2000 standard allows manufacturers to create their own proprietary PGNs, though with three conditions:
- The proprietary PGN contains device specific information (e.g. a unique calibration)
- The data is being used for test purposes
- A suitable PGN is not available in the current NMEA 2000 PGN database
In general, manufacturers are encouraged to leverage the standardized PGNs (or migrate to these when they become available). Further, if proprietary PGNs are used in a device, NMEA encourages manufacturers to publish the decoding information.
The NMEA 2000 appendix B contains 1500+ parameters aka Data Fields, encoded in NMEA 2000 specific PGNs. Below are some examples of the maritime-oriented signals included:
- Alerts
- GNSS position
- Vessel speed
- Heading
- Rudder angle
- Rate of turn
- Yaw, pitch, roll
- Engine speed
- Temperatures
- Fuel pressure
- Fuel rate
- Engine load
- Transmission
- Battery status
- Water depth
- Wind speed
- Air temperature
- ... and more
NMEA vs J1939 PGNs [+DBC files]
In maritime vessels, J1939 is often used 'within the engines' (e.g. outboard engines) to communicate various engine-related sensor data like engine speed, temperatures, etc.
In such cases, a 'gateway' will typically convert a subset of the J1939 PGN information into NMEA 2000 PGNs, thus allowing e.g. displays to visualize the engine information.
For example, the J1939 PGN 0xF004 (61444) contains Engine Speed - while it is encoded in the N2K PGN 0x1F200 (127488).
As such, if you're recording data only from the NMEA 2000 network, you'll typically get the 'pure' NMEA 2000 PGN information plus the 'filtered' J1939 PGN information (encoded as NMEA 2000 PGNs). In some cases, however, the 'original' J1939 PGNs will be directly output onto the NMEA 2000 network. This is possible because the protocols are 'harmonized', i.e. they use the same bit rate of 250K and none of the CAN IDs overlap.
In short, to maximize the vessel data you can decode, you should consider the following DBC files:
NMEA 2000 data (vessel, sensors)
If you connect to the NMEA 2000 network (e.g. via an M12 connector), you will generally record the broadcast NMEA 2000 data. To decode this, you can use the NMEA 2000 DBC, which will allow you to extract information on the standardized PGNs from the network. This may include 'filtered' engine information as well.
Learn moreJ1939 data (engines)
In some cases, the NMEA 2000 network may also contain the original J1939 PGNs from the engine. Alternatively, you may be able to access the original J1939 information by connecting directly to the engine via a separate diagnostic connector (typically a deutsch 9-pin J1939 connector). In either case, you can use the J1939 DBC file to decode the standardized J1939 PGNs.
Learn moreOEM data (proprietary)
There will almost always be some NMEA 2000 PGNs that are proprietary. These are in principle only known to the OEM, but since the NMEA organization encourages OEMs to publish their encoding rules, it is likely that you will find the relevant information in technical manuals or on-request. If so, you can add them to your existing DBC file by modifying it via a DBC editor (see our DBC intro for details).
Example: Decoding data from a boat
To showcase the breakdown of PGNs you'll often see in maritime CAN data, consider a log file from a speed boat. In this case, a CANedge1 has been used to record data from the NMEA 2000 backbone, which also includes (at least some of) the original J1939 data from the outboard engine. The log file contains 161 unique CAN IDs, corresponding to 72 unique PGNs.
As evident, the majority of the PGNs are decoded by the NMEA 2000 DBC (as Single Frames or Fast Packets). Further, the J1939 DBC is able to decode some of the J1939 PGNs, while the rest are OEM specific. The proprietary PGNs may originate from the J1939 engine network or some of the NMEA 2000 network equipment.
Note here that the connection of the CANedge1 was made on the NMEA 2000 network - not directly onto the J1939 network (i.e. the engine's diagnostic connector). As a result, it is not known in this case whether more J1939 PGNs would be available via a direct connection to the engine. Further, in most NMEA 2000 networks, the engine J1939 PGNs are not directly broadcast onto the NMEA 2000 network, hence you'd normally need to record these separately. This is often done with the CANedge, connecting the 1st port to the NMEA 2000 network and the 2nd port to the J1939 engine diagnostic connector.
Logging NMEA 2000 maritime data
To log maritime CAN bus data from an NMEA 2000 network or J1939 engine, we recommend to check out our maritime telematics intro. Below we will briefly recap the most relevant steps to consider:
#1 How to choose a CAN logger
If you need to log N2K/J1939 data to an SD card we recommend the CANedge1. The device can be left in the vessel to record data for weeks or months. To collect the data, simply extract the SD.
Alternatively, the CANedge2 (WiFi) or CANedge3 (3G/4G) lets you auto-upload data to your own server. The device logs data to the SD and uploads it when it has connectivity via WiFi or LTE.
#2 How to connect to the N2K network
Next, you'll need to identify how to connect to the CAN bus. The simplest way to connect to the NMEA 2000 network is to use a DB9-M12 adapter to connect via a T-connector. This gives you access to all the raw NMEA 2000 data from that network. Optionally, you can use the 2nd CAN channel of the CANedge to connect to another NMEA 2000 network (if one exists) or directly to the J1939 engine network. In the latter case, you can use one of the engine diagnostic connectors listed previously.
#3 How to process the CAN data
To process the raw NMEA 2000 and/or J1939 vessel data, you need a CAN software tool. In this, you'll load the log files and related DBC files to convert the raw data to physical values.
The CANedge software tools enable different forms of analysis. For example, you can use the MF4 converters to transform the raw log files to popular file formats (e.g. ASC, TRC, CSV), for use in tools like Vector CANalyzer, Warwick X-Analyser 3 or PEAK PCAN-Explorer. Or, you can use the asammdf GUI to DBC decode the data and create visual plots incl. GPS maps of your vessel routes.
Further, you can deploy automated data processing via the Python API if you need to perform statistical analysis, automated reporting or database integration. The API can also be used to integrate the data with Grafana dashboards.
For more intros, see our guides section - or download the 'Ultimate Guide' PDF.
Need to collect NMEA 2000 data?
Get your CAN logger today!