Setup WSJT-X

Sat, Jan 14, 2017

This is part 3 of my series about migrating my operating routine to Linux. This entry will cover getting WSJT-X installed and configured for the FT-991 over a USB connection. This article assumes completion of the previous article about setting up hamlib, and making sure your user is in the ‘dialout’ group to enable write to /dev/ttyUSB* The focus is using WSJT-X for JT65/JT9, though WSJT-X can certainly perform on other modes as well.

Here are the settings I’ve got on the FT-991 coming into this setup:

  • 031 - CAT RATE - 38400bps

Also coming into this the assumption is that Hamlib is installed on the system and is able to communicate with the radio. WSJT-X lists libhamlib as a dependency, so having it installed already saves a step.

Lastly I’m assuming a typical (default) install of Ubuntu Yakkety (16.10)

Here’s the other prep for getting WSJT-X installed:

  • Download WSJT-X from Joe Taylor’s website *
    • I grabbed the wsjt_1.7.0_amd64.deb package
  • Install the dependencies
    • In the directory where you downloaded the .deb: dpkg -I wsjt_1.7.0_amd64.deb to check the dependencies
    • The following set of packages should cover the dependencies:
sudo apt-get install libgfortran3 libqt5multimedia5 libqt5multimedia5-plugins libqt5serialport5 libreadline6 libqt5serialport5 libqgsttools-p1 libqt5multimediawidgets5-gles libqt5opengl5-gles

* NOTE Ubuntu has a wsjtx package in the “universe” repo. However, it’s pretty old. At the time I’m writing this the wsjtx package from Ubuntu provides v1.1; whereas the current available version is 1.7

Now it’s time to install WSJT-X: sudo dpkg -i wsjtx_1.7.0_amd64.deb Keep an eye on the install for any error messages, especially “dependency problems” just in case I missed something above. If you have any additional outstanding dependencies, just install them with apt-get (sudo apt-get install X) - apt’s dependency checker will warn you if you still have outstanding dependencies that need to get installed…

Assuming WSJT-X is now installed on your system let’s get down to the business of connecting to the FT-991.

Fire it up

Start up wsjtx by either running wsjtx from a terminal, or find the wsjtx program in your desktop manager’s application menu… FWIW, it shows up under the “Sound and Video” menu group in my environment.

Once it’s running you should see the main window with “band activity”, etc as well as a second window with the waterfall graph of band activity.

At this point I expect you’ll see no activity on the waterfall - it’ll cascade downward, but there are no signals. Also there will be no messages showing up in the main window. This is as expected because we haven’t setup the program to actually listen to anything yet.

Time to check the time

The JT modes care a LOT about time, so a computer participating with JT communications needs to have an accurate clock. The reason being that everyone in the world communicating with JT modes starts transmission 1 second after the minute and concludes at 47 seconds after the minute. If your clock is off by more than a couple seconds, you’ll have trouble participating in the mode.

In Ubuntu (and linux/unix in general), there are a set of tools to check and sync your computer’s clock with highly accurate time servers on the internet.

First, let’s check your time status using ntpstat (which you probably need to install: sudo apt-get install ntpstat:

~$ ntpstat
synchronised to NTP server ( at stratum 3 
   time correct to within 43 ms
   polling server every 256 s

So my machine is synced to within 43 ms of whatever time server is at the IP mentioned.

As an alternative to installing ntpstat, you might use the more modern systemd tools in Ubuntu:

~$ timedatectl
      Local time: Sat 2017-01-14 17:24:38 EST
  Universal time: Sat 2017-01-14 22:24:38 UTC
        RTC time: Sat 2017-01-14 22:24:38
       Time zone: America/New_York (EST, -0500)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

That at least lets you know you’re synchronized.

By default Ubuntu is configured to use NTP services from a pool of NTP servers collected by the NTP Pool Project. You can read more about the default config in /etc/ntp.conf.

Generally, the default is probably good enough. However, be congnizant of this dependency and use ntpstat to check your up-to-date-ness of your machine’s time keeping. If it gets out of sync you may need to remediate.

General setup:

With WSJT-X open, use the following menu: File -> Settings. This will open the settings dialog. On the ‘General’ tab, fill in your Callsign and Grid in the Station Details. Leaving everything else default is probably OK. I like to check the ‘Disable TX after sending 73’ option personally.

Connecting the radio

There are two parts to “connecting the radio” - first configuring rig control, and second configuring WSJTX to read/write sound to the radio.

rig control

Recall from the preceeding article that once we plug in the radio’s USB and power on the radio, we should see two ttyUSB devices become available on the computer. Typically rig control can be done over the first device.

With WSJT-X open and the Settings dialog open go to the Radio tab. Here are the non-default settings I use:

  • Rig: Yaesu FT-991
  • Serial Port: /dev/ttyUSB0 (if you don’t see this as an option initially, restart WSJT-X)
  • Baud Rate: 38400 (matches setting on Radio)
  • PTT Method: CAT
  • Mode: Data/Pkt

Now use the ‘Test CAT’ button - it should turn green. Once the ‘Test CAT’ button is green you can try the ‘Test PTT’ button. Test PTT will, non-intuitively, turn red when it engages and the radio should flip to transmit mode. Hit the ‘Test PTT’ button again to disengage.

If everything is correct when you close the Settings dialog WSJT-X should refresh and display the current frequency of the radio. To test connectivity/control, change the band in the band drop-down menu; it should change the freqency on the radio and set the mode of the traceiver to D-U (Data-USB).

audio configuration

Remember, if you will, in a previous post about noting the USB audio device in dmesg after powering the radio:

You may also have noticed in dmesg that another USB device came online - it’s the USB audio in/out device that your radio presents. We don’t need that right now, but it’s worth noting for later.

Later is now.

Make sure some of the helpful pulseaudio tools are installed:

~$ sudo apt-get install pulseaudio-utils pavucontrol

I think the pulseaudio-utils may be installed by default, but not pavucontrol… either way both packages are useful for configuring audio devices.

So now, In addition to the USB messages in dmesg, there are other sound-specific tools that can be used to help identify the radio’s USB sound devices. To list the audio input devices available:

~$ pactl list sources

Similarly, to list audio output devices:

~$ pactl list sinks

Because we’re using USB audio devices in WSJT-X it’s important to make sure the radio is powered on so the USB devices are present prior to trying to configure the software. In other words, if you start the program and the radio isn’t powered on, your a audio devices won’t be listed as available. So really it’s best to shut down WSJT-X, power on the radio, and then restart WSJT-X.

Once that’s done open the WSJT-X Settings menu back up and go to the Audio tab. Under “Soundcard” there are two drop downs: Input and Output. These likely defaulted to your system’s default audio in/out. Change these value to the USB soundcard that the FT-991 is presenting (again, the radio needs to be powered).

My FT-991 presents the following devices:

  • Output: alsa_output.usb-Burr-Brown_from_TI_USB_Audio_CODEC-00.analog-stereo
  • Input: alsa_input.usb-Burr-Brown_from_TI_USB_Audio_CODEC-00.analog-stereo
Input (radio -> computer)

It’s pretty easy to tell once you’ve selected the right input device. Once you close settings you should start seeing activity on your wsjtx waterfall.

Also, double check the following:

Radio settings:

  • Make sure the radio is in DATA-USB mode (that’s upper-sideband, not universal serial bus)
  • Make sure the radio’s filter width is wide-open: (Width: 3000Hz)
  • Make sure to select the correct operating mode from wsjtx’s “Mode” menu to allow for proper decoding

This will make sure the radio is collecting as much of the JT signal range as possible.

062 Data mode “other” changes the radio’s default behavior in DATA mode away from settings optimized for PSK. This will be helpful widening the passband that makes it to the computer.

066/068 set to “off” removes the high/low cutoff frequencies, ensuring a large passband.

A note on frequency offset

This is a setting change I don’t fully understand, but in practice it’s been helpful to me. Poking around the web looking for info about running the FT-991 and some other Yaesu radios in DATA-USB mode set to “OTHERS” the radio seems to automatically insert a 1kHz offset. I don’t really understand why; nonetheless, I have seen it recomended to make the following radio setting changes:

  • 064 - OTHER DISP (SSB) - 1000Hz
  • 065 - OTHER SHIFT (SSB) - 1000Hz

As I understand it these settings counteract the radio’s inherent offset. In my experience using this offset in conjunction puts JT65/JT9 signals just where you’d expect them based on the JT frequency conventions discussed in the WSJT-X user manual.

Output (computer -> radio)

It’s a bit less obvious when the output settings are correct, so testing will be required.

Make the following changes to the radio’s settings:


072 Data port select “USB” tells the radio to accept the audio coming from the computer via the USB port.

Testing transmit

Two things here:

  • turn on the radio’s MONI (monitoring) function
  • pskreporter is your friend

These two items will greatly help your ability to confirm you’re actually making sweet alien music on the air.

To enable the FT-991’s monitoring function open the radio’s ‘F/m-list’ button and find the ‘MONI’ setting. Set MONI level to something like 20… this should be enough to ensure hearing the audio when the tranmitter is keyed. As an aside, I’ve noticed even with MONI set to ‘off’ I can hear the sounds being tranmitted faintly, so it’s possible I’m misunderstanding something about how MONI works.

The second bit of advice it to open pskreporter in a web browser and set its filters to the band/mode you’re transmitting on and then “sent by” and your callsign. Within a few minutes of transmitting you should be able to see your callsign get spotted by other’s running monitors. By the way, WSJT-X makes contributing reports to pskreporter really easy - just open Settings -> Reporting and check the “enable PSK Reporter Spotting”.

Transmitting in WSJT-X

Actually operating is beyond the scope of this post, it’s already long enough. That said, find a spot on the waterfall that’s open, and try sending out CQ. My prep tips are:

  • Check the radio’s RF Power setting. JT modes are intended for low power, start with 5 or 10W
    • JT modes are heavy duty-cycle modes. Staying low power will help keep your radio in good shape.
  • To avoid overdriving signal modulation:
    • Check the radio’s DT GAIN level: Start with something under 10
    • Set the radio’s METER to ALC so it’ll be visible if the signal is overdriven (shoot for no ALC)
  • Pick an open frequency by clicking on a dead spot in the waterfall
  • Pick the correct transmit mode (JT65 below 2500Hz, JT9 above)
  • Select the “Lock Tx=Rx” checkbox
  • Select a message from the message box: click the radio button next to “CQ
  • Toggle the “Tx even/1st” to match the NEXT minute’s even/odd-ness

Now hit “Enable Tx” and away we go. Keep in mind, that “Enable Tx” won’t immediately key transmit. Tx won’t start until the 1st second of the next minute that matches the “Tx even/1st” checkbox.

For more info on operating and otherwise configuring WSJT-X, the official user guide is pretty thorough.


That’s it for this post. It ended up being much longer than I’d intended. I’m finding that writing these install/config posts is tricky: I’m struggling to strike the right balance between declaritive statements and context. Oh well, I hope it’s helpful.

Cheers and 73!

Series: Moving ham ops to Linux