Волна

Прошивка для хотспота DMR на Raspberry Pi и Orange Pi

Волна заменяет Pi-Star и WPSD на хотспотах с модемом MMDVM. Она сама и есть операционная система, ни Raspberry Pi OS, ни Armbian под неё ставить не нужно: ядро Linux, собранное под хотспот, и ничего сверх того, что нужно для эфира. Настраивается всё с телефона, через мастер.

Скачать для Windows

VolnaWriter 1.4 · 75 КБ · Windows 10 и 11

Программа сама скачает стабильную версию Волны, запишет её на карту памяти и проверит запись. Заодно можно сразу вписать домашний Wi-Fi и пароль панели. Плату выбираете в программе: Pi 1 B+, Zero W, Zero 2W, 3B и 3B+, Pi 4 и Pi 5 (для них отдельная 64-битная сборка) или Orange Pi Zero. Записывая карту, вы принимаете лицензионное соглашение.

Программа без цифровой подписи, поэтому при первом запуске Windows может показать «Система Windows защитила ваш компьютер». Нажмите «Подробнее», затем «Выполнить в любом случае». Права администратора нужны, чтобы записать карту целиком. SHA-256: 57d80fbac14e6e1d49dca189c4b2edcd4f706cc5d041df84dd53a4669220f17f

Окно программы записи VolnaWriter: выбор платы, стабильная версия Волны и кнопка «Записать»
Экран хотспота при загрузке: знак Волны и полоса этапов Экран в ожидании: позывной, сервер, последний вызов и частота Экран во время вызова: позывной идёт по волне, внизу группа, слот и секунды

Так выглядит экран хотспота: загрузка, ожидание и входящий вызов. Картинки нарисованы тем же кодом, что работает на плате.

Платы

Raspberry Pi

Pi 1 B+, Zero W, Zero 2W, 3B и 3B+ работают на одном 32-битном образе, Pi 4 и Pi 5 на отдельном 64-битном. Модем MMDVM_HS на GPIO или по USB, симплекс и дуплекс. У Pi 1 B+ своего Wi-Fi нет: по кабелю или через USB-свисток Wi-Fi на чипе Realtek.

Orange Pi Zero

Своя сборка на основном ядре Linux 6.12, образ 47 МБ, 256 МБ памяти хватает с запасом. Проверена с дуплексной шляпой MMDVM_HS_Dual_Hat: эфир, экран, встроенный Wi-Fi, USB-модемы и обновления по воздуху работают. Прошивку самого модема пока меняют только с компьютера.

ESP32 без Raspberry Pi

Волна ESP: та же шляпа MMDVM_HS на четырёх проводах к плате ESP32 или ESP32-S3. Симплекс DMR, один сервер Homebrew (BrandMeister, MiniDMR, HBlink), OLED-экран, веб-панель и обновления по воздуху. Карта памяти не нужна: плата шьётся прямо из браузера Chrome или Edge, прошивальщик здесь. Какие платы ESP подходят, на отдельной странице.

Своя система вместо Debian

Pi-Star и WPSD устроены одинаково: берётся Raspberry Pi OS, то есть полный Debian, и сверху ставится панель хотспота. Вместе с ней на плате живут менеджер пакетов, systemd, Python, PHP, веб-сервер и сотни программ, которые хотспоту ни разу не понадобятся. Только образ Raspberry Pi OS Lite весит 525 МБ и занимает на карте почти 3 ГБ.

Волну мы собираем сами из исходников, на Buildroot. Ядро Linux 6.18 настроено под Raspberry Pi и хотспот: из модулей в нём только Wi-Fi, SPI, доступ к GPIO, датчик питания и один драйвер модемов, всего 20. Вся система, кроме ядра, это 995 файлов и 21 МБ в сжатом виде, а образ для записи на карту весит 73 МБ. Для Pi 4 и Pi 5 та же система собрана под 64 бита, её образ занимает 78 МБ. Для Orange Pi Zero своя сборка на основном ядре Linux 6.12, образ 47 МБ. Больше половины файлов, 513, это крошечные описания USB-модемов, по которым хотспот переводит 3G-свистки из режима флешки в режим модема. Мы знаем, откуда взялся каждый из этих файлов и зачем он нужен. Лишнего, которое может сломаться, занять память или открыть дыру, там просто нет.

Внутри одна программа volnad на Go и два проверенных компонента G4KLX: MMDVMHost и DMRGateway. Без PHP, отдельного веб-сервера, базы данных и Python. Пакеты на плату не ставятся: обновление заменяет систему целиком, поэтому на всех хотспотах одной версии стоит одно и то же, байт в байт.

Чем ещё она отличается

Корень системы при загрузке копируется в оперативную память и монтируется только для чтения. Выдернутое питание её не портит, а на карту пишутся только настройки, ключи и лицензия, так что карта не изнашивается логами. От включения до входа в сеть DMR проходит около 30 секунд.

На карте два слота с системой. Обновление пишется в свободный, плата пробует загрузиться в него и закрепляет его, только если поднялась сеть, ответил модем и прошёл вход на сервер. Если нет, следующая перезагрузка возвращает прежнюю версию, а причина приходит нам в отчёте. Это проверено на сломанных сборках: с паникой ядра, с неработающим шлюзом и с системой, которая не дошла до запуска.

Подробнее