APRX - шлюз и ретранслятор для aprs

UA6HJQ
написано для aprs-kawkaz в феврале 2012
(обновлено в июне 2013)

Простая в освоении, логичная, не требовательная к ресурсам программа для Linux, FreeBSD, NetBSD, OpenBSD, Solaris, AppleOSX, HP-UX, OpenWrt. Автор Matti Aarnio, OH2MQK начал писать эту программу в 2007 году и с тех пор, постоянно совершенствует её. APRX предлагается в виде исходников и готового пакета для Linux Debian. Также существуют портированные версии для OpenWRT.

Я взял исходники и скомпилировал программу на старом компьютере (CPU 233mHz, ОЗУ 64mb), под управлением Linux Slackware. В самом компьютере нет сетевой платы, поэтому я использовал PCMCIA-карту с сетевым интерфейсом, на фото ниже её видно, торчит справа от TNC2. Компиляция и установка заняла несколько минут и прошла 'как по маслу'. Дальше читайте небольшой обзор, особенности и впечатления.

APRX
вот так выглядит мой домашний aprx rx-igate на 144800кгц (linux slackware, tnc2_ra3apw, uv-3r)

Сначала, автор предполагал использовать программу APRX только как приёмный APRS iGate, отсюда и название, но потом он расширил возможности и теперь APRX может работать в режимах:
- igate только rx
- igate tx/rx
- aprs ретранслятор (ui-digi)
- multi-interface
- шлюз из dprs сети в aprs

Возможны комбинации режимов. Например из двух портов, один работает только на приём, а другой на приём и передачу или работает igate, а digipeater выключен и тд. Таким образом, программа APRX подходит как для простейшего домашнего ui-digi, так и для мощного моногочастотного aprs-шлюза c КВ,УКВ,NET каналами, способного работать круглосуточно.

Автор подчёркивает, что использование программы в режиме Rx-iGate не требует даже радиолюбительской лицензии и доступно любому заинтересованному человеку, что в полной мере отвечает идеям демократии и свободы.

Главная особенность программы APRX, которая и определяет возможные конфигурации, в том что она не требует поддержки AX.25 в ядре, поэтому пакеты ax25-util, libax25, ax25-tools устанавливать не нужно. Более того, её легко добавить к уже работающим системам. Если на компьютере включена поддержка AX.25 в ядре и созданы порты, то программа может с ними работать, через виртуальное соединение.

APRX поддерживает только TNC в режимах KISS, SMACK, FLEXNET, TNC2, DPRS, XKISS. В режиме TNC2, программа принимает пакеты которые идут из эфира на СОМ-порт контроллера, при этом сам TNC2 находится в обычном терминальном режиме с включенным монитором (команды: in terminal и mon on), правда, этот режим не работает с Kantronics-ами. Программа может работать с любой TNC-железкой, как самодельной, так и фирменной. Поддерживается работа с удалённым COM-портом, через TCP.

Как и многие программы под Linux, APRX не имеет интерфейса (режим демона), все настройки производятся в файле конфигурации aprx.conf это экономит ресурсы. Программа будет работать на очень слабых компьютерах и wi-fi роутерах с OpenWRT и железом: 32мб ОЗУ, 4-8мб ПЗУ, 300-400мГц ЦПУ. Есть пример успешного запуска на wi-fi роутере TP-Link TL-WR741ND и других, ссылки в конце статьи.

Настройка конфигурационного файла aprx.conf простая и сводится к указанию позывного, COM-порта, aprsis сервера. Потом можно добавить фильтры, маяки, обьекты, режим работы digi и тд. В конфиге есть необходимые комментарии, всё просто и понятно.

Запуск производится командой aprx, хотя во время первоначальной настройки может потребоваться вывод на консоль некоторых параметров, тогда делаем aprx -d или aprx -dd чтобы видеть ошибки в конфигурации, чем программа занимается, что передаёт и принимает. Передачу своего маяка (beaconmode) можно настроить через все интерефейсы (both), только на сервер (aprsis) или в радиоканал (radio).

APRX
aprx не требует постоянного контроля, программа работает очень устойчиво в течении длительного времени....

Как и другие программы в linux, aprx может писать логи в файлы, о том что она делает, так что в случае неполадок разобраться будет легко. Все заявленные автором функции и режимы работают 'как часы'. В последнюю версию включена экспериментальная поддержка шлюза из D-STAR, D-PRS сетей в APRS.

В комплекте с aprx есть отдельная утилита aprx-stat. Она показывает статистику по всем используемым портам, количество принятых и переданных пакетов в байтах и фреймах, нагрузку на порт в эрлангах. Информация выводится в табличном виде.

Я проверил работу APRX в режимах: igate только rx, igate rx/tx, igate rx/tx + digipeater. Впечатления самые положительные. Потребляемые ресурсы минимальные, параллельно с APRX, старый компьютер легко 'крутит' пакетный BBS OpenBCM и flexnet-netrom-ampr роутер XNET. Мой файл конфигурации aprx.conf с которым я экспериментировал на компьютере, выглядит примерно так:

  mycall UA6HJQ-10
  
<aprsis>
  server russia.aprs2.net 14580
  filter "m/300"
</aprsis>

<logging>
  pidfile @VARRUN@/aprx.pid
  rflog @VARLOG@/aprx-rf.log
  aprxlog @VARLOG@/aprx.log
</logging>

<interface>
  serial-device /dev/ttyS0 9600 8n1 KISS <--- используется порт COM1
  callsign $mycall
  tx-ok true
</interface>

<beacon>
  beaconmode both
  cycle-size 27m
  beacon symbol "I&" lat "4502.19N" lon "04158.35E" comment "Rx-Tx-iGate from Stavropol"
</beacon>
APRX может брать данные из файла, например от метеостанции или датчиков и передавать их в маяке. В раздел <beacon> добавляем ещё одну строку маяка. Делается это так:
  beacon via WIDE1-1 file /tmp/meteo.txt

Чтобы в приёмном Rx-iGate активировать функцию дигипитера для других маяков, нужно в файл aprx.conf, в соответствующие разделы, добавить строки:

<interface>
  tx-ok true  <--- добавить строку в действующий интерфейс
</interface>

<digipeater>
  transmitter $mycall  <--- позывной который был указан в строке mycall
  <source>
    source  $mycall
  </source>
</digipeater>
Если вы используете TNC2 в KISS режиме (я использую TNC2W с прошивкой PacComm), то перед запуском APRX его нужно подготовить, для этого запускаем minicom -o и набираем команды:
txd 32
kiss on
restart
Выходим из minicom Ctrl+A Q и запускаем APRX. Можно пойти другим путём и автоматизировать этот процесс, добавив две строки в раздел interface, теперь полностью он будет выглядеть так:
<interface>
  serial-device /dev/ttyS0 9600 8n1 KISS
  callsign $mycall
  tx-ok true
  initstring "TXD 32\x0dKISS ON\x0dRESTART\x0d"
  timeout 3s
</interface>
Обратите внимание, что TNC2 переводится в KISS режим автоматически при каждом запуске APRX, а выходить из KISS нужно в ручном режиме Ctrl+192 Ctrl+255. Минус работы программы с TNC в отсутствии мониторинга приёма информации из эфира. Узнать работает ли Rx-iGate можно только косвенно, зайдя на aprs.fi. Теперь пример для двухпортового TNC типа Kantronics KPC-9612:
<interface>
  serial-device /dev/ttyS0  9600 8n1  KISS
  initstring 	"TXD 33\x0dIN KISS\x0dRESET\x0d"
  timeout 	4s  
  <kiss-subif 0>  <--- порт 1200бод
    callsign     $mycall
    tx-ok        true
  </kiss-subif>
  <kiss-subif 1>  <--- порт 9600бод
    callsign     $mycall
    tx-ok        true
  </kiss-subif>  
</interface>

Иногда нужно транслировать маяки из сети в радиоэфир (IS-->RF). Это особенно актуально для тех кто находится в вашем городе и использует iPhone, наладонники, телефоны с соответствующим софтом. Они могут кидать маяки в сеть, но не могут в эфир. Таких пользователей можно ретранслировать из сети в ваш местный эфир. В файл aprx.conf добавляем следующие строки:

<interface>
  tx-ok true
</interface>

<digipeater>
  transmitter $mycall  <--- позывной который был указан в строке mycall
  <source>
    source  APRSIS
    relay-type third-party
    viscous-delay 5
    via-path WIDE1-1 
    filter b/UA6HJQ-15 <--- позывной который нужно ретранслировать в эфир
    filter -b/RR6 <--- позывные которые запрещено ретранслировать из сети, все RR6*
  </source>
</digipeater>
В данном примере UA6HJQ-15 может кидать маяки только в сеть с телефона. Услышав его маяк в сети (IS) APRX переретранслирует его в эфир (RF) и он появляется на картах у всех кто слушает эту частоту.

Полезные ссылки:
ham.zmailer.org/oh2mqk/aprx - домашний сайт программы
groups.google.com/group/aprx-software - обсуждения
wiki.ham.fi/Aprx.en - краткое описание
DIXPRS - aprs шлюз
SmallMeteo + роутер в APRS и не только...
hamcmw.qrz.ru/pr/ - раздел о пакетной связи и aprs
переделка DIR-300
переделка DIR-600
переделка TL-WR741
переделка Asus WL-500
Протокол AX.25 в Linux Slackware

Игорь UA6HJQ