Category Archives: Software

CAT Control with N1MM+ and a Yaesu FT-450D

When participating in amateur radio contests, my logging software of choice is N1MM+. This tidy little logger is highly optimized for contesting, automatically updating its user interface to prompt the user for the information required to log a valid contact.

One major quality of life improvement for me has been rigging up N1MM+ to talk to my HF rig via CAT control. This allows the logging software to automatically transmit pre-recorded macros on my behalf at the appropriate times during a contact, which saves me from having to yell my callsign over and over again when trying to break through a pileup.

Because every radio is different, configuring N1MM+ to control your rig can be a bit of a bear. Below are the steps that I followed to get things working:

Tell N1MM+ What Kind of Radio You Have

From the main window of N1MM+, select Configure Ports, Mode Control, Winkey, etc… from the Config menu.

In the Configurer window that appears, activate the Hardware tab. Select the COM port that your radio is attached to from the Port dropdown, and the make and model of your radio from the Radio dropdown.

Next, click on the Set button under the Details header. In the window that pops up, select the baud rate of the serial connection with your radio from the Speed dropdown.

Click the OK button twice to dismiss both windows and navigate back to the main window of N1MM+.

Customize the CAT Commands that N1MM+ Sends to your Radio

From the Config menu, select Change CW/SSB/Digital Function Key Definitions > Change SSB Function Key Definitions. In the SSB Message Editor window that appears, you can edit the contents of the config file that controls the CAT commands that N1MM+ sends to your radio at different stages of the contact.

When running (i.e. sitting on a particular frequency calling CQ and waiting for other operators to call me back), I execute the VM1TX function on my Yaesu FT-450D, which transmits a pre-recorded macro that says something like “CQ Contest CQ Contest, Victor Alpha Three Juliet Foxtrot Zulu”.

To execute this command, I have to configure N1MM+ to execute the {CAT1ASC PB7;} command. CAT1ASC tells N1MM+ to send an ASCII command down the serial connection, and PB7; tells my rig to execute the VM1TX function, which transmits the pre-recorded macro.

Similarly, when searching and pouncing (i.e. tooling around the band looking for other operators who are calling CQ), I execute the VM2TX function on my radio, which transmits a different pre-recorded macro says my callsign. I use this when answering another operator and waiting for them to acknowledge me.

Executing this command is much the same as the previous. I configure N1MM+ to execute the {CAT1ASC PB8;} command, which tells my rig to execute the VM2TX function, transmitting the pre-recorded macro.

For reference, here’s the contents of my entire SSB Message Editor config file:

#
# SSB Function Key File
#
# Edits may be necessary before using this file
# Use Ctrl+O in the program to set the Operator callsign
#
###################
#   RUN Messages
###################
F1 CQ,{CAT1ASC PB7;}
F2 Exch,{OPERATOR}\CqwwExchange.wav
F3 TNX,{OPERATOR}\Thanks.wav
F4 {MYCALL},{CAT1ASC PB7;}
# Add "!" to the F5 message if you are using voicing of callsigns 
F5 His Call,
F6 Spare,
F7 QRZ?,{OPERATOR}\QRZ.wav
F8 Agn?,{OPERATOR}\AllAgain.wav
F9 Zone?,{OPERATOR}\ZoneQuery.wav
F10 Spare,
F11 Spare,
F12 Wipe,{WIPE}
#
###################
#   S&P Messages
###################
# "&" doubled, displays one "&" in the button label
F1 S&&P CQ,{CAT1ASC PB8;}
F2 Exch,{OPERATOR}\S&PExchange.wav
F3 Spare,
F4 {MYCALL},{CAT1ASC PB8;}
# Add "!" to the F5 message if you are using voicing of callsigns 
F5 His Call,
F6 Spare,
F7 Rpt Exch,{OPERATOR}\RepeatExchange.wav
F8 Agn?,{OPERATOR\AllAgain.wav
F9 Zone,{OPERATOR}\RepeatZone.wav
F10 Spare,
F11 Spare,
F12 Wipe,{WIPE}

Note of course that unless you also run a Yaesu FT-450D, lines 10, 13, 28, and 31 will need to be customized to send CAT commands appropriate to your radio.

Reading through the file may also suggest to you that there is more than one way to skin this cat; indeed, it is possible to configure N1MM+ to key your radio and then play a WAV file from your computer, assuming that you pipe the audio from your computer into your rig. This can be a solution for radios that don’t allow you to record voice macros, or for operators who want to use a wider range of macros than their radio supports.

Good luck and happy contesting!

2 Comments

Filed under Amateur Radio, Software

CAT Control from Log4OM 1.x Using hamlib

In a previous post, I wrote about using hamlib to control my Yeasu FT-450D from the Windows command line.

This time, we’ll look at integrating hamlib with Log4OM to achieve cat control from within the logging software, primarily so that I don’t have to record the frequency whenever I enter a new QSO.

If you haven’t already installed hamlib, you’ll want to follow the instructions in the previous post. If you can run the rigctl examples in that post, you should be good to go.

Configuring Log40M

First, we need to tell Log4OM to use hamlib. Unlike N1MM+, Log4OM does not come with the ability to talk to your radio, and it needs some help to do so.

From the Settings menu in Log4OM, choose Options, and in the dialog box that appears, select the Cat & Cluster tab. We only care about two controls on this tab:

  • Under the CAT SOFTWARE heading, choose hamlib
  • Under the CAT & Cluster heading, select the Open CAT on program start checkbox

Click on the big floppy disk in the bottom right corner to close the dialog box.

Back on the main screen of Log4OM, click on the icon that looks like a pair of headphones in the toolbar:

Why it’s a pair of headphones is beyond me. While I do wear headphones while using my HF radio, they don’t have anything to do with cat control.

Anyway, clicking on that button will open the Log4OM Cat dialog box, where you can configure cat integration with your radio. There are three settings that you want to change in this window:

  • Select the make and model of your rig from the RIG Model dropdown box. My primary HF radio is a Yaesu FT-450D, and I use the Yaesu FT-450 0.22.1 Beta | 127 profile.
  • Select the COM port that your radio is connected to. My radio typically connects to COM4, but that can change if I plug its serial cable into a different USB port
  • Choose the appropriate Baud Rate for your radio. My radio is set to 9600 baud, but this can be changed in its menu. The radio and Log4OM have to be expecting the same Baud Rate for communication to be successful

Once configured, press the Open button in the bottom right hand corner of the dialog box to test and save your settings. if the CAT Status indicator in the bottom left corner of the dialog box turns green, you can close the box.

So What’s the Point?

Once you configure cat control, Log4OM will communicate with your radio as you use it. Most notably, the frequency that your radio is tuned to will appear in the top right-hand corner of the logger, and will automatically record that frequency in any new QSOs that you enter.

Cat control also allows Log4OM to change your radio’s transmit/receive frequency, and to activate the radio’s transmitter. This in turn allows you to connect your radio’s audio input and output to your computer, and play pre-recorded audio snippets from the logger, which can be very useful while contesting.

Leave a Comment

Filed under Amateur Radio, Software

Using ImageMagick to Prepare Images for Upload on Windows

A few years ago, I wrote a short post detailing how to automatically rotate, resize, and strip EXIF data from the images that I upload to this website.

At the time, I was working on Linux, so the instructions in that article target Linux-based operating systems. Over the intervening years, I’ve switched back to running Windows 10 on my home laptop, so I figured it was time to update my original instructions to target my new platform of choice.

Installing ImageMagick

One of the reasons that I now run Windows at home (or at least one of the reasons why I don’t mind running Windows at home as much as I once did) is that the Windows command line experience has improved by leaps and bounds over the past few years.

For command line goodness in Windows, I run PowerShell inside of ConEmu, and I use Chocolatey to install and manage command line utilities.

Luckily ImageMagick is available for Windows, and you can install it via Chocolatey as follows:

$ choco install imagemagick.tool

Note that I’m purposefully installing the portable release here, because it includes all of the command line tools in addition to the main ImageMagick GUI application.

The installer modifies your $PATH variable, so you’ll have to run refreshenv once it’s complete.

Modifying Images with Mogrify

As in the original tutorial, I still use mogrify to prepare my images for upload.

Start by copying the images that you want to use into a temporary folder. Mogrify is going to modify them in place, so you definitely don’t want to work against the original images.

Next, run the following command from PowerShell/cmd in the temporary folder:

mogrify -auto-orient -resize 584x438 -strip -quality 85% *.jpg

This command will re-orient and resize your images, strip any EXIF data from them, and re-encode them as jpegs at 85% quality. The full manpage for mogrify can be found on the ImageMagick website.

Leave a Comment

Filed under Software

Using hamlib to Control my Yeasu FT-450D

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.

Some of my recent contacts, or QSOs, as recorded in log4om

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.

You can find out what COM port your radio is connected to in Windows > Control Panel > Device Manager

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 terminal
  • M 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 another
  • F 7150000 tells the radio to set the frequency to 7.150.00MHz, the middle of the 40M band
  • > pipes the output of the echo command (the string M LSB 3000 \r\n F 7150000) into a file on disk
  • 40m.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:

  • - tells rigctl 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 file
  • 40m.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.

1 Comment

Filed under Amateur Radio, Software

Image Rotation and EXIF Data

If you’ve looked at some of my earlier posts in Firefox, you may have noticed something odd about them. Some of the photos will appear to be rotated in the wrong direction, but if you view the same post in Chrome or on an iPhone, they’ll appear to be rotated correctly.

When I’m working in my garage, I take all of my photos on my iPhone, and I’ve recently found out that when I take a picture in landscape orientation (with the home button held to the left or the right, rather than the top or bottom of the screen), iOS doesn’t rotate images to match the orientation of the phone when it writes them to storage. Instead, it writes the image data in the same orientation as the camera, and saves some time by writing the orientation information separately into the metadata that it attaches to the image. This lets the device take pictures faster, but means that some of the images have to be rotated before I post them.

Unfortunately, I didn’t notice this behaviour up until now, thanks to a series of unfortunate circumstances:

  1. As previously mentioned, Chrome looks at images’ EXIF data and re-orients them as necessary
  2. The file browser on my Ubuntu 14.04-LTS machine also auto-corrects for iOS’ sloppy behaviour
  3. Unlike the other parts of my toolchain, WordPress ignores EXIF orientation information when images are uploaded, taking the stance that it’s not interested in automatically modifying users’ images.

So what to do? Well, I could open each of the images in an image editing program like Pinta, apply the necessary rotation and resize the file. On the other hand, that sounds boring and time consuming, and I’d rather figure out how to do the job automatically.

Since we’re modifying images, the go-to tool in our kit will be an amazing suite of image editing tools called ImageMagick. It’s 100% free and open source, runs damned-near anywhere, and can do pretty much anything that you might want to do with an image file.

I’m working on an Ubuntu system, so I’ll install ImageMagick like this:

$ sudo apt-get install imagemagick

If you’re on some other platform, you can read up on how to download the tool here.

Now we just have to string together some command line switches to do what we want. Here’s what I came up with:

$ mogrify -auto-orient -resize 584x438 -strip -quality 85% *.jpg

The command that we’re running is called mogrify, and will modify your images in place, so you’re going to want to cd into a directory that contains a copy of your images before running it.

After the mogrify command, we specify a number of command line switches that change how it behaves:

  • -auto-orient fixes the iOS image orientation problem described above
  • -resize resizes the image to the size provided (specified as maximum width x height in pixels), and respects the source image aspect ratio if it can’t make the image exactly that size
  • -strip removes all EXIF data and other metadata from the image, including timestamps, GPS location data, and information about the device that took the image. It also removes the pesky orientation data that caused Chrome and Safari to automatically correct for iOS’ behaviour, which is important, because we’ve just rotated the image, so if we leave the metadata in place, the image might actually appeared double rotated after I post it
  • -quality specifies the compression level to use when resizing the image (specified as a percentage between 0 and 100)

The last thing in the command, after all of the command line switches, is *.jpg, which tells mogrify to do all of the previous steps on every file in the current directory that ends with .jpg.

Once I’ve run this command, I’m left with a directory full of properly oriented images that are the right size for posting on my website, with all of the private/identifying metadata stripped out of them.

Handy, right?

2 Comments

Filed under Software