MiniDMR Группа в Telegram

Свой DMR-сервер за одну команду

MiniDMR заменяет HBlink и ему подобные: тот же Homebrew-мастер для хотспотов и репитеров, но всё настраивается в браузере, а не в конфигах. Бесплатно.

curl -fsSL https://minidmr.ru/install.sh | sudo bash

Debian 13, x86_64. Скрипт сверяет подпись выпуска, ставит сервер и включает автообновление. Текущая версия 0.1.70.

Дашборд MiniDMR: кто сейчас в эфире, последние вызовы с BER и потерями, группы и мосты

Эфир видно и слышно прямо на сайте

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

У группы есть кнопка с динамиком. Нажали, и голос идёт прямо в браузер, без программ и плагинов. Голос расшифровывает вокодер AMBE+2 на вашем же сервере, он собирается при установке под ваш процессор.

Время на страницах показывается в часовом поясе того, кто смотрит. Номера DMR ID на открытых страницах скрыты, видны позывные, названия групп и аватарки.

Блок групп на дашборде MiniDMR: номера групп, активность, кнопки прослушивания, попугай 9990, состояние мостов
Живой тестовый сервер: группа 77 сейчас в эфире, рядом кнопки прослушивания.

Pi-Star настраивается одной строкой

В кабинете у каждого хотспота есть одноразовая команда. Её вставляют в SSH Access панели Pi-Star, и скрипт делает всё сам:

  • прописывает сервер в DMRGateway, включает режим моста и правильный маршрут для попугая;
  • меняет заводские ID и позывной Pi-Star на ваши;
  • ставит позывные абонентов сервера в базу DMRIds.dat, чтобы они были видны на дашборде Pi-Star и на дисплее;
  • выключает суточное обновление Pi-Star, которое по ночам перезапускает службы и тянет базы с pistar.uk;
  • ждёт, пока хотспот войдёт на сервер, и пишет результат.

Сторож следит, чтобы кнопка Apply в Pi-Star не стёрла настройки. Одна команда --undo возвращает всё как было.

Карточка хотспота в кабинете MiniDMR: частота, пароль хотспота, команда настройки Pi-Star

Подмену ID не пропустит

В HBlink3, FreeDMR и ADN при входе узла проверяется только его номер, а DMR ID внутри потока никто ни с чем не сверяет. Мы проверили это по их исходникам. MiniDMR устроен строже.

  • У каждого хотспота свой пароль, он не совпадает с паролем от кабинета и меняется одной кнопкой.
  • Номер узла принадлежит владельцу: его DMR ID или он же с двумя цифрами ESSID.
  • Говорить через хотспот можно только с ID владельца. Для репитера с несколькими людьми ведётся список разрешённых.
  • Пакеты принимаются только с адреса, с которого прошёл вход. После серии неверных паролей адрес блокируется.
  • Из мостов по умолчанию пускаются только ID из базы RadioID.
MiniDMR на телефоне: эфир и последние вызовы
Весь интерфейс сделан сначала под телефон.

Мосты собираются формой, без конфигов

Готовые заготовки под каждую сеть: выбрали сеть, вписали адрес и пароль, назначили, какая ваша группа какой их группе соответствует. Номера групп по обе стороны могут отличаться: MiniDMR переписывает LC в заголовке, терминаторе и встроенном LC целиком, Talker Alias при этом сохраняется.

Частные вызовы через мост пропускаются по галочке. Изменения применяются сразу, без перезапуска: идущие разговоры доживают по старым правилам, новые идут по новым.

Форма моста DMRE в админке MiniDMR: адрес, порты, номер сети, пароль OpenBridge, связанные группы

Остальное, что уже есть

Всё ниже работает на живых серверах, а не в планах.

Абоненты и группы

Регистрация двумя путями: официальный позывной с DMR ID из базы RadioID или позывной в любом виде с ID, который выдаёт сам сервер по заданному префиксу. Подтверждение по почте или через Telegram-бота, по желанию ещё ручное одобрение администратором. Роли оператора, модератора и администратора. Публичные и закрытые группы: закрытую слышат только участники, в мосты она выходит, только если владелец разрешит.

Устройства

Каждое устройство помнит свою текущую группу. Ушли с рации в другую, телефон с DMRConnect остаётся там, где был, и возвращается туда после переподключения. Статические группы задаются в кабинете. Сервер добавляется в DMRConnect по QR-коду, а для раций с прошивкой OpenGD77 кабинет отдаёт готовый кодплаг.

Частные вызовы

Частный вызов идёт как разговор. Первая передача приходит на все устройства абонента сразу, дальше разговор держится того устройства, с которого он ответил. Можно выбрать в профиле, куда принимать новые вызовы. Попугай 9990 отвечает с вашего сервера.

Обновления

Сервер раз в минуту проверяет канал выпусков, скачивает новый, сверяет подпись и перед переключением делает копию базы. Ядро перезапускается, только если оно правда изменилось, и только когда в эфире тишина, иначе хотспотам незачем переподключаться. Если после обновления проверка здоровья не прошла, сервер сам откатывается на прошлую версию.

Админка

Каждый модуль включается и выключается отдельно и пишет свой журнал, который видно прямо в браузере. Почта и Telegram-бот подключаются формой. Имя сервера, логотип и значок вкладки свои. Резервная копия скачивается одной кнопкой и так же восстанавливается.

С кем можно связаться

Хотспоты и репитеры подключаются к MiniDMR по Homebrew, как к любому MMDVM-мастеру. Наружу сервер ходит мостами.

СетьКак подключаемсяЧто нужно от них
HBlink и любой Homebrew-мастерHomebrew-клиент со строкой Optionsадрес и пароль
FreeDMRHomebrew-клиент или OpenBridgeдля OpenBridge согласие админов
ADN SystemsOpenBridge в режиме DMREсогласие админов
XLXHomebrew-клиент к модулю рефлектораничего
BrandMeisterOpenBridgeодобрение их helpdesk по заявке владельца сервера
Другой MiniDMRDMRE между серверами или вход как соседний сервердоговориться с владельцем

Установка

Полная инструкция с портами, NAT и первым входом на отдельной странице.

  1. Сервер

    Чистый Debian 13 на x86_64. Подойдёт самый дешёвый VPS: тестовый MiniDMR живёт на одном ядре и 1 ГБ памяти, сам сервер занимает около 210 МБ. В нагрузочном тесте 2000 узлов и 300 одновременных разговоров прошли на одном ядре Celeron N5095 без потерь. Работает и дома за роутером, тогда нужен проброс портов.

  2. Команда

    curl -fsSL https://minidmr.ru/install.sh | sudo bash

    Когда скрипт закончит, сайт сервера открывается по его адресу. Вокодер для прослушивания эфира собирается в конце установки, на слабом процессоре это до 40 минут.

  3. Администратор

    minidmr create-admin --callsign R0ABC --dmr-id 2500001 --email you@example.ru

    Дальше всё в браузере: группы, мосты, почта, Telegram-бот, оформление.

Вопросы

Сколько это стоит?

Ничего. MiniDMR бесплатный, обновления тоже. Если хотите помочь проекту, есть страница поддержки.

Можно ли связать сервер с BrandMeister?

Да, через OpenBridge. Но BrandMeister открывает такие мосты только по заявке владельца сервера в их helpdesk. Через хотспот к ним мост не делаем: их правила это запрещают, за такое банят.

Что будет с моим Pi-Star?

По умолчанию хотспот становится мостом к вашему серверу: весь эфир идёт туда, BrandMeister в DMRGateway выключается. Если нужно оставить BrandMeister рядом, это переключатель в админке, тогда к вам пойдут только ваши группы. Команда отката возвращает прежние настройки целиком.

Работает ли DMRConnect?

Да. Сервер добавляется в приложение по QR-коду из кабинета, список абонентов приложение берёт с сервера. MiniDMR и DMRConnect делает одна студия.

Сервер стоит дома за роутером. Это проблема?

Нет, клиентский MiniDMR так и работает. Пробросьте на роутере TCP 80 и UDP 62031, а для моста DMRE ещё UDP 62035. Подробно на странице установки.

Откуда берутся позывные?

Сервер раз в сутки загружает базу RadioID и сам раздаёт её хотспотам вместе со своими абонентами. Для Pi-Star это готовый DMRIds.dat, для DMRConnect список контактов.

Новости и помощь

Обновления, разборы и ответы на вопросы публикуем в группе @MiniDMR в Telegram. Туда же пишите, если что-то не заработало.

MiniDMR раздаётся бесплатно. Помочь с серверами и временем на разработку можно на support.minidmr.ru.

Приложение для телефона и POC-станций, которое работает с MiniDMR из коробки, называется DMRConnect.