Tested on openSUSE
Using a computer to operate "digital modes" on air is a common use. These instructions guide through the general setup of connecting a HF transceiver to a computer and the necessary system setup to use FLDigi to get on the air.
These instructions are tailored to using FLDigi. However, the overall process is similar for all digital modes and soundcard radio setups.
fldigi is one of the most commonly used programs for using amateur radio digital modes, especially on HF. It has very comprehensive support for HF digital modes, as well as support for controlling a large number of transceivers (rigs) over serial (this process is often referred to as CAT).
The general process involves:
- Establishing a serial connection to the transceiver for CAT
- Establishing an audio connection to the transceiver and adjusting levels
- Setting up some link for push-to-talk (PTT) on the transceiver. There are a number of solutions for this step
- Configuring FLDigi to use the above connections
FLdigi, as well as CAT dependencies hamlib and FLRig, are provided in the main openSUSE repositories. They can be installed with:
# zypper in hamlib fldigi
Serial Connection for CAT
NOTE: CAT is very convenient, and as mentioned later, many transceivers work quite well when using CAT for PTT. However, for a quick-and-dirty digital modes setup, it isn't strictly necessary.
Overall, there are no real special concerns when connecting a radio transceiver compared to connecting any other serial device.
CAT operates using a proprietary (though almost always well-documented, and often quite similar between manufacturers) protocol over a standard asynchronous serial connection. CAT setup essentially consists of connecting the radio to a serial port on the computer, finding out which port it is on and configuring the speed (depending on the radio, this can be fixed to one or just a few baud rates, or it may be in a menu on the radio with quite a few options), then finding and configuring host-side support for the particular transceiver.
Many transceivers, even modern rigs, use a standard DB-9 serial connectors. However, due to the rising omission of RS232 serial ports on modern computers, it may be necessary to use a USB-to-Serial adapter. These can be obtained from many different vendors for a very low price, but ensure that it is voltage-compatible with your radio - standard RS232 is actually a 12v signaling system. Certain adapters, in particular those intended for use with Ethernet switches, may use a DB-9 connector, but with 5v voltage levels. It is possible that the radio itself may be tolerant of this, but research ahead of time may save confusion (or worse) later. When using an adapter, dmesg will come in handy to find the TTY device node (see below).
Some transceivers will instead use a USB-to-serial adapter, and simply connect to the computer over USB. In this case, the command dmesg can be run after connecting the (powered-on) radio to the computer, and the last few lines of the dmesg output should point to the correct TTY device. Additionally, a radio with built-in USB-to-serial is more likely to initialize to connect, compatible settings.
Software CAT support
The easiest way to validate the connection is with the hamlib utility rigctl. This utility can be used to list the supported transceivers:
If your rig is among the supported transceivers (hamlib has very comprehensive support, but you never know), then rigctl is a very useful tool to do quick tests of CAT and PTT (The Hamlib FAQ has more examples of using rigctl).
For example, the following command connects to a Yaesu FT-450 (hamlib model ID 127) on /dev/ttyACM0, a common name for the first USB-to-serial adapter plugged into a system.
rigctl -r /dev/ttyACM0 -m 127
With rigctl started, commands can be issued to the radio and will return a result, provided that the connection is correct. If it does not work, troubleshooting steps include:
- Ensure that the baud rate is correct for the radio
- Check serial word length/parity settings - these are usually 8N1, but may differ. If so, it will be listed in the manual for the radio
- Check the serial orientation. This won't be an issue for radios with built-in USB-to-serial, but for RS232 radios, there are two "types" of connectors (DTE and DCE), and need to be opposite in order to work. Otherwise, a null modem adapter (or crossover cable) may be needed. Unknown cables and unknown connectors can be the source of much RS232 headache, and sometimes guessing and checking is the only way.
It is probably desirable to use a separate soundcard for digital modes, leaving the main or integrated soundcard free for normal audio. Additionally, it is desirable to use line-level input, rather than a mic input, to avoid damaging the soundcard by overdriving it with output from the radio. This is especially important when using back line-out (sometimes called 'data') ports on certain radios, as these may bypass the normal AF gain (volume) control on the radio.
Overall, this is no different than connecting any external audio device to a soundcard - it may be possible with a pair of "aux cables". However, in some cases, the transceiver will use a DIN port or some other (semi-)proprietary standard. In that case, it may be necessary to make a custom cable, or potentially build an adapter board that also rolls in a mechanism to key the PTT (see below). Examples of such mods include:
A simple option, though not necessarily the cheapest, is to use a dedicated rig control soundcard such as a SignaLink USB, which can be ordered with a cable and jumper settings for any number of specific transceivers. This will also take care of keying PTT.
Setting the input on a USB soundcard
USB soundcards, in particular CM108-style devices, are great for ham radio. However, they have the annoying aspect of multiplexing the mic input with the line-in, and needing to switch between them.
This may not be as much of an issue with FLDigi, since it uses pulseaudio, but other software soundmodems such as soundmodem or Direwolf use raw ALSA calls, and it will be necessary to use amixer to set the switch. (It may also be possible to switch the input using alsamixer in a menu-oriented way.
Any digital mode software used to transmit has to have some way of keying the push-to-talk of the radio when it is time to transmit. There are a few ways to go about this
- Use VOX and hope for the best
- CAT keying
- Audio detect keying (with or without using a tone on the unused stereo channel)
- Keying with RS232 flow control signals
- GPIO keying
Each of these methods has advantages and drawbacks. VOX keying might Just Work, but since VOX is meant to detect human speech, not digital data, there are a lot of problems with this approach - especially if the digital signal has breaks or pauses.
CAT keying is the preferred method with many modern transceivers. This mode is well-supported by FLDIGI, and works by simply sending key-up and key-down commands over the CAT serial link.
Audio detection is done by the SignaLink or some homebrew methods. This can be aided by using FLDigi to send a constant tone on the unused stereo channel.
RS232 flow control signalling was popular in the past, though is losing favor for modern rigs. This simply uses the DTR signal from the computer to indicate that the radio should key the PTT key. However, since it still has software support in most applications, it is possible to use a separate USB-to-serial adapter, such as a FTDI adapter, that provides the DTR key as a rudimentary GPIO output to manually key the PTT. Similarly, GPIO keying uses an output with a jumper to the PTT logic, and this is very popular on Raspberry Pi or Beaglebone-based radio setups.