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 git nano

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

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
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
Address=127.0.0.1	<-- ip 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 для выхода)

Для полноценной работы MMDVMHost, требуется обновлять файл DMRIds.dat с базой позывных.

cd /opt/MMDVMHost
wget -O DMRIds.dat http://kavkaz.qrz.ru/DMRIds.dat

Файл 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 /dev/ttyUSB0

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


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

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

cd /opt/MMDVMHost
git pull
make

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


P.S.

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

Вопросы задаём на 'круглых столах' и в мессенджере.

R7HJ