Chat, mail, files, and a live map of who hears whom — through a sound-card modem or a KISS TNC.
OpenJSQ 1.0.9 operator guide · FSQ · AX1200 · JG25
Describes OpenJSQ 1.0.9. If a control here does not match what is on your screen, the application is right and this page is behind.
New to OpenJSQ? Start with First contact in five minutes. What changed in each version is in the Version notes at the end.
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.
The short way from a new copy to your first message. Each step names the section with the details. If something does not go as written, the checklist in section 2 and Troubleshooting say what to look at.
Documents folder, and run openjsq-desktop.exe. There is no installer. On a closed-beta copy, put openjsq-beta-license.json in the data folder first (The closed beta licence). On Linux, build from source (Installing).Nobody answers? That is normal on a quiet channel. If the Channel page shows other stations, your receiver works and you are early. Sections 5, 6 and 7 go through each waveform step by step. If a transmission has to stop, press ■ Stop TX in the top bar, or Ctrl+Space from any OpenJSQ window (section 4). The same guide and a first-contact page are also on the web at openjsq.com/application.
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 waveforms. 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 still experimental. 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.
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.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.
| Piece | What 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; Linux by building from source. There is no macOS or Raspberry Pi package, and a macOS build from source is untested. Nothing fast is required — OpenJSQ is not a demanding program — but see Dropouts in section 22 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. |
OpenJSQ cannot see any of these, and every one of them will look like a software fault if it is wrong.
| On the radio | Set 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 / compressor | Off. It is designed to squash a voice, and it will mangle a data signal. |
| Noise blanker, DSP noise reduction, notch, AGC-fast | Off 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 level | Wherever your rig's data-mode gain lives (menu item names vary). This and OpenJSQ's drive sliders (one per waveform) multiply; set the radio's once and then leave it, and do all further adjustment in OpenJSQ. |
The wizard's sound-card question 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.
arecord -l. Note what is listed.If you plugged the interface in after starting OpenJSQ, press Refresh on the Radio page. The wizard's sound-card section has no Refresh: it reads the list each time its page is shown, so go back a page and forward again.
Documents folder is fine — and run
openjsq-desktop.exe. There is no installer and nothing is
written to the registry. Everything the program needs travels in the folder.cmake -S . -B build && cmake --build build. The desktop
program is build/desktop/openjsq-desktop.%LOCALAPPDATA%\OpenJSQ\OpenJSQ; on macOS and Linux it is the
equivalent under your user data directory. You never have to guess:
Settings → Files & configuration (open the card's More options first) 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.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.
openjsq-beta-license.json.<data folder>/openjsq-beta-license.json.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.
| What you see | What 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 shows the callsign the licence was issued to, which is not yours, and you meet the sentence when you first try to send. See below. |
W4IJG, W4IJG/CRB and
W4IJG-7 are all the same operator to it.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; from 7 days out the title also spells it out in a sentence; on the last day that sentence becomes a notice at startup instead. 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.
Everything below can be checked without transmitting. Work down it before your first call, and again whenever something stops working.
| # | Check | Where |
|---|---|---|
| 1 | Title bar shows your callsign and a sensible day count (beta builds). | Window title |
| 2 | Your callsign is set, and it matches the licence. The preview under the identity boxes reads back what each waveform will transmit: with FSQ / JG25 name set to Same as AX1200, one line, FSQ / JG25 / AX1200: W4IJG-7 — one name on every waveform; with Callsign with suffix, two, FSQ / JG25: W4IJG/CRB and AX1200: W4IJG-7. Answered once: neither the suffix nor the SSID is ever touched again because you changed waveform. | Settings → Station |
| 3 | Audio in and audio out both name your interface, not the computer's speakers and microphone. | Radio → Radio & audio |
| 4 | The radio starts, and the footer says what it is running. | Start radio |
| 5 | Audio 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 |
| 6 | PTT shows idle (or KEYED, or transmit stopped by the operator after a Stop TX) under the keying method, not UNAVAILABLE. | Radio → Live status |
| 7 | The FSQ, AX1200 and JG25 rows say what each waveform is doing; the one you selected reads Selected — what you type goes out here. | Radio → Live status |
| 8 | The receive meter moves with band noise and sits above its floor. | Top bar, or Radio → Live status |
| 9 | Dropouts reads all zeros, and the audio path is keeping up, after a few minutes of listening. | Radio → Live status |
| 10 | Something — anything — appears on Channel after a while on a live frequency, on any of the three waveforms. | Channel |
| 11 | Transmit level set with Tune into a dummy load, ALC barely moving (FSQ; on AX1200 and JG25 Tune is greyed out — see below). Each waveform has its own drive slider. | Radio → Transmit level |
Items 1 to 9 are all checkable in a shack with the antenna disconnected. Only 10 and 11 need the outside world.
Steps 1 to 4 put no signal on the air at all.
OpenJSQ does not pick frequencies for you, and this guide will not print a list that goes stale.
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:
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.
The quickest route is the Report a problem… button beside Save bundle… on the Channel page (with Show advanced settings ticked), or the arrow beside Help at the foot of the rail (or a right-click on Help). One window offers everything:
The form cannot carry files, so send the bundle separately: email it to contact@openjsq.com, or post it on the forum (forum.openjsq.com).
The first time you run OpenJSQ, a short wizard called Welcome to OpenJSQ walks you through setup. It is four pages long, and only one answer is truly required: your callsign. Everything else can be changed later on the Radio and Settings pages, and from the second page on there's a Skip the rest button if you're in a hurry. Cancel setup, at the left of the button row, leaves without saving anything.
-1 to -15. FSQ / JG25 name says which name FSQ and JG25 use, and each of its two choices shows the name it gives: Same as AX1200 — W4IJG-7 (chosen to start with: one name on every waveform, or your callsign alone if you picked no SSID) or Callsign with suffix — W4IJG, whose line carries a fixed / and the suffix box — P for portable, CRB for a net's own tag, CRB/P for both. The suffix box is greyed out while Same as AX1200 is chosen, and what it holds is kept. These are the same answers the Settings page keeps, and they are the whole of your station's identity: OpenJSQ works out what each waveform transmits from them, so you never edit anything when you change waveform. More about your station (optional) opens two more boxes, Location and Station message; they're what your station answers when someone asks where you are or what's new, and whatever you type in them is saved even if you close the section again./CRB or -7 into it and the page says which box each belongs in rather than refusing silently.
CRB after the fixed slash, and the preview reading back what each waveform will transmit — FSQ / JG25: KK4IB/CRB and AX1200: KK4IB. No SSID was picked, so AX1200 carries the plain callsign.KK4IB-7 in the callsign box: Next stays disabled, and the reason names the box each part belongs in.The rail on the left is the whole navigation. There is no menu bar. In a window shorter than about 640 px the rail scrolls. Top to bottom:
| Page | What it's for |
|---|---|
| Chats | Conversations — one per station or group, like any messenger. |
| Inbox | Mail: 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). |
| Files | The whole file service in one place: every transfer live and historical, the folder you share (and, if you choose, files other stations send you published straight into it), another station's files to browse, and the log of what your station was asked for. |
| Network | Who you hear, and the who-hears-whom map. |
| Channel | Everything your receivers decode on every waveform, as a feed with the newest at the bottom and each entry tagged with its waveform — and, in Advanced, the evidence behind it. |
| Radio | Hardware: sound card, PTT, levels, which waveform you are running, and Start/Stop. |
| Settings | Who your station is and how it behaves: identity, automatic replies, relaying and repeating messages for others, automatic traffic on HF, mail, the files you accept and how much, presence, appearance, and policy — plus the technical limits on file sharing, whose switch lives on Files. |
| Deleted | The recycle bin, last of the pages. Everything you delete waits here 30 days before it's really gone. Delete forever removes a received attachment's saved copy, but never a file of yours that you attached to a letter you sent. A file the bin cannot trace back to where it came from is restored into your files folder. |
| Help | Not 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 small arrow beside it, or a right-click on it, lists Operator guide and Report a problem… (Reporting a problem). 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:
| Control | What it's for |
|---|---|
| Callsign chip | Who you are on the air — the identity for the radio you are running, as that radio will send it: W4IJG-7 on every waveform when FSQ / JG25 name is Same as AX1200, otherwise your FSQ/JG25 suffix on FSQ and JG25 and your AX1200 SSID on AX1200. (Left of it sits the OpenJSQ wordmark.) It reads NO CALL until a callsign is set. Click it to change your identity in Settings. |
| Waveform chip | Which waveform you transmit on — FSQ, AX1200 or JG25. The other two are still received (section 16). Hovering names the waveform in a sentence and, while the radio runs, lists all three with the sentences of the Radio page's Live status — FSQ: Selected — what you type goes out here.; clicking opens radio setup. See section 17 for what the three are and when to use each. |
| Profile button | Shows the active profile's name — Home ▾, say. Switch between separate stations — shack, portable, ARES. See section 20. |
| Receive-level meter | How 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. |
| ● Radio off / ■ Stop TX | One slot, right of the meter, or of the dial when CAT is on. 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. Pressing it drops the PTT line at once, throws away the audio already queued, and stops what is still waiting to go out: queued messages, answers held for later, outgoing file transfers and, on JG25, a verified message still waiting for its acknowledgment (these end here and nothing more of them is sent, not even an ABORT; a file you are receiving is kept), while a fault of this station's own (a key-up the radio refuses, a PTT line whose state is lost, a sound card that stops playing) keeps those files and verified messages: they go again a few seconds after it, and only if the transmitter fails three times without getting any of them out, or the fault stops every key-up for a minute (a PTT alarm, no working PTT; a busy channel does not count), do they end, marked failed for the transmitter rather than cancelled, a delayed repeat or echo still waiting (a PTT failure drops these too), and on AX1200 a station action still waiting to learn what the other station supports, whose capability question is withdrawn too. What has already gone out can't be recalled, and what you have received and stored is untouched, and the status bar says Transmission stopped. Through a KISS TNC, a frame the TNC has already accepted may still go out; only the radio can stop that. Ctrl+Space does the same from any OpenJSQ window. While the radio is running and idle the slot is empty. |
| Mode (FSQ) | Your speed (section 18). Changing it does not restart the radio: the change is used from your next transmission. Anything already queued or arriving, and a file transfer in progress, finish on the old speed first; until then the box shows a dashed outline, and its tooltip says what it is waiting for. A wide mode (FSQ-12 and up) takes the whole channel, and your Channel mode choice comes back when you step down. (Earlier builds also kept Busy margin here; it is now FSQ busy margin on the Radio page's Receivers 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 17 explains both. Changing either does not restart the radio: the change is used from your next transmission. Anything already queued, and a JG25 file transfer in progress, finish on the old setting first; until then both boxes show a dashed outline, and their tooltip says what they are waiting for. AX1200 has neither box. |
| Net mode | One click: transmit nothing automatically. For directed nets. The button turns amber and reads Net mode ON while it is engaged. When net mode is off but something else, such as a licence problem, still holds transmit, it reads Net mode with an amber outline, and its tooltip begins Net mode is off. This station still transmits nothing automatically: … |
| Start radio / Stop radio | Starts and stops the radio. Start radio can be refused — no callsign, an identity this waveform cannot transmit, a sound card that has gone — and the status line says which; Stop radio never is. Nothing about a saved callsign is a reason to keep transmitting. |
In a narrow window the bar gives way rather than holding the window wide. Once the window is narrower than the whole bar needs (about 1115 px on FSQ and about 1250 px on JG25 with standard Windows fonts), it drops the receive-level meter (the Radio page's Live status card still has one), the OpenJSQ wordmark and the words Mode and FEC, and tightens its spacing; the selectors and their tooltips stay, except that on JG25 the Mode list then shows its short name (FM 2400) and the FEC box folds away (FEC is on the Radio page too). The window then narrows as far as its pages allow, the same on every waveform: about 820 pixels with standard Windows fonts, wider with a larger Text size. Choosing JG25 never makes a narrow window grow. The first window opens wide enough for the whole bar when your screen allows; if the window is narrower than that, you see the compact bar described here. A short window works too: when it is shorter than about 640 px, the page list on the left scrolls (and keeps the button of the page you are on in view) instead of holding the window up, so the window fits a 768-pixel laptop screen. Ctrl+1 to Ctrl+8 and F1 reach every page whatever is in view.
Short-lived notices also appear here when the station does something on its own — ✉ Transmitting: announcing held mail for N4UZZ., ✉ Mail from N4UZZ 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: ✉ ← N4UZZ for mail arrived, ✉ ✓ N4UZZ for mail delivered. Most fade after about 12 seconds; a held-mail announcement carries a Cancel send button while it goes out.
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. Presence is never new chat: it lights no unread dot, counts in no badge and does not replace a conversation's preview — those answer only to what somebody typed.
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, 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, at the Normal speeds; with a CAT dial each caption adds the frequency in MHz). Hovering a chip gives that slot's noise-floor numbers. 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 (on AX1200 it clears about 4 seconds after the channel holds only noise) and red with ▲ TX while you transmit; hovering it names the state in words (AX1200 packet channel clear). Over a KISS TNC the chip reads AX ● unknown. 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. The chips describe the selected waveform only: the two waveforms received alongside it have no chip of their own, although the trace shows all the audio they hear.
With more than one monitor, Chats, Inbox, Files, Network and Channel can each be moved into a window of their own and dragged to another monitor. Right-click the page's button on the rail and choose Open Chats in its own window, or press Ctrl+Shift and the page's number (Ctrl+Shift+1 for Chats; the number is in the rail button's tooltip). To put it back, close the window, press Back to main window at its top, choose Bring Chats back on the rail, or press the same keys again; Bring all windows back does every one. Radio, Settings and Deleted always stay in the main window.
The page is moved, not copied: there is still only one Chats, and the unread counts on the rail keep updating. While a page is out, its place in the main window shows a note with Show the window and Bring it back, its rail button carries a small mark of two overlapping squares, and clicking the button brings the window forward. Ctrl+1 to 8 work from every window, and a link such as Open in Chats brings Chats forward wherever it is. Each window has its own title, Chats — OpenJSQ · W4IJG, and its own taskbar entry, and can be maximised.
Each window starts with a thin station strip: your callsign, the waveform and speed, and whether the radio is off, listening, receiving, the channel is busy (with how long) or you are transmitting (with how long). While you transmit the strip turns red and shows ■ Stop TX. Ctrl+Space stops transmitting from any OpenJSQ window, even when you are typing in a message box or a dialog is open. It does that only while your transmitter is keyed; at any other time it is an ordinary key, and Ctrl+Shift+Space is not it.
OpenJSQ remembers which pages were out, where, and on which screen, and puts them back at the next start. If that monitor is not connected then, or the window would be off every screen, the page opens in the main window and the status bar says so. Closing the main window closes them all, and a window never keeps the program running. Prompts the program raises by itself (an alert, a shared-file approval, Cannot transmit) appear on the main window's monitor. Placement on a real second monitor has not had a bench pass yet; if a window lands somewhere odd, Bring all windows back puts everything home.
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. Notices that need nothing from you — an automatic restart of the receive audio, or a receiver for another waveform that could not start beside yours — are shown without Error:, and the Radio page's Live status goes on showing the second. Section 22 has both. 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.)
Goal: from a working wizard to your first message in about five minutes.
W4IJG-7 sender under its full name and can answer it (section 9).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.
Goal: from a working wizard to your first packet message in about ten minutes, on 2 m or 70 cm.
-7 for a handheld; the SSID tells apart packet stations that share a callsign, and W4IJG-1 and W4IJG-2 are two different stations to everything on the channel. An FSQ / JG25 suffix is simply left off here — AX.25 cannot carry one — and the AX1200 card says so in as many words. With FSQ / JG25 name set to Same as AX1200 (the choice a new station starts with), FSQ and JG25 send this same name, so you are one station everywhere: one conversation, one heard row and one mail address for each person you work. Answer the Station card once and this line follows the waveform buttons by itself: switching waveform is never an identity edit.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.
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.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.
W4IJG-7, or your
callsign alone if you set no SSID; with Callsign with suffix it
is W4IJG/CRB. The Station identity line under the
waveform buttons reads it back — W4IJG-7 on JG25 — read-only, and
following the buttons by itself, so coming to JG25 from AX1200 needs no identity
edit at all. JG25 accepts an SSID of 1 to 15 after a hyphen and refuses any
other hyphen (W4IJG-99), with the reason. Nothing else to fill in.JG25's four tones span almost the entire audio passband, which makes it fussier about the audio path than AX1200 is. OpenJSQ receives JG25 whichever waveform is selected, unless Radio → Receive → Multi-receive → Other waveforms is Off or the link is a KISS TNC, and it follows the JG25 panel's settings, so this list applies while you are on FSQ or AX1200 too. In order:
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 Cancel in the status line of its bubble, beside the words that say where it stands (its tooltip reads Take this back before the radio keys.). Once the radio has keyed a message, it is too late: the bubble reads Already sent and has no Cancel, and OpenJSQ never cuts a frame that is on the air. Only ■ Stop TX does that. Taking back what is waiting, below, has the rest.
If a message cannot be sent at all, a dialog says why and what you typed stays in the box: Address cannot be sent on this waveform when the selected waveform cannot carry the address (section 9), and Message not sent, Action not sent or Mailbox message not sent for anything else, such as a closed-beta copy that may not transmit. While the radio is stopped there is nothing to refuse: the box and Send are greyed, and the box reads Radio is off. Whatever you type goes out on the waveform selected on the Radio page, even in a conversation whose last message arrived on another (section 16). When that happens, a line above the compose box says so and offers to switch (section 9).
Anything of yours that has not gone out yet can be taken back, from whichever page you are looking at. Every Cancel reads the same list of what is waiting, so they never disagree with each other.
What a row says after you click Cancel:
| The row says | What it means |
|---|---|
| Cancelled before it went out | It had not reached the air. Nothing was transmitted. |
| Cancelling - telling N4UZZ | A file whose offer had already gone out. It is ended here, and a short ABORT is on its way to the other station. |
| Cancelled | Taken back. |
| Given up | A letter you no longer hold: Given up: it will not be delivered. If another station is delivering it, the row reads Given up here: another station may still deliver it, and it may still arrive. |
| Already sent | A chat whose frame is already on the air. There is no Cancel, and OpenJSQ never cuts a frame that is being sent. |
A row can also read Already finished (it ended before your click) or Can't be taken back: the link already has it (a KISS TNC).
What Cancel all waiting never touches. It reads the list once, at the click, asks first, and takes back only the items it named: nothing that starts waiting afterwards. It leaves alone anything incoming, anything your station relays for others, automatic traffic (receipts, answers, echoes) and letters carried for other stations; a shared-folder answer to another station or a letter's text carried for one is service traffic, and keeps its own Cancel on the Files page. The only thing it sends is the short ABORT that ends a file whose offer already went out. What has already gone out is left as it is, and your own letters are given up (one that another station is delivering may still arrive, and the answer says so).
Stop TX is not Cancel. ■ Stop TX and Stop transmitting keep their emergency meaning: they drop the PTT now and stop everything still waiting to go out, whether or not you chose it (section 22). Cancel takes back only the items you pick. Giving up a letter in Holding (section 12) stops its text too, even if it is already going out as a file, so the recipient does not get it after all.
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.
| State | What it means | Is it a problem? |
|---|---|---|
| Queued | Written and accepted, nothing on the air yet — including while it waits for somebody else to finish using the channel. A question, download or mailbox request to a station that is still answering your last one (or to anyone through the same relay) waits here too, reading Waiting for N4UZZ's answer.; it goes once that answer, a refusal or the file arrives, or the time the answer should take has passed. A file on its way between you holds it too, unless nothing of the file has been sent or heard for fifteen minutes (twenty on FSQ). Cancelling a question that has already gone does not end that wait: its answer may still be on the way. If you change the conversation's route meanwhile, it goes on the new route (one asked through a relay never goes direct by itself); deleting the conversation takes it back. Through a relay, once you hear the relay carry the question on, only the answer's way back is waited for. It also waits while your receiver hears the channel in use, up to three minutes from asking. Plain chat never waits for an answer. | Not unless it sticks — see section 22. |
| Sending | PTT 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. |
| Sent | The whole message went out of your radio. | No. It does not mean anybody received it. |
| Handed to the radio | The 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 relay | You 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. |
| Delivered | The 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 / Cancelled | It did not go, or you took it back. A send still under way when you stop or restart the radio — a waveform switch included — is marked Failed, with the reason The radio stopped before this transmission completed. Send it again. On AX1200, a message that was still waiting when you pressed ■ Stop TX reads Not sent: transmitting was stopped (Stop TX). One that never went out reads Not sent: the radio stopped or restarted before this went out., and a verified JG25 message that went out but was not yet acknowledged reads Sent, but the radio stopped before the acknowledgment arrived. Before a setting restarts the radio, OpenJSQ says how many messages are still waiting and will not be sent. | Failed is worth a look: on AX1200 the reason follows the word. |
via CALL · unconfirmed | Relayed, 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 · carried | You overheard the relay putting it back on the air. | No. |
via CALL · delivered | The destination itself sent a receipt. Only a receipt from the destination ever says delivered. A station sends one for a message that reached it through a relay on FSQ, AX1200 and JG25 alike. A station in net mode sends no receipts, so a message relayed to one holding a net stays unconfirmed or carried until later. | No. |
| ⚠ NOT VERIFIED | On 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.
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 FSQCall | On 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. OpenJSQ answers them at the speed the asker used. So is repeat my message to everyone: fldigi's ! or ~ followed by text is answered exactly as fldigi answers it, and an fldigi station's own undirected text (call: text) is shown like any other message. |
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. Names such as W4IJG-7: fldigi hears such a station under its full name and can answer it, but cannot itself be one (fldigi drops kk4ib-1 hello without showing it). Not yet tried with FSQCall. |
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 17.
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.
The Actions ▾ button in any single-station chat turns the classic FSQ queries into plain clicks: signal report, location, what's-new, heard list, what the station supports, wake, resend your last message, repeat my message to everyone, 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.
The rail shows Inbox ●1 and the chat notes “Mail from N4UZZ arrived — see Inbox.”, or “… arrived via K4ABC — see Inbox.” when a mailbox station carried it. 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.
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 (which all three waveforms' receivers fill, section 16), 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 — the last message somebody typed. The time on the right is when that message was sent or received, on the calendar: 14:07 today, Yesterday 14:07, 24 Sep 14:07 earlier this year, with the year added before that; hover it for the exact moment. It says when you last talked, never when the station was last heard — a message you sent a minute ago does not mean anyone heard back. A station's automatic presence line, like a bare sounding, refreshes the signal badge but never the preview, the unread dot or the timestamp, so a station heard only by its presence reads Heard 18 min ago — how long since this receiver last heard it, kept up to date while the list is open. A reception still coming in previews live, marked ▸, character by character, as it decodes. In the thread itself each day opens with a heading: TODAY — 26 SEP 2026, YESTERDAY — 25 SEP 2026, WED 23 SEP 2026.
A station with a suffix or an SSID has a different name on each waveform — for example W4IJG/CRB on FSQ and JG25 and W4IJG-1 on AX1200 — unless it uses Same as AX1200, which makes it W4IJG-1 on all three. A direct chat sent to any of those names lands in the sender's conversation, whichever waveform is selected, with the waveform named in its footer; so does the ✉ badge for mail. One of your own other names never becomes a conversation of its own.
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 and JG25; AX1200 uses the AX.25 callsign/SSID form), or a group name starting with @ or # — typing a group here also joins it. The box checks the address against the waveform selected, in a dialog titled New conversation. With FSQ selected it takes a station of 3 to 15 characters — letters, digits and / for portable suffixes — or, since 1.0.7, a callsign with -1 to -15 such as W4IJG-7; anything else is refused with “…” is not a callsign FSQ can address. and the rule. With JG25 selected it takes letters, digits, / for a suffix and a hyphen; a hyphen other than a -1 to -15 name (W4IJG-99) is refused when you send, as described below. If you type an -SSID name that has never been heard on FSQ or JG25, a note says so — A JG25 station answers to an -SSID name only when it uses its AX1200 name on every waveform … — and the conversation opens anyway. With AX1200 selected it takes up to six characters and an optional SSID, such as W4IJG-7. On every waveform a group starts with @ or #, and your own callsign is refused.
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 N4UZZ with what OpenJSQ actually knows: whether they are on the channel now (Heard recently — on the channel now, or Heard this session, not currently active; a station restored from the saved heard list says so), first and last heard — each as how long ago and when, 4 h 5 min ago · 10:02, with the exact moment on hover — 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.
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 Settings → Chats & groups → Subscribed groups. One list serves every waveform. Group traffic is broadcast: delivery is always Live, and 📎 Files is unavailable.
The Actions ▾ menu in a group offers two things, Ask for a signal report and Send an ICS-213 form… (see ICS-213 forms below); everything else is greyed with the reason. A question every member would answer differently, or acknowledge, is not offered to a group, and none is offered to Allcall: your station refuses to send one even when it is typed by hand. 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 — K4ABC 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.
Above the thread, on the right, sit four controls and one piece of evidence.
At the top of a conversation, beside the callsign, OpenJSQ lists what the other station offers on the waveform you are using — for example chat with receipts, files, relays for others — and when that was learned: as of 14:05, with the date once it is older, or may be out of date when the station has since announced a change. The labels are the same on FSQ, JG25 and AX1200: chat with receipts, verified chat (which covers receipts, so a station that offers it is not listed with both), files (it accepts files you send), shares files, mail, mailbox, station actions, heard list, groups, relays for others (written relays for others (up to 3 hops) on JG25 and AX1200 when it says so, and relays for others (chains) on FSQ, whose relays forward a chain of any length) and, new in 1.0.7, repeats for others (it will repeat a message to everyone when asked; see Ask them to repeat my message… below). A service the waveform cannot carry is simply left out: FSQ never says verified chat, and only AX1200 says groups. A station that offers nothing reads plain chat only; one OpenJSQ has not heard from yet reads Not known yet: learned from the first answer or presence. A station you reach only through a relay is learned from its answers that come back through it: station actions once it has answered one (a relay does not carry its record on JG25). When the header is too narrow for the whole line it drops whole labels and says +3 more, never cutting one in half; the full list is behind the ⓘ.
Press the ⓘ to see what the station offers on each waveform and how each was learned — its own answer, a presence that confirmed it, or its own announcement — with when. Press it again to close it.
Stations send only a short change counter with their presence. When a station changes a setting that matters (turns relaying on, stops sharing files) it announces its new record once, and OpenJSQ asks again only before you do something that depends on it — pick it as a relay (Route or Send through a relay station…), send it a file, or send it a station action — and only when its information is missing or out of date, at most once every five minutes per station. What you learn is remembered across a restart. Your own record is truthful and follows your settings: turning relaying, folder sharing or Repeat messages for on or off, or selecting another waveform, changes it while the radio runs and goes out once as an announcement on each running waveform (held by Net mode, and not charged to the airtime budget); receipts, mailbox, custody, automatic answers, the heard list and Accept files from other stations take effect the next time the radio starts. Those, and anything else you change and save in Settings (which restarts the radio), go out once as an announcement when the radio is back, if your record changed; on FSQ only when the FSQ part changed. A station running 1.0.5 does not send the record; for it OpenJSQ reads the older JG25 and AX1200 capability answers, and never refuses a send or a station action because such a station left something out.
When a station announces a change unasked, one small line appears in the conversation, kept after a restart: N4UZZ: verified chat, files, relays for others. Your own question reads You asked N4UZZ what it supports. Actions → Ask what they support asks the same question on every waveform, and the answer arrives as a message from that station, with the usual time, signal and waveform under it: the program and version on the first line (OpenJSQ 1.0.7), then Supports: … with every service and its hop limit, then Works on JG25 (the waveform its operator has selected). A station that does not say which program it runs — one older than 1.0.7, or a station whose Answer "what software" is Never — reads Software: not reported. JG25 and AX1200 do not carry the question through a relay, so a routed ask there is refused with a sentence. When the station is fldigi or FSQCall, whose answer carries no labels, it reads N4UZZ runs fldigi 4.2.00 and the reply stays in the chat as well. Only a short line that names software (a version number or a known program) is taken as that answer, so ok thanks 73 after your question stays an ordinary message. This station's own automatic answer to someone else's question reads Told N4UZZ what this station supports — in the conversation and in the conversation list — instead of the raw software text.
A heard-list answer reads as an answer on every waveform: a heading, N4UZZ hears:, then one line per station — KK4IB heard at 12 dB at 2026-10-22 12:30 UTC, or heard, no SNR where that station measured none — or N4UZZ's heard list: no stations. Long lists stop at twenty and count the rest. The conversation list shows the short form, N4UZZ hears: KK4IB, W4IJG, and the request you sent moves from Queued to Sent and Answered (or, once the time an answer should take has passed — about two minutes, see section 24 — No answer from N4UZZ.). A JG25 answer lists every station that station has heard lately on any waveform, not only those its JG25 receiver heard, and leaves out the station that asked.
If you pick a relay (Route, or Send through a relay station…) that says it does not relay, or ask a station for something it says it does not answer, OpenJSQ tells you instead of sending: N4UZZ doesn't relay for others right now., N4UZZ doesn't answer station actions., N4UZZ doesn't share its heard list. If OpenJSQ's information is out of date and says no, it asks the station again, does not send yet, and says Checking whether N4UZZ relays for others. Try again in half a minute. A station that has said nothing is never taken to mean no. In Net mode OpenJSQ does not ask, and the send goes ahead.
When the station was last heard on another waveform, an amber line above the box says so — “⚠ K4ABC last reached you on FSQ — what you type here goes out on JG25.” — with a Switch to FSQ button beside it. Multi-receive hears all three waveforms, and OpenJSQ's automatic answers go back on the waveform each request came in on, but what you type always goes out on the waveform selected on the Radio page, and a station that only runs FSQ, such as fldigi, never hears a JG25 reply. The button does exactly what clicking FSQ on the Radio page does: the usual confirmation, then the radio stops and restarts on FSQ. Nothing switches on its own.
The line goes by the newest chat, letter or file that station itself sent you, on any waveform — never by what you sent them, and never by the presence, answers and capability lines its radios send by themselves on other waveforms, which say nothing about where its operator reads. A station you have only heard, and have had no chat, letter or file from, gets no line. It stays away when that is not known, when it matches your selection, in Allcall and groups, and while the radio is stopped. × hides it for that conversation until OpenJSQ restarts or you switch profile; it comes back if the station turns up on yet another waveform or you select a different one. Either way the Send button's tooltip still says where the message goes: Goes out on JG25. K4ABC last reached you on FSQ.
When the station only reached you through a relay, a line in the same place says so — “⚠ W4IJG reached you through KK4IB — you may not hear each other directly.” — with a Reply via KK4IB button. It shows when the station's newest message to you came through a relay, the conversation's route is Direct, and you have not heard that station directly lately. The button sets the conversation's route to that relay, exactly as the Route chip does; × hides the line for that conversation. It clears by itself once you hear the station directly or choose a route (choosing Direct again brings it back). When both warnings apply it is one line, “⚠ W4IJG reached you through KK4IB on FSQ — what you type here goes out on JG25.”, with both Reply via KK4IB and Switch to FSQ. For an FSQ chain the button sets only the last carrier, because a relayed FSQ message does not carry the way back; a longer return route has to be typed. The button is left out when that station is not a valid relay on the selected waveform.
The waveform line and Network's Last RX give the same answer, so the two pages agree: when the station's own capability record says which waveform it works on, the line reads “N4UZZ works on AX1200 — …”.
A long conversation does not draw itself all at once. The newest 200 lines appear immediately, and a bar above the thread counts the earlier lines 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.
If you scroll up to read, new messages do not pull you away, and a ↓ Newest button at the bottom right of the thread takes you back to the newest message (and returns you to the compose box). You count as at the bottom within 8 pixels of the end — a little more at the larger Text sizes — the same rule the Channel feed uses.
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.
Each waveform checks the address before anything is sent. On AX1200 an SSID belongs in the box like any other callsign: type W4IJG-2# to leave a note in that packet station's mailbox, or W4IJG-2;N4UZZ text to route through it. FSQ addresses W4IJG-2 too, since 1.0.7: a callsign of up to six letters and digits, a hyphen and a number from 1 to 15 is one address to every OpenJSQ station. Any other hyphen still starts a command at the receiving station, so with FSQ selected a destination or relay hop such as W4IJG-16, W4IJG/P-1 or a station address longer than 15 characters is refused before anything is queued, in a dialog titled Address cannot be sent on this waveform: W4IJG-16 cannot be addressed over FSQ. FSQ keeps a hyphen only in a callsign followed by -1 to -15, such as W4IJG-7; anything else after a hyphen is read as a command. … fldigi and FSQCall: fldigi hears a W4IJG-2 station under its full name and its automatic answers reach it, but a message addressed to KK4IB-1 reaches a plain fldigi KK4IB as an unknown command, which fldigi drops without showing — so an fldigi station keeps a plain or /suffix callsign. Not yet tried with FSQCall. JG25 carries W4IJG-2 as it is, and a station using Same as AX1200 answers to it there; any other hyphen (W4IJG-99) is refused in the same dialog, because no station can have that name. If that exact name has never been heard on FSQ or JG25, New conversation says so — it may be a station that answers to it on AX1200 only — and opens the conversation anyway. AX1200 has the mirror-image rule: a /suffix identity such as W4IJG/CRB is refused with … AX1200 cannot address /suffix stations …, because no SSID can be worked out from it. Either way your line stays in the box.
Two consequences are worth knowing. A hyphen alone does not make an address. What stands in front of it has to be a callsign in its own right, so 2-3?, 10-4, RE-2? and covid-19? go out as the words you typed rather than as a question fired at a station of that name. And one station has one spelling. W4IJG-01 is read as W4IJG-1, and W4IJG-0 and W4IJG-00 as the bare W4IJG — AX.25 writes no SSID at all for zero — so the loop check, the repeat check, the transport and the history row all see one canonical address and cannot disagree about who you addressed.
An address the wire cannot carry — W4IJG-99, say, when AX.25 SSIDs stop at 15, or W4IJG-2-3 carrying two of them — is explained in the note line while you type (⚠ … Fix the address, or delete it to send the line as an ordinary message.) and your line is left exactly where you typed it, rather than being cleared or quietly transmitted as ordinary words. You get that sentence only where the line is plainly meant as an address — a hop behind it, a semicolon in front of the next one, or a trigger such as ? or # stuck to its back. Anywhere else a hyphenated word is nobody's business and passes without comment.
Multi-receive brings these rules to the surface. You hear K4ABC-7 on AX1200 while FSQ is selected, open the conversation and reply. Since 1.0.7 FSQ can address K4ABC-7, so the reply goes out on FSQ; if their last chat to you came on AX1200, the line above the compose box says so and offers Switch to AX1200. It reaches K4ABC only if that station answers to K4ABC-7 on FSQ too (Same as AX1200). If it keeps a plain or /suffix FSQ name, select AX1200 to answer, or write to its FSQ name (section 16).
W4IJG-16 while FSQ is selected: FSQ keeps a hyphen only in a callsign followed by -1 to -15, so nothing was queued and the dialog says why. Use the station's FSQ name, or select AX1200 for this address; the address is never converted automatically, and the reply stays in the compose box.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.
In the Allcall conversation Actions ▾ has one entry of its own, Announce my presence now. It sends your presence announcement at once, the same as Announce now on Radio → Live status (see Presence), and is greyed, with the reason, when the radio can't send. Station conversations don't have it, and Allcall has none of the station actions.
| Menu item | What it does |
|---|---|
| Station info… | First in the menu, and the one item that transmits nothing: the station card described above. |
| Ask for a signal report | How 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: N4UZZ 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. Asked through a relay (a route on the chip), the number is how that station hears the relay, not you, and the sentence says so on every waveform — W4IJG heard you through KK4IB-1: the last hop, KK4IB-1 to W4IJG, at -6 dB — while the Network page draws only the relay's link to it, never a line between you and a station your radio cannot hear. The answering station's own copy says You heard N4UZZ through KK4IB-1: the last hop, KK4IB-1 to you, at …, via KK4IB-1. |
| Ask where they are (QTH) | Their location text. |
| Ask what's new (QTC) | Their status line. |
| Ask who they can hear | Their heard list. With a route on the chip it goes through the relay and the list comes back the same way, on every waveform. Asked that way, a station that does not answer heard lists says so. |
| Ask for their last message to you / Ask for it again after a pause | They resend the last message they sent you in the past 30 minutes, whatever waveform it went out on: a message they sent you on JG25 is resent on FSQ if you ask on FSQ. The answer comes on the waveform you asked on; on AX1200 and JG25 a long message is cut to what one answer carries. On FSQ a message from another waveform that would not fit one transmission at that speed, or has characters FSQ cannot send, is not sent: the answer reads last message too long to repeat here or last message can't be sent on FSQ. Group and everyone messages are not included. It is answered only if your request reaches them the same way their message reached you: directly, or through the same relay. Ask for it again after a pause does the same after 0–60 seconds: type the number before pressing Enter (blank means 15). A station running an older OpenJSQ only looks on the waveform you asked on; if it has nothing there, you see, for example, Nothing to resend on JG25: their last message to you came on FSQ. — named only when that message is less than 30 minutes old, so ask again on that waveform while it is still recent. Otherwise it reads Nothing to resend on JG25: they haven't sent you a message on JG25 in the last 30 minutes. (On AX1200, where a station's SSID cannot be tied to its FSQ or JG25 suffix, it names only AX1200, and a message is matched to the exact name it was sent to.) A delayed answer you promised is dropped if you turn on Net mode, or turn automatic answers off, before it is due. |
| Ask them to repeat my message… / Ask them to repeat my message later… | They send your text, unchanged, to everyone, under their callsign - for example a net check-in carried by a hilltop station that everyone hears. The compose box starts with your callsign (W4IJG: ); type the rest and press Enter. Later first asks for a pause of 0–60 seconds. On FSQ this is fldigi's ! or ~ followed by the text, so fldigi stations understand it; OpenJSQ's own delay form ~{30} is used only with stations whose record says they repeat for others, and every other station gets fldigi's form (fldigi waits 15 seconds). On AX1200 and JG25 it is a station action. A station whose record says it does not repeat for others is not asked, and you are told why. Your row reads You asked BALDKNOB to repeat: …, and the conversation says Repeated when you hear the echo. If they refuse, their answer says why: not repeating messages, not repeating commands, asked too soon, wait a little (you asked again inside the spacing), busy (no room to carry it just now), too long or already repeated. Without text, ! and ~ still mean the row above. |
| Ask what they support | The program and version they run and the services they offer (What a station offers), as a message from them. It sends the capability request on every waveform: ^ on FSQ, the capability request on JG25 and AX1200. |
| 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. There it opens a warning window titled Alert from KK4IB that shows your words, or KK4IB is calling for your attention. if you sent none. A second alert while the window is still up is added to it, newest last (the last six are kept, with a count of how many arrived), and one OK dismisses them all. |
| 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).
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.
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 that the selected waveform can send through — 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 ▾.
The list holds only names the selected waveform can send through, because your heard list holds every waveform's receptions and one station may have a different name on each. A relay that is W4IJG-1 on AX1200 and W4IJG/R on FSQ and JG25 may be in your heard list under both. With AX1200 selected the menu does not offer W4IJG/R, because AX1200 has no /suffix. With FSQ or JG25 selected it offers both, because since 1.0.7 both waveforms carry -1 to -15 names; choose the name you heard on that waveform, because a station answers to W4IJG-1 on FSQ or JG25 only when it uses Same as AX1200. Groups, Allcall and the person you are writing to are never offered, and nor is your own station, under any of its names.
An entry may also read via K4ABC (heard N0XYZ 3 min ago). That is the other half of the question, and it comes from the relay's own heard list: K4ABC has told the network, in its own words, that it can hear the station you are writing to. The age is worded the way every heard station's age is, and uses the same time limit: a hearing older than Settings → Presence → Consider stations recent for is not offered, just as the Network map greys that edge. When your correspondent is no longer recent on your receiver, and somebody else can still hear them, those stations move to the top of the list so you see them first. Nothing is chosen for you — the app never picks a route by itself. The hint is a past hearing on somebody else's clock, not a promise that the relay will carry anything, and a clock well ahead of yours shows as heard N0XYZ 10 min in the future. Your journey line still says unconfirmed until real evidence arrives.
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 belongs to one conversation on one waveform. A relay chosen with AX1200 selected is AX1200's, and the chip reads Route: Direct ▾ after you switch to FSQ until you choose FSQ's own. Switch back and the AX1200 route is still there. Since 1.0.5 a route survives a restart: a path that needed a relay yesterday usually still needs one today, and losing the setting silently meant the next message went direct — which looks exactly like a message that was relayed. It belongs to the profile it was chosen in, so switching station identity gives you that identity's own routes. Deleting the conversation takes its routes on all three waveforms with it. A route that can no longer work is dropped rather than restored: one through any of your own callsigns (after you change it, say), or one with a hop its waveform cannot address. A route saved by an earlier build, before routes were kept per waveform, is kept on every waveform that can send all of its hops and dropped if none can. Change it whenever propagation has, with one click on the chip.
The chip does not appear on Allcall or a group. Everyone hearing a broadcast has already heard it.
On AX1200, a relay that last said it does not relay is asked again before your message goes out (at most once a minute per relay), and the bubble reads Checking whether K4ABC relays for others.... If it still says no, the message fails with K4ABC doesn't relay for others right now., the same sentence the other waveforms give; if it does not answer, with K4ABC didn't answer when asked whether it relays for others. Try again in a minute, or choose another relay. Choose another relay, or send direct.
On AX1200 a relayed message must fit in one packet: about 180 bytes, a little less to a longer callsign. While a route is set, from the chip or typed as VIA;DEST words, the line under the box counts it — 142 of 179 bytes left for a relayed message. Past the limit it says by how much — Too long to relay: 190 of 179 bytes. Shorten it by 11 to send. — and Send waits until you shorten it. Or send it direct. A letter such as é counts as two bytes, as it is sent.
Routes need the full chat format. If Chat format on the Radio page is Compatible with older OpenJSQ versions, the Route chip is greyed and its tooltip says so. A route already set can still be set back to Direct; until then the line under the box says why, and Send waits.
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.
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.
Each of these is refused with the reason in the note line, never silently downgraded to a direct send:
-1 to -15 name, or longer than 15 characters; on JG25, a hop with such a hyphen — these in the Address cannot be sent on this waveform dialog described above. On AX1200, a hop that is not an AX.25 address, such as a /suffix identity. The chip never offers such a hop, and a route stored for another waveform is not used on this one.Beside the Route chip sits a second chip that answers a neighbouring question: may repeaters carry this conversation at all? It reads the effect, not where the answer came from: Relayable ▾ when repeaters may carry what you send here, Local only ▾ when your frames ask them not to. Click it for three choices:
The choice applies to everything you send in that conversation: messages, the Actions questions and mailbox notes. It also covers what your station sends that station on its own, such as automatic answers, including answers from the waveforms listening beside the selected one (section 16). It works on all three waveforms, is kept per conversation beside the route and survives a restart, belongs to the profile it was chosen in, and is removed when you delete the conversation.
Two things it never changes, and the chip's tooltip says so. A message you route through a named relay goes out unmarked, because you asked that relay to carry it. A delivery receipt goes out unmarked, because it closes the other station's loop. So a conversation set to Local only whose message you send via K4ABC is not a contradiction: naming the relay for that message wins.
There is no compose-box shorthand for this. A leading = would collide with ordinary text, and = is also the mark itself on the FSQ wire. Use the chip.
| Traffic | Through a relay |
|---|---|
| Messages, actions, alerts, mailbox notes | Yes, on every waveform. |
| 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. |
| Files | Up to 256 KB, travelling as a letter's body. Larger than that, send it directly. |
| A long ICS-213 | One 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 files | Not 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. The same holds on the Files page: if your conversation with that station goes through a relay, browsing its shared files (or downloading from its list) is refused with a message naming the relay; send the file as mail and let a custodian carry it instead. |
| A long mailbox note on AX1200 | No. Past the frame size it becomes a file, and AX1200 file transfers do not relay. Shorten it or send direct. |
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.
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 — N4UZZ#[ics213-kk4ib-2609152129.txt], the form filed under a name your station derives — and the note line says ICS-213 for N4UZZ 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.
To a group. In a group conversation the form goes to every member as one ordinary group message. It is never filed in their mailboxes and never sent as a file, and no member acknowledges it, so the filing box is gone and the dialog says Sent to the group as one message. Members see the form; it will NOT be acknowledged. The byte counter is what one group message carries on the selected waveform; a longer form cannot be sent to a group (too long for a group): shorten it, or send it to each station or as mail. Members' stations show it as the form. A form cannot be sent to Allcall.
Use a message's ✕ button (Delete this message); delete a whole conversation from its header's 🗑 or the list's right-click menu. Deleting a conversation takes its letters and file-transfer lines with it, and the confirmation counts each kind in its own words — 4 messages, 1 letter, 2 file transfers — because messages, letters and downloads are three different things on three different pages. A transfer still on the air is left out of that count and left alone; this does not reach into a live transfer. A station you deleted stays off the list until it is heard again, or until something newer than the deletion passes either way; opening its chat from Channel, the map or the Inbox shows the thread without putting it back on the list, and sending it something does. A group has no presence of its own, so only a message brings one back. Allcall is the one conversation that cannot be deleted at all — it is the whole channel rather than a station, the program says so, and its individual messages still delete. If the history store refuses a deletion — a history.sqlite locked or made read-only by a sync client is the usual cause — the row stays and you are told, instead of the bubbles vanishing and reappearing at the next start. 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).
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.
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):
| Field | Example | What it tells you |
|---|---|---|
| Time | 14:32 | When it was decoded here, in local time. |
| Signal | SNR 29 dB | The 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 quality | a colored 92% block | See below. |
| Mode | FSQ-3, AX1200, JG25-FM 2400/F0 | What carried it. A JG25 message names its mode and error correction together. Because OpenJSQ receives all three waveforms at once (unless Other waveforms is Off), this is also the answer to which waveform brought it: one thread can hold FSQ-3, JG25-FM 2400/F0 and AX1200 footers from the same station (section 16). |
| Slot | slot 3 | Where on the channel — FSQ only, and only when the channel plan has more than one slot. |
| Realized speed | 4.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 K4ABC on a relayed message, naming the station that actually handed it over (plain relayed when that was not recorded); 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 (Sent to relay when it went through a relay, and Handed to the radio on a KISS TNC, which may still be waiting for the channel). 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 N4UZZ.
A message you sent through a relay carries a short journey line that fills in as evidence arrives:
via K4ABC · unconfirmed | Sent, 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:16 | Your 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:17 | The 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.
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. |
| gray | The evidence is old, not bad. Once the newest evidence behind the figure is older than Consider stations recent for (Settings → Presence, an advanced row, 2 hours by default) the badge grays in the conversation list, the conversation header, the Station info panel and the Network page — the same window that marks the station Inactive, so a recent station carries a coloured badge and an inactive one a gray badge; with Never no badge grays. It grays on a quiet channel too, and after a restart — 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. It is kept per exact name: KK4IB, KK4IB-2 and KK4IB/HME each have their own figure, so a station silent for weeks never wears the fresh badge its namesake earned yesterday. A dash means OpenJSQ does not yet have enough evidence to claim a score.
The header of every conversation, on every waveform, lists what the other station offers on the waveform in use — chat with receipts, files, relays for others — with when that was learned and a ⓘ that opens the whole picture. A station that offers none of the extras reads plain chat only, a real answer, and a station OpenJSQ has not heard from yet reads Not known yet: learned from the first answer or presence, deliberately worded differently from "no". What was learned is kept across a restart. This is why grayed items in the Actions menu are grayed: the other end has told you what it can do. What a station offers has the details.
When you ask yourself (Actions ▾ → Ask what they support), the answer arrives as an ordinary incoming message from that station, with the usual time, signal and waveform footer, in three lines: its program and version (OpenJSQ 1.0.7), Supports: with every service it offers, its relay hop limit and repeats for others included, and Works on JG25, the waveform its operator has selected. A station that does not report its software (on JG25 or AX1200, one older than 1.0.7; on any waveform, one whose Answer "what software" is Never) reads Software: not reported. A change a station announces unasked stays a small grey line in the conversation.
Sometimes a banner appears above the message text, with the ordinary footer still under it, 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 see | What it means |
|---|---|
| received, checked | Framing intact and integrity verified (the Channel page's advanced view names the check, e.g. CRC16 VERIFIED; the bubble shows nothing extra). Trusted — eligible to trigger automatic replies. |
| ⚠ NOT VERIFIED | Sender identified, but not every character can be vouched for. Shown with the banner ⚠ NOT VERIFIED — may contain errors (or, for an FSQ message recovered because it names a known callsign, VERIFY - known callsign; integrity checks did not validate or VERIFY - CRC FAILED - content may be corrupted); you approve it (✓) or discard it (✕, recoverable from Deleted). Never triggers automatic actions. An FSQ message that lost only its opening characters, while its checksum, its ending and its continuity all hold, lands here rather than under 👁 MONITORED. |
| 👁 MONITORED | Marked 👁 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. |
| REJECTED | Failed validation. On the Channel page it is hidden in the Basic view until you tick Show damaged (then it reads Damaged), and in the Advanced view it is shown as REJECTED with the reason — and it is 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.
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. With AX1200 selected, a station AX.25 cannot address — a /suffix identity, or a malformed one — is refused before anything transmits, in a dialog titled AX1200 address cannot be sent that gives the reason. The same check guards Browse, Refresh and Download below.
What you accept is one setting for every waveform. Settings → Files holds Accept files from other stations — on by default; with it off, FSQ, JG25 and AX1200 all refuse an offered file and your capability record stops saying files — and, under the card's More options, the file size limits and Files at once. The receiving limits apply on every waveform; the two for sending are marked AX1200 only, because FSQ and JG25 have no outgoing limit (section 19).
Each row has its own checkbox. Tick one or several rows, then use the buttons under the table. 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 Offering… try 2 of 9 Waiting Sending / Receiving Confirming Retrying Verified Failed Cancelled Paused. Offering means the offer to send the file is on the air and the other station has not answered it yet, with the try it is on out of those allowed. On AX1200 a file whose offer is not accepted within fifteen minutes fails with the receiver never answered the file offer (or the file offer could not be sent, when the channel never let it out). 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. On AX1200 a transfer cut off because the radio stopped fails with the radio stopped before the transfer finished; the receiver keeps what it got, so sending the file again carries on from there.
The list shows the files you actually sent and received. A good deal of what crosses a radio arrives as a file without ever having been one to you — a letter's body past the inline limit, an ICS-213 form (a short one that arrives as a named drop as well as a long one), a long mailbox note, the answer to a shared-files browse. They are listed too, because they cost real airtime and are exactly what you want when something goes wrong; they are gathered under one heading, ▸ Carried for Mail, Forms and Library (n), collapsed until you click it. Every column works on the rows inside, and each carries a small Mail, Form or Library badge. The message itself is still in the Inbox, and a browse answer still in Browse a station below. Once what one of them carried has been read out of it, its file is removed from disk and the row stays; its Location then says where the message went instead of naming a file that is gone — Stored in Inbox for a letter's body, Read into history for a form, Read for a browse answer — and Open folder is off for it.
Those files are not kept among your received files. What arrives for the program itself goes to an internal folder inside the profile's own data folder — beside its databases, not in your Documents files folder — and is deleted the moment it has been read: a letter's body once the letter is safely in the Inbox, a shared-files listing once it has been read, a form or note once it is safely saved in the conversation. If a form or note cannot be saved — the profile's history database locked or read-only, say — its file stays among your received files and is read in again the next time the profile opens. The row in the list stays, and says where its contents went. What decides this is which transfer the program was waiting for, never a file's name: a file somebody sends you that happens to be called mail-body.txt is an ordinary file and lands in your received files like any other. Leftovers from an interrupted transfer are cleared after a day, and the first start of this version removes the letter bodies earlier versions left in the received files — only those whose letter is already in the Inbox, and never a file you received as a file. Listings earlier versions left there are kept: a file named like a listing may be somebody's own file, and a file is only treated as a listing when it comes from a station you asked for one.
Two long letters in a row both arrive. A letter past the inline limit is fetched as a file and acknowledged once it is stored. If the sending station has to restart the body transfer part-way, or the body finishes after a long wait behind another transfer, the letter is still filed and acknowledged once — the body is not sent twice — and a station that re-offers a letter you already have is simply told so.
New files are marked until you have seen them. A file that arrives while you are somewhere else lights the rail button — Files ●1 — and its row is drawn in bold with the same blue dot the Inbox uses for unread mail. Seeing it is enough: you do not have to open the file. What counts as seeing is the Files page being the page on screen and the OpenJSQ window being the one in front — a file that lands while the window is minimised, or behind another program, stays New even if Files was the last page you had open, and bringing the window to the front on Files is the look. The count on the rail clears the moment you look, but the rows that were New stay bold for as long as you stay on the page, so you can still see which ones they were; a file that arrives while you are looking is marked the same way and never counted. Only files you received count — not files you sent, not failed or cancelled transfers, and never anything under Carried for Mail, Forms and Library. What you have and have not seen is kept with each profile, so an unseen file is still New after OpenJSQ is closed or restarted, and switching profile shows that station's own. The first time a version with this starts, everything already in the list is treated as seen, once.
incoming folder for the active profile. Old FSQ and AX1200 folders are intentionally left where they were after an upgrade; OpenJSQ shows a one-time notice so you know where those older files remain.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.
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.
The card under the action bar is where a file is actually sent. It has one row: the station, the file, and the button.
Some sends are refused before anything goes on the air, each with a reason in a dialog: an empty file; with AX1200 selected, a station AX.25 cannot address (AX1200 address cannot be sent); a waveform whose file service is not running; and a full queue. When a send is refused because too much is already waiting, the dialog lists what is waiting and offers Cancel it (Review waiting… for several). Whether the other station accepts files is its operator's choice (Settings → Files on their side), and a refusal from them shows in the transfer's State.
Off by default, and the first thing you see is an invitation rather than a switch:
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. Hidden files are never listed, and every ask and answer is recorded under Sharing activity.
To share, step by step:
Pick a folder and the invitation is replaced by the section that owns every sharing decision:
| Control | What it decides |
|---|---|
| Sharing on | Whether 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. |
| Folder | The 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 browse | Stations I have heard (the default), Everyone, or Only these stations — which reveals an Allowed stations box. This decides only who may browse and download; whether a download waits for you is the next row. |
| When a station asks | Serve automatically serves every station Who may browse allows at once, heard stations included; Ask me first — each download then pops a question and the asker is told it is waiting for your approval; the file follows if you say yes. |
| Publish files received from | Nobody (the default), These stations or Everyone. Files from the stations chosen are moved from Incoming into the Received subfolder of the shared folder, where browsing stations can see them — so an unattended station can be sent files and serve them with nobody at the keyboard. These stations enables the Stations to publish box: W4IJG-1 matches that station only; W4IJG matches it with any SSID. Everyone means any station that can send you a file can publish it from your station, unattended. No waveform verifies who sent a file: any station can put any callsign, or SSID, on the air. List only stations you trust, and remember that others could pose as them. The filename is kept, and a name already there gets a suffix (report-1.txt) rather than being overwritten. Files you asked for yourself (a download from Browse files), mail attachments, letters, forms and shared-file lists are never moved. If there is no shared folder, or it cannot be written, the file stays in Incoming and the status bar says so. If Include subfolders (Settings → Shared files, an advanced row) is No, the files go straight into the shared folder, because stations could not browse a subfolder. On the Files page the row then shows the new location, and its Location tooltip reads Published to shared folder. |
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.
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.
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 says | What it means |
|---|---|
| Waiting for their approval | The far operator runs Ask me first and has been asked. If they say yes the file simply arrives; asking again changes nothing. |
| Refused: busy — try again | Another shared-files transfer is already running there. Wait — do not hammer it, which earns the next line. |
| Refused: asking too often | You asked again inside their per-station interval (10 seconds by default). Browsing and then downloading counts as one ask, and so do up to eight downloads from one file list in the ten minutes after it: a second file picked from the list follows the first instead of being refused. Asking again for a file they have already sent you is still counted. |
| Refused: over size limit | The file is above their per-file ceiling — 256 KB unless they raised it. |
| Refused: sending budget spent | They cap how much they will transmit per day, and it is used up. |
| (the list empties) | Their folder changed since you listed it. The stale list is cleared for you and the status line reads refused: their files changed since you listed them — ask for the list again. Refresh and download from the fresh one. |
| Refused: no such entry | That row number is not in their current listing. |
| Refused: not sharing with you | Sharing is off, no folder is chosen, or you are outside their Who may browse setting. |
| Refused | On FSQ, the far operator answered No to the Ask me first question (their chat says refused: the station declined your request). On AX1200 and JG25 a No sends nothing more, so the row stays at Waiting for their approval. |
| Refused: not supported there | That station's build does not speak the shared-files service at all. |
| Retrying… | On AX1200 and JG25: they answered busy, and your station is asking once more by itself, a couple of seconds later. With no answer within a minute it goes back to Refused: busy — try again. |
| Failed | Their end could not send it, or the download ended without delivering. |
| Waiting for KK4IB's answer… | The station is still answering your last request, or sending you its file. The download goes by itself when that ends. |
| No answer — try Download again | Nothing came back within three minutes of the request going out. |
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. Requests can arrive on any of the three waveforms, and each is answered on the waveform that asked, where Other waveforms and the band rule let that waveform answer (section 16). It is cleared when the application restarts.
To read it:
Under Settings → Shared files, with the card's More options open:
| Setting | Default | What it does |
|---|---|---|
| Include subfolders | No | Whether the scan descends past the folder itself. |
| Largest file to serve | 256 KB | 64 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 day | 1 MB (and 20 files) | A daily ceiling on what you will transmit for other people: 1, 5 or 20 MB, or Unlimited. A station that chose before keeps its choice. |
| Each station may ask every | 10 seconds | The 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 timeout | 2 minutes | How long an Ask me first question stays open. After that it is closed at your end and nothing more is sent: the asker keeps the waiting for approval answer it already had, which is true of a station whose operator was not there, and can ask again. |
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.
One Inbox for every identity and waveform. Letters addressed to any of your names — one name such as W4IJG-7 on every waveform, or, when the Station card's FSQ / JG25 name is Callsign with suffix, W4IJG/CRB on FSQ and JG25 and W4IJG-7 on AX1200 — land in the one Inbox, whichever waveform carried them and whichever you had selected. A letter your station holds for someone else, and a long letter's file body, travel on the waveform the letter came in on, if that waveform may answer (section 16); otherwise it waits, and the Channel log says why (section 14).
If a letter does not move. When a station announces mail for you and it is not fetched, or a reply has waited for the transmitter, a note on the Channel page says why (section 14). On FSQ, the replies in a letter exchange — the query, the fetch, the receipt, the delivered notice, and the letter itself sent in answer to a fetch — go at the speed the other station used, not at your own FSQ speed; what you start yourself (the announcement and the deposit) keeps yours.
/suffix identity, say — is refused with AX1200 address cannot be sent and the reason, and the letter stays open.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 K4ABC, and announced now. If they do not answer, it waits until they are heard — leave the radio running, and watch Holding for its progress. It says so even when net mode is on or the radio is stopped; the activity line below is then the one to believe. 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.
If nothing goes out at all, the activity line says which hold is stopping it — “Held for K4ABC. Net mode is on, so nothing goes out automatically.”, “Held for K4ABC. It goes out when the radio is started.”, “Held for K4ABC. It goes out when the mail service next runs.”, or “Held for K4ABC. Not transmitting: …” for a licence or transmit problem — rather than reporting that the letter is on its way.
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.
| Radio | Fits in one frame up to | Above that | Hard ceiling |
|---|---|---|---|
| FSQ | 768 bytes | Sent 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 |
| JG25 | 256 bytes | ||
| AX1200 | 128 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.
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 shown is the one the author's file had, when their station and every relay on the way are 1.0.7 or later; otherwise it is one your station makes up from the letter. Either way it is only a label: the file is saved under a name your own station chooses, never under one taken from the air.
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.
# mailbox note routes the reply back to Chat. A letter created in Inbox opens a mail compose window carrying Include the previous conversation below — ticked by default, and the quoted letter is there in the body, under a ----- previous conversation ----- divider, where you can edit or delete it like any other text; the caret sits above it, where you write. Unticking the box takes the quote back out, unless you have edited it: then it is your letter now, and it is left alone with a note saying so rather than being thrown away. Watch the byte counter as you toggle it: a quote can be what pushes a reply past the inline limit and turns it into a file transfer.Dates. A letter's header in the reading pane, and the Sent and Holding views, give the day with the time — Today 23:40, Mon 5 Oct 23:40 for this year, 5 Oct 2025 23:40 for an older one. Hover it for the full date, time and time zone.
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.
The right-hand STATIONS HEARD list is your receiver's memory, filled by all three waveforms' receivers. Its columns are Station, Last RX, Signal, Link, and Heard. Last RX says where that station's operator is, as far as your receiver can tell. It is evidence, not a setting, and it reads, in this order: works on AX1200 when the station's own capability record says which waveform it has selected; otherwise the waveform of the newest chat heard from it — overheard chats count, so a station chatting with someone else on AX1200 reads AX1200; otherwise its newest reception, marked · automatic (JG25 · automatic) when all that has been heard from it is its software speaking by itself — its presence line, a capability line or an answer — and Unknown where none was recorded. A station working on AX1200 whose JG25 receiver, listening beside it, answers by itself therefore does not read as a JG25 station. Hover for the exact profile and time of the last reception and Receive evidence; the selected transmit mode may be different., followed by what the answer rests on — Works on AX1200: its own capability record says so, as of …, or where its operator's last traffic came from — and when its software last spoke by itself. The column is as wide as its words. A reception that was only overheard shows the plain waveform. 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. Its number can come from an older reception than Last RX, when the newest one had no measurement. Link is the recent decode-success score, independent of signal strength, and not limited to the waveform Last RX shows. Heard says how long ago — just now, 18 min ago, 4 h 5 min ago. Double-click a row to open that station's chat.
In the top bar, centred, Recent and All heard choose what the list and the map show; with Recent a station or link with nothing inside the window is left off the map, with All heard it is drawn grey. Recent, where it starts (remembered per profile), lists the stations heard within Settings → Presence → Consider stations recent for; while it hides older rows a line under the list reads N more heard earlier — Show all. All heard lists every station still on the heard list, the older ones dimmed and reading Inactive · 4 h 5 min ago. Hovering the time gives the full timestamp, and a row restored from the saved heard list says From the saved heard list (earlier session).
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 (including your question about what it supports, on any waveform), 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. A signal report you ask for through a relay is the answering station's reading of the relay, so it draws only a green curve from the relay to that station: no blue arrow between you and the answerer, and the answerer is not marked as heard here. Edge labels show dB when a valid SNR exists, 40+ dB above the measurable range, and -- dB when nothing was measured. Every name your station has — its FSQ/JG25 name and its AX1200 name — is drawn as the one node, you. Wheel zooms, drag pans, +/−/fit on the toolbar, and hovering an edge explains who heard whom and when.
Under each station sits a small mode badge: the same answer as Last RX (the waveform it works on, else where its newest chat came from, else its newest reception), with the profile and time on hover, or Unknown when none was recorded. Grey means old, not gone. A station or a link with no evidence inside Settings → Presence → Consider stations recent for — the recent window, an Advanced row — is drawn grey and stays on the map as history; each link ages on its own, and Never there means nothing greys. (Remove stations from heard list after does not change the map's colours.) A station coloured only because another station recently reported hearing it — not heard here within the window — wears a dashed green ring. Hover a station for where its evidence came from: Heard here: …, Reported by W1ABC: …, or Historical — nothing within the recent window. The legend under the map lists grey as history, not recent and the dashed ring as reported, not heard here; hovering it gives the whole key.
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, JG25, 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.
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.
Below the map, RELAY ACTIVITY lists the traffic your station has passed along for others. It starts closed; click its arrow to open the list, and hover the heading for what the list is and, after a Reset, what was cleared. 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 and JG25 a sentence naming the kind, Relayed a message for K4ABC, on AX1200 also Relayed file traffic for …, a station action or a control frame, on JG25 Relayed a receipt for …; on FSQ the text that was passed along), Heard, Passed on, and State. States run waiting for the channel → transmitting → passed 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.
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.
Chats shows conversations; Channel shows the channel — every waveform, 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?” as a feed. Each transmission is one entry: who it was from and to (K4ABC → you, you → everyone, with a bold arrow that grows with the Text size), the time, a small tag naming the waveform and mode (FSQ-3, JG25-FM 1400/F3, AX1200), and a coloured result — Received, Sent, Needs your eye, Damaged, Unreadable, Presence or Local note. The message is underneath, in plain words, using the whole width of the page (K4ABC heard you at 29 dB, mail announcement). What you sent has a light background. Service traffic — a station's sounding, a presence beacon, a request or an answer, a capabilities exchange (capabilities from K4ABC: files, mail), file and mail traffic, receipts — is shown smaller, as one muted line with a small icon, so it never buries a chat. A file transfer's blocks are folded into one line, 12 file blocks, 14:05–14:09 · all received; press it to list them, and the transfer's finish or abort is its last line. Basic leaves out noise decodes — FSQ characters that name no station a checksum vouches for, which a quiet band turns into strings like fdezd cbeeslz; Advanced lists them.
Newest is at the bottom. The page opens there. If you scroll up to read, new entries do not pull you away, and a ↓ Newest button takes you back (you count as at the bottom within 8 pixels of the end, a little more at the larger Text sizes — the same rule Chats uses). Changing the FSQ speed, the JG25 mode or the waveform is the exception: it takes you to the newest entry and closes any entry you had open, wherever you were reading, while Basic and Advanced and the waveform filter keep your place; Load older history, at the top, loads the next 4,000 retained records and is shown only when there are older ones. A heading above each day's first entry — Today — 25 Sep 2026, Yesterday — 24 Sep 2026, Wed 23 Sep 2026 — says which day, in both views and under any filter, and a radio start reads — radio started 25 Sep 2026 14:07 — (Advanced shows a Session entry instead). The time on an entry is the clock time; hover it for the full date and zone.
One row of controls. The filters are All, Received and Sent, then a Waveform choice that narrows the feed to All waveforms (where it starts), FSQ, JG25 or AX1200 — Show history from all waveforms or one receiver. The two work together: Received with JG25 is what arrived on JG25. Show damaged is a tick box, off in Basic; damaged entries are receptions that were heard but could not be read — usually one decoder trying the wrong speed — and the box says how many it is holding back, Show damaged (2 hidden). A damaged entry names the decoder that tried (FSQ-4.5 head). Basic and Advanced each remember their own setting. The ··· button holds Monitor squelch (FSQ only: it hides decoded FSQ text weaker than that many dB above the noise floor and changes nothing about what is decoded), Keep history, the Colour key and Clear all, which asks first — Erase the stored Channel history for every waveform and slot? — and erases every waveform's rows.
Select an entry to see more. Click it, or move to it with the arrow keys (Home, End and the page keys too) and press Enter or Space: its details open in place, each with its label and a colon — Time:, Signal:, Waveform:, Heard by: (which receiver), Kind: (what kind of message) and Length: — with Open in Chats › (Open chat with K4ABC › where the entry names a station) and Show diagnostics ›. Select it again to close it. Tab enters the feed as one stop and leaves it again, and a screen reader reads each entry as a sentence: who to whom, the time, the result and the message, and its details with the same labels.
Relayed traffic says what it carries. A frame a relay carried is worded by what is inside it. On FSQ, KK4IB → W4IJG, relayed from N4UZZ: nothing to repeat is the relay's forward, and N4UZZ → W4IJG, via KK4IB: … is the first hop; neither shows bracket fragments or everyone. On AX1200 a relayed frame reads, for example, relayed from N4UZZ: capability request or relayed from N4UZZ: delivery receipt, as a compact control entry, instead of a byte count. AX1200's two capability frames read apart — link capabilities to KK4IB and capabilities to KK4IB: … — and a capability request that goes through a relay names the station asked: capability request to W4IJG via KK4IB. A very long raw payload shows three lines and … 240 more bytes; the inspector has all of it. One start of the radio is one — radio started … — line.
Which way a frame went is the radio's answer, not a guess from the callsign. The transmitted-or-received mark on every row comes from the transport that handled the frame, which knew. That matters wherever two stations share one callsign: at a bench running W4IJG-1 beside W4IJG-2, the sibling's transmissions are filed as receptions of somebody else's traffic — with their admission verdict and their signal reading intact — instead of being claimed as your own.
Show advanced settings, at the top right, turns the same feed into the evidence view the rest of this list describes. Every entry carries its addressing, the time to the second, an assurance badge, the operation, the waveform tag, the message and an evidence line; when several decoders produced the same transmission, their copies are nested under it, a rejected copy with a red left edge and the decoder named; and every file block is its own entry. Show damaged starts on. The filters add Review and Monitor. A second row holds, on FSQ, the slot buttons, then Show unparsed packets, Record diagnostics, Save bundle…, Report a problem… and the clear button; the Decode Inspector sits beside the feed whether or not an entry is selected, and on FSQ a strip of decoder cards sits above it. Basic shows none of these. The slot buttons and decoder cards are there only while FSQ is the selected waveform (while the radio is stopped, Advanced shows them as a placeholder on every waveform): the FSQ receiver that runs while AX1200 or JG25 is selected has none, although its receptions are all in the history.
receive-audio.wav, the overlapping channel-history.jsonl, session-notes.jsonl, the receive-emphasis and JG25 reception logs, tx-path.jsonl with transmit-audio.wav, and session.txt — the configuration and version mapping. Turn this on before a hard-to-reproduce on-air test. channel-history.jsonl carries each reception's admission evidence, session.txt adds the AX1200 modem configuration whenever an AX1200 receiver runs, and the bundle counts any automatic receive-audio restarts. The bundle is saved in the background, and Report a problem… beside Save bundle… opens the window described under Reporting a problem, which saves it the same way.The FSQ busy margin row on the Radio page's Receivers 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 (Auto, 3.0 dB; 0 turns busy detection off). It gates only transmitting — decoding always runs.
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. All of this works whether JG25 is the selected waveform or only being received alongside another.
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. AX1200 also has further recovery paths for damaged RF frames, and the inspector's Receive branch says which one recovered a frame.
Everything hardware. Two habits to know: this page saves as you change things (no Save button), and the controls whose defaults already do the right thing sit behind a More options line on the card they belong to. Open one on its own, or tick Show all advanced options at the top right to open them all (it never shows a control its card has no use for, such as the sample rate on a TNC link). The page has five tabs, in a fixed place whatever the window size: Setup (waveform, station identity, sound card), Transmit (keying, drive, Tune and the tests), Receive (receivers, receive emphasis, Multi-receive, FSQ receive), Rig control and Live status. Changing tab changes nothing on the air. The pinned footer, on every tab, holds Start radio / Stop radio, a status line and a one-line strip: audio path, PTT, receive level and dropouts, and Waiting to send while anything waits. If PTT release cannot be confirmed the strip says PTT release not confirmed and links to Live status, where The radio is receiving - clear the PTT alarm is.
Running old settings. A few settings are read only when the radio starts: AX1200's profile, path and file settings and its KISS timing, the receivers' effort and receive emphasis, JG25's acquisition and transmit settings. Change one while the radio runs and the status bar says Running old settings · Restart, on every page, until a restart really applies it or you put the setting back as it was. Answering Later when you leave the Radio page (asked once per set of changes), moving between pages or tabs, and a restart that is refused all leave it on. Restart asks first, and says what it costs when messages are still waiting to go out. With the radio stopped a change is simply what the next start uses.
The card that connects OpenJSQ to your radio interface and chooses the waveform you transmit on.
Every control on the card, in order:
/suffix. Pressing a waveform button is never an identity edit; nothing is set here. Edit station identity… beside the line opens the Settings page, whose Station card is the one place the Callsign, the AX1200 SSID and the FSQ / JG25 name (with its suffix) are set. Where the saved identity is not something this waveform can transmit, the line says so in amber rather than going blank — No callsign set — this station cannot transmit., or Not a station AX1200 can transmit: (or FSQ, or JG25) followed by the reason — and a waveform switch or a restart is then refused in the footer with the same reason (Waveform not changed: …, Not restarted: …) before a running radio is taken down, so a bad identity never leaves you off the air. Stop radio is the exception that proves it: it is never refused over an identity, because nothing about a saved callsign is a reason to go on transmitting.What Adaptive learns is remembered against the audio path it was measured on — a particular sound device at a particular rate — not against the application. That matters: a correction learned through a de-emphasised FM rig would be actively harmful if it were reloaded into a session running on a flat virtual cable, so a path OpenJSQ does not recognise starts neutral and learns from scratch. If you suspect a remembered correction is doing harm, Forget learned receive emphasis clears every path back to flat; restart the radio afterwards so the filters rebuild cleanly.
One card for the settings that decide how readily a receiver hears a signal and calls the channel busy. Each row applies wherever its waveform listens — the selected waveform, or one running beside it under Multi-receive — so none of them is hidden while it is in use. The two thresholds read Auto at their calibrated default, and Receive effort reads Balanced; Set all to Auto puts every row back. The values behind Auto are the ones these settings have always had.
To set it:
The Channel page's Monitor squelch only hides weak lines from view; it changes nothing any receiver hears. FSQ's own receive settings (the corruption check, the clear-channel wait and the decoders, below) are likewise shown whenever FSQ listens, not only when it is selected.
The card for the two waveforms that run beside the one you selected. What you type always goes out on the selected waveform; this card, on the Radio page's Receive tab beside the receivers it configures, decides what the others may do. Which band your radio is on, without rig control, is said on the Radio page's Rig control tab. It is shown on every waveform. The walkthrough, with the band rule and what each setting looks like in practice, is Setting it up in section 16 (the card's "?" opens that section).
To change it: open Radio → Receive, open the Multi-receive card's More options for the rows marked advanced, and make your choices. Like the rest of the Radio page each one is saved as you make it. The receivers read them when the radio starts, so on a running radio the status bar says Running old settings · Restart until a restart applies them.
| Control | What it does | Default |
|---|---|---|
| Other waveforms | Listen and answer: automatic requests, acknowledgements, file and mail replies go back on the waveform they came in on. Listen only: the others are received and shown but never transmit, so stations using them get no acknowledgements and their transfers retry and give up. Off: only the selected waveform runs, which saves about 12–15% of one fast core (roughly double on a modest laptop). | Listen and answer |
| FSQ listener on FM (advanced) | While AX1200 or JG25 is selected, FSQ listens on one slot at 1500 Hz. Normal and Fast speeds hears every FSQ speed (11 decoders, about 6% of one core). Normal speeds only hears FSQ-2, 3, 4.5 and 6 (4 decoders, 5 when its own speed is a Fast one; about 1%), for a slower computer. Greyed while Other waveforms is Off. | Normal and Fast speeds |
| FSQ listener's speed (advanced) | Same as the FSQ Mode, or any FSQ speed, the Fast ones marked OpenJSQ only. The listener answers an automatic request at the speed it was asked at; this is the speed it uses otherwise — when the asker's speed cannot be used — and for the files, mail and relays it sends. FSQ-2, 3, 4.5 and 6 reach every FSQ station; faster speeds reach only OpenJSQ stations that hear the Fast speeds. Greyed unless Other waveforms is Listen and answer. | Same as the FSQ Mode |
FSQ's own receive settings, in a card of their own on the Receive tab (they were on Settings until 1.0.8). It is shown whenever FSQ listens: when FSQ is the selected waveform, or beside AX1200 or JG25 while Multi-receive → Other waveforms is not Off — so the FSQ receiver running beside another waveform can be set without changing the waveform. While FSQ does not listen the card is hidden (no More options or Show all advanced options brings it back) and a line on the Multi-receive card says where it went; the rows keep their values.
To change them:
The wait. From FSQ-12 up, your signal covers most of the channel, so OpenJSQ holds each transmission until every slot inside it is quiet, up to the time set here. When the wait runs out the transmission goes ahead: the whole-channel check is dropped and only your own frequency still has to be clear of a station actively sending — it never transmits on top of one. It has no effect in FSQ-2 through FSQ-6W, where signals fit their own slot.
The decoders. OpenJSQ runs several FSQ decoders at once so it hears speeds you did not choose. The cost is linear and measured: a Normal-speed decoder takes roughly 0.25% of one processor core and a Fast one about 1%, so the default five-slot plan's 15 decoders (it also hears the Fast speeds at 1500 Hz) come to about 8–10%. The cap never drops your own speed or the four Normal speeds, and sheds the fastest Fast speeds first.
| Control | What it does | Default |
|---|---|---|
| Check every message for corruption | Yes adds a 5-character checksum to each FSQ message you send, so a damaged copy is caught at the far end. fldigi shows those characters as line noise, so the classic speeds default to No. On the OpenJSQ-only modes (FSQ-6W and faster) nobody but OpenJSQ decodes the message, so it is on and the box is greyed, reading Yes (always on for FSQ-12); your own choice comes back when you step down to FSQ-6 or slower. | No |
| In wide modes, wait for a clear channel | Don't wait, 10 seconds, 30 seconds, 1 minute, 2 minutes or Wait indefinitely. Messages stay Queued while it waits. | 30 seconds |
| Decoders running at once | Everything the mode can hear, At most 9 decoders, At most 7 decoders or At most 5 decoders. More decoders hear more speeds without changing anything; fewer use less processor time. | Everything the mode can hear |
Two cards share this section: Transmit control (PTT), which decides how OpenJSQ keys the transmitter, and Transmit level, which sets how hard it drives it. Neither is shown on a KISS TNC link, where the TNC keys and drives the radio itself.
The card that answers “is this station actually working?” without going on the air.
To check it:
What the waveform rows can say. USB and 7.104 stand for whatever rig control reports.
| Row | Sentence | What it means |
|---|---|---|
| The selected waveform | Selected — what you type goes out here. | The normal state. |
| Selected — what you type goes out here; net mode holds automatic answers. | Net mode is on: what you type still goes, and automatic traffic waits (section 8). | |
| Selected — receiving only: this copy may not transmit. | A closed-beta licence problem: nothing transmits on any waveform (the beta licence, section 2). | |
| Selected — receiving only: no audio output is selected. | Audio output is No output (receive only): nothing can transmit. | |
| Selected — what you type goes out here. OpenJSQ cannot tell whether your radio is on FM or HF: say which under Radio › Rig control, or connect rig control, so automatic answers can follow the band. | FSQ is selected, there is no rig control, and Radio → Rig control → Without rig control, my radio is on is Not stated. Nothing is held back; tell OpenJSQ where the radio is (section 16). | |
| Selected — what you type goes out here; automatic answers use narrow FSQ speeds only and nobody else's traffic is relayed, because the rig is on 14.0740 MHz, outside the US §97.221(b) automatic-control sub-bands. The reason can also be a mode that cannot place the signal (… in AM, which does not place your signal on one side of the dial …) or no current frequency (you said your radio is on an HF band and no current frequency is known …). | FSQ on HF under Follow US §97.221, outside an automatic-control sub-band or with no frequency to check (Automatic answers off FM, section 16). | |
| Selected — what you type goes out here; automatic answers and relaying may use any FSQ speed, because the rig is on 14.0970 MHz, in the 20 m 14.0950-14.0995 MHz sub-band (US §97.221(b)). AX1200 and JG25 send nothing automatically. | FSQ inside a §97.221(b) sub-band, by rig control's reading. | |
| Selected — what you type goes out here; automatic traffic is not restricted by band, because Automatic traffic on HF is set to No restriction. | FSQ off FM, with Settings → Relaying → Automatic traffic on HF at No restriction. | |
| Selected — what you type goes out here; automatic answers are held: the rig reports USB, not FM, and AX1200 is too wide to send unattended off FM. The evidence can also be the rig is on 7.104 MHz or you said your radio is on an HF band. | AX1200 or JG25 is selected and the radio is taken to be off FM. What you type still goes out; automatic answers wait. Check the rig, or change Radio → Rig control → Without rig control, my radio is on from An HF band. A reading from rig control that has stopped answering adds (rig control's last reading; it is not answering now). | |
| A waveform beside it | Listening and answering. | It receives, and may answer automatic requests. |
| Listening only (Receive › Multi-receive). | Other waveforms is Listen only. | |
| Listening only: FSQ is selected, so the radio is taken to be on HF. | The band rule: with FSQ selected, AX1200 and JG25 do not answer unless Radio → Rig control → Without rig control, my radio is on says An FM channel (section 16). With An HF band chosen there it can name AX1200 or JG25 instead. | |
| Listening only: the rig reports USB. or Listening only: the rig is on 7.104 MHz (HF). | The band rule, read from rig control. | |
| Held: net mode is on. | Net mode holds its answers. | |
| Held: this copy may not transmit. | The licence holds it. | |
| Held: receive only, no audio output is selected. | No output (receive only) is chosen. | |
| Not running: Other waveforms is Off. | Only the selected waveform runs. | |
| Not running: a KISS link has no other receivers. | The TNC does the receiving. | |
| Not running: this receiver could not be started. | It failed as the radio started. The rest of the station is running (section 16). |
Audio gaps. If the sound card or the computer falls behind while receiving, the status bar says Receive audio skipped a moment (the sound card or this computer fell behind); a packet heard just then may have been missed. It is a notice, not an error: your own keying, and another waveform's, never cause it. Transmit audio ran dry mid-packet is reported only when a frame really did go out with a gap in it; the normal end of a frame, while the sound card plays the last of it, does not count. The counts are in the audio-health tooltip and in the diagnostic bundle.
A pause in the program. If OpenJSQ itself is held up for a few seconds, by a slow dialog or a diagnostic export say, it now reads the waiting audio afterwards instead of throwing it away, so a frame that was on the air during the pause is still decoded, a second or two after the window comes back. No new transmission starts until it has caught up, because the last few seconds of the channel have not been heard yet. Only a pause longer than the sound card's buffer (about 5.5 seconds at 48 kHz) still loses audio; that is counted as dropped audio, and the receivers start again once. A computer too slow to catch up gives up after a few seconds and goes back to live audio.
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. The mode the rig reports is also what the band rule reads first (section 16). OpenJSQ deliberately shows — rather than a stale number whenever the link can't vouch for a reading.
127.0.0.1 and only changes if flrig or rigctld runs on another computer. The port box pre-fills from the backend you chose — 12345 for flrig, 4532 for rigctld — and follows a change of backend unless you have typed a port of your own.— whenever the link cannot vouch for it.Setting it up, step by step. The Backend row is always on the Rig control tab, in the everyday view too; once you pick a backend, a More options line appears with the rows below.
With rig control connected, its frequency and mode also decide the band rule and the HF rule for automatic traffic (section 16), so a correct reading matters more than it looks.
Without rig control, my radio is on — on the same card, in the everyday view, and never greyed: Not stated (the default), An FM channel or An HF band. It replaces the two ticks My FSQ radio is on FM and My radio is on HF, which used to be on Settings and contradicted each other; a profile keeps what it had. It applies at once, on a running radio too.
incoming folder.APZJQ1 by default. It is how other software on a shared channel recognizes this traffic as OpenJSQ's rather than something addressed to a station. Leave it alone unless you are coordinating a channel where someone has asked you to use a different identifier.WIDE1-1, WIDE2-1. Every hop you add is another transmission of the same frame on the same channel.A KISS TNC does the modulating, listens to the channel and keys the transmitter itself, so no sound card and no PTT wiring are used, and frequency, power and TX delay are set on the radio or the TNC, not here. Choosing one of the three KISS links under Radio link shows its own card below the AX1200 card, and each card's line of Status: says what the link is doing. Starting the radio connects to the radio, port or host you chose last time by itself.
Bluetooth KISS radio, for a TNC that offers KISS as a Bluetooth Low Energy service (rare: most handhelds use Serial, below).
Serial KISS TNC, for a TNC on a USB or Bluetooth serial port, such as a BTECH UV-PRO.
Network KISS TNC, for a software TNC such as Dire Wolf, on this computer or another.
KISSPORT, not AGWPORT.127.0.0.1 when the TNC runs on this
computer, otherwise its address.KISSPORT, 8001 by default. Not its AGWPORT (8000):
that speaks another protocol, and a station aimed at it connects and never
passes a frame.KISS timing, shown on every KISS link with More options on the AX1200 card, on a KISS link: Allow the radio (1500 ms by default) and KISS port (0), both explained in the list above. Set Allow the radio from the radio's own TX delay, rounded up generously, and leave KISS port at 0 unless the TNC has more than one radio port.
OpenJSQ listens to FSQ, AX1200 and JG25 at the same time, from one radio and one sound card. Pick FSQ and your station still copies the AX1200 net and the JG25 station calling you. Pick JG25 and it still hears the FSQ station on 1500 Hz and the packet traffic. Nothing needs switching on: by default every audio sample your radio delivers goes to all three receivers at once, and each one decodes what is there to decode. One setting, Other waveforms in Radio → Receive → Multi-receive, decides what the other two may do, and its default lets them answer.
Imagine putting three receivers on one speaker, each listening for its own kind of signal. The sound card delivers one stream of audio, and OpenJSQ hands exactly the same samples to an FSQ receiver, an AX1200 receiver and a JG25 receiver. They do not take turns and they do not share a decoder. Each listens the whole time, each applies its own checks, and whatever passes goes into the same Chats, Inbox, Channel history and heard list. The one you selected is the transmit waveform; the other two are the other waveforms, as Settings calls them.
This is not the same thing as the FSQ receiver's own many decoders, which OpenJSQ has always had: those are several FSQ decoders on different slots and speeds (the decoder cards of the Channel page's advanced view, section 14, and Decoders running at once in section 15). Multi-receive is three different waveforms.
| Receiver | What it listens for | Which of your settings it follows |
|---|---|---|
| FSQ | With FSQ selected: every slot of your channel plan at your own
FSQ speed, plus every other FSQ speed, Normal and Fast, on the
1500 Hz slot. That is 15 decoders on the default
Multi — compatible plan, 11 on a single slot whether your
mode is a Normal or a Fast one, 13 on FSQ-6W and 6 on
Multi — dense, which has no 1500 Hz slot and so hears only your own speed
(section 18). With AX1200 or JG25 selected: the radio is on FM, where FSQ has no slot plan, so FSQ listens on one slot at 1500 Hz, whatever FSQ Channel mode you saved. By default it hears every FSQ speed (11 decoders); set it to the four Normal speeds (4 decoders, or 5 when its own speed is a Fast one) for a slower computer. Its own speed is Radio → Receive → Multi-receive → FSQ listener's speed, or your FSQ Mode if that is left at Same as the FSQ Mode. |
With FSQ selected, the FSQ Mode and Channel mode and Radio → Receive → FSQ receive → Decoders running at once. With AX1200 or JG25 selected, Radio → Receive → Multi-receive → FSQ listener on FM and FSQ listener's speed (and through it your FSQ Mode) instead, still within the Decoders running at once ceiling. On either, Receive effort, Receive emphasis and Check every message for corruption. |
| AX1200 | 1200-baud Bell 202 packet. | Your AX1200 address (the callsign with its SSID), the AX1200 card on the Radio page, and Receive effort. |
| JG25 | All seven JG25 speeds and all four error-correction settings. Every frame's header says which were used, so nothing has to be chosen. | The JG25 card on the Radio page, including Adaptive receive equalization, and JG25 carrier-detect offset on the Radio page's Receivers card. |
Every receiver keeps the acceptance rule it has always had. FSQ still grades every reception on its admission ladder, AX1200 still needs a good frame check, and JG25 still needs its CRC-32C to hold. Running three receivers does not lower the bar for any of them.
On the Radio page's Receive tab. Like the rest of the Radio page, each choice is saved as you make it. The receivers read them when the radio starts, so on a running radio the status bar says Running old settings · Restart until a restart applies them.
| Control | Choices | What it decides |
|---|---|---|
| Other waveforms | Listen and answer (the default), Listen only, Off | What the two receivers beside the selected waveform may do. Listen and answer: automatic requests, acknowledgements, file and mail replies go back on the waveform they came in on. Listen only: they are received and shown but never transmit, so stations using them get no acknowledgements and their transfers retry and give up. Off: only the selected waveform runs, which saves about 12–15% of one fast processor core. What you type goes out on the selected waveform under all three. |
| FSQ listener on FM (advanced) | Normal and Fast speeds (the default), Normal speeds only | Used only while AX1200 or JG25 is selected, when FSQ listens on one slot at 1500 Hz: every FSQ speed (11 decoders, about 6% of one core), or FSQ-2, 3, 4.5 and 6 only (4 decoders, about 1%) for a slower computer. Greyed while Other waveforms is Off. |
| FSQ listener's speed (advanced) | Same as the FSQ Mode (the default), or any FSQ speed; the Fast ones are marked (OpenJSQ only) | Used only while AX1200 or JG25 is selected: the speed the FSQ listener sends at when it cannot use the asker's speed, and for the files, mail and relays it sends (At what FSQ speed, below). Greyed unless Other waveforms is Listen and answer. |
| Radio → Rig control → Without rig control, my radio is on | Not stated (the default), An FM channel, An HF band | A statement about your radio when rig control does not report one. An FM channel: with FSQ selected, AX1200 and JG25 may answer beside it (the band rule, below). An HF band: automatic traffic follows Settings → Relaying → Automatic traffic on HF (Automatic answers off FM, below); what you send yourself is not affected. One choice, so the two can no longer contradict each other; it applies at once. |
The note under the two boxes points to Settings → Relaying → Automatic traffic on HF, where the HF rule itself is chosen. When rig control (CAT) reports the radio's mode or frequency, that decides instead of either box.
FSQ-3,
AX1200 or JG25-FM 2400/F0 sits where the mode always
sits (section 10). One thread can therefore contain bubbles that arrived
three different ways.
W4IJG-7 as on AX1200 with
Same as AX1200), or your callsign and SSID on AX1200
(section 12).A few things do not change. The Radio page footer still describes only the waveform you selected (Running AX1200 - packet channel active.); the Live status rows are where the other two report. The spectrum strip shows the whole audio as it always has, but its slot plan, and the slot buttons and decoder cards of the Channel page's advanced view, appear only when FSQ itself is selected. The FSQ receiver running behind AX1200 or JG25 has no cards of its own, although its receptions are in the history.
Within FSQ this happens all the time: the decoders on one slot all hear the same transmission, and a decoder set to a neighbouring speed often decodes it too. OpenJSQ keeps the first copy, gives it the best signal reading and the strongest assurance any copy earned, and folds the rest into it. Copies within two seconds count as one reception. On the Channel page they are one row; in Chats, one bubble. A copy never triggers anything: a question heard by four decoders is answered once, not four times.
Different waveforms are different transmissions, and OpenJSQ does not merge copies across them. A station that sends the same words on FSQ and then on JG25 has sent two messages, and you will see both, each labelled.
You have three receivers and still one transmitter, and a transmitter carries one signal at a time. Two rules decide which waveform each transmission uses, and the first is the one to remember.
W4IJG-16 cannot be sent on FSQ, and a
/suffix FSQ identity cannot be sent on AX1200. OpenJSQ refuses
either with the reason rather than guessing (section 9).Automatic answers go back the way the question came. With
Other waveforms at Listen and answer, the default, each
receiver has its own service session, with the same settings as the rest of your
station. When a station asks for something on AX1200, and the band rule
below lets AX1200 answer, the AX1200 side answers, on AX1200. Each waveform answers with its own form of your identity:
your FSQ / JG25 name on FSQ and JG25 (W4IJG-7 with
Same as AX1200, the choice a new profile starts with, or
W4IJG/CRB with Callsign with suffix), and callsign
and SSID on AX1200 (W4IJG-7), so the asking station hears from the
address it asked. That covers:
AX1200 and JG25 are FM waveforms and must never key up on HF, while FSQ is at home on both. So before a waveform beside the selected one answers anything, OpenJSQ works out which band the radio is on:
The rule only ever holds back AX1200 and JG25 beside the selected waveform; the FSQ receiver is never held by it. The selected waveform itself is never blocked: what you type always goes out.
What this station sends by itself — answers to questions, refusals, capability and heard-list answers, echoes, receipts, presence, and traffic relayed for other stations — follows a rule of its own when there is evidence that the radio is not on FM: rig control reporting a non-FM mode or a frequency below 30 MHz (a reading from a link that has since stopped answering still counts), or An HF band chosen under Radio → Rig control → Without rig control, my radio is on. Which rule is set by Settings → Relaying → Automatic traffic on HF:
What you type, and the files and mail you send or accept, are never affected. The Live status row names the rule in force and why — Selected — what you type goes out here; automatic answers and relaying may use any FSQ speed, because the rig is on 14.0970 MHz, in the 20 m 14.0950-14.0995 MHz sub-band (US §97.221(b)). AX1200 and JG25 send nothing automatically., or … automatic answers use narrow FSQ speeds only and nobody else's traffic is relayed, because the rig is on 14.0740 MHz, outside the US §97.221(b) automatic-control sub-bands. A selected AX1200 or JG25 says automatic answers are held: the rig reports USB, not FM, and AX1200 is too wide to send unattended off FM. With FSQ selected, no rig control and neither An FM channel nor An HF band ticked, OpenJSQ cannot tell where the radio is: nothing is held back, and the row says so and how to tell it.
This is a software safeguard, not legal advice. It is not a statement that anything is or is not permitted where your radio is; you, as the control operator, are responsible for your station. It knows only the US §97.221 sub-bands, not other countries' rules or band plans; it does not know about split operation (rig control reports one VFO) or whether the station is under local, remote or automatic control.
Automatic FSQ replies (a signal report, your location or station message, your software version, your heard list, a repeat or delayed repeat, an echo of a message another station asked you to repeat to everyone, a wake-up, the mailbox answers, a group signal report, and a refusal) go out at the speed the request came in at, because that is the speed the asking station is listening at. A station that asks on FSQ-12 while you run FSQ-3 is answered on FSQ-12. What you type, files and relays, and the mail you start yourself (an announcement, a deposit), go at your own speed, as always. A reply to another station's mail request goes at the speed that station used: its query, fetch, receipt, deposit answer and delivered notice, and the letter itself, sent in answer to a fetch. When several receivers decode the same question or fetch, the speed is the one that best fits how long the frame took on the air, so an FSQ-3 question is answered at FSQ-3 even when your FSQ-2 receiver copied it too.
With FSQ selected, an answer at an FSQ speed wider than your own (for a Normal-speed station, FSQ-6W and up) first waits for the whole channel to be clear, as any wide transmission does (Radio → Receive → FSQ receive → In wide modes, wait for a clear channel, 30 s by default); if the channel stays busy that long it goes at your own speed instead, which fits in one slot. The FSQ listener beside AX1200 or JG25 does not wait for the whole channel: on FM there is one channel and no neighbouring slots to splash, and an open squelch's hiss would read as busy for ever. It answers at the asker's speed as soon as its channel is clear. When it cannot use the asker's speed, and for the files, mail and relays it sends, it uses Radio → Receive → Multi-receive → FSQ listener's speed (advanced): Same as the FSQ Mode (the default) or any FSQ speed. FSQ-2, 3, 4.5 and 6 reach every FSQ station; the faster ones are marked OpenJSQ only in the list, because fldigi, FSQCall and an OpenJSQ station without Fast decoders cannot hear them, and nothing slows them down for such a station.
JG25 follows the same idea. An automatic answer — a capability, heard-list, signal-report or other station-action answer, and a repeat my message echo — goes out in the mode and error correction the request came in with, so a station that decodes only its own mode still hears it. What you type, delivery receipts and relayed frames keep your own JG25 Mode and FEC.
What the other receivers never do is announce you. Presence announcements and FSQ soundings go out only on the selected waveform, so stations on the other two find you by hearing you, or by your answers. The one exception is a change to what your station offers (relaying, the shared folder): each waveform running beside the selection, on Listen and answer, announces the change once.
Start with the Radio page's Live status card. It has a row for each waveform that says what it is doing and why (section 15): Listening and answering., Listening only: FSQ is selected, so the radio is taken to be on HF., Held: net mode is on., Not running: Other waveforms is Off. and so on. Most of the rows below are one of those sentences worked through. The tooltip on the waveform chip in the top bar lists the same three.
| Symptom | What to check |
|---|---|
| A station on another waveform is never heard | Is Radio → Receive → Multi-receive → Other waveforms set to Off? Then only the selected waveform runs. Is this a KISS TNC link? Then there is nothing to share and only AX1200 is heard. Otherwise check that waveform's row in Live status: Not running: this receiver could not be started. means it failed as the radio started. For AX1200 the usual cause is an address that cannot be made valid. For JG25, work through its own list in section 7, because it follows the JG25 card's settings even while it is not selected. |
| Live status says “Not running: this receiver could not be started.” | That receiver could not start; the reason is reported only as the radio starts. The waveform you selected is on the air and the other receiver is listening. For AX1200 the usual cause is an address that cannot be made valid (Settings → Station); fix it and restart the radio. The one message of this kind that appears while the radio runs is More than one waveform requested transmit at once., below. |
| I answered a message and the other station never heard me | Look at the footer of the message you answered and at the waveform selected on the Radio page. If they differ, your reply went out on the selected waveform. The line above the compose box warns about exactly this — ⚠ … last reached you on FSQ — what you type here goes out on JG25. — and its Switch to … button restarts the radio on theirs after the usual confirmation. Switch, or select theirs on the Radio page, and send again. If you dismissed the line with ×, the Send button's tooltip still says where the message goes. |
| My station transmitted on a waveform I am not using | That is an automatic answer to something asked on that waveform: a signal report, a station action, an acknowledgement, a file block, a held letter or a relay. The Channel page shows it as a Sent entry tagged with that waveform. To let the other waveforms receive without ever transmitting, set Other waveforms to Listen only in Radio → Receive → Multi-receive. Net mode holds automatic traffic on every waveform, or turn the service off in Settings. |
| Stations on AX1200 or JG25 get no answer or acknowledgement from me while FSQ is selected | That is the band rule: with FSQ selected OpenJSQ assumes HF, where AX1200 and JG25 must not transmit, so they only listen, and those stations' verified messages and file transfers retry and give up. If your FSQ radio is on an FM channel, choose An FM channel under Radio → Rig control → Without rig control, my radio is on. If your radio has rig control, its mode decides instead: an FM mode means FM, and USB, a data mode or CW means HF whatever the frequency. The AX1200 and JG25 rows in Live status say which reason applies. Check too that Other waveforms is not Listen only. Otherwise select their waveform to answer them. |
| A reply to an automatic question seems slow | It is waiting its turn. Only one waveform can hold the transmitter; what you send on the selected waveform goes first, then its relay forwards and answers (for at most six seconds while a reply beside it waits), and other automatic traffic on all three takes turns. A waveform beside the selected one also waits until no receiver hears the channel busy, so traffic on any of the three waveforms holds it. |
| Audio stutters, or Dropouts climb, since upgrading | More receivers mean more processor work. Close whatever else is busy, then trim Radio → Receive → FSQ receive → Decoders running at once (under More options), set FSQ listener on FM to Normal speeds only, or set Other waveforms to Off. Reset Dropouts and watch whether it climbs again. |
| The status bar says “More than one waveform requested transmit at once.” | The safety check that should never trip has tripped: two waveforms claimed the transmitter together, and no new transmission is allowed until that clears. Press ■ Stop TX, and if it happens again save a diagnostic bundle (section 14) and send it in. |
| The Channel history seems to be missing traffic | Check the Waveform selector. A list narrowed to FSQ earlier hides JG25 and AX1200 rows. Set it back to All waveforms. For rows further back, use Load older history. |
| The Channel log says “Not answered on AX1200: … — listening only (…)” | A note, not an error: that waveform heard a request and was not allowed to answer. The note gives the reason: Other waveforms at Listen only, the band rule, net mode or the licence. Fix that reason, or select their waveform (section 14). |
| AX1200 and JG25 stay quiet on an FM rig although An FM channel is chosen | Rig control's mode wins over that choice. A USB or DATA-U mode reads as HF, and Live status says so: Listening only: the rig reports USB-D. Check the mode the rig reports. |
| Live status says “Selected — what you type goes out here; automatic answers are held: the rig reports …” | Rig control (or An HF band under Radio → Rig control → Without rig control, my radio is on) says the radio is not on FM while AX1200 or JG25 is selected. What you type still goes out; automatic answers on it are held, unless Settings → Relaying → Automatic traffic on HF is No restriction. Check the rig's mode. |
| Automatic answers on another waveform are too loud or too soft | Each waveform answers at its own drive. Set that waveform's slider on the Radio page's Transmit level card (section 15). |
You don't have to. It is on by default whenever OpenJSQ is the modem, which means any sound-card link. If it has been turned off, set Radio → Receive → Multi-receive → Other waveforms back to Listen and answer.
Yes, in Radio → Receive → Multi-receive. Other waveforms: Off runs only the selected waveform and saves the processor time the others cost. Listen only keeps hearing all three but transmits only on the selected one; the catch is that stations on the other two get no acknowledgements, so their verified messages and files retry and give up. If you want your station silent except for what you type, on every waveform including the selected one, Net mode does that.
Because the question came in at FSQ-12. Automatic FSQ replies (signal report, location, station message, version, heard list, repeats, echoes, wake-ups, mailbox answers, group signal reports, refusals) go out at the speed the request came in at, so the asking station, which is listening at that speed, hears them. A reply to another station's mail request goes at that station's speed too. What you type, files, relays and the mail you start yourself go at your own speed. The one exception is a wide answer that waited out the whole-channel courtesy with FSQ selected: that goes at your own speed (section 16, At what FSQ speed).
Yes, for everything you send: messages, files, letters, questions, presence announcements and FSQ soundings. It does not limit what you hear.
Because the selected waveform cannot carry its address. A station heard on
FSQ or JG25 as N4UZZ/CRB cannot be addressed over AX1200, which has no
room for a /suffix, and on FSQ and JG25 a hyphen must be followed by 1
to 15 (K4ABC-16 is refused). K4ABC-7 can be addressed on
all three; if that exact name has never been heard on FSQ or JG25, the
New conversation dialog says so and opens the conversation anyway. The dialog says which, and
your reply stays in the box. Select the waveform that can carry the address, or
write to the station's address on yours (section 9 shows the dialog).
Only if they hear from you. Your station announces itself on the selected waveform only. It answers on the others when asked, and each answer is something the asking station hears from you.
Yes. The FSQ receiver always includes the four classic speeds on 1500 Hz
(except on the Multi — dense plan, which has no 1500 Hz slot),
so an fldigi station is heard whatever waveform you have selected, unless
Other waveforms is Off, and that includes fldigi's undirected text (call: text, the form its echoes take), which OpenJSQ used to discard. Replying to them needs FSQ
selected.
Yes. JG25 is in every shipped build, so every copy listens to all three waveforms. A closed-beta copy whose licence does not permit transmitting still receives all three.
Only when nothing but their software has been heard. A 1.0.6 station that has AX1200 selected says so in its capability record, and Last RX then reads works on AX1200; failing that it shows the waveform of the newest chat heard from them, overheard chats included. JG25 · automatic appears when all your receiver has heard is their JG25 receiver answering by itself. Last RX still says nothing about which waveform your next message will use; that is always the selected one.
If the station sent it twice, once on each waveform, yes. Those are two transmissions, and each bubble is labelled. The same FSQ transmission heard by several FSQ decoders shows up once.
On AX1200, yes, if you accept files (Settings → Files, one switch for every waveform; section 11). The JG25 side
acknowledges each block on JG25, taking its turn for the transmitter between
your AX1200 transmissions, and the file lands in the same incoming
folder. On FSQ only if you have chosen An FM channel under Radio → Rig control → Without rig control, my radio is on
(or rig control reports an FM mode): otherwise OpenJSQ takes FSQ for
HF, JG25 only listens, and the sender's transfer retries and gives up. A
shared-folder listing you asked for is different. It has to come back on
the waveform you asked on, because that is the only request your station is
waiting on.
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 choice is what you transmit on: all three are received at once (section 16).
| FSQ++ | AX1200 | JG25 | |
|---|---|---|---|
| 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 18. | 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 | Between OpenJSQ stations, yes, with whole-file verification, though slowly. To fldigi and FSQCall, # is the file protocol. |
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 | Its entries in the one shared feed, tagged FSQ; the advanced view nests each decoder's copy and the admission checks behind every reception. | Its packet traffic in the same feed, tagged AX1200. | Its packet traffic in the same feed, tagged JG25. |
| Status | Shipped. | Shipped. | Experimental. In every shipped build. |
Two questions decide whether a mode suits a path: how quickly it moves what you send, and how weak a signal it still copies. The tables below answer both for every mode OpenJSQ transmits, FM first and then HF. They come from calculation and simulation, not from on-air tests, so treat them as a guide to which way to move rather than as a promise about your radio.
"Signal needed" here is the SNR at which 9 packets in 10 arrive intact. The first column is the middle result across seven models of an FM voice radio's audio path. The second is a model built from recordings of one real pair of radios, a Yaesu FT-8800 sending to an FT-817. On that pair JG25 needed about 1.5 to 5.5 dB more than the middle result, and AX1200 about 1 dB more. Half the packets still get through at about 1 to 2 dB below the 9-in-10 figure.
| Mode | Real speed, 128-byte message | 1 KB file | 10 KB file | Signal needed, seven FM models | Signal needed, real radio pair |
|---|---|---|---|---|---|
| AX1200 | 761 bps | 21.0 s | 2.4 min | 6.8 dB | 7.9 dB |
| JG25-FM 1200, F0 | 929 bps | 16.7 s | 1.7 min | 6.0 dB | 11.5 dB |
| JG25-FM 1400, F0 | 1049 bps | 15.4 s | 91.8 s | 2.3 dB | 6.5 dB |
| JG25-FM 1600, F0 | 1161 bps | 14.4 s | 83.5 s | 5.0 dB | 8.8 dB |
| JG25-FM 1800, F0 | 1266 bps | 13.6 s | 76.9 s | 3.0 dB | 8.2 dB |
| JG25-FM 2000, F0 | 1365 bps | 13.0 s | 71.7 s | 5.6 dB | 11.0 dB |
| JG25-FM 2200, F0 | 1459 bps | 12.5 s | 67.5 s | 4.0 dB | 9.0 dB |
| JG25-FM 2400, F0 (default) | 1547 bps | 12.1 s | 63.9 s | 6.6 dB | 11.5 dB |
| JG25-FM 1200, F1 | 730 bps | 19.8 s | 2.2 min | 1.5 dB | 6.0 dB |
| JG25-FM 1400, F1 | 830 bps | 18.1 s | 1.9 min | 2.7 dB | 6.7 dB |
| JG25-FM 1600, F1 | 925 bps | 16.7 s | 1.7 min | 4.0 dB | 8.0 dB |
| JG25-FM 1800, F1 | 1015 bps | 15.7 s | 94.5 s | 4.2 dB | 8.8 dB |
| JG25-FM 2000, F1 | 1101 bps | 14.9 s | 87.5 s | 5.2 dB | 9.9 dB |
| JG25-FM 2200, F1 | 1183 bps | 14.2 s | 81.8 s | 6.0 dB | 10.8 dB |
| JG25-FM 2400, F1 | 1261 bps | 13.7 s | 77.1 s | 8.0 dB | 12.9 dB |
| JG25-FM 1200, F2 | 661 bps | 21.4 s | 2.4 min | 0.2 dB | 4.9 dB |
| JG25-FM 1400, F2 | 753 bps | 19.4 s | 2.1 min | 1.9 dB | 5.5 dB |
| JG25-FM 1600, F2 | 841 bps | 17.9 s | 1.9 min | 3.5 dB | 6.9 dB |
| JG25-FM 1800, F2 | 925 bps | 16.7 s | 1.7 min | 3.0 dB | 7.9 dB |
| JG25-FM 2000, F2 | 1005 bps | 15.8 s | 95.4 s | 4.7 dB | 9.6 dB |
| JG25-FM 2200, F2 | 1082 bps | 15.1 s | 88.9 s | 5.2 dB | 9.8 dB |
| JG25-FM 2400, F2 | 1156 bps | 14.4 s | 83.6 s | 6.9 dB | 12.0 dB |
| JG25-FM 1200, F3 | 514 bps | 26.0 s | 3.0 min | −1.3 dB | 2.7 dB |
| JG25-FM 1400, F3 | 589 bps | 23.3 s | 2.7 min | 0.3 dB | 3.7 dB |
| JG25-FM 1600, F3 | 661 bps | 21.3 s | 2.4 min | 1.7 dB | 5.0 dB |
| JG25-FM 1800, F3 | 730 bps | 19.8 s | 2.2 min | 1.8 dB | 6.4 dB |
| JG25-FM 2000, F3 | 798 bps | 18.6 s | 2.0 min | 3.0 dB | 7.8 dB |
| JG25-FM 2200, F3 | 862 bps | 17.6 s | 1.8 min | 3.6 dB | 7.8 dB |
| JG25-FM 2400, F3 | 925 bps | 16.7 s | 1.7 min | 4.8 dB | 6.2 dB |
F1 and F2 sit between F0 and F3 for speed, and above JG25-FM 1200 they add little over F0 for signal. At JG25-FM 1400 and up, F1 and F2 needed within about 2 dB of F0, one way or the other: F2 did up to 1.5 dB better at 1600, and F1 did 2 dB worse at 2200. They cost speed for that small change, and F3 needed less signal than either of them at every speed. At JG25-FM 1200 they do help (F0 needs 6.0 dB, F1 1.5 dB and F2 0.2 dB), but F3 helps most, at −1.3 dB. So when F0 struggles, F3 is the step to take. Robust acquisition was not measured: every figure here uses Normal.
The JG25 ladder is not a straight line. In these tests, with F0, JG25-FM 1400, 1800 and 2200 held on to weaker signals than the slower modes beside them. Speed alone does not tell you which JG25 mode is the tougher one, so read it from the table.
How AX1200 compares. On the seven-model measure this build's AX1200 receiver needs 6.8 dB, and at 8 dB it delivers 94 packets in 100. On the same test, Dire Wolf 1.7 in its default setup needed about 1 dB more.
On HF, "signal needed" is the weakest signal at which FSQ still copies a
message with no more than about one character in twenty wrong, on
average. It was measured in plain background noise, with no fading. Typing
speed is the same kind of figure a received message's footer shows as
ch/s. FSQ chat is sent once, with no retries, so the typing speed
is the whole story for a chat. Files between two OpenJSQ stations use the same
acknowledged file transfer as the FM waveforms, and the last column is what
that costs.
| Mode | Typing speed, 128-character message | 1 KB of text in one message | 1 KB file | Weakest usable signal |
|---|---|---|---|---|
| FSQ-2 | 1.57 ch/s | 9.3 min | 51.0 min | about −16.5 dB |
| FSQ-3 | 2.35 ch/s | 6.2 min | 34.1 min | about −15 dB |
| FSQ-4.5 | 3.13 ch/s | 4.6 min | 25.7 min | about −13.5 dB |
| FSQ-6 | 4.68 ch/s | 3.1 min | 12.8 min | about −10.5 dB |
| FSQ-6W | 4.54 ch/s | 3.1 min | 13.3 min | about −12 dB |
| FSQ-12 | 9.05 ch/s | 93.1 s | 4.7 min | about −9 dB |
| FSQ-16 | 12.04 ch/s | 69.9 s | 3.3 min | about −7.5 dB |
| FSQ-20 | 15.02 ch/s | 55.9 s | 2.5 min | about −6 dB |
| FSQ-30 | 22.40 ch/s | 37.3 s | 97.5 s | about −4.5 dB |
| FSQ-36 | 26.78 ch/s | 31.1 s | 79.5 s | about −3 dB |
| FSQ-42 | 31.14 ch/s | 26.7 s | 69.0 s | about −3 dB |
The signal figures were measured in 1.5 dB steps, which is why they read "about". In plain noise FSQ-6W copied at least as deep as FSQ-6 at the same typing speed. What its wider tone spacing is really for is multipath and drift, which this test does not include. It costs twice the width, and fldigi cannot decode it.
Sources: speed and file times
from the project's docs/MODE_THROUGHPUT.md and the FM signal
figures from its September 2026 modem comparison, both made at commit
d0d6bd26 and re-checked at 6443783b. FSQ
signal figures measured at 6443783b with the FSQ modem's
sensitivity bench, 20 trials per point.
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 is in every shipped build of OpenJSQ: a JG25 button on the Radio page and a JG25 entry in the first-run wizard.
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.
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, switch the error correction to F3 before you drop the speed: in the measurements that bought 2 to 5 dB, and a 1 KB file took 16.7 s instead of 12.1 s (How fast, and how robust, above).
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:
| Setting | Rate | What it means |
|---|---|---|
| F0 | — | No spare bits at all. Fastest; a damaged frame is simply lost. The shipped default. |
| F1 | 3/4 | Three quarters of the frame is your data. |
| F2 | 2/3 | Two thirds is yours. |
| F3 | 1/2 | Half is yours. The most robust. |
On receive, any JG25 frame whose first decode fails gets a slower second try in the background — a few seconds, up to about 4 s of searching — which can finish after you have transmitted. That try includes an equaliser trained on the frame's own preamble, for the delay that CTCSS (sub-audible tone) filtering adds to the lowest tones of JG25-FM 1800 to 2400. A JG25-FM 2400 frame sent with F3 also gets one extra decoder in that try, limited to 2 s. All of it is on by default and needs no setting; Live status → Recovery shows it working (section 15).
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.
This section is about FSQ. AX1200 has one speed and JG25 has its own seven — section 17 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 does not restart the radio. The change is used from your next transmission; until then the status bar and the box's tooltip say what it is waiting for: FSQ-6 applies when this transmission finishes, … when the messages waiting to go out have gone, … when the station being heard finishes, or … when the file transfer finishes. A file transfer finishes at the speed it started. Conversations, the heard list and the other waveforms' receivers carry on, and the Channel page draws a line where the change happened: ---------- mode FSQ-3 → FSQ-6 ----------. A conversation whose Slot chip names a slot the new mode does not have goes back to Auto. With FSQ selected, the receiver also hears every other FSQ speed, Normal and Fast, on the 1500 Hz slot, so a caller at any speed is heard whatever mode you chose (except on Multi — dense, which has no 1500 Hz slot). While AX1200 or JG25 is selected, the FSQ receiver running alongside listens on one slot at 1500 Hz instead, at every speed or only the four classic ones (Radio → Receive → Multi-receive → FSQ listener on FM), and sends at FSQ listener's speed, which is your FSQ Mode unless you set one (section 16).
| Mode | Effective baud | Channel allocation | Who can decode / what it wants |
|---|---|---|---|
| FSQ-2 | 1.95 | 430 Hz | Everyone (fldigi/FSQCall). The weak-signal workhorse — usable copy to about −16.5 dB. |
| FSQ-3 | 2.93 | 430 Hz | Everyone. The everyday default. |
| FSQ-4.5 | 3.91 | 430 Hz | Everyone. |
| FSQ-6 | 5.86 | 430 Hz | Everyone. The classic top speed. |
| FSQ-6W | 5.86 | 860 Hz | OpenJSQ only. FSQ-6's speed with double-spaced tones — extra multipath/drift tolerance, and it still shares the channel. |
| FSQ-12 | 11.7 | 1.3 kHz | OpenJSQ only; any band. |
| FSQ-16 | 15.6 | 1.7 kHz | OpenJSQ only; wants a quiet band. |
| FSQ-20 | 19.5 | 2.2 kHz | OpenJSQ only; quiet band. |
| FSQ-30 | 29.3 | 2.2 kHz | OpenJSQ only; wants a strong, clean signal — strength, not just quiet. |
| FSQ-36 | 35.2 | 2.6 kHz | OpenJSQ only; strong and clean. The practical top rung. |
| FSQ-42 | 41.0 | 3.0 kHz | OpenJSQ 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, about 13 dB from FSQ-2 to FSQ-42 as measured. Each mode's real speed and weakest usable signal are in How fast, and how robust (section 17). 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:
# tag, which other FSQ programs show as plain text and OpenJSQ reads as the station's capability record (What a station offers). With FSQ selected, a classic fldigi station is never sent a mode it has not advertised. The FSQ listener beside AX1200 or JG25 sends at FSQ listener's speed, and a Fast one there reaches only OpenJSQ stations that hear the Fast speeds. Automatic replies (signal report, location, station message, version, heard list, repeats, repeat-my-message echoes, wake-ups, mailbox answers, group signal reports, refusals) go out at the asker's speed; what you type, files, mail and relays go at your own speed. Because FSQ hears every speed on 1500 Hz, one question is often decoded at two or three speeds at once; the answer takes the speed that best fits how long the question took on the air, not the slowest clean copy (a slower receiver can copy a faster signal cleanly, which used to answer an FSQ-3 station at FSQ-2). The HF rules still cap it: an answer wider than the band allows goes at your own speed (Settings → Relaying).The page has seven sections, listed down the left (in a narrow window they are a box under the heading): Station, Automatic traffic, Mail & files, Stations heard, Chats & groups, Alerts & appearance and About & storage. One shows at a time. Find a setting, top right, looks through every setting's name and explanation: type a few letters, press Enter for the first match or pick one from the list, and the page goes to that section, opens the card's More options if the row is in them, and puts the cursor on it. Esc closes the list, then clears the box. Find never lists a setting that does not apply right now (an FSQ-only setting while FSQ is not listening, say).
Unlike the Radio page, Settings stages your edits. Change a box and a bar appears pinned at the foot of the page, in view whichever section you are on: 3 unsaved changes — saving restarts the radio so they take effect immediately. with Discard and Save & restart radio. The count is how many boxes differ from what is saved: put a box back as it was and it is no longer counted, and the bar goes when none differ. Nothing takes effect until you press the second button. If messages are still waiting to go out the program asks first (Save and restart the radio?), because a restart fails what is queued. Cards that apply at once wear an Applies at once chip in their title: Colours and Text size (the Appearance card) and every row of the Relaying card. They never count as unsaved changes, and Discard does not undo them. Each card shows what everyone touches and folds the rest behind its own More options (N) line; rows marked (advanced) in the tables below are the ones behind it. Show all advanced options, top right, opens every card's More options at once; the choice is remembered. A row that depends on a choice appears only when that choice is made — the waveform ticks under Carry messages for other stations → Some waveforms, the callsign list under Repeat messages for → These stations — and keeps what it holds while it is out of sight. The table below says which section each card is in, and this chapter takes the cards in this order: Station, Known callsigns, Automatic replies, Relaying, Mail, Files, Shared files, Presence, Chats, Groups, Appearance, Alerts, Files & configuration and About.
The "?" button. Every card has a small ? at the right end of its title. It opens this guide at that card's own section below, so each section is written to be read with the card open beside it: what the card is for, the steps to change it, and every box on it.
Settings no longer holds anything only FSQ uses: the corruption check, the clear-channel wait and the decoders are on Radio → Receive → FSQ receive (section 15), shown wherever FSQ listens, and Multi-receive is beside them. While another waveform is selected, the Known callsigns card adds that only FSQ learns callsigns, so its list does not change meanwhile.
| Card | What it is for | Section |
|---|---|---|
| Station style | Careful, Community or Performance: how much your station transmits on its own, set together and saved like any edit. | Station |
| Station | Who you are on the air: callsign, suffix, SSID, the name FSQ and JG25 use, location and station message. | Station |
| Known callsigns | The roster of callsigns your station has verified. | Stations heard |
| Automatic replies | What your station answers without asking you. | Automatic traffic |
| Relaying | Carrying and repeating other stations' messages, and the HF rule. Instant, no Save. | Automatic traffic |
| Whether you hold letters for others, and for how long. | Mail & files | |
| Files | Whether you accept files, and the size and count limits, on every waveform. | Mail & files |
| Shared files | A summary of the shared folder, and its technical limits. | Mail & files |
| Presence | Announcing yourself, and how long a heard station counts. | Station |
| Chats | Allcall chats in the sender's conversation, and the default chat delivery. | Chats & groups |
| Groups | The groups your station listens to, on every waveform. Instant, no Save. | Chats & groups |
| Appearance | Colours and text size. Instant. | Alerts & appearance |
| Alerts | The arrival chime and the speakers it comes out of. | Alerts & appearance |
| Files & configuration | The folder files live in, and where the settings file is. | About & storage |
| About | The version to quote in a bug report, and the credits. | About & storage |
About thirty settings decide how much your station transmits on its own: what it answers, whether it carries and repeats other stations' messages, how much mail and how many shared files it handles for others, and its airtime allowances. Station style, at the top of Settings, sets them together.
Choosing a style is an edit like any other. It changes the settings below as if you had set each one yourself. The changed rows are highlighted and the Save bar counts them. Save applies them, with the usual restart warning; Discard puts them back. Rows that normally apply at once (Relaying, Repeating, Limits) also wait for Save once a style is chosen. Your other unsaved edits stay as they were.
A style also sets two rows on the Radio page: Other waveforms and In wide modes, wait for a clear channel. The Save bar names them, and Save writes them for the Radio page.
Custom. Once one of a style's own settings differs from it, the selector reads Custom (based on Community), naming the closest style. The line under it lists the settings that differ, and Reset to Community stages the style again. Only the settings a style sets count: your callsign, text size and everything else never make the style Custom. A profile from an earlier version keeps its exact values and shows Custom with the closest style; nothing is applied until you choose one.
What a style never changes. Your identity and hardware: callsign and name, location and station message, sound card, keying, drive, receive thresholds, rig control and FSQ/JG25 speeds. Nor groups, the shared folder's on/off and audience, the files folder, appearance, alerts, known callsigns, the band claim, default chat delivery or file quotas. A style never chooses Unlimited (I'm responsible) airtime or HF No restriction: those stay your own choice, each with its own confirmation. Turning off Hold letters for other stations stops new letters being taken; letters already held are kept and still delivered.
| Setting | Careful | Community | Performance |
|---|---|---|---|
| Answer group signal report requests | Never | Automatically | Automatically |
| Group report request limit | 15 min | 5 min | 2 min |
| Carry messages for others | Off | All waveforms | All waveforms |
| Relay hop limit | – | 2 | 3 |
| Answer questions that reach you through a relay | No | Yes | Yes |
| Repeat messages for | Nobody | Everyone | Everyone |
| Longest message to repeat | – | One FSQ transmission | No limit |
| Automatic airtime | 1 in 10 min | 2 in 10 min | 4 in 10 min |
| Relay forwarding allowance | – | 3 in 10 min | 6 in 10 min |
| Hold letters for other stations | No | Yes | Yes |
| Tell a station it has mail at most | every 5 min | every 2 min | every minute |
| Give up on undelivered letters | – | 7 days | 14 days |
| Shared folder: each station may ask every | 60 s | 10 s | 10 s |
| Shared folder: serve at most per day | 1 MB | 1 MB | 5 MB |
| Shared folder: largest file to serve | 64 KB | 256 KB | 1 MB |
| Announce my presence | Off | Off | Every 30 min |
| In wide modes, wait for a clear channel (Radio) | 2 min | 30 s | 30 s |
| Other waveforms (Radio) | Listen only | Listen and answer | Listen and answer |
Every style also answers questions automatically, answers "what software", answers "who have you heard", lets other stations relay your traffic, accepts messages left for you from anyone, keeps the echo spacing at 30 s and the duplicate window at 5 min (Careful leaves both alone), counts echoes against automatic airtime, and follows US §97.221 on HF. A dash means the style leaves that setting as it is.
P after the fixed slash, -7 from the SSID list — and under them the two lines that say what each waveform will transmit: FSQ / JG25: KK4IB/P and AX1200: KK4IB-7.The first card on the page, and not an advanced one — this is where a station's identity is typed, and the only place it is. Three questions — the callsign, the packet SSID and which name FSQ and JG25 use — answered once, and OpenJSQ works out the rest.
To set up your identity:
W4IJG. No slash, no hyphen. It is shown in capitals.P, CRB, CRB/P) in the box after the fixed slash.| Box | What goes in it |
|---|---|
| Callsign | The callsign on its own — W4IJG. Letters and digits, at least one digit, six characters at most, because that is what an AX.25 address field holds. Neither / nor - belongs here; each has its own box. |
| AX1200 SSID (optional) | A list: No SSID, or -1 to -15. It tells this packet station apart from your others — -7 on a handheld, say — and W4IJG-1 and W4IJG-2 are two different stations on the air. FSQ and JG25 use it too when the next choice is Same as AX1200. |
| FSQ / JG25 name | Two choices, each showing the name it gives. Same as AX1200 — W4IJG-7: FSQ and JG25 use your AX1200 name, so you are one station on every waveform — one conversation, one heard row and one mail address at the far end, whichever waveform they heard you on. With No SSID that is your callsign alone, W4IJG. Callsign with suffix — W4IJG/ followed by the suffix box: the FSQ / JG25 suffix described above. The suffix box is off while Same as AX1200 is chosen, and keeps what it holds. A new profile starts at Same as AX1200; a profile set up before 1.0.7 keeps its suffix name until you change it. fldigi and FSQCall stations hear and answer a W4IJG-7 station, but an fldigi station cannot itself use such a name (section 9). |
| Suffix — the box after the fixed slash in the FSQ / JG25 name row | The tag after the slash, and the slash itself is printed beside the box rather than typed: P for portable, CRB for a net's own tag, or CRB/P for both. It is part of the identity other stations see, so W4IJG and W4IJG/CRB are two different stations to every FSQ decoder. AX1200 cannot carry it and leaves it off. The callsign and the suffix together must fit 15 characters — the most another OpenJSQ station will accept as an FSQ address or relay hop — so a long tag is refused here rather than building a station nobody can address or route through. An identity of 16 to 20 characters saved by an earlier version has to be shortened before the radio will start: Start is refused with that reason, and Settings will not save until it fits. |
Under them, two lines say what each waveform will actually transmit — FSQ / JG25: W4IJG/CRB and AX1200: W4IJG-7, or the one line FSQ / JG25 / AX1200: W4IJG-7 — one name on every waveform — filled in as you type, with the reminder that OpenJSQ uses the identity for the mode you select. Either line reads — while there is nothing to show, which is half the explanation of why the callsign box will not take a slash: type W4IJG/CRB into it and the FSQ line fills in while the AX1200 line beside it stays empty. That is the point of the three boxes: switching waveform never needs an identity edit again, and the Radio page only reads the answer back to you.
Anything the wire cannot carry is caught here rather than at Start radio. The note under the boxes appears while you type, and Save is refused with the same sentence — nothing on the page is written, your edits stay staged, and the cursor lands in the box at fault. “The callsign box holds the callsign alone…”, “A packet SSID such as -7 is not an FSQ suffix…”, “AX1200 carries at most six letters or digits in a callsign…”: each one names the box the thing belongs in. An empty callsign is the one exception — it is a question you have not answered yet, not a mistake, so it does not hold up saving your audio devices; it is refused at Start, where it matters.
W4IJG/P and W4IJG/CRB/P are fine — the callsign is still W4IJG and the tag rides after it on FSQ and JG25. VE2/W4IJG is not: the part before the slash is what AX.25 has to carry as an address, and it has to be a legal one. If you operate that way, set the callsign your packet frames should bear and put the rest in the suffix.Whatever you set, that whole thing is “you”. The identity check is over the whole callsign, everywhere the program has to decide whether a message is yours: Chats, the Channel page, the Network map, Mail, Files and the relay refusals all agree with each other and with what the radio put on the air. So a message for W4IJG-2 reaches W4IJG-2 and not the operator's other station, a route through yourself is still recognised as yourself, and two stations sharing a callsign on one bench do not read each other's traffic as their own.
The rest of the card:
| Box | What it does | Default |
|---|---|---|
| Location (sent when asked) | Free text — Anytown AA00, a grid square, a town. Sent word for word, on any waveform, to a station that uses Actions → Ask where they are (QTH) on you, and only while Answer questions automatically (Automatic replies) is on. Anyone can ask, so put nothing in it you would not say on the air. | Empty |
| Station message | Free text — monitoring — leave a message. Sent the same way, to a station that uses Actions → Ask what's new (QTC). | Empty |
A roster of callsigns your station has verified. It exists for one reason: when a damaged FSQ message arrives, an exact match with a name on this list lets OpenJSQ put the message in front of you for review instead of dropping it. A match never authorizes an automatic action — nothing is answered, relayed or carried because a callsign is on the list. Only FSQ learns callsigns, so while AX1200 or JG25 is selected a note on the card says the list is kept but does not change.
To work with the list:
| Control | What it does | Default |
|---|---|---|
| Keep unpinned learned callsigns | How long a callsign the station worked out for itself stays on the list: 30, 60, 90 or 180 days. Callsigns you typed in, and any you pinned, are kept regardless. | 60 days |
| The list | Four columns: Callsign; Source (Added by you, Learned (checksum verified) — heard in a message whose whole-message checksum passed — or Learned); Last validated (hover for the exact time); Pinned (Yes/No). | |
| Add / Remove | Add one callsign by hand, or remove the selected row. | |
| Pin / unpin | A pinned learned callsign is never aged out. | |
| Clear expired | The one button that actually removes learned, unpinned callsigns older than Keep unpinned learned callsigns. Nothing is deleted behind your back. | |
| Import / Export | Import reads a text file of callsigns separated by spaces, commas, semicolons or new lines and adds each as Added by you. Export writes every callsign on the list, one per line, to a text file (it offers openfsq-known-callsigns.txt). |
What your station answers by itself, on all three waveforms, when another station asks. Every automatic transmission appears in the conversation stream, and each answer goes back on the waveform it was asked on. Answers on a waveform beside the selected one also depend on Multi-receive and the band rule (section 16). Automatic answers share one airtime allowance with repeating; carrying for others has an allowance of its own (both in Settings → Relaying, advanced), and Net mode holds them all (section 8).
To change what your station answers:
| Control | What it does | Default |
|---|---|---|
| Answer questions automatically (all waveforms) | Automatically or Never. When another station asks for your signal report, location, news, who you hear or what software you run, the answer goes out without asking you. On FSQ this must also be on for your station to carry other stations' traffic. It is not Unasked signal reports below. | Automatically |
| Answer group signal report requests | When a station asks a group you have joined for a signal report, answer it. Each member answers once, after its own short delay so the answers do not collide, and only while the first row is on. | Automatically |
| Limit group signal report requests to one per group every | How often you may ask the same group: No limit, 1, 2, 5, 10, 15 or 30 minutes. Every member answers each request, so each one costs the channel an answer from every member. On FSQ a member treats the same question to the same group within 45 seconds as a repeat. Applies as soon as you save. | 5 minutes |
| Answer "who have you heard" | When a station asks who you have heard, send the callsigns with when and how well you heard them. It tells anyone who asks who is on the air near you, so choose Never if you would rather not. It is on by default, for a new station and in every Station style; a station that already chose keeps its choice. With it off, JG25 also stops offering a heard list when another station asks what yours can do. A change applies at once. | Automatically |
| Answer "what software" | When a station asks, say OpenJSQ and its version. This is the program-and-version line another OpenJSQ station sees at the top of its Ask what they support answer (section 9), and with Never it is left out on every waveform; on FSQ the same answer is also how two OpenJSQ stations find each other's extra speeds, so leave it on unless you have a reason. | Automatically |
| Unasked signal reports (AX1200 only) (advanced) | Send or Never. When a packet addressed to you arrives — chat or mail, not files, acknowledgements, capability traffic or station actions — your station sends that station a signal report of how it heard the packet, although nobody asked. Never on the APRS profile, and never over a KISS TNC link, which has no receiver of its own to measure with. It does not decide whether you answer Ask for a signal report; that is the first row. | Never (new profile; a saved choice is kept) |
| Unasked reports to one station at most every (advanced) | The least time between two unasked reports to the same station, 5 to 3600 s. Greyed while the row above is Never, and on the APRS profile. | 30 s |
Everything about passing traffic along, and about letting other stations pass yours, on one card. Every row applies the moment you change it — there is no Save, the radio keeps running, and it takes effect on the selected waveform and the two beside it. Right now at the foot of the card says what each waveform is doing.
Since 1.0.7 a new station carries other stations' messages and repeats them by default. A new install, a profile made with Profiles → New, and a profile started with --instance NEW --callsign X all start with Carry messages for other stations on for all waveforms and Repeat messages for on Everyone. The setup wizard's page How should your station behave on its own? shows both as ticked boxes (Carry other stations' messages and Repeat messages other stations ask you to repeat); unticking either there, or using this card, turns it off. An upgraded station keeps exactly its saved choice for carrying, and is asked the repeat question once. The airtime budget, the hop and rate limits and the HF rules bound what other stations can make yours send.
To change what your station carries or repeats:
| Control | What it does | Default |
|---|---|---|
| Carry messages for other stations | Off, All waveforms or Some waveforms (then tick FSQ, JG25, AX1200). Your station retransmits for stations that cannot hear each other, under your callsign, so the network reaches past one hop. On AX1200 it carries only what a station sent through yours (a route via your callsign); it never repeats what it merely overhears, so stations that hear each other are not sent everything twice. When you turn carrying on or off, AX1200 and JG25 each tell the stations around them once whether you now relay; in Net mode or under the HF hold that waits until the hold lifts. | All waveforms (new station); an upgraded station keeps what it had |
| Relay a message only if it has made at most … hops (advanced) | 1 to 8. The most hops a frame may already have taken when you forward it, on AX1200 and on JG25. A change applies at once, and your capability record advertises it. It is not the length of a route you type: FSQ carries a chain of any length (relays for others (chains), the sender sets the route), and AX1200 and JG25 carry one named relay. | 2 hops |
| Answer questions that reach you through a relay | Yes or No, on FSQ, AX1200 and JG25. With No, a question another station carried to you (a signal report, your heard list, a mailbox note) is left unanswered; questions asked of you directly are still answered. | Yes |
| Let other stations relay my traffic | The other direction: whether anybody may carry yours. Yes: a repeater that hears you may retransmit what you send, which is how a station too far away to hear you directly hears you at all. No: every message you start goes out carrying a "do not relay" mark and a repeater that understands the mark stays quiet; stations that hear you directly still receive and answer you and still store your mailbox drops. A route you chose always goes: a named relay (the Route chip, a VIA;DEST line, an AX.25 digipeater path) is sent unmarked. It is not privacy, and an older station that has never heard of the mark will repeat you anyway. The chip beside the Route chip in a conversation's header (Relayable ▾ / Local only ▾) can override it for one conversation (Keeping one conversation off the repeaters). | Yes |
| Repeat messages for | Nobody, These stations or Everyone. Another station can ask yours to repeat a message to everyone — for example a net check-in carried by your hilltop station. Your station sends the text unchanged, under your callsign, as an Allcall, on the waveform it was asked on and at the asker's speed (on JG25, in the asker's mode and FEC). fldigi stations ask with ! or ~ followed by the text and are answered exactly as fldigi answers; OpenJSQ stations use Actions → Ask them to repeat my message…. Echoes are automatic traffic: Net mode, the HF rules and the airtime budget apply. The Channel page shows Repeated for W4XYZ, and your capability record says repeats for others while this is not Nobody. | Everyone |
| Stations that may ask | Active only for These stations: callsigns separated by spaces or commas, applied when you leave the box. A callsign without an SSID matches it with any SSID; with nobody listed, nobody may ask. | Empty |
| One echo per station every (advanced) | The least time between two echoes for the same station, 0 to 3600 s; Off (0) means no spacing. A station asking sooner is answered busy. | 30 s |
| Don't repeat the same text from the same station within (advanced) | 0 to 120 minutes; Off (0) means every request is repeated, retries included. The same text inside the window is answered already repeated. | 5 min |
| Longest message to repeat (advanced) | One FSQ transmission (256 characters; longer is answered too long) or No limit (up to the app's longest message, which may take several transmissions). | One FSQ transmission |
| Count echoes against the automatic airtime budget (advanced) | Yes: echoes share the two-minute automatic budget with every other automatic transmission, and wait or are dropped when it is spent. No: neither counted nor held by it. | Yes |
| Automatic airtime (advanced) | At most so many minutes of transmitting in any so many minutes for everything your station sends by itself because another station asked: answers to questions, refusals, capability answers, mail custody and receipts, and echoes when they count. When it is spent those wait or are dropped until it refills; what you send yourself is never held. One allowance per radio, shared by FSQ, AX1200 and JG25. 1 to 60 minutes in a window of 1 to 60; Unlimited (I'm responsible) removes the limit. It is a software safeguard: you are responsible for your station, and the automatic-control rules of your licence (in the US, Part 97) apply whatever is set here. | 2 min in any 10 |
| Relay forwarding (advanced) | The same, for messages your station carries for other stations, counted apart from the automatic airtime so relaying a busy line does not use up your own answers. When it is spent, a station that asks yours to carry a message is told relay busy until it refills; that answer counts against the automatic airtime, so it is not sent while that is used up too. Unlimited (I'm responsible) as above. | 3 min in any 10 |
| Automatic traffic on HF | What your station may send on its own once the radio is taken to be on HF (rig control reports an HF frequency or a non-FM mode, or Radio → Rig control → Without rig control, my radio is on says An HF band). Follow US §97.221: inside a §97.221(b) automatic-control sub-band, with rig control reporting the frequency, automatic FSQ answers, echoes and relaying go at any FSQ speed; elsewhere on HF, or with no current frequency, automatic answers and echoes go only at the narrow FSQ speeds (500 Hz or less) and nothing is relayed for others. The whole signal has to fit the sub-band, so a dial near its edge counts as outside; in AM, DSB or a mode that is not USB or LSB the narrow rule stays. AX1200 and JG25 send nothing automatically on HF. No restriction (I'm responsible for my station's rules): automatic traffic on HF behaves as on FM — for operators outside the US, or who know their own situation. It applies at once. A software safeguard, not legal advice: you are responsible for your station, and nothing you send yourself is ever limited here (Automatic answers off FM). | Follow US §97.221 |
| Right now | One line per waveform: FSQ: carrying, off, or why it is paused — this copy may not transmit; receive only; Net mode; Other waveforms is Listen only (or Off); the APRS profile or a digipeater path (AX1200); the radio taken to be on HF, with what it was decided from; FSQ needing automatic answers (the line calls the setting Answer queries; it is Answer questions automatically in Settings → Automatic replies); the relay forwarding allowance used up for now. Re-read every few seconds while the page is open. |
Repeating has refusals in plain words, never silence: not repeating messages (Nobody, or the asker is not on your list), not repeating commands, asked too soon, wait a little (you asked again inside the spacing), busy (no room to carry it just now), too long or already repeated. A request that came through a relay is not repeated, and an echo is never itself repeated. Nor is text an fldigi station would obey as a command: fldigi reads the first word of undirected text as an address, so allcall#[f]x would make every fldigi station in earshot write a file. Text whose first word is a callsign, allcall or cqcqcq followed straight away by a command character is answered not repeating commands; W4XYZ: check-in is fine. fldigi stations see an echo in their monitor pane, not their chat.
Carrying has refusals in words too. A station asked to carry a message that it does not carry tells the station that sent it, in one short message: not relayed to N4UZZ: relay busy when its relay forwarding allowance is spent (or, on FSQ, its queue is full or the message waited too long, or the message is a question and the allowance has no room left for its answer), or not relayed to N4UZZ: not relaying when it has stopped carrying for others. fldigi and FSQCall show it as an ordinary message; OpenJSQ also marks the message you sent through that relay Not relayed, with the reason, instead of leaving it Sent to relay. Only a station named as the relay answers this way; one that merely overheard your message says nothing. Like any automatic answer it is held by Net mode and by Answer questions automatically set to Never, counts against the automatic airtime (so with that used up as well, nobody is told), and a station sending many messages at once hears it at most once every 10 seconds.
A relay that says nothing. A relay does not carry a question it could read only by guessing where its frame started; it notes that in its own Channel log and sends nothing. On FSQ, when you ask a station something through one relay and hear nothing at all from the relay for about 25 seconds at FSQ-6 (longer at the slower speeds), OpenJSQ sends the question once more. If the relay stays silent again, the row says Not relayed: KK4IB-1 was not heard passing it on. and your next question goes. If anything was heard on the air after your question, even a signal too weak to read, it is not sent again and waits the full time: the relay may have passed it on.
The relay's turn to pass it on. After anything you send through a relay on FSQ, your station waits about 2.5 seconds at FSQ-6 (3.2 at FSQ-2) before it sends again, and longer while it hears a signal on any FSQ frequency, so the relay is not passing your message on when your next one starts. That longer wait ends after about the time the relay needs to pass the message on, even if the signal does not stop. Meanwhile the status bar says Transmit waiting for the relay to finish passing your message on.
Whether your station will carry letters for other stations, and how long it holds them. The letters you write with New mail… are always held and delivered by your own station whatever you set here; this card is about carrying other stations' letters. What you are holding right now is under Inbox → Holding (section 12).
To change it:
# mailbox notes other stations leave for you; Nobody refuses them.| Control | What it does | Default |
|---|---|---|
| Accept messages left for you (mailbox) | From anyone or Nobody: whether the classic # mailbox notes other stations leave for you are stored. | From anyone |
| Hold letters for other stations | The community-mailbox switch. Yes — act as a community mailbox: another station can leave a letter here for a third station, and yours announces and delivers it when the recipient is next heard. A store-and-forward network needs stations willing to carry mail; a quota bounds how much yours holds. No — hold only my own letters carries nothing for anyone else. | Yes |
| Give up on undelivered letters after (advanced) | 12 hours, 1, 3, 7, 14 or 30 days. After this the sender is told the letter expired. It applies to letters your station is holding: your own outgoing mail and anything left for a third station. It is a ceiling: a letter that arrived with a shorter deadline of its own keeps it. | 7 days |
| Tell a station it has mail at most (advanced) | Every 30 seconds, 1, 2, 5 or 15 minutes. It 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. Shorter reaches a station that is only briefly on the air; longer leaves more of the channel to everyone else. | Every 2 minutes |
One set of file settings for every waveform: FSQ, JG25 and AX1200 all obey this card, so a switch or limit set here cannot differ between radios. It decides what your station accepts. What it offers to others is the Files page (Share files, section 11), and what to do with files other stations send you — including publishing them straight into your shared folder — is the Publish files received from choice on that page. Received files land in the Incoming folder (section 21).
To change it:
A transfer past a limit is refused rather than truncated, and the other station is told why.
| Control | What it does | Default |
|---|---|---|
| Incoming files → Accept files from other stations | One switch for FSQ, JG25 and AX1200. Off, an offered file is refused (the sender is told), your own sending is not affected, and your station's capability record stops saying files. AX1200's APRS profile carries no files. If you had files off on the old AX1200 card, FSQ and JG25 now refuse them too. | On |
| File size limits → all incoming (advanced) | The most space all the files being received at once may reserve, 1 to 4096 MB, on every waveform. | 64 MB |
| File size limits → all outgoing (AX1200 only) (advanced) | The most all the files waiting to be sent may add up to, 1 to 4096 MB; no single file larger than this goes out on AX1200 either. FSQ and JG25 have no such limit. The shared folder's own limit, on every waveform, is Largest file to serve under Shared files. | 64 MB |
| Files at once → receiving (advanced) | How many files may be received at once, 1 to 128. | 16 |
| Files at once → from one station (advanced) | How many of those may come from one station, 1 to 32. | 4 |
| Files at once → sending (AX1200 only) (advanced) | How many files may wait to be sent at once, 1 to 128. FSQ and JG25 send one transfer at a time per station. | 16 |
AX1200's own link tuning — file error correction and transfer pacing — stays on the Radio page's AX1200 card. Values you saved on that card carry over.
The switch is not here. Sharing on/off, the folder, who may browse, the allow-list, serve-automatically and Publish files received from 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 the card's More options, the five technical limits below. Section 11 covers the whole service, including which limit protects the whole channel rather than just you.
To check it or change a limit:
| Control | What it does | Default |
|---|---|---|
| Manage in Files | Opens the Files page, where the switch and the folder are. | |
| Include subfolders (advanced) | Yes or No: whether the listing includes the shared folder's subfolders. Files published from Publish files received from go into the Received subfolder; if subfolders are not served they go straight into the shared folder instead, because stations could not browse a subfolder. | No |
| Largest file to serve (advanced) | 64 KB, 256 KB, 1 MB, 10 MB or Unlimited. On every waveform, the largest file your station will send when another station asks to download it; a larger file in the folder is refused and flagged in the Files page. Files you send yourself are not held to it. Unlimited is a real choice — your licence, your airtime — but a 10 MB file is hours of channel time. | 256 KB |
| Serve at most, per day (advanced) | Unlimited, 1, 5 or 20 MB a day; and at most 20 files. Unlimited lifts both. | 1 MB, 20 files |
| Each station may ask every (advanced) | 10, 30 or 60 seconds, or No limit. The one limit here that protects everyone on frequency, not just you: it bounds how often each station may ask, and the airtime an answer spends is shared. Removing it is a courtesy decision. | 10 s |
| Approval timeout (advanced) | 1, 2, 5 or 10 minutes: how long an Ask me first question waits for you before the station is refused. The asker was told it is waiting for your approval meanwhile. | 2 minutes |
Stations download by number from the listing, never by name, so a request cannot reach outside the folder, and every ask and every answer is recorded on the Files page under Sharing activity. Who may browse, the size limit and the daily budget apply to published files as to any other.
One schedule for every waveform, announced on the selected one only (the receivers beside it never announce). It is how other stations learn that you are on the air. 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. Net mode holds all of them. Announce now on the Radio page's Live status tab, or Actions ▾ → Announce my presence now in the Allcall conversation, sends one at once on whichever waveform runs, whatever the schedule says: on FSQ your status line, or the bare sounding when the status is empty. Net mode and the schedule being Off don't hold it. It still waits for a clear channel, and the next scheduled announcement counts from it. While one is still waiting to go, the button is greyed, so a second press cannot send a second copy.
When the radio starts the rule is the same on every waveform:
To start announcing:
| Control | What it does | Default |
|---|---|---|
| Announce my presence | Off, Every 5 minutes, 10, 30 minutes or Every hour, and an Every minute (bench) entry that exists for testing on a cable and is far too often for a shared channel. | Off |
| Presence status | The text sent with the announcement, up to 128 characters. Clearing it makes FSQ send the classic bare sounding. | available |
| Consider stations recent for (advanced) | 10 or 30 minutes, 1, 2, 4 or 8 hours, or Never. How long after this receiver last heard a station it still counts as recent: listed under Recent in Stations Heard, drawn in colour on the Network map (section 13), and not marked Inactive in the conversation header. Older stations stay listed as Inactive; nothing is removed. Never keeps every heard station recent. Applies as soon as you save. | 2 hours |
| Remove stations from heard list after (advanced) | 1, 6 or 24 hours, 7 days, or Never. This one actually removes the station from Stations Heard and from the suggestions you get when addressing a message or choosing who carries a letter. It deletes nothing else: conversations, files, mail and Channel history stay, and the Network map keeps the station as grey history. Takes effect when the radio next starts. | 24 hours |
Two choices about how conversations behave.
To change them:
| Control | What it does | Default |
|---|---|---|
| Also show incoming Allcall chats in the sender's conversation | Off keeps incoming Allcall chat only in the Allcall conversation. On adds the same saved message to the sender's own conversation too; it does not send or store a second copy, and replies still go to the conversation you send them from. | Off |
| Default chat delivery | Live sends and moves on; Verified waits for the other station to confirm each message. It is the delivery a new conversation starts with, for every waveform; JG25 and AX1200 send verified chat, and FSQ, which has no verified mode, uses its delivery receipts either way. The Live / Verified chip on the compose row always overrides it for that conversation. Allcall, groups and relayed messages always go Live. | Live |
@ or #.Subscribed groups is its own card in Settings → Chats & groups, because which groups you listen to is how your station behaves, not hardware, and one group list serves every waveform. It carries an Applies at once chip: like Relaying, it is never staged and needs no Save. 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.
@emcomm, #skywarn. After the @ or #, letters, digits, hyphen, underscore and dot are allowed. Capitals do not matter.How the program looks. Both rows apply the instant you choose — no restart and no Save — and are about reading the screen, not the radio.
To change it:
| Control | What it does | Default |
|---|---|---|
| Colours | Dark suits a shack at 3am; Light suits a bright room, a projector, or a laptop outdoors. Kept per profile. | Dark |
| Text size | Normal, Large or Extra Large, with a live sample beside the box — a real received message in the selected waveform's own footer, so you see what you will actually read. It enlarges the text you read (messages, mail, channel traffic, the explanations on these pages); the meters, the navigation rail and the diagnostic cards keep their size so nothing is pushed off the window. It belongs to the computer, not the profile, so a large-print setting follows you into every profile. | Normal |
The chime that tells you a message has arrived.
To set it up:
| Control | What it does | Default |
|---|---|---|
| Sound when a message arrives | On or Off. | On |
| Play alert sounds through | The sound card the arrival chime and the wake alarm come out of. Point it at your speakers, never at the radio's sound card: OpenJSQ detects that conflict and silences alerts rather than transmitting your chime, and says so in the status bar, but naming the right device is better. The list starts with two entries that are not devices: System default output, and Silent (no sound) — the way to keep the chime switched on while producing no sound at all, which is what you want on a machine sharing a room with the radio. | System default output |
| Test sound | Plays the arrival chime through whatever is selected right now, before you save, and a line under it names the device that played it (Playing through …). If nothing can make a sound it says No tone was played. DirectSound cannot play a sound on its own, so the same card is used through another driver and the line says so. |
Where this profile's files live and where its settings are. Everything OpenJSQ reads or writes on your behalf lives under the folder named here: the mailbox files other stations can fetch, files they leave for you, and whatever you save out of a chat (section 21).
To move the files folder:
openfsq.ini is.| Control | What it does |
|---|---|
| Folder for files with Browse… and Open | The shared base folder. Each profile keeps its own folder inside it, so the box holds the base rather than this profile's own folder. Leave it empty for the default (Documents\OpenJSQ). Open shows the folder in your file manager. |
| Settings file with Open folder | The path of the profile's openfsq.ini, selectable so you can copy it, and a button that opens its folder. A note says whether the install is portable (the settings sit beside the program, so the whole station copies to another machine as one folder) or the program's folder is not writable and the settings are kept in your user account. |
The last card, and the only one that is not a setting: it is where the program says what it is, and where you get the two numbers a bug report needs. It opens with OpenJSQ version (build commit), then by Jerome Goddard II (W4IJG). The card is basic rather than advanced, and every word of it is selectable with the mouse — both on purpose: an operator hunting the version to quote should not have to find a toggle first, and a commit hash retyped by hand is how the wrong hash gets reported. To quote it, drag across the version line, copy, and paste.
To copy the version for a bug report:
Under that it says what the program is. JSQ is a modem-agnostic transport — messaging, file transfer, custody mail and network mapping — and OpenJSQ is its implementation, carrying those services over FSQ, JG25 and AX1200. Then the credit the program makes for the mode it speaks — FSQ was designed by Murray Greenman ZL1BPU and Con Wassilieff ZL2AFP. — the thanks to the hams who put the beta on the air — Thanks to Otto (N4UZZ), Sparks (KK4IB), Mac (KO4UWY) and Charles (KD4AXP) for their testing and suggestions. — the copyright line, Copyright © 2026 Jerome Goddard II (W4IJG). All rights reserved., a line saying that use is governed by the OpenJSQ licence agreement (EULA) — free for personal and nonprofit use — and one line on the licence: the program is proprietary, but every waveform and protocol it transmits is publicly documented and anyone may identify, monitor and implement it. The Protocol specifications (openjsq.com/specs) button opens the published specifications in your web browser, and Licence agreement (EULA) opens the agreement: the EULA.txt installed beside the program, or the copy at openjsq.com/eula when that file is not there. Section 25 says the same at a little more length.
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.
| Per profile | Shared by the whole computer |
|---|---|
| Callsign and station identity · radio and audio setup · PTT and rig control · conversations · mail and Holding · file history · network map · theme | Text size — so a large-print setting follows you into every profile instead of needing to be set again in each one. |
…\<id>.deleted-<date>), so a new profile with the same name starts with an empty mailbox. A new profile starts as a new station: Settings → Relaying carries and repeats for others on every waveform, and the FSQ / JG25 name is Same as AX1200. When it asks you to name this profile — where or what it is for, take the prompt literally: Shack, Truck, Field Day beat Profile 2 at three in the morning.--instance NAME, which also stamps the name into the window title so you can tell them apart on the taskbar.)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 its More options) 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.
| What | Where |
|---|---|
| Your files folder | Documents\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 waveform | …\incoming. FSQ, AX1200 and JG25 share one destination because “what arrived?” matters more than which modem carried it — except what the program receives for itself, below, and files you have chosen to publish. |
| Files published to your shared folder | <your shared folder>\Received, when the Files page's Publish files received from is These stations or Everyone and the sender qualifies: the finished file is moved out of incoming, keeping the name it arrived under (a name already there becomes report-1.txt, never an overwrite). If Include subfolders is No in Settings → Shared files it goes straight into the shared folder instead. Files you asked for yourself, mail attachments, letters, forms, shared-file lists and partial files are never published. With no shared folder chosen, or one that cannot be written, the file stays in incoming and the status bar says so. The Files row follows the file (Open folder opens the shared folder) and its Location tooltip says Published to shared folder (section 11). |
| What the program receives for itself | <profile data folder>\internal, in mail, listings, forms, staging and transfers: letter bodies, shared-files listings, forms and notes that came as files, your outgoing staging, and the file service's partial files and receipts. Each is deleted once it has been read and stored, and leftovers are swept after a day (section 11). |
| 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. |
| What other stations offer | capability_records.jsonl, in the profile's data folder beside the Channel history: each station's capability record on each waveform, and this station's own change counter, kept across restarts. It is small, and deleting it only makes OpenJSQ ask again. |
| Settings & history | Inside the active profile's data folder. Settings → Files & configuration shows the exact settings path (under its More options). A portable install — a file named openjsq-portable.txt beside the program, in a folder that takes writes — keeps everything beside the program instead. |
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.| Symptom | What to check |
|---|---|
| The RX meter never moves | The 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 start | The footer status line names the reason. “Could not start: set your callsign in Settings first.” means exactly that, on every waveform. Could not start: followed by a sentence about the callsign, the suffix or the SSID means the saved identity is not something this waveform can transmit — Settings → Station, and the note under the three boxes says which one is wrong. 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. A saved card the list does not show, because it is listed under another host API such as MME, is kept as itself, [N] Name (MME), never replaced by the system default. |
| Settings will not save, and a line under the callsign says why | That is the identity check, and it is doing its job at the one place the identity is typed. Nothing on the page is written when it refuses — your other edits are still staged — and the cursor is put in the box at fault. A / or a - in the Callsign box is the usual cause: /CRB belongs in the suffix box of FSQ / JG25 name (Callsign with suffix) and -7 in the AX1200 SSID list. A callsign with no digit, or longer than six characters, is not an address AX.25 can carry. An empty callsign never blocks a save — it is refused at Start radio instead. |
| The Station identity line is amber | The callsign, the AX1200 SSID and the FSQ / JG25 name (Same as AX1200, or the callsign with a suffix) are set in Settings → Station, and each waveform takes the part of them it can carry. The Radio page's Station identity line reads the answer back as you press the buttons. If it is amber, the saved identity is not something the selected waveform can transmit — Edit station identity… goes to the boxes. A radio that is already running is never stopped over this: the identity is checked before anything is taken down, and a refusal leaves you on the air exactly as you were. |
| Decodes but won't transmit | PTT. The Radio page's Live status card shows the PTT state, and UNAVAILABLE: there, with the reason under it, 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 middle | Look 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 splattering | Transmit level, for the waveform they heard: each has its own drive slider. On FSQ, Tune into a dummy load and back FSQ drive off until ALC barely moves; on AX1200 and JG25, back that waveform's drive off until the deviation is normal. 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, calling it the Squelch margin: raise FSQ busy margin a little (Radio → Receive → Receivers), or set it to 0 to disable busy detection entirely. Per-slot states are on the Channel page. It may also be waiting while an automatic answer on another waveform holds the transmitter (section 16), or because net mode is on, which holds file traffic while it lasts. A request that reads Waiting for N4UZZ's answer. is taking turns with the station you asked: through a relay you can't hear its answer coming, and asking again on top of it would lose both. It goes by itself; Cancel or Stop TX takes it back. |
| Alert chime got transmitted / alerts are silent | OpenJSQ 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 failing | Radio 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 pass | Almost 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 you | Check 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 perfect | On 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 characters | Start 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 nothing | If 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” forever | Usually 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 station | Open Settings → Relaying and read Right now: it says, waveform by waveform, whether your station is carrying and, if not, why — switched off, Net mode, Listen only, the APRS profile or a digipeater path on AX1200, the radio taken to be on HF, FSQ needing automatic answers, or the relay forwarding allowance used up (stations asking are then told relay busy, unless the automatic airtime is used up too or Answer questions automatically is set to Never; the line says which). A new station carries on every waveform from the start, so if yours is not, it is an upgraded station keeping an earlier choice: turn it on here. The RELAY ACTIVITY panel on the Network page uses the same words. |
| Nobody is repeating my traffic | The other direction: Settings → Relaying → Let other stations relay my traffic. If that is No, everything you start carries a "do not relay" mark and well-behaved repeaters leave it alone — stations that hear you directly are unaffected, which is why this looks like "some people get my messages and some don't". Turn it back on, or send that one message through a named relay (pick a route, or type VIA;DEST text), which goes regardless. |
| A relayed send is refused | Read 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 VERIFIED | Not 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 radio | Before 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 licence | Section 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 wrong | On 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. Live status then reads Selected — receiving only: this copy may not transmit. If that is not it, check Net mode is off and see Decodes but won't transmit above. |
| Relaying changed after going back to 1.0.5 and returning | 1.0.5 has one Carry relayed traffic switch for FSQ, JG25 and relayed answers together, so when you go back to it that switch reads Yes only if all three were on here, and AX1200 reads as it was. Anything you change in 1.0.5 is taken over when you return; anything you leave alone is kept as you set it here. |
| Station actions get no reply, but only when a third station is relaying | A 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. A repeat request is different, and Nothing to resend there is by design: it is answered only along the path the message took, so a repeat asked through a relay of a message that was sent direct (or the other way round) gets that answer. |
| You cannot find the shared-folder settings any more | They moved to the Files page in 1.0.2 — 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 nowhere | There 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 shares | The badge needs positive evidence — the station's capability record (an answer, an announcement, or a presence that confirmed it), 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 served | The 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 directions | Transmit turnaround on the Radio page's Transmit tab (under More options, with JG25 selected). 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 nothing | First check that the Channel page's Waveform row reads All waveforms or JG25: a list narrowed to another waveform hides JG25 rows. Then 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 appears | A 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 clearly | Check 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, raise the FEC, drop a speed, check drive. |
| “Address cannot be sent on this waveform”, or “AX1200 address cannot be sent” | The selected waveform cannot carry that address. FSQ and JG25 carry a plain callsign, a /suffix identity and, since 1.0.7, a name ending in -1 to -15 such as K4ABC-7; any other hyphen (K4ABC-99) is refused, with the reason. AX1200 carries a callsign of at most six characters and an optional SSID, but not a suffix: N4UZZ/CRB is an FSQ/JG25 identity AX1200 cannot send to. Select the waveform that can carry it, or write to the station's address on yours. On JG25, a -n name that has never been heard on FSQ or JG25 draws a note — the station may answer to it on AX1200 only — and the conversation still opens. Nothing was sent, and your draft is still there (section 9). |
| The status bar reads “Receive audio stopped delivering samples; restarting the radio automatically.” | The sound card stopped delivering audio mid-run, and OpenJSQ restarted the radio once by itself. If it came back, nothing needs doing. If it keeps happening, check the device, its cable and its power saving. An input that never delivered audio is not restarted, so this cannot loop (section 15). |
| “PTT safety timer: OpenJSQ could not run the radio for more than 6.0 s while transmitting, so the transmitter was released and this transmission was stopped.” | The program was busy or stuck for longer than its transmit audio lasts, so a separate timer let go of the PTT line (or sent the CAT release) after about 6 s rather than leave the radio keyed into silence (Transmit control). The transmission was cut; send it again if it does not go again by itself. If it keeps happening, note what the computer was doing (a big export, a slow or sleeping disk, another heavy program) and save a diagnostic bundle. On VOX the radio had already stopped transmitting when the audio ran out. |
| Messages turned Failed: “The radio stopped before this transmission completed. Send it again.” | You stopped or restarted the radio, or switched waveform, while they were still Queued, Sending or Retrying. Send them again. Saving settings, changing squelch or switching waveform restarts the radio, and asks first if messages are still waiting; those that had not gone out read Not sent. |
| A waveform's Live status row reads “Not running: this receiver could not be started.” | One of the two waveforms received alongside yours could not start; the reason, Multi-receive is not listening on …: …, is reported only as the radio starts. Your own waveform is running, and so is the other receiver (section 16). |
| “More than one waveform requested transmit at once.” | An internal safety check tripped. Press ■ Stop TX; if it happens again, save a diagnostic bundle and report it (section 16). |
| The Channel page shows traffic on a waveform you did not select | That is normal. OpenJSQ receives all three waveforms at once, and the Waveform column says which one heard each row (section 16). |
| Your station transmitted on a waveform you did not select | An automatic answer to something asked on that waveform. Net mode holds them on every waveform, or set Other waveforms to Listen only (section 16). |
| The Channel log says “Not answered on …” | A note, not an error (section 14): that waveform was not allowed to answer, and the note says why. To see every note, leave the Waveform row on All waveforms. |
| AX1200 or JG25 answers, or stays quiet, unexpectedly on a rig with CAT | The band rule reads the rig's mode first (section 16). On FM, check the rig reports an FM mode, not a bare DATA or a digital-voice mode, which leave the decision to the frequency. |
| Live status says “Selected — what you type goes out here; automatic answers are held: the rig reports …” | Rig control (or An HF band under Radio → Rig control → Without rig control, my radio is on) says the radio is not on FM while AX1200 or JG25 is selected. What you type still goes out; only automatic answers wait. Check the rig's mode, or change Radio → Rig control → Without rig control, my radio is on from An HF band (section 16). |
| The Radio page says “Recovering 2 frames…” | Normal. A JG25 frame is getting a second try in the background and may still arrive late, even after you have transmitted (section 15). |
| A file transfer or a verified chat stalls during a net | Net mode holds file traffic, acknowledgements and receipts on every waveform. A verified chat's sender retries until the net is over (section 8). |
| A send is refused with “N4UZZ doesn't relay for others right now.” (or “doesn't answer station actions”, “doesn't share its heard list”) | That station's capability record says it does not offer that, so OpenJSQ does not try. The ⓘ in the Chats header shows what the record says and when it was learned. If the record may be out of date, OpenJSQ asks again and says Checking whether N4UZZ relays for others. Try again in half a minute. A station that has said nothing is never taken to mean no: it is tried. In Net mode OpenJSQ does not ask at all. |
| Your station refuses files on every waveform | Settings → Files → Accept files from other stations is one switch for FSQ, JG25 and AX1200. A station that had files off on the AX1200 card before 1.0.6 now refuses them everywhere. Tick it again and save. |
| Ctrl+Space does nothing | It acts only while the transmitter is keyed, the same test the top bar's ■ Stop TX uses; at any other time it is an ordinary key. Ctrl+Shift+Space is not it (section 4). |
| The status bar reads “Receive audio skipped a moment…” or “Transmit audio ran dry…” | The first is a notice: the sound card or the computer fell behind while receiving, and a packet heard just then may have been missed. The second means a frame really did go out with a gap in the middle; the normal end of a frame does not count. Look at Dropouts in Live status, and see Strong stations decode with characters missing above (section 15). |
| Where did my deleted thing go? | The Deleted page. Nothing you delete anywhere in OpenJSQ skips it. 30 days, then gone. |
| I asked a station to repeat my message and nothing came back | The far station always answers in words, never silence — read the conversation and the Channel. not repeating messages: it has Repeat messages for on Nobody, or you are not on its list. not repeating commands: your text began with a callsign, allcall or cqcqcq followed straight away by a command character. asked too soon, wait a little: you asked again within its spacing (30 s by default). busy: it had no room to carry the repeat just now. too long: over 256 characters. already repeated: the same text within 5 minutes. OpenJSQ does not ask at all when that station's record says it does not repeat for others, and tells you why (the ⓘ in the Chats header shows the record). With no answer, the far station's Net mode, HF rule or airtime budget may be holding the echo — it is never queued for later. Your conversation says Repeated when you hear it. |
| My station says “not repeating messages” to everyone | Settings → Relaying → Repeat messages for is Nobody, or These stations with no callsign listed (with nobody listed, nobody may ask). New stations start on Everyone; an upgraded station is asked once. |
| A file sent to my station is not in my shared folder | The Files page's Publish files received from is Nobody by default. With These stations the sender must be on the list — W4IJG-1 matches that station only, W4IJG matches any SSID. With no shared folder chosen, or one that cannot be written, the file stays in incoming and the status bar says so; a file another program is holding is retried for a few seconds first. A file you asked for yourself, a mail attachment, a letter, a form, a shared-file list and a partial file are never published, and neither is an FSQ # mailbox drop. With Include subfolders off in Settings → Shared files the file is in the shared folder itself, not in Received. |
| Ask what they support says “Software: not reported” | The station did not send its program and version: it runs something older than 1.0.7, or its operator set Settings → Automatic replies → Answer "what software" to Never. The other lines (what it supports, where it works) are still good. |
| On HF my station answers only at narrow speeds and relays nothing | That is the HF rule, not a fault. Settings → Relaying → Right now says paused: the radio is taken to be on HF and what that was decided from. Follow US §97.221 lifts the limit only inside a §97.221(b) automatic-control sub-band with rig control reporting the frequency; with no rig control, or off those bands, only the narrow speeds are used. Connect rig control, or choose No restriction if you know your own rules. What you send yourself is never limited. |
| I pressed Stop TX and things I had queued are gone | Stop TX drops the queued audio on the shared transmitter, including automatic answers the receivers beside yours had queued (on AX1200, every frame still waiting for a clear channel), drops a delayed repeat or echo another station asked for that was still waiting to go (~, {N}, or a JG25 or AX1200 repeat later; a PTT failure drops these too), cancels station actions and messages that were waiting to learn what a station supports (AX1200), and withdraws capability questions still waiting for an answer. The status bar says Transmission stopped and how much audio was discarded. Send again what you still want sent. |
| The top bar lost its level meter, the wordmark and the words “Mode” and “FEC” | The window is narrower than the top bar needs. They are dropped in that order so the Mode and FEC boxes keep their room; if that is not enough, JG25's Mode list shortens to FM 2400 and its FEC box folds away. Widen the window to bring them all back. |
| The same station shows up twice, as W4IJG and as W4IJG-7 | It is heard under two names, and OpenJSQ cannot know they are one operator. A station that sets FSQ / JG25 name to Same as AX1200 is one name on every waveform, with one conversation, one heard row and one mail address. A station set up before 1.0.7 keeps its suffix name until its operator changes it in Settings → Station. |
| ALC | Automatic 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 that waveform's drive slider off until the meter barely twitches. |
| Allcall | The everyone-on-frequency address. FSQ's version of calling CQ. |
| APRS | The 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. |
| ARQ | Automatic repeat request — the receiver tells the sender what's missing, and only that is re-sent. How OpenJSQ moves files reliably. |
| Automatic traffic on HF | What your station sends by itself — answers, repeats, relaying — once the radio is taken to be on HF. Settings → Relaying → Automatic traffic on HF chooses between Follow US §97.221 (any FSQ speed inside an automatic-control sub-band with rig control reporting the frequency, narrow speeds only elsewhere) and No restriction. A software safeguard, never a limit on what you send yourself. |
| AX.25 / AX1200 | The amateur packet-radio protocol, and OpenJSQ's 1200-baud implementation of it for VHF/UHF FM. |
| Band rule | Whether AX1200 and JG25 may answer beside the selected waveform. Rig control's reported mode decides first, then its frequency (below 30 MHz is HF); without rig control the selection does, and FSQ selected means HF unless Radio → Rig control → Without rig control, my radio is on says An FM channel. The selected waveform is never held back. Section 16. Once the radio is taken to be on HF, Settings → Relaying → Automatic traffic on HF decides what the station may then send on its own. |
| Capability record | What a station offers — receipts, verified chat, files, shared files, mail, mailbox, station actions, heard list, groups, relaying and its hop limit, and the waveform the station works on — as one short record that means the same on FSQ, JG25 and AX1200. OpenJSQ remembers each station's, shows it at the top of a conversation, and asks again only when it has changed and you are about to depend on it (section 9). Since 1.0.7 the answer to Ask what they support also names the program and its version on every waveform; a station that does not send them (older than 1.0.7, or one whose Answer "what software" is Never) reads Software: not reported. |
| Custody | Responsibility for a mail letter. Exactly one thing releases it: the recipient's acknowledgment. |
| dB / SNR | Signal-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-emphasis | The 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. |
| Digipeater | A packet station that repeats your AX.25 transmission to extend range; a path such as WIDE1-1 is a familiar APRS-style example. |
| Dire Wolf | A widely used software TNC that runs on a PC or Raspberry Pi. OpenJSQ connects to it over the network as a Network KISS TNC. |
| Echo | Your station repeating, unchanged and to everyone, a message another station asked it to say — a net check-in carried by a hilltop station. Controlled by Settings → Relaying → Repeat messages for; asked with Actions → Ask them to repeat my message…, or on fldigi with ! or ~ and the text. |
| FEC | Forward 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. |
| FSQ | Fast 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. |
| FSQ / JG25 name | The name FSQ and JG25 use for your station: Same as AX1200 (W4IJG-7, one name on every waveform) or Callsign with suffix (W4IJG/CRB). Set in Settings → Station and in the setup wizard. |
| FSQ listener | The one-slot FSQ receiver at 1500 Hz that runs beside AX1200 or JG25. Radio → Receive → Multi-receive sets which speeds it hears and the speed it sends at. |
| Heard list | The stations a receiver has decoded recently. The raw material of the network map. |
| ICS-213 | The 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. |
| KISS | The 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. |
| Last RX | The Network page column that says which waveform a station's operator is on: works on AX1200 when the station's own capability record says so, otherwise the waveform of the newest chat heard from it, and JG25 · automatic only when all that has been heard is its software speaking by itself. Receive evidence, not a setting: your next message to that station still goes out on the transmit waveform. |
| Link Quality | A 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. |
| Margin | How many dB a reception sat above the measured decode threshold for the mode you are running. Positive is headroom; near zero means slow down. |
| Multi-receive | Receiving FSQ, AX1200 and JG25 at the same time from one sound card. The waveform you select is the one you transmit on; the other two run as receivers beside it, and Radio → Receive → Multi-receive → Other waveforms decides whether they answer, only listen, or run at all. With FSQ selected on HF, AX1200 and JG25 only listen (the band rule). Not the same thing as the FSQ receiver's many decoders, which listen to several FSQ slots and speeds. Section 16. |
| Net mode | A temporary top-bar hold on automatic transmissions for a directed net. Presence, automatic query replies, held-mail work, file transfers, chat acknowledgements and delivery receipts wait; operator-initiated chats remain available. It resets off at application restart. |
| Other waveforms | The Radio → Receive → Multi-receive choice for the two waveforms beside the selected one: Listen and answer (the default), Listen only or Off — and the two receivers themselves. Each decodes its own waveform and, at Listen and answer and where the band rule allows, answers automatic requests on it once no receiver hears the channel busy. It never announces your presence. |
| PTT / VOX | Push-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 noise | The 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.) |
| Publish received files | The Files page's Publish files received from choice (Nobody, These stations, Everyone): a file a chosen station sends you is moved from Incoming into the Received subfolder of your shared folder, where browsing stations can see and download it, with nobody at the keyboard (section 11). |
| Realized speed | The 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. |
| Recovery (JG25) | The background second try at a JG25 frame whose first decode failed. The Radio page's Live status shows it; it can deliver a frame after you have transmitted. |
| Reply via | The button in Chats' warning that a station reached you through a relay: Reply via KK4IB sets the conversation's route to that relay, so your answer goes back the way theirs came (section 9). |
| Shared files | A 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. |
| Simplex | One frequency, both directions, no repeater in between — the normal arrangement for packet, and for OpenJSQ on VHF. |
| Slot | One of several sub-channels FSQ stations share within a single SSB channel. OpenJSQ listens to all of them at once. |
| Sounding | A brief automatic station ID that keeps you on other stations' heard lists. Off by default in OpenJSQ. |
| SSID | The number after the hyphen on a packet callsign (for example N0CALL-7), distinguishing several AX.25 stations that share one callsign. OpenJSQ offers No SSID or -1 to -15 in Settings → Station — there is no -0, because AX.25 writes no SSID at all for zero. Typed into a chat line, -0 and -00 are read as the bare callsign and -01 as -1: they are accepted spellings on the way in, and one address still goes out one way. FSQ and JG25 have no SSID field; their equivalent is the suffix below. Since 1.0.7 a -1 to -15 name is an ordinary FSQ and JG25 address too, and Same as AX1200 uses yours on every waveform. |
| Suffix (FSQ / JG25) | The tag after the slash on an FSQ or JG25 identity — W4IJG/P, W4IJG/CRB. It is part of the callsign other stations see, so a station with one is a different station from the same operator without it. AX.25 cannot carry it, so AX1200 leaves it off. Set in Settings → Station, beside the callsign and the SSID. |
| TNC | Terminal node controller — a packet modem. OpenJSQ has one built in (sound card) and also talks to external ones via KISS. |
| Transmit waveform | The waveform selected on the Radio page and shown in the top bar: the one everything you send goes out on. It does not limit what you hear. |
| Works on | The waveform a station says its operator is using, carried in its capability record. It decides what Last RX reads on the Network page and what Chats' last reached you on line says, so the two agree. |
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.
| FSQ busy margin | 3.0 dB above the noise floor before a slot counts as busy. 0 disables busy detection. Radio → Receive → Receivers. |
| FSQ station address | 3 to 15 characters: letters, digits and /. Since 1.0.7 a callsign of 3 to 6 letters and digits may also end in -1 to -15 (W4IJG-7); any other hyphen is refused. |
| In wide modes, wait for a clear channel | With FSQ selected, wide modes wait up to 30 s for the whole channel to clear, then go anyway (Radio → Receive → FSQ receive). |
| Key-up lead / key-down tail | 100 ms each. The lead is raised to 300 ms automatically when you pick CAT keying. |
| Serial keying line | RTS, normal polarity (keys on a high line). |
| PTT safety timer | If OpenJSQ itself stops running for about 6 s while the radio is keyed, a separate timer lets go of the PTT line (serial or CAT; it waits longer at the 16 and 12 kHz sample rates). Nothing to set. VOX and a KISS TNC have no line for it to release. |
| Unasked signal reports (AX1200 only) | Off for a new profile (Settings → Automatic replies); a profile that saved a value keeps it. At most once every 30 s per station when on. Nothing at all over a KISS TNC. |
| Group signal reports | Answered automatically. You may ask one group once every 5 minutes; settable from no limit to 30 minutes. |
| KISS handover allowance | 1500 ms — how long a frame may still be inside the TNC before an acknowledgment counts as late. |
| AX.25 application identifier | APZJQ1. Digipeater path: empty. |
| Default chat delivery | Live, for every waveform (Settings → Chats). The chip on the compose row overrides it per message. |
| Presence (sounding) | Off. Nothing announces you until you choose an interval. |
| Presence status | available. |
| FSQ / JG25 name | Same as AX1200 for a new profile (W4IJG-7, or the plain callsign with no SSID); a profile set up before 1.0.7 keeps its suffix name until you change it. |
| Automatic traffic on HF | Follow US §97.221 (Settings → Relaying). Narrow FSQ speeds are 500 Hz or less. No restriction makes it behave as on FM. |
| Smallest main window | About 820 pixels with standard Windows fonts (wider with larger text), the same on every waveform; the first window opens wide enough for the whole top bar when your screen allows. Below the width the whole top bar needs (about 1115 px on FSQ, about 1250 px on JG25), it drops the level meter, the wordmark and the words Mode and FEC. |
| Net mode | Off, and deliberately never remembered — a station silenced for one net must not still be dark next week. |
| Carrying messages for other stations | On, all waveforms, for a new station or profile; Settings → Relaying turns it off or picks waveforms. An upgraded station keeps what it had. |
| Hops a frame may already have taken when you forward it (AX1200 and JG25) | 2 by default, settable 1–8 (Settings → Relaying, advanced). |
| Repeat messages for | Everyone (Settings → Relaying; also asked by the setup wizard). Limits (advanced): one echo per station every 30 s, the same text from the same station not repeated within 5 minutes, the longest message one FSQ transmission (256 characters), counted against the automatic airtime budget. Each limit can be turned off. |
| Relayed route length you can send | FSQ: a chain. AX1200 and JG25: one hop. |
| File carried through a relay | 256 KB. |
| Automatic airtime | At most 2 minutes in any 10 per radio for what your station sends by itself (Settings → Relaying, advanced; 1–60 minutes, or Unlimited). |
| Relay forwarding allowance | At most 3 minutes in any 10 for messages carried for others, apart from the automatic airtime; then relay busy, while the automatic airtime has room (same place, same ranges). |
| Waiting for an answer | JG25 and AX1200: 2 minutes after the question went on the air, 3 through a relay. FSQ: 2 minutes at FSQ-6 and faster, longer at the slow speeds in proportion (4 at FSQ-3, 6 at FSQ-2), twice that through a relay. Then the question says No answer. |
| JG25 quiet after another station | 750 ms after another station's carrier drops before JG25 keys, so the station that just stopped can hear it. |
| Relay duplicate memory | 10 minutes on AX1200 — how long a relay remembers traffic so it does not carry the same thing twice. |
| Network crawl | 6 queries, 2 hops deep, and it will not relay through a path weaker than +3 dB. |
| Transmit drive | 10 dB below full scale for each of FSQ, AX1200 and JG25, settable 0–45 dB. |
| JG25 transmit level | 0.80, settable 0.05–0.95. JG25 drive applies on top. |
| JG25 VOX audio lead | 200 ms, settable 0–2000 ms. Used only with VOX keying. |
| Answers beside the selected waveform | Wait until no receiver hears the channel busy; a receiver busy without a break for over a minute stops holding the others off. |
| Held-answer notes | At most one per waveform, station and reason every 10 minutes. |
| “Not fetched” and “Not sent yet” notes | A reply on a waveform beside the selected one gets a Not sent yet note after waiting 30 s for the transmitter. Each of these notes appears once per cause every 10 minutes. The Not fetched notes are for FSQ mail only. |
| Capability record | Six bytes on every waveform. A station's record is asked for again at most once every 5 minutes per station and waveform, and only before you depend on it; a refused send says Try again in half a minute. Presence carries a change counter, 1 to 999. A change to this station's own record goes out once as an announcement. The answer to Ask what they support also carries the program and version (JG25: an optional extension; AX1200: an optional field after the record). |
| Speed and robustness of each mode | See How fast, and how robust (section 17). |
| Receivers at once | Three on a sound-card link — FSQ, AX1200 and JG25 — whichever you select. AX1200 only, through a KISS TNC. |
| FSQ decoders at once | With FSQ selected: 15 on the default five-slot plan, 11 on a single slot (Normal or Fast mode), 13 on FSQ-6W, 6 on Multi — dense (your own speed only); capped by Decoders running at once (FSQ receive). With AX1200 or JG25 selected: 11 on the one-slot listener, or 4 with Normal speeds only (5 if its own speed is a Fast one), within the Decoders running at once cap. Copies within 2 s are one reception. |
| FSQ decoder cost | About 0.25% of one processor core for a Normal-speed decoder, about 1% for a Fast one; about 8–10% for the default five-slot plan. |
| Other waveforms | Listen and answer. The other two together cost about 12–15% of one fast core (roughly double on a modest laptop); Off saves it. With FSQ selected, AX1200 and JG25 only listen unless Radio → Rig control → Without rig control, my radio is on says An FM channel; rig control decides by its mode first, then its frequency (below 30 MHz is HF). |
| FSQ listener | Normal and Fast speeds, sending at Same as the FSQ Mode. Radio → Rig control → Without rig control, my radio is on Not stated. |
| Receive effort | Balanced — the calibrated middle of five levels. |
| JG25 mode / FEC | JG25-FM 2400 and F0 (no FEC). Seven modes, JG25-FM 1200 to JG25-FM 2400; four FEC settings, F0–F3. |
| JG25 acquisition | Normal. Robust roughly doubles the preamble. |
| JG25 receive equalization | Adaptive, on. Branches at 0, +3, +4, +5, +6 and +8 dB/octave. |
| JG25 carrier-detect offset | 0 dB, settable −6 to +12 dB. |
| JG25 tones | Four 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. |
| JG25 background recovery | Every frame whose first decode failed, up to about 4 s of search; the extra JG25-FM 2400/F3 decoder is limited to 2 s. On by default. |
| Receive emphasis | Adaptive. Manual's corner frequency defaults to 210 Hz, settable 50–1000 Hz. |
| Sound-card sample rate | 48000 Hz. The decoders run at 16000 Hz regardless; OpenJSQ resamples. |
| CAT polling | Every 1000 ms, and stopped while transmitting. |
| Spectrum display floor | -70 dBFS. Display only; it changes nothing about decoding. |
| Link Quality | Grays when its newest evidence is older than Consider stations recent for (2 hours by default; never with Never). The score itself is never decayed. |
| Diagnostic recording | A rolling 10 minutes of receive audio, when switched on. |
| Channel history | 4,000 records per load; Load older history fetches the next 4,000. |
| “At the bottom” of Channel and Chats | Within 8 pixels of the end (a little more at the larger Text sizes); further up, new entries do not move you and ↓ Newest appears. |
| Receive-audio restart | Once per episode: when the capture stream stops, or after 3 s of silence on an input that had delivered (never in its first 4 s). |
| A pause in the program | The waiting audio is read late, not thrown away, and no new transmission starts until it has caught up. Only a pause longer than the sound card's buffer (about 5.5 s at 48 kHz) loses audio; at 16 and 12 kHz the receivers are kept no more than 6 s behind. A catch-up is given up after 3 s with no progress, or 10 s in all. |
| Fits in one frame | 768 bytes on FSQ, 256 bytes on JG25, 128 bytes on AX1200. Above that a letter travels as a file transfer. |
| Largest letter | 256 KB. Past that, send it from the Files page. |
| Undelivered letters expire | 7 days. Settable 12 hours – 30 days. |
| “You have mail” notice | At most once per recipient every 2 minutes. Settable 30 s – 15 min. |
| Asking all stations or a group for mail | Once every 10 minutes on each waveform. A station holding mail for you answers after its own delay, spread over up to 30 s on FSQ and 10 s on AX1200 and JG25, and answers one asker at most once a minute. Silence means nobody holds mail for you. |
| Receipts kept | 30 days. |
| Holding for others | On. Your own letters are always held by your own station regardless. |
| Recent / removed from heard list | A station counts as recent for 2 hours after it was last heard, and is removed from the heard list after 24 hours. Past the 2 hours it greys on the Network map. |
| Learned callsigns kept | 60 days, unpinned only. Pinned and hand-entered callsigns are kept indefinitely. |
| Text file from a chat (FSQ) | 8 KB. |
| File size limits | 64 MB in (every waveform), 64 MB out (AX1200 only). Settable 1–4096 MB, in Settings → Files. |
| Blocks in flight | 16 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 correction | 16 data blocks, 4 repair blocks. Clamped at 32 and 16. |
| Concurrent transfers | 16 in, 4 in from any one sender, 16 out. |
| Shared files | Off. Once on: browsable by stations you have heard, served automatically to the audience you chose (choose Ask me first to approve each download), subfolders excluded, 256 KB per file, 1 MB and 20 files a day, one request per station per 10 seconds, and an Ask-me-first question that expires after 2 minutes. |
| Publish files received from | Nobody. With These stations or Everyone the finished file goes into the Received subfolder of the shared folder, under the name it arrived with (a clash becomes report-1.txt). Shared-folder limits apply to it as to any other file. |
| “Shares files” badge | Shown only on positive evidence. A decoded listing holds the stronger form for 24 hours. |
| Conversation drawn at once | The newest 200 lines, then 200 more per Show 200 more (fewer, when fewer are left). |
| Allcall chats in the sender's conversation | Off. |
| JG25 transmit turnaround | 1.5 s, settable 0–30 s. |
| Deleted items | Kept 30 days, then really gone. |
| Dire Wolf KISS port | 8001. Not 8000 — that is AGW, a different protocol, and a station pointed at it connects and then never passes a frame. |
| KISS port number | 0, unless your TNC documents otherwise. |
| Serial KISS speed | 9600 — the BTECH default, and the cable speed only. The radio still transmits at 1200 baud. |
| FSQ compatibility slot | 1500 Hz, which is where fldigi and FSQCall listen. |
JSQ is a modem-agnostic transport: messaging, file transfer, custody mail and network mapping, written once and carried over whatever radio is underneath. OpenJSQ is its implementation, by Jerome Goddard II (W4IJG), carrying those services over FSQ, JG25 and AX1200.
FSQ was designed by Murray Greenman ZL1BPU and Con Wassilieff ZL2AFP. Fast Simple QSO is their work and not this program's: OpenJSQ implements it, and implements the four classic speeds to stay compatible with fldigi and FSQCall, because the people already on the mode are the reason to be on it.
Four amateurs put the beta on the air and said what was wrong with it. Thanks to Otto (N4UZZ), Sparks (KK4IB), Mac (KO4UWY) and Charles (KD4AXP) for their testing and suggestions.
How it talks is public, and anyone may build on it. Every waveform and protocol OpenJSQ transmits is published at openjsq.com/specs (JG25: openjsq.com/docs/jg25-specification.html). Anyone may read, copy and distribute those specifications, and use them to identify, monitor and implement the protocols, without charge, and a station needs no OpenJSQ code to do it. That is also the public documentation US rules ask for a digital code (47 CFR §97.309(a)(4)). It covers the specifications and the protocols; the OpenJSQ program itself stays proprietary.
Copyright © 2026 Jerome Goddard II (W4IJG). All rights reserved.
The licence agreement. Your use of OpenJSQ is governed by the OpenJSQ end-user licence agreement (EULA), in EULA.txt beside the program, behind Settings → About → Licence agreement (EULA), and at openjsq.com/eula. In short: OpenJSQ is free for personal use and for nonprofit groups such as clubs and emergency-communications teams; you may give unmodified copies of the official installer or ZIP to others free of charge; anyone may use it to receive, but you need a licence to transmit, and you are responsible for every transmission your station makes, the automatic ones included; it is not for life-safety use; and it collects nothing about you. Commercial use needs written permission. The agreement itself is what counts, not this summary.
The Windows packages include Qt and other libraries under the LGPL. You may replace them with your own builds (put your DLL in the program folder in place of the one supplied), and the licence does not limit the rights their licences give you. Their licences, and where to ask for their source (the contact page at openjsq.com/contact), are in the licenses folder (THIRD_PARTY_NOTICES.txt).
What changed in each version, and why some things work the way they do. None of it is needed to operate the station.
1.0.9 makes the radio steadier and fills in gaps between the three waveforms. No setting you made before has changed. Two things behave differently: presence now follows one rule when the radio starts, on every waveform, and a JG25 chat that reaches you through a relay now gets a delivery receipt. The full list is in CHANGELOG.md.
1.0.8 is mostly about making the program easier to find your way around: a shorter setup wizard, Settings and the Radio page in sections, and a Cancel you can see. Nothing you set before has moved to another place on the air or changed its default. The full list is in CHANGELOG.md.
CHANGELOG.md; the main themes are AX1200 file transfers and Stop TX (a PTT fault no longer ends a file, Stop TX no longer sends an ABORT afterwards, and a Cancel on a file whose offer was on the air tells the other station), relays and the turns of requests (a relay spaces what it carries from when it was sent, and a request waits only for what it should), JG25 checked chats (a PTT fault keeps them and Stop TX ends them), the FSQ decoder (a frame heard after a burst of other audio keeps its opening), and mail (a letter you give up is no longer delivered, and deleting one letter no longer takes another).1.0.7 is a small release: files can go straight into your shared folder, a station can use one name on every waveform, another station can ask yours to repeat its message, and the guide now explains every card behind a ?. A 1.0.6 AX1200 station does not read the new 1.0.7 capability record and falls back to the older answer beside it, and a station older than 1.0.7 cannot tell you its program and version. The full list is in CHANGELOG.md.
W4IJG-7) or Callsign with suffix (W4IJG/CRB). FSQ now reads w4ijg-7 hello as one address and sends to it, answers it, carries mail and files for it and relays for it; JG25 no longer refuses it. k4abc-10 meters open is now addressed to K4ABC-10 rather than reaching K4ABC as an unknown command. fldigi hears such a sender under its full name and can answer it, but cannot itself be one. The Link badge is kept per exact name, so KK4IB-2 no longer shows KK4IB's fresh figure (section 19, 9).1.0.6 changes what stations say about themselves on the air, so upgrade all your stations together. A 1.0.6 desktop still reads the capability answers a 1.0.5 station sends on JG25 and AX1200; a 1.0.5 station just cannot see what a 1.0.6 station offers. Chat, file and mail frames did not change. The full list is in CHANGELOG.md.
1.0.5 is mostly a safety release. No frame format changed: 1.0.4 and 1.0.5 stations work together. The full list is in CHANGELOG.md.
W4IJG/CRB is a perfectly good FSQ identity and is not an address AX.25 can carry at all, and packet appended its SSID to the whole thing, produced W4IJG/CRB-7, and refused to start. So you now answer three questions instead of one. The SSID list and the Use Settings callsign button that used to sit on the Radio page's AX1200 card went at the same time: they made that page a second place a station's identity could be set, and the two places could disagree.The screenshots were retaken for 1.0.7 from the build of 9 October 2026, and for 1.0.9 the rail with the Help arrow, the Actions menu, the Check for mail dialog, the Network page and its Stations heard crops, the Relay activity list, the Channel page's advanced view with its Report a problem button, the Report a problem window and the Allcall and group pictures (24 October 2026); the Relaying card was retaken on 12 October 2026, when it gained the Automatic airtime and Relay forwarding rows. The pictures and the examples in the text use the callsigns of the project's beta testers and its author (except K4ABC, a placeholder), in invented conversations: KK4IB is the station in the pictures, N4UZZ and K4ABC are its correspondents and W4IJG is the third station. The conversations, signal figures and files shown are made up, and so are the sound-card and serial-port names in the wizard and Radio-page pictures. Pictures of the whole window taken before 1.0.9 show the rail without the arrow beside Help. Some pictures were not retaken: the notice on the top bar when mail arrives, the top bar while transmitting, a message that arrives labelled, the received-message footer, the Files ledger with its carried-objects heading opened and the mail right-click menu. They come from earlier builds and a bench of two stations (N1TSA and N1TSB) joined by a virtual audio cable, so they show those callsigns, and where one of them and the text disagree, the text is current. A few cards are shown in a state a real station cannot be in at that moment (the Live status pictures show the waveform rows while Audio path reads Stopped), because the pictures were taken without a radio.
The parts changed for 1.0.9 (New in 1.0.9, Announce now and the Allcall Actions entry, Check for mail, ICS-213 to a group, the Network page and Report a problem) were written against the 1.0.9 release branch, 24 October 2026. The parts changed for 1.0.8 (New in 1.0.8 and Taking back what is waiting in section 8) were written against the 1.0.8 work branch, October 2026. The parts changed for 1.0.7 (New in 1.0.7, section 19 and the cards behind each ?) were written against the 1.0.7 release branch, 9 October 2026. The parts changed for 1.0.6 (New in 1.0.6, the Channel page, Pages in windows of their own, What a station offers and the About text) were written against the 1.0.6 release branch, 5 and 6 October 2026. The 1.0.4 text was checked against commit 6443783b on branch claude/batch2, 27 September 2026, and the parts changed for 1.0.5 (New in 1.0.5, and Automatic answers off FM in section 16) were written against the 1.0.5 release branch. All were compiled with JG25, which every shipped build has; where a picture and the text disagree, the text is current.
OpenJSQ by Jerome Goddard II (W4IJG) · Copyright © 2026, All Rights Reserved · current OpenJSQ source is distributed under the repository's proprietary license, and anyone may implement the published protocols (section 25); third-party material keeps its own license terms. FSQ was designed by Murray Greenman ZL1BPU and Con Wassilieff ZL2AFP.
Describes OpenJSQ 1.0.9, October 2026 — what the program does today, not what is planned. Labels quoted in blue match the program's own text.