mutability / mlat-server

Mode S multilateration server
GNU Affero General Public License v3.0
71 stars 67 forks source link

mlat-server

This is a Mode S multilateration server that is designed to operate with clients that do not have synchronized clocks.

It uses ADS-B aircraft that are transmitting DF17 extended squitter position messages as reference beacons and uses the relative arrival times of those messages to model the clock characteristics of each receiver.

Then it does multilateration of aircraft that are transmitting only Mode S using the same receivers.

License

It is important that you read this section before using or modifying the server!

The server code is licensed under the Affero GPL v3. This license is similar to the GPL v3, but it has an additional requirement that you must provide source code to users who access the server over a network.

So if you are planning to operate a copy of this server, you must release any modifications you make to the source code to your users, even if you wouldn't normally distribute it.

If you are not willing to distribute your changes, you have three options:

The server will automatically provide details of the AGPL license and a link to the server code, to each client that connects. This is configured in mlat/config.py. If you make modifications, the suggested process is:

None of this requires that you make your server publically accessible. If you want to run a private server with a closed user group, that's fine. But you must still make the source code for your modified server available to your users, and they may redistribute it further if they wish.

Prerequisites

Developer-ware

It's all poorly documented and you need to understand quite a bit of the underlying mathematics of multilateration to make sense of it. Don't expect to just fire this up and have it all work perfectly first time. You will have to hack on the code.

Running

$ mlat-server --help

Clients

You need a bunch of receivers running mlat-client: https://github.com/mutability/mlat-client

Output

Results get passed back to the clients that contributed to the positions. You can also emit all positions to a local feed, see the command-line help.