Безлицензионные рации... Ну помимо всего прочего у них есть свой собственный шарм дешевых электронных игрушек 90-х годов.
Просто гляньте на эту прелесть


У меня лет 15 назад, когда эти диапазоны были популярны была пара штук.


И этими погремушками на 8 каналов и мощностью в полватта можно пользоваться не получая никаких разрешений. Однако очевидно даже в крупном городе не так много владельцев таких штук которым не лень держать их включенными. Чтобы их использовать по назначению можно поднять интернет-ретранслятор FRN

FRN-по сути сеть voip заточенная под работу с симплексными радиостанциями. Создавалась она для объединения именно безлицензионных станций LPD PMR CB и пользоваться ей можно не имея официального позывного(хотя некоторые выставляют в сеть трансиверы на любительские диапазоны)
Работает это так. Есть набор серверов, на серверах есть "комнаты" к которым подключаются компьютеры-клиенты с подлключенными к ним рациями (линки) или же только микрофонами и колонками, с которых можно разговаривать без рации. Ну или андроид смартфоны с гарнитурами.
Когда одна из раций принимает сигнал (или пользователь компьютера без радио жмет на ptt) этот звук сразу транслируется на остальные компьютеры, и дальше звук транслируется со всех раций подключенных к остальным компьютерам, ну или из динамиков подключенных к ним.
Таким образом сеть объединяет в один канал рации разных диапазонов в разных местах. При этом скорость интернета требуется мизерная (битрейт звука -8кбит) и не требует внешнего IP (использует исходящие соединения, как обычный мессенджер, можно использовать какой-нибудь дешевый мобильный тариф или wifi линк)

Прелесть FRN в том что клиенты не обязаны иметь белый статический ip, клиент сети можно просто перенести в другое место, подключить кабелем к роутеру с DHCP (или WIFI) и он продолжит работать без каких либо настроек.

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


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


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

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

Формально PMR и LPD рации законны если используют встроенную несъемную антенну. О запрете модификации питания и использовании с VOIP в законах не упоминается, так что польские любители FRN делали так





Решение так себе поскольку эти рации явно не заточены на работу в широком диапазоне температур, и явно не выдержат выпадения конденсата на плате при переходе через точку росы. С конденсатом можно побороться покрыв плату рации лаком в несколько слоев (у меня wifi роутер покрытый автомобильным лаком проработал на улице в необогреваемом корпусе 5 лет, сейчас опять работает дома).

Скачиваем архив 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

Есть более простой вариант, установить в ALSA выбранную звуковушку устройством по умолчанию.
Сначала узнаем номер устройства присвоенный нашей карте

cat /proc/asound/cards

Затем создадим конфиг в котором укажем номер нашей карты для устройства по умолчанию.

sudo nano /etc/asound.conf

defaults.pcm.card №
defaults.ctl.card №

Где № - номер карты в списке выданном cat /proc/asound/cards

И в конфиге FRN указываем просто устройство по умолчанию

[Audio]
InDevice=ALSA:default
InSampleRate=8000
InQuality=S
InFactor=1
InPreCapturedTime=500
InAgcEnabled=YES
InAgcLevel=90
InAgcMaxGain=20
InHpfEnabled=no
InHpfOrder=10
InDtmfEnabled=no

OutDevice=ALSA:default
OutSampleRate=8000
OutQuality=S
OutFactor=1
OutAgcEnabled=YES
OutAgcLevel=90
OutAgcMaxGain=40
OutHpfEnabled=no
OutHpfOrder=10
OutDelayConst=

Запускаем 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, мой рабочий конфиг (разумеется без данных регистрации и пароля) можете посмотреть тут


PTT
По первому времени можно пользоваться функцией VOX но у нее есть задержка включения, отключения передачи и она будет дергать передачу если в речи корреспондента возникли паузы, так что лучше бы настроить PTT
В моем случае делалось это так
Вот распиновка платы orange pi zero 3

Красным подчеркнут выбранный мной пин (потому что находится на той же гребенке на которой я использовал USB и питание)
У него есть два обозначения, PC1 и 65, и это по сути ОДНО И ТО ЖЕ. 65 это номер вывода прямо на чипе, не на гребенке платы, не условный какой-то. PC1 это 65 пересчитанное по правилу: на схеме платы пины как правило обозначены именем PXY, где X - буква, а Y цифра. В командах управления состоянием gpio используется номер линии. Номер линии из имени пина получается по формуле: (позиция буквы в алфавите - 1) x32 + номер пина. Например PH18 будет (8 - 1) x 32 + 18 = 224 + 18 = 242.
Цитата отсюда https://github.com/Sergey1560/fb4s_howto/blob/master/armbian_gpio/readme.md

Для контроля пина ставим
sudo apt-get install gpiod
Теперь можем подключить к пину светодиодик с резистором и повключать его
~$ gpioset gpiochip0 65=0
~$ gpioset gpiochip0 65=1





(Вообще все не так просто может быть, есть минимум три системы управления пинами, тут описано подробно https://alterfrn.ucoz.ru/index/gpio_comments/0-26
Конкретно у меня команда
sudo ls -1 /sys/class | grep ^gpio
вывела просто
gpio
Есть же еще вариант gpio_sw, и что делать в таком случае смотрите по ссылке выше, там как минимум меняется нотация записи в конфиге)
Я приведу фрагмент конфига который получился у меня для управления PTT (выделен красным, в качестве номера пина используется номер вывода процессора)

[Radio]
PttEnabled=yes
CosEnabled=yes

##### RS232 for Linux
#PTT=COM:/dev/ttyS0:RTS:
#COS=COM:/dev/ttyS0:CTS:

##### SYSFS-GPIO for Linux
PTT=GPIO:65:gpio65:N

#COS=GPIO:7:gpio7:N

##### CM108-GPIO for FreeBSD/Linux
#PTT=CM108:/dev/hidraw0:GPIO3:N

Ну и не вздумайте тыкать напрямую контакт PTT на gpio пин.
Схема подключения рации и одноплаты без изоляции


С гальваноразвязкой


У меня приложение не запустилось просто так, только с ключом DEBUG
sudo ./FRN debug
После запуска в консоль будет выводиться информация о ходе подключения, а затем о приеме/передаче сигнала если она будет происходить.
Если вы правильно внесли регистрационные данные и пароль то при передаче в сеть у вас в консоль будет выводиться строчка tx approved and started. Если вы опечатались в имени, позывном, пароле, емейле или городе\районе после подключения к сети и попытке передать будет выводиться только tx is requested. Также будет если вас забанили за создание помех при неудачной настройке или неадекватном поведении абонентов вашего линка. При этом передачи из сети будут проходить на радиостанцию.


Для настройки автозапуска скопируйте папку 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)


Линк окончательно собран с рацией bf-888s. Она дешевая, имеет приемлемую мощность (2 ватта в режиме HI), питается от одной банки Li-Po, имеет 16 программируемых каналов переключаемых механическим переключателем.
Надо ли говорить что купленные программируемые рации надо ОБЯЗАТЕЛЬНО программировать, т.к. с завода в них зашито непонятно что. У моей с завода были вроде частоты американской FRS (хотя у нас разрешены только LPD и PMR), но почему на прием стоит CTSS тон на половине каналов, а на передачу нет?

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


Тут в качестве диода используется один из переходов мощного транзистора (потому что диода не нашлось под рукой)


Нода в сборе






Антенна линка-сваянный на скорую руку вертикальный диполь


Поскольку антенна расположена на втором этаже среди 9 и 12 этажных домов расставленных на расстояниях примерно 60 метров друг от друга очевидно что радиус действия ноды будет невелик, и мой дом находится примерно с краю поселка имеющего размеры 500х1500 метров я решил использовать простую слабонаправленную антенну круговой поляризации - асимметричный турникет. Лет 10 назад экспериментируя с антеннами на wifi я заметил что круговая поляризация ГОРАЗДО лучше преодолевает препятствия и отражения. Там где сигнал от точки доступа с линейной антенной падал дб на 15 у круговой он снижался на 5. Конечно стальную сетку она не пробьет, но при отражениях и рассеивании на препятствиях вероятность поймать сигнал круговой поляризации гораздо выше. Соответственно сигнал излученный низко в почти городской застройке будет иметь куда большую вероятность достигнуть приемника, и наоборот, линейно поляризованная волна излученная рацией, испытавшая несколько отражений под разными углами и пришедшая к приемной антенне с совершенно случайным углом поляризации будет принята без потерь в любом случае.
Картинка для расчета стырена у SGCDEREK

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





Корреспондент находящийся в дачном массиве с противоположной стороны поселка (т.е. на пути сигнала пара 9-ти этажных домов и лес) отметил прибавку сигнала на один-два балла.

Потом я решил подключить линк к антенне на крыше, которой вообще то является sirio boomerang на 27мгц, к кторой прикручена в основание штыря коническая нашлепка в качестве эрзац антенны на укв (на момент установки это была единственная возможность улучшить хоть как-то укв прием, и КСВ правда улучшился на ряде диапазонов)
 
Но на 460мгц у нее ксв все же чудовищный (что-то в изоляторе создает проблемы, возможно конструктивная емкость, поэтому я буду ее переделывать, на фото ниже диапазон 20-1500мгц)

Но высота (9 этажный дом) компенсирует потери в 30 метрах кабеля и на рассогласовании антенны. Так что я спаял диплексер с частотой раздела около 200 мгц.

Он настроен неидеально, но на частоте работы линка потери доведениы до 0,3 дб.


Теперь на одну антенну работают сразу 3 рации. У меня на столе сиби и 145мгц кенвуд (тоже через самодельны диплексер)

А прямо у выхода кабеля из квартиры (чтобы исключить потери в лишних 10м кабеля) через еще один диплексер работает FRN.


Далее я решил зафильтровать вход баофенга, поскольку чип RDA это радио прямого преобразования, что само по себе не плохо, но на него сыплется сигнал через ОООчень широкополосный входной фильтр. Сейчас я пока экспериментирую с укороченным резонатором. Лучшие результаты в качестве полосового фильтра показала схема питания через емкость.
Первая схема питания, самая простая-отвод. Пдавление внеполоски такое себе, провал справа - узкополосный и дальше подавление также ухудшается.


Емкостное питание. Из-за того что резонатор укорочен характеристическое сопротивление на его конце низкое, приходится использовать большие емкости для питания и полоса получается недостаточно узкой в отличие от полноразмерного резонатора. Интересно попробовать спиральный резонатор с такой схемой питания.




Поэкспериментировав с запиткой резонатора я все же сделал вариант с более слабой фильтрацией внеполоски, но попроще-с одной стороны запитка отводом, с другой, где сигнал сводится с ФНЧ частью диплексера стоит конденсатор в виде отгибаемого лепестка жести.
Пока по быстрому настраивая довел до потерь 0.89 ДБ примерно.


АЧХ ФНЧ части (стремноват, надо подкрутить катушки)


Изоляция


Все же непрямое согласование обеспечивало лучшее подавление внеполоски, почти на 7 дб лучше при отстройке +-100МГЦ в сторону чем подключение отводом. Думаю я его переделаю как появится время.


UPD: у меня лежал по ошибке купленный orange pi zero 3. Я по привычке думал что у него полноценная звуковая и купил его для линка, но после прочтения доков оказалось что микрофонного входа у него нет. У меня валялась USB звуковая карта и можно было бы сделать линк на ней. Но мне не хотелось разводить мотню проводов, а вот сделать на этом сетапе линк кому-то - другое дело, хехе.


Баопроблемы
Ах, баофенг и примкнувшие.





Нисколько не преуменьшая заслуги этих фирм по удешевлению железа (bf-888s стоит как ДВЕ ШАВЕРМЫ) плюс широчайшей доступности, индифферентности частотнадзора к людям покупающим и не регистрирующим эти балалайки, и невероятной мягкости закона к нелегальному пользованию ими нельзя очаровываться и забывать об обратной стороне дешевизны и прочего. А именно низком динамическом диапазоне. Сами по себе приемники прямого преобразования не являются чем-то плохим, но вот отсутствие нормальных входных фильтров и низкоуровневые смесители с очень низким динамическим диапазоном не позволяют на всю катушку использовать это железо при подключении их к внешним высоко стоящим антеннам. Даже таким неэффективным и обремененным потерями в 30 метрах кабеля как у меня.
Впрочем я встречал рассказ американских радиолюбителей купивших и установивших фирменный репитер YAESU на возвышенности, после чего его радиус приема упал на треть по сравнению с установкой в низине. И только после того как они повесили на входе приемника многозвенный спиральный фильтр и МШУ он раскрылся, дело было в не сильно индустриальной местности, и тем не менее внеполосных сигналов хватило чтобы придушить прием, что же вы хотите от портативки у которой перед входом микросхемы только двузвенный полосовик? Вот для примера входные цепи UV-5R (Да, перед ними еще диапазонные ФНЧ, но тем не менее все что ниже верхней границы диапазона через них пролетает)

У меня же история такая, BF-888 несмотря на настроенный CTSS субтон регулярно открывал шумоподавитель в отсутствии реального сигнала на частоте и транслировал в линк шум, или болтовню местных школьников по детским балалайкам, которые и знать не знали ни о каком CTSS, правда я потом снабдил их ставшими мне ненужными двумя bf-50c, bf-17t и quansheng uv-k5 с лютой прошивкой)за что мой линк ловил блокировки передачи от администрации сервера.
После установки узкополосного радиочастотного фильтра на резонаторе ничего на первый взгляд не изменилось, а испытание качества приема с помощью эхо-репитера сети FRN с включенным фильтром а затем подключением антенны напрямую к Бао показало что с фильтром прием даже хуже. Сигнал явно модулируется чем-то еще.
Замена bf888s на bf-m4 (шило на шило, да, но предположение о том что неисправен декодер CTSS стоило проверить) ничего не изменила, его шумодав тоже отлично открывался по несколько раз в час при отсутствии реального сигнала с CTSS на частоте)
Быстрый обзор спектра с помощью airspy показал что самая сильная помеха находится всего в 3 Мгц от PMR диапазона.

Соответственно когда я включаю узкополосный фильтр АРУ приемника перестает видеть остальной эфир и начинает реагировать только на кучу импульсных сигналов и широкополосный постоянный сигнал, как раз попадающие в полосу пропускания.
Можно конечно делать cavity фильтры с дополнительной полосой режекции, но я просто закажу какой-нибудь проверенный временем супергетеродин, motorola gp 360 или какой-нибудь кенвуд. To be continued...

Вдогонку отмечу. Сейчас lpd раций на маркетах не найти, PMR вроде еще продаются (удивительно, но СИБИ раций на озоне больше в десятки раз), но в нулевых они всегда продавались в салонах связи а-ля связной и евросеть. Я говорю именно о полностью легальных аппаратах, соответствующих требованиям по мощности и конструкции антенны. И те аппараты из нулевых были полноценными двойными супергетеродинами. У меня были Jet! Live, Midland G7 и моторолы (не помню название).




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

-------------------------------------------------------------------------------------------------------------------------------------------------------
Из интересного найденного при изучении всякого связанного с линкостроением:
Рация BF888s при стоимости в 600-700 рублей, механическим переключателем каналов и питанием от 1 банки лития идеальна для построения маломощных линков и реп. Может часами жарить на передачу на максимальной мощности в антенну подключенную 75 омным кабелем. Американцы берут прямо с платы (с вывода включения УНЧ) сигнал COS, строят на этих баофенгах даже дуплексные цифровые!!! ретрансляторы сети ALLSTAR


Выпускают наборы для сборки интерфейсов в которые нужно впаять плату от этого баофенга


Звуковая плата на чипе cm108 также часто используется в построении линков (т.к. распберрипай и многие другие одноплатники не имеют микрофонного входа), и имеет несколько пинов GPIO которыми можно управлять, alterfrn имеет такую опцию.