FRN-по сути сеть voip заточенная под работу с симплексными радиостанциями.
Есть набор серверов, на серверах есть "комнаты" к которым подключаются компьютеры-клиенты с подлключенными к ним рациями (линки) или же только микрофонами и колонками, с которых можно разговаривать без рации. Ну или андроид смартфоны с гарнитурами.
Когда одна из раций принимает сигнал (или пользователь компьютера без радио жмет на ptt) этот звук сразу транслируется на остальные компьютеры которые в это время лишаются возможности передавать, и дальше звук транслируется со всех раций подключенных к остальным компьютерам, ну или из динамиков подключенных к ним.
Прелесть FRN в том что клиенты не обязаны иметь белый статический ip, клиент сети можно просто перенести в другое место? подключить кабелем к роутеру с DHCP (или WIFI) и он продолжит работать без каких либо настроек.

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


Ну и поболтать в сети можно прямо с этого приложения после регистрации


Для подключения рации нужен кабель который можно изготовить из огрызка гарнитуры для baofeng, пары конденсаторов и проводков с коннекторами dupont (ну теми которые надеваются на контактные штырьки), включив VOX на раци можно обойтись без настройки gpio контакта для PTT.

Нужно подготовить рацию, выбрать канал на котором будет работать линк, включить на ней VOX с минимальным порогом, и настроить открытие шумоподавителя по тону CTSS (ISM диапазон загажен разными системами и если не закрывать прием на тон то все хлопки шумодава будут транслироваться в FRN комнату).

Скачиваем архив alterfrn, распаковываем, переименовываем папку и исполняемый файл покороче чтобы удобнее было запускать из консоли.
У исполняемого файла выставляем разрешение на исполнение.
Я использовал относительно редкий одноплатник polar bear pbsbc01h3 с debian на борту.
Его распиновка планки дополнительных интерфейсов, кабель от рации подключается к контакту MICIN и к одному из LINEOUT

Пароль root в его linux дистрибутиве pbsbc01h3
Заходим в настройки sudo pbsbc01h3-config>system>hardware
Включаем аналоговый вход

Перезагружаем
Удаляем sudo apt purge pulseaudio (попытки регулировать громкость из виджета пульсаудио приводят к блокировке звука для FRN клиента)
Переходим в папку в которую скопировали файлы клиента (я переименовал исполняемый файл в FRN)
Открываем текстовым редактором файл frnconsole.cfg.unix
Запускаем в папке терминал, выполняем там ./FRN audioconfig
Из вывода команды копируем в секцию [Audio] frnconsole.cfg.unix строки соответствующие выбранной звуковой карте
У меня например это

[Audio]
InDevice=ALSA:H3 Audio Codec: CDC PCM Codec-0 (hw:0,0)
InSampleRate=44100
InQuality=S
InFactor=1
InPreCapturedTime=1000
InAgcEnabled=no
InAgcLevel=90
InAgcMaxGain=20
InHpfEnabled=no
InHpfOrder=10
InDtmfEnabled=no

OutDevice=ALSA:H3 Audio Codec: CDC PCM Codec-0 (hw:0,0)
OutSampleRate=44100
OutQuality=S
OutFactor=1
OutAgcEnabled=no
OutAgcLevel=90
OutAgcMaxGain=40
OutHpfEnabled=no
OutHpfOrder=10
OutDelayConst=

ReInitAudioEngine=no

Запускаем alsamixer, f4, выбираем стрелками mic1, включаем клавишей пробел mic1, регулируем там усиление

Для проверки уровней звука присутствующих при закрытом и открытом шумодаве рации выполняем бинарник FRN с ключом audiolevel
./FRN audiolevel
По числам которые бегут слева можно ориентироваться при настройке порога сигнала COS (начало передачи с рации на сервер), значение должно быть выше чем числа которые присутствуют при закрытом шумодаве.

Он настраивается в секции [Radio]
#### VOX
COS=VOX:130



Секция Auth отвечает за аутентификацию в сети, тут указываются данные пользователя? которые были указаны при регистрации, и пароль.
[Auth]
#В этой части вводятся те данные которые вы вводили для регистрации и запроса пароля
Callsign=Yourcallsign
OperatorName=Yourname
EMailAddress=your@gmail.ru
City=Yourcity
CityPart=район
# Password
# RU: Пароль, полученный от FRNSysMan по e-почте в процессе регистрации (команда register),
#     или PaSsWorD, если без регистрации. Пароль не должен быть пустым в любом случае.
# EN: The password, received from FRNSysMan by e-mail during registration (command register),
#     or PaSsWorD if no registration. The password can not be empty in any case.
Password=пароль вводить тут
Country=Russian Federation
Description=FRNclient: alterfrn.ucoz.ru
BandChannel=446006 #88.5
ClientType=GATEWAY

# CharsetName
# RU: Обазятельно для UNIX/Linux, необязательно для Windows
#     Имя ANSI кодировки FRN это печальное "наследие" оригинального FRN: только MSWindows, только ANSI.
#     Корректной ANSI кодировкой для FRN является текущая ANSI кодировка для вашего языка на Microsoft Windows.
#     Выяснить текущую ANSI кодировку поможет команда "ansi" для консольного AlterFRN клиента для Windows
#     Просто запустите на MS Windows команду "C:\FRN\FRNClientConsole.Win32.exe ansi"
#       Для Германии: ISO-8859-1
#       Для России: WINDOWS-1251
# EN: Mandatory for UNIX/Linux, optional for Windows
#     Name of ANSI charset for FRN is very sad "heritage" of the original FRN: only MSWindows, only ANSI.
#     Correct FRN ANSI charset is default ANSI charset on MS Windows for your language.
#     Command "ansi" for console AlterFRN client for Windows will show it for you.
#     Just run on command console of your MSWindows with your language: "C:\FRN\FRNClientConsole.Win32.exe ansi"
#       For Germany: ISO-8859-1
#       For Russia: WINDOWS-1251  ISO-8859-2
CharsetName=ISO-8859-1


Секция [Server] отвечает за настройки подключения (выбор сервера сети, комнаты на сервере, видимости статуса и настроек переподключения)

[Server]
ServerReconnectCount=3
ServerReconnectInterval=3000
# Адрес FRN-сервера, к которому есть желание подключиться
# FRN-server address you wish connect to
ServerAddress=01.lpd-net.ru
ServerPort=10024
VisibleStatus=AV
#Network это комната на сервере
#Разговоры на lpd-net происходят тут
Network=Россия
#Для тестов громкости и работы vox можно использовать тестовую комнату с попугаем-репитером закомментив комнату выше и раскомментив ниже
#Network=Test

В конфиге еще много пунктов, он хорошо описан на странице проекта https://alterfrn.ucoz.ru/index/manual_russian/0-5, мой рабочий конфиг (разумеется без данных регистрации и пароля) можете посмотреть тут

У меня приложение не запустилось просто так, только с ключом DEBUG
sudo ./FRN debug
После запуска в консоль будет выводиться информация о ходе подключения, а затем о приеме/передаче сигнала если она будет происходить.

Для настройки автозапуска скопируйте папку FRN в /opt
Создайте файл сервиса
sudo nano /lib/systemd/system/FRN.service
В него скопируйте

[Unit]

Description=FreeRadioNetwork

After=network.target sound.target
[Service]
ExecStart=/opt/FRN/FRN debug
TimeoutSec=30
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10

[Install]
WantedBy=multi-user.target
сохранение файла ctrl+o
выход из редактора ctrl+x

Теперь FRN сервисом можно просто управлять
sudo systemctl status FRN - состояние службы

sudo systemctl restart FRN - перезапуск
sudo systemctl start FRN - ручной старт
sudo systemctl stop FRN - ручная остановка

Для автоматического запуска после загрузки системы
sudo systemctl enable FRN
Для отключения автозапуска
sudo systemctl disable FRN

Фото узла (пока не напечатан корпус для миникомпьютера и рации bf-t17)