Собираем hotspot с управлением X-командами
Наша задача собрать из исходников простую конфигурацию для работы (с цифровой радиостанцией 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.