OpenJSQ Help

Chat, mail, files, and a live map of who hears whom — through a sound-card modem or a KISS TNC.
OpenJSQ 1.0 operator guide  ·  FSQ  ·  AX1200  ·  JG25
Describes the build as of 15 September 2026, and the screenshots were taken from that build on a two-station bench the same day. If a control here does not match what is on your screen, the application is right and this page is behind.

Copyright © 2026 Jerome Goddard II (W4IJG). All Rights Reserved.
OpenJSQ, its documentation and the screenshots in this guide are proprietary. No part of this document may be reproduced or redistributed without permission.

Part 1 — Getting startedEverything a new operator needs, kept short. Each topic here has a longer section in Part 2.

1. What OpenJSQ is

OpenJSQ turns a radio and a sound card into a messaging station. If you can use a text-messaging app, you can use this — there are no protocol codes to memorize and nothing to type except what you want to say. All the protocol detail is still there when you want it — you just do not need any of it to make a contact.

Four things it does:

It speaks up to three radios. FSQ is a slow, very forgiving keyboard mode for HF — good on 80 and 40 meters, and fully compatible with stations running fldigi or FSQCall. AX1200 is classic 1200-baud VHF/UHF packet, and works with any FM rig. JG25 is OpenJSQ’s own FM waveform, faster than AX1200, and it appears only in a build compiled to offer it. Everything above — chat, files, mail, the map — works the same on all of them. That is the whole idea behind the program: the services are written once, and the radio underneath is just what carries them.

Two ways to do packet
On AX1200 you can let OpenJSQ be the modem (your FM rig plus the same sound card you would use for HF), or hand the job to a hardware TNC (terminal node controller — a packet modem in a box) — one built into a radio like a BTECH UV-PRO, or a software one like Dire Wolf. Section 6 sets both up; you do not have to decide now.

Some builds carry a third waveform, JG25 — OpenJSQ's own, faster than AX1200 and for FM only. Section 16 compares all three and says when to use each; if you are on HF, the answer is FSQ.
Do section 2 first
If this is a new station, read section 2 before you open the setup wizard. It is the hardware you need, the settings to make on the radio itself, how to work out which sound device is your interface, and — on a beta copy — the licence file. Every one of those is invisible to OpenJSQ, and every one of them looks like a software fault when it is wrong.
Good to know
You may still meet the older name OpenFSQ here and there. Your files folder is now Documents\OpenJSQ: if an earlier build left Documents\OpenFSQ in its default place, the first start renames it across in one step, so upgrading never strands your existing mail and files. A folder you pointed somewhere else yourself is left exactly where you put it.

2. Getting ready: hardware, installing, and the beta licence

Everything in this section happens before the setup wizard, and it is the part that decides whether the wizard goes well. None of it takes long, but skipping it is why a first session usually stalls.

What you need

PieceWhat will do
A radio For FSQ: any HF transceiver with SSB. For AX1200 or JG25: any FM rig on 2 m or 70 cm, including a handheld.
A sound-card interface The box that carries audio between the computer and the radio and — usually — keys the transmitter. A SignaLink, a DigiRig, a Masters Communications or Tigertronics unit, the sound device built into a modern rig's USB port, or a cheap handheld cable with a VOX-capable radio. This is the piece most new operators are missing.
A computer Windows 10 or 11 on x64 for the packaged build; macOS and Linux by building from source. Nothing fast is required — OpenJSQ is not a demanding program — but see Dropouts in section 21 if the machine is already busy.
Nothing else No TNC, no hardware modem, no soundcard-DSP box. A TNC is an option on AX1200, never a requirement.
Optional: a CAT link flrig or Hamlib rigctld talking to your radio, if you want the frequency readout and dial in the top bar, or want to key through CAT. Everything else works without it. OpenJSQ does not drive rigs itself, which is why there is no list of radio models anywhere in the program.

Setting the radio up, once

OpenJSQ cannot see any of these, and every one of them will look like a software fault if it is wrong.

On the radioSet it to
Mode (HF / FSQ) USB, or USB-D / DATA-U if your rig has it. The data mode is better: it takes audio from the rear connector and bypasses the microphone chain.
Mode (VHF / UHF)FM. Narrow FM works but costs you margin on the wide waveforms; wide (25 kHz) FM is the safe choice for AX1200 and JG25.
Speech processor / compressorOff. It is designed to squash a voice, and it will mangle a data signal.
Noise blanker, DSP noise reduction, notch, AGC-fastOff to begin with. Turn them back on one at a time, later, if you want to see what they do — they alter the audio the modem is trying to measure.
Transmit filter width (HF)Wide enough for what you send. Classic FSQ fits in 430 Hz and needs nothing special, but the wide Fast modes reach 3 kHz — a 2.4 kHz transmit filter simply cuts the top tones off, and the far end reports the same characters missing every time.
VOX (if you key by VOX)VOX on, VOX gain high enough to key reliably from the interface's level, and anti-VOX / VOX delay short — long enough not to drop between symbols, short enough not to hold the transmitter up after the frame ends. If the far end says your frames end in the middle, the delay is the wrong one of the two.
Rear-panel audio input levelWherever your rig's data-mode gain lives (menu item names vary). This and OpenJSQ's Drive slider multiply; set the radio's once and then leave it, and do all further adjustment in OpenJSQ.

Finding out which sound card is which

The wizard's sound-card page stops more first sessions than anything else, and the reason is always the same: the name in the list does not obviously belong to your interface. Two minutes now saves an evening later.

  1. Unplug the interface. On Windows open Settings → System → Sound → All sound devices; on macOS, Audio MIDI Setup; on Linux, arecord -l. Note what is listed.
  2. Plug it back in and look again. Whatever appeared is your interface — under whatever name the manufacturer chose. USB Audio CODEC, USB PnP Sound Device and DigiRig are all common; so is a rig's own name.
  3. Write the name down. That exact string is what you pick in the wizard (Audio from radio and Audio to radio) and on the Radio page (Audio input (from radio) and Audio output (to radio)). Every entry is listed as Name (Host API) — on Windows, USB Audio CODEC (Windows DirectSound), say — because each card is offered through one host API only.
  4. Turn Windows' own processing off for it. In that device's properties, disable Audio Enhancements and any exclusive mode setting. Windows adds effects to sound devices by default, and none of them help a modem.

If you plugged the interface in after starting OpenJSQ, press Refresh — the list is read once when the page opens.

Installing

Where your data lives
OpenJSQ keeps a single data folder — settings, profiles, history, mail and the beta licence. On Windows that is normally %LOCALAPPDATA%\OpenJSQ\OpenJSQ; on macOS and Linux it is the equivalent under your user data directory. You never have to guess: Settings → Files & configuration (tick Show advanced settings first — the card is hidden in the basic view) shows the exact path, and the beta dialog described below names the licence file's full path and offers to open the folder it belongs in. If you drop a file named openjsq-portable.txt beside the program and that folder takes writes, OpenJSQ uses the program's own folder instead — which is what makes a jump-drive station possible.

The closed beta licence

Beta builds are licensed to one operator by callsign. This is not copy protection in the usual sense — it is so that a copy which turns up somewhere it should not can be traced back — but it does mean there is one file to put in place before the program will transmit.

  1. You are sent a file called openjsq-beta-license.json.
  2. Put it in the data folder, with that exact name. The full path is <data folder>/openjsq-beta-license.json.
  3. Start OpenJSQ. If the licence is good you go straight to the program; the title bar picks up your callsign and a day count.

If it is not good, OpenJSQ says so once, at startup, in a dialog titled OpenJSQ Closed Beta — before the main window opens, rather than opening and then refusing everything. The dialog names the licence file's full path, and carries two buttons: Open Data Folder, which opens the folder the file belongs in, and Exit.

Nothing is ever removed
Whatever the licence says, no expiry, refusal or mismatch deletes or resets anything — not your settings, not your messages, not your files, not your logs. The refusal messages say so in as many words, because a tester staring at a refusal has no way to know it from the outside. An expired beta is a reason to stop transmitting. It is never a reason to touch your data.

What each message means

What you seeWhat to do
“This build needs an OpenJSQ beta licence…” There is no licence file. Press Open Data Folder, put the file there, check the name is exactly openjsq-beta-license.json — Windows hides the .json by default, so a file that looks right may really be …json.json.
“This beta licence could not be verified…” The file is there but its signature does not check out — it is for a different build, or it was altered in transit. Mail clients and chat apps sometimes rewrite an attachment; ask for it again, zipped.
“This beta licence is not valid yet. Check that this computer's clock and date are right.” Almost always the computer's clock, not the licence. Check the date, the time and the time zone.
“This beta licence has expired…” Ask whoever issued it for a new one. Your station is untouched and will pick up exactly where it was.
“This beta build expired on date…” The program ran out, not the licence, and a fresh licence will not help — you need a newer build. The title bar warns about this one in advance and marks it (build).
“This computer's clock is set earlier than a date OpenJSQ has already seen…” The clock has gone backwards. Put the date and time right and start it again. A laptop whose battery died, or one that came back from a time-zone change with the clock set by hand, both do this.
“This copy is licensed to CALL, and this station is set to something else. You can read and receive, but it will not transmit until the callsigns match.” This one is not fatal, and it is the only one that is not. It is also the only one that never appears at startup: the program opens normally, the title bar carries the mismatch, and you meet the sentence when you first try to send. See below.
Receive-only is a real state, and it looks like a working station
A callsign mismatch does not stop OpenJSQ. It starts, it decodes, the Channel and Network pages fill up, and everything looks healthy — but the station will not key, presence and soundings are turned off at the source, and automatic replies are silenced. If your station hears everybody and nobody ever answers you, check the title bar and check that Settings → Station → Callsign matches the callsign the licence was issued to. That box holds the base callsign alone — a packet SSID such as -7 is picked on the Radio page and does not affect the match.

Being warned before it runs out

OpenJSQ counts down whichever expires first, the licence or the build. The title bar always carries the count beside your callsign — N0CALL - 23 days left, with (build) added when it is the program that runs out; inside 7 days it also spells the warning out in a sentence; on the last day you also get a notice at startup. The wording always says which clock is running out, because the two need different answers: a licence expiring is a message to whoever issued it, a build expiring needs a new download.

Am I set up? — the checklist

Everything below can be checked without transmitting. Work down it before your first call, and again whenever something stops working.

#CheckWhere
1Title bar shows your callsign and a sensible day count (beta builds).Window title
2Your callsign is set, and it matches the licence.Settings → Station
3Audio in and audio out both name your interface, not the computer's speakers and microphone.Radio → Radio & audio
4The radio starts, and the footer says what it is running.Start radio
5Audio path reads Running at 48000 Hz with transmit and receive under it. If it says receive only, you have no transmit side.Radio → Live status
6PTT shows idle (or KEYED) under the keying method, not UNAVAILABLE.Radio → Live status
7The receive meter moves with band noise and sits above its floor.Top bar, or Radio → Live status
8Dropouts is 0 / 0 after a few minutes of listening.Radio → Live status
9Something — anything — appears on Channel after a while on a live frequency.Channel
10Transmit level set with Tune into a dummy load, ALC barely moving (FSQ; on AX1200 and JG25 Tune is greyed out — see below).Radio → Transmit level

Items 1 to 8 are all checkable in a shack with the antenna disconnected. Only 9 and 10 need the outside world.

Proving your transmitter, without bothering anybody

Steps 1 to 4 put no signal on the air at all.

  1. Watch the software key. Press Tune on the Radio page with the radio switched off. Stop TX appears in the top bar and the status bar reads TX. That proves OpenJSQ's side.
  2. Watch the radio key. Turn the radio on, into a dummy load, and press Tune again. The transmitter should come up. If it does not, this is PTT — see Decodes but won't transmit in section 21.
  3. Set the level. Still into the dummy load: raise Drive until the rig shows the power you want with the ALC meter barely moving, then Stop tuning. On FM there is no ALC to watch — set drive so the deviation sounds like a normal voice on a second receiver, and no louder. Tune works only while FSQ is selected; on AX1200 and JG25 the button is greyed out, so switch to FSQ for the tone, or set the level on a short test message into the dummy load.
  4. Hear yourself. Put any second receiver — a handheld, a web SDR, an SDR dongle — on your frequency and press Tune once more. Now you know what your signal sounds like, and that it is going somewhere.
  5. Send something. Antenna on, an Allcall greeting on a live frequency. If nobody answers, that is normal — see below.
Testing with no partner at all
Two copies of OpenJSQ on two computers, two handhelds a room apart on a simplex frequency at minimum power, is the single most useful test setup there is: you control both ends, so anything that goes wrong is diagnosable. Two profiles on one computer will not work — one sound card cannot be two stations — but two cheap handhelds and two USB sound dongles will.

Where the people are

OpenJSQ does not pick frequencies for you, and this guide will not print a list that goes stale.

When something is wrong: what to send

A screenshot of a symptom is rarely enough to find a radio problem. There is a built-in flight recorder, and it is worth turning on before you try to reproduce anything:

  1. Open Channel, tick Show advanced settings at the top right, then tick Record diagnostics. It takes effect at once and needs no restart; the status bar carries a ● recording diagnostics reminder while it is on.
  2. Make the problem happen.
  3. Press Save bundle… and keep the ZIP.

The bundle holds the last ten minutes of receive audio exactly as the modem heard it, the decode history with offsets into that audio, and this station's configuration — which together answer nearly every “was it the radio or the software?” question. Send it with a sentence about what you expected and what happened instead.

3. First launch: the setup wizard

The first time you run OpenJSQ, a short wizard called Welcome to OpenJSQ walks you through setup. It is eight pages long — six if you tell it you use a KISS TNC, because two of them stop applying — and only one answer is truly required: your callsign. Everything else can be changed later on the Radio and Settings pages, and there's a Skip the rest button if you're in a hurry.

  1. Your station — enter your Callsign (required — it identifies every transmission). Location and Status are optional; they're what your station answers when someone asks where you are or what's new.
    The callsign box is checked as you type, and Next stays disabled until it is a callsign: three to twenty characters, letters and digits. A packet SSID such as -7 does not go here — it is picked later, on the Radio page. The wizard says so in as many words rather than refusing silently.
    The wizard, page 1 of 8 — the only answer that is required.
    Page 1 — Your station. The only required answer in the whole wizard.
    The callsign box refusing an entry that is not a callsign.
    The same page refusing HELLO: Next stays disabled and the reason is spelled out.
  2. Operating mode and connection — how OpenJSQ reaches your radio. FSQ using computer audio for HF keyboard work, AX1200 using computer audio to let OpenJSQ be the packet modem itself, AX1200 through an external KISS TNC if you already have one (Mobilinkd, Dire Wolf, a hardware TNC), JG25 using computer audio (experimental) where this build offers it, or Advanced or multi-kit setup — take me to the Radio page to finish here and go straight there. Don't agonize: you can switch any time on the Radio page, and section 16 compares the three waveforms properly.
    This choice decides what you are asked next. A TNC does its own modulation and keys the radio itself, so choosing it skips the sound-card and keying steps below — they are questions about hardware your station does not have.
    The wizard, page 2 of 8 — operating mode and connection.
    Page 2 — Operating mode and connection. This answer decides which of the remaining pages you see.
    The wizard's connection list, with the JG25 entry and the Advanced entry.
    The list itself. JG25 using computer audio (experimental) appears only in a build that offers it — where it does not, the entry is simply absent rather than present and refusing to start.
  3. Sound card — pick Audio from radio and Audio to radio. This step stops more first sessions than any other. Choose the interface wired to your radio (DigiRig, SignaLink, a USB rig's own sound device, or a virtual cable) — not the computer's own speakers and microphone. OpenJSQ tries to guess from device names and tells you when it has; check the guess, because a name is all it had to go on. Audio to radio also offers Receive only — never transmit.
    The wizard, page 3 of 8 — the sound card.
    Page 3 — Sound card, on a bench station wired through a virtual audio cable. A device whose name looked like a radio interface was pre-selected, and the page says so: the guess is from the name and nothing else, so check it.
  4. Keying the transmitter — how the radio is told to transmit. VOX — the interface keys on audio needs no extra wiring, is what a SignaLink and other audio-operated interfaces use, and is the safe first choice. Serial line (RTS/DTR) keys a control line — a DigiRig, and most interfaces with a dedicated PTT lead; pick the serial port below it. Keying through CAT (flrig, rigctld, or a direct rig connection) is on the Radio page under advanced settings — OpenJSQ does not drive rigs itself, which is why there is no list of radio models in the wizard.
    The page also tells you the one thing this step does not settle: transmit drive starts at its quiet default, and you set it on the Radio page while watching the meter.
    The wizard, page 4 of 8 — keying the transmitter.
    Page 4 — Keying the transmitter. VOX, a serial control line, or CAT. A serial port is listed here, but VOX needs none.
  5. What your station does on its own — four services are on by default, and this is where you are told about them: Answer questions about this station (every radio), Carry other stations' messages (FSQ, JG25), Accept files and notes left for you, and Hold mail for stations that are not on air. The relay one names its radios because AX1200 forwarding is a separate switch on the Radio page. Every one of them transmits under your callsign. Leave them on to be a good neighbour, or turn any off here or later in Settings. The page closes with the escape hatch: Net mode in the top bar holds all four at once for a directed net, without changing these answers.
    Reached through the KISS TNC route this is page 3 of 6 rather than page 5 of 8 — the two pages above it were skipped — but the page itself is the same. A station that already has a callsign never walks the whole wizard again: when a later build adds a question it has not answered, a short version titled A few new questions opens at this page instead, and leaves every earlier answer where it was.
    The wizard, page 5 of 8 — the four automatic services.
    Page 5 — What your station does on its own. Four services, all on, each saying what it transmits and on which radio.
  6. How it should look — choose Dark or Light, then Text size: Normal, Large, or Extra Large. Both apply immediately so you can judge them before leaving the wizard. Text size enlarges the text you read — messages, mail, channel traffic and the explanations on these pages; the meters, the navigation rail and the diagnostic cards keep their size, so nothing is pushed off the window.
    The wizard, page 6 of 8 — appearance.
    Page 6 — How it should look. Theme and text size, applied as you choose them.
  7. Listen — the proof step. Press Start listening and watch the level bar — nothing is transmitted. When it moves, the page reports the actual level in dBFS and grades it: Too quiet — turn the radio up below −40 dBFS, Usable between −40 and −6, Clipping — turn the radio down above −6. That is the audio level and nothing more — it does not yet show that a message decodes, or that your transmitter is set up. If the bar stays flat for ten seconds the page says so itself and names the three usual causes — wrong input device, radio volume down, cable not seated.
    If you chose a KISS TNC there is nothing to listen to here: your TNC does its own receiving, and its port is set on the Radio page.
    The wizard, page 7 of 8 — Listen, with audio arriving.
    Page 7 — Listen. Nothing is transmitted; the bar is the level arriving from the radio, graded in words — here −15 dBFS, Usable, while the other bench station was sending.
  8. Before you start — what was set up, what was left alone, and what still needs doing. Transmit level is untested on every route, so it is named here rather than discovered on the air. The paragraph at the foot is the one worth reading twice: it spells out, in plain sentences, every transmission this station will make without being asked.
    The wizard, page 8 of 8 — the review page.
    Page 8 — Before you start. What is set up, what is not, and every transmission this station will make on its own.
Tip
Nothing is committed until you press Finish. If you cancel, the same choices are waiting on Radio and Settings — and anything the wizard started for the Listen test is stopped, so a cancelled wizard leaves your radio exactly as it found it. Skip the rest leaves every page it passes untouched: the settings you already have are not replaced with a new install's defaults.

If your AX1200 path is an external KISS TNC, say so on the connection page — the wizard will skip the sound-card and keying steps, which do not apply to you, and point you at the Radio page for your TNC's port and speed.

4. A quick tour of the window

The OpenJSQ main window on FSQ with a conversation open, and Help at the foot of the rail.
The main window, radio stopped. The rail on the left is the whole navigation; the Help button at its foot opens this guide in your browser.

The rail on the left is the whole navigation. There is no menu bar. Top to bottom:

PageWhat it's for
ChatsConversations — one per station or group, like any messenger.
InboxMail: letters other stations left for you, and letters you wrote. Shows Inbox ●N when you have unread mail (Chats and Files carry the same kind of count).
FilesThe whole file service in one place: every transfer live and historical, the folder you share, another station's files to browse, and the log of what your station was asked for.
NetworkWho you hear, and the who-hears-whom map.
ChannelThe raw view: everything your receiver decodes, slot by slot, with the evidence behind it.
RadioHardware: sound card, PTT, levels, which waveform you are running, and Start/Stop.
SettingsWho your station is and how it behaves: identity, automatic replies, mail, presence, appearance, and policy — plus the technical limits on file sharing, whose switch lives on Files.
DeletedThe recycle bin, last of the pages. Everything you delete waits here 30 days before it's really gone.
HelpNot a page: the button at the very foot of the rail opens this guide in your web browser and changes nothing on screen. F1 does the same from anywhere. The guide travels inside the program, so it works with no internet connection; the copy it opens is written to the data folder, under help, each time you ask.

The top bar runs left to right:

ControlWhat it's for
Callsign chipWho you are on the air. Click it to change your identity in Settings.
Waveform chipWhich radio is running — FSQ, AX1200 or JG25. Hovering names the waveform in a sentence; clicking opens radio setup. See section 16 for what the three are and when to use each.
Profile buttonShows the active profile's name — Home ▾, say. Switch between separate stations — shack, portable, ARES. See section 19.
Receive-level meterHow much audio is arriving from the radio.
Dial (CAT only)The radio's frequency in MHz, read from the rig, in a box you can type a new one into. It appears only while a rig-control backend is configured and the radio is running — a station without CAT sees the bar exactly as before. A frequency is never sent mid-transmission: while you are keyed the box reads TX · QSY after and cannot be edited.
Mode (FSQ)Your speed. (Earlier builds also kept Busy margin here; it now lives on the Radio page's FSQ card — see section 15.)
Mode and FEC (JG25)What JG25 needs instead: how fast you transmit, and how much error correction goes with it. Section 16 explains both. Changing either restarts the radio, and a transmission already going out finishes first — a choice made while you are keyed shows with a dashed outline until it lands. AX1200 has neither box.
Net modeOne click: transmit nothing automatically. For directed nets. The button turns amber and reads Net mode ON while it is engaged.
● Radio off / ■ Stop TXOne slot, mid-bar, right of the receive-level meter. While the radio is stopped it holds the quiet ● Radio off pill; while you are actually transmitting the red ■ Stop TX button takes its place — its presence is itself the warning. While the radio is running and idle the slot is empty.
Start radio / Stop radioStarts and stops the radio.

Short-lived notices also appear here when the station does something on its own — ✉ Transmitting: announcing held mail for N1ABC., ✉ Mail from N1ABC arrived — see Inbox., a shared file going out — so unattended work is never invisible. Where the window is narrow a notice shortens rather than pushing the bar around: ✉ ← N1ABC for mail arrived, ✉ ✓ N1ABC for mail delivered. Most fade after a few seconds; a held-mail announcement carries a Cancel send button while it goes out.

The top bar showing Mail from N1TSB arrived, and the same notice shortened in a narrow window.
The top bar the moment a letter lands: the shortened notice ✉ ← N1TSB beside Stop TX, on a JG25 station whose Mode and FEC boxes leave no room for the long form. Where there is room the same notice reads ✉ Mail from N1TSB arrived — see Inbox.

In a conversation, an unbroken run of automatic presence sends is collapsed into one quiet line — “Automatic presence ×6 · last 11:14” — so a station that has been sounding all afternoon does not bury the two sentences somebody actually typed.

What a slot is
FSQ does not use one frequency inside your SSB channel — it uses several, side by side, and they are called slots. A station transmits on one of them; OpenJSQ listens to all of them at once, so you never have to pick the right one to hear somebody. The default plan has five, and one of them (1500 Hz) is the single frequency fldigi and FSQCall use — which is how a five-slot OpenJSQ station and a one-frequency fldigi station hear each other without either being reconfigured.

Slots are why the strip below has several chips, why a message can wait for a clear channel while other slots are busy, and why the Channel page reports traffic slot by slot. AX1200 and JG25 have no slots at all — one channel carries everything, and their strip shows a single chip.

Under the top bar sits the live spectrum strip. While receiving, it shows the audio and — on FSQ — the slot occupancy; the small slider at its right edge changes display sensitivity only. The slot chips live here now, each one sitting inside the band it describes — S1 ● when clear, S3 ● busy in amber, S3 ▲ TX in red for the slot you are transmitting on — with the frequency it listens on written in the band (1500 Hz · fldigi for the slot other FSQ programs use). Hovering a chip gives that slot's noise-floor numbers, which used to ride the top bar. AX1200 and JG25 have no slots — one channel carries everything — so on those the strip shows a single chip, AX ● or JG ●, that turns amber when the channel is busy and red with ▲ TX while you transmit; hovering it names the state in words (AX1200 packet channel clear). An RX or TX tag sits at the left of the trace. While the radio is stopped, the strip becomes useful rather than decorative: it says “Radio off — click to start listening”. If the missing callsign is the blocker, it reads “No callsign set — click to choose one” and takes you to Settings. The sensitivity slider is hidden while the radio is stopped.

Keyboard
Ctrl+1 through Ctrl+8 jump through the rail pages in order, Chats to Deleted; hover a rail button to see its number. Ctrl+F from any page opens Chats with the cursor in its search box. In Chats, Esc clears an active search first, then cancels an armed chat action. F1 opens this guide in your web browser.
The top bar while transmitting: Stop TX appears, the slot chip turns red with ▲, and the status bar reads TX · slot n.
The top bar while transmitting: Stop TX appears, the slot chip turns red with ▲, and the status bar reads TX · slot n.

The status bar at the bottom narrates what the station is doing (“Radio running.”, “TX · slot 3”), and says so plainly when something fails rather than leaving a button looking dead. The red TX always means your transmitter is keyed.

(Through an external KISS TNC that indication lags by the TNC's own delay — OpenJSQ knows when it handed the frame over, not when the transmitter actually came up.)

5. Quick start on HF — FSQ

Goal: from a working wizard to your first message in about five minutes.

  1. Tune the radio. Set your rig to a known FSQ frequency in USB (data/USB-D if you have it) — e.g. 7.104 or 3.588 MHz are common FSQ gathering spots in North America. Frequency and mode are set on the radio itself.
  2. Start the station. Press Start radio in the top bar (or the same button at the bottom of the Radio page). The footer reads “Running — 5 slots, monitoring all of them.” and the spectrum strip comes alive.
  3. Check your receive level. The RX meter should move with band noise and hover comfortably above its floor — set your radio and interface levels so that on an empty channel the small slot chips in the spectrum strip stay quiet instead of flickering busy. (A slot is one of several sub-channels FSQ stations share inside one SSB channel — OpenJSQ listens to all of them at once).
  4. Pick a mode. In the top bar's Mode box, start with FSQ-3 — it's the everyday speed and every FSQ program decodes it. (The four modes above the separator are the fldigi-compatible ones.)
  5. Listen first. Stations appear on the Network page as they're decoded, and everything on frequency shows on Channel. A few minutes of watching tells you who's around.
  6. Set your transmit level — once, carefully. On the Radio page, card Transmit level: Tune puts a real carrier on the air — use a dummy load or a clear frequency. Press Tune, raise Drive until your radio shows the power you want with the ALC meter barely moving, then press Stop tuning. FSQ puts out a steady, unvarying signal, so cranking for power buys you nothing — a clean signal with the ALC (automatic level control) meter barely moving beats a loud dirty one.
  7. Say hello. On Chats, open the Allcall conversation (that's everyone on channel), type a greeting, press Enter. The message waits for a clear channel, then transmits — the footer under your bubble reads Queued, then Sending, then Sent. (Through a relay it reads Sent to relay instead, which is a smaller claim and an honest one.)
  8. Nobody answers? That is normal — an FSQ channel can be quiet for hours, and silence is not a fault. Check the Channel page: if other stations are decoding there, your receive side works and you are simply early. If Channel is still empty after twenty minutes, try another frequency or another band. Section 21 covers the rest.
  9. Talk to someone. Click a station on the Network page (double-click opens their chat), or press on Chats and type their callsign. Try Actions ▾ → Ask for a signal report — the reply comes back as a plain sentence telling you how they hear you: N1ABC heard you at 12 dB.
Tip
Want other stations' heard lists to find you? Set Settings → Presence → Announce my presence, for example every 10 minutes. Add a Presence status if you want words such as “available” to ride with it. AX1200 carries that status in its beacon; FSQ sends it as an automatic Allcall line. Leave the status blank for the classic bare FSQ sounding.
Setting transmit level: press Tune, then raise Drive until the radio shows the power you want with little or no ALC.
Setting transmit level: press Tune, then raise Drive until the radio shows the power you want with little or no ALC.

That is a working HF station. Section 8 covers everyday operating — the next section is only for VHF/UHF packet, and nothing in it is needed for FSQ.

6. Quick start on VHF — AX1200 packet

On HF? Skip to section 8
This section is only for VHF/UHF FM. Nothing in it is needed for an FSQ station.

Goal: from a working wizard to your first packet message in about ten minutes, on 2 m or 70 cm.

  1. Choose the technology. On the Radio page, card Radio & audio, set Radio technology to AX1200.
  2. Set your packet address. AX.25 source shows your station callsign from Settings — it is not typed here — with an SSID list beside it. Leave it at No SSID, or pick one such as -7 for a handheld; the SSID distinguishes packet stations that use the same base call. If the callsign in Settings still carries an SSID of its own (an earlier build allowed it), the list is disabled until you remove it there.
  3. Pick the radio link. Under Radio link:
    • Built-in modem (sound card) — OpenJSQ makes the 1200-baud audio itself and keys your FM rig exactly like the FSQ setup (same sound card and PTT settings).
    • Serial KISS TNC — for a radio with a TNC built in, such as a BTECH UV-PRO over Bluetooth. Three steps, in order:
      • In the radio: turn KISS TNC on and Digital Mode Enable off.
      • In Windows: pair the radio with the computer.
      • Here: pick the COM port — OpenJSQ offers the right one first — leave Speed at 9600, and press Connect.
      No sound card and no PTT wiring are used: the radio does all of it.
    • Network KISS TNC — for a TNC that is a program on the network rather than a device on a wire: Dire Wolf, a Raspberry Pi beside the radio, or a shared TNC elsewhere in the shack. Enter its Host (127.0.0.1 if it is on this computer) and TCP port, then Connect. Like the serial TNC, it modulates, listens to the channel, and keys the transmitter itself.
      The one Dire Wolf mistake everybody makes
      Point OpenJSQ at the KISS port, not the AGW port. Dire Wolf listens for KISS on its KISSPORT line — 8001 by default — while AGWPORT (8000) speaks a different protocol entirely. A station aimed at 8000 connects perfectly and then never passes a single frame.
  4. Pick the channel profile. Network profile: use Dedicated OpenJSQ channel on your own simplex frequency. Choose APRS coexistence only if you must share an APRS channel — it politely disables files, relay, and automatic signal reports so you don't clutter the shared frequency.
  5. Start. Press Start radio. The footer reads “Running AX1200 - packet channel active.”
  6. Say hello. Chats works exactly as on FSQ. One packet-only extra: the Live / Verified chip next to the compose box. Live sends once; Verified gets acknowledged packet by packet and re-sends anything missing — pick Verified when the message matters and you're talking to one station.
  7. Send a file. On Files, pick a recently heard station from Destination (or type another callsign), click the file field or folder button, then press Send file. Progress, retries, and the result all show in the table; a partial transfer is resumable rather than restarted from byte zero.
AX1200 over a network KISS TNC — point it at the KISSPORT line, not AGWPORT.
AX1200 over a network KISS TNC — point it at the KISSPORT line, not AGWPORT.
The wizard did not turn AX1200 relaying on
The wizard's “Carry other stations' messages” is on by default, and it is easy to read that as settling the question. It does not: it sets the station-wide relay consent that FSQ and JG25 read. AX1200 has a second, separate switchRadio → Show advanced settings → AX1200 relay → Forward other stations' AX1200 traffic onward — and that one ships off.

So an AX1200 station straight out of the wizard does not relay for anybody, whatever the wizard's page said. If you want to be a relay on packet, tick that box; if you do not, you already are not one, and nothing needs doing. Either way it is worth knowing which of the two you have.
Note
On AX1200 the transmit speed is always 1200 baud — the Speed box on a serial TNC sets only the cable speed between computer and TNC (9600 is the BTECH default).

7. Quick start on VHF — JG25

Two reasons to skip this section
You are on HF. JG25 is for FM on VHF and UHF, and using it on HF is a mistake the program will let you make — section 16 explains why not.
Your build does not offer it. JG25 is experimental and appears only in a build compiled to include it. If there is no JG25 button on the Radio page and no JG25 entry in the wizard's connection list, this section is not about your copy, and nothing is wrong.

Goal: a working JG25 station in about five minutes, given that AX1200 or FSQ already works on the same computer. If neither does, do section 6 first — the sound card and keying are the same hardware and the same settings, and it is much easier to debug those on a waveform other people can hear.

  1. Both ends must be OpenJSQ, and the same build. This is the one requirement JG25 adds and it is not negotiable: no other program decodes this waveform, and the wire format is not frozen between beta builds. Agree with the other operator on a frequency and on which build you are both running before you start.
  2. Choose the waveform. Radio page, card Radio & audio, set Radio technology to JG25 — the third button on the row, in a build that offers it. Switching while the radio is running asks first, then restarts cleanly. The AX1200 panel disappears and the JG25 one takes its place.
  3. There is no packet address to set. Unlike AX1200, JG25 identifies your station by your callsign alone — the one in Settings → Station. Nothing else to fill in.
  4. Leave the sample rate at 48000 Hz. The JG25 modem works at 48 kHz internally; matching the sound card to it avoids a resampling step for no benefit.
  5. Leave Mode and Error correction alone to begin with. A new station starts at JG25-FM 2400 with F0 — the fastest mode and no error correction, which is what JG25 was measured and validated at. Both settings describe what you transmit and nothing else — every frame carries a protected header naming the speed and coding it used, so the far station follows you automatically and the two of you never have to agree in advance. Change either later, on the top bar, when the path tells you to.
  6. Start. Press Start radio. The spectrum strip shows a single chip — JG25 has no slots, one channel carries everything — reading packet channel clear, packet channel busy or packet transmitter active.
  7. Say hello. Chats works exactly as it does on the other two. The Live / Verified chip is there as on AX1200: Verified when the message matters and you are talking to one station.
  8. Send a file. As on AX1200 — Files, pick the destination, choose the file, Send file. Whole-file verification and resume both work.

If it does not decode

JG25's four tones span almost the entire audio passband, which makes it fussier about the audio path than AX1200 is. In order:

  1. Turn the radio's processing off. Speech processor, noise blanker, DSP noise reduction, any “clarity” or “enhance” feature. All of them reshape the audio the demodulator is measuring.
  2. Use wide FM if you have the choice. Narrow (12.5 kHz) FM clips the top of the passband, which is where JG25's fastest tones live.
  3. Leave Adaptive receive equalization on. It is on by default and it exists precisely because FM audio is not flat and the tilt differs from radio to radio. Turn it off only to compare against a path you know is flat.
  4. Drop a mode. A slower mode gets through where a faster one does not decode at all. Robust acquisition, a longer preamble, helps a receiver find a weak or fading signal in any mode.
  5. Raise the error correction. F3 spends the most airtime and survives the most damage.
  6. Check drive. Over-deviating on FM does not sound like distortion the way an overdriven SSB signal does; it just stops decoding. Set it by ear on a second receiver against a normal voice signal.
Before you rely on it
JG25 is experimental. The modem passes its own test suites and the whole service stack — chat, files, mail, station actions, relay and receipts — has been run end to end through it, but the full on-air qualification has not been done and the wire format may change in a later build. Use it where losing a contact costs nothing. For traffic that matters, use AX1200, which is finished work and which other people's equipment can hear.
Relaying on JG25
JG25 takes its relay consent from the same station-wide switch FSQ uses — Settings → Automatic replies, the wizard's “Carry other stations' messages” — which is on by default. It has no relay control of its own on the Radio page, and toggling AX1200's AX1200 relay while a JG25 station is running changes JG25's answer too. Like AX1200, JG25 carries one hop, not a chain. See section 16.

8. Everyday operating

Sending a message

Open a conversation, type, press Enter. That's the whole procedure. Under the box, a note line tells you what is about to happen. Messages wait for a clear channel before they transmit, so you can always change your mind: press on its bubble (Cancel — take this back before the radio keys). Once the radio has keyed, it is too late, and OpenJSQ says so.

Knowing what happened to it

Every sent message carries its delivery state underneath. The words are chosen carefully: OpenJSQ never claims more than it can actually prove, so a weaker-sounding state is usually the honest one rather than a fault.

StateWhat it meansIs it a problem?
QueuedWritten and accepted, nothing on the air yet — including while it waits for somebody else to finish using the channel.Not unless it sticks — see section 21.
SendingPTT is keyed and it is going out. Your transmitter is on. On AX1200 and JG25 it also reads Sending while acknowledgements come back or a retry runs.No.
SentThe whole message went out of your radio.No. It does not mean anybody received it.
Handed to the radioThe KISS TNC route's finish line: OpenJSQ gave the frame to your TNC. What the TNC did next is the TNC's business.No — it is the strongest honest claim about somebody else's modem.
Sent to relayYou asked another station to carry this onward, and that request went out.No. A relay may still decline; the route line beside it fills in as evidence arrives.
DeliveredThe far station acknowledged it, packet by packet. Only on AX1200 and JG25, whose frames can be acknowledged — a chat sent with Verified chosen, for example.No — this is the strongest state there is.
Failed / CancelledIt did not go, or you took it back.Failed is worth a look: on AX1200 the reason follows the word.
via CALL · unconfirmedRelayed, and nothing has been observed since.Usually not. Most relays cannot be overheard from where you sit, and none needs confirming to work.
via CALL · carriedYou overheard the relay putting it back on the air.No.
via CALL · deliveredThe destination itself sent a receipt. Only a receipt from the destination ever says delivered.No.
⚠ NOT VERIFIEDOn something you received (⚠ NOT VERIFIED — may contain errors): the sender is identified but not every character can be vouched for.Not a malfunction — it is the honest grade for a marginal decode. Read it, then press ✓ to approve it or ✕ to discard it.

The state word sits after the time and the mode — 18:34 | FSQ-3 | Sent — in amber while the message is on its way and green once it is Sent or Delivered.

Section 9 has the full journey line for a relayed message, and section 10 the grades OpenJSQ gives to everything it receives.

Talking to stations that are not running OpenJSQ

Plenty of the program works with people who have never heard of it, and it is worth knowing which half is which before you wonder why a feature seems to be ignored.

On FSQ, with fldigi or FSQCallOn AX1200, with any packet station
Plain chat, Allcall and directed — at the four classic speeds only (FSQ-2 to FSQ-6). OpenJSQ never sends a fast mode at a station that has not advertised it. Plain chat and anything else carried in ordinary AX.25 UI frames. A TNC, a Mobilinkd, Dire Wolf or another operator's packet station can all copy you, and you can share a channel with APRS.
The classic FSQ queries and their replies — signal report, location, heard list and the rest — because those are FSQ's own, not OpenJSQ's. Nothing above the frame. Files, mail custody, verified chat, delivery receipts and the network map are OpenJSQ services carried over AX.25, and a plain packet station will simply not answer them.
Relaying, which is part of FSQ itself. An APRS digipeater will repeat your frames if the path asks it to; that is digipeating, not OpenJSQ relaying, and the two are counted separately.
Not the fast modes, files, mail custody or delivery receipts — those are OpenJSQ's, and a station that has not advertised the capability is never sent one. Set Network profile → APRS coexistence when you share a channel: it turns off files, relay and automatic signal reports so you are not cluttering somebody else's frequency.

On JG25 the answer is simpler: nobody. It is OpenJSQ's own waveform and no other program speaks it — which is the whole trade described in section 16.

Knowing whether a station is workable

Two kinds of evidence answer different questions. When the radio link can measure it, the SNR under a message describes how that one copy arrived. On FSQ, hover the footer for the decode margin — how much signal you had to spare over the mode's decode threshold — and the footer itself adds low margin N dB when there was less than 6 dB, because the next fade will lose you. Link Quality instead summarizes how reliably that station's recent traffic has decoded.

Asking things politely

The Actions ▾ button in any single-station chat turns the classic FSQ queries into plain clicks: signal report, location, what's-new, heard list, software version, wake, repeat, shared files, and more. Each radio action loads the compose box and nothing transmits until you press Enter; Esc cancels. Station info… is different: it opens the local station panel and transmits nothing. In a group conversation the menu offers one question only, Ask for a signal report — see Groups in section 9.

When mail arrives

The rail shows Inbox ●1 and the chat notes “Mail from them arrived — see Inbox.” Open the Inbox, read, done. To leave someone a letter for later, use Inbox → New mail… — your station holds it, announces it once straight away, and keeps trying when they are next heard.

Net mode engaged: this station transmits nothing automatically until you turn it back off.
Net mode engaged: this station transmits nothing automatically until you turn it back off.

Staying a good neighbor

That's the basics
You can operate happily with nothing but Part 1 — the sections above. The rest of this document is the long version: every page, every control, every dialog — for when you want it.

Part 2 — Going furtherThe complete reference: every page in depth, plus how the station decides what to trust.

9. Chats in depth ↑ contents

Chats: the conversation list, link-quality badges, and a thread with its delivery states.
Chats: the conversation list, link-quality badges, and a thread with its delivery states.

The conversation list

Conversations appear for: Allcall (always present — it's the whole channel), every group you're subscribed to, stations you've added by hand, every station in your heard list, and anyone you have history with. Each row shows the callsign, an unread dot, a badge when they've left unread mail, the slot and signal they were last heard on, and a preview of the last message. A reception still coming in previews live, marked , character by character, as it decodes.

Press (or right-click → New conversation…) to start one. You do not have to have heard a station first — FSQ lets you call a station before it sounds. Type a callsign (portable suffixes work on FSQ; AX1200 uses the AX.25 callsign/SSID form), or a group name starting with @ or # — typing a group here also joins it.

The station panel for N1TSB.
The station panel: what this station has done, and how well you hear each other.

Finding old traffic and inspecting a station

Search chats (Ctrl+F) searches more than the preview you can see: it digs into everything that station has ever sent you, pulls the conversation up, and then narrows the open thread to the matching lines. Clear the box to return to the ordinary conversation list.

Click the callsign in an open conversation, or choose Actions ▾ → Station info…, for a non-modal card titled Station N1ABC with what OpenJSQ actually knows: whether they are on the channel now, first and last heard, last and best SNR, the last mode, whether their callsign checksum has been verified (FSQ), how many messages you have exchanged, and Link Quality. Missing evidence is shown as a dash rather than invented as zero.

Groups

A group is a shared address several stations listen to at once — @ARES, #SKYWARN. Joining is as simple as starting a conversation with the group's name, or listing it under Radio → Groups → Subscribed groups. One list serves every radio. Group traffic is broadcast: delivery is always Live, and 📎 Files is unavailable.

The Actions ▾ menu in a group offers one thing, Ask for a signal report; everything else is greyed with the reason. Every member whose station answers group questions replies after its own short delay, so the answers do not collide, and the answers are filed in the group's conversation — N1ABC heard you at 14 dB — while your question's footer counts them: 1 station answered, 3 stations answered. Because each question costs the channel an answer from every member, you may ask the same group once every 5 minutes by default; inside that time the menu row reads Ask for a signal report — again in 3 min. Both halves live in Settings → Automatic replies: Limit group signal report requests to one per group every (No limit, 1, 2, 5, 10, 15 or 30 minutes) for asking, and Answer group signal report requests (Automatically by default, and only while automatic answers are on) for whether your own station replies.

The conversation header

Above the thread, on the right, sit three controls and one piece of evidence.

The conversation header: Route, the Files menu open with its two entries, and Actions.
The header's three controls. 📎 Files ▾ is the one a messaging user reaches for; neither of its entries transmits from here.
“Shares files” is evidence, not a guess
The badge appears only when the station has actually said so — a capability answer carrying the bit on AX1200 or JG25, a capability token carrying the letter on FSQ, or a listing you have already decoded from them. A station with no evidence shows nothing at all, never a grey “unknown”, because “I have not been told” and “no” are different answers. Once you have decoded a listing the badge reads Shares files · seen 14:22 and that stronger form lasts 24 hours. The badge is not a permission slip: whether you may browse is their access policy's answer, given when you ask. And browsing a station with no badge is perfectly allowed — it is how you find out.

The compose row, left to right

A long conversation does not draw itself all at once. The newest 200 lines appear immediately and a bar above the thread says how many are still behind them — “1,340 earlier lines in this conversation are not drawn yet.” — with a Show 200 more button beside it. Nothing has been lost or trimmed; only the drawing is deferred, which is what keeps a two-year conversation from taking a visible moment to open.

The note line under the box is the app thinking out loud: what the message will do, what it costs (on AX1200: bytes, packets, and airtime), and any problem with it — before anything transmits.

The Actions menu, item by item

The Actions menu. Nothing goes on the air until you press Enter.
The Actions menu. Nothing goes on the air until you press Enter.

Open a single-station chat and press Actions ▾. As the menu itself says: each of these loads the box below — nothing goes on the air until you press Enter.

Menu itemWhat it does
Station info…First in the menu, and the one item that transmits nothing: the station card described above.
Ask for a signal reportHow do they hear you? Your question stays in the thread as Asked for a signal report, its footer says answered when it is, and the reply arrives as its own sentence: N1ABC heard you at 12 dB (or …heard you, but could not measure the signal). A station answering you automatically shows You heard N0CALL at 12 dB on its own screen, marked sent automatically.
Ask where they are (QTH)Their location text.
Ask what's new (QTC)Their status line.
Ask who they can hearTheir heard list.
Ask them to repeat that / Ask for a delayed repeat (type seconds 0–60, default 15)Their last message again, now or after a pause. After arming delayed repeat, type 060 to request that many seconds; blank or invalid input falls back to 15 seconds.
Ask what software they runProgram and version.
Wake them (sound their alarm)Sounds an alarm at their radio — even if they're “asleep.” Use sparingly.
Send an alert…An alarm plus your words at their station.
Send through a relay station…Prefills a one-hop route into the compose box for this message only. For a route that stays put, use the Route chip in the header instead — see below.
Leave a message in their mailbox…Stores a note at their station; they read it any time from their Inbox.
Browse their files…Asks that station for the list of files it shares. The list arrives on the Files page, in Browse a station, where you pick a row and download it. The remote path is never typed over the air. There is a second door to the same thing: 📎 Files ▾ → Browse their files in the same header.
Send a text file…On FSQ, transmits a small text file (8 KB cap — FSQ is slow); on AX1200 and JG25, hands off to the Files page.
Send an ICS-213 form…The EmComm general-message form as a fill-in sheet — see below.

Grayed items explain themselves — hover for the reason (station doesn't support it, radio not running, APRS profile, and so on).

Relaying through another station

The Route menu offering Direct and via N1TSA.
The Route chip: every station you have heard can be offered as a relay, and a longer chain is typed.

When a station is beyond your reach, you send through one that hears you both. The station in the middle retransmits your traffic; the recipient sees it as coming from you, tagged via whoever carried it.

The Route chip

In the header of any single-station conversation, beside Actions ▾, sits a chip reading Route: Direct ▾. Click it and you get Direct, then one via … entry for every station you have heard — hover an entry for that relay's link quality, so you are choosing on evidence rather than hope. Pick one and the chip becomes Route: via K4ABC ▾.

That route then stays set for that conversation until you change it. It is not a one-shot decision per message, which is the point: if a correspondent is only reachable through a relay, that is a property of the path, not of one sentence you happened to type. The route is per conversation and is forgotten when you restart — it never silently persists into a session where propagation has changed.

The chip does not appear on Allcall or a group. Everyone hearing a broadcast has already heard it.

What travels the route

Once a route is set, it carries almost everything you do in that conversation — ordinary messages, the questions on the Actions menu, alerts, and mailbox notes. A route and an armed action work together rather than cancelling each other: arm Ask for a signal report, and the note line reads the whole plan back to you before you press Enter. Under the compose box you will see ↗ Goes to K4ABC, who passes it to N0XYZ — the route in English, never in punctuation.

Longer chains

The chip offers one hop, because one hop is what almost everyone needs, and it never offers the recipient as their own relay. For a longer route, type it: VIA1;VIA2;DEST your message — each hop separated by a semicolon, destination last. FSQ will carry a chain; AX1200 and JG25 pass traffic through one relay only and refuse a longer route rather than quietly truncating it.

Every hop is a separate transmission, so a chain is slow, and every station in it has to be listening and willing to relay. The note line warns you about any hop you have not actually heard.

Routes the app will not let you send

Each of these is refused with the reason in the note line, never silently downgraded to a direct send:

What a relay can and cannot carry

TrafficThrough a relay
Messages, actions, alerts, mailbox notesYes, on every radio.
Verified delivery (AX1200, JG25)No — a relayed message goes out Live. An acknowledgment would come from the relay rather than the recipient, which would be a delivery confirmation that confirms nothing, so the app declines to offer it.
FilesUp to 256 KB, travelling as a letter's body. Larger than that, send it directly.
A long ICS-213One hop only. Past one frame the form travels as a file, and a file can be relayed through a single station, not a chain.
Browsing a station's shared filesNot yet. The listing travels as a file transfer and has no relayed form — ask that station directly. A route you have set is refused in words, with the route named, rather than quietly downgraded to a direct transmission you were never told about.
A long mailbox note on AX1200No. Past the frame size it becomes a file, and AX1200 file transfers do not relay. Shorten it or send direct.

Mailbox notes (the # convention)

Typing #your note in a chat stores the note in that station's mailbox instead of their chat window — they read it later from their Inbox, even if they weren't listening when you sent it. #[name.txt] your note gives it a file name. This is the classic FSQ store mechanism, so it works with fldigi stations too.

ICS-213 forms

The ICS-213 sheet, filled in as drill traffic, with its byte count.
The ICS-213 sheet, filled in as drill traffic, with its byte count.

Actions ▾ → Send an ICS-213 form… opens a fill-in sheet mirroring the paper form: To, From, Subject, Message, Signature; date and time are stamped automatically in UTC. A box at the foot, File it in their mailbox, so they send back a receipt, is ticked by default, and the button reads Send form. Like every other action, Send form transmits nothing by itself: it loads the compose box — N1TSB#[ics213-n1tsa-2609152129.txt], the form filed under a name your station derives — and the note line says ICS-213 for N1TSB is ready — press Enter to transmit it. The byte counter now explains the transport rather than simply refusing a large form: a short form rides directly, while a form that exceeds the short-message budget is carried by the JSQ file service. At the far end it still opens as an ICS-213 form in the conversation/Inbox, and the underlying transfer remains visible on Files. Short labeled-text forms remain readable by classic FSQ software.

Deleting

Use a message's button (Delete this message); delete a whole conversation from its header's 🗑 or the list's right-click menu. Everything goes to the Deleted page, where it waits 30 days and can be restored with one click (Restore puts it right back; restored files never overwrite — a name clash becomes name (restored).ext).

10. Reading what arrives ↑ contents

Chats told you how to hold a conversation. This section is about reading one: the numbers under each message, the badge beside a callsign, and how much the program is willing to vouch for any of it. It is the part of OpenJSQ an operator grows into, and none of it needs a setting changed.

The footer under every message

A message the transport will not vouch for arrives labelled, not hidden.
A message the transport will not vouch for arrives labelled, not hidden.

Every bubble carries a footer line, and it is worth learning to read — it answers most of what you want to know about a contact without going anywhere else. On a received message the fields are, in this order, separated by bars — 18:28 | SNR 29 dB | 100% | FSQ-3 | slot 2 | 4.8 ch/s (58 wpm):

FieldExampleWhat it tells you
Time14:32When it was decoded here, in local time.
SignalSNR 29 dBThe signal in dB above your receiver's own noise floor (not an absolute S/N). Above 40 dB it reads 40+; where nothing was measured it reads --, never a made-up number. On FSQ, hover the footer for the decode margin — how far the signal sat above the measured decode threshold for that mode. A margin near zero is the app telling you to slow down before the band does it for you.
Link qualitya colored 92% blockSee below.
ModeFSQ-3, AX1200, JG25-FM 2400/F0What carried it. A JG25 message names its mode and error correction together.
Slotslot 3Where on the channel — FSQ only, and only when the channel plan has more than one slot.
Realized speed4.8 ch/s (58 wpm)What the reception actually achieved — message characters divided by the channel time it occupied. It always reads below the mode's nominal rate, and the shorter the message the further below, because the frame's own header, callsigns and checksum share that same span. Hover for the arithmetic. A question or other request has no text to divide, so this place shows its air time instead: 2.8 s on air.

After those, a received footer adds notes only when they happen: via N1ABC on a relayed message, naming the station that actually handed it over; on AX1200, FEC recovered, 3/5 packets or live partial, missing packet, gap repaired, and APRS when it arrived under APRS coexistence; the outcome of a station action; low margin -2 dB on FSQ when there was little to spare; and no CRC on an FSQ message that carried no checksum.

A sent bubble is shorter — time, mode, slot where there is one, and the delivery state from section 8: 18:34 | FSQ-3 | Sent. There is nothing to measure on something you sent. Its notes say what else is known: answered or 2 stations answered on a question; sent automatically, automatic presence, carried for another station or mailbox service when a service rather than you sent it; 12/15 packets on a multi-packet AX1200 send; the relay journey below; and relayed for N1ABC.

Following a relayed message on its way

A message you sent through a relay carries a short journey line that fills in as evidence arrives:

via K4ABC · unconfirmedSent, and nothing has been observed since. This is not failure. Many relays simply cannot be overheard from where you sit, and no confirmation is ever required for a relay to work.
via K4ABC · carried 11:16Your station has positive evidence the relay put it back on the air — it overheard the retransmission, or heard the relay's own wrapped copy, or heard a digipeater repeat the frame.
via K4ABC · carried 11:16 · delivered 11:17The destination itself sent a receipt — delivered is added to whatever the line already said, so a relay you never overheard reads via K4ABC · unconfirmed · delivered 11:17. Only a receipt from the destination ever says delivered — a relay carrying your message is not the same as the far end receiving it, and OpenJSQ will not blur the two.

Messages sent before this tracking existed simply say so rather than pretending to be unconfirmed. And when evidence could plausibly belong to more than one pending relayed message, it promotes neither — an ambiguous match leaves both unconfirmed rather than crediting the wrong one.

A received message's footer: time, SNR, link quality, mode and realised speed.
A received message's footer: time, SNR, link quality, mode and realised speed. An FSQ footer adds the slot.

The Link Quality badge

Where a station has enough scored receptions, you will see a colored percentage such as 92%. That is Link Quality: how reliably this station's recent transmissions have actually decoded here. Signal strength is the physics when it is measurable; Link Quality is the outcome history.

80–100%Reliable — their traffic gets through.
50–79%Marginal.
0–49%Poor.
grayThe evidence is old, not bad. After 30 minutes without a scored reception the badge grays in the conversation header, the Station info panel and the Network page — a message's own footer keeps the colour it had when that message arrived — but the number itself is never decayed, so gray 92% honestly means "92%, measured two hours ago."

The number is always inside the badge, so color is never the only signal. You will see Link Quality in chats, the open-conversation header, incoming bubbles, the Station info panel, and the Network page's Link column. It is tracked on FSQ, AX1200 and JG25 and survives a radio restart. A dash means OpenJSQ does not yet have enough evidence to claim a score.

Honest limits
Link Quality is deliberately not a conversion of SNR, and it is uncalibrated on purpose — it drives nothing automatic. Treat it as a well-informed opinion about a station, not a measurement. The forensics of how a particular copy arrived live on the Channel page; the bubble only answers whether to trust the sender.

Who you are talking to (AX1200)

The header of an AX1200 conversation says what the other station can receive. Before anything has been exchanged it reads what they can receive is learned from the first file, station action or confirmed chat exchanged with them; once they have answered, it says so in plain words — can receive delivery-confirmed chat, files, station actions and group messages, with relays for others added when they do. A station that offers none of the extras reads receives plain chat only — a real answer, and deliberately worded differently from "not asked yet." What was learned is kept across a restart and dated, (as of Sep 11 19:57). This is why grayed items in the Actions menu are grayed: the other end has told you what it can do.

How much OpenJSQ will vouch for it

Sometimes a banner replaces the ordinary footer, and it is worth knowing why. Weak-signal decoding means occasionally receiving a message almost perfectly. Most software silently guesses at the rest. OpenJSQ grades instead, and shows you the grade:

What you seeWhat it means
received, checkedFraming intact and integrity verified (e.g. CRC-16 verified). Trusted — eligible to trigger automatic replies.
⚠ NOT VERIFIEDSender identified, but not every character can be vouched for. Shown with the banner ⚠ NOT VERIFIED — may contain errors; you approve it (✓) or discard it (✕, recoverable from Deleted). Never triggers automatic actions.
👁 MONITOREDMarked 👁 MONITORED — not vouched for: attributed text the receiver does not stand behind at all. Kept for completeness on the Channel page and marked wherever it appears.
REJECTEDFailed validation. On the Channel page — as Damaged in its Basic view, and as REJECTED with the reason under Show advanced settings — and never delivered to a conversation.

That table grades one message. The Link Quality badge grades a station — how reliably its recent traffic has decoded here — and the two are deliberately separate: a perfectly checked message from a station you have mostly been missing is still a checked message, and OpenJSQ will not average the two into a single reassuring number.

The Receive effort setting moves how much marginal text you see, but never what the station trusts — an unverified message stays unverified at every setting. Where OpenJSQ has a valid signal measurement, it normalizes SNR into the same 3 kHz reference so values are comparable across native radios. A KISS TNC that supplies no SNR is shown as unknown, not zero. OpenJSQ tells you when it has done something on its own; nothing happens off-screen.

Plain talk about “security”
OpenJSQ verifies integrity (checksums at several layers, whole-file hashes, acknowledged delivery). It does not encrypt — amateur radio is an open service — and it does not cryptographically prove who sent a message. “Verified” means the bits arrived intact and were acknowledged.

11. Sending and receiving files ↑ contents

Files: one transfer in flight, and completed transfers verified end to end.
The Files page in this build: the action bar, the Send a file card, the transfer ledger with one transfer in flight and one verified end to end, and — scrolling on down — Browse a station, Share a folder and Sharing activity. One page for the whole file service.

The Files page is the whole file service for every waveform — sending, another station's files, the folder you share, and the log of what you were asked for, in that order down the page. Under the title and its one-line description sit the three commands, then the Send a file card, then the transfer ledger. To send, choose a recently heard station from the editable station list (its placeholder reads Destination, e.g. N1RX-7), or type a callsign, click anywhere in the Choose a file field or its folder button, then press Send file. A zero-byte file is refused up front — there is nothing to send.

Each row has its own checkbox. Tick one or several rows, then use the action bar. The table shows direction, station, mode, file, size, Progress, rate, retries, state, and location. Progress counts blocks: 12 / 40 is what the receiver has confirmed, and an outgoing transfer that is ahead of its acknowledgements reads 16 / 40 sent · 12 confirmed. Being ahead is normal: the sender fills its window and only then asks. Hover the cell for the difference — blocks sent are not blocks delivered. Rate is measured by each station on its own clock, so the two ends of one transfer can differ slightly; Retries is counted by the sender and left blank on an incoming row. States include Queued Waiting Sending / Receiving Confirming Retrying Verified Failed Cancelled Paused. Confirming means every block is acknowledged and the whole-file verdict is still to come. Verified means the end-to-end file check completed successfully.

How it works underneath. JSQ File ARQ sends blocks, polls the receiver for the missing set, and retransmits only what still needs to arrive. On slow FSQ modes OpenJSQ sizes DATA blocks by airtime rather than forcing one enormous fixed block; if a transfer stops making progress it drops to smaller blocks and tries again — still the same transfer, so mail and resumption never lose track of it. The whole-file check is the final authority, not the number of apparently successful blocks.

The action bar: three verbs

The Files page action bar: Send a file, Browse files, and Share files with its state.
The three things this page does. Share files reports the state and the count, and takes you to the section — the switch itself is down there, because that click deserves to be deliberate.

Everything about files is on this one page now. Send a file… opens the file picker for the Send a file card just below. Browse files jumps to Browse a station. Share files reads Share files: Off, or Share files: On · 6 files, and scrolls you to your own sharing section. Nothing on the action bar transmits.

Moved in this build
Sharing used to be configured under Settings → Shared folder, and another station's list opened in a window of its own. Both are now on the Files page. Settings keeps only the technical limits and a read-only summary, so no control exists in two places and the summary cannot disagree with the switch. If you are looking for the old dialog, it is the Browse a station card.

Sharing a folder of your own

Off by default, and the first thing you see is an invitation rather than a switch:

The empty state: Share a folder with the stations you hear, with Choose a folder and How sharing works.
What a station that has never shared sees. Choosing a folder is itself the decision to share — that is what turns it on.

How sharing works spells out the whole contract before you commit to anything: you choose one folder; a station that has heard you can ask for the list of what is in it, and then ask for one file by its number in that list; your station answers only stations you allow, only files inside that folder, only up to the size and daily limits, and — if you choose Ask me first — only after you say yes.

Pick a folder and the invitation is replaced by the section that owns every sharing decision:

Your shared files: the switch, the folder, who may browse, and what happens when a station asks.
Your shared files on the Files page. The warning line is computed from the folder as it is now — that file really is over the ceiling, and a download of it really would be refused.
ControlWhat it decides
Sharing onWhether anybody may browse or download at all. Turning it off withdraws the offer immediately — the capability your station advertises follows the switch rather than waiting for the next request.
FolderThe one folder that is served. Nothing outside it is ever offered, hidden files are never listed, and links leading out of it are not followed. Open folder and Choose folder… sit beside the path, which is shortened in the middle when it is long — hover for the whole thing.
Who may browseStations I have heard (the default), Everyone, or Only these stations — which reveals an Allowed stations box.
When a station asksServe automatically, or Ask me first — each download then pops a question and the asker is told busy until you answer.

Under those, two lines the folder itself writes: a warning for every file the size ceiling would refuse, named individually so you can act on it before anybody asks, and the count — “6 files offered from this folder.”, or “Sharing is off — nothing is offered.” Changes apply at once; there is no Save button and no restart.

Two things to be clear-eyed about
The listing publishes your file names. Point this at a folder you assembled for sharing, not at your documents folder.
A callsign is a claim. Who may browse and Allowed stations decide who gets an answer; nothing on the air can prove who is asking. They are courtesy controls, never security.

Browsing another station's files

Browse a station: N1TSB's listing with File, Size and State.
Browse a station. The list is metadata, not a transfer — reopening the page costs no airtime, and only Refresh puts a request on the air.
  1. Choose the station. Type a callsign or pick one you have heard. Three doors lead here with the station already filled in: Actions ▾ → Browse their files…, 📎 Files ▾ → Browse their files in the chat header, and a right-click on a row in Network → Stations heard.
  2. Browse shows the list if this session already has it, and otherwise asks for it over the radio. Refresh always asks again. The distinction matters: one costs nothing, the other costs airtime and their rate-limit budget. The asking is visible in that station's conversation too — Asked to browse their shared files, then Asked to download shared file #3, each with its delivery state, and Download complete: shelter-roster.csv when the file lands.
  3. The status line says how old the list is“Last listing 14:07 · 5 files” — and adds a warning of its own once the station has not been heard for six hours or more: “list may be old — K4ABC has not been heard for 7 h”.
  4. Pick a row and press Download (or double-click it). The State column then tracks that entry — Requested 14:09, Downloading…, Downloaded 14:16, or a refusal — while the file itself arrives in the transfer table at the top of the page like any other transfer.

Why you pick by number and never by name. The download carries the row's position in the listing plus a short fingerprint of that entry, never a filename. A filename is a path, and a path is something that can be pointed outside the shared folder; a row number cannot. The fingerprint is what makes a changed folder come back as “refused: their files changed since you listed them — ask for the list again” instead of quietly sending you the wrong file.

Answers you may get instead of a file

A refusal is a sentence, not a silence, and most of them are ordinary. The same words reach you whichever waveform carried the request — FSQ has no status byte and answers in short text, AX1200 and JG25 carry a code, and both are translated into one vocabulary before you see them.

What the State column saysWhat it means
Refused: busy — try againAnother shared-files transfer is already running there, or the far operator runs Ask me first and is being asked right now. Wait — do not hammer it, which earns the next line.
Refused: asking too oftenYou asked again inside their per-station interval (10 seconds by default).
Refused: over size limitThe file is above their per-file ceiling — 256 KB unless they raised it.
Refused: sending budget spentThey cap how much they will transmit per day, and it is used up.
Refused: their list changedYour listing is stale. Refresh and download from the fresh one — the cached list is cleared for you.
Refused: no such entryThat row number is not in their current listing.
Refused: not sharing with youSharing is off, no folder is chosen, you are outside their Who may browse setting — or they answered No to the prompt. Those are deliberately the same answer on the air.
Refused: not supported thereThat station's build does not speak the shared-files service at all.
Retrying… / FailedA granted transfer that is being re-attempted, or one that ended without delivering.
No answer — try Download againNothing came back within three minutes of asking.

Sharing activity: what your station was asked for

Sharing activity: when, which station, what it asked for, and what your station answered.
Every ask and every answer, newest last. Here N1TSB asked for the file list twice and then fetched one file, and each request was served.

This is monitoring, not correspondence: your station working for somebody else, so it belongs beside the files rather than in Chats. The header counts today's requests; the table gives the time, the station, what was asked for ((file list) or a filename), and the answer your station gave, in this end's words — served — 14336 B, refused: asking too often, refused: not offered, refused: too large, refused: budget spent, waiting for you — while the far operator sees the same decision in the vocabulary of section 11's refusal table. It is cleared when the application restarts.

The technical limits, in Settings

Settings → Shared files: a read-only summary, Manage in Files, and the five limits.
Settings → Shared files keeps only the numbers you set once. The line at the top is the same state the Files page shows, computed from the same source; Manage in Files is the way back to the switch.

Under Settings → Shared files, with Show advanced settings ticked:

SettingDefaultWhat it does
Include subfoldersNoWhether the scan descends past the folder itself.
Largest file to serve256 KB64 KB, 256 KB, 1 MB, 10 MB or Unlimited. Unlimited is a real choice — your licence, your airtime — but a 10 MB file is hours of channel time.
Serve at most, per dayUnlimitedA daily ceiling on what you will transmit for other people: 1, 5 or 20 MB.
Each station may ask every10 secondsThe per-station interval. This is the one limit here that protects everyone on frequency rather than just you — the airtime an answer spends is shared. Removing it is a courtesy decision, not only a personal one.
Approval timeout2 minutesHow long an Ask me first question waits for you before the station is refused. The asker was told busy meanwhile; a refusal after the wait is the honest answer of a station whose operator was not there.
Limits worth knowing
The chat-side Send a text file… still caps classic FSQ text-file sends at 8 KB because slow FSQ airtime gets long quickly. The general JSQ file service is designed for reliable transfers on the packet waveforms, and AX1200 or JG25 is the practical choice for anything large. APRS coexistence disables the file service to protect the shared channel. A shared listing still cannot travel through a relay on any waveform — ask that station directly.

12. Mail: letters that wait ↑ contents

Inbox: letters left for you, one open in the reading pane, with the Holding count in the toolbar.
Inbox: letters left for you, one open in the reading pane, with Holding on the toolbar.

Mail exists for one situation: the other station is not on the air right now. Your station takes custody of the letter and handles delivery itself.

Writing a letter

New mail. Past the inline limit the letter travels as a file transfer instead.
New mail. Past the inline limit the letter travels as a file transfer instead.
  1. Inbox → New mail…
  2. To: the recipient. Leave with: normally This station (deliver it yourself) — or pick a mailbox station that's on the air more than you are, and it will carry the letter for you (it must have custody enabled; if it declines, your station keeps the letter).
  3. Write the letter and press Send when your own station will carry it. If you chose a third-party custodian, the button instead says Leave with <CALLSIGN> so the custody choice is explicit. The live counter is in bytes, not characters.

One announcement goes out straight away, heard or not — you just pressed send, and the worst case is one unanswered call. A small notice says so as the dialog closes: Held for N1ABC, and announced now. If they do not answer, it waits until they are heard — leave the radio running, and watch Holding for its progress. From then on it's automatic: when the recipient is next heard — even from a routine sounding — your station announces the letter again, they fetch it, and their confirmation releases it. Leave the radio running and watch Holding for progress.

The Holding window with one letter announced and waiting for its recipient.
Holding: the letters this station is responsible for, and what it is doing about each.

If nothing goes out at all, the activity line says which hold is stopping it — “Held for N1ABC. Net mode is on, so nothing goes out automatically.”, or “Held for N1ABC. Not transmitting: …” for a licence or transmit problem — rather than reporting that the letter is on its way.

Short letters and long ones

A letter that fits in one frame rides inside the mail message itself. A longer one is not refused — the recipient is sent a short notice and the text follows automatically as a file transfer. You are told which is happening before you commit, because the second costs a negotiated transfer on the air and the first does not.

RadioFits in one frame up toAbove thatHard ceiling
FSQ768 bytesSent as a file transfer. The dialog says so as you type — “923 bytes — over the 768-byte FSQ limit, so this letter travels as a file transfer (up to 256 KB)” — and the activity line notes “Sending the letter's body as a file transfer.” The recipient needs a build that speaks the file service.256 KB
JG25256 bytes
AX1200128 bytes

Past 256 KB the letter is refused with the reason, and the dialog points you at the Files page — which is what the recipient would have received either way. Letters left with a mailbox station work the same: an oversize deposit carries a referral and the custodian passes the file along.

Filing a letter: right-click for Reply, Save, Mark unread, Delete, Move to folder and New folder.
Filing a letter: right-click for Reply, Save…, Mark read / Mark unread, Delete, then the Move to folder heading over your folders and New folder…; inside a folder the menu adds Move back to Inbox and Delete folder.

Letters that arrive as a file

A letter too long for one frame travels as a file — the bench letter above did, at 288 bytes on JG25 — and still arrives as ordinary text in your Inbox, read back from the transfer once it is verified. A letter whose body is a file, on the other hand (a file handed on through a relay as a letter, say), shows in your Inbox as Attachment: name (n KB) rather than as body text. The file is kept exactly as it was sent, byte for byte — nothing is decoded, trimmed or tidied on the way in, because a letter that was acknowledged as delivered and then quietly altered would be worse than one that failed. The name is derived by your own station, never taken from the sender: a filename chosen by a remote station is a path supplied by a stranger.

The same rule constrains what you can send this way. A file relayed as a letter body has to be genuine text that survives the round trip — an empty file, one containing binary data, or one that is not valid UTF-8 is refused up front with the reason, rather than being carried and arriving as mush.

Finding, filing, replying, and steering delivery

Being a community mailbox

Settings → Mail → Hold letters for other stations (on by default) lets other stations deposit letters with you for third parties — a store-and-forward network needs stations willing to carry mail. Your own letters are always held by your own station regardless.

Why mail never double-delivers
Delivery is exactly-once by design. Your station remembers what it has acknowledged (for 30 days), so a repeated announcement gets answered from the log instead of fetched twice — even when two different custodians hold the same letter. Undelivered letters are given up on after 7 days by default — Settings → Mail → Give up on undelivered letters after changes it.

13. The Network page: mapping who hears whom ↑ contents

The Network page: who hears whom, with calibrated SNR on every leg, and the heard list beside it.
The Network page: who hears whom, with calibrated SNR on every leg, and the heard list beside it.

The right-hand STATIONS HEARD list is your receiver's memory. Its columns are Station, Signal, Link, and Heard. Signal is calibrated SNR when the active modem/TNC actually supplies a valid measurement; an external KISS path that cannot report SNR shows -- dB rather than a made-up 0 dB. Link is the recent decode-success score and is independent of signal strength. Double-click a row to open that station's chat.

The graph is the bigger picture. Arrows point at the station doing the hearing — A ⟶ B means B hears A. Blue straight arrows are first-hand paths: what your receiver heard, a station's own report about hearing you, or — drawn with -- and no number — a station whose traffic proves it decoded you, because it acknowledged your message, answered your request, replied to your file transfer, relayed your message on, or took custody of your letter (hover the leg and it says which); green curved arrows are hearsay from one remote station about another. Edge labels show dB when a valid SNR exists, 40+ dB above the measurable range, and -- dB when nothing was measured. Wheel zooms, drag pans, +//fit on the toolbar, and hovering an edge explains who heard whom and when.

Mapping beyond your horizon

Press Map network. Your station asks each neighbor who they hear and draws the combined graph. The same station-action dispatch is used on FSQ, built-in AX1200, and KISS AX1200; if a request cannot actually be queued, the crawl skips it with the refusal reason instead of pretending it waited for a remote timeout. The button becomes Stop mapping; stopping keeps partial results.

Reset clears the topology picture and the RELAY ACTIVITY table below it — not your heard list, and not any history. Switching profiles also clears the old profile's graph so a plausible-looking map from the shack cannot leak into a field profile.

Airtime
A heard-list query is a real transmission and a reply can run half a minute, so the crawl is bounded on every side: it never runs on its own, it sends at most six queries, it goes two hops deep, it asks each station only once, and it will not ask a station to relay through a path weaker than +3 dB — a marginal relay costs everybody airtime and rarely answers. A station that stays silent is dropped rather than retried. Run it when the channel can spare the time.

What a Stations heard row can tell you about files

A right-click on a Stations heard row: Open chat, Browse their files, Send N1TSB a file…
The right-click on a Stations heard row. The same two file verbs as the chat header, plus the way into the conversation.

A station that has given evidence of sharing carries a Shares files badge beside its callsign in Stations heard, with a small network icon — the same badge the chat header and the Files pickers show, from the same single record. No evidence means no badge, never a grey “unknown”: the program does not report a station as not sharing merely because it has not been told. Right-click any row for Open chat, Browse their files and Send … a file… — the same verbs as the chat header, and browsing a station with no badge is allowed, because that is how you find out.

Relay activity: what you carried for other people

RELAY ACTIVITY: traffic this station carried for other people, and whether it was passed on.
RELAY ACTIVITY: traffic this station carried for other people, and whether it was passed on.

Below the map, RELAY ACTIVITY lists the traffic your station has passed along for others. This is service work, not conversation — none of it ever appears in Chats or in an unread count, which is exactly right: being a relay should not fill your inbox with other people's mail.

Six columns: From (the station that wrote it), To (where it was going), Carried (what was relayed — on AX1200 a sentence naming the kind, Relayed a message for N1ABC, or file traffic, a station action, a control frame; on FSQ the text that was passed along), Heard, Passed on, and State. States run waiting for the channeltransmittingpassed on, with retrying, failed and cancelled where they apply. A row reading not passed on means your station heard the request and did not retransmit it — relaying switched off, or the traffic was a duplicate or a loop.

Two honest limits, stated in the column headers
From is a claim, not a fact. A relayed origin is carried inside somebody else's frame and is not something your station can verify. Hover any value in that column and it tells you so.
“Passed on” means you transmitted it — not that anyone heard it. A relay never learns whether the next station copied it. What your station can honestly say is that it put the traffic back on the air, and that is precisely what the State column claims and no more.

What the map answers in practice: who would make a good net control (everyone hears them), which paths are one-way (A hears B at +12 while B hears A at +2 — perfectly normal on HF, and exactly what you need to know), and who is only reachable via which relay.

14. The Channel page: everything your receiver hears ↑ contents

The Channel page in its Basic view: the colour legend, the filters, and every reception with its result.
The Channel page in its Basic view: the colour legend, the filters, and every reception with its result.

Chats shows conversations; Channel shows the channel — every slot, every decode, addressed to you or not, plus the evidence behind every decision. You never need this page to operate. You'll want it anyway.

The page has two views. Basic, the everyday one, answers “what came and went?”. Its colour key is received, checked · needs your eye · sent by you · damaged, and its history has four columns: Time, Station (N1ABC → you, you → everyone), Message in plain words (N1ABC heard you at 29 dB, file block 12, 102 bytes, mail announcement), and ResultReceived, Sent, Needs your eye, Damaged, Unreadable, Presence or Local note. A frame heard but not readable at all is listed as Signal heard, message unreadable. The filters are All, Received, Sent and Damaged. Selecting a row shows a short card — who, when, which radio and mode, then Result, Signal, Kind and Length — with Open chat with N1ABC › (Open in Chats › where the row names no station) and Show diagnostics ›. Keep history and Clear all are in both views, and so — on FSQ — is the Monitor squelch box beside the filters, which sets how strong a signal the live decoder cards react to and changes nothing about what is decoded.

Show advanced settings, at the top right, turns the same page into the evidence view the rest of this list describes. On FSQ, MONITOR SLOT and LIVE DECODERS show in both views.

Diagnostic recording: the Channel toolbar and the status-bar chip that says it is running.
Diagnostic recording lives under Show advanced settings: the Channel controls and the status-bar reminder that it is running.
What the recorder is, and is not
It records what your radio heard on frequency, never your microphone, and it transmits nothing; alongside the received audio the bundle also keeps this station's own transmit-path trace and the audio it generated for transmission, so both ends of a failed exchange are in it. The window is a rolling ten minutes, so save the bundle promptly after a problem — anything older has already been discarded. Saving still works after you untick the box, so unticking never throws away the evidence you just caught.
Do bear in mind what a bundle contains: ten minutes of everything your receiver heard, including other stations' traffic, plus your decode history and your station configuration. Send it to people you mean to send it to.
The Decode Inspector: every admission check, and the evidence behind the verdict.
The Decode Inspector: every admission check, and the evidence behind the verdict.
“Answering shortly” is not “ignored”
When another station asks your station something and the answer is held back — rate limiting, a busy channel, relay policy — the Channel log records “K4ABC asked: signal report — answering shortly”, with the reason in brackets after it. When the request is actually refused it records “— not answered” instead, again with the reason. The two are deliberately worded differently, because an operator who cannot tell them apart keeps retransmitting into an answer that is already on its way.

The Busy margin control on the Radio page's FSQ card belongs to this world: it's how many dB above a slot's own noise floor the signal must rise before the slot counts as busy (default 3.0 dB; 0 turns busy detection off). It gates only transmitting — decoding always runs.

Receptions that failed, on JG25

While Record diagnostics is on, a JG25 reception that never became a packet still gets a row. It is named JG25 receive rather than drawn as an arrow between two blank callsigns — nothing was recovered to read addresses from — and its inspector opens a Receive attempt group, followed by a Branches group, carrying the whole account: what the acquisition, header and body each decided, the mode and FEC if the header was read, the clock and timing figures if a body was demodulated, the SNR where the geometry allowed one, the busy-detector's capture with its RMS, peak, noise floor and why it closed, and the result of every equalization branch in the order they were tried. A field the decoder never reached reads null, never zero — a clock error of 0 ppm and a clock error nobody measured are not the same reading.

This matters because the alternative was silence: a reception that never acquired, one whose header checksum did not hold, and one whose header described an impossible frame all used to leave no trace at all, so a recording full of strong signals could sit beside a channel history with one row in it. Successful receptions keep their single traffic row — duplicating them would cost this page its readability for a comparison the diagnostic bundle supports better. The bundle now carries the same account as jg25-rx-attempts.jsonl and a jg25-summary.json whose funnel accounts for every reception, including the two losses that are not decode failures and look exactly like them: a reception the busy detector had no free slot for, and a good result the hand-off could not carry.

A successful frame can also be marked Rescued. On JG25 that means it decoded on a fallback equalization branch — the best-scoring branch could not produce it, which is the receiver telling you its emphasis setting is off from what this path wants. On AX1200 it means the frame check failed but OpenJSQ's own CRC-32 held, which points at a damaged end of transmission: an early unkey, a squelch tail, a discriminator transient.

15. The Radio page in depth ↑ contents

Everything hardware. Two habits to know: this page saves as you change things (no Save button), and the Show advanced settings toggle at the top right reveals the controls whose defaults already do the right thing. The pinned footer holds Start radio / Stop radio and a status line.

You will only ever touch four of these
This is the longest section in the guide and almost none of it needs a decision from you. On an ordinary station the controls that matter are Audio input, Audio output, Keying and the Drive slider — four answers, set once, and never touched again. Everything else already holds the value the bench settled on. Read the rest when something is wrong, or when you are curious; do not read it before your first contact.
The Radio page on FSQ with advanced settings hidden — the everyday view, with all three waveform buttons on the technology row.
The Radio page on FSQ, with advanced settings hidden — the everyday view. FSQ, AX1200 and JG25 sit on one row whether or not advanced settings are shown.

Radio & audio

Transmit control (PTT) and level

Live status

The card that answers “is this station actually working?” without going on the air.

Rig control (CAT) — advanced

Backend: None — OpenJSQ does not talk to the radio, flrig — already knows your radio, on localhost:12345, or Hamlib rigctld — more radios, better units, on :4532. With a backend connected you get live frequency/mode/meter readouts, a Set mode row to put the rig in its data mode, and the option of CAT keying. OpenJSQ deliberately shows rather than a stale number whenever the link can't vouch for a reading.

Groups

Subscribed groups is a full-width card on the Radio page, because one group list serves every radio. Enter one per line or comma-separated; group names must begin with @ or #. The larger box is meant to be audited at a glance rather than treated as a hidden protocol setting.

The Radio page on AX1200 with advanced settings shown.
The Radio page on AX1200 with advanced settings shown.

AX1200 settings

The AX1200 card with advanced settings shown — every control in this list, with its shipped default.
The AX1200 card on the built-in modem, advanced shown: every control below, with the value it ships with.

16. Choosing a waveform: FSQ, AX1200 and JG25 ↑ contents

OpenJSQ is one program over three different radios' worth of physics. The waveform decides how fast you can talk, how bad the path may get before you stop being heard, and who else can decode you — but it does not decide what the program can do: chats, mail, files, groups, the network map and relaying are the same services on all three. Pick the one that matches the band you are on, and change your mind later on the Radio page.

The three at a glance

 FSQ++AX1200JG25
Band it is for HF and NVIS — 40 and 80 m above all. Works on VHF/UHF too. VHF/UHF FM. VHF/UHF FM only. See the warning below.
Waveform 33-tone IFK+, 1.95 to 41 baud. Bell 202 AFSK, 1200 baud, 1200/2200 Hz. Continuous-phase 4-FSK, 600 to 1200 baud, two bits per symbol.
Speeds you can pick Eleven, FSQ-2 to FSQ-42 — see section 17. One. 1200 baud is the standard. Seven, JG25-FM 1200 to JG25-FM 2400 (the number is the bit rate).
Room it needs in the audio 430 Hz classic; up to 3 kHz on the widest Fast mode. About 2 kHz within the FM voice passband. Roughly 475–2600 Hz — very nearly the whole voice passband, in every mode.
Error correction None. Checksums tell you what arrived damaged. None on the link. Files carry their own FEC. Selectable — F0 to F3 convolutional coding, plus a CRC-32C over every frame.
Who else can decode you fldigi and FSQCall, at the four classic speeds. The Fast modes are OpenJSQ-only. Any AX.25 station; it can share a channel with APRS. Nobody. It is OpenJSQ's own waveform and no other program speaks it.
Verified chat No — FSQ chat is best-effort by design. Yes.Yes.
Reliable file transfer No. # is the file protocol on FSQ. Yes, with whole-file verification. Yes, with whole-file verification.
Letter that fits in one frame 768 bytes.128 bytes.256 bytes.
Relay chain you may ask for As long as you like — the route travels in the frame. One hop.One hop.
What the Channel page shows Slots, and the admission ladder behind every reception. Packet traffic.Packet traffic.
Status Shipped.Shipped. Experimental. Present only in a build compiled to offer it.

Which one do you want?

JG25 is for FM. Do not use it on HF.
JG25 was designed for, and tested on, ordinary FM voice radios on VHF and UHF. Every mode spreads its four tones across almost the whole audio passband — from about 475 Hz to about 2600 Hz — and runs at 600 to 1200 baud, which is the opposite of what an HF path rewards. On HF it would be too wide to be a good neighbour in a crowded band, too fast to survive fading and multipath, and its receive correction is shaped for the audio tilt of an FM discriminator rather than for an SSB receiver. On HF, use FSQ. That is what FSQ is for, and it is the only one of the three whose sensitivity is measured in the numbers HF operators care about.

JG25 in the program

JG25 is OpenJSQ's own packet waveform: continuous-phase 4-FSK carrying two bits per symbol, a slow protected header in front of every frame that names the speed and coding used, convolutional forward error correction over the body, and a CRC-32C the receiver checks before it will accept anything. It carries the whole service stack natively — chat with fragmentation, verified chat, reliable files with whole-file verification, custody mail, station actions, one-hop relay and delivery receipts.

It appears only in a build compiled to offer it. In a build without it, JG25 is reserved and unselectable, and the program says so rather than offering a waveform it cannot start; you will not see a JG25 button on the Radio page or a JG25 entry in the first-run wizard.

The Radio page running JG25, with its own settings panel.
The Radio page on JG25. The technology row's third button is selected, and JG25's own panel replaces the AX1200 one.
The JG25 settings panel: mode, error correction, acquisition, equalization, carrier-detect offset and presence.
Everything JG25 adds, in one card. Nothing here is shared with another waveform's panel.

Mode

Seven modes, JG25-FM 1200 to JG25-FM 2400, named for their raw bit rate. This sets what you transmit, and only that — the frame header tells the receiver which mode was used, so the far station follows you automatically and the two of you do not have to agree in advance.

The JG25 mode list, dropped down: JG25-FM 1200 through JG25-FM 2400.
The seven modes. Faster is not free: each step up buys throughput with tolerance for noise, drift and multipath.

Faster modes pack more into the same bandwidth and survive less. On a weak or fluttery path a slower mode gets through where a faster one does not decode at all. JG25-FM 2400 is the narrowest margin of the set, and it is the default because it is the mode JG25 was validated at; if it struggles on a path, Robust acquisition is the first thing to try.

Error correction

Spare bits sent alongside your data so the receiver can rebuild what the noise damaged without asking you to send it again. The rate is how much of the frame is your data:

The JG25 error-correction list: F0 through F3.
F0 to F3. Stronger correction means a longer transmission for the same message.
SettingRateWhat it means
F0No spare bits at all. Fastest; a damaged frame is simply lost. The shipped default.
F13/4Three quarters of the frame is your data.
F22/3Two thirds is yours.
F31/2Half is yours. The most robust.

Like speed, this is a choice about what you send: both stations choose independently and the header carries the answer. There is no automatic ladder yet — the pairing that suits the path is the operator's call, which is exactly why both controls are on the top bar as well as on the Radio page.

The top bar on JG25, carrying Mode and FEC where FSQ carries Mode alone.
On JG25 the top bar carries Mode and FEC — the two things you reach for when the path changes under you — where FSQ carries Mode alone. Both boxes need room: with them in place the window will not go narrower than about 1220 logical pixels.

The rest of the panel

What experimental means here
JG25's modem passes its own test suites, and the whole service stack — chat, files, mail, actions, relay, receipts — has been run end to end through it. What has not been done is the full real-radio qualification: the on-air work so far is a set of preserved FM captures between two handhelds, and the wire format is not frozen. Two stations must be running the same build to be sure of each other, and a future build may change the format in a way that breaks compatibility with this one. Use it where losing a QSO costs nothing. For traffic that matters, use AX1200.

17. The FSQ mode ladder ↑ contents

The FSQ Mode list: four interoperable speeds, a separator, then the Fast modes.
The mode ladder: four interoperable speeds, then the seven Fast ones below the separator. The list scrolls.

This section is about FSQ. AX1200 has one speed and JG25 has its own seven — section 16 covers those. The top bar's Mode box lists eleven FSQ modes. The first four are classic FSQ — every FSQ program ever shipped decodes them. The seven below the separator are OpenJSQ-only Fast modes: the same waveform run faster and wider. Changing mode restarts the radio (a transmission in progress finishes first).

ModeEffective baudChannel allocationWho can decode / what it wants
FSQ-21.95430 HzEveryone (fldigi/FSQCall). The weak-signal workhorse — usable copy to about −16.5 dB.
FSQ-32.93430 HzEveryone. The everyday default.
FSQ-4.53.91430 HzEveryone.
FSQ-65.86430 HzEveryone. The classic top speed.
FSQ-6W5.86860 HzOpenJSQ only. FSQ-6's speed with double-spaced tones — extra multipath/drift tolerance, and it still shares the channel.
FSQ-1211.71.3 kHzOpenJSQ only; any band.
FSQ-1615.61.7 kHzOpenJSQ only; wants a quiet band.
FSQ-2019.52.2 kHzOpenJSQ only; quiet band.
FSQ-3029.32.2 kHzOpenJSQ only; wants a strong, clean signal — strength, not just quiet.
FSQ-3635.22.6 kHzOpenJSQ only; strong and clean. The practical top rung.
FSQ-4241.03.0 kHzOpenJSQ only; strong, clean, and a genuinely wide SSB filter.

Every step up the ladder costs sensitivity, and predictably so: about 3 dB for each doubling of speed, 8.5 dB from the bottom rung to the top. The mode list's tooltips carry each mode's requirements. Beyond that physics, two rules keep the Fast modes civilized, and the app enforces both:

18. Settings in depth ↑ contents

Settings with advanced shown.
Settings with advanced shown.

Unlike the Radio page, Settings stages your edits: nothing takes effect until Save & restart radio (theme and text size are the exceptions — instant). Show advanced settings reveals the extra cards. The cards run Station, Known callsigns, Automatic replies, Mail, Shared files, Presence, Channel courtesy, Receive coverage, Appearance, Alerts, Files & configuration and About; while FSQ is not the selected radio, the settings that apply only to FSQ are hidden and the page says so.

Station

Callsign — the base call alone. A packet SSID such as -7 is not part of it: type one here and a note says so and Save is refused; pick the SSID on the Radio page instead. A callsign already saved with an SSID is kept, with a note asking you to remove it. Location (sent when asked), Station message (sent when asked). Advanced, and shown only while FSQ is selected: Check every message for corruption — adds a 5-character checksum to each message; off by default on the classic modes because fldigi shows those characters as line noise, always on in OpenJSQ-only modes.

Mail

Accept stored messages (mailbox), and Hold letters for other stations (the community-mailbox switch, on by default). Advanced: Give up on undelivered letters after (12 hours … 30 days, default 7 days — a ceiling, so a letter that arrived with a shorter deadline of its own keeps it) and Tell a station it has mail at most (every 30 s … 15 min, default 2 minutes). The second is not how often mail is delivered — a station that answers gets its letter at once; it is how often the “I am holding mail for you” notice may repeat, which is airtime everyone on the channel pays for.

Shared files

The switch is not here. Sharing on/off, the folder, who may browse, the allow-list and serve-automatically all live on the Files page — one home for the whole file service, so no control exists in two places and can be set two ways. What this card carries is a read-only summary in the same words the Files page uses (“File sharing: On · 6 files offered · folder …”), a Manage in Files button that takes you there, and, under Show advanced settings, the five technical limits: Include subfolders (No), Largest file to serve (256 KB), Serve at most, per day (Unlimited), Each station may ask every (10 s) and Approval timeout (2 minutes). Section 11 covers all of it, including which of those limits protects the whole channel rather than just you.

Presence

One schedule for every waveform: Announce my presence plus Presence status. AX1200 carries the status in its beacon, JG25 in its presence announcement, and FSQ sends it as a status-bearing automatic Allcall line. Clear the status to get the classic bare FSQ sounding. The interval list also carries an Every minute entry marked (bench) — it is there for testing on a cable and is far too often for a shared channel.

Two advanced fields decide how long a station you have heard goes on counting, and they are not the same thing:

Alerts

Sound when a message arrives (On/Off), and — important — Play alert sounds through. Point this at your speakers, never the radio's sound card: OpenJSQ detects that conflict and silences alerts rather than transmitting your chime, but naming the right device is better. Test sound checks it. The list starts with two entries that are not devices: System default output, and Silent (no sound) — the way to keep the arrival chime switched on while producing no sound at all, which is what you want on a machine sharing a room with the radio.

The rest, in one table

Settings → Automatic replies card.
Settings → Automatic replies: what your station answers, and how often you may ask a group.
CardWhat's in it
Automatic repliesWhether your station answers signal/location/heard queries automatically (Answer signal / location / heard queries (every radio)); whether it answers a group's signal-report question and how often you may ask one group (Answer group signal report requests and Limit group signal report requests to one per group every — Automatically and 5 minutes by default; see Groups in section 9); and whether it carries relayed traffic and answers a request that reached you through a relay (Carry relayed traffic (FSQ, JG25) and answer relayed requests (AX1200, JG25)). Every automatic transmission appears in the conversation stream. This is not the same setting as AX1200 relay on the Radio page: that one decides whether you forward other people's AX1200 traffic onward; the relay choice here carries relayed traffic on FSQ and JG25 and decides whether AX1200 and JG25 answer questions that arrived by relay.
Channel courtesy (adv., FSQ)In wide modes, wait for a clear channel: how long a wide-mode transmission waits for the whole channel to clear — Don't wait to Wait indefinitely, default 30 s.
Receive coverage (adv., FSQ)Decoders running at once: everything the mode can hear, or at most 9, 7 or 5. Each one costs roughly 1.6% of a processor core, so the default is generous on a modern machine and worth trimming on an old netbook. The speeds classic stations use are never dropped.
AppearanceColours (Dark/Light) and Text size (Normal/Large/Extra Large, with a live preview). Both instant.
Known callsigns (adv.)A roster of callsigns your station has verified, with Add, Remove, pin, import and export. Exact matches can surface damaged traffic for your review — they never authorize automatic actions.
Keep unpinned learned callsigns sets how long a callsign the station worked out for itself stays on the roster: 60 days by default, settable to 30, 90 or 180. Callsigns you typed in yourself, and any you have pinned, are kept regardless of this. Clear expired is what actually removes the ones past that age — nothing is deleted behind your back.
Files & configuration (adv.)Folder for files (with Browse… and Open), Settings file with Open folder, and a note on portable installs.
AboutVersion, build, credits, license.

19. Profiles: one program, many stations ↑ contents

The profile menu — separate stations on one computer.
The profile menu — separate stations on one computer.

A profile is one theater of operations — the shack, a POTA kit, an ARES deployment. Each one keeps its own callsign and radio setup, its own conversations, mail, network map, and files, and nothing crosses between them. If you operate in more than one situation, this is the feature that stops the situations contaminating each other.

What a profile owns, and what it doesn't

Per profileShared by the whole computer
Callsign and station identity · radio and audio setup · PTT and rig control · conversations · mail and Holding · file history · network map · themeText size — so a large-print setting follows you into every profile instead of needing to be set again in each one.

Working with profiles

Two things people get wrong

One profile, one window
Two copies of OpenJSQ may run side by side, but never on the same profile — two programs writing one profile's databases would corrupt them. OpenJSQ refuses at startup with “The profile … is already open in another OpenJSQ window.” Give the second window its own profile. (If you deliberately run two stations at once, start the second with --instance NAME, which also stamps the name into the window title so you can tell them apart on the taskbar.)
The map does not follow you into the field
Switching profiles clears the Network graph on purpose. A topology picture built at the shack — full of stations a base antenna hears — would be actively misleading in a field profile on a whip, and a map you cannot trust is worse than no map. The new profile's picture refills from what it hears.

A profile is a folder

Everything a profile owns lives in one directory, which makes the whole station portable: copy it to the field laptop and you have the same setup, the same mail, and the same history. Settings → Files & configuration (under Show advanced settings) names it: the Settings file row prints the profile's openfsq.ini, and the Open folder button beside it opens the profile directory. It also makes backup obvious — copy the folder before a deployment, and a mistake in the field costs you nothing at home.

20. Where your files live on disk ↑ contents

WhatWhere
Your files folderDocuments\OpenJSQ\<profile-id> by default — the id is the profile's name in lower case with spaces turned into hyphens, so Field Day lives in field-day — change the base under Settings → Files & configuration → Folder for files. An older Documents\OpenFSQ in that default place is renamed to OpenJSQ on first start, and the move is noted in migration-log.txt inside it.
Newly received files, any radio…\incoming. FSQ, AX1200 and JG25 share one destination because “what arrived?” matters more than which modem carried it.
Mailbox notes…\mailbox for the classic flat-file mailbox material owned by that profile.
Deleted file material…\deleted where applicable; the Deleted page is the operator-facing recycle bin.
This guide<data folder>\help\OpenJSQ_Help.html, written fresh from the running program each time you press Help or F1, so it always describes the build that wrote it.
Settings & historyInside the active profile's data folder. Settings → Files & configuration shows the exact settings path (under Show advanced settings). A portable install — a file named openjsq-portable.txt beside the program, in a folder that takes writes — keeps everything beside the program instead.
After upgrading from an older build
OpenJSQ does not move old received files out of the former fsq and ax1200 folders, because historical transfer rows already point to those paths. The first radio start after the change shows a one-time notice. New arrivals go to incoming; old files stay exactly where the old build put them.

21. Troubleshooting ↑ contents

SymptomWhat to check
The RX meter never movesThe wizard's own words: the wrong input device is selected, the radio's volume is down, or the cable isn't connected. Radio → Audio input → pick the interface, press Refresh if it was plugged in late. Windows tip: check the device isn't muted in the sound control panel.
The radio won't startThe footer status line names the reason. “Set your callsign in Settings first.” means exactly that, on every radio. Could not start: followed by a device error means another program has the sound card, or it's unplugged. A card that was saved by name and is no longer connected is refused outright — Audio input '…' isn't connected. Plug it in or choose another card on the Radio page. — and the picker shows that choice as … - not connected, rather than opening whatever now holds its old position in the list.
Decodes but won't transmitPTT. The Radio page's Live status card shows the PTT state; “PTT unavailable: … Receiving only” in the status bar means the keying method needs fixing — wrong serial port, or CAT keying with Backend still on None (the page warns in red).
Strong stations decode with characters missing from the middleLook at Dropouts in the Radio page's Live status card. All zeros means the sound card is keeping up and the problem is on the air. A number that climbs while you watch means the machine is not feeding the sound card in time — another program competing for it, power saving, or a machine that is simply busy. Press Reset counters, change one thing, and watch whether it climbs again.
Everyone says you're splatteringTransmit level. Tune into a dummy load and back Drive off until ALC barely moves. If the hint line says Clipping, it's telling you the same thing.
Messages sit at “Queued”The channel really is busy — or the busy detector is being touchy. The status bar will suggest it: raise Busy margin a little (Radio page, FSQ card), or set it to 0 to disable busy detection entirely. Per-slot states are on the Channel page.
Alert chime got transmitted / alerts are silentOpenJSQ silences alerts when they're routed to the radio's own sound card and says so in the status bar. Point Settings → Alerts → Play alert sounds through at your actual speakers.
AX1200 file transfers keep failingRadio page → advanced → File transfer pacing: set window to 1 and the wait to 4000 ms. If the errors stop, the radios were transmitting over each other's acknowledgments — raise listen toward 500 ms and re-widen the window gradually.
Dire Wolf connects but no frames ever passAlmost always AGWPORT (8000) where KISSPORT (8001) was wanted — see section 6. A station aimed at the AGW port connects perfectly and then never passes a frame.
An external TNC hears nothing from youCheck KISS port on the Radio page. Single-radio TNCs and every handheld with one built in use port 0. See section 15: a multi-port TNC silently discards frames sent to a port with no radio on it.
The far end rejects every frame, but says the header looks perfectOn the built-in sound-card modem this is the PTT tail being shorter than your sound card's output latency: the transmitter is released while the end of the frame is still inside the sound card, so the closing flag and checksum never reach the air. Open Channel and read the AX1200 diagnostics — it prints both numbers side by side and tells you which way round they are. The fix is to raise Key-down tail (Radio page, advanced) above the reported latency.
Wide FSQ modes always lose the same charactersStart with Radio → Receive emphasis → Adaptive (recommended). Wide FSQ is sensitive to a receiver that rolls off the upper audio tones; Adaptive learns from the radio's idle audio, locks its choice during a signal, and remembers the learned slope for that radio profile. Use Manual de-emphasis correction only when you specifically need the fixed correction (including an AX1200 path); Off is right for genuinely flat audio.
A file transfer gives up having moved nothingIf OpenJSQ reports that the same block failed every round, the far station is not decoding at this speed — it is not a lost-packet problem that more retries will fix. Drop to a slower FSQ mode, or send a smaller file.
A relayed message says “unconfirmed” foreverUsually nothing is wrong. Unconfirmed means only that your station has not overheard the relay retransmitting — and most relays cannot be overheard from where you are. A relay needs no confirmation to work. Check Network → RELAY ACTIVITY on the relay's own station if you have access to it, or simply ask the recipient.
Nothing relays through your stationTwo different switches. Radio → AX1200 relay decides whether you forward other stations' AX1200 traffic, and Settings → Automatic replies → Carry relayed traffic whether you forward it on FSQ and JG25; Settings → Automatic replies decides whether you answer questions that arrived via a relay. The RELAY ACTIVITY panel says which case you are in — if relaying is off it tells you so in as many words.
A relayed send is refusedRead the note line; it names the reason rather than failing quietly. The usual ones: more than one hop on AX1200 or JG25 (FSQ takes chains, they do not), a station appearing twice in the route, a route ending back at you, a file over 256 KB, or a shared-folder listing — which cannot be relayed at all yet.
Serial KISS won't connect (UV-PRO)KISS TNC on, Digital Mode Enable off, radio paired; take the COM port OpenJSQ offers first — it prefers the port Windows reports as the outgoing side of the pair and never offers the incoming one, falling back to the higher-numbered port only when it cannot tell; close the radio's programming software (it holds the port); speed 9600.
“The profile … is already open in another OpenJSQ window”Two windows may not share one profile (it would corrupt the databases). Close the other window, or start this one on a different profile.
A message shows ⚠ NOT VERIFIEDNot a malfunction — the honest grade for a marginal decode. Read it; Approve if it reads right, Discard if not. If you want fewer of these, move Receive effort toward Strict.
A failure only happens on the real radioBefore reproducing it, open Channel, tick Show advanced settings, then Record diagnostics. After the failure, press Save bundle…. The ZIP ties the last ten minutes of modem-input audio to the exact Channel-history rows and session configuration, which is far more useful than a screenshot of the symptom.
OpenJSQ will not start, and says something about a beta licenceSection 2 has all seven messages and what each one means. The two most common: the file is not named exactly openjsq-beta-license.json (Windows hides the extension, so a correct-looking file may really be …json.json), or the computer's clock is wrong. Press Open Data Folder in the dialog — it opens the folder the file belongs in.
It receives beautifully and never transmits, and nothing looks wrongOn a beta build, check the title bar. A callsign mismatch deliberately does not stop the program: you get a fully working receiver with the transmitter, presence, soundings and automatic replies all silenced. Make Settings → Station → Callsign match the callsign the licence was issued to. If that is not it, check Net mode is off and see Decodes but won't transmit above.
Your station is not relaying on AX1200 although the wizard said it wouldTwo switches, and the wizard only set one. Radio → AX1200 relay → Forward other stations' AX1200 traffic onward is AX1200's own, and it ships off. The wizard's “Carry other stations' messages” sets the station-wide consent that FSQ and JG25 read. Tick the AX1200 box as well.
Station actions get no reply, but only when a third station is relayingA known rough edge in this build, reproducible on the bench: on a channel where all three stations hear each other and one of them has AX1200 relaying on, replies to Actions ▾ queries can fail to come back — with peer capability discovery timed out or they had nothing to send against them — while ordinary chat between the same two stations keeps working. Turning the third station's relay off restores them. On a channel where every station hears every other, nobody needs to relay anyway.
You cannot find the shared-folder settings any moreThey moved to the Files page in this build — Share files on the action bar, or Settings → Shared files → Manage in Files. Settings keeps only the size, budget, rate and approval-timeout limits, plus a read-only summary.
Another station's file list opens nowhereThere is no window any more. The listing lands on the Files page under Browse a station, with the station preselected. Browse shows a list this session already has; only Refresh puts a fresh request on the air.
A station has no “Shares files” badge, but you think it sharesThe badge needs positive evidence — a capability answer, a capability token, or a listing you have already decoded. Not having been told is not the same as “no”, so nothing is shown. Browse them anyway; that is how you find out, and it is allowed.
Your station refuses every request with “not offered”Read Sharing activity on the Files page — it records the answer that actually went back. The usual causes: Sharing on is off, no folder is chosen, the asking station is outside Who may browse (the default admits only stations you have heard, so a station you have not yet decoded is refused), or an Ask me first question timed out.
A file in your shared folder is never servedThe section names it: “county-map.png is over the 256 KB limit — a download will be refused”. Raise Largest file to serve under Settings → Shared files, or take the file out of the folder. Zero-byte and control-character-named files are never offered at all.
JG25 loses about four packets in ten, both directionsTransmit turnaround on the Radio page's JG25 panel. Keying again within a few tens of milliseconds of unkey damages the waveform before it leaves the transmitter; the default is 1.5 s and lowering it is what causes this. Recorded audio replayed offline loses the same packets, which is how you tell this apart from a receive problem.
A JG25 signal is plainly there and the Channel page shows nothingOn the Channel page tick Show advanced settings and Record diagnostics, and look again: failed receptions then appear as JG25 receive rows you can expand, naming which stage gave up. Without it, only receptions that became packets are drawn — see section 14.
A station's shared-file list never appearsA listing is fetched as a file transfer, and it is only recognised as a listing if it arrives within 15 minutes of your asking. A slow AX1200 link, a retried transfer or a walk away from the computer can push it past that, and then the listing is filed as an ordinary received file in …\incoming instead — no error, just nothing under Browse a station. Look in incoming for a file you did not expect, and ask again when the channel is quieter.
JG25 does not decode from a station you can hear clearlyCheck you are both on the same build — the wire format is not frozen between betas. Then work down the list in section 7: radio processing off, wide FM, adaptive equalization on, drop a speed, raise the FEC, check drive.
There is no JG25 button on the Radio pageThat is not a fault. JG25 is experimental and only appears in a build compiled to offer it. Where it is not offered, the entry is absent rather than present and refusing to start — and if something does ask for it, the program says “JG25 is reserved in this build…” rather than a vague error.
Where did my deleted thing go?The Deleted page. Nothing you delete anywhere in OpenJSQ skips it. 30 days, then gone.

22. Glossary ↑ contents

ALCAutomatic level control — the circuit that pulls back your transmitter when it is pushed too hard. On a data mode any ALC movement means you are overdriving: back the Drive slider off until the meter barely twitches.
AllcallThe everyone-on-frequency address. FSQ's version of calling CQ.
APRSThe Automatic Packet Reporting System, which shares the 1200-baud packet world. OpenJSQ has an APRS-coexistence profile that keeps it quiet on a shared APRS channel.
ARQAutomatic repeat request — the receiver tells the sender what's missing, and only that is re-sent. How OpenJSQ moves files reliably.
AX.25 / AX1200The amateur packet-radio protocol, and OpenJSQ's 1200-baud implementation of it for VHF/UHF FM.
CustodyResponsibility for a mail letter. Exactly one thing releases it: the recipient's acknowledgment.
dB / SNRSignal-to-noise ratio in decibels. OpenJSQ's figures are calibrated in a standard 3 kHz bandwidth: 0 is workable, +10 is comfortable, −10 is weak-signal territory.
De-emphasisThe treble roll-off an FM receiver applies to its audio. Fine for voice; it weakens the high tones of a wide data mode, which OpenJSQ can correct.
DigipeaterA packet station that repeats your AX.25 transmission to extend range; a path such as WIDE1-1 is a familiar APRS-style example.
Dire WolfA widely used software TNC that runs on a PC or Raspberry Pi. OpenJSQ connects to it over the network as a Network KISS TNC.
FECForward error correction — extra parity sent alongside the data so the receiver can rebuild a damaged block without asking for it again. Used on AX1200 and JG25 file transfers, and selectable (F0–F3) on every JG25 frame.
FSQFast Simple QSO, by ZL1BPU and ZL2AFP — a 33-tone HF keyboard mode built for weak, fading paths. OpenJSQ's FSQ is fully compatible with fldigi and FSQCall.
Heard listThe stations a receiver has decoded recently. The raw material of the network map.
ICS-213The standard general-message form used in emergency communications. OpenJSQ carries it as a fill-in sheet and renders a received one as a form card rather than a wall of text.
KISSThe simple protocol a computer uses to talk to a TNC — over serial, Bluetooth, or the network. Its KISS port number (0–15) selects which radio on a multi-radio TNC; single-radio TNCs use 0.
Link QualityA per-station score, 0–100%, for how reliably that station's recent transmissions actually decoded here. It is built from what actually decoded, not converted from SNR; it works on every waveform, and grays when the evidence is old.
MarginHow many dB a reception sat above the measured decode threshold for the mode you are running. Positive is headroom; near zero means slow down.
Net modeA temporary top-bar hold on automatic transmissions for a directed net. Presence, automatic query replies, and held-mail work wait; operator-initiated sends remain available. It resets off at application restart.
PTT / VOXPush-to-talk — keying the transmitter. VOX keys automatically when audio is present; RTS/DTR keys via a serial control line; CAT keys through the rig-control link.
Peak over noiseThe second figure on a Channel page decoder card, peak 18 dB over noise, beside its SNR. Related to but deliberately not the same as SNR — it describes the tones that decoder is hearing, not the strength of a decoded message. (Earlier builds showed it as Q.)
Realized speedThe characters per second (and words per minute) a reception actually achieved, as opposed to the mode's nominal rate. Always lower, because the frame's own overhead shares the airtime.
Shared filesA folder you deliberately offer to other JSQ stations, managed on the Files page. Requesters browse a listing and download by entry number; sharing is off by default and every request/answer is logged.
SimplexOne frequency, both directions, no repeater in between — the normal arrangement for packet, and for OpenJSQ on VHF.
SlotOne of several sub-channels FSQ stations share within a single SSB channel. OpenJSQ listens to all of them at once.
SoundingA brief automatic station ID that keeps you on other stations' heard lists. Off by default in OpenJSQ.
SSIDThe -0…-15 suffix on a packet callsign (for example N0CALL-7) distinguishing several AX.25 station identities that share one base call.
TNCTerminal node controller — a packet modem. OpenJSQ has one built in (sound card) and also talks to external ones via KISS.

23. Numbers and defaults at a glance ↑ contents

Every default and limit the rest of this document mentions, in one place. None of these is something you have to set. They are the answers OpenJSQ already gives. Useful when someone asks "what is yours set to?", and useful for deciding what to change first.

On the air

Busy margin3.0 dB above the noise floor before a slot counts as busy. 0 disables busy detection. Radio page, FSQ card.
Channel courtesyWide modes wait up to 30 s for the whole channel to clear, then go anyway.
Key-up lead / key-down tail100 ms each. The lead is raised to 300 ms automatically when you pick CAT keying.
Serial keying lineRTS, normal polarity (keys on a high line).
Unasked signal reports (AX1200)Off. At most once every 30 s per station when on. Nothing at all over a KISS TNC.
Group signal reportsAnswered automatically. You may ask one group once every 5 minutes; settable from no limit to 30 minutes.
KISS handover allowance1500 ms — how long a frame may still be inside the TNC before an acknowledgment counts as late.
AX.25 application identifierAPZJQ1. Digipeater path: empty.
AX1200 default chat deliveryLive. The chip on the compose row overrides it per message.
Presence (sounding)Off. Nothing announces you until you choose an interval.
Net modeOff, and deliberately never remembered — a station silenced for one net must not still be dark next week.
AX1200 relay hops you will forward2 by default, settable 1–8. Off unless you enable AX1200 relay.
Relayed route length you can sendFSQ: a chain. AX1200 and JG25: one hop.
File carried through a relay256 KB.
Relay duplicate memory10 minutes on AX1200 — how long a relay remembers traffic so it does not carry the same thing twice.
Network crawl6 queries, 2 hops deep, and it will not relay through a path weaker than +3 dB.

Receive

Receive effortBalanced — the calibrated middle of five levels.
JG25 mode / FECJG25-FM 2400 and F0 (no FEC). Seven modes, JG25-FM 1200 to JG25-FM 2400; four FEC settings, F0–F3.
JG25 acquisitionNormal. Robust roughly doubles the preamble.
JG25 receive equalizationAdaptive, on. Branches at 0, +3, +4, +5, +6 and +8 dB/octave.
JG25 carrier-detect offset0 dB, settable −6 to +12 dB.
JG25 tonesFour per mode, each set falling between about 475 Hz and 2600 Hz; the widest, JG25-FM 2400, spans 500–2600 Hz. Header 950/1350/1750/2150 Hz at 350 baud.
Receive emphasisAdaptive. Manual's corner frequency defaults to 210 Hz, settable 50–1000 Hz.
Sound-card sample rate48000 Hz. The decoders run at 16000 Hz regardless; OpenJSQ resamples.
CAT pollingEvery 1000 ms, and stopped while transmitting.
Spectrum display floor−70 dBFS. Display only; it changes nothing about decoding.
Link QualityGrays after 30 minutes without a scored reception. The score itself is never decayed.
Diagnostic recordingA rolling 10 minutes of receive audio, when switched on.

Mail

Fits in one frame768 bytes on FSQ, 256 bytes on JG25, 128 bytes on AX1200. Above that a letter travels as a file transfer.
Largest letter256 KB. Past that, send it from the Files page.
Undelivered letters expire7 days. Settable 12 hours – 30 days.
“You have mail” noticeAt most once per recipient every 2 minutes. Settable 30 s – 15 min.
Receipts kept30 days.
Holding for othersOn. Your own letters are always held by your own station regardless.
Nearby / forgettingA station stops counting as nearby after 2 hours and is forgotten entirely after 24 hours.
Learned callsigns kept60 days, unpinned only. Pinned and hand-entered callsigns are kept indefinitely.

Files

Text file from a chat (FSQ)8 KB.
AX1200 file size limits64 MB in, 64 MB out. Settable 1–4096 MB.
Blocks in flight16 by default — the shipped window. The protocol itself allows up to 32 before the sender must stop and ask what is missing, so raising the window above 32 buys nothing.
AX1200 file error correction16 data blocks, 4 repair blocks. Clamped at 32 and 16.
Concurrent transfers16 in, 4 in from any one sender, 16 out.
Shared filesOff. Once on: browsable by stations you have heard, served automatically, subfolders excluded, 256 KB per file, no daily cap, one request per station per 10 seconds, and an Ask-me-first question that expires after 2 minutes.
“Shares files” badgeShown only on positive evidence. A decoded listing holds the stronger form for 24 hours.
Conversation drawn at onceThe newest 200 lines, then 200 more per Show 200 more (fewer, when fewer are left).
JG25 transmit turnaround1.5 s, settable 0–30 s.
Deleted itemsKept 30 days, then really gone.

Numbers other people's software cares about

Dire Wolf KISS port8001. Not 8000 — that is AGW, a different protocol, and a station pointed at it connects and then never passes a frame.
KISS port number0, unless your TNC documents otherwise.
Serial KISS speed9600 — the BTECH default, and the cable speed only. The radio still transmits at 1200 baud.
FSQ compatibility slot1500 Hz, which is where fldigi and FSQCall listen.

OpenJSQ by Jerome Goddard II (W4IJG) · Copyright © 2026, All Rights Reserved · current OpenJSQ source is distributed under the repository's proprietary license; third-party material keeps its own license terms. FSQ was designed by Murray Greenman ZL1BPU and Con Wassilieff ZL2AFP.
Describes OpenJSQ 1.0 as shipped, September 2026 — what the program does today, not what is planned. Labels quoted in blue match the program's own text. Build reference: the text was checked against commit b0c8b01a on main, 15 September 2026, and the Help button that opens this guide, and the JG25 button in the Radio page's basic view, arrived in the build of 16 September. The screenshots were taken the same day from that commit, compiled with the experimental JG25 provider enabled so its controls could be photographed, on a bench of two stations (N1TSA and N1TSB) joined by a virtual audio cable; where a picture and the text disagree, the text is current.