N1MM+ and CWT

There is also a walkthrough of N1MM+ here that I did for my intermediate class earlier this week.

Some definitions

  • CW – stands for continuous wave, a simple method of communication where a signal is either on or off. It uses Morse Code, consisting of dots, dashes, and spaces. A dot is a tone emitted for one time-unit, a dash is a tone emitted for three-time-units. Spaces between dots and dashes, letters, and words are one, three and seven time-units, respectively.
  • WPM – words per minute is a gauge of how fast one is communicating. For Morse code, we typically use the word “Paris” (.–. .- .-. .. …) as the standard “unit.” As a comparison, I can write about 15 words per minute, type about 70 wpm.
  • CWT – is CWOps‘ CW contest held 3x a week, on Wednesdays at 1300Z, 1900Z, +0300Z. It’s a one-hour contest where the average communication speed is well-above 25 wpm.
  • N1MM+ – this is a popular amateur radio contest logging program.
  • KX3 – Elecraft’s all-mode transceiver.

Thus, this blog entry covers how to use the N1MM+ software while participating in the weekly CWT contest. N1MM+ can be used for a variety of other events, not exclusively CWT or even Morse Code.

CWT-specific Setup

The model N1MM uses is you have one (or more) databases for all of your activity, and for each event, you create a specific log in that database. For the longest time, I kept interpreting “log” to mean “my complete history of contacts,” which I did not want to redo.

Okay, when we want to start an event like CWT, we’ll create a new log:

Create a new log in your existing contact database

When you create logs, you have the option of selecting a template with the rules for a specific contest. There are at least a hundred different contests baked into the software. CWT, by CWOPS, is one of those built-in ones. The template has logic in it to estimate the time. When I first drafted this, the next was Wednesday, May 27, 2020 at 1300z (6:00 a.m. PDT). Yeah, this has been in the drafts mode that long.

So… many… options…

For this contest, I’ll fill in my power (sadly, low) and exchange, which for this event, is my name and my member number. Now as a further step, I can pre-load the member roster by clicking on Associated Files tab.

Associated Files

In the blue box is the most recent file loaded – currently through member 2597. If this was blank, or I knew there were updates, I can do so simply by clicking the “Change” box and it’ll check for one:

Well lookie there!

Since then, they’ve added five new members. Updating was remarkably painless. Once loaded, we see the change appear:

Easy as pie.

When I’m working CWT, if I hear my friend Joe, KH6FHI, call. I can enter his name in the box, hit the space bar, and it will pre-fill the remaining information (his name and member number) that I will confirm was exchanged and hit return to log it.

As I work the contest, the band map will fill in with call signs of those I’ve contacted and placeholders for me to come back to.

Band map gets filled in

In the logging window are several function keys that I’ve assigned to sending macros, which is doable, though kind of hokey in the KX3 as it uses the KX3 sending macro each time. More on that at the bottom.

The current macros for this event vary based on whether I’m running or pouncing. For example, if I’m running, the F1 key can be used to reduce the repetition of sending “CQ CWT WT8P WT8P” a few dozen times. Similarly, if KJ7IZT responds, I fill in his call sign in the box and hit F2 to send the exchange: <his call sign> <my first name> <my CWOPS number>. I still have the manual keyer nearby if I need to do something different, but the macros help with speed and reduce fatigue from so much repetition.

Programming the function keys to send CW snippets

KX3-specific Configuration

The first setup was so the software can communicate with the radio. In this example, I’m focusing primarily on CW operation, first the configuration, then automating sending of certain key codes.

The first setting is identifying which serial port Windows has allotted to the radio. Nothing in Windows is as straightforward as it could be. Running the the “Device Manager,” expanding ports, I saw “USB Serial Port” mentioned. At this moment in time, mine is on COM4.

Plug: I found it very helpful to review N6TV‘s presentation on USB and Serial Interfaces. It doesn’t change a lot year-to-year, so we can use the most recent deck from 2019 “Contest University.” Namely, starting around slide 14 – 32, he mentions installing the FTDI-specific driver (which is what the KX3 USB cable uses) and disabling a lot of legacy settings that Windows has set up. (Some absurd.)

Other notable settings are designating this as the CW/Other port, setting DTR to be “CW” and RTS to be “PTT” (push to talk). At this point, the radio is talking with the software.

When I first read through the N1MM documentation, I kept seeing reference to buying a WinKeyer, an external device that would actually send Morse code for repetitive things like: CQ CWT WT8P WT8P It turns out that you can fake it by sending KX3 macro commands to activate keying. Thanks to K4MTX for the blog entries on these. If you right click on the button labeled “F1 CQ” (for example), it will expand into a menu like the one above.

The syntax is thus:
{} — the delimiter for the string. These have to be short.
CATA1ASC KY Initiate a macro call to send text to the radio
! – the other operator’s call sign
{EXCH}
* – my call sign

# Run mode
F1 CQ,{CATA1ASC KY CQ CWT * * ;}
F2 Exch,{CATA1ASC KY ! {EXCH};}
F3 Tu,{CATA1ASC KY TU * ;}
F4 WT8P,{CATA1ASC KY * ;}
F5 Them,{CATA1ASC KY !? ;}
F6 2456, {CATA1ASC KY 2456;}
F7 TU NAME,{CATA1ASC KY TU {NAMEANDSPACE} 73 ;}
F8 Agn?,{CATA1ASC KY agn? ;}
F9 Nr?,{CATA1ASC KY nr? ;}
F10 Call?,{CATA1ASC KY cl? ;}
F11 Break,{CATA1ASC rx;}
F12 Wipe,{WIPE}#
# Search and Pounce messages
F1 CQ,{CATA1ASC KY CQ TEST * * ;}
F2 Exch,{CATA1ASC KY TU {EXCH};}
F3 Tu,{CATA1ASC KY tu * ;}
F4 WT8P,{CATA1ASC KY * ;}
F5 Them,{CATA1ASC KY ! ;}
F6 EXCH, {CATA1ASC KY {EXCH};}
F7 TU NAME,{CATA1ASC KY TU {NAMEANDSPACE} 73 ;}
F8 Agn?,{CATA1ASC KY agn? ;}
F9 WA,{CATA1ASC KY WA ;}
F10 W T 8 P,{CATA1ASC KY W T 8 P ;}
F11 Break,{CATA1ASC rx;}
F12 Wipe,{WIPE}