Собираем hotspot с управлением X-командами

февраль 2023

Наша задача собрать из исходников простую конфигурацию для работы (с цифровой радиостанцией Yaesu) в YSF сети. Также, нам нужна возможность расширения этой системы, будь то hotspot или городской линк.

Что такое X-команды?
Для работы в радиосети WiRES-X, фирма Yaesu использует набор команд в рамках протокола C4FM. Радиолюбители написали программы, понимающие Х-команды и тем самым расширили возможности использования цифровых радиостанций C4FM.

Блок-схема hotspot выглядит так:

Моя тестовая тестовая конфигурация домашнего hotspot: Raspberry_Pi (любой версии) с дистрибьютивом Raspbian и DV-MEGA подключенная к usb-порту, выполняющая функционал радиостанции с модемом. Для DV-MEGA не требуется делать калибровку утилитой MMDVMCal, значит эту часть опускаем.

Описанный ниже mmdvm+ysfgateway, это классический hotspot для режима YSF, предполагаю что 90% линков/hotspot/репитеров используют именно такую конфигурацию.

Заходим в консоль, копируем и выполняем команды:

sudo apt update && sudo apt upgrade -y
sudo apt install mc git curl libsamplerate-dev -y

Особенность моего примера в том, что все файлы будут находится в папке ~/test/... в домашней директории пользователя pi. Таким образом, удалив эту папку, мы удалим всё что было установлено и настроено.

cd ~ && rm -fr test && mkdir test && cd test

git clone https://github.com/g4klx/MMDVMHost.git
cd MMDVMHost
make

cd ..
git clone https://github.com/g4klx/YSFClients.git
cd YSFClients
make

Итак, мы собрали необходимый комплект программ. Теперь нужно их настроить. Открываем файл конфигурации указанной командой и обращаем внимание на следующие строки:

mcedit ~/test/MMDVMHost/MMDVM.ini

[General]
Callsign=ваш_позывной
Id=ваш_dmr-id
Duplex=0
....
Daemon=0

[Info]
RXFrequency=438080000
TXFrequency=438080000
....

[Log]
....
FilePath=/tmp
FileRoot=MMDVM
....

[CW Id]
Enable=0
....

[Modem]
Protocol=uart
UARTPort=/dev/ttyUSB0
....
TXInvert=0
RXInvert=0
....
RXOffset=0
TXOffset=0
....
RXLevel=100
....

[Transparent Data]
Enable=0
....

[D-Star]
Enable=0
....

[DMR]
Enable=0
....

[System Fusion]
Enable=1
....

[P25]
Enable=0
....

[NXDN]
Enable=0
....

[M17]
Enable=0
....

[POCSAG]
Enable=0
....

[FM]
Enable=0
....

[AX.25]
Enable=0
....

[D-Star Network]
Enable=0
....

[DMR Network]
Enable=0
....

[System Fusion Network]
Enable=1
....

[P25 Network]
Enable=0
....

[NXDN Network]
Enable=0
....

[M17 Network]
Enable=0
....

[POCSAG Network]
Enable=0
....

[FM Network]
Enable=0
....

[AX.25 Network]
Enable=0
....

Важно заметить!
Мы указываем DMR_ID, хотя для работы в YSF сети он не нужен. Делаем это для того чтобы станции других цифровых стандартов (которые возможно подключены к ysf/xlx рефлекторам) могли видеть ваш позывной.


Проверим что связка "радиостанция + модем + mmdvm" работает как нам нужно, для этого запускаем mmdvmhost командой:

cd ~
./test/MMDVMHost/MMDVMHost test/MMDVMHost/MMDVM.ini

Включаем c4fm радиостанцию на установленной частоте, нажимаем ptt и наблюдаем как бегут строки:

Нажимаем Ctrl+C чтобы остановить программу.
1. Если всё так, меняем параметр Daemon=0 на 1. Эту часть считаем настроенной и идём дальше.
2. Если что-то не работает. Дальше не продолжаем, пока не разберемся в чём дело!

Мы всегда можем видеть что делает этот модуль в режиме онлайн, командой (только дату в имени лога ставьте текущую):

tail -f /tmp/MMDVM-2023-02-16.log


 YSFGateway

Научим наш hotspot понимать X-команды и подключаться к YSF рефлекторам в интернете, для этого потребуется YSFGateway. Выполним его настройку:

mcedit ~/test/YSFClients/YSFGateway/YSFGateway.ini

[General]
Callsign=ваш_позывной
Suffix=ND
Id=ваш_dmr-id
....
Daemon=0

[Log]
....
FilePath=/tmp
FileRoot=YSFGateway
....

[Network]
Startup=RU-KAVKAZ
....

[YSF Network]
Enable=1
Port=42000
#Hosts=./YSFHosts.txt
Hosts=/home/pi/test/YSFClients/YSFGateway/YSFHosts.txt
....

[FCS Network]
Enable=0
....

Теперь (согласно блок-схеме) запустим нашу конструкцию, выполним команды по очереди:

killall -q MMDVMCal MMDVMHost DGIdGateway YSFGateway YSFReflector YSFParrot

cd ~/test/MMDVMHost
./MMDVMHost MMDVM.ini

cd ~/test/YSFClients/YSFGateway
./YSFGateway YSFGateway.ini

Если мы видим что-то подобное как на картинке, значит всё получилось, наш hotspot понимает X-команды и мы можем путешествовать по YSF рефлекторам.

Нажимаем кнопку X на радиостанции, смотрим куда подключен наш hotspot, получаем список сети, переходим в другой рефлектор и тд.

Нажимаем Ctrl+C чтобы остановить программу.
Идём в конфигурационный файл YSFGateway.ini и меняем Daemon=0 на Daemon=1.

Чтобы видеть что делает модуль в онлайне, вводим в консоли команду (дату в имени лога ставьте текущую):

tail -f /tmp/YSFGateway-2023-02-16.log


 файл YSFHosts.txt

В файле YSFHosts.txt хранятся данные по которым hotspot определяет параметры подключения к доступным YSF рефлекторам по всему миру.

При отсутствии этого файла, после подключения и запроса списка, на экране радиостанции вы увидите:
YSF2DMR
YSF2NXDN
YSF2P25
ZZ PARROT

Это внешние модули, с которыми шлюз работает напрямую, их адреса и порты указаны в YSFGateway.ini в разделе YSF Network. Эти модули добавляются к списку сети автоматически.

Важно, чтобы в конфиге был указан полный путь к файлу YSFHosts.txt, как в примере выше.

Файл можно значительно сократить оставив только русскоязычные рефлектора. Делается это командой:

curl -s -N http://kavkaz.qrz.ru/YSF_Hosts.txt > ~/test/YSFClients/YSFGateway/YSFHosts.txt

Короткий YSFHosts.txt удобен пользователям радиостанций FT5DR, FTM-200, FTM-300, FTM-400, FT-991A, так как станция получает список, в котором легче найти нужный рефлектор и подключиться к нему.

Так будет выглядеть подключение к hotspot и вывод списка рефлекторов, на дисплее радиостанции Yaesu FTM-200.


 YSFParrot

Локальный эхо-репитер нам нужен для тестов, проверки качества модуляции и покрытия. Он называется ZZ PARROT, его не нужно добавлять в список руками (появится автоматически).

Чтобы запустить эхо-репитер выполним команду:

cd ~
./test/YSFClients/YSFParrot/YSFParrot 42012 > /dev/null 2>&1 &

Запустите предыдущие модули. После этого, выбрав в списке ZZ PARROT и сказав что-то в микрофон радиостанции, вы услышите ответ эхо-репитера.


 Эпилог

Собранный из исходников hotspot работает очень стабильно и потребляет минимум ресурсов, а если перенести логи и временные файлы в память, то за целостность sd-карты можно не беспокоиться годами.

Украшательства типа дашборда и экрана для hotspot, не является обязательным элементом, я их не использую.

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

За рамками статьи остались модули (YSF2DMR YSF2NXDN YSF2P25) которые могут быть добавлены к YSFGateway и ещё больше расширят возможности цифровых радиостанций Yaesu. При их настройке, обратите внимание на параметр WiresX Passthrough.


 Cсылки

Что такое Yaesu System Fusion?
Визуализация радиосвязи
YSF - модульная радиосеть
Настройка MMDVM в PI-Star для радиостанций Yaesu
чистим YSFHosts.txt
Собираем YSF hotspot с управлением DG-ID кодами

R7HJ