Jonathan Naylor (g4klx) разработал программы для развития цифровых радиолюбительских сетей! Собрав MMDVM из исходников, вы получаете свежий (авторский) софт для вашего линка (репитера).
Важно помнить, что подключение плат mmdvm_hs, mmdvm_pog, dv-mega, arduino+шилд и некоторых других, не имеют отличий в конфигурации, но имеют отличия в калибровке.

Рассмотрим по порядку все необходимые шаги на примере микрокомпьютера Raspberry_Pi 3, с образом Raspberry Pi OS Lite на SD-карте 8Gb.
Блок-схема линка (который мы соберём и настроим), будет выглядеть так:
MMDVMHost - запущен постоянно,
MMDVMCal - нужен только для калибровки уровня девиации передатчика.
Для корректной работы нашего линка, требуются следующие файлы:
DMRIds.dat - база dmr id для серверов brandmeister
NXDN.csv - база id для сетей nxdn
RSSI.dat - уровни сигналов для корректной работы s-метра
MMDVM.log - лог в который идёт запись всех действий
MMDVM.ini - файл конфигурации

Обновим Raspberry_Pi до актуальной версии и установим необходимые программы:
sudo apt-get update sudo apt-get upgrade sudo apt-get install -y git mc build-essential cmake automake sudo apt-get install -y libsamplerate0-dev
Соберём исполняемый файл из исходного кода:
sudo chmod ugo+w /opt/ cd /opt/ git clone https://github.com/g4klx/MMDVMHost.git cd MMDVMHost make
Смотрите внимательно, чтобы не было ошибок при компиляции! Если они есть, добавляем недостающие библиотеки на которые ссылается компилятор.
Для запуска DMR линка, нужно подключить к плату с радиостанцией и отредактировать конфигурационный файл:
mcedit MMDVM.ini
Делаем следующие настройки в файле MMDVM.ini, для запуска DMR симплексного линка (обратите внимание, здесь указаны минимальные настройки, которые нужно редактировать):
[General] Callsign=G9BF <-- ваш позывной Id=123456 <-- ваш DMR_ID + SSID Timeout=180 Duplex=1 <-- ставим 0 для линка ....... Daemon=0 <-- после настройки ставим 1 [Info] RXFrequency=438080000 <-- частота линка TXFrequency=438080000 <-- частота линка Power=5 <-- мощность передатчика Latitude=0.0 <-- координаты Longitude=0.0 <-- координаты Height=0 <-- высота антенны ....... [Modem] Port=/dev/ttyUSB0 <-- порт к которому подключена плата ....... TXInvert=0 <-- зависит от конкретной радиостанции RXInvert=0 <-- зависит от конкретной радиостанции PTTInvert=0 TXDelay=100 RXOffset=-200 <-- корректировка ошибки частоты TXOffset=-200 <-- корректировка ошибки частоты ....... RXLevel=100 <-- всегда ставим 100 TXLevel=50 ....... [D-Star] Enable=0 <-- отключаем (ставим 0) ....... [DMR] Enable=1 <-- включаем ....... [System Fusion] Enable=0 <-- отключаем ....... [P25] Enable=0 <-- отключаем ....... [NXDN] Enable=0 <-- отключаем ....... [POCSAG] Enable=0 <-- отключаем ....... [FM] Enable=0 <-- отключаем ....... [D-Star Network] Enable=0 <-- отключаем ....... [DMR Network] Enable=1 <-- включаем Type=Gateway <-- меняем на Direct (строки Local... коментируем) RemoteAddress=127.0.0.1 <-- bm сервер ....... Password=p@ssw0r4 <-- ваш пароль для доступа к серверу ....... [System Fusion Network] Enable=0 <-- отключаем ....... [P25 Network] Enable=0 <-- отключаем ....... [NXDN Network] Enable=0 <-- отключаем ....... [POCSAG Network] Enable=0 <-- отключаем .......
Если плата mmdvm подключается не к usb-порту, а к встроенному uart, нужно его включить и отключить консоль через этот порт, стандартным способом, утилитой raspi-config.
Для запуска mmdvmhost набираем в командной строке и смотрим на ошибки в консоли. После настройки, ставим Daemon=1
./MMDVMHost MMDVM.ini (ctrl+c для выхода)
Если в линке используется экран - нужно периодически обновлять файл DMRIds.dat, для этого в исходниках есть скрипт MMDVMHost/linux/DMRIDUpdateBM.sh.
Данные в файле RSSI.dat зависят от радиостанции. Он нужен для измерения уровня принимаемого сигнала из эфира. Вы его видите на экране и также он передаётся на вэб-интерфейс BrandMeister. Готовые примеры находятся в папке RSSI. Его настройка желательна, но не обязательна.
После настройки и калибровки, сделаем автозапуск. В файле MMDVM.ini устанавливаем Daemon=0. Есть несколько способов сделать автозапуск программы (cron, systemd, rc.local), например:
sudo mcedit /etc/rc.local
Вставляем следующие команды, перед строчкой exit:
sleep 20 cd /opt/MMDVMHost ./MMDVMHost MMDVM.ini
Сохраняем и перезагружаем Raspberry_Pi.
sudo reboot
Режим DMR чувствителен к уровню девиации, для её настройки установливаем утилиту MMDVMCal.
cd /opt/ git clone https://github.com/g4klx/MMDVMCal.git cd MMDVMCal make
Нужно определить, на каком порту находится ваша MMDVM-плата. Для этого набираем команду ниже и смотрим какие порты чем заняты. Обычно, платы занимают порты ttyACM0, ttyUSB0, ttyAMA0.
dmesg | grep ttyПеред запуском калибровки нужно остановить MMDVMHost, а затем выполнить команду ниже, где ttyUSB0 это порт к которому подключена плата MMDVM_POG или другая.
sudo killall MMDVMHost ./MMDVMCal 115200 /dev/ttyUSB0
Для настройки девиации передатчика, после запуска MMDVMCal, нажимаем D, и пробел, для включения передачи. Крутим подстроечный резистор на плате, и смотрим на сервис-монитор, до получения девиации 2749Гц. Для DMR радиостанций, это критичный параметр! Чтобы выйти из режима калибровки, нажимаем клавишу Q.
Для расширения возможностей MMDVMHost, к нему можно добавлять разные модули, например DMRGateway, который позволит подключиться одновременно к разным сетям. Иногда, это полезная возможность.
Разработка MMDVM идёт постоянно, добавляются новые возможности, исправляются ошибки и тд. Чтобы поддерживать ваш линк в актуальном состоянии, нужно периодически обновлять исходные коды. Для этого выполним следующие команды:
cd /opt/MMDVMHost git pull make
Перед обновлением, сделайте резервную копию файла MMDVM.ini
Обратите внимание, что Dashboard и Websocketboard устарели и не будут работать с современными версиями mmdvmhost.
R7HJ