Cобираем линк из исходников
(часть 1)

декабрь 2020

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 - файл конфигурации

###

Собираем MMDVMHost

Обновим 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 симплексного линка (обратите внимание, здесь указаны минимальные настройки, которые нужно редактировать):

настройки MMDVM.ini
[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. Его настройка желательна, но не обязательна.


Автозапуск MMDVMHost

После настройки и калибровки, сделаем автозапуск. В файле 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

Собираем MMDVMCal

Режим 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.


Добавляем DMRGateway

Для расширения возможностей MMDVMHost, к нему можно добавлять разные модули, например DMRGateway, который позволит подключиться одновременно к разным сетям. Иногда, это полезная возможность.


Обновляем исходники

Разработка MMDVM идёт постоянно, добавляются новые возможности, исправляются ошибки и тд. Чтобы поддерживать ваш линк в актуальном состоянии, нужно периодически обновлять исходные коды. Для этого выполним следующие команды:

cd /opt/MMDVMHost
git pull
make

Перед обновлением, сделайте резервную копию файла MMDVM.ini


P.S.

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

Обратите внимание, что Dashboard и Websocketboard устарели и не будут работать с современными версиями mmdvmhost.

продолжение, часть 2 ...

R7HJ