FlightAware Discussions

How is the MLAT position calculated?

I don’t know if there is a question here on the forum, but I wanted to know more!
How is it calculated in VRS and FA?


1 Like

The linked diagram gives a rough idea (though the actual time differences are much smaller!)

It works a lot like “GPS in reverse”. With GPS, you have multiple synchronized transmitters at known locations (the GPS satellites) and you use small differences in arrival times from the transmitters to work out the unknown location of one receiver. With MLAT, you use small differences in arrival times at multiple synchronized receivers to work out the unknown location of one transmitter. The maths behind it looks very similar.


thanks for the complete answer.

Thanks for the link served a lot!

Kind of related newbie question: When SkyAware shows an MLAT position/indicates that a position’s source is MLAT,

  1. Does this imply that position isn’t transmitted by the aircraft at all?
  2. Does this imply that my PiAware didn’t receive position transmitted by the aircraft so it relies on MLAT?

What I am trying to understand is when does an MLAT server decides to perform a calculation? Also, one FAQ/document implies that there is considerable CPU load to enable MLAT. Is there some distributed compute in addition to server?


ADS-B positions are obviously preferred / prioritized over MLAT positions.

Not in the sense of distributed computing.
The additional load is mostly because the mlat-client needs to decide which messages to send to the server and because it’s written in python (and a bit in C to make it more efficient) and thus not as efficient as dump1090 / piaware which are written in C.