A couple of years ago, I became VA3JFZ after studying for and passing my amateur radio exam. Since then, I have been building out my shack (ham radio enthusiast lingo for the place where you keep your rigs, er… radios).
As my setup has matured, I’ve started to look for interesting ways to interconnect my equipment. Most amateur radio operators use software packages called loggers to keep track of who they’ve talked to when on the air. I use two different loggers: log4OM is my everyday driver, and N1MM+ is for contesting.
While contesting, I got used to N1MM+ automatically reading the frequency from my HF (that’s high frequency) radio, making for one less thing that I have to enter into the logger as I work contacts. While trying to figure out how to get log4om to do the same thing, I stumbled on an open source project called hamlib.
You see, while most modern rigs provide some form of CAT (that’s computer aided transceiver) control via an RS-232 serial port, every manufacturer’s radio responds to a slightly different set of commands. The goal of the hamlib project is to create a common interface that any piece of software can use to talk to all kinds of radios without having to re-implement all of their individual peculiarities.
After downloading the release 3.3 and running the exe file, I added the C:\Users\Jonathan Fritz\AppData\Roaming\LogOM\hamlib
directory to my PATH and opened Powershell, where the following command started an interactive terminal:
$ rigctl --m 127 --r COM3 --serial-speed=9600
Let’s break down the arguments to this command:
rigctl
is the name of the program, pronounced “rig control”--m 127
tells rigctl that my radio is a Yeasu FT-450D--r COM3
says that my radio is connected to the COM3 port; and--serial-speed=9600
tells it that my radio expects serial commands at a rate of 9600 baud.
It’s worth noting that your radio might appear on a different COM port when connected to your computer via a RS232 to USB cable, and that you may need to adjust the baud rate of the serial connection to match the settings in your rig’s config menu.
Once you’ve started rigctl
, there are a few interesting commands that you can run.
Get the frequency of the radio:
Rig command: f
Frequency: 7301000
Get the mode that the radio is in:
Rig command: m
Mode: LSB
Passband: 3000
Ok, that’s a neat party trick, but what’s the point? Well, rigctl
can also be used to change your radio’s settings, and can be run in a non-interactive mode where commands are read in from a file.
Non-interactive mode
I started by writing my commands out to a file:
$ echo M LSB 3000 \r\n F 7150000 > 40m.txt
Once again, let’s break this command down:
echo
prints whatever comes after it to the terminalM LSB 3000
tells the radio to set the mode to lower sideband with a passband of 3000Hz\r\n
is a line break in Windows, which separates two commands from one anotherF 7150000
tells the radio to set the frequency to 7.150.00MHz, the middle of the 40M band>
pipes the output of theecho
command (the stringM LSB 3000 \r\n F 7150000
) into a file on disk40m.txt
is the name of the file to pipe the command into
The result is a file called 40m.txt
containing two commands that will set the radio to LSB mode and set the frequency to 7.150.00MHz.
Now, we can execute those two commands by running this command:
$ rigctl --m 127 --r COM3 --serial-speed=9600 - < 40m.txt
The first four arguments here are the same ones that we used to open the interactive terminal above. The remaining arguments are:
-
tellsrigctl
to read the remaining commands from stdin, letting us pipe them in from a file<
the opposite of>
, pipes commands in from a file instead of out to a file40m.txt
the name of the file containing the commands that we want to send to the radio
Running this command will set the radio’s mode and frequency, initializing it for operations on the 40m band.
The rigctl manual contains a bunch of other really interesting commands, including the ability to activate the rig’s PTT (push to talk) switch, which could be used to write a script that puts the radio into transmit mode before playing pre-recorded message. That sounds like a very useful feature for contesting.
Finally, if there’s something that your radio can do that rigctl
can’t, you can always use the w
command to sent CAT control strings directly to the rig. The control strings for most rigs can be found on the manufacturer’s website.
73 (that’s amateur radio speak for “best regards”), and enjoy your newfound power.