FlightAware Discussions

General confusion about aircraft/ADS-B altitude

Disclaimer: I’ve read the FAQ on this, but I’m going to ask again with a focus on the FlightAware Pro Stick Plus, specifically:

Hello. I’m using the FlightAware Pro Stick Plus v1.0, Mode S Receiver using dump1090 --net mode, and I’m trying to understand exactly what is meant by the returned altitude field (in general, or the most frequently returned altitude. I understand that there will be some oddball aircraft out there using different measurement methods, but I’m just concerned with the most common commercial flights). I received data from the ADS-B method and got 39,025 ft, and then I went to the FlightAware live tracker site, found the same aircraft, and it was reporting exactly 39,000 ft. Okay, pretty close. I guess we can call it rounding error?

But then it got me thinking: What does a modern aircraft use when flying? If an aircraft’s goal is to maintain 39,000 ft altitude, would its guidance systems follow the the curve of the ellipsoid using GPS data, or follow the wobbly curve of the mean-sea-level, or is it simply using a barometer (I guess is a variant of mean-sea-level)? Again, I’m talking modern expensive commercial aircrafts, not Indiana Jones in a Cessna).

For reference, this is the style of data string I’m getting from the module:


Aircraft use barometric altitude. Above a certain altitude, known as the transition altitude (in the UK it’s 6,000 feet), they all use the same pressure setting regardless of the actual atmospheric pressure. This is 1013mb, and altitudes are then referred to as flight levels - 39,000 feet would be FL390. The real altitude above sea level will therefore fluctuate a bit depending on what the actual sea level pressure is. This doesn’t matter in practice because all aircraft are using the same reference, so FL390 is going to be the same height for all nearby aircraft, whether the true altitude above sea level is 39,100 feet or 38,900 feet.

Below transition altitude, aircraft use the local atmospheric pressure, which they get from the airport information or ATC. This allows them to have an accurate reference to the ground - for example when sitting on the runway of an airport with a known altitude of 500ft ASL, the altimeter will read 500ft when set to the local pressure. If local pressure correction is not used, they could have an altimeter that reads over or under by a few hundred feet or more. That would not be ideal when landing for example.

Mode S/ADS-B only reports a minimum altitude difference of 25 feet, and sends non-pressure corrected altitude only. Where you saw an aircraft transmit 39,025 feet, it was probably above its set altitude just enough for the transponder to report the next increment - 12.5 feet either way is not really too significant for an airliner that could be 60 feet tall. ATC apply pressure corrections to the received data for low altitude traffic control, but at higher altitudes the aircraft do follow a slightly fluctuating true altitude, because it’s only their altitude relative to each other that’s important. If they all use the same reference, then that simplifies things. Having each aircraft reset its pressure altitude every few miles would be extra workload that serves no practical purpose.

GPS altitude is not used because it’s not accurate enough. Altitude is the least accurate axis measured by GPS because of the way positions are calculated, and although it is now commonly fitted to aircraft, that’s only a relatively recent development. Mode-s pre-dates it by a decade or more, and the preceding Mode-C transponders date back to immediate post WW2.

This same system is used for all aircraft, whether it’s Indiana Jones in a Cessna or an airliner - They all use the same airspace. Airliners will obviously carry more in the way of avionics than a light aircraft (such as a radar altimeter for approaches), but the basics are the same.


ADS-B and Mode S (and for that matter Mode C) transmit uncorrected pressure altitude as the primary altitude value. That is, it’s directly related to static air pressure. That’s not necessarily a true altitude, and it needs to be adjusted to produce a correct height above AMSL or height AGL, but it has the large advantage that every aircraft is doing exactly the same thing, which is very important when used for resolving conflicts.

ADS-B can also transmit height-above-ellipsoid as a secondary altitude when available. You won’t see that in the SBS-style output you quoted, that format is very limited.


And just so I’m clear: The raw ADS-B data is uncorrected pressure altitude, and the FlightAware Pro Stick Plus with the dump1090 tool is not trying to “correct” the pressure altitude or convert it? That altitude in my final received string is also uncorrect pressure altitude?

Yes to all those - the altitude displayed by dump1090 is uncorrected.


What would you say to the FAA site: https://www.faa.gov/nextgen/programs/adsb/faq/#g7 that is proclaiming that ADS-B returns 2 kinds of altitudes: pressure and GPS (ellipsoid)?

I would say that it is correct, and ADS-B does return both types, however the display in dump1090 uses barometric altitude and not GPS altitude, and it is barometric altitude that is used for navigation purposes. If you click on an aircraft on the web interface you may be able to see the GPS altitude under the details - tar1090 definitely has this, not sure about the default skyaware, but I would expect it’s there somewhere.


Specifically ADS-B transmits barometric altitude as the primary source (and this is the only altitude type transmitted for non-ADS-B Mode S transponders), and, separately, periodically transmits the current difference between baro altitude and ellipsoid altitude when ellipsoid altitude is available.

(There are corner cases where it’s possible for only ellipsoid altitude to be transmitted, but these are generally failure cases where the barometric altimeter has failed - the preferred primary altitude to transmit is barometric)

dump1090-fa knows how to merge the data and make both altitudes available where possible, and tar1090 and skyaware both make use of that.

Barometric altitude is used for pretty much all navigation - all ATC instructions and FMS input etc are going to be in terms of either pressure altitude corrected for local conditions (low altitude) or uncorrected pressure altitude / flight levels (high altitude), the primary altitude display is going to be a pressure altitude, etc. So it’s uncommon to ever actually see an ellipsoid altitude.