Dekodowanie ADS-B

Trudno byc w czymkolwiek dobrym specjalista, nie bedac równoczesnie pasjonatem. W informatyce widac to równie dobrze jak w kazdej innej dziedzinie zycia czy nauki. Warunek konieczny oczywiscie nie jest warunkiem wystarczajacym, ale jednak to przyjemne chciec wgryzac sie glebiej i glebiej w swoja ulubiona dzialke. W wielu sytuacjach przeklada sie to na osiagniecia zawodowe, ale tak naprawde, najciekawsze sa te obszary, w których zabawa nie jest niczym wiecej niz tylko zabawa. Tam wlasnie mozemy poeksperymentowac, nikt nas nie goni, nikt nie rozlicza z efektów, nikt nie mówi co jest wazniejsze a co mniej istotne. A jednak projekty same sie tocza i czesto koncza niemalym sukcesem. W moim prywatnym przypadku, ostatni (tak naprawde zupelnie niewielki) projekt dotyczyl przeciecia sie dwóch tematów, które mnie interesuja: IT i latania, pozwalajac mi bawic sie tym, co lubie, czyli laczeniem komputerów z obiektami zupelnie nie-informatycznego swiata. W efekcie, powstalo proste rozwiazanie odbierajace z samolotów nad Polska sygnaly transponderów i przekazujace je dalej w postaci mozliwej do wykorzystania dla uzytkowników Internetu.

1090_1

Gdyby ktos chcial pobawic sie w ten sam sposób, potrzebne beda:

  • Sygnaly z samolotów. To oczywiscie nie ode mnie zalezy, ale samoloty wyposazone sa w transpondery, które nadaja wiele ciekawych informacji. Numer rejestracyjny, wysokosc, predkosc, typ maszyny, status, dane pogodowe itp. Razem okolo 80 róznych parametrów, które w postaci nieprzetworzonej mozna sobie obejrzec na przyklad tutaj: https://adsb.stderr.pl/.
  • Antena. Sygnaly ADS-B nadawane sa na czestotliwosci 1090MHz i spokojnie sa w stanie przewedrowac 250km z samolotu do odbiornika znajdujacego sie na ziemi. Oczywiscie idealnie byloby ustawic duza antene na szczycie samotnej góry, jednak nawet kilkucentymetrowa antena postawiona na parapecie (i to wewnatrz mieszkania) zupelnie niezle sie sprawdza. Trzeba tylko poszukac dobrego miejsca. Co ciekawe, w moim przypadku nawet przesuniecie anteny rzedu 10cm dawalo ogromne róznice w efektywnym zasiegu. Mozna na pewno to jakos madrze opomiarowac, jednak uznalem, ze bede prowadzil dobowe statystyki dla róznych miejsc i cos z tego w koncu wyjdzie. W efekcie znalazlem to jedno jedyne sluszne miejsce i z Warszawy odbieram bez wiekszego problemu dane z kilku-kilkunastu samolotów nad pólnocna Polska a dodatkowo znad kawalka Litwy i Bialorusi. Oczywiscie wieksza antena brzmi kuszaco, ale jestem swiadomy, ze wiele nie wniesie dopóki nie stanie w lepszym miejscu, a na to chwilowo szans nie ma.
  • Odbiornik sygnalów ADS-B. Brzmi powaznie. Jednak wspólczesna elektronika zmierza w bardzo ciekawa strone. Zamiast zrobic dziesiec róznych urzadzen (czy chipów) z waska funkcjonalnoscia, taniej jest zrobic jeden, potrafiacy wszystko i zastosowac go do dziesieciu róznych celów. Tak wiec, jezeli uda znalezc sie podlaczalny do komputera odbiornik potrafiacy odbierac 1090MHz, to juz jestesmy w polowie drogi. Druga polowa to jego zdolnosc do "zrozumienia" sygnalów. Oczywiscie sa specjalizowane odbiorniki ADS-B. Czasem nawet nie sa bardzo drogie. Najciekawsze jest jednak to, ze i czestotliwosc i charakter sygnalu nie odbiegaja bardzo mocno od tego, co potrzebne jest do telewizji DVB-T i w efekcie, sygnaly z samolotów moga byc odbierane przez tunery telewizyjne. Oczywiscie nie wszystkie, ale majac w srodku najpopularniejszy obecnie chip Realtek RTL2832U polaczony z tunerem R820T lub podobnym – mozemy próbowac zrozumiec interesujace nas transmisje. Nie kazdy tuner to potrafi, ale wiedzac czego szukamy, mozemy naprawde latwo i niedrogo (ponizej 100PLN razem z antena) kupic urzadzenie, które bedzie mialo potrzebna funkcjonalnosc.
  • Sterownik. Oczywiscie dolaczone do tunera telewizyjnego oprogramowanie ma nas uszczesliwic ostatnim odcinkiem ulubionego serialu a nie danymi z samolotów, wiec jego funkcjonalnosc rzadko nam sie przyda. Zeby rozmawiac z urzadzeniem, najprosciej jest uzyc stworzonego przez Microsoft drivera WinUSB. Driver ten ma mocno ograniczona funkcjonalnosc, jednak potrafi to, co najwazniejsze: siegnac do samego dna sygnalów USB przesylanych miedzy komputerem a urzadzeniem. Wszystko bardzo dokladnie udokumentowane jest na MSDN, na przyklad tutaj i tutaj. Oczywiscie musimy "zmusic" nasz system do uzycia poprawnego drivera (czyli przekonac Windows, ze podpielismy po prostu bezmyslne urzadzenie USB a nie zaden tuner) ale to nie jest trudne do wykonania, zwlaszcza jezeli wspomozemy sie programem Zadig.
  • Oprogramowanie interpretujace sygnaly. Od tunera dostajemy cyfrowa transmisje, która dzieki WinUSB dociera do komputera w postaci strumienia bitów i teraz musimy z tych bitów poskladac informacje o samolotach. Zrobi to dla nas aplikacja RTL1090, która poza wyswietleniem danych w czytelnej postaci, potrafi "wystawic" je przy pomocy TCP/IP (zwykle na porcie 30003), skad moga zostac odebrane przez specjalizowane oprogramowanie zajmujace sie sledzeniem ruchu lotniczego.
  • Oprogramowanie uzywajace podsluchanych danych. To, jakie oprogramowanie bedzie potrzebne zalezy od osobistych potrzeb uzytkownika. Do malowania samolotów na mapie nada sie PlanePlotter (jedyne platne oprogramowanie ze wszystkich tutaj opisanych). Ciekawsze jednak jest podzielenie sie danymi z serwisami agregujacymi dane od wielu uzytkowników i przedstawiajace je w jednolitej formie. Wskazac tu mozna na przyklad FlightRadar24, RadarBox24 czy PlaneFinder. To dzieki nim, mamy ogólnoswiatowe mapy dostepne dla kazdego w Internecie. Oczywiscie, programy te moga dzialac równoczesnie i nie ma problemu z wysylaniem informacji z jednego odbiornika do wielu serwisów.

I dziala. Chodzi sobie to wszystko od wielu miesiecy bardzo ladnie, a wspólpracujac chocby z aplikacja na telefon, pozwala na wycelowanie w niebo kamerki i dzieki zastosowaniu idei Augmented Reality zobaczenie na przyklad skad, dokad i z jaka predkoscia leci maszyna, która wlasnie widzimy na niebie.

Gdziestam w przyszlosci moze bedzie wieksza antena, mysle tez o zbieraniu danych do jakiejs bazy, która pozwoli mi przegladac i analizowac historie tych tysiecy strumieni informacji, które do mnie z nieba docieraja. Pewnie chwile pózniej, baza ta otrzyma jakis interfejs webowy. Ale na razie to tylko metne plany.

Jezeli komus ten opis sie przyda do uruchomienia wlasnego odbiornika ADS-B to super. Tak naprawde jednak, najbardziej fascynujace jest to, jak prosto wspólczesna technologia pozwala polaczyc istniejaca dookola nas rzeczywistosc ze swiatem IT. Pasjonatów (zeby nie powiedziec technologicznych zboczenców) nie brakuje i w efekcie kazdy moze wejsc na prosta strone i zobaczyc jak wyglada ruch w powietrzu, ruch statków na morzach czy ostatnie wyladowania atmosferyczne. A wszystko bardzo tanio, z wykorzystaniem "cywilnego" sprzetu, prostych i bezplatnych aplikacji oraz systemów, których kazdy z nas i tak w domu uzywa.

Autor: Grzegorz Tworek [MVP]

PS Slysze czasem pytanie czy nie boje sie wizyty smutnych panów. Nie boje sie. Sluchanie transmisji radiowych jest w Polsce w 100% legalne niezaleznie od tego, czego dotycza. W koncu to sam samolot dzieli sie z calym swiatem ta informacja. Ja ja tylko przekladam z fal radiowych na pakiety TCP/IP.