How to use qsonaut

Step by step. Each part can be read on its own — pick one from the list on the left.

Installing

Packages are on the download page.

macOS

  1. Open the .dmg file and drag qsonaut into Applications.
  2. The program has no Apple certificate yet, so the first time open it with a right-click (or Ctrl-click) → Open → Open. After that it starts normally.
  3. If macOS says the application is “damaged”, remove the download flag in Terminal: xattr -dr com.apple.quarantine /Applications/qsonaut.app

macOS asks for keychain access — that is where the log's keys are kept. Choose Always Allow. When synchronising it asks about the local network: choose Allow. After an update the questions may come back, because without a certificate the system treats the new version as a new program.

Windows

Run the .exe installer (or the .msi). Windows shows “Windows protected your PC” — choose More info → Run anyway. On the first sync Windows Firewall asks about network access: for the local network, allow it on private networks.

To update, run the new version’s installer. If the old version’s uninstaller opens, leave “Delete the application data” unticked — it deletes the logbook from this computer. Version 0.37.8 and later, when they are uninstalled, ask about it once more, plainly.

Linux

The AppImage runs without installing: chmod +x qsonaut_*.AppImage and start it. The .deb (Debian, Ubuntu, Mint) and .rpm (Fedora, openSUSE) packages install with your package manager. The program needs WebKitGTK 4.1.

On Arch and its relatives (e.g. Omarchy) take the AppImage. It runs on Wayland or X11, as the session is. Should the window stay empty or the program close, start it with GDK_BACKEND=x11 ./qsonaut_*.AppImage and tell me which system it was.

First start

The welcome screen offers three ways in:

Already have a log in another program? After creating the log, import it from ADIF (Import).

Station setups (prepared setups)

A setup describes the station as it is right now: callsign, operator, locator, QTH, power, the list of rigs and antennas, your own activation references and a contest. Every contact logged with a setup gets these details copied — changing the setup later never changes QSOs already saved.

Creating and switching

  1. On the Operating screen, click + Add in the top right corner.
  2. Name it (“Home QRO”, “Riverside park”), pick an icon and fill in the fields. Enter rigs and antennas separated by commas — the first is the default, the rest you pick on the radio bar.
  3. Your own references (POTA, WWFF, PGA…) appear once the matching program is turned on.
  4. Save. The setup's tile sits at the top of Operating; a click makes it active.

The tiles share a line with the title; when they do not fit, scroll them sideways. Drag a tile to change the order (or Alt+← / Alt+→ on a focused tile). The order is kept on this computer.

Setups are shared by all your devices — one prepared on the laptop is on the shack computer too. The pencil on a tile edits it, the bin deletes it everywhere (saved contacts stay).

Examples

Situation What goes into the setup
Home station, QRO Callsign, 6-character locator, 100 W, “IC-7610”, antennas “Doublet, Yagi 3el”.
Home station, QRP Same callsign and locator, 5 W, “IC-705”. One click switches between them.
Park activation Callsign with /P, the site's locator, the POTA reference (and WWFF, if the park is also a WWFF area). An activation counter appears on Operating.
Contest A contest needs no separate log. Load the contest definition in Programs (below) and turn it on, then pick the contest from the list in the profile and the starting serial. The serial goes up by itself with each contact. In the entry the received exchange comes straight after the call (one Tab), and what you send stands between the reports — as the definition says: serial and locator, in CQ WW the CQ zone.

Logging contacts

The radio bar

Below the setups: band, frequency, mode, propagation, power, rig and antenna. Type the frequency and the band follows. What you set here applies to the next contacts, and the save button shows the band and mode the contact will be logged with (e.g. Save 80m SSB). With the radio connected through Hamlib, band, frequency and mode change by themselves and the dot by QRG is green. Without it, QRG says by hand, and a frequency left alone for half an hour turns amber, with the time since it last changed, so you do not log on the band of an hour ago. Changing it or clicking into the field clears the reminder.

The entry

  1. Type the callsign. The Other station panel shows details from QRZ/HamQTH and a grid of bands and modes (CW, phone, data) with that station: the number of contacts in each cell, filled when one is confirmed, outlined when worked only; the current band and mode framed, red for a repeat. B4 under the call: the station is already in the log on this band in this mode group. B4 today, filled: a repeat of the day (UTC) from the same work profile — the way POTA, WWFF, SOTA and award days count. In a contest, B4 is about that contest. The phone does the same. A cell’s tip also says how the station’s country stands there. Under the grid a small map shows your square, theirs and the short path between them; without their locator, a dashed line to the middle of the country. The Recent QSOs frame then lists the contacts with that station, notes in full; clicking a cell narrows it to that band and mode, and × beside the cell’s name (or clicking it again) brings them all back. Log → opens the log narrowed to what the frame shows. The Q L e R P squares (card, LoTW, eQSL, QRZ, QSL file) say which channels confirmed them. Clicking a contact opens it in the log, narrowed to that station; saving brings you back to the entry.
  2. RST reports default by mode (59/599; for FT8 they stay empty, since that report is in dB).
  3. Enter the other station's references (park, municipality…) in the program fields. qsonaut says right away whether it is a new reference and which contact with it this is.
  4. Enter or Save QSO saves the contact.

The entry has a line for each question. The first is the contact: call, reports, name and note. The second is where the station is: QTH, locator, the bearing with the distance, the CQ and ITU zones and whatever fields programs count (e.g. a province). The third holds the program fields, with Save QSO at its end. The bearing shows “—” until you type the call or the locator. Marks stand under the fields: B4 under the call, ★ under a program field when the reference is new; which contact with it this is, the program's frame says.

More opens the country and DXCC code underneath, and an IOTA field while no IOTA program is on. Propagation (Es, tropo, MS, F2, satellite…) is picked on the radio bar, in the PROP field: it carries over to the next contacts, like the band, until you change it. For a satellite, its name and mode appear beside it. For a contact made a moment ago, click the clock and enter the UTC date and time.

What the screen tells you

The log and the map

The Log tab is the whole log: search by callsign, note and reference, and sorting by column. The filters sit in one row: Today keeps the contacts of the current UTC day (with a park's Profile, that is the activation's export at once), Band, Mode and Profile open buttons with the number of contacts on each — any combination, e.g. 6 m and 2 m — QSL picks confirmed or unconfirmed, and ★ keeps the contacts that brought something new. The same filters apply to Contacts, the Map and Statistics. A chosen filter says what is chosen and goes with a click on ×. An ADIF export of what the filter keeps uses the same choice. The gear icon sets the columns (including km, Locator, State and County — MixW's “Domain” and “County”), their order, width and the row density. A contact without its own locator (usually imported) has its distance measured from the current station, marked ≈. A page holds up to 1000 contacts.

Synchronising devices

Each of your devices holds the whole log and works on its own, offline included. When devices can reach each other, they exchange changes. There is no server holding the log — which is why every device is a backup of the others.

Pairing — once per device

On the same Wi-Fi or wired network — or over the internet, below.

  1. On the computer that has the log: Devices → Show pairing code. The code has 8 digits (there is a QR code too) and is valid for 10 minutes.
  2. On the new computer: on the welcome screen choose I am adding this computer → Get ready to pair. Computers on the network are listed — choose the one with the log and enter the code.
  3. Back on the first computer, approve with Add this device. The log starts to transfer.

A computer somewhere else (a club member at home, say): on the computer with the log turn on the internet in sync, show the pairing code and under Over the internet choose E-mail or Copy invitation. Send the invitation with your own mail program and give the code another way, by phone for instance. On the new computer: I am adding this computer → Over the internet → paste the invitation, enter the code → Connect over the internet. The invitation alone opens nothing, and adding is still approved on the computer with the log.

Local network and Internet

The sync status is in the top bar, next to the language button. A click opens a panel: Synchronise now, the state of every device and three switches.

Switch What it does
Local network Devices on the same network find each other and connect directly.
Internet From anywhere, with no router setup. The connection is encrypted; when a direct one is not possible it goes through a relay server, which carries the data but cannot read it.
Synchronise automatically Changes go out by themselves when the other device is reachable. Off — only when you click Synchronise now.
For the Internet route, both devices need to learn each other's route once: synchronise them one time on the same network with the Internet switch on at both ends. You can also paste a device's address by hand under Devices → Connection details.

The status in the bar

Disconnecting a device

A lost laptop is disconnected under Devices → the device's card → Disconnect device. It stops synchronising with the log; coming back takes pairing again with new keys.

A club log beside your own

One computer can hold several logs — your own, say, and the club station's log that operators also fill from home. Each log has its own devices, keys and synchronisation. Nothing passes between them: a contact written in the club log stays in the club log, and the club does not see yours.

  1. Click the log's name in the top bar, right after the logo → Add a log….
  2. Choose I am adding this computer when the club log is already kept on another computer, or I am starting a log to start it afresh.
  3. Joining is ordinary pairing (see above): at the club, on the same network, the club computer shows a code and you type it in.

You switch logs in the same menu. The log you write to is always the one named in the top bar. It cannot be changed in the middle of an entry — save or clear the contact first. The log not on screen synchronises in the background: club contacts come in and your club contacts go out while you work in your own. On the local network the computer has one port for all its logs, so a log in the background is as reachable as the one on screen — as long as Local network is on in it and in the log on screen. Which computer is the log's “main” one is your choice: the one it was created on adds and disconnects devices.

The radio (Hamlib), WSJT-X and QRZ/eQSL accounts are set up in each log separately — they apply only to the one on screen. If you start adding a log and change your mind, Back to… removes the unfinished log.

A log you no longer want on this computer is removed with the bin icon beside its name in the same menu (the open log cannot be removed). Before you confirm — by typing its name — qsonaut says how many contacts go and whether the log stays on other devices. If this is the log's only device, the contacts are lost; export them first.

A listener's logbook (SWL)

Listening reports go in a logbook of their own, so stations only heard never mix with contacts — on a club computer too, beside the club's logbook. When you create the logbook, tick Listener's logbook (SWL); the kind cannot be changed later.

Programs: awards, activations, contests

A program is the rules of an award, an activation or a contest in a signed file; the signature guarantees nobody changed them. qsonaut scores them from your log — locally, without sending anything anywhere.

Ready-made programs, in the same three groups as the Library in Programs: awards counted across the whole log, activations (your park or summit) and contests.

Awards

Program Program file Directory
DXCC — all entities dxcc-all DXCC entities
DXCC Challenge — entities on 160–6 m dxcc-challenge —
POTA — park hunter pota-hunter POTA parks
SOTA — summit hunter sota-hunter SOTA summits
WWFF — area hunter wwff-hunter WWFF areas
PGA — Polish municipalities pga-hunter PGA municipalities
VUCC 6 m — squares vucc-6m —
IOTA — island groups iota-hunter —
WAZ — CQ zones waz —
ITU zones itu-zones —
WAS — US states was —
WPX — prefixes wpx —
SP-PA — Polish counties (PZK) sp-pa SP-PA counties
POLSKA — provinces (PZK) polska —
SP prefixes — HF (PZK) prefiksy-sp-kf —
SP prefixes — VHF (PZK) prefiksy-sp-ukf —

The program texts are in Polish for now; the rules work the same in either language.

With a catalog installed, the entry checks the other station’s reference at once. ★ NEW — known, and the first in your log. not in catalog (in red) — the catalog has no such code: usually a typo, sometimes a park so new the catalog does not know it yet. retired — it existed but can no longer be worked. The verdict comes once the code is whole — while it is being typed nothing is shown. You can always save.

DXCC, DXCC Challenge, VUCC, IOTA, WAZ, ITU zones, WAS and WPX, like the real awards, count confirmed contacts. A program's details always show the same three numbers side by side: Credited — confirmed by the channels the sponsor accepts (for the ARRL awards DXCC, DXCC Challenge, WAS, VUCC: QSL card and LoTW; this is the program's score), Confirmed — by any channel, eQSL, QRZ and a qsonaut QSL file included, and Worked. The tile says how many are confirmed by another channel and how many wait for a confirmation, e.g. “14/50 · +8 other channel · +9 waiting”. Programs with a fixed list (WAS, WAZ, ITU zones, POLSKA) also have a table of states or zones by band. The PZK awards (SP-PA, POLSKA, SP prefixes) count only contacts confirmed by QSL card, because PZK checks a GCR list against the cards. The county code goes in the “SPPA korespondenta” field, the province letter in “Województwo”. Confirmations kept by another logger come in with its ADIF export, and a card you received is marked in the contact's correction (Confirmations).

Activations

Program Program file Directory
POTA — activator pota-activator POTA parks
SOTA — activator sota-activator SOTA summits

Contests

Each definition covers one running of the contest. qsonaut takes the CQ zone you send from the station's callsign, and stores the zone received as the other station's zone too, so it counts towards WAZ. The file for the organiser: Log → Export → Contest · Cabrillo.

Program Program file
CQ WW DX CW — 28–29 Nov 2026 cq-ww-cw-2026
CQ WW DX SSB — 30–31 Oct 2027 cq-ww-ssb-2027
CQ WW DX RTTY — 25–26 Sep 2027 cq-ww-rtty-2027

Adding a program

  1. Programs → + Add. At the top is the list of programs on qsonaut.app — awards, activations, contests. Click Add beside the one you want.
  2. Turn the program on with its switch in the list. It is added off; the choice is yours.
  3. For a program without its catalog (parks, municipalities, summits) qsonaut offers Download the catalog. With it you see not only the result but also what is still missing.
  4. A program from a file — someone else's or your own — is added below the list: choose the file → Check program → Add to logbook. A catalog from a file goes in with the catalog icon in the top right corner of the program's details.
A program belongs to the log: added, enabled or removed on one of its devices, it is the same on the others after a sync — a club log included. Each computer loads the directory itself, since it can be large.

A turned-on program with references adds fields to the entry line (e.g. “POTA”) and to the station setups. The result is a local calculation — the official credit always comes from the organiser.

Export packages

More → Export packages prepares ADIF files to a program's rules — e.g. an activation log split by park and day. Before saving it shows what goes into the package and what data is missing. Files are named from the callsign, park and day, e.g. [email protected], the way POTA and WWFF name logs. In a POTA file the park is in MY_SIG/MY_SIG_INFO, where pota.app reads it, and the other station's park on a P2P contact in SIG_INFO. The SOTA · Aktywator program splits the log by summit and day; the SOTA database (sotadata.org.uk) takes those ADIF files as they are.

Your own program templates

A program is written in YAML, in the Hamrule format. An example — a local award for 50 PGA municipalities worked on 80 m in 2026:

format: hamrule/2
id: my.pga.80m.2026
name: PGA · 80 m · 2026
version: 1
role: hunter              # hunter | activator | participant
reference_program: PGA    # reference fields appear in the entry line
presentation:
  icon: map               # map | globe | trophy
  unit: municipalities
  description: PGA municipalities worked on 80 m in 2026.
filter:
  start_utc: '2026-01-01T00:00:00Z'
  end_utc: '2027-01-01T00:00:00Z'
  bands: [80m]
  modes: []               # empty = all
  confirmed_only: false
scoring:
  points: 1
  unique_by: [remote_reference]
  multiplier: null
requirements:
  minimum_score: 50
  required_calls: []

What can be counted (unique_by)

Field Counts once per…
dxcc DXCC entity (from the contact's DXCC field)
remote_reference the other station's reference in reference_program
local_reference your own reference (activations)
gridsquare the other station's locator square (4 characters; VUCC_GRIDS too)
remote_call, station_call the other station's callsign, your own callsign
band, mode, utc_date band, mode, UTC day

Fields combine: [dxcc, band] counts each entity separately on each band. confirmed_only: true takes only contacts confirmed by any channel. A logging section with a contest_id adds the contest to the station setups.

Signing and adding your own program

  1. Save the template as a .yaml file.
  2. Programs → + Add → choose the file. qsonaut recognises an unsigned template.
  3. Sign with my key and check. On the first signature the computer creates its own author key and keeps it in the system keychain. The preview shows the program's result on your log.
  4. Add to logbook. Want to pass the program on? Save signed file… — any qsonaut installs that file.
Sign a new version of the program (raise version) on the same computer — then it replaces the previous one. The signature ties the rules to their author and protects them from silent changes; a program signed by someone else cannot be signed as your own.

ADIF import and export

Import

  1. Log → the import icon → choose the ADIF file.
  2. The preview shows how many contacts are new, how many are already in the log (these are skipped) and what cannot be read. Records without a station callsign can be assigned to the callsign you give.
  3. A file from a Windows logger (MixW, for one) may be written in a national code page rather than UTF-8. The import window says so, proposes Windows-1250 and shows names, QTHs and notes from the file below — accented letters should look right; if they do not, choose another encoding. The file does not need converting in another program.
  4. Optionally choose a Work profile to tag every contact from the file with (e.g. an MSHV log as “VHF”). The contacts also get from it what the file does not say about your station: square, references, power, equipment. What the file says stays. A profile given later in the Log fills in the same way.
  5. Import. Importing the same file again duplicates nothing.

Unknown ADIF fields are kept and come back in exports. A contact with no country (no DXCC field) gets one from the callsign — with the continent and the CQ and ITU zones — from the Big CTY prefix table (AD1C), the one N1MM and WSJT-X use. Values from the file, from QRZ or typed by hand always win; the table only fills empty fields. The same goes for logging and for contacts from WSJT-X, JTDX and MSHV. Zones from the callsign are an approximation: in the USA or Canada a callsign no longer says where its holder lives.

Export

The export icon: Whole log, Search results or Selected (select contacts in the table). Files for a particular program come from export packages.

A contest log for the organiser (Cabrillo)

The export icon → Contest · Cabrillo… (shown once the log holds contest contacts). Pick the contest — each round on its own — and check the Category against the rules: operators, assisted, band, mode and power in Cabrillo's words (SINGLE-OP, LOW…). qsonaut suggests them from the contacts — one band or ALL, one mode or MIXED, the power written in the contacts. An organiser's own name for the entry (e.g. “A”) goes in Other. Set the sent exchange: number, locator, digits of the number, together or with a space. Under Entrant give your name, e-mail, club and location — “DX” outside the USA and Canada, as CQ, ARRL and IARU contests ask; qsonaut keeps these for every contest and takes the operators for the file from the contacts. The preview shows the header and the first contact; Save .cbr file… proposes a name from the callsign. The settings are remembered for that contest. qsonaut does not score — the organiser does.

QRZ.com and HamQTH

Filling in details

Settings → Callsign directories: click Connect beside a service, enter the user name and password and Connect again — qsonaut checks the login straight away. When you type a callsign, it asks for the name, QTH and locator and fills in only empty fields. Answers are cached.

You can connect both services at once and use the arrows to set which is asked first. When the first does not answer or does not know the callsign, the second is asked; fields left out come from the next. A good pairing: QRZ.com first, HamQTH second — HamQTH is free and usually gives the locator that QRZ.com leaves out without a paid XML subscription.

LoTW, eQSL and QRZ.com — sending and confirmations

The three services work the same way: Log → Confirmations, the service's tab, and two buttons. Send new sends the contacts the service does not have yet; Fetch confirmations marks those it has confirmed (L, e, R in the QSL column). With contacts selected in the Log before the window opens, both work on them (Send selected). What needs your decision — a confirmation with no contact in the log, a contact recorded slightly differently, a duplicate — waits folded under To check.

Accounts

A confirmation came for SP5XTY, and your log has SP5XTY/P? qsonaut pairs them by the call without /P and lists them apart under "Paired without /P". Do not change the call in your log for it: the log should say what was on the air.

Confirmations by QSL file

Two stations using qsonaut confirm contacts directly, with no service in between:

  1. Select contacts → Confirmations → QSL file → Save QSL file… and send the file to the station (e-mail, messenger). With several stations, Save QSL files… writes one file per station into a folder you choose. Confirmations… in a contact's details opens the same window.
  2. They: Log → Confirmations → QSL file → Load QSL file…, load the file, check the sender, accept the confirmations, then save a reply file.
  3. You load their reply the same way — matching contacts are confirmed.

The file is signed: the signature protects its content; check the sender through the channel it came by.

WSJT-X, JTDX and MSHV

  1. In qsonaut: Settings → Radio and programs → WSJT-X · JTDX · MSHV → turn on Receive contacts from WSJT-X.
  2. In WSJT-X: Settings → Reporting → UDP Server 127.0.0.1, port 2237. JTDX and MSHV have a similar UDP server setting.
  3. Every Log QSO in WSJT-X lands in the log at once, completed with references, equipment and power from the active setup.
Using GridTracker as well? Set a multicast address in WSJT-X, e.g. 224.0.0.1, and the same address in qsonaut (Advanced) and in GridTracker — both programs get the same contacts.

Radio over CAT

qsonaut reads the band, frequency and mode from the radio over CAT, a USB or RS-232 cable. As you turn the knob or change the mode, the radio bar follows and the next contact takes it. The program only reads: it changes nothing in the radio.

To talk to the radio qsonaut uses Hamlib, a free program that handles CAT for hundreds of radios and that WSJT-X uses too. You install Hamlib yourself, once.

  1. Install Hamlib. Windows: the installer from hamlib.github.io, in its default place. macOS: brew install hamlib. Linux: sudo apt install libhamlib-utils (Debian, Ubuntu, Mint), sudo dnf install hamlib (Fedora) or sudo pacman -S hamlib (Arch). On Linux also add yourself to the dialout group, so the program may open the radio's port.
  2. In qsonaut: Settings → Radio and programs → Radio · CAT. At the top you see whether qsonaut found Hamlib; if not, it says how to install it on your system. In the list of radios, turn on the CAT switch by your radio.
  3. Choose the radio's model (type e.g. 7300 and click it in the list), the port (Windows: COM3 and so on; macOS: /dev/cu.usbserial…; Linux: /dev/ttyUSB0) and, if the radio needs it, the speed. That is all: qsonaut runs Hamlib for the radio in use by itself and closes it on exit.
No radio at hand? Try a pretend one: rigctld -m 1, and in another window rigctl -m 2 F 7074000 tunes it to 7.074 MHz.

Antenna rotator

The rotator goes through the same Hamlib as the radio. qsonaut reads where the antenna points and turns it to the other station, only when you ask.

  1. In qsonaut: Settings → Radio and programs → Antenna rotator → turn on Turn the rotator.
  2. Choose the controller's model (e.g. GS-232) and its port. qsonaut runs Hamlib for the rotator by itself. A controller connected to another computer: that rotctld's address under Advanced.
No rotator at hand? rotctld -m 1 is a pretend one that slowly turns to the direction asked.

Backup

With one computer there is no other device holding your log. A backup then makes itself: Settings → Application → Backup → Choose a folder… — an external disk, a USB stick or a network folder, not this same disk. The setting covers every log on this computer.

On a new computer the log comes back whole: I am recovering a log on the welcome screen, the recovery kit file, Choose the backup folder… (qsonaut finds the newest copy of that log by itself) and the passphrase. The copy alone cannot bring the log back — the recovery kit is needed too, which is why the settings say which log lacks one.

Recovery kit

The computer the log was created on holds its master key — the one that adds and disconnects devices. Settings → Log recovery kit saves that key in a passphrase-protected file (at least 12 characters). Keep the file off the computer, separate from the passphrase.

If you lose that computer, choose I am recovering a log on a new one, point to the kit and enter the passphrase. The contacts come from a backup, from your other devices when they sync, or from an ADIF export — the kit carries the key, not the log. Save it in the backup folder: the save window opens there by itself.

Data and privacy

Something missing, or working differently from what is written here? Let me know and I will fix it.