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 контактным разьёмом. Снимаем корпус со звуковой карты и припаиваем к контактам детали простого интерфейса, так будет надёжнее. Всё это оборудование нужно разместить в корпусе нужного размера. С 'железом' закончили, переходим к софту.

Установка из готового образа
Самый простой способ запустить SvxLink, записать на SD-карту готовый образ, с предварительно настроенным голосовым сервером и установленным русским языком.

Войдете со стандартным логином и паролем (pi/raspberry), поменяйте пароль.

Сразу после загрузки образа, запустите sudo raspi-config, откройте Advansed Options и сделайте Expand Filesystem. Перезагрузитесь.

Для настройки у управления SvxLink, используйте скрипт. Наберите ./svxlinkmenu.sh и выберите нужный пункт в меню.

Все описанные ниже (в этой статьте) шаги не нужны!
Свежий образ с svxlink.
Вопросы и пожелания задавайте в группе Echolink в мессенджере Telegram.



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

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

Настройка, установка необходимых компонентов, компиляция и тд, делается через утилиту svxlink-menu. Для её скачивания и запуска наберите следующие команды:
wget http://ua6hjq.qrz.ru/files/svxlink-menu.tgz
tar -xvf svxlink-menu.tgz
./svxlink-menu

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

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

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

Добавляем русскую озвучку
В архиве обновлённые звуковые файлы с учётом FRN и анонсов. Использован синтезированный голос 'Татьяна', в некоторых старых файлах оставлен голос 'Алёна'.
cd ~/svxlink/
wget http://ua6hjq.qrz.ru/files/ru_16k.tgz
sudo tar -xzf ru_16k.tgz -C /usr/share/svxlink/sounds/

После этого, в файле svxlink.conf меняем строку на DEFAULT_LANG=ru и перезапускаем программу.

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

Редактируем файл конфигурации командой sudo mcedit /etc/svxlink/svxlink.conf

Полный пример оригинального файла /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

Итак, мы получили работающий сервер, в котором активирована голосовая помощь и режим 'попугая'. Остальные модули подключаем по мере необходимости. Прервать работу сервера Ctrl+C.

Многие модули в svxlink не требуют конфигурации и их можно сразу запускать. Например, ничего не меняя, отредактируйте в файле 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# - помощь
*# - информация о текущих настройках

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

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

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

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

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

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

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

Статья не закончена!   Пишу когда есть время...

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

UA6HJQ и R7HJ