WSJT-Z
WSJT-Z on Linux Mint involves running a popular automated fork of WSJT-X.
Create application install folder for WSJT-Z
/home/emcomm/Documents/Installs/WSJTZ
Nav to new WSJTZ directory
Clone source for building:
git clone https://github.com/sq9fve/wsjt-z.git
Dependancies
sudo apt install qtmultimedia5-dev
sudo apt-get install qtbase5-dev libqt5websockets5-dev
sudo apt install qttools5-dev qttools5-dev-tools
Then:
sudo apt update && sudo apt install -y \
build-essential cmake git gfortran asciidoc asciidoctor \
qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools \
libqt5multimedia5-plugins qtmultimedia5-dev libqt5serialport5-dev \
libffi-dev libusb-1.0-0-dev libfftw3-dev \
libboost-all-dev libasound2-dev texinfo
Configure and Compile
mkdir build && cd build
cmake
cmake -DCMAKE_Fortran_FLAGS="-std=legacy -fallow-argument-mismatch" ../wsjt-z
multi core
cmake --build . -- -j$(nproc)
Install
sudo cmake --build . --target install
Run
wsjtx
Configuration
The driver and (tr)uSDX settings have already been installed on the Linux Mint 21.3
image. The below is provided for reference
The most critical setting is PTT Method: CAT, as the (tr)uSDX requires CAT control for
transmission, which also disables VOX during band changes.
Essential Configuration Steps
- Install the truSDX-Linux driver and dependencies (Python 3.12+, pyserial, pyaudio) and configure ALSA loopback or PipeWire virtual audio devices.
- In JS8Call, select the Kenwood TS-480 radio profile and set CAT control to /tmp/trusdx_cat with a baud rate of 115200.
- Set PTT Method to CAT and ensure DTR/RTS are Off/None in CAT settings if using the native driver, or configure OmniRig if using it as a bridge.
- Use Virtual Audio Cables (e.g., VB-Cable or Loopback) for both Input and Output, routing audio correctly between the radio and JS8Call.
- Ensure the (tr)uSDX is running firmware version 2.00 or higher for stable USB/CAT communication.
- Set Semi-QSK menu option 2.4 to Off for FT8/JS8Call operations; this should only be On for CW modes.
Radio Profile:
Select Kenwood TS-480 (or Kenwood Generic) in the JS8Call/Rig control dropdown.
CAT Control:
Set to /tmp/trusdx_cat with a baud rate of 115200.
PTT Method:
Set to CAT. Ensure DTR and RTS are set to Off/None in the CAT control settings if using
the native driver, or configure OmniRig if using it as a bridge.
Serial Port:
Select the correct COM port (e.g., COM8) with a baud rate of 115200.
Data/Stop/Handshake:
Set to 8/1/None.
Audio Devices:
Use Virtual Audio Cables (such as VB-Cable or Loopback) for both Input and Output. Set the Input to the cable receiving audio from the radio and the Output to the cable sending audio to the radio.
Firmware:
Ensure the (tr)uSDX is running firmware version 2.00 or higher for stable USB/CAT
communication.
Semi-QSK:
Set menu option 2.4 to Off for FT8/JS8Call operations; this should only be On
for CW modes.
The (tr)uSDX's USB audio interface is designed to work with software like JS8Call,
but proper configuration is essential for reliable operation.
By following these steps, you can achieve seamless integration between the
(tr)uSDX and JS8Call on a Linux system, enabling effective digital communication
in the field.
To configure (tr)uSDX for JS8Call (or JS8Call-Improved), use the Kenwood TS-480 radio
profile in your software's radio settings.
To configure JS8Call to work with the (tr)uSDX, follow
these steps:
Before going out in the field install the driver
Driver Installation: Clone the miltonics/truSDX-Linux repository and run the setup.sh
script. This installs dependencies (Python 3.12+, pyserial, pyaudio) and configures
ALSA loopback or PipeWire virtual audio devices.
JS8Call Radio Settings:
- Rig: Kenwood TS-480
- CAT Control: /tmp/trusdx_cat
- Baud Rate: 115200
- PTT Method: CAT
- Data/Stop/Handshake: 8/1/None
.AppImage
JS8Call-Improved is distributed as an AppImage for Linux users, providing a
convenient way to run the application without traditional installation.
To set up JS8Call-Improved on MX Linux, follow these steps:
chmod +x JS8Call-Improved-*.AppImage
After making the AppImage executable, you can run it directly from the terminal or
by double-clicking the file in your file manager.
You can then launch the application by double-clicking the file or executing it
directly via the terminal. Note that because JS8Call-Improved is a fork of the
original JS8Call, you may need to install additional dependencies such as
libqt5multimedia5-plugins if your audio devices do not appear in the settings,
which can be done with:
sudo apt install libqt5multimedia5-plugins
To change your callsign in JS8Call, open the Settings menu by pressing F2 or
navigating to File > Settings.
In the General - Station tab, locate the Callsign
field, enter your new amateur radio callsign (e.g., KO6LVT), and save the changes.
How to Achieve BktTimeSync-Level Accuracy on Linux
Follow these steps to use a USB GPS dongle as a primary time source
Install Required Packages
Open your terminal and install the GPS daemon and time
synchronization tools (for Debian/Ubuntu-based distributions):
bash
sudo apt update
sudo apt install gpsd gpsd-clients chrony
2. Configure the GPS Daemon
Map the GPS to mount on your system (usually /dev/ttyUSB0).
Edit the gpsd configuration file:
bash
sudo nano /etc/default/gpsd
Update the DEVICES and GPSD_OPTIONS lines:
textDEVICES="/dev/ttyUSB0"
GPSD_OPTIONS="-n"
3. Configure chrony or ntp as Your Time Source
You can configure chrony to pull time from the GPS daemon instead of the internet.
Open the configuration file:
bash
sudo nano /etc/chrony/chrony.conf
Add the GPS as a local reference clock. You will typically add a line like this at the
bottom of the file (refer to the GPSD Time Service HOWTO for exact syntax):
textrefclock SHM 0 poll 4 refid GPS precision 1e-1
Restart the chrony service to apply your changes:
bash
sudo systemctl restart chronyd
Alternatives to BktTimeSync for Linux
If you prefer a simpler GUI-driven method similar to BktTimeSync on Linux,
you can use these software options:
JTSync: A popular tool for amateur radio users that provides clock synchronization by
reading incoming FT8/WSJT-X signals and localizing callsigns.
GPSD Web Interfaces / Gpsmon: You can use built-in tools like gpsmon via your
terminal to verify satellite fixes and ping your system with real-time NMEA data.
GridTracker features initial, community-driven or variant support for JS8Call via
specific UDP configurations or WSJT-X server emulation, though native integration
historically required specific packet structures from the JS8Call application side.
You can track real-time digital decodes, map stations,
and handle logging by ensuring your UDP port settings align between the applications.
Integration and Setup
- UDP Ports: JS8Call typically communicates over port 2242, whereas GridTracker listens on
designated ports for live traffic parsing.
- ADIF Logging: You can manage log redundancy by feeding ADIF outputs or syncing logs
directly while operating.
-
Mapping and Roster: View decoded callsigns, Maidenhead grid squares, and real-time path
trajectories on the interactive GridTracker map interface.
JS8Call-Improved
To route traffic successfully from JS8Call-Improved to GridTracker, you must trick
GridTracker into treating the data stream like standard WSJT-X data.
Because GridTracker natively uses
WSJT-X data structures, you must configure JS8Call-Improved to simulate a WSJT-X
server.
Configure JS8Call-Improved
- Open JS8Call-Improved and navigate to Settings > Reporting.
- Locate the UDP Server section.
- Check the box to enable the WSJT-X Server emulation.
- Set the IP address to 127.0.0.1 and change the UDP port to match what
GridTracker expects (typically 2237 for WSJT-X,
or keep it at 2242 if you manually match it in GridTracker).
Configure GridTracker
- Open GridTracker and click the Settings (gear) icon.
- Go to the General tab.
]
- In the Receive UDP Port field, ensure the port matches the one you assigned in
JS8Call-Improved (e.g., 2237 or 2242).
- GridTracker will automatically begin decoding incoming traffic and mapping
Maidenhead grids on the screen.
Known Limitations
No Call Roster Replies:
Due to inherent UDP structural differences, you cannot click a callsign inside the
GridTracker Call Roster to initiate a reply back inside JS8Call-Improved. Replying must
be handled directly within the
JS8Call-Improved chat interface.
Shared Port
Shared Port Conflicts: If you also use WSJT-X for FT8, ensure both software applications
are not trying
to send data to the same port at the same exact time to avoid traffic collisions.
Snips from the Docs
GridTracker’s IP address and Port settings must match WSJT-X’s. If they don’t the
two applications won’t be able to communicate with each other.
If you have opened WSTJ-X but
don’t see “RECEIVE” in the control panel check your GridTracker settings.
At the top of the General tab the “Application Status” should read:
WSJT-X - ? - (127.0.0.1/2237)/JTDX - ? - (?)

Note: if you’re running WSJT-X and GridTracker on separate computers use
multicast address 224.0.0.73.
Easy |