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

декабрь 2020

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

Состав программ зависит от того, что в хотите получить. Подключение плат mmdvm_hs, mmdvm_pog, dv-mega, arduino+шилд и некоторых других, не имеют отличий в конфигурации.

###

Рассмотрим по порядку все необходимые шаги на примере микрокомпьютера Raspberry_Pi 3, с образом Raspberry Pi OS Lite на SD-карте 4Gb.

Блок-схема линка (который мы соберём и настроим), будет выглядеть так:

###

MMDVMHost запущен постоянно,
MMDVMCal нужен только для калибровки уровня девиации передатчика в режиме DMR.


Собираем MMDVMHost

Обновим Raspberry_Pi до актуальной версии и установим необходимые программы:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y git nano build-essential cmake automake libsamplerate-dev

Соберём исполняемый файл из исходного кода:

sudo chmod ugo+w /opt/
cd /opt/
git clone https://github.com/g4klx/MMDVMHost.git
cd MMDVMHost
make

Смотрите внимательно, чтобы не было ошибок при компиляции! Если ошибки есть, добавляем недостающие библиотеки на которые ссылается компилятор.

Для запуска DMR линка, нужно подключить к плату с радиостанцией и отредактировать единственный конфигурационный файл:

nano 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 для выхода)

Если в вашем hotspot-е используется экран, нужно обновлять файл DMRIds.dat, для этого в исходниках есть скрипт MMDVMHost/linux/DMRIDUpdateBM.sh, используйте его.

Файл RSSI.dat позволяет передавать на BrandMeister данные об уровне принимаемого из эфира сигнала. Готовые примеры находятся в папке RSSI. Его настройка желательна, но не обязательна.


Автозапуск MMDVMHost

После настройки и калибровки, сделаем автозапуск. В файле MMDVM.ini устанавливаем Daemon=0. Есть несколько способов сделать автозапуск программы, рассмотрим через файл rc.local. Открываем этот файл:

sudo nano /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 плата. Для этого набираем команду ниже и смотрим какие порты чем заняты. Обычно, USB-платы занимают порты ttyACM0 или ttyUSB0, а GPIO-платы могут использовать ttyAMA0 и тд.

dmesg | grep tty
Перед запуском калибровки нужно остановить MMDVM линк, а затем выполнить команду ниже, где ttyUSB0 это порт к которому подключена плата MMDVM_POG или другая.
sudo killall MMDVMHost
./MMDVMCal 115200 /dev/ttyUSB0

Для настройки девиации передатчика, после запуска MMDVMCal, нажимаем D, и пробел для включения передачи. Крутим подстроечный резистор на плате, и смотрим на сервис-монитор, до получения девиации 2749Гц. Для DMR радиостанций, это критичный параметр!


Добавляем DMRGateway

Для расширения возможностей MMDVMHost, к нему можно добавить DMRGateway, который позволит вашей DMR радиостанции находиться в разных сетях одновременно.

Это полезная возможность, которая подробно описана в статье 'DMRGateway это просто'. Так вы получите максимальный DMR функционал.


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

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

cd /opt/MMDVMHost
git pull
make

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


P.S.

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

R7HJ