I have used Direwolf in the past with an RTL-SDR dongle to receive APRS traffic, so I thought I'd give it a go with a physical radio, a Tait 8105. Unfortunately it's a UHF model, but the setup and programming is identical between the UHF and VHF version.
To control the handle the audio and PTT, I am using a modified CM108 USB sound fob.
Programming the Tait 8105 for APRS useThe following assumes you have some experience with programming the Tait 8100 series radios, but the CPS is fairly self explanatory and includes an excellent help section. Use the following screenshots as a guide.
You will need to configure a channel on the radio for APRS, including the appropriate frequency, bandwidth and power. Rx / Tx Sig and Squelch can be ignored as we wont be using them. As I'm using a UHF radio for testing, I'm using 433.800MHz, but you should update this to 144.800MHz for VHF. As far as I know, there's little if any APRS traffic on UHF in the UK.
|Channel Summary (Click to expand)
|Channel Detailed View (Click to expand)
It's necessary to configure external PTT 1 to use audio supplied to the Tap In point on the back of the radio as its audio source:
The Tait 8100's have a very flexible programmable I/O for both control and audio. We need to expose the audio on the radio to the auxiliary connector on the rear, and be able to active the PTT. Direwolf recommends disabling squelch in order to be able to decode APRS packets reliably, so we tap the audio from a point before the squelch is applied.
|Programmable IO - Audio (Click to expand)
|Programmable IO - Digital (Click to expand)
Modifying the CM108 USB Fob
I've documented how to convert the CM108 USB Fob for use with a radio, in another blog post available here
Configuring the system
Before getting started its necessary to remove and install some dependencies.
Change to root:
Tweaking the audio (Optional)
Whilst testing, I found the audio was a little low. Its rumoured the audio from the CM108B chip is lower than that of the original CM108, so I've added a 'preamplifier' to Linux's sound driver, ALSA. I'm not entirely sure if this is necessary or even works, and its especially important not to overdrive the audio when transmitting APRS, but here it is for posterity.
Edit asound.conf to add a preamp:
Add the following:
You should then be able to adjust the 'boost' using the following command:
Downloading and compiling hamlibTo get the latest and greatest hamlib, its necessary to compile it from the source. It's a slow process, but fairly straightforward.
Change directory, and download the source for hamlib:
Then compile and install it by running each of the commands below sequentially. (Note, each make operation will take a long time. Now's a good time to grab a cup of tea):
Downloading and compiling direwolfAgain, to get the latest and greatest version its necessary to compile it from source.
Download the source for direwolf, then compile and install it:
Open the Makefile for editing:
Uncomment the following lines:
Open .bashrc for editing:
Add the following line:
Then reload it:
Then compile and install direwolf:
Detecting the CM108 'PTT'The CM108 chip has several GPIOs intended for use with Volume buttons and status LEDs. The modified fob uses these GPIOs for signalling PTT and COS (Not used for APRS). Before we can use them, we need to detect the CM108.
First of all you will need to create a script to detect the device.
Change into your home directory and edit a file:
Add the following:
The script should add something like the following:
Testing the CM108To test the PTT function on the PTT you need to operate two programs simultaneously. To do so, I use a program called https://www.gnu.org/software/screen/ that allows multiple 'windows' inside a linux terminal.
Start rigctrld, using the correct path for your USB fob. For my system its /dev/hidraw0:
Press Ctrl + a + c to open a new screen window, then open rigctl:
Switch the PTT on and off by entering T 1 and T2 respectively. Enter Q to exit. If you have a radio connected and another radio monitoring, you should hear the radio key up.
To kill screen and the running processes, enter ctrl + a + \
Automating the initialisation of the CM108 at bootLets create a script to automate this process:
Enter the following:
Create a systemd service file:
And enter the following:
Make it executable:
Reload the service and enable the cm108-init service:
Nows a good time to reboot:
Once the Pi has rebooted, reconnect to the terminal.
Configuring DirewolfNow create a config file for Direwolf:
Enter the following, editing the relevant sections to match your station and requirements:
- WB2OSZ - Direwolf Author, most of the above is from the excellent documentation they supply alongside Direwolf itself.