Thread Closed 
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
NMEA2000 Engine, fuel flow or tank level information not displayed (correctly) on MFD
10-25-18, 09:21 PM (This post was last modified: 04-22-19 01:27 PM by Chuck - Raymarine - Moderator.)
Post: #1
NMEA2000 Engine, fuel flow or tank level information not displayed (correctly) on MFD
We frequently receive support requests from people who are having trouble getting data from NMEA2000 engines or tank level sensors to display as they expect on their Raymarine MFD. I would like to describe the most frequent causes and a workaround for the most common one.


It's a common misconception that as long as two devices are NMEA2000-certified that they will exchange data, but there are a number of factors that can prevent this, even in a healthy network that's installed correctly (and a great many networks are not installed correctly):
  1. NMEA2000 data is sent in messages containing related data, each message containing a different data type. Different devices will support a different subset of the full range more than 100 of these so-called Parameter Group Numbers (PGNs). An autopilot display would handle the PGN for Vessel Heading (127250) but may or may not receive/decode/display the PGN for water depth (128267), for example.
  2. There have been a number of revisions of the NMEA2000 specification and many messages have been marked as not for use in new designs whilst new ones have been introduced. There have also been changes in the structure and content of PGNs (new fields added, old fields phased out - for example engine tilt/trim, which was moved from PGN 127489, Engine Parameters Dynamic, to 127488 Engine Parameters Rapid Update.) Devices of widely differing ages may not be sending/receiving the same data in identical PGN formats: an old device which expects tilt/trim in 127489 will likely not read the new value from 127488.
  3. Even if the same version of the same PGN is supported by both devices, there are differences in interpretation of some aspects of the specification (for example the 'Reserved bits' in 127489, which some devices set to 1 where others use 0.)
  4. Similarly, a PGN will contain multiple data fields and some of these may be marked as 'data invalid/not available' rather than containing useful information, for example a magnetic heading sensor which might output magnetic heading but mark true heading as unavailable because it doesn't know the local variation value.
  5. A few PGNs can contain different but related data types, for example 130311 which can contain temperature data for any one of the several locations: sea, exterior air, interior air, main cabin or engine-room, but of course a single device would only be expected to know about and transmit one of these. If a device transmits air temperature but a display is looking for sea temperature, no data is going to be displayable.
  6. Several PGNs carry data types for which it's expected that there might be several different valid sources, for example engine or tank level data. There messages contain a numerical identifier called an Instance which says which source that particular data comes from. Instances start from zero. For data which relates to a specific position on the boat (e.g. port engine), the specification is explicit about what Instance relates to what position: port or single engine must be Instance 0, with engine Instances counting up from port to starboard from there. If you have two engines and they're both outputting as Instance 0, both will be treated as Port engine.

This last point is overwhelmingly the most common cause of problems with displays correctly reading engine or tank data. Every single day we take technical support calls where the problem turns out to be incorrect (as in, contrary to the NMEA2000 specification) engine or tank instance numbers.

How can you tell whether your instance numbers are correct?

There are a few ways:
  • Ask the electronics installer to check for you. An installer who is doing system integration work should have the tools and knowledge to read and analyse NMEA2000 data and identify this sort of problem and if they've supplied an integrated system then they should definitely be your first port of call.
  • Ask the engine or sensor supplier/rigger/manufacturer how their product would have been configured from the factory, how to configure it and how to check the current configuration.
  • You can record a sample of the data and send it in for analysis:
    • Via your Lighthouse 2 or Lighthouse 3 MFD
    • If you are in the US and your installer is a member of the NMEA organisation, they can request a data-logger from the NMEA and the NMEA can analyse the logged traffic for them.
    • Interface a NMEA 2000 / CAN bus analyzer (ex. Actisense NGT-1, etc.) to your computer and then use a computer application (Actisense NMEA Reader, etc.) to review the PGNs transmitted to the NMEA 2000 backbone and to determine their Instance IDs.
    • Some Raymarine offices have their own data-loggers that can be sent out on request. Plug them in, record data that will show the problem, send it back for analysis. Contact your local Raymarine office for details. This will only be available in specific circumstances, e.g. when there is no LH2 or LH3 MFD in the system.
  • If you have a Lighthouse 2 MFD, you can check engine and tank instances in the raw data, as below

How to check engine/tank instances in raw NMEA2000 data

Here's what the NMEA2000 buffer looks like on a Lighthouse 2 MFD:
[Image: attachment.php?aid=594]
(see here for how to get to that page.)

You can spot engine and tank messages in your MFD's raw data by looking at the middle 4 characters of the identifier, which is the block of 8 characters all together.
The Instance number in Fluid Level (tank) PGN 127505 and engine PGN 127488 (not 127489, which is a bit harder to read) are the first Data Byte (2 characters surrounded by spaces), after the message identifier. Here are 2 engine and 2 tank messages (without the direction and time-stamp information):
(identifier) (
19F21152  05 04 29 DC 05 00 00 FF   <----- 127505 Fluid level, look for 'F211' in the middle of the identifier part. Instance 5
19F21152  04 74 40 DC 05 00 00 FF   <----- 127505 Fluid level, look for instance in the first bit of data: Instance 4
09F20052  00 5C 11 56 04 FF FF FF   <----- 127488 Engine Rapid, look for 'F200' in the middle of the identifier part. Instance 0
09F20052  02 14 34 02 0D FF FF FF   <----- 127488 Engine Rapid, Instance 2
(identifier) (

If you look for 'F211' or 'F200' messages in your data on-board, you can see the Instances yourself pretty quickly. If you have 2 engines and they're not Instances zero and one, you have a problem with the engine's data.


1. Correct the Instancing on the engine, fuel-flow or tank sensor

2. For NMEA2000 engine data, a Raymarine ECI100 can help correct instancing problems.

If your engines are native NMEA2000 (not connected via an existing engine manufacturer's gateway), and if the problem is only with engine rather than tank level data, then putting an ECI100 between the engines and MFDs will allow the ECI100 to 'rewrite' the instance numbers in the data coming out on the MFD side. It won't help with tank level sensor data, it's only an engine gateway. See here for details, and if in doubt give Raymarine technical support or your experienced installer a call before going ahead.

3. Create a custom dashboard page on your Raymarine MFD


Raymarine since 1999.
Interests: Diagnosis of problems in sonar/fishfinders, NMEA2000, ethernet comms, autopilots, thermal cameras
Location: Sydney, Australia.

Please don't PM me asking for direct support, please ask a public question instead so that others can see the question and answer. Forum posts will always be answered before PM requests.
Find all posts by this user
Thread Closed 

Forum Jump:

User(s) browsing this thread: 1 Guest(s)