Наблюдаем за самолетами при помощи RTL-SDR и ADS-B

4 октября 2017

Один из способов развлечения с Software Defined Radio заключается в том, чтобы наблюдать за самолетами. В современных самолетах используется технология ADS-B. Суть ее заключается в том, что самолеты передают номер рейса, скорость, высоту полета, GSP-координаты, и прочую информацию о воздушном судне на частоте 1090 МГц, используя модуляцию DPSK. Передаваемая информация никак не шифруется, и при помощи RTL-SDR принять ее может любой желающий.

Выбираем антенну

Как вы можете помнить из заметки О работе пультов и радиомодулей на 433 МГц, для приема сигнала известной частоты можно использовать штыревую антенну, длина которой составляет 1/4 длины волны. Не сложно подсчитать, что в нашем случае длина антенны составит около 68 мм. Такую антенну легко изготовить самостоятельно из SMA-разъема и куска провода, или же обрезав стоковую антенну RTL-SDR. Для лучшего приема антенну следует поставить на металлическую банку из-под кофе, консервированных ананасов, или чего-то такого.

Антенна, которую использовал я, выглядит следующим образом:

Антенна для приема ADS-B

Обратите внимание на то, с какого места следует начинать отсчет длины. Заметьте также, что диаметр банки должен быть не меньше 1/4 длины волны. Если банки совсем нет, то под антенной можно постелить лист фольги.

Альтернативные варианты антенн можно найти в этом трэде. В сущности они представляют собой ту же штыревую антенну, только в качестве плоскости заземления (ground plane) используется либо 8 припаянных проводов (так называемая spider antenna), либо обычная алюминиевая банка диаметром 66 мм от Coca-Cola или пива (cantenna):

Spider antenna и cantenna

Еще для приема ADS-B можно использовать G7RGQ Omni Directiona Antenna. Однако ее высота составляет около полуметра, что как минимум не слишком удобно в плане транспортировки. На AliExpress можно купить готовую антенну, которая, согласно описанию, специально предназначена для ADS-B. Эту антенну я не пробовал, поэтому не могу сказать, насколько она хороша или плоха. Наконец, для полноты картины стоит отметить, что на eBay доступна антенна для ADS-B от FlightAware, цена которой составляет 50$ + 24$ за доставку в Россию.

Дополнение: Позже я выяснил, что cantenna, приклеенная на двухсторонний скотч к окну, ловит заметно лучше использованной мной изначально штыревой антенны.

Декодируем ADS-B

Для декодирования ADS-B существует утилита dump1090. Она легко собирается из исходников, или, если у вас Arch Linux, ставится из AUR:

yaourt -S dump1090-git

Fun fact! Оригинальный код dump1090 был написан господином Salvatore Sanfilippo, который более известен миру под ником antirez и как автор Redis. А еще у него в блоге можно найти инструкцию по изготовлению дипольной антенны для приема ADS-B из пробки и медной проволоки.

Ставим антенну у окна, подключаем ее к RTL-SDR, который в свою очередь подключаем к компьютеру. Затем говорим:

dump1090 --interactive --net --net-http-port 8080 --metric --fix

Если все было сделано правильно, очень скоро вы увидите информацию о пролетающих поблизости самолетах:

Hex    Mode Sqwk  Flight   Alt    Spd  Hdg   Lat    Long Sig  Msgs  Ti
----------------------------------------------------------------------
42404B S    1570           13675                           7     5  53
42455C S                    1200  159  069                 8     3  57
4D215F S    5716           40975                           7     4  53
424946 S          AFL1196  33000  428  092                 9    19  55
4245A9 S          PBD433   32200  370  067  55.86  39.10  10    50  50
4243F1 S    2151           35750  434  082  55.79  40.51   9    78  45
78100A S    0212  CCA940   34975  484  087  55.67  38.14  12    64  16
4240CA S                   29425  451  071  55.62  40.75  10    75  43
42458F S                   27000  468  089  55.68  40.54  11    85  44
43BE87 S    1563  AFL1432  16600  376  105  55.69  38.27  20   237  44

Кроме того, на localhost:8080 будет доступен красивый веб-интерфейс, вроде такого:

Веб-интерфейс dump1090

Сказать по правде, я был приятно удивлен тем фактом, что ADS-B превосходно ловится в черте города. Конечно же, на открытой местности картинка будет куда красивее, так как сигнал будет приниматься со всех сторон, а не только с той, в которую у вас смотрят окна. Что же касается дальности передачи информации, я успешно принимал сигнал от самолета, пролетающего в 160 км от меня. Судя по обсуждению в этом трэде, при правильных условиях (открытая местность, расположение антенны на большой высоте, …) вполне реально наблюдать за самолетами в радиусе 400-450 км.

Заключение

Ссылки по теме:

  • Плейн- и радарспоттинг, или я болен авиацией, статья Кирилла Снежко, в которой он более подробно рассказывает о плейнспоттинге и радарспоттинге. Помимо прочего, в статье вы найдете немало интересных ссылок;
  • Существует множество форков dump1090, среди которых особого внимания заслуживает форк, умеющий рисовать heatmap, за авторством Ted Sluis;
  • Сайт flightradar24.com позволяет наблюдать за самолетами во всем мире. Также вы можете заливать на этот сайт данные о самолетах, принятые на RTL-SDR. Вот инструкция как это сделать;
  • Если вам хочется подробнее разобраться в том, как именно кодируются данные в ADS-B, обратите внимание на ADS-B Decoding Guide;
  • В видео All Your RFz Are Belong to Me, помимо прочего, приводится много интересных примеров визуализации данных, полученных по ADS-B;

Поначалу я как-то скептически относился ко всей этой теме с наблюдением за самолетами. Но теперь должен признать, что это затягивает. Возникает желание собрать побольше данных и как-то их визуализировать, экспериментировать с антеннами, чтобы добиться максимального радиуса приема сигнала, и так далее. В общем, довольно любопытное хобби, рекомендую.

А играетесь ли вы с декодированием ADS-B и если да, то каковы ваши последние успехи на этом поприще?

Дополнение: Прием ADS-B на RTL-SDR, вторая попытка

Метки: , , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.