
Dump1090 è un semplice decodificatore Mode S per dispositivi RTLSDR
Dump 1090 è un decoder Mode S progettato specificamente per dispositivi RTLSDR.
Le caratteristiche principali sono:
Anche se di tanto in tanto aggiungo/sistemo cose nel mio fork, punto al minimalismo dell'implementazione. Tuttavia esiste un fork molto più ricco di funzionalità disponibile, sviluppato da MalcolmRobb.
Digitate "make".
Per catturare il traffico direttamente dal tuo dispositivo RTL e mostrare il traffico catturato sullo standard output, basta eseguire il programma senza alcuna opzione:
./dump1090
Per emettere solo messaggi esadecimali:
./dump1090 --raw
Per eseguire il programma in modalità interattiva:
./dump1090 --interactive
Per eseguire il programma in modalità interattiva, con supporto di rete, e collegarti con il tuo browser a http://localhost:8080 per vedere il traffico in tempo reale:
./dump1090 --interactive --net
In modalità interattiva è possibile avere un output meno denso di informazioni ma più "stile arcade", dove lo schermo viene aggiornato ogni secondo mostrando tutti gli aeromobili visti di recente con alcune informazioni aggiuntive come altitudine e numero di volo, estratte dai pacchetti Mode S ricevuti.
Per decodificare dati da file, usa:
./dump1090 --ifile /path/to/binfile
Il file binario dovrebbe essere creato usando rtl_sdr in questo modo (o con qualsiasi altro
programma in grado di produrre campioni IQ senza segno a 8 bit a una frequenza di campionamento di 2 MHz).
rtl_sdr -f 1090000000 -s 2000000 -g 50 output.bin
Nell'esempio rtl_sdr viene usato un guadagno di 50; in pratica dovresti usare il guadagno
più alto disponibile per il tuo tuner. Questo non è necessario quando si chiama Dump1090 stesso
poiché è in grado di selezionare automaticamente il guadagno massimo supportato.
È possibile alimentare il programma con dati tramite standard input usando l'opzione --ifile con "-" come argomento.
Dump1090 può essere chiamato con altre opzioni da riga di comando per impostare un guadagno, una frequenza diversi e così via. Per un elenco delle opzioni usa:
./dump1090 --help
Tutto ciò che non è documentato qui dovrebbe essere ovvio, e per la maggior parte degli utenti chiamarlo senza alcun argomento è la cosa migliore da fare.
Di default Dump1090 cerca di correggere gli errori di bit usando il checksum CRC. Il programma usa una tabella di sindromi precalcolata per identificare e correggere rapidamente fino a due errori di bit nei messaggi ricevuti.
Questo è effettivamente in grado di correggere gli errori e funziona in modo affidabile nella mia esperienza, tuttavia se sei interessato a dati molto affidabili ti suggerisco di usare l'opzione da riga di comando --no-fix per disabilitare la correzione degli errori.
Nella mia limitata esperienza Dump1090 è stato in grado di decodificare un gran numero di messaggi anche in condizioni in cui ho incontrato problemi usando altri programmi; tuttavia non è stato eseguito alcun test formale, quindi non posso davvero affermare che questo programma sia migliore o peggiore rispetto ad altri programmi simili.
Se riesci a catturare traffico che Dump1090 non è in grado di decodificare correttamente, mandami un'email con un link per il download. Potrei provare a migliorare il rilevamento durante il mio tempo libero (questo è solo un progetto hobbistico).
Dump1090 può decodificare i messaggi di posizione al suolo (Type Code 5-8), che vengono trasmessi dagli aeromobili mentre sono a terra (rullaggio, attesa ai gate, ecc.). Questi messaggi includono la posizione dell'aeromobile, la velocità al suolo e la rotta al suolo.
Le posizioni al suolo usano una codifica diversa rispetto alle posizioni in volo: il formato CPR (Compact Position Reporting) copre solo 90 gradi invece di 360, e richiede una posizione di riferimento entro 45 miglia nautiche per una decodifica senza ambiguità.
Invece di richiedere di configurare la posizione del tuo ricevitore, Dump1090 calcola automaticamente una posizione di riferimento facendo la media di tutte le posizioni in volo decodificate con successo. Questo funziona perché se riesci a ricevere traffico al suolo da un aeroporto, quasi certamente ricevi anche traffico in volo. La posizione media degli aeromobili in sorvolo fornisce un riferimento che è abbastanza vicino (ben all'interno del requisito delle 45 NM) per decodificare le posizioni al suolo.
Nota: le posizioni al suolo verranno visualizzate solo dopo che almeno una posizione in volo è stata decodificata con successo per stabilire il riferimento. Gli aeromobili a terra mostreranno altitudine 0 nel display interattivo.
Abilitando il supporto di rete con --net, Dump1090 inizia ad ascoltare le connessioni dei client sulle porte 30002 e 30001 (puoi cambiare entrambe le porte se vuoi, vedi l'output di --help).
I client connessi ricevono i dati appena arrivano dal dispositivo (o dal file se si usa --ifile) nel formato raw simile al seguente:
*8D451E8B99019699C00B0A81F36E;
Ogni voce è separata da un semplice newline (carattere LF, hex 0x0A).
La porta 30001 è la porta di ingresso raw e può essere usata per alimentare Dump1090 con
dati nello stesso formato specificato sopra, con messaggi esadecimali che iniziano con
un * e terminano con un carattere ;.
Quindi, per esempio, se c'è un'altra istanza remota di Dump1090 che raccoglie dati, è possibile sommare l'output a un'istanza locale di Dump1090 facendo qualcosa del genere:
nc remote-dump1090.example.net 30002 | nc localhost 30001
È importante notare che ciò che viene ricevuto tramite la porta 30001 viene anche trasmesso ai client in ascolto sulla porta 30002.
In generale, tutto ciò che viene ricevuto dalla porta 30001 viene gestito esattamente come il traffico normale dei dispositivi RTL o dal file quando si usa --ifile.
È possibile usare Dump1090 semplicemente come hub usando --ifile con /dev/zero come argomento, come nell'esempio seguente:
./dump1090 --net-only
Oppure, in alternativa, per vedere cosa succede sullo schermo:
./dump1090 --net-only --interactive
Poi puoi alimentarlo da diverse fonti di dati da internet.
I client connessi ricevono messaggi in formato SBS1 (BaseStation), simili a:
MSG,4,,,738065,,,,,,,,420,179,,,0,,0,0,0,0
MSG,3,,,738065,,,,,,,35000,,,34.81609,34.07810,,,0,0,0,0
Questo può essere usato per inviare dati a vari siti di condivisione senza la necessità di usare un altro decoder.