MMDVM в режиме APRS

февраль 2025

Современные версии MMDVM+MMDVMHost могут обрабатывать не только DV стандарты, но и AX.25 данные! Это позволяет создавать радиолюбительские сети передачи данных, на уже имеющемся оборудовании.

Рассмотрим создание APRS-DIGI с платой MMDVM-LJT, на базе микрокомпьютера Raspberry_Pi_3, с чистым образом Raspberry Pi OS Lite и SD-картой 8Gb.

Блок-схема AX.25/DV линка, показана на картинке ниже.

###

Важно!
Не все MMDVM-платы поддерживают AX.25. Например, платы DV-Mega, MMDVM-HS и аналогичные (некоторые платы ...-POG) не могут работать в этом режиме.


Установка и сборка

Мы используем чистый образ, поэтому начнём с обновления и установки необходимых программы:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y git build-essential mc cmake automake
sudo apt-get install -y libsamplerate0-dev
sudo apt-get install -y debhelper libssl-dev aprx

Соберём MMDVMHost из исходного кода:

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

Смотрите внимательно на ошибки (если они будут), добавляем недостающие библиотеки, на которые указывает компилятор.

Далее, подключаем плату с радиостанцией и редактируем конфигурационный файл mmdvm:

mcedit /opt/MMDVMHost/MMDVM.ini

Обращаем внимание на следующие строки:

настройки MMDVM.ini для APRS
[General]
Callsign=G9BF		<-- ваш позывной
Id=123456		<-- ваш DMR_ID + SSID
Timeout=180
Duplex=1		<-- ставим 0 для линка
Daemon=0		<-- после настройки ставим 1
....

[CW Id]
Enable=1
Time=10
....

[Modem]
Port=/dev/ttyUSB0	<-- порт к которому подключена плата MMDVM-LJT
....
TXInvert=0		<-- зависит от конкретной радиостанции
RXInvert=0		<-- зависит от конкретной радиостанции
PTTInvert=0		<-- зависит от конкретной радиостанции
....
RXLevel=100
TXLevel=50
....

[D-Star]
[DMR]
[System Fusion]
[FM]
Enable=0		<-- нужные DV/FM режимы могут быть включены и не мешают работе AX.25 !!!
....

[AX.25]
Enable=1		<-- включить модем
TXDelay=350		<-- зависит от радиостанции
RXTwist=6
SlotTime=30
PPersist=128
Trace=1
....

[D-Star Network]
[DMR Network]
[System Fusion Network]
Enable=0		<-- нужные DV/FM сети могут быть включены и не мешают работе AX.25 !!!
....

[AX.25 Network]
Enable=1		<-- включить виртуальный порт
Port=/dev/tty7 		<-- виртуальный порт для программы APRX
Speed=9600
Debug=0

....

Если плата mmdvm подключается к встроенному uart, нужно его отключить от консоли, утилитой raspi-config. На текущий момент, MMDVMHost в режиме AX.25 поддерживает скорость 1200bps. Естественно что AX.25 не может работать параллельно с DV/FM в эфире, через одну MMDVM плату.

Запускаем mmdvmhost и смотрим на ошибки в консоли.

sudo ./MMDVMHost MMDVM.ini
(ctrl+c для выхода)

На плате MMDVM-LJT есть подстроечный резистор, которым нужно настроить девиацию с помощью утилиты MMDVMCal. Подробную информацию смотрите в статье "Cобираем линк из исходников".

В консоли работающего mmdvmhost, будут видны пакеты ax.25 (не обязательно aprs) которые он услышит на своей частоте. Это значит что настройка mmdvm правильная и можно приступить к конфигурации программы aprx, которая и будет обрабатывать пакеты принятые пакеты с данными.

###
вид консоли mmdvmhost на картинке выше

Настраиваем APRX

Программа APRХ создана Matti Aarnio, её отличает низкое потребление ресурсов (раньше эту программу устанавливали в wifi роутеры), она легко стыкуется с MMDVMHost и поддерживает весь функционал APRS/D-PRS (передача маяков, сообщения, дигипитер, шлюз, aprs-is, фильтры и т.д.)

Саму программу APRХ мы уже установили, осталось её настроить, для этого редактируем единственный конфигурационный файл:

sudo mcedit /etc/aprx.conf

Ниже (в выпадающем окне), несколько примеров конфигураций. Обратите внимание на строки со стрелочкой:

настройки aprx.conf для дигипитера (Digi) с маяком
mycall  N0CALL-1			<-- позывной aprs дигипитера
myloc lat ddmm.mmN lon dddmm.mmE	<-- координаты вашего линка на карте aprs.fi

<logging>
    pidfile /var/run/aprx.pid
    rflog /var/log/aprx/aprx-rf.log
    aprxlog /var/log/aprx/aprx.log
</logging>

<interface>
    serial-device /dev/tty7  9600 8n1    KISS
    tx-ok       true
</interface>

<beacon>
    beaconmode radio
    cycle-size  9m
    beacon symbol "D&" $myloc comment "Digi"
</beacon>

<digipeater>
    transmitter $mycall
    <source>
        source $mycall
    </source>
</digipeater>
настройки aprx.conf для шлюза (Rx-iGate) и дигипитера
mycall  N0CALL-1			<-- позывной aprs шлюза
myloc lat ddmm.mmN lon dddmm.mmE	<-- координаты вашего линка на карте aprs.fi

<aprsis>
	passcode -1			<-- код доступа в aprs-is
	server    aprs.dstar.su
	filter "m/60"
</aprsis>

<logging>
    pidfile /var/run/aprx.pid
    rflog /var/log/aprx/aprx-rf.log
    aprxlog /var/log/aprx/aprx.log
</logging>

<interface>
    serial-device /dev/tty7  9600 8n1    KISS
    tx-ok       true
</interface>

<beacon>
    beaconmode both
    cycle-size  9m
    beacon symbol "I&" $myloc comment "Rx-iGate"
</beacon>

<digipeater>
    transmitter $mycall
    <source>
        source $mycall
    </source>
</digipeater>
настройки aprx.conf для шлюза (Transmit-iGate) без дигипитера
mycall  N0CALL-1			<-- позывной aprs шлюза
myloc lat ddmm.mmN lon dddmm.mmE	<-- координаты вашего линка на карте aprs.fi

<aprsis>
	passcode -1			<-- код доступа в aprs-is
	server    aprs.dstar.su
	filter "m/60"
</aprsis>

<logging>
    pidfile /var/run/aprx.pid
    rflog /var/log/aprx/aprx-rf.log
    aprxlog /var/log/aprx/aprx.log
</logging>

<interface>
    serial-device /dev/tty7  9600 8n1    KISS
    tx-ok       true
</interface>

<beacon>
    beaconmode both
    cycle-size  9m
    beacon symbol "I&" $myloc comment "Tx iGate"
</beacon>

<digipeater>
    transmitter $mycall
    <source>
        source APRSIS
        relay-type third-party
        via-path WIDE1-1
        msg-path WIDE1-1
    </source>
</digipeater>

Для проверки работы и правильности настройки, запускаем mmdvm, затем aprx, из консоли:

cd /opt/MMDVMHost
sudo ./MMDVMHost MMDVM.ini
sudo aprx -d

Если mmdvmhost прекратит работу, нужно снова перезапустить сначала mmdvmhost, затем aprx.

###
вид консоли aprx на картинке выше

Внимательно смотрим на строки в консоли. Программа должна найти указанный в конфиге tty-порт, открыть логи и начать принимать пакеты из эфира.

После проверки конфигурации и достижения полной работоспособности, создаём файлы mmdvmhost.service, aprx.service для systemd.

В режиме aprs-дигипитера, принятые маяки с WIDE... должны ретранслироваться обратно в эфир (aprs-digi). Программа APRX позволяет гибко настраивать сложные конфигурации с нужным функционалом.

Например, APRX может работать с несколькими платами MMDVM и TNC-контроллерами, на разных частотах и с разными скоростями.

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

APRX имеет подробную документацию, в которой описан её функционал.

###
маяк aprx на карте

Packet Radio

Была протестирована связка MMDVM + MMDVMHost + (X)NET, в режиме настоящего packet radio и она показала очень хорошие результаты.

На базе уже существующих MMDVM-линков, не меняя 'железо', можно развернуть низкоскоростные (1200bps) радиолюбительские сети, не привязанные к интернету, для обмена любой информацией. В них могут входить узлы, новостные порталы, BBS для текстовых сообщений, а также возможности обмена небольшими файлами.

###
подключение к (X)NET узлу

P.S.

Режим AX.25 работает при низких уровнях сигнала, поэтому он интересен для приёма на больших расстояниях, во время укв-прохождения. Связка MMDVM+APRX работает устойчиво и не нагружает процессор.

Линк c AX.25/DV/FM режимами, позволит использовать весь функционал цифровых радиостанций типа Yaesu FT5DR, AnyTone AT-D878UVII+, Kenwood TH-D75A и других.


Ссылки:

Платы MMDVM разработанные RN6LJT
MMDVMHost by G4KLX
APRX Digipeater Software by OH2MQK
APRX на github

Старые статьи:
APRX - aprs программа для TNC
dir-300 + aprx
dir-320 + aprx
TL-WR741 + aprx
Small-Meteo + aprx
Радиолюбительская пакетная связь (Packet Radio)

R7HJ