VATSIM / IVAO / PILOTEDGE Users - Be aware of an important bug!

I did a quick test at ground, 1000 ft, and 8000 ft indicated at KSNA while watching the SimConnect vars.

It seems that PRESSURE ALTITUDE and GPS POSITION ALT are both much much lower than INDICATED ALTITUDE or PLANE ALTITUDE, but PLANE ALTITUDE is also usually higher than INDICATED ALTITUDE and the difference gets larger the higher I go. This is at a baro pressure of 29.93, only barely above STD.

I don’t really have a clue how these are being calculated but it seems waaaaaaaaaaaaay off.

Ground (should be 40-50 feet MSL):

Indicated 1000ft MSL:

Indicated 8000ft MSL:

PLANE ALTITUDE is altitude from sea level pressure, so higher you go, higher the discrepancy will be with INDICATED/PRESSURE ALTITUDE. In you screenshots PRESSURE ALTITUDE and gps altitude seems to be in meters, other altitudes in feet.

Your GPS alt and Pressure alt are coming back in meters.

-Matt | Working Title

1 Like

Aha! That makes more sense then :smiley:

Should it be off by 300 feet at 8000 feet when the baro is 29.93? Note that tuning to 29.92 does not remove the difference, it’s only very slightly reduced.

That at least helps make some sense. :wink:

Not significantly, no, but I would expect more than a 2mb change from ISA 0 to ISA +90. Now, how large the effect would of course depend on how tall the column of ludicrously warm air is, but the sim doesn’t really simulate that in-situ, that data comes from the server-side weather model, in this case.

-Matt | Working Title

Ok so now that I have the units right :wink: here’s the data again:

at ground:

  • PLANE ALTITUDE: 41.7 ft
  • PRESSURE ALTITUDE: 32.8 ft
  • INDICATED ALTITUDE: 39.2 ft
  • GPS POSITION ALT: 41.6 ft

at 1000 ft indicated:

  • PLANE ALTITUDE: 1000.1 ft
  • PRESSURE ALTITUDE: 991.5 ft
  • INDICATED ALTITUDE: 1014.7 ft
  • GPS POSITION ALT: 1001.0 ft

at 8000 ft indicated:

  • PLANE ALTITUDE: 8373.0 ft
  • PRESSURE ALTITUDE: 8070.2 ft
  • INDICATED ALTITUDE: 8013.4 ft
  • GPS POSITION ALT: 8373.0 ft

So, PLANE ALTITUDE and GPS POSITION ALT match (but in different reported units, one feet and one meters).
PRESSURE ALTITUDE and INDICATED ALTITUDE don’t match each other (off by about 50 ft at 8000 ft indicated, which is probably fine for 29.93 s 29.92) however they are both significantly below PLANE ALTITUDE and GPS POSITION ALT at moderate altitude.

I could be wrong, but I don’t believe the atmospheric model in any previous MS sim (FSX or ESP-based P3D) has simulated the effect of temperature on pressure.

The big problem right now is that the extreme high temperatures at high altitude appear to be caused by corrupt data being injected into the sim atmospheric environment by the Live Weather server.

The problem definitely started at least 6 days before SU5 went live, and was noted by many users of WU5/SU4 (myself included).

The previous version had been working fine for weeks with Live Weather before the problem suddenly arose.

It does not occur everywhere, and when the temperature suddenly goes to an extreme high value, there is often an accompanying (equally sudden) wind shift at the same moment which also points to possible data corruption.

Temperature doesn’t have to affect pressure at all. You can keep pressure exactly the same for a different temperature just by changing density. I don’t think it is the atmospheric models in sims that have not simulated the effect of temperature, but rather the airplane’s actual height above ground level due to altimeter error.

Pressure altitude and indicated altitude will only match if the atmospheric pressure is exactly 29.92 in/hg (1013 mb). By definition, pressure altitude is the altitude shown when the altimeter is set to 29.92.

Pressure altitude will be lower than indicated if actual atmospheric pressure is higher than 29.92, and higher than indicated if actual pressure is less than 29.92

“Plane altitude” (same as “GPS altitude”) which is more properly called “true” altitude, is the aircraft’s actual altitude above sea level. It should match indicated altitude if the altimeter is synchronized to current atmospheric pressure, which in MSFS is most easily done by pressing the “B” key.

In the “real” atmosphere, an uncorrected barometric altimeter can be affected by air temperature as well. It does not become significant unless the temperature is extremely cold or hot for the given pressure altitude. Example: a temperature of +20C at a pressure altitude of 1000 feet would only cause a very minor error in indicated vs. true altitude.

On the other hand, an air temperature of 20C at a pressure altitude of 35000 feet would result in a significant difference between indicated vs. true altitude.

All other things being equal, true altitude will be less than indicated altitude if the temperature is cold, and higher than indicated if the temperature is high.

This is EXACTLY what I was trying to say in the other thread!

The generic transponders all use INDICATED ALTITUDE and not Standard Pressure Altitude (sl 29.92 inHg). They SHOULD be using standard Pressure Altitude. I don’t know what the G1000 or G3000 transponders are using to get altitude. But the KT76C, the AS21, and AS330 transponders are all using “Indicated Altitude:3”, or register 3.

And, too boot, there are three indicated altitude registers FS uses so the Transponder, Auto Pilots and Altimeter are not linked. So, when you change the indicated altitude on your Altimeter, you are NOT changing the indicated altitude of either your auto pilot or your transponder! The transponder should not be using indicated altitude in the first place.

But the B key affects all three indicated altitude registers. So, when you use the B key, you are changing the altitude of your transponder to the current indicated altitude, and when you reset your altimeter to pressure altitude above FL180, the transponder is still using the same indicated altitude you set with the B key, and there is no way to change that.

And if VATSIM etc are reading the Transponder altitude, and you’ve used the B key, it’s going to be wrong if you are using live weather.

I just wrote a long text about this to Matt.

I created a package which fixes the three generic transponders if anyone wants it, but I would hope that Asobo will fix this. I reported the issue months ago.

For instance, the code in the KT76C.js is

getAltitude() {
    return SimVar.GetSimVarValue("INDICATED ALTITUDE:3", "feet");

It should be

getAltitude() {
    return SimVar.GetSimVarValue("PRESSURE ALTITUDE:3", "feet");

(It super annoyed me the KT76C displayed the indicated altitude of my altimeter, and not the standard pressure altitude it was supposed to (read the manual) and that’s how I came across this)

What is wrong is what I just posted above. The transponders are getting their altitude from “INDICATED ALTITUDE:3” instead of “PRESSURE ALTITUDE:3”.

And they are not linked to the altimeter (The G1000 and G3000 may be, I haven’t reviewed their code).

By law, transponders have their own pressure sensor, and it’s calibrated to sea level pressure at 29.92 inHg, hence, it should always read standard pressure altitude. Or, in FS programming lingo… Pressure Altitude.

1 Like

That is fine for the real world. Indeed, r/w transponders transmit pressure altitude, but that transmitted pressure altitude is corrected to current barometric pressure automatically before being displayed on an ATC controller’s radar scope. A controller does not see the raw pressure altitude - the controller sees the corrected altitude which (assuming the aircraft altimeter is set to current pressure) will be exactly the same as the indicated altitude the pilot sees on his altimeter.

At the flight levels (above 18,000 feet in the US), ATC radar applies no correction, and transmitted pressure altitude is displayed directly, because all aircraft are using pressure altitude as their primary reference.

I have no first-hand knowledge of the internal workings of Vatsim, or clients like VPilot, but AFAIK online networks use the simconnect variable “Indicated altitude” not “pressure altitude” to determine the altitude of connected aircraft.

I am not sure about the built-in ATC in MSFS, because in this case, the ATC should “know” what the current aircraft pressure reference is.

In order for transmitted pressure altitude to work on a network like Vatsim, the Vatsim controller would have to be using exactly the same pressure reference as the aircraft client. That is rarely going to be the case. Not all Vatsim pilots are necessarily using the same weather injection program. With weather programs like Active Sky, it is possible to retrieve weather from Vatsim itself, but not all AS users do that, and some use no real weather at all.

An autopilot on a transport-category aircraft always uses indicated altitude (as supplied by the air data computer) to capture and maintain a selected altitude. Pressure altitude is never used for this purpose.

Sorta kinda. Pressing B synchronizes all systems.cfg registered altimeters to the sea level pressure (or 29.92 starting at 18000). So, if the current air pressure at altitude does not match the what it should be given the ISA pressure lapse rate, then there will be a difference in the true altitude vs the indicated altitude.

-Matt | Working Title

I think most instruments use their own index to set baro (not index 0, which sets all of them). However, the B key will set all registered baros. However, this is not exceptionally meaningful here, because the transponder altitude has really no bearing on what altitude is actually being transmitted to online services. Because planes can define any number of altimeters and because the client cannot know which index is the transponder, clients are probably using the generic PRESSURE ALTITUDE simvar and then applying their local baro correction to it to get the scope values.

-Matt | Working Title

2 Likes

I don’t know how VATSIM works, so I get what you’re saying. If they are using indicated altitude or the transponder altitude or whatever, you’re right, they are doing it wrong.

But, so far, in every gauge I’ve looked at, it seems to be a standard that altimeters use register 1, autopilots register 2 and transponders register 3. I don’t know how this started.

What I do know is the KT76C displays the wrong altitude (below 18,000 ft). It should display Standard pressure altitude, and not be affected by the B key.

Perhaps it was a conscious decision to do this, as people would probably write in and say it’s displaying the wrong altitude when it didn’t match the altimeter. I often wondered this. But I wanted the gauge to display the correct altitude per the manual so I rewrote it for myself

It’s mostly just a decades old carryover dating back probably to FS9 or earlier. The B key just does them all no matter what. It’s possible we could add a configuration to prevent B key sync for specific altimeter indexes at some point.

For GA planes, that does seem to be the general template. For other planes, especially third parties, there’s been all manner of crazy stuff, historically. For the KT76C, seems like it needs a fix to switch the simvars it displays based on whether or not it is above or below 18K.

-Matt | Working Title

1 Like

Just doing what I said fixes it to work as designed by the manufacturer.

But, also as I said, you’ll likely get a bunch of bug reports when it doesn’t match the altitude displayed on the altimeter, so you can’t really win :slight_smile:

As you said, it doesn’t really matter, the Transponder output shouldn’t be being used by any other systems. I can’t imagine the internal ATC system uses the Transponder output, like you said. I’m more worried that the G1000 and G3000 behave appripriately, with regard to the fact people use the B key. As I said, I didn’t get into figuring that out. I know you know the internal workings.

That is not correct. Pressure altitude and indicated altitude will match whenever the baro is set to 29.92 regardless of what the actual barometric pressure is. What matter is what the baro setting is set to. At 29.92, it is matching the standard pressure curve that pressure altitude is based on.

That depends on what you consider to be minor. A -20 C temperature at 1000 feet above the altimeter setting source (not the pressure altitude unless at 29.92) leads to a 140 foot error. This is not minor for a crew that believes they can clear a 1000-foot obstacle because their altimeter says they are at 1100 feet.

No one really cares about the error at 35,000 feet as there isn’t any terrain to contend with. That error can truly be considered “minor.”