Rete / Server MLAT
Il nostro server MLAT, open source
mlat-ng localizza gli aerei che non trasmettono la posizione ADS-B, militari compresi, dai tempi con cui i loro segnali arrivano ai nostri ricevitori. L’abbiamo scritto in Rust, gira come un solo processo per tutta la rete e il codice è pubblico.
Licenza AGPL-3.0 · Rust · compatibile con mlat-client dalla 0.2.13 alla 0.4.2
Confronto con mlat-server dal 26 al 31 ottobre 2026, stesso traffico, posizioni ADS-B come verità.
Misurato contro mlat-server
Per una settimana, dal 26 al 31 ottobre 2026, mlat-ng ha ricevuto una copia dello stesso traffico dei feeder che riceveva mlat-server, il server che usavamo prima. Le posizioni di entrambi sono state confrontate con quelle ADS-B degli stessi aerei. I numeri sono della versione che gira oggi.
Posizioni più precise
Sullo stesso aereo nello stesso istante, la posizione di mlat-ng era la più vicina al vero nel 66% dei casi. L’errore mediano è sceso da 273 m a 177 m (−35%).
Più aerei senza ADS-B
Il 9,1% in più di aerei-minuto per gli aerei che non trasmettono la posizione ADS-B, come molti militari e gli aerei più vecchi.
Meno salti impossibili
Lo 0,53% delle posizioni era implausibile, contro lo 0,85%.
Aerei ricevuti da due soli ricevitori
mlat-server ne vuole tre più la quota, oppure quattro. mlat-ng posiziona anche gli aerei ricevuti da due, dal loro moto e dalla copertura dei ricevitori: errore mediano di circa 110 m (misurato il 2 novembre 2026).
Nessun aereo vero nascosto
mlat-server scartava tutti gli indirizzi fino a 0xF423F per togliere le tracce Mode A/C false, e con loro aerei veri con indirizzi bassi, per esempio di Africa, Qatar e Messico. mlat-ng scarta solo lo schema falso esatto.
Una rete senza confini
Un solo processo vede tutte le coppie di ricevitori. Con cinque server regionali, un ricevitore vicino al bordo della sua regione non si accoppiava con i vicini dall’altra parte.
Riavvii e guasti senza buchi
Una seconda istanza, su un altro server, riceve lo stesso traffico e prende il posto della prima. Nella prova del 3 novembre 2026, i 478 collegamenti dei feeder sono passati in 5,9 s di mediana (7 s al 95° percentile).
Ora che mlat-ng sceglie da solo il traffico da chiedere ai feeder, i due non si possono più confrontare fianco a fianco. Il metodo e la regola di decisione (docs/PLAN.md)
Cosa cambia per te
Se costruisci con i nostri dati
- Le posizioni MLAT della mappa e dell’API vengono da mlat-ng, ognuna con la sua fonte indicata.
- Non filtriamo: militari, PIA e LADD restano, anche quelli visti solo con la nostra MLAT.
- L’uso commerciale è consentito con ogni piano, Free compreso.
Se hai un ricevitore
- Non devi cambiare niente: stesso indirizzo (dati.flyitalyadsb.com:30100) e lo stesso mlat-client.
- Se la posizione dell’antenna è sbagliata, la rete la misura dalla sincronizzazione e la corregge quando è affidabile.
- La copertura che mlat-ng impara per ogni ricevitore è quella di Lightcone: gli aerei che ti sono passati accanto e non hai ricevuto.
Come funziona
Il principio è lo stesso di ogni MLAT: la differenza dei tempi di arrivo dello stesso segnale a più ricevitori. Cambia come lo calcoliamo. Le basi: come funziona MLAT
| mlat-server (come lo usavamo) | mlat-ng | |
|---|---|---|
| Processo | un thread per processo, la rete divisa in cinque regioni | un solo processo per tutta la rete: rete su tutti i core, un thread per lo stato, lavoratori per gli aerei |
| Coppie di orologi | stima a finestra e anello PI della deriva | un filtro di Kalman per coppia (scarto e deriva), con varianza che cresce con l’età |
| Normalizzazione dei tempi | albero di copertura minimo | minimi quadrati pesati su tutte le coppie utilizzabili |
| Calcolo della posizione | errori diagonali, Jacobiano numerico | covarianza completa dei tempi, Jacobiano analitico, più partenze con controllo della soluzione speculare |
| Tracce | filtro alimentato solo dalle posizioni | EKF alimentato anche direttamente dalle differenze di tempo: bastano 2–3 ricevitori per tenere viva una traccia |
| Ingressi | mlat-client | mlat-client più il flusso Beast dello stesso ricevitore, uniti in un ricevitore solo |
| Autocontrollo | nessuno | il 5% dei punti ADS-B tenuti fuori dalla sincronizzazione e calcolati con la MLAT: una misura continua della precisione |
Il codice è pubblico
mlat-ng è su GitHub con licenza AGPL-3.0: puoi leggerlo, provarlo e farlo girare. Parla il protocollo di mlat-client e mantiene le regole di mlat-server che i feeder conoscono, scritti da Oliver Jowett (mutability) e mantenuti da wiedehopf: grazie a entrambi.
Se ti è utile, una stella su GitHub aiuta altre persone a trovarlo.
Domande
Devo cambiare qualcosa sul mio ricevitore?
No. L’indirizzo resta dati.flyitalyadsb.com:30100 e funziona ogni mlat-client dalla 0.2.13 alla 0.4.2.
Le posizioni MLAT sono nell’API?
Sì: nell’API e sulla mappa, accanto a quelle ADS-B, ognuna con la sua fonte indicata. Non filtriamo, militari compresi, e l’uso commerciale è consentito con ogni piano, Free compreso.
Come è stato misurato?
Per una settimana, dal 26 al 31 ottobre 2026, mlat-ng ha ricevuto una copia dello stesso traffico di mlat-server. Le posizioni di entrambi sono state confrontate con quelle ADS-B degli stessi aerei nello stesso istante.
Posso farlo girare io?
Sì, con licenza AGPL-3.0: se lo modifichi e lo fai usare ad altri via rete, devi offrire loro il codice. mlat-ng lo fa da solo nel messaggio che manda a ogni mlat-client.