В мире радиолюбителей постоянно появляются новые инструменты, упрощающие жизнь как новичкам, так и опытным энтузиастам. Один из них — дистрибутив HamPi для Raspberry Pi. Эта специализированная система объединяет в себе все необходимые программы для цифровых видов связи, работы с SDR-приемниками, APRS и многого другого.
Чтобы начать экспериментировать с радио, достаточно просто установить HamPi на компактный одноплатный компьютер — все готово к работе с первых минут. Есть, конечно, нюансы, и их немало. Ниже расскажу о дистрибутиве, его установке, настройке и использовании. Поехали!

Что за HamPi?
Одноплатные компьютеры Raspberry Pi давно стали привычным инструментом радиолюбителей. Компактность, доступная цена и низкое энергопотребление сделали их идеальной платформой для построения DMR-хотспотов, APRS-станций и многих других проектов, в которых критичен форм-фактор. Однако если посмотреть на большинство радиолюбителей, то их основным инструментом остается ПК на базе операционной системы Windows.
Причин тому несколько. Во-первых, огромное количество специализированных приложений было разработано во времена господства Windows XP. Во-вторых, многие корреспонденты достигли возраста, когда переучиваться с Windows на Linux — уже слишком сложная задача. Банальная установка приложений, не говоря о самостоятельной компиляции из исходников, для них невыполнимый челлендж. И в третьих, кому-то просто не хочется отказываться от привычных программ и элементов интерфейса.
Действительно, большинство радиолюбительского софта требует определенных танцев с бубном для установки. Я прекрасно помню то время, когда только появились брелки RTL-SDR (еще на базе Elonics E4000) и мне пришлось провести немало времени за самостоятельной сборкой приложений под Linux.
Аббревиатура Ham часто встречается для обозначения радиолюбителей, например Ham radio, Ham alphabet. Смешно то, что слово ham в английском языке означает ветчину. Есть несколько версий создания этого термина. Самая правдоподобная — что это сокращение от фамилий первых операторов радиостанции Harvard Radio Club: Hyman-Almy-Murray.
Главной целью разработки HamPi стало упростить жизнь радиолюбителям. Вместо того чтобы тратить часы на установку и компиляцию приложений, теперь можно скачать дистрибутив, залить его на MicroSD-карточку и через 20 минут получить готовый к работе комбайн с десятками полезных программ и утилит.

Точно такая же концепция реализована в Kali Linux (бывший BackTrack Linux) — собрать все самые полезные инструменты для пентестера в одном месте и сделать их полностью готовыми к работе. Если посмотреть на основное меню, сходство очевидно:

Основа
В качестве базового образа HamPi была взята Raspberry Pi OS, то есть сильно переделанный Debian Linux для ARM-архитектуры. Причина проста — это официально рекомендуемая производителем ОС. Дейв постарался не вносить каких-либо существенных изменений в ядро, дабы не нарушить стабильность его работы, одновременно включив все нужные пользователям драйверы, коих немало.
Для максимальной совместимости с существующими SDR-решениями были добавлены пакеты rtl-sdr и SoapySDR (плюс плагины в качестве универсального слоя абстракции для разных SDR-устройств). Также были интегрированы драйверы от Osmocom, чтобы общаться с USB SDR на низком уровне.
Еще одно важное изменение — предустановленная библиотека Hamlib. Она предназначена для управления большим количеством разного «железа» — от трансиверов и усилителей до поворотных устройств. Ее нельзя назвать пользовательским приложением, так как она представляет собой прослойку, предоставляющую API и ABI (Application Binary Interface). Разработчики приложений могут применять Hamlib для упрощения взаимодействия с «железом» и тем самым уделить внимание пользовательскому интерфейсу и основным функциям.
К тому же в HamPi была добавлена расширенная поддержка ALSA и драйверов для USB-звуковых устройств. Дело в том, что многие популярные интерфейсы вроде Signalink USB на уровне «железа» представляют собой обычные внешние звуковые карты с модификациями для снижения фонового шума.
Программирование радиостанций — еще одна задача, которой требуются драйверы самых популярных конвертеров USB-to-Serial. Так что HamPi без проблем сможет работать с устройствами на чипах от FTDI, Prolific PL2303 и CH340/341. Дополнительно внедрены специфические драйверы для GPS-приемников, подключенных по USB.
Состав дистрибутива
Всего в HamPi интегрировано более сотни радиолюбительских приложений, которые можно поделить на такие категории:
общие — программирование радиостанций, драйверы и клиенты различных сетей вроде EchoLink;
расчет антенн — от калькулятора размеров антенны до анализатора производительности антенн Уда-Яги;
цифровые виды связи — приемники и декодеры протоколов FT8, FT4, WSPR и прочих;
DMR (Digital mobile radio) — построение домашнего репитера;
SDR (Software-defined radio) — программы, утилиты и плагины для обработки сигнала;
APRS (Automatic Packet Reporting System) — клиенты и реализация протокола AX.25, а также декодеры/энкодеры;
FLDigi — приложение, имеющее функционал TNC (Terminal Node Controller) и соответствующие дополнения;
Logbooks — различный софт для ведения аппаратных журналов радиолюбителя и утилит для загрузки на наиболее популярные порталы вроде LotW, eQSL.cc и ClubLog;
WinLink — клиент Winlink Global Radio Email, всемирной системы обмена радиосообщениями;
Morse Code — все, что нужно для того, чтобы выучить азбуку Морзе и декодировать принятые сообщения в текст.
Фактически любую задачу, стоящую перед современным радиолюбителем, можно решить с помощью такого набора программ. Сегодня я не буду рассказывать обо всех приложениях, но сделаю акцент на тех, которые сам использую. Про WsprryPi и HamClock уже есть отдельные публикации в нашем блоге на Хабре.
CubicSDR

Неважно, используете ли вы USB-брелок на базе RTL-SDR, собранный на заводе дядюшки Ляо, или трансивер HackRF One, вам нужно будет обработать I/Q-сигналы, поступающие с приемника. Пользователи Windows обычно для этого предпочитают SDR# или HDSDR, бывший WinradHD.
CubicSDR, по-моему мнению, удобнее в работе, чем GQRX — кстати, тоже есть в HamPi. Он поддерживает значительно больше устройств за счет библиотеки SoapySDR и обладает приятным современным интерфейсом. Единственный нюанс — по ресурсам он все же более требователен.
Стоит учитывать, что это приложение почему-то отсутствует в альфа-версии HamPi 4.0a, но есть в предыдущих релизах 2 и 3. В целом его можно без проблем установить и самостоятельно из репозитория проекта.
DireWolf

Это один из самых популярных программных модемов, умеющий работать как TNC для цифровых радиосвязей. Он позволяет использовать обычную звуковую карту, вход и выход которой можно подключить к трансиверу вместо приобретения отдельного девайса вроде Mobilinkd TNC4. В DireWolf реализована полноценная поддержка протоколов APRS и AX.25, а также он умеет работать клиентом для глобальной сети APRS-IS (APRS Internet Service).
WSJT-X

Современные радиолюбители все реже общаются в эфире голосом, проводя QSO при помощи таких протоколов, как FT8. Его основное преимущество в том, что можно проводить связи на уровне минус 24–26 dB ниже шума. Это значит, что сообщения доходят даже тогда, когда связь голосом или «морзянкой» невозможна.
Получается работать в эфире с помощью самых простых антенн и даже на малой мощности связываться с дальними корреспондентами. Минимальный цикл обмена сообщениями очень короткий — 15 секунд на прием и 15 на передачу. За все это великолепие необходимо поблагодарить двух ученых — Стивена Франке (Steven Franke) и Джозефа Тейлора (Joseph Taylor).
CHIRP

Большинство радиостанций сейчас можно программировать с компьютера, однако каждый вендор стремится сделать свой собственный софт для этого. Разумеется, он не универсален, и если попробовать зашить частоты в трансивер TYT приложением для Quansheng, то ничего не получится. Так что если у вас зоопарк станций, то приходится устанавливать для каждой отдельную программу.
CHIRP решает этот вопрос за счет единого интерфейса и поддержки огромного количества станций. На момент написания этой статьи он умеет взаимодействовать почти с 600 моделями различных производителей. Must have для любого радиолюбителя.
Trusted QSL

Аппаратный журнал — штука необходимая даже не для того, чтобы похвастаться проведенными связями или принять участие в соревнованиях. Он порой используется в качестве юридического доказательства законности работы в эфире. Сейчас такие журналы крайне редко ведутся в бумажном виде, а выбор приложения остается темой многочисленных холиваров.
Trusted QSL (или TQSL) — один из наиболее популярных аппаратных журналов, нативно взаимодействующий с сервисом LoTW (Logbook of The World). Именно его рекомендуется использовать радиолюбителям, активно работающим для получения дипломов и наград. Более того, он умеет подписывать журналы с помощью сертификатов, что является одним из способов защиты от подделки.
Распределенные вычисления

На этом моменте стоит остановиться подробнее. Если внимательно прочитать файл HAMPI README.docx, то автор честно говорит о том, что помимо радиолюбительского софта в дистрибутиве присутствует клиент Boinc, открытой программной платформы для грид-вычислений. Когда Raspberry Pi с загруженным образом HamPi простаивает, ресурсы его процессора направляются на поиск пульсаров по данным радио- и гамма-телескопов — проект Einstein@Home. При этом нагрузка на карту памяти низка настолько, что фактически ей можно пренебречь.
Такой подход многим не нравится, ведь автор решил за пользователя, как расходовать ресурсы не принадлежащего ему «железа». Это не особо стыкуется с концепцией «добровольных вычислений», декларируемых Einstein@Home. С другой стороны, информация об этом не утаивается, а заявляется явно. Пользователь без труда может или сменить проект на собственный при помощи утилиты boinctui, или полностью снести клиент, тем самым не жертвуя такты процессора на сторонние вычисления.
Траблшутинг
У HamPi есть типовая проблема с запуском, заключающаяся в том, что как только вы пробуете первый раз загрузиться с карты памяти, то вместо рабочего стола видите набор сообщений об ошибках:

Система сообщает о невозможности перемонтирования разделов и включении необходимых служб. И проблема здесь кроется в том, что не отрабатывает скрипт первого запуска, который призван расширить корневой раздел до размеров карты памяти. Если попытаться сделать это принудительно через sudo raspi-config, будет выдано сообщение об ошибке вида:
There was an error running option A1 Expand Filesystem
Реально проблема в том, что образ снимался с карты памяти, объем которой не соответствует размеру вашей. Тут хорошо видно: я записал его на карту 32 Gb, а система ожидает, что /dev/mmcblk0p2 будет размером 128 Gb:

Решение элементарное: открываем устройство с помощью fdisk:
$ fdisk /dev/mmcblk0
и командой p смотрим на таблицу разделов:

Видно, что /dev/mmcblk0p2 начинается с сектора 532480. Запоминаем это значение и удаляем раздел с помощью клавиши d. Сразу же пересоздаем его, указывая 532480 в качестве начала, а конечное значение fdisk подставит сам. Оно уже не будет превышать реального размера карты памяти. После чего останется ответить отрицательно на вопрос о стирании текущей метки файловой системы ext4 и применить изменения нажатием w.
После перезагрузки все скрипты отработают штатно, и проблема более не побеспокоит. Ну или же просто запишите образ на карту памяти размером 128 Gb.
Личная история
Напоследок нельзя не упомянуть о трагедии в жизни создателя дистрибутива. После установки на рабочем столе вы увидите файл, озаглавленный GIVE BACK.PDF. В нем автор рассказывает, что после развода бывшая жена ограничила для него возможность видеться с двумя сыновьями. Ни в коем случае не берусь судить, кто неправ в этой ситуации. Но для создателя HamPi (который, кстати, еще и разработал FLDigi) это стало травмирующим событием. В тексте сказано, что последний раз он отправил письмо своим сыновьям в 2020 году на День отца (Father’s Day). К тому моменту прошло 8 лет с тех пор, как он последний раз с ними общался. Письмо так и осталось без ответа.
В своем обращении Дейв просит каждого, кому HamPi упростил жизнь, отправить 2 $ и более в адрес двух американских организаций — TFRM (The Fathers' Rights Movement) и AFESP (Americans For Equal Shared Parenting), борющихся за равноправное совместное воспитание детей, даже если родители в разводе. Вот такая грустная история.
А какой радиолюбительский софт вы используете на «малинке»? Жду вас в комментариях.