Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1...

34
Raspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 April 2017 Updates for Raspbian Jessie vs. Wheezy. Observations about USB audio adapter microphone input. Version 1.3 February 2016 In the early days of Amateur Packet Radio, it was necessary to use a “Terminal Node Controller” (TNC) with specialized hardware. Those days are gone. You can now get better results at lower cost by connecting your radio to the “soundcard” interface of a computer and running free software. The Raspberry Pi (RPi) is a good platform for running a software TNC, APRS digipeater, and IGate. Why use a larger computer and waste hundreds of watts of power? All you need to add is a USB Audio Adapter ($8 or less) and a simple PTT circuit to activate the transmitter. This document is a Quick Start guide for running Dire Wolf on the Raspberry Pi and describes special considerations where it may differ from other Linux systems. After completing the steps here, refer to the User Guide for more details on the Linux version. If using the UDRC interface, from NW Digital Radio, follow instructions here instead for initial setup. https://nw-digital-radio.groups.io/g/udrc/wiki/UDRC%E2%84%A2-and- Direwolf-Packet-Modem After that section 5 and later might be helpful.

Transcript of Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1...

Page 1: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 1

Raspberry Pi Packet TNC,

APRS Digipeater, IGate

Version 1.4 – April 2017 – Updates for Raspbian Jessie vs. Wheezy.

Observations about USB audio adapter microphone input.

Version 1.3 – February 2016

In the early days of Amateur Packet Radio, it was necessary to use a “Terminal Node Controller” (TNC) with specialized hardware. Those days are gone. You can now get better results at lower cost by connecting your radio to the “soundcard” interface of a computer and running free software.

The Raspberry Pi (RPi) is a good platform for running a software TNC, APRS digipeater, and IGate. Why use a larger computer and waste hundreds of watts of power? All you need to add is a USB Audio Adapter ($8 or less) and a simple PTT circuit to activate the transmitter.

This document is a Quick Start guide for running Dire Wolf on the Raspberry Pi and describes special considerations where it may differ from other Linux systems.

After completing the steps here, refer to the User Guide for more details on the Linux version.

If using the UDRC interface, from NW Digital Radio, follow instructions here instead for initial setup.

https://nw-digital-radio.groups.io/g/udrc/wiki/UDRC%E2%84%A2-and-Direwolf-Packet-Modem

After that section 5 and later might be helpful.

Page 2: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 2

My homebrew interface.

Left: Connections to speaker and Microphone jack of transceiver.

Middle: Interface circuit with a timer to limit transmission time.

It uses the standard 9 pin connector found on most TNCs and trackers so the same radio-specific cables can be used.

The two LEDs are for Data Carrier Detect (DCD) and the Push to Talk (PTT) signals.

The shape of the board was not intentional. It was just a scrap piece of perfboard left over from another project.

Right: Raspberry Pi.

At the top is a USB audio adapter. The current software version can handle 3 audio interfaces at the same time.

Lower left are GPIO connections for PTT and the DCD LED.

Page 3: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 3

Interface built by WB0NIU.

Fits on top of the Raspberry Pi.

Includes:

5 volt switching regulator.

RS-232 port with voltage level converter.

Analog to Digital converter to measure voltage.

Temperature sensor.

Audio transformers and PTT opto-isolator to break up ground loop between computer and radio.

Standard connector used on most TNCs so standard radio-specific cables can be used.

Page 4: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 4

1 Install Appropriate Operating System................................................................................................... 6

1.1 If operating system, other than Raspbian, is already installed. .................................................... 6

1.2 New System Setup & Configuration .............................................................................................. 7

1.3 Remove PulseAudio ...................................................................................................................... 8

1.4 Optionally enable IPv6. ................................................................................................................. 9

1.5 Make a backup of your SD card (optional).................................................................................... 9

1.6 Security Considerations ................................................................................................................ 9

1.7 For Advanced Users .................................................................................................................... 10

2 Install Dire Wolf .................................................................................................................................. 11

2.1 Install sound library. .................................................................................................................... 11

2.2 Download Dire Wolf source code ............................................................................................... 11

2.3 Optional support for hamlib ....................................................................................................... 12

2.4 Optional support for gpsd ........................................................................................................... 13

2.5 Compile and Install...................................................................................................................... 13

2.6 Get initial configuration file. ....................................................................................................... 14

2.7 First Test ...................................................................................................................................... 14

3 Interface for radio ............................................................................................................................... 15

3.1 Audio input / output ................................................................................................................... 15

3.1.1 Signalink USB ....................................................................................................................... 16

3.1.2 USB audio adapters ............................................................................................................. 16

3.1.3 Avoid USB hub for audio adapter ....................................................................................... 19

3.1.4 UDRCTM interface from NW Digital Radio ........................................................................... 19

3.2 Determine “card” number for audio device ............................................................................... 19

3.3 Transmitter PTT ........................................................................................................................... 20

3.4 Printed Circuit Board ................................................................................................................... 22

3.5 Other Alternatives ....................................................................................................................... 22

4 Configure for Radio Interface.............................................................................................................. 23

4.1 Audio Interface Device ................................................................................................................ 23

4.2 PTT Method ................................................................................................................................. 23

4.3 Optional DCD Indicator ............................................................................................................... 23

5 Run Dire Wolf application ................................................................................................................... 24

5.1 Use with client applications ........................................................................................................ 26

6 Other Common Configuration Changes .............................................................................................. 28

6.1 Automatic Startup ....................................................................................................................... 28

Page 5: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 5

6.2 Digipeater Operation .................................................................................................................. 29

6.3 Enable Beaconing ........................................................................................................................ 30

6.4 Internet Gateway (IGate) ............................................................................................................ 30

7 Receive Decoding Performance and CPU Requirements .................................................................... 32

8 Troubleshooting .................................................................................................................................. 33

8.1 USB Hubs ..................................................................................................................................... 34

8.2 Use with AX25 kissattach ............................................................................................................ 34

Page 6: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 6

1 Install Appropriate Operating System

Select a version of Linux that has hardware floating point support. Dire Wolf makes extensive use of floating point calculations. Trying to use the slower software floating point will probably result in disappointment.

The Raspbian “Wheezy” and “Jessie” distributions from http://www.raspberrypi.org/downloads are known to work with the instructions here. I haven’t tried the others and don’t know how they might differ.

The Raspbian operating system distribution comes with the gcc compiler and most required libraries pre-installed. If you use a different operating system version, you might need to install a suitable compiler and/or additional libraries.

1.1 If operating system, other than Raspbian, is already installed.

If you already have a different operating system version, verify that gcc is configured to generate hardware floating point code. Enter the “gcc –v” command and observe the result. Make sure that “--with-fpu=vfp --with-float=hard” appears in the configuration.

pi@raspberrypi:~$ gcc –v

Using built-in specs.

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.6/lto-wrapper

Target: arm-linux-gnueabihf

Configured with: ../src/configure -v --with-pkgversion='Debian 4.6.3-12+rpi1' -

-with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-

languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --

enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib

--without-included-gettext --enable-threads=posix --with-gxx-include-

dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --

enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --

enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-sjlj-

exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-

checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --

target=arm-linux-gnueabihf

Thread model: posix

gcc version 4.6.3 (Debian 4.6.3-12+rpi1)

Page 7: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 7

1.2 New System Setup & Configuration

If you installing a fresh operating system, the lessons here: http://learn.adafruit.com/ are easy to follow and will get you running quickly. They are a little out of date and show the older Wheezy version rather than Jessie.

https://learn.adafruit.com/adafruit-raspberry-pi-lesson-1-preparing-and-sd-card-for-your-raspberry-pi

This shows you how to load the operating system on to the SD memory card using a PC or Mac. 8 GB would be fine for most people. It should be about half full after a fresh installation. Note that SD memory cards will list a “class” which is the speed. I haven’t verified it experimentally but I would expect a class 10 card to provide faster operation than a class 4.

https://learn.adafruit.com/adafruits-raspberry-pi-lesson-2-first-time-configuration

It’s easier now with the Jessie version if you are using the graphical desktop. Get the menu by clicking on the raspberry in the upper left corner. From there, pick Preferences Raspberry Pi Configuration.

If you want to access it remotely, from another computer, select the Interfaces tab then enable SSH and VNC.

In my case, the RPi has a monitor, keyboard, and mouse only during initial setup. After that it is run “headless” (no monitor) in the “shack” and accessed from a PC running the VNC client software from http://www.realvnc.com

You can figure out how to set the time zone, etc. on the localization tab.

https://learn.adafruit.com/adafruits-raspberry-pi-lesson-3-network-setup

Basically plug in the Ethernet cable. You will probably want to add a DHCP reservation on your home router so the RPi gets the same IP address each time.

https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup

You don’t need to configure anything for GPIO. This is just for background information.

Page 8: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 8

Get the latest software and firmware updates.

sudo apt-get update

sudo apt-get dist-upgrade

sudo rpi-update

sudo reboot

1.3 Remove PulseAudio

The audio system on the Raspberry Pi has a history of many problems. PulseAudio didn’t work right and it was even worse the last time I struggled with it. I believe it is no longer included in the current version of Raspbian. ( See http://elinux.org/R-Pi_Troubleshooting#Removal_of_installed_pulseaudio )

Here is how to see if you have it:

$ dpkg-query -l 'pulseaudio*'

Name Version Architecture Description

======================================================================================

un pulseaudio <none> <none> (no description available)

un pulseaudio-esound-compat <none> <none> (no description available)

un pulseaudio-module-bluetooth <none> <none> (no description available)

un pulseaudio-utils <none> <none> (no description available)

You want to see all “<none>” listed under the Version column.

Remove pulseaudio if it is installed.

Note: This applies only to the Raspberry Pi, and probably other similar ARM-based systems. Pulseaudio is fine on desktop/laptop computers with x86 processors.

sudo apt-get remove --purge pulseaudio

sudo apt-get autoremove

rm -rf /home/pi/.pulse

At this point reboot to make sure you are running the latest versions.

sudo reboot

Note: I’ve never had any issues with PulseAudio on x86 (Intel type) processors. Using PulseAudio and the default audio device there works fine. It is only for the Raspberry Pi that I recommend avoiding PulseAudio because it never worked right there.

Page 9: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 9

1.4 Optionally enable IPv6.

You can enable IPv6 immediately by typing: “sudo modprobe ipv6”.

To start it up automatically after each reboot, edit /etc/modules and add a new line at the end containing “ipv6” (without the quotes).

(Doesn’t seem to be necessary for Jessie – IPv6 was already enabled.)

1.5 Make a backup of your SD card (optional)

After going through all of these steps, you might want to make a backup so you can get back to this point quickly if the memory card gets trashed. Here’s how: https://www.raspberrypi.org/forums/viewtopic.php?p=239331

1.6 Security Considerations

Raspbian has a predefined user “pi” with password “raspberry” and various privileges. It can run “sudo” (do command as super user) without a password. This is very convenient for you but also convenient for uninvited guests who might have bad intentions.

Simply changing the default password to something more obscure would go a long way towards protecting your system from intruders.

If you create another user account, and disable the predefined “pi,” you will want to mimic most of the properties of the original “pi” user. “pi” is a member of several groups which enable various privileges. In the Wheezy (7) version we find:

adm - administration

dialout – full access to serial ports

cdrom – access to CD drive

sudo – can execute any command with sudo

audio – access to sound hardware

video – access to video devices

plugdev – access to removable devices

games – access to game software

users – standard users group

netdev – can manage network interfaces

input – input devices such as keyboard and mouse

In the Jessie (8) version, we also find:

gpio – General Purpose I/O pins (Note: In Wheezy, /sys/class/gpio/… has owner root:root. In Jessie, the GPIO devices now have owner root:gpio.)

Page 10: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 10

i2c – I2C

spi - SPI

A new user account could be added like this:

sudo adduser john

sudo usermod -G adm,dialout,sudo,audio,video,plugdev,users,gpio,i2c john

At this point, “john” can use the “sudo” command but is prompted for a password. When using the GPIO pins for the push-to-talk (PTT) function, sudo might used behind the scenes to make access less restrictive. If the account is not a member of the “gpio” group, you will need to configure the new user to allow sudo without a password

Edit the sudoers file by using the command:

sudo visudo

Add a line like this near the end, substituting the desire account name.

john ALL=(ALL) NOPASSWD: ALL

I’ve seen some people mention running direwolf as root. That really shouldn’t be necessary if user permissions are set up properly. Using root access more than necessary increases the chances of damage from a misbehaving application or accidentally typing the wrong thing.

1.7 For Advanced Users

To maximize chances of success, you probably want to keep things as simple and standard as possible the first time.

After you gain more experience with Direwolf and intend to run Direwolf on a 24/7/365 basis, there are several other things that should be considered. This includes minimizing writes to the SD card, additional security through firewalls, remote management, patching, etc. All of these items are beyond the scope of this document. You can find many useful best practices listed here:

http://www.trinityos.com/HAM/CentosDigitalModes/RPi/rpi2-setup.html

Page 11: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 11

2 Install Dire Wolf

2.1 Install sound library.

Install the “libasound2-dev” package with the following command:

sudo apt-get install libasound2-dev

Failure to install this package might result in build errors like these:

/usr/bin/ld: cannot find -lasound

audio.c:…: fatal error: alsa/asoundlib.h: No such file or directory

2.2 Download Dire Wolf source code

Follow these steps to clone the git repository and checkout the desired version. Perform these steps logged in as the predefined “pi” user or some other account you created. It is recommended that you NOT use the root account. Steps requiring special privilege are prefixed by “sudo.”

cd ~

git clone https://www.github.com/wb2osz/direwolf

cd direwolf

At this point you should have the most recent stable version which is probably what you want in most cases. There are times when you might want to get a specific older version. To get a list of them, type:

git tag

You should see a list of releases and development snapshots, something like this:

1.0

1.1

1.2

1.3

1.3-beta

1.3-dev-F

1.3-dev-I

1.3-dev-K

1.4-dev-E

To select a specific version, specify the tag like this:

git checkout 1.3

In some cases, you might want the latest (sometimes unstable) development version to test a bug fix or get a preview of a new (possibly incomplete) feature that will be in the next release. In that case, type:

git checkout dev

Page 12: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 12

2.3 Optional support for hamlib

Skip this step if you don’t want to use “hamlib.”

“hamlib” can be included to provide support for additional types of PTT control.

It will need to be built from source because a Raspbian package doesn’t seem to be available at this time. Here is my “cheat sheet” version boiled down from http://hamlib.sourceforge.net/manuals/1.2.15/_rdmedevel.html

sudo apt-get install automake libtool texinfo

cd ~

git clone git://hamlib.git.sourceforge.net/gitroot/hamlib/hamlib

cd hamlib

sh autogen.sh

make

make check

sudo make install

cd ~

You should now have many new files including:

/usr/local/include/hamlib/rig.h

/usr/local/lib/libhamlib.so

When building direwolf, the compiler and linker know enough to search /usr/local/include/… and /usr/local/lib/… but when it comes time to run direwolf, you might see a message like this:

direwolf: error while loading shared libraries: libhamlib.so.2: cannot

open shared object file: No such file or directory

Edit your ~/.bashrc file and add this after the initial comment lines, and before the part that tests for running interactively.

export LD_LIBRARY_PATH=/usr/local/lib

Type this so it will take effect now, instead of waiting for next login:

source ~/.bashrc

Edit direwolf/Makefile.linux and look for this section:

# Uncomment following lines to enable hamlib support.

#CFLAGS += -DUSE_HAMLIB

#LDFLAGS += -lhamlib

Remove the # from the beginning of the last two lines.

Page 13: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 13

2.4 Optional support for gpsd

This is covered in the separate document, Raspberry-Pi-APRS-Tracker.pdf.

2.5 Compile and Install

Compile an install the application.

cd ~/direwolf

make

sudo make install

make install-rpi

You should now have these files, mostly under /usr/local, owned by root.

/usr/local/bin/direwolf The application.

/usr/local/bin/decode_aprs Utility to interpret “raw” data you might find on http://aprs.fi or http://findu.com

/usr/local/bin/tt2text /usr/local/bin/text2tt /usr/local/bin/ll2utm /usr/local/bin/utm2ll /usr/local/bin/log2gpx /usr/local/bin/gen_packets

Utilities related to APRStt gateway, UTM coordinates, log file to GPX conversion, and test packet generation.

/usr/share/applications/direwolf.desktop Application definition with icon, command to execute, etc.

/usr/share/direwolf/tocalls.txt Mapping from destination address to system type. Search order for tocalls.txt is first the current working directory and then /usr/share/direwolf.

/usr/share/direwolf/symbolsX.txt /usr/share/direwolf/symbols-new.txt

Descriptions and codes for APRS symbols.

/usr/share/direwolf/dw-icon.png Icon for the desktop.

/usr/local/share/doc/direwolf/* /usr/local/man/man1/*

Various documentation.

/usr/local/share/doc/direwolf/examples/* Sample configuration and other examples.

You should also have these files, under /home/pi, or other home directory if you used a different account.

/home/pi/Desktop/direwolf.desktop Symbolic link to /usr/share/applications/direwolf.desktop. This causes an icon to be displayed on the desktop.

/home/pi/dw-start.sh Script to start Dire Wolf if it is not running already.

Page 14: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 14

2.6 Get initial configuration file.

If this is the first time, you are installing Dire Wolf perform this step:

make install-conf

When upgrading from an earlier version, you will probably want to skip this step because it will wipe out your earlier configuration file.

This step should have copied the initial configuration file to the home directory, /home/pi.

/home/pi/direwolf.conf Configuration file. Search order is current working directory then the user’s home directory.

2.7 First Test

Go to your home directory and try to run “direwolf.”

cd ~

direwolf

You should see something like this, because we have not yet configured it for using an audio device.

Dire Wolf version …

Audio device for both receive and transmit: default

Could not open audio device default for input

No such file or directory

Pointless to continue without audio device.

We will perform the necessary configuration in a later step.

Page 15: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 15

3 Interface for radio

APRS, or other packet radio, operation requires connections between your transceiver and computer.

(a) Received audio from receiver.

This can be very simple. All you need is a cable from the speaker of your radio to the computer’s microphone or line in. Some people like to use audio isolation transformers, to avoid issues with AC hum an RFI, but I never found this to be necessary.

(b) Transmit audio to transmitter.

Audio output from the computer goes to the microphone input of your transceiver. A direct connection might be acceptable in some cases but typically you would want a trim pot to decrease the signal level and a capacitor (perhaps around 0.1 µF) to block DC.

(c) Push to Talk (PTT) signal to activate transmitter.

Traditionally, this has often been with one of the control lines of an RS-232 serial port. It would be possible to use a USB-to-serial adapter but there is a better way. The Raspberry Pi has a bunch of general purpose input output (GPIO) pins.

If you use a VOX circuit, to turn on transmitter automatically when audio is present, no PTT connection would be necessary. You can also ignore the warning message about PTT not being configured.

3.1 Audio input / output

The Raspberry Pi has built-in audio output but no audio input.

You can get a list of audio output devices with the “aplay -l” (that’s lower case L option) command.

pi@raspberrypi:~$ aplay –l

**** List of PLAYBACK Hardware Devices ****

card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]

Subdevices: 8/8

Subdevice #0: subdevice #0

Subdevice #1: subdevice #1

Subdevice #2: subdevice #2

Subdevice #3: subdevice #3

Subdevice #4: subdevice #4

Subdevice #5: subdevice #5

Subdevice #6: subdevice #6

Subdevice #7: subdevice #7

card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]

Subdevices: 1/1

Subdevice #0: subdevice #0

Page 16: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 16

You can get a list of audio input devices with the “arecord -l” (again lower case L option) command:

pi@raspberrypi:~$ arecord –l

**** List of CAPTURE Hardware Devices ****

There aren’t any! It will be necessary to add some sort of sound input device.

3.1.1 Signalink USB

The Tigertronics SignaLink USB is a pricey solution but easy because it contains all of the interface circuitry. It includes a VOX circuit to key the transmitter when transmit audio is present. Be sure to turn the “DLY” delay control completely counter-clockwise to minimize the time the transmitter is kept on after the audio has ended.

Don’t try using the SignaLink USB for 9600 baud! It doesn’t have enough bandwidth. See 9600 section of the User Guide for more details.

3.1.2 USB audio adapters

A cheap USB audio adapter can also be used but the drivers and firmware can be little problematic.

Recommended:

I’m currently using this Syba adapter http://www.amazon.com/gp/product/B001MSS6CS The sticker on the package indicated it has a CMedia HS100 chip (see http://www.cmedia.com.tw/ApplicationIndex/C1Serno-1/C2Serno-4.html) but “lsusb” reports:

Bus 001 Device 004: ID 0d8c:0139 C-Media Electronics, Inc.

The C-Media product id 0139 indicates it’s the CM108AH chip. The HS100 has a product id of 013C.

When I bought another one more recently, “lsusb” reports:

Bus 001 Device 006: ID 0d8c:0008 C-Media Electronics, Inc.

SignaLink USB Raspberry Pi Transceiver

T USB Audio

& PTT

Page 17: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 17

So it appears to have a different type of chip inside. This also works fine.

Avoid:

This one looks interesting because it has a short cable which provides more flexibility in the physical arrangement of the various components, specifically using multiple devices at the same time.. http://www.adafruit.com/product/1475

“lsusb” reports this:

Bus 001 Device 005: ID 0d8c:000c C-Media Electronics, Inc. Audio Adapter

This appears to be the CM108 or CM109 chip. According to the CM108 datasheet, the product id can vary from 0008 to 000f and is programmable by the MSEL and MODE pins. The CM109 datasheet says the same thing so I don’t know how you can tell them apart.

It works fine on Windows 7 but I wasn’t able to get audio input working properly on the RPi with the December 2014 firmware. I’d like to hear from anyone that is successful. (Update, September 2015. This still doesn’t work properly with the RPi. All audio samples are 0. Eventually, it might work with a newer driver.)

There is a report of this one spewing out a lot of RFI at 144 MHz so you might want to avoid it even after a properly working driver is available.

Here is a suggested circuit:

Page 18: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 18

Some older hand held radios use a single pin for microphone audio and PTT. In this case, the jumper is installed so the Mic input is pulled to ground with a 2.2k resistor.

I like to use a 9 pin female D connector so it is compatible with most other traditional TNCs (e.g. KPC-3 Plus) and trackers. Having one common connector makes it easy to mix-n-match different combinations of TNCs and Radios. Preassembled cables are available for different types of radios from vendors such as Byonics.

o Pin 1 Transmit audio to radio Microphone input. o Pin 3 Ground for Push to Talk (PTT). o Pin 5 Receive audio from radio speaker, etc. o Pin 6 Ground.

3.1.2.1 Observations about the microphone input

Here is a sample diagram for what you might find inside of one of these USB audio adapters: http://www.qsl.net/om3cph/sb/CM108_DataSheet_v1.6.pdf See second to last page.

It shows the microphone jack tip capacitively coupled to the CM108 chip with 1 µF. The ring has a microphone bias voltage.

Here is another that is just the opposite: http://www.hardwaresecrets.com/datasheets/CM109.pdf The tip is a DC bias voltage and the audio input is on the ring.

This http://www.repeater-builder.com/voip/pdf/cm119-datasheet.pdf has both on the ring and the tip is not connected.

I guess you just need to try both and see what works. If you are not getting any audio input, or it is extremely weak – only from crosstalk – that might be the problem. The printed circuit board, mentioned a couple pages later, has a jumper so you can easily try either one.

Both the Syba product mentioned above, and the one from Adafruit, have the tip and ring connected together. They have an open circuit voltage of 4.51 volts which drops down to about half that when connected to ground through a 1.5 k resistor.

The lesson, here, is that you should use a 3.5 mm stereo (TRS) plug, not

a mono (TR) plug for the microphone input. If you use a mono cable, the longer sleeve on the plug might short the microphone input to ground.

Finally, you might want to stick a 1 µF capacitor between the receive audio and the microphone input, due to the DC bias, but I never found it to be necessary.

Page 19: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 19

3.1.3 Avoid USB hub for audio adapter

Avoid putting a USB hub between the Raspberry Pi and the USB Audio adapter. I’ve received reports that exactly the same configuration works fine with the direct connection and a significant number of audio samples are lost when going through a hub.

3.1.4 UDRCTM interface from NW Digital Radio

The UDRC is a high performance soundcard originally developed for digital voice but it can be used for other modes. It can use higher audio sampling rates making it ideal for 9600 baud and above. The 6 pin mini-DIN radio connector matches the “data” connectors on many transceivers, making hook up very easy. For details, see https://nw-digital-radio.groups.io/g/udrc/wiki/UDRC%E2%84%A2-and-Direwolf-Packet-Modem#Basic-Configuration

3.2 Determine “card” number for audio device

After plugging in a suitable USB audio interface, you should see something like this, in response to the “aplay –l” and “arecord –l” commands:

pi@raspberrypi:~$ aplay –l

**** List of PLAYBACK Hardware Devices ****

card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]

Subdevices: 8/8

Subdevice #0: subdevice #0

Subdevice #1: subdevice #1

Subdevice #2: subdevice #2

Subdevice #3: subdevice #3

Subdevice #4: subdevice #4

Subdevice #5: subdevice #5

Subdevice #6: subdevice #6

Subdevice #7: subdevice #7

card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]

Subdevices: 1/1

Subdevice #0: subdevice #0

card 1: CODEC [USB Audio CODEC], device 0: USB Audio [USB Audio]

Subdevices: 1/1

Subdevice #0: subdevice #0

pi@raspberrypi:~$ arecord –l

**** List of CAPTURE Hardware Devices ****

card 1: CODEC [USB Audio CODEC], device 0: USB Audio [USB Audio]

Subdevices: 1/1

Subdevice #0: subdevice #0

Page 20: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 20

The built-in (output only) interface will normally be card 0 unless you did something to change the order. The additional USB audio adapter will typically be card 1, as seen in the example above. If you see a different number, you will have to modify a later step when we put the card number in the configuration file.

3.3 Transmitter PTT If you want to transmit, some method is needed to activate the transmitter push-to-talk (PTT) function. Possible alternatives include:

RTS control line of serial port. Possible, but I can’t imagine why anyone would want to do this when there are better ways.

VOX operation where transmitter is activated by transmit audio signal. The SignaLink USB uses this technique. (Homebrew circuit example: https://sites.google.com/site/kh6tyinterface/) The VOX built into transceivers are designed for voice and keep the transmitter on much too long after the audio has stopped. It’s not a good idea to send a dead carrier because other TNCs will think the channel is clear and start transmitting. The User Guide has a detailed explanation.

Use one of the General Purpose I/O (GPIO) pins.

CAUTION! The general purpose input output (GPIO) pins are connected directly to the CPU chip. There is no buffering or other protection. The interface uses 3.3 volts and will not tolerate 5 volt signals. Static discharge, from careless handing, could destroy your Raspberry Pi.

There are many GPIO pins. How would you choose an appropriate one? These are my suggestions for the best choices. The others have special functions such as UART, SPI, PWM, or I2C. A few others changed positions between board revisions 1 & 2 which could cause confusion.

P1-11 GPIO 17

P1-15 GPIO 22

P1-16 GPIO 23

P1-18 GPIO 24

P1-22 GPIO 25

The A+, B+, model 2, and model 3 have a larger connector with additional GPIO pins. Any of them would be suitable:

P1-29 GPIO 5

P1-31 GPIO 6

P1-32 GPIO 12

P1-33 GPIO 13

Page 21: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 21

P1-35 GPIO 19

P1-36 GPIO 16

P1-37 GPIO 26

P1-38 GPIO 20

P1-40 GPIO 21

Here is a suggested circuit using a CMOS 555 timer (LMC555, TLC555, ICM7555, etc.) to limit transmissions to about 10 seconds. Don’t try using the original 555 because it needs a minimum of 4.5 volts and we have only 3.3 here. The time can be increased by making the 10 µF capacitor larger. It’s roughly 1 second for each µF.

You could get by with only a resistor and transistor but a software failure could cause the transmitter to be stuck on, jamming the radio channel, annoying other people, and possibly damaging the transmitter from overheating.

Finally, put a command like this in the configuration file with the actual I/O signal being used.

PTT GPIO 25

One person reported that the timeout did not work properly and the problem was solved by adding a 0.01 µf capacitor from pin 4 to ground. https://groups.yahoo.com/neo/groups/Raspberry_Pi_4-

Page 22: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 22

Ham_RADIO/conversations/messages/4737 I suspect this was caused by RF, from the transmitter, getting into the digital circuitry.

3.4 Printed Circuit Board

Here is a design for a printed circuit board https://github.com/jaymzx/RPi-WD-Packet-Interface

The README.md file contains a link to where you can order them.

Note that it has jumpers available so that receive audio can be sent to either the tip or the ring of the microphone input of the USB Audio adapter.

3.5 Other Alternatives

The KF5INZ “Easy Digi” interface http://www.aracc.org/EASYDIGI!.pdf keeps popping up in discussions of interfaces. It uses audio transformers and an opto-isolator for PTT to break up ground loops. This could help avoid issues with AC hum and RFI.

Audio transformers are fine for 1200 baud but should be avoided if you want to use 9600 which requires more audio bandwidth. See 9600 section of the User Guide for more details.

Page 23: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 23

4 Configure for Radio Interface

We need to make a couple simple changes to the configuration file. Change to your home directory.

cd /home/pi

You should find a file called “direwolf.conf.” Modify it with your favorite text editor, as explained in the following steps.

4.1 Audio Interface Device

We previously determined the “card” number for the desired audio interface. Typically this will be 1 unless you did something to change the ordering.

Look in the “direwolf.conf” file for a line like this:

# ADEVICE plughw:1,0

Remove the “#” from the beginning of the line. If the card number, found in the earlier step, is not 1, use that number instead.

4.2 PTT Method

Look in “direwolf.conf” for a line like this:

# PTT GPIO 25

Assuming you are using GPIO 25 for the PTT control, simply remove the “#” from the beginning of the line. If using some other PTT method, refer to the User Guide for a discussion of other possibilities.

4.3 Optional DCD Indicator

If you would like a data carrier detect (DCD) LED to light up when it looks like a signal is present, add a line like this:

DCD GPIO -24

This means drive GPIO 24 to ground for signal present. Connect an LED like this:

Pin 18 (GPIO 24) ---- (cathode) LED (anode) ---- 270 ohm resistor ---- 3.3 volts

If using the printed circuit board mentioned earlier, use the opposite polarity because we want a positive signal to turn on the LED.

DCD GPIO 24

Page 24: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 24

5 Run Dire Wolf application

Start up the application with the desktop icon or from the command line:

direwolf

Just run it as an ordinary user. There is no need to run it as root.

Typical results will look something like this:

Page 25: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 25

Let’s examine each section. On the first line, we have the application version. Next we have confirmation of the audio device being used. The modem is configured for standard 1200 baud operation.

Dire Wolf version 1.2

Audio device for both receive and transmit: plughw:1,0

Channel 0: 1200 baud, AFSK 1200 & 2200 Hz, F, 44100 sample rate.

This is a summary of the interfaces available for client applications.

Use -p command line option to enable KISS pseudo terminal.

Ready to accept KISS client application on port 8001 ...

Ready to accept AGW client application 0 on port 8000 ...

This shows that the station is operating as an Internet Gateway and has successfully connected to a server. A URL is provided to check on the server status. “[ig]” at the beginning of the line indicates a response from the IGate server.

Now connected to IGate server noam.aprs2.net (2607:fc18:0:3::114)

Check server status here http://[2607:fc18:0:3::114]:14501

[ig] # aprsc 2.0.14-g28c5a6a<0x0d><0x0a>

[ig] # logresp WB2OSZ-5 verified, server T2CMH<0x0d><0x0a>

This is a beacon, identifying the station. “[0L]” means it is transmitting on radio channel 0 at low priority. Notice that transmitted lines are displayed in magenta.

[0L] WB2OSZ-5>APDW11,WIDE1-1,WIDE2-1:!4237.14NS07120.83W#

PHG7140Raspberry Pi digpeater

Here we are receiving a nearby station directly. “[0]” means it was heard on radio channel 0. Received signals are in green.

N5PZ audio level = 5 [NONE]

[0] N5PZ>T2SW9T,WIDE1-1,WIDE2-1:`c-9n5$>/'"4R}|!3&9'?|!wRB!|3

What to all those strange characters mean? The next few lines contain the decoded information in human readable form. In this example, the last line is telemetry data.

MIC-E, normal car (side view), Byonics TinyTrack3, In Service

N 42 37.9454, W 071 17.2936, 25 MPH, course 108, alt 194 ft

Seq=18, A1=479, A2=576

This packet is a candidate for digipeating so we retransmit it. “[0H]” means it is being transmitted on channel 0. Digipeated packets go out at a higher priority. Notice how “WIDE1-1” was replaced by “WB2OSZ-5*” so the actual path taken can be determined.

[0H] N5PZ>T2SW9T,WB2OSZ-5*,WIDE2-1:`c-9n5$>/'"4R}|!3&9'?|!wRB!|3

Page 26: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 26

Now we hear another station. But this time it is not direct. We are actually hearing a digipeater. It is not a candidate for digipeating because the via path has been all used up. In this case, the last line is the comment.

Digipeater W1MHL audio level = 9 [NONE]

[0] N2PGD-14>APX205,N1HRK-15,WIDE1,W1MHL*,WIDE2:=4149.61N/07123.98W#

PHG2200XASTIR-Linux<0x0d>

Position, DIGI (white center), Xastir, 4 W height=40 0dBi omni

N 41 49.6100, W 071 23.9800

XASTIR-Linux

Now we hear the first station again, but from a digipeater, not directly. The digipeater did not insert its own call so we don’t know who retransmitted the packet.

Digipeater WIDE1-1 audio level = 7 [NONE]

[0] N5PZ>T2SW9T,WIDE1-1*,WIDE2-1:`c-9n5$>/'"4R}|!3&9'?|!wRB!|3

MIC-E, normal car (side view), Byonics TinyTrack3, In Service

N 42 37.9454, W 071 17.2936, 25 MPH, course 108, alt 194 ft

Seq=18, A1=479, A2=576

This is also a candidate for digipeating because “WIDE2-1” has not been used up yet. However, we transmitted this same packet within the past 30 seconds so the duplicate is dropped.

Digipeater: Drop redundant packet.

That’s all you will see. No flashy graphics. No maps. No user interaction. But loads of valuable information for monitoring activity and troubleshooting problems.

Dire Wolf is just a replacement for a TNC. To do more interesting things, you will need an application such as APRSISCE/32, UI-View32, Xastir, APRS-TW, YAAC, SARTrack, RMS Express, etc.

5.1 Use with client applications

Client applications can run on different computers and communicate with Dire Wolf over your local network. For example, you might have a Raspberry Pi in your “shack,” in a cold damp basement, connected to your radio equipment. You might want to use a client application (such as APRSIS32, YAAC, or Xastir) on a laptop in a more comfortable location, perhaps next to the pool or fireplace. Here is an example of how you could configure APRSISCE/32 in this situation.

From the Configure menu, pick Ports New Port…

Choose type of AGW and give it a meaningful name.

Page 27: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 27

Click on Create and pick port type of TCP/IP.

Enter the IP address of the Raspberry Pi, and the default port of 8000.

Page 28: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 28

6 Other Common Configuration Changes

6.1 Automatic Startup

You might want your TNC / application server / digipeater to start up automatically after a reboot. This often causes confusion as there are many ways to do this. You will find some discussions in the forums but here is one solution which should be usable for many use cases.

The important thing to remember is that direwolf writes a lot of information to “stdout.” This information is valuable and really needs to go somewhere. If you simply try starting direwolf from /etc/rc.local or via a script in /etc/rc2.d, you will probably be disappointed. I also think it is better to run direwolf as an ordinary user, rather than root, so there is less chance of damaging your system if something goes wrong.

(a) If you are running a graphical desktop, the recommended way to start direwolf is to create a terminal window and run direwolf inside of that window. Examples:

/usr/bin/xterm -bg white -fg black -e "direwolf" &

or

/usr/bin/lxterminal -t "Dire Wolf" -e "direwolf" &

(b) If you are running a “lite” version of Linux without the graphical desktop, popping up a GUI window is not an option and will give Xsession errors. Even if a graphical desktop is available, you still might want to use alternative solutions like the “screen” tool in detached mode so you can re-connect to Direwolf and see what happened with only a text terminal (locally, via an SSH connection, etc).

screen -d -m -S direwolf "direwolf"

If the “screen” utility is not already installed, add it with “sudo apt-get install screen” on Debian-based distributions.

Later you can use “screen -list” to get a list of sessions and attach to an existing session with “screen -D -r direwolf” You can again "detach" from the Direwolf screen session with control-a then “d” at any time and direwolf will continue to run.

A script is provided to handle the most common cases. If you followed the installation steps above, you should have a file named dw-start.sh in your home directory. My suggestion is to run this script from cron so if direwolf stops running for any reason, it will be automatically restarted. Use the “crontab –e” command and add a line like this, substituting you own user name if it is not pi:

* * * * * /home/pi/dw-start.sh >/dev/null 2>&1

The line above will run the /home/pi/dw-start.sh script once per minute. Dire Wolf will be started automatically if not running already. If a previous instance of Dire wolf crashes, or is terminated for any other reason, it will be restarted within a minute. A log of restarts can be found in /tmp/dw-start.log.

Page 29: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 29

dw-start.sh will try to determine if you have a graphical desktop and select either GUI or CLI mode. You can override this by looking for “RUNMODE=AUTO” near the top of the dw-start.sh file and modifying as described in the script's comments.

6.2 Digipeater Operation Edit the /home/pi/direwolf.conf file and look for a section like this:

# Station identifier for this channel.

# Multiple channels can have the same or different names.

#

# Naturally it must be up to letters and digits with an optional ssid.

# The APRS specification requires that it be upper case.

#

#

# Example (don't use this unless you are me): MYCALL WB2OSZ-5

#

MYCALL NOCALL

Change “NOCALL” to your ham radio call and optional SSID. Next, look for a section like this:

#-------------------------------------------------------

# ---------- Example 1: Typical digipeater ----------

#-------------------------------------------------------

#

# For most common situations, use something like this by removing

# the "#" from the beginning of the line.

# To disable digipeating, put # at the beginning of the line.

#

#

#DIGIPEAT 0 0 ^WIDE[3-7]-[1-7]$ ^WIDE[12]-[12]$

Remove the “#” character from the beginning of the last line shown above. It is necessary to stop and restart the application to notice configuration file changes. Here is an example of what you should see:

Dark green: Information about the station we heard. Either the originating station or a digipeater.

Page 30: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 30

Green: Raw received data. Notice that the digipeater field contains “WIDE1-1.” Blue: An explanation for troubleshooting. The destination (APWW10) is used to determine the type of system generating the signal. Magenta: This is the re-transmitted packet. Notice that the digipeater field now contains “WB2OSZ-5*.” The “*” indicates that it has been used up and won’t be digipeated again.

6.3 Enable Beaconing

Be sure that MYCALL has been set as in previous step.

Look for a section like this in direwolf.conf file.

# PBEACON delay=0:15 every=30 overlay=S symbol="digi" lat=42^37.14N lon=071^20.83W

power=50 height=20 gain=3 comment="Chelmsford MA" via=WIDE1-1,WIDE2-1

# PBEACON delay=10:15 every=30 overlay=S symbol="digi" lat=42^37.14N lon=071^20.83W

power=50 height=20 gain=3 comment="Chelmsford MA"

# PBEACON delay=20:15 every=30 overlay=S symbol="digi" lat=42^37.14N lon=071^20.83W

power=50 height=20 gain=3 comment="Chelmsford MA"

#

# Modify this for your particular situation before removing

# the # comment character from the beginning of the lines above.

#

Remove the “#” comment character from the beginning of the “PBEACON” lines. Make necessary adjustments to latitude, longitude, comment, etc. These options, and more, are described in the User Guide.

Note that each position beacon command must be on a single line. Multiple lines are shown above due to page width limitations.

6.4 Internet Gateway (IGate)

Dire Wolf can serve as a gateway between the radio network and servers on the Internet. This allows information to be retrieved from locations such as http://aprs.fi or http://findu.com. Information can optionally be relayed from the servers, through your station, and on to the radio.

First you need to specify the name of a Tier 2 server. The current preferred way is to use one of these regional rotate addresses:

noam.aprs2.net - for North America

soam.aprs2.net - for South America

euro.aprs2.net - for Europe and Africa

asia.aprs2.net - for Asia

aunz.aprs2.net - for Oceania

Page 31: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 31

Each name has multiple addresses to achieve load balancing and resiliency. Visit http://aprs2.net/ for the most recent information. You also need to specify your login name and passcode. For example:

IGSERVER noam.aprs2.net

IGLOGIN WB2OSZ-5 123456

Contact the author if you can’t figure out how to generate a passcode for your ham radio call.

If you want to transmit information from the servers, you need to specify the radio channel and the via path for the packet header. Example:

IGTXVIA 0 WIDE1-1,WIDE2-1

For more details about setting up an IGate station, see the related document:

Successful-APRS-IGate-Operation.pdf

Page 32: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 32

7 Receive Decoding Performance and CPU Requirements

As Dire Wolf evolved over the years, a lot of effort has gone into continual improvement of the decoder performance. How do we measure this in an objective repeatable fashion? The de facto standard is the TNC Test CD from WA8LMF. It contains recordings of almost 26 minutes with more than 1000 packets.

Rather than running it real-time, the CD was “ripped” to files so we can process it quicker and easier. The included “atest” application has the same decoder that is in Dire Wolf, it’s just repackaged to read from an audio file instead of the soundcard.

In version 1.2 we tried something new to compensate for the imbalance between the two audio tones. The separate document, “A Better APRS Packet Demodulator, Part 1, 1200 Baud” explains this in detail. The higher performance demodulators unfortunately take more CPU time to squeeze a few more frames out of the noise. For a desktop/laptop computer, this is only a very small fraction of the available processing power.

For the “E+” demodulator, Dire Wolf is taking about 2/3 of the CPU capacity, of a model B, just to receive. Additional bursts of processing are required to transmit and communicate with attached applications. The operating system needs to talk to the soundcard and other devices. It can’t keep up.

We add a new option, to divide the audio sample rate by the specified integer. The amount of CPU power required drops dramatically without too much impact on the demodulator performance. On the command line it is “-D n” and in the confugration file, it is “/n” on the MODEM command.

Decoder atest options Packets decoded

from Track 2

Seconds to process

Comments

E -P E 988 894 Default rate.

E -P E -D 2 985 348 Divide audio sample rate by 2.

E -P E -D 3 977 237 Divide audio sample rate by 3.

E+ -P E+ 1008 981 Default rate.

E+ -P E+ -D 2 1005 401 Divide audio sample rate by 2.

E+ -P E+ -D 3 1006 275 Divide audio sample rate by 3. ** New default for version 1.2. **

E+ -P E+ -D 4 1001 231 Divide audio sample rate by 4.

You can change it, individually per channel in the configuration file. On a Raspberry Pi, the audio sample rate is now divided by 3 by default. The following are equivalent in version 1.2.

MODEM 1200 MODEM 1200 E+ MODEM 1200 E+ /3

Page 33: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 33

8 Troubleshooting

First check the audio gain on your input device. I’ve always found it necessary set it at the maximum or fairly high. In one case, with a new USB audio adapter, the initial microphone input gain was set to zero.

Different systems may have different applications for configuring the sound system. If using “alsamixer” follow this procedure:

Press F6 to select the “sound card.” Use up and down arrows and press Enter.

Press F4 to set the Capture level. Use up arrow to set level to the max or fairly high.

Even if you crank up the gain to maximum, the input might be muted. Notice the “MM” here:

This means the input is muted. Press the “M” key to unmute. You might not be able to get the audio level input low enough if Auto Gain Control is enabled on the soundcard input. If you see something like this:

Be sure the Auto Gain Control shows “MM” which means disabled. If it shows “00,” select it with the right/left arrow keys and press the “M” key so it displays “MM."

Page 34: Raspberry Pi Packet TNC, APRS Digipeater, IGate - GitHub · PDF fileRaspberry Pi APRS Page 1 Raspberry Pi Packet TNC, APRS Digipeater, IGate Version 1.4 – April 2017 – Updates

Raspberry Pi APRS Page 34

Did you run apt-get and rpi-update to get the latest software and firmware? After many months of aggravation, it finally worked right after an update mid October 2013.

More tips for troubleshooting USB audio adapters can be found here:

https://learn.adafruit.com/usb-audio-cards-with-a-raspberry-pi/instructions

8.1 USB Hubs

Avoid putting a USB hub between the Raspberry Pi and the USB Audio adapter. I’ve received reports that exactly the same configuration works fine with the direct connection and a significant number of audio samples are lost when going through a hub. With direct connection this was observed:

ADEVICE0: Sample rate approx. 44.1 k, 0 errors, audio level CH0 …

With the hub in the middle, numbers like this were seen:

ADEVICE0: Sample rate approx. 42.7 k, 0 errors, audio level CH0 … ADEVICE0: Sample rate approx. 42.8 k, 0 errors, audio level CH0 …

Some complain about these annoying messages but they provide valuable debugging information.

8.2 Use with AX25 kissattach

Sometimes kissattach has an issue with the Dire Wolf pseudo terminal. This shows up most often on Raspbian but sometimes occurs with other versions of Linux.

kissattach: Error setting line discipline: TIOCSETD: Device or resource busy

Are you sure you have enabled MKISS support in the kernel

or, if you made it a module, that the module is loaded?

Consult the Linux AX25 section of the User Guide for more details and work-arounds.