JS8Call
Primary uses and capabilities
- Keyboard-to-Keyboard Chat:
- Unlike standard FT8 (which only sends short, automated signal
reports), JS8Call allows free-text communication.
It functions much like a decentralized, ultra-low-power chatroom.
- Grid-Down & Emergency Communications:
Because of its incredible sensitivity, operators can pass text
messages even with compromised antennas, high background noise,
or minimal power (QRP).
- Message Relaying & Store-and-Forward:
If you cannot directly reach a distant station, you can send a
message to a third-party operator who will relay it.
You can also leave messages in another station's "mailbox" for them to read
later.
- Heartbeat/Automatic Announce:
Stations can send automated "heartbeat" beacons to announce their presence and
confirm which other stations can hear them, making it easy to instantly
map an emergency network.
- Directed Messaging & Commands:
Operators can send commands to query other stations (e.g., asking for a
signal report or station status) or reach specific groups like @ALLCALL or
regional preparedness nets.
JS8Call bridges the gap between deep-fringe signal decoding and highly interactive,
multi-operator text messaging.
To open JS8Call
Excute the AppImage file directly from the terminal
/var/www/html/apps/js8call.sh
or
by double-clicking the file JS8Call-Improved-2.5.2-x86_64.AppImage
/var/www/html/apps/JS8Call-Improved-2.5.2-x86_64.AppImage
I have also created a launcher on the panel:
It's the gear icon on the far right
Settings - Getting Started
(tr)uSDX
To operate JS8Call with a (tr)uSDX transceiver on a Linux laptop, you need to use a
specific CAT emulation driver and configure audio routing through virtual loopback
devices.
Core Software Solution
The primary method for Linux integration is the truSDX-Linux
driver, a Python-based CAT interface available on GitHub. This driver emulates a
Kenwood TS-480 radio, allowing JS8Call to control the (tr)uSDX via USB.
It handles frequency synchronization, PTT control, and audio streaming over the
USB connection (using UA0/UA1/UA2 commands).
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.