Trimble R12 on BlueBoat: altitude exported as orthometric height (EGM96) instead of ellipsoidal height — alt_ellipsoid always zero in TLog

Hi everyone,

I am integrating a Trimble R12 GNSS receiver on a BlueBoat and I am trying to understand how BlueOS / ArduPilot handles the altitude coming from the external GNSS.

My setup is:

  • BlueBoat
  • Trimble R12 used as external GNSS receiver
  • NMEA output from the Trimble receiver
  • GGA and GST messages are correctly received
  • RTK fix is working
  • Mission logs / TLog are exported after the survey

The issue is related to altitude.

From the Trimble controller, the receiver is showing the ellipsoidal height correctly. However, in the BlueBoat / ArduPilot logs, the altitude appears to be interpreted as an orthometric height, apparently referenced to EGM96, rather than as ellipsoidal height.

In addition, in the exported TLog, the field:

`alt_ellipsoid` is always populated with `0`.

My questions are:

  1. When BlueBoat / ArduPilot receives NMEA GGA from an external GNSS receiver, does it interpret the altitude field as orthometric height by default?

  2. Is ArduPilot applying an EGM96 geoid correction internally, or is it only storing the altitude value already provided by the GNSS receiver?

  3. Why is the `alt_ellipsoid` field always equal to zero in the TLog?

  4. Is there a way to force BlueBoat / ArduPilot to use and export the ellipsoidal height instead of the orthometric height?

At the moment, the main uncertainty is whether the altitude recorded by BlueBoat is already orthometric, whether it is being converted internally using EGM96, and why `alt_ellipsoid` remains zero.

Any clarification about how BlueOS / ArduPilot handles external GNSS altitude from NMEA would be very helpful.

Thanks.