Tim's Remote CW Station Operation 'On a Shoe-string'

This page details how I operate my HF station remotely for CW without spending any money besides building 2 ARM-based CW keyer boxes. The CW keying solution is jitter-free regardless of network latency and has local side-tone generation.

G0ETP_Remote_Radio Block Diagram

In essence, the system comprises:

  • A remote CAT control path based on rigctl
  • A receive audio path delivered as an RTP stream using gstreamer libraries
  • A remote CW keying mechanism based on (homebrew) hardware keyers
  • I looked into using the 2 PC's themselves to provide the CW keying solution but I was unable to get an acceptable latency performance at either end (PC's dont really have real-time capable GPIO the way they used to in the good-old parallel and serial-port days, plus the OS (Linux or Windows) will add latency of its own unless you delve into writing device-drivers. The keyer boxes contain low-cost ARM-boards that can do real-time GPIO with ease. See the CW Keyer project here.

    Remote Station Hardware

    This consists of a Linux desktop PC (but could be a Raspberry Pi), an HF radio transceiver (TS340S) and an instance of G0ETP's IAMBIC CW keyer (a stand-alone box based on an STM32 ARM board and supports remote keying from another G0ETP keyer; see separate project page TODO). The antenna system has a remote auto ATU but this is not a cruicial part of the remote setup.

    The radio Tx and Rx audio are connected to the PC's line out and line in ports via 1:1 audio isolation transformers. The radio CAT port is connected to a PC USB port via a 5V FTDI FT232 USB-Serial cable. (Note that in order for an FT232 cable to work with the TS450S, it has to be configured so that the polarity of TXD, RXD, CTS and RTS are all inverted. Use the (Windows) FT_PROG utility from FTDI to do this.) CAT operation is at 4800 baud with hardware handshaking enabled and 2 stop bits.

    The G0ETP keyer is connected to a PC USB port where it gets power and provides a virtual serial port (/dev/ttyACM0). This keyer can be configured by running a serial terminal (such as minicom) on the remote station PC. This keyer is also remote-keyable from another G0ETP keyer located at the operating station, using a text protocol that is broadly similar to CWCom.

    Operating Station Hardware

    The operating station consists of a Linux desktop PC (but could be a Raspberry Pi), a second instance of G0ETP's IAMBIC CW keyer and your choice of straight or paddle key.

    Principle of Operation

    Everything is controlled from the operating station PC through a number of Bash shell scripts which you can find here. It is worth putting the Bash scripts in a folder that is included in your $PATH to make them easy to launch. (I generally have a folder called ~/Scripts on each of my PCs and add a clause to my ~/.profile script to include this folder in my $PATH.)

    You must be able to access the remote PC from the operating PC using SSH: The remote PC must therefore have SSHD enabled and whichever IP port you decide to use for SSH opened up in your IP router for external access. (You might like to add additional security here, for example install fail2ban to help limit SSH attacks coming in from the internet.) An additional IP port is required for the audio stream (2 if operating Phone) and another IP port for the CW keyer.

    Before Leaving the Remote Station

    Make sure the radio audio, CAT and keyer are all working locally (+ make sure CW VOX is enabled). If this is a first-time setup, check that all the required IP ports are open in your router. If you have chosen different IP port numbers to me then some of the Bash scripts will also need editing.

    To start up the remote session (from the operating PC):

    Step-by-step instructions are here
    Last updated: 21.3.2024