MLAT on PI?

Just throwing an idea…

I notice the boys in China have a USB GPS mouse for sale for under a tenner ebay.co.uk/itm/301489821226

If the Pi (probably Pi2) used one of these location and timing - how practical would it be to network a few receivers to do MLAT?

(minimum 3 to work out where the plane is, maybe 2 more for verification and to work out the altitude)

I’m sure the someone has the required calculations published somewhere (might need a Pi2 to do the maths - unless that can be done in the GPU)

The problem is that there’s no way to correlate the GPS time information with the time that the to-be-MLATted message arrived at the receiver with enough precision if they’re arriving as two separate signals.
There’s an unknown (and variable) amount of latency between the message wavefront arriving at the dongle’s ADC, and that sample arriving in dump1090 or equivalent.
USB in particular adds a lot of unknown delays there - milliseconds.
You really need microsecond-level precision to do MLAT.

If you could use a GPS PPS signal to timestamp the samples that would work. However the SDR dongles won’t do that directly. I guess you could build some external hardware that mixed the PPS signal into the RF feed at 1090MHz in a form that the decoder could pick it out again, but that’s going to be nontrivial…

However - I don’t think you actually need the receiver clocks to be directly synchronized for this particular case.
You can derive a common clock from other ADS-B position messages that are received by all receivers.
You know the position of the transmitter and the positions of each receiver, and the approximate propagation speed, so you know the expected difference in reception times.
By comparing that to the actual difference in reception time as measured by each receiver’s clock, you can find the offsets between the receiver clock.

I would speculate that this is how Planeplotter’s MLAT works.

Writing something to do this is on my todo list somewhere… the main challenge is in getting a group of receivers to test with.
I was going to look for volunteers at some point :slight_smile:

I did MLAT with PP for a while. I Didnt have GPS I used NTP on the computer wth a dongle. Is there not a NTP equivilant for the Raspberry?

NTP runs fine on a pi, but that does not help with the USB delay. You know when the sample arrived over USB, but not when the signal arrived at your antenna.

Also NTP from a network time reference won’t generally give you microsecond accuracy anyway…

What is the ideal/max distance between receivers so that MLAT can be tested/ used? I wouldn’t mind doing testing for mlat.

It’s not just range - the ideal setup is 4+ receivers located around the aircraft, all being able to hear messages from it.
It’ll be easiest to test against a bit of airspace that is busy at cruising altitudes since the higher you go the more receivers will be able to see it.

My suggestion would be for somewhere off the Belgian coast - there’s a fair amount of traffic there and that should be visible to lots of receivers in the UK / Belgium / Netherlands.
e.g. receivers in this 350km radius circle

Feel free to contact me if I can help with your tests.

I’d give you remote access to a Pi + dongle + antenna, I can set up a separate network for this :slight_smile:

(I have enough spare stuff, location approximately 52.5, -2)

Guess this is moving up my todo list then :slight_smile:
Might have something to try this weekend (not mlat, but the groundwork to do the clock sync part)

It will probably be in the form of a python script that talks to an existing dump1090 and feeds summary data back to me for aggregation with other receivers.

Feel free to contact me. Have a spare setup for you to (remotely) play with.
Located near EHEH and just seeing planes over Cambridge :wink:
/paul

True but appearently it was good enough for PP to decipher and use my reports for MLAT positioning.

im in for testing too

They don’t use NTP-based timestamps, they use the 12MHz sample timestamps. NTP is irrelevant other than as a simple way to weed out very out of date reports that aren’t useful.

I have a test system working now, but it could use a couple more receivers around the UK, Benelux or nearby to improve the coverage.
Send me an email (oliver@mutability.co.uk) if you’re willing to be a guinea pig :wink:


(yes, the callsign is entirely artificial…)

… as much as anything this to bump the thread up.

Anyone with 300km+ range - Manchester - South Yorkshire or south of the Thames (Bristol - Kent/Essex)

Obj’s add on MLAT-Client program is using about 20% of CPU and about 2% memory on my old Pi B.

If you join the trial I’ll feel much less isolated, more triangulation would then be possible over the UK.

Happy to help :smiley: I’d need my hand holding though as I’m new to Pi, Linux, ADS-B etc.

I’m in South Oxfordshire so overlap with Peter. I have 200+nm coverage.
I’ve emailed Oliver

excellent,
can we get midmarsh (Coningsby, Lincs),
someone with a good range near Mancester (StephenWhitfield?)
Someone with good cover South London / Kent / Sussex

No problems, let me know what you need me to do…

Contact Obj - address 4 posts up.

Basically he has a package to install on the Pi - includes some python scripts and some C code.

That then needs configuring to record your exact position and height above sea level.

(for mine, I installed the software on a separate pi in an isolated VLAN on the router and gave Obj full access to that Pi)

OK I’m up and running on the same Pi that feeds FlightAware