Tips for operating on JS8 at my station

JS8 is currently my favourite amateur radio communication mode. It's designed for extremely weak signals, so it copes well with noisy links, bad antennas, poor propagation conditions, and so on. It takes the very popular FT8 mode and takes it into the realm of keyboard-to-keyboard communications and message relaying. With a group of stations all sharing the same frequency, the result is a decentralised network of station that can easily message each other, be it in real time or via a message inbox.

Getting JS8Call going with my setup was a little bit fiddly, but not too bad. What mostly stood in my way were some very basic mistakes that are worth noting down. This relates to my particular station configuration, but at the very least serves as a checklist for people trying out JS8Call from my house.


Put up the antenna. Pick the antenna for the band you're going to be using. There are currently two. The one with green paracord is cut for the 80m band and the one with the yellow paracord is cut for the 40m band. There are pulleys in the trees which are suitable distances apart, and I enthusiastically recommend the midshipman's hitch for tying the other end around the tree; it slips but stays put (enough) under tension. Hook up the balun to the tuner and check the tuner is hooked up to the radio.

Connecting your computer and radio. Time to hook everything up. The computer has two USB connections to the radio. One is the rig control cable, which Icom call C-IV, but is more commonly called CAT (computer-assisted transceiver). The other is the soundcard, a SignaLink USB. Its jumpers are set up for the IC-718, but you will want to make sure TX and RX are at the centre of the dial and DLY (delay) is at zero, all the way to the left. Inside the software, go into [Preferences → Audio] and check that 'USB Audio CODEC' is the input and output for the Modulation Soundcard. You'll want to make sure that nothing else is using this soundcard, or you'll be playing your music or relaying your Mumble calls (or whatever) out over the air and you won't be popular! While you're here, check rig control; in [Preferences → Radio] select 'Icom IC-718' as the rig and the relevant serial port under CAT Control.

Band and frequency. The main place people hang out on JS8Call is the 40m band, which means tuning your radio to 7.078MHz. If band conditions are favourable, though, it can make things easier to hop onto the 80m band, that is, 3.578MHz. Both of these, and in fact any of the JS8 frequencies, are upper sideband modulation. On my radio, you can select memory 21 or memory 23 for the 80m and 40m bands respectively, but it might be easiest just to select the frequency in the program and let the rig control take over.

Antenna and tuning. Once it's all hooked up, you need to tune it. Choose the RF power you want to use for the session. I find 20W is usually plenty. At night 10W is enough to communicate with stations in the USA. Then, with [TX] on in the program, click [TUNE], and experiment with the knobs on the tuner until there's lots of forward power and not much reflected power. The antennas are pretty resonant on their bands, though, and bypassing the tuner entirely might work a lot better.

Audio gain. The output power bar on the right of the program screen is more important than it seems. It's important when working with digital modes not to send too much audio into the radio. You'll then trigger the automatic gain control (automatic level control or ALC) and the transmitted signal will be distorted. With the tuning still happening, slide the output gain bar on the bottom right of the JS8Call program to just below the highest point at which ALC is not triggered. This isn't a set number; it varies with other aspects of the station's setup. So, you don't want it to be too high, but on the other hand, you don't want the bar to be too low, because you want those signals to get out there! I've noticed that this may need adjusting throughout the day: it's not 'set and forget'.

Pre-amplifier. The pre-amp can be enabled on my radio for receiving weak signals from the antenna. For a mode like JS8, it could help with the received signal-to-noise ratio, so it's worth enabling by pressing the [P.AMP] button. There's a [NB] which stands for 'noise blanker'. This is for reducing 'pulse-type noise such as that generated by automobile ignition systems', but isn't effective against other kinds of noise.

Check your system's clock is accurate. FT8, and therefore JS8Call, relies on you having an up-to-date system clock. An easy way to check this is to go to in your browser. In Linux, ntpstat will tell you. For FT8, your clock must be synchronised to your recipients to within 20ms. You can look at the delta-time reported for other stations to see if you're drifting away from other stations on the network. By accessing the time drift controls you can set time drift relative to the rest of the network to be corrected automatically, stopping after a set number of decodes or just continually tracking and correcting for time drift. Other stations will deviate from you more than you might think!

Send out a heartbeat. With everything set up, you will want to see who out there can hear you. It's time to send out a heartbeat. The [HB] button will send out the message @HB HEARTBEAT <grid> with <grid> being whatever your grid square is. When other stations hear this, they will reply with a response like 2E0RLZ HEARTBEAT SNR -20 MSG ID 14. This means 'I got your heartbeat transmission, you have a signal-to-noise ratio of -20dB, and I am holding a message for you, with identifier 14'. The combination of all these responses gives you a picture of who you can hear, who can hear you, and at what signal-to-noise ratio. The callsign list on the right is thereby kept fresh.

Speed adjustment. In JS8Call, transmissions can happen at one of four speeds, from slow to turbo. The original intention of slow mode was to start the contact in normal speed and then, if the propagation path is good, you can send subsequent overs at a faster rate. Similarly, you can downgrade the conversation to a slow rate to get the most out of every milliwatt. A slow connection uses 30 second frames, 25Hz of bandwidth, and can be decoded at a -28dB signal-to-noise ratio. At the other end of the scale, a turbo connection uses 6 second frames, 160Hz of bandwidth, and can be decoded at 'only' -18dB. For decoding, you should enable [MULTI] from the mode menu, so your decoder can handle all speeds, all at once.

Useful commands and tricks

A summary of these can be seen by right-clicking on the recipient's callsign. Here are a few commands I didn't quite get the hang of in my first JS8Call session, particularly around relaying and message storage.