15
май
2020
Управление трансивером в Linux
14:44

Управление трансивером в Linux

Использование трансивера без компьютера почти немыслимо - даже для SSB и CW контактов требуется регистрация в журнале радиосвязей. В Linux управление радио при помощи компьютера активно развивается. Данная обзорная статья об интерфейсах и программах для работы с трансивером в Linux.

Почти все современные радиолюбительские программы для компьютера требуют наличия интерфейса для управления трансивером через COM порт, физический или виртуальный. Все современные трансиверы имеют последовательный порт для управления ими при помощи CAT-команд (а не только коммутацию ON/OFF при помощи напряжения +5 Вольт). При помощи запросов извне, с компьютера, в трансивере можно изменять настройки:

  • частота VFO
  • режим передачи (AM/FM/USB/LSB/PKT/DIGI)
  • управление передачей — нажатие PTT возможно с помощью CAT команды.
  • включение ATT (аттенюатора)
  • настройка фильтров
    • выбор VFO A или VFO B

Библиотека, а точнее целая платформа или фреймворк, HamLib может управлять не только одним, а несколькими трансиверами (если у радиолюбителя они имеются) — например, в некоторых программах есть выбор Radio1 и Radio2. Например Radio1 — для коротких волн 1.9/3.5/7/10/14/18/21/24.9/28 МГц, а Radio2 для 144/433/1296 МГц. В свою очередь, в каждом радио есть два генератора плавного диапазона VFO1 и VFO2, при работе сплитом или через спутники (A / B). Всем этим управляет HamLib.

Grig На картинке выше - интерфейс программы grig для управления радиостанцией. Использует hamlib. Менять частоту можно прямым вводом при помощи кнопки ENT или левой и правой кнопками мыши.

Запуск grig для Yaesu FT-857:

grig -r /dev/ttyUSB0 -m 122 -s 4800

ключи:

  • -r от слова rig указывает на последовательный порт, к которому подключен трансивер,
  • -m от слова model - номер модели радиостанции из списка поддерживаемых HamLib,
  • -s от слова speed - скорость последовательного порта, к которому подключен трансивер.

Кроме трансиверов, HamLib умеет «общаться» с контроллерами поворотных устройств антенн (ротаторов, "повороток"). Список контроллеров есть на странице https://github.com/Hamlib/Hamlib/wiki/Supported-Rotators

Зачем нужен RIGCTLD? При запуске нескольких программ (soundmodem, gpredict, wsjtx, xlog, fldigi) которые используют CAT (computer aided transmission) одновременно, возникает конфликт: одна из программ берёт управление на себя, полностью занимая COM-порт, остальные перестают работать — либо не запускаются, либо зависают.

Конечно, можно использовать программы поочередно: например, в монопольном режиме запустить wsjtx для FT8, затем выгрузить из него журнал в ADIF файл, закрыть wsjtx и запустить другую программу — журнал связей CQRLOG, загрузить в него ADIF. затем закрыть всё, открыть FLDIGI для PSK31. :-)

Вариант c цифровым VOX (включение передачи при появлении сигнала) не удобен тем, что необходимо настраивать уровень чувствительности срабатывания передачи, который зависит от уровня входного сигнала. Второй недостаток VOX - в передающей программе теряется индикация частоты, вида модуляции и даже диапазона, что может неправильно записываться в журнал контактов.

Таким образом, HamLib и RIGCTLD нужны и должны работать в комплексе.

  • HamLib - библиотека с обширным списком моделей поддерживаемых радиостанций - 214 модели в версии 4.2, 264 модели в версиях 4.3 и 4.4 и 283 модели в версии 4.5, учитывает систему команд для каждой из радиостанций и преобразует их к стандартному виду, принятому для hamlib. Сайт: https://hamlib.github.io/
  • RigCtlD служба, которая умеет обслуживать запросы нескольких программ к HamLib. RIGCTLD - это сетевая служба (предоставляет возможность удаленно управлять трансивером по TCP-IP как на одном компьютере через localhost так и на разных ПК).

Кроме этих двух программ, есть графический интерфейс для управления трансивером, называется FLRIG (из набора программ fldigi). Можно настроить FLRIG, чтобы он через команды HamLib управлял трансивером, а fldigi обращалась к flrig для управления.

flrig

Цепочка: радиолюбитель →PC→fldigi → flrig → hamlib → CAT-интерфейс → трансивер →антенна.
Через FLRIG отлично работает FLDIGI, а WSJTX (при выборе трансивера «Flrig Flrig») не совсем.

Проверить, что ваш трансивер поддерживает HamLib можно на странице https://github.com/Hamlib/Hamlib/wiki/Supported-Radios

Как и веб-сервер Apache, графический редактор GIMP, библиотека HamLib существует не только для Linux, но и для Windows.

Список программ, которые умеют обращаться к трансиверу с использованием HamLib:

  1. FLDIGI (см. http://www.w1hkj.com/FldigiHelp/rig_config_page.html)
  2. WSJTX, домашняя страница https://physics.princeton.edu/pulsar/K1JT/wsjtx.html
  3. Gpredict (с меню настроек Интерфейсы - Radios)
  4. RotCTL (из комплекта gpredict в меню Интерфейсы — Rotators)
  5. rotctld (сетевая служба TCP на основе RotCTL)
  6. rigctl (утилита для управления трансиверами из командной строки)
  7. rigctld (сетевая служба для управления трансиверами по TCP-IP с синтаксисом команд rigctl)
  8. rigmem (резервная копия и восстановление памяти трансиверов)
  9. CQRLOG (тема https://forum.qrz.ru/33-apparatnye-zhurnaly/45242-cqrlog-dlya-linux.html)
  10. grig (графический интерфейс для управления трансивером с помощью hamlib)
  11. QSSTV
  12. FreeDV

Служба RIGCTLD предназначена для обслуживания запросов от нескольких программ к HamLib, для недопущения конфликтов из-за монопольного использования COM-порта. Можно сказать, что RIGCTLD в Linux является аналогом OmniRIG в Windows, но с отличием — не программа, а сервис (daemon). RIGCTLD является сетевой службой, работает по протоколу TCP (сокеты).

Источник: https://www.mankier.com/1/rigctld#Description

Список программ, которые умеют работать c rigctld по протоколу TCP-IP

  1. rigctl (утилита командной строки для управления трансивером, http://manpages.org/rigctl)
  2. gpredict (аналог Orbitron, может подключаться к порту rigctld 4532 любого ПК)
  3. rigctl-wsjtx (специальная версия rigctld сервера для WSJTX) https://www.mankier.com/1/rigctld-wsjtx
  4. WSJTX (при выборе «сетевого» радио «Hamlib Net rigctl», см. пункт выше.
  5. rigctlcom (эмуляция трансивера TS-2000 для вашего радио) https://www.mankier.com/1/rigctlcom
  6. PAT (программа для электронной почты на коротких волнах см. http://www.winlink.org/)
  7. CubicSDR (кросс-платформенное Software Defined Radio) - https://cubicsdr.com/

Список программ, которые умеют общаться с Flrig

  1. Fldigi (полная поддержка) http://www.w1hkj.com/
  2. WSJTX (частичная поддержка при выборе трансивера «Flrig Flrig» - не работает PTT)

Установка библиотеки HamLib

Номер актуального релиза Hamlib — версия 3.1. Планируется к выходу Hamlib версия 4, но она не вышла (пока) и обсуждать нечего.

Из репозиториев Linux Mint / Debian / Ubuntu можно установить
libhamlib2 и libhamlib-utils самой последней версии 3.1-7build1,
поэтому внешних репозиториев или git использовать не нужно,
всё ставится штатным образом:

sudo apt-get install libhamlib2 libhamlib-utils

или просто:

sudo apt-get install libhamlib-utils

(установит libhamlib2 через зависимости).


Команда для проверки подключения к трансиверу с использованием HamLib

rigctl -r /dev/ttyUSB0 -m 122

где:

  • ttyUSB0 — имя COM-порта к которому подключена радиостанция,
  • 122 — номер модели трансивера согласно списку поддерживаемых HamLib (на сайте https://github.com/Hamlib/Hamlib/wiki/Supported-Radios )

Источник: https://github.com/Hamlib/Hamlib/wiki

Установка rigctld

su -
apt install libhamlib-utils

Вывод списка всех файлов пакета:

dpkg -L libhamlib-utils

/usr
/usr/bin
/usr/bin/rigctl
/usr/bin/rigctld
/usr/bin/rigmem
/usr/bin/rigsmtr
/usr/bin/rigswr
/usr/bin/rotctl
/usr/bin/rotctld
/usr/share
/usr/share/doc
/usr/share/doc/libhamlib-utils
/usr/share/doc/libhamlib-utils/copyright
/usr/share/man
...

Программа установлена в каталог /usr/bin/rigctld

Запуск службы rigctld производится из командной строки с параметрами.

rigctld [-hlLouV] [-m id] [-r device] [-p device] [-d device] [-P type] [-D type] [-s baud] [-c id] [-T IPADDR] [-t number] [-C parm=val] [-v[-Z]]

(пример использования см. ниже)


Документация:
https://manpages.debian.org/stretch/libhamlib-utils/rigctld.8.en.html

Команда для проверки с помощью rigctl подключения к трансиверу с использованием RigCTLD
(источник http://vk4tmz.blogspot.com/2018/07/gpredict-radio-control-ft991a-via.html)

rigctl -m 2 -r localhost:4532 m

где -m 2 числовой код модели трансивера при работе через HamLib,
-r localhost:4532 - подключение к сервису RigCTLD на локальном ПК, порт по умолчанию 4532
m - команда на чтение частоты VFO (get_mode).

Скорость обмена, модель трансивера и другие параметры опущены. т.к. соединение происходит через rigctld, в котором она и настраивается.

Перед этим нужно установить и настроить на компьютере localhost демон rigctld.

rigctld -vvvvv -r \\.\ttyUSB1 -m 135 -s 4800 -t 4532 -C "serial_speed=4800,stop_bits=1,rts_state=ON,dtr_state=OFF,serial_handshake=None"

Параметры RIGCTLD что в Windows, что в Linux версии нужно передавать в строке запуска, как в примере. Если допущена ошибка, например, несуществующая модель трансивера 135, будет выведено сообщение об ошибке. Для просмотра настроек вызовите службу с ключом -L.

Аналог RIGCTLD = RIGCTLCOM

Программа, которая замещает RIGCTLD и позволяет множественные подключения к трансиверу разных программ называется RIGCTLCOM. Автор Mike W9MDB

Данная программа нужна для программ которые не знают о существовании rigctld или FLRig, например, MMTTY или другие программы из Windows которые могут даже запускаться через Wine.

RIGCTLCOM эмулирует трансивер Kenwood TS-2000:

It is a TS-2000 emulator that will allow programs that don't know FLRig or rigctld to talk to those two programs.

App->COMX->COMY->rigctlcom->rig

This will allow you to run, for example, N1MM and WSJT-X both accessing your rig through FLRig or rigctld.

Should also work with MMTTY or any other such program.

Does not quite work yet with WSJT-X but WSJT-X can connect to rigctld or flrig so it's not really needed there.

You'll have to install WSJT-X if you don't already have it. And using FLRig will easily allow multiple programs to connect to your rig so install that too.

It will also allow multiple connections with rigctld as the primary rig if you want to go that route.

1. Create a bridged serial port pair. e.g. COM9/COM10

2. Run rigctlcom to connect to FLRig (or rigctld) and one of the virtual COM ports...e.g. COM9 rigctlcom -m 4 -r 127.0.0.1:12345 -R COM9 -S 115200

3. Run your other program, e.g. N1MM and connect it to the other COM port...e.g. COM10 as a TS-2000 8-N-1 115200baud

4. If you want to run multiple programs via COM ports you'll need another instance of rigctlcom for each app that needs a COM port.

de Mike W9MDB

В Linux создание и связывание виртуальных COM портов возможно из командной строки при помощи команды socat

Пример:

socat PTY,link=/dev/ttyS10 PTY,link=/dev/ttyS11

Источник: https://stackoverflow.com/questions/52187/virtual-serial-port-for-linux



Похожие публикации