Help Needed with dump1090 Web Output

Even with an accurate time source it’s still tricky to line that up with your received data unless you have e.g. a unified receiver that’s timestamping samples vs. GPS time internally. Not something that the rtlsdr dongles will do - with the dongles you have no real idea what the true receive time of a particular sample is, other than “some time before the USB subsystem handed you that block of samples”. Delays due to USB itself or waiting for the data to get through the USB subsystem are mostly unknown.

I believe you can derive a synchronized clock without needing a GPS PPS signal or similar if you use the reception time of a message that was transmitted at a known location and received by multiple receivers as a baseline. In the ADS-B case that’s relatively easy - use a position report message that was seen by a few receivers, you know the transmit location of that! You can compute a clock offset for each receiver (from the point of view of its sampling clock) based on its local reception time vs. the expected travel time for the signal from the known transmitter position to that receiver. You can manually provide each receiver location rather than getting it from GPS, assuming the receiver doesn’t move around.

The receiver sample clock should stay stable enough in the short term that you can then use that known offset to do MLAT for subsequent positionless reports (for a while, anyway - the dongles do drift considerably with temperature). You don’t care about the absolute time for MLAT, you only care about the difference in arrival times at different receivers.

dump1090 half-supports this in that it can generate a 12MHz (really 2MHz, scaled) clock timestamp on each packet based on the sample position at which it saw the message. That should be good enough for accuracy to within a few hundred metres at least. So then you just need to work out how to aggregate that data and turn it into positions! I have a few ideas but the challenge is really in collecting a useful set of data to test against - you’d need a bunch of raw message dumps from a group of receivers that can see the same patch of sky, but are somewhat spread out.