Table of Contents

APRS with the NinoTNC

Note: This is currently a WIP

The NinoTNC can be used to send and receive APRS which will allow you to run an iGate, Digipeater or position beacon when used in conjunction with some additional software. As well as contributing to the APRS network, this might be useful to help find local stations you can peer with to help build a national packet network.

This document will cover installing and configuring the software to run as an Rx only iGate, with a periodic position beacon sent via RF. Two software packages are documented, you can chose one or the other. Aprx is lightweight and easy to configure, and BPQ32 is more fully featured but harder to configure, but also allows you to attach an external APRS client like YAAC so you can run a “headless” iGate but periodically connect from another computer to view stations on a map or send messages.

The guides for both packages assume you're using Raspberry Pi OS or Debian, but may work for other Debian derivatives.

NinoTNC / Radio Setup

NinoTNC

For 1200 Baud AFSK set the MODE switches to 0110.

Radio

The vast majority of APRS in the UK takes place on 144.800Mhz FM with narrow deviation. Configure your radio accordingly.

Notes on licensing

N.B. These are my interpretation of the license. You're encouraged to read and interpret the license yourself.

Aprx

Installation

Firstly install some pre-requisites:

sudo apt-get update && apt-get upgrade
sudo apt-get install wget openssl

Next download the latest package. I'm forcing IPv4 only as I had issues when attempting to download via IPv6.

For Raspberry Pi:

wget --inet4-only -O /tmp/aprx.deb https://thelifeofkenneth.com/aprx/debs/aprx_2.9.0_raspi.deb

For amd64:

wget --inet4-only -O /tmp/aprx.deb https://thelifeofkenneth.com/aprx/debs/aprx_2.9.0_amd64.deb

Next install the deb package:

dpkg -i /tmp/aprx.deb

Configuration

Now it's time to customise the configuration. Use your preferred text editor to open /etc/aprx.conf and edit to suit.

The latitude and longitude syntax is mildy annoying, you need them in degrees, minutes, and seconds format. Latitude requires 4 digits before the decimal point and Longitude requires 5 digits before the decimal point. Pad with zeros if required. I use the “GPS Coordinates” from latlong.net

You can generate your APRS Passcode here

It should look something like the example below.

mycall YOURCALL-YOURSSID
myloc lat 5139.20N lon 00025.09W

<interface>
        callsign YOURCALL-YOURSSID
        serial-device /dev/ttyACM0 57600 8n1 KISS
        telem-to-is false
        tx-ok true
</interface>

<aprsis>
        login YOURCALL-YOURSSID
        passcode YOURPASSCODE
        server euro.aprs2.net
        heartbeat-timeout 1m
</aprsis>

<beacon>
        cycle-size 15m
        beaconmode both # aprsis, radio, or both
        beacon interface YOURCALL-YOURSSID via WIDE1-1 symbol "R&" $myloc comment "Aprx + NinoTNC Rx-iGate"
</beacon>

<logging>
        rflog /var/log/aprx/aprx-rf.log
        aprxlog /var/log/aprx/aprx.log
</logging>

systemd

Aprx doesn't ship with a systemd service file by default, and I've had some issues with the included init script. Lets create a systemd service instead.

sudo systemctl disable aprx
sudo systemctl daemon-reload
sudo rm /etc/init.d/aprx

Open /etc/systemd/system/aprx.service with your favourite text editor.

[Unit]
Description=Amateur Radio APRS Gateway & Digipeater
Documentation=man:aprx(8)

[Service]
Type=simple
ExecStart=/sbin/aprx -i

[Install]
WantedBy=multi-user.target
sudo systemctl enable aprx
sudo systemctl start aprx

Usage

Aprx is relatively simple and once configured and started it should start to automatically forward packets to APRS-IS.

To view the RF log:

tail -f /var/log/aprx/aprx-rf.log

To view the generic log:

tail -f /var/log/aprx/aprx.log

It might be useful to debug Aprx in the foreground. To do so, stop Aprx with

systemctl stop aprx

Then run it in the foreground with the debug arguments:

aprx -f /etc/aprx.conf -v -dd -L  

BPQ32

coming soon

SIMPLE

NODECALL=2E0SIP-11
LOCATOR=NONE


IDINTERVAL=0
IDMSG:
!5139.20NR00025.09W&Aprx + NinoTNC Rx-iGate
***

PORT
 PORTNUM=1
 ID=APRS Port
 TYPE=ASYNC
 PROTOCOL=KISS
 FRACK=10000
 RESPTIME=500
 RETRIES=10
 MAXFRAME=7
 PACLEN=128
 TXDELAY=500
 QUALITY=0
 MINQUAL=10
 COMPORT=/dev/ttyACM0
 SPEED=57600
 SLOTTIME=100
 PERSIST=64
 BBSFLAG=NOBBS ; Disable Packet Functions
 DIGIFLAG=0 ; Disable Packet Functions
ENDPORT

PORT
 PORTNUM=2
 ID=KISS
 TYPE=ASYNC
 PROTOCOL=KISS
 IPADDR=0.0.0.0
 TCPPORT=8003
ENDPORT

APRSDIGI

 APRSCall 2E0SIP-11
 ;RXONLY=1

 StatusMsg=BPQ32 + NinoTNC Rx-iGate
 Symbol=& ; Icon to display for station.
 Symset=R ; This is a "R" in a Black Diamond, indiciating a receive only iGate
 BeaconInterval=15

 ;APRSPath 1= ; Receive only port
 APRSPath 1=APRS,WIDE1-1
 APRSPath 2=APRS,WIDE1-1

 Digimap 1=IS

 BRIDGE 1=2
 BRIDGE 2=1

 ; Posistion Params
 LAT=5139.20N ; Must be in standard APRS Format (ddmm.mmN/S)
 LON=00025.09W ; Must be in standard APRS Format (dddmm.mmE/W)

 ; IGATE Params. If specified you will gate RF packets and your beacons to APRS-IS
 ISHost=aprs.2e0sip.co.uk
 ISPort=14580
 ISPasscode=YOURPASSCODE

***