SvxLink + Raspberry PI = сервер голосовых услуг

НОЯБРЬ 2016
(обновлено летом 2017)

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

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

Автономные сервисы:
Help — интерактивная голосовая помощь
Parrot — репитер с отложенной передачей (попугай)
SelCall — селективный вызов с помощью DTMF сигналов
DtmfRepeater — простой ретранслятор DTMF сигналов
TclVoiceMail — голосовая почта (для локальных пользователей)
anons — обьявления в эфире, анонсы собраний, hamfest, соревнований, DX и тд.

Cервисы требующие подключение к интернет:
EchoLink — линк/терминал в сети EchoLink
FRN — линк/терминал в сети Free Radio Network
PropagationMonitor — информация о прохождении из dxmaps.com
MetarInformation — метеосводки аэропортов
remotetrx — удалённый приёмник/передатчик
rtl_sdr — дополнительные usb-приёмники
aprs — aprs маяк (показывает кол-во соединений)

На сегодняшний день, оптимальным решением является установка SvxLink на микрокомпьютер Raspberry PI. Получается лицензионно чистый, стабильно работающий, компактный голосовой сервер с удалённым управлением и гибкой конфигурацией.

Для сборки простой конфигурации, нам понадобится следующее оборудование:
1. Микрокомпьютер Raspberry PI (2/3 версии) + блок питания на 5В + SD-карта 4-8Гб.
2. USB звуковая карта
3. Транзисторы КТ503, резисторы 4к7, конденсатор 100нф
4. Радиостанция MOTOROLA GM-340 + блок питания
5. Антенна, кабель, разьёмы

Raspberry PI существует в версиях:
ВерсияДатаПроцессорЧастотаЯдерОЗУGPIOUSBEthernetWiFiBluetoothЦена
A2013ARM1176JZ-F700 МГц1256 Мб26 пинов1 порт$20
 A+2014ARM1176JZ-F700 МГц1256 Мб40 пинов1 порт$25
B2012ARM1176JZ-F700 МГц1512 Мб26 пинов2 портаесть$35
 B+2014ARM1176JZ-F700 МГц1512 Мб40 пинов4 портаесть$30
2B2015ARM Cortex-A7900 МГц41 Гб40 пинов4 портаесть$35
Zero2015ARM1176JZ-F1 ГГц1512 Мб40 пинов1 порт$5
3B2016ARM Cortex-A53 x641,2 ГГц41 Гб40 пинов4 портаесть802.11n4.1$35

Если вы только собираетесь купить Raspberry PI, берите последнюю версию 3B. В остальных случаях, лучше использовать версии B, 2B они самые популярные и можно найти б/у, недорого. У меня версия В, звуковая карта имеет только выход, без входа. Поэтому я использую внешнюю USB карту на чипе CM108, она дешевая и хорошо работает.

Схему соединения вы видите на картинке. У меня используется Raspberry PI с 26 контактным разьёмом. Снимаем корпус со звуковой карты и припаиваем к контактам детали простого интерфейса, так будет надёжнее. Всё это оборудование нужно разместить в корпусе нужного размера. С 'железом' закончили, переходим к софту.

Вопросы и пожелания:
группа Echolink в мессенджере Telegram.
лайвчат Echolink в мессенджере ICQ.



Установка операционной системы
Идём на страницу загрузки, скачиваем и устанавливаем Raspbian обычный или Lite (без графического интерфейса). Инструкция есть на сайте. Суть в том что на SD-карту записываем образ системы, вставляем карту в Raspberry PI и подаём питание. Карта должна иметь не менее 4Гб и x10 скорость.

Если голосовой сервер стоит за файрволом, нужно открыть следующие порты:
UDP 5198-5199 - Echolink звук
TCP 5200 - Echolink управление
TCP/UDP 10024 - FRN
TCP 14580 - APRS

Для простой и быстрой настройки и установки Svxlink, используйте утилиту svxlink-menu. Зайдите в консоль вашей Raspberry и наберите следующие команды:
cd ~
wget http://ua6hjq.qrz.ru/files/svxlink2menu.tgz
tar -xvf svxlink2menu.tgz
./svxlink2menu

Вы увидите меню, как на картинке. Разберём подробнее пункты.

1 - Обновление системы и установка необходимых библиотек для работы SvxLink. Эту команду нужно выполнить только один раз! При последующих обновлениях она не нужна!
2 - Сборка SxvLink из исходных кодов, установка русских звуковых файлов. Эта команда также выполняется только один раз, далее она не нужна. В папке /home/pi/svxlink будет лежать файл log в котором записан весь процесс установки.
3 - Обновление SxvLink, пересборка исходников и компиляция. Эта команду нужна при каждом обновлении SvxLink. Будет создан файл с отчётом об обновлении /home/pi/svxlink/log-update.txt
4 - Редактировать svxlink.conf (основной файл конфигурации) требуется перезапуск SvxLink
5 - Редактировать ModuleEcholink.conf (конфигурация Echolink)
6 - Редактировать ModuleFrn.conf (конфигурация FRN)
7 - Запустить SvxLink в текущей консоли. Удобно для проверки работоспособности, устранения ошибок и тестирования.
8 - Запустить/Перезапустить SvxLink как демон, в фоновом режиме, консоль остаётся свободной.
9 - Остановить работающую программу SvxLink.
A - Запустить AlsaMixer для настройки уровней приёма и передачи в эфире.
B - Создать резервную копию всех настроек svxlink
R - Восстановить настройки из резервной копии
X - Деинсталировать программу SvxLink. Будут удалены исходные коды, файлы конфигурации, языки.
Q - Выйти из этого меню.

Если вы удалите программу SvxLink нажав X, а затем захотите вновь установить её, пункт 1 выбирать не нужно! Установку начинайте сразу с пункта 2 и далее проводите настройку, как обычно.

Настройка Svxlink
Подключаем в usb звуковую карту (если не сделали этого раньше). Вместо радиостанции, на выход звуковухи включите динамики, будем слушать звуки. Удостоверяемся что звуковая карта готова к работе командой aplay -l.

Пример основного файла конфигурации и двух модулей с минимальными настройками, чтобы вы могли быстро запустить свой svxlink:

svxlink.conf
ModuleEchoLink.conf
ModuleFrn.conf

Первым делом редактируем файл /etc/svxlink/svxlink.conf для этого запускаем ./svxlink-menu и выбираем пункт 4.

Полный пример оригинального файла /etc/svxlink/svxlink.conf с выделенными строками, которые нужно изменить, для первого запуска сервера. В дальнейшем (по мере настройки) нужно будет изменить и другие строки.

Запускаем сервер командой svxlink, он покажет свою версию, режим работы, загруженные модули. В этом же терминале набираем команду 0# и слушаем приятный женский голос, который скажет что делать дальше.

Теперь подключаем радиостанцию и регулируем входные/выходные уровни, командой alsamixer -V all. Осваиваем команды через эфир (DTMF тонами) или через терминал, с клавиатуры. Учимся включать/отключать модули, вызывать помощь, получать подсказки и тд.

Чтобы работал PTT и радиостанция управлялась, выполняем команды и добавляем их в /etc/rc.local :
echo "9" >/sys/class/gpio/export
echo "out" >/sys/class/gpio/gpio9/direction

Итак, мы получили работающий сервер, в котором активирована голосовая помощь, режим 'попугая', dtmf репитер, голосовая почта и другие модули. Нужные модули подключаем в файле svxlink.conf (жми пункт 4 из меню). Прервать работу сервера Ctrl+C.

Некоторые модули не требуют конфигурации и их можно сразу запускать. Например, ничего не меняя, отредактируйте в файле svxlink.conf следующую строку:
[SimplexLogic]
MODULES=ModuleHelp,ModuleParrot,ModuleDtmfRepeater,ModuleSelCallEnc

и вы получите четыре работающих сервиса. Для конфигурации остальных модулей, зайдите в папку /etc/svxlink/svxlink.d и проверьте настройки нужного вам модуля.

Настройка FRN-модуля
Открываем файл с конфигурацией sudo mcedit /etc/svxlink/svxlink.d/ModuleFrn.conf и меняем несколько строчек:
SERVER=voip.qrz.ru
CALLSIGN_AND_USER="LPD0532, Vlad"   ← ваш позывной, имя
BAND_AND_CHANNEL="446.03125FM CTC88"   ← частота, подтон
COUNTRY=Russian Federation   ← страна
CITY_CITY_PART="STV - RUSSIA"   ← город - страна
NET=Russia   ← название конференции

Включаем модуль FRN, редактируя файл sudo mcedit /etc/svxlink/svxlink.conf. Название модуля добавляем в конец строки:
[SimplexLogic]
MODULES=ModuleHelp,ModuleParrot,ModuleDtmfRepeater,ModuleSelCallEnc,ModuleFrn

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

DTMF-команды
Команды передаваемые через эфир имеют чёткую структуру. Для каждого модуля они однотипны. Например, команды модуля Parrot и логика его работы:
1# - активация первого модуля (попугай)
 # - деактивация модуля
0# - помощь
*# - информация о текущих настройках

У каждого модуля могут быть дополнительные команды, которые нужны для его работы. Администратор сам решает, какие модули будут доступны пользователям его сервера.

Ниже (на картинке) вы видите систему dtmf-команд, передаваемую по эфиру для управления голосовым сервером RG6G (нужна радиостанция с dtmf клавиатурой).

Сеть на основе SvxLink
Интересно то, что SvxLink может, как подключаться к другим сетям, так и создавать сам сеть для расширения своих возможностей. Всего один сервер, позволяет развернуть голосовую сеть состоящую из локальных и удалённых терминалов, приёмников, передатчиков, репитеров. В этом SvxLink принципиально отличается от других программ.

Радиолюбители могут подключаться к серверу SvxLink по сети и пользоваться теми голосовыми сервисами, которые разрешит администратор. С помощью дополнительных приёмников и передатчиков, расположенных в зонах плохого приёма, можно существенно расширить покрытие территории. Один SvxLink сервер может легко обслуживать несколько городов или целую область.

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

Пользователи Echolink и FRN сетей, могут быть полностью изолированны друг от друга, в одном сервере. Разным группам пользователей, могут быть доступны разные сервисы.

Например (если посмотреть на схему), Радиолюбители на 145МГц могут работать только в сети Echolink, а пользователи на 438МГц могут работать только в FRN и пользоваться попугаем. Удаленный пользователь, подключающийся через компьютер работает только с голосовой почтой, а пользователь в локальной сети, может слушать все каналы и тд.

Сервер SvxLink имеет очень гибкую конфигурацию.

Статья периодически обновляется!  

Ссылки:  
Raspberry Pi — первый запуск
svxlink-sounds-rus-16k.tar.bz2 - свежая версия (20.06.2017) русской озвучки
svxlink-menu.tgz - утилита для быстрой установки и настройки программы
oписание и настройка svxlink (устаревшая статья)
группа Echolink в мессенджере Telegram
лайвчат Echolink в мессенджере ICQ
Echolink сеть на Кавказе (СКФО)

UA6HJQ, R7HJ