chore: release v0.22.9

This commit is contained in:
2026-08-02 06:40:10 +02:00
parent 296a4a55c0
commit f6cd6e999a
38 changed files with 1308 additions and 297 deletions
+55 -9
View File
@@ -1,13 +1,47 @@
# Amplifiers and Switches
## PowerGenius XL (4O3A) amplifier
## Amplifiers
Direct TCP connection (Settings → PowerGenius):
Settings → **Amplifier** is a **list**: configure several amps (e.g. two SPEs
run in parallel), each with its own name and connection. Brands:
- **Operate / Standby** and **fault** display.
- **Fan-mode** selector (Standard / Contest / Broadcast).
- When a Flex is connected, the amp controls + its **FWD / ID / TEMP** meters
appear in the FlexRadio panel's Amplifier card. See [[FlexRadio]].
- **SPE Expert** (1.3K / 1.5K / 2K) — USB serial or an RS232-to-Ethernet
bridge. OPERATE/STANDBY, ON/OFF, Low/Mid/High power level, live status.
Switching the amplifier **on and off** uses the remote-on control lines, so
it needs the **USB (or RS-232) connection**, not a network bridge — the ON
button works even while the amplifier is off and reporting nothing.
- **ACOM** (500S / 600S / 700S / 1200S / 2020S) — serial or bridge.
OPERATE/STANDBY/OFF, live power / SWR / PA temperature / band / fan.
Power-ON works over serial when the cable wires the DTR/RTS pins.
- **PowerGenius XL** (4O3A) — direct TCP. Operate/Standby, fault display, and a
**fan-mode** selector (Standard / Contest / Broadcast).
Where the controls appear:
- An **amplifier card** in the FlexRadio panel and in **Station Control**:
OPERATE/STANDBY, ON/OFF, power level, output-power bar and live FWD /
drain-current / temperature meters. Several amps → one card each.
- A **status chip per amp** in the bottom bar: green ON AIR = OPERATE, orange =
STANDBY, red = offline. Clicking it toggles OPERATE/STANDBY.
- A **docked widget** (flame icon, next to the keyers): Operate, power ON/OFF,
the SPE power level and live watts / SWR / temperature, in the narrow column
format of the Tuner Genius widget. With several amplifiers configured, a
dropdown on the icon picks which one it shows — or **All**.
### Band-follow (amp on a second COM port)
An ACOM or SPE that normally polls the radio for its frequency can follow
OpsLog instead: OpsLog answers the amp's polls **as a Kenwood rig** on a second
COM port (Settings → Amplifier → frequency port). Useful when the real radio's
CAT port is already taken by OpsLog itself.
## Tuner Genius XL (4O3A)
Settings → Tuner Genius (IP only; port fixed at 9010). Live **SWR and forward
power** with peak-hold, **Tune / Bypass / Operate-Standby**, and the two
channels A/B (source, frequency, antenna) shown and click-selectable. Available
as a docked widget, a card in the FlexRadio panel and a card in Station
Control. Direct TCP — uses one of the box's connection slots.
## Antenna Genius (4O3A) antenna switch
@@ -16,8 +50,20 @@ Over TCP / GSCP — a docked **A/B antenna-switch** widget:
- One row per configured antenna, with a **Port A** and **Port B** button.
- Colours: green = selected on port A, blue = selected on port B, red (pulsing) =
that port is transmitting. Clicking a selected port deselects it (→ None).
- **Band filter** (funnel icon in the header): shows only the antennas configured
for the current band, like the native app. Toggle it off to see all antennas.
Antennas with an unknown band mask are always shown.
- **Band filter** (funnel icon): shows only the antennas configured for the
current band. Antennas with an unknown band mask are always shown.
Configure the host / password in Settings → Antenna Genius.
## Relay boards (Station Control)
USB relay boards for antenna/accessory switching, with named buttons in Station
Control: **Denkovi** (4/8 relays, FT245) and generic **CH340 / LCUS**
USB-serial boards. A Test-connection button and detection feedback live in the
setup panel.
## Station Control
The Station Control tab is a dashboard of fixed-width panels that wrap to fill
the window — amplifier(s), tuner, relays, rotator, Ultrabeam… Drag a panel by
the grip on its left edge to reorder; the order is remembered.
+53 -16
View File
@@ -2,35 +2,72 @@
## CW keyer
A CW keyer with **macros** and F-key macros. The keyer **engine** is selectable
(Settings → CW Keyer):
A CW keyer with **macros** on F-keys (F1F9; empty slots are hidden). The keyer
**engine** is selectable (Settings → CW Keyer):
- **WinKeyer** — K1EL WK1/2/3 over a COM port.
- **WinKeyer** — K1EL WK1/2/3 over a COM port. The log names the generation
detected, and a byte-level trace can be enabled for bug reports.
- **Serial port (DTR=CW / RTS=PTT)** — OpsLog keys CW by toggling a serial
control line itself, the hardware method N1MM/WSJT-X use with a Yaesu SCU-17
or a generic keying interface. No WinKeyer needed. Choose the COM port, which
line carries CW, and *Invert keying* for interfaces that key backwards. This
is also the engine for an **FTDX10** (whose CAT refuses `KY`), on the rig's
second COM port.
- **Icom** — the radio's own keyer over CI-V, no extra hardware. Works over the
remote link too. (Requires the Icom CAT backend; set break-in to SEMI/FULL or
the rig keys the sidetone but stays in RX.)
remote link too. (Set break-in to SEMI/FULL or the rig keys the sidetone but
stays in RX.)
- **FlexRadio (CWX)** — keys CW straight over the SmartSDR connection, with
type-ahead and mid-send backspace.
- **Yaesu (rig keyer)** — the radio's internal keyer over CAT (`KY`), for the
FTDX101 / FT-991A / FT-710 family. See [[Yaesu]].
- **TCI** — for TCI backends.
**ESC** stops CW on whichever engine is active; typing a callsign aborts a
running macro. `<LOGQSO>` inside a macro logs the contact at that exact point.
**Auto-call** repeats a CQ with the gap you set measured *after* the message.
### ESM — Enter Sends Message
N1MM-style, for CW (Settings → CW Keyer). With the keyer on, **Enter** fires a
macro by QSO stage instead of logging: empty callsign → F1 (CQ); callsign
entered → F2 (report), focus jumps to RST; Enter in RST → F3 (TU), which logs
if the macro contains `<LOGQSO>`.
## Digital Voice Keyer (DVK)
Record **F1F6** voice messages and transmit them. Set the audio devices, PTT
method and gains in Settings → Audio.
- **PTT** method: CAT, RTS, DTR, or none (VOX).
- **Test PTT** keys the rig briefly. On CAT/OmniRig the key is held ~1.5 s so the
transmit command is actually sent (OmniRig is asynchronous and coalesces rapid
writes).
- **PTT** method: CAT (whichever backend is active — every one supports PTT),
RTS, DTR, or none (VOX).
- **Auto CQ** repeats a CQ-labelled message on a timer until you stop it.
- The DVK refuses to transmit on non-phone modes — no speech on FT8.
- A **message level** control (Settings → Audio) drives the rig at the right
level even from a quietly recorded microphone. If the rig transmits almost
nothing, check its rear-input setting (on an FTDX10: SSB MOD SOURCE = REAR).
## QSO audio recording
Continuous rolling capture. On **Log QSO** the contact is saved to a per-QSO WAV
(`CALL_YYYYMMDD_HHMMSS.wav`), mixing RX + mic. Configure the recordings folder,
format (WAV / MP3), pre-roll and gains in Settings → Audio.
Continuous rolling capture. On **Log QSO** the contact is saved to a per-QSO
WAV/MP3 (`CALL_YYYYMMDD_HHMMSS`), with pre-roll. With automatic recording off, a
**red dot** beside the callsign records the contact by hand.
A recording can be **replayed on the air** to the station being worked, like a
voice-keyer message — with its **own level**, separate from the voice keyer (a
receiver line-out needs far less gain than a microphone). The play button
becomes a **stop** button while it transmits. Hidden on CW.
## CW decoder (RX audio → text)
**Tools → CW decoder** (or the ear button) decodes received CW while the mode
is CW: adaptive envelope with noise squelch, per-character dit/dah
classification, follows 1240 WPM and sloppy fists, rides QSB. Shows WPM /
pitch / level, locks onto the FlexRadio CW pitch automatically, and clicking a
decoded word fills the callsign. Clean-to-moderate signals decode solidly;
weak-signal pileups remain CW Skimmer territory.
## RX audio monitor (USB rigs)
Settings → Audio → **Listen to radio** pipes the rig's received audio (its "USB
Audio CODEC" input) through your speakers, so you hear the radio inside OpsLog.
**Talk to radio** keys PTT and pipes your mic to the rig's audio input. (Network
audio for remote Icom is a work in progress — see
[[Remote Icom over the Internet]].)
Audio CODEC" input) through your speakers — the level applies live as you drag
it. **Talk to radio** keys PTT and pipes your mic to the rig's audio input.
+18 -4
View File
@@ -6,8 +6,15 @@ shared **globally** across profiles.
## Built-in awards
DXCC, WAS / WAZ / WAC, WPX, IOTA / POTA / SOTA / WWFF, **DDFM** (French
departments), and more — tracked **worked / confirmed / validated** by band and
mode.
departments), **DLD** (DARC DOK), **H26** (Helvetia 26 cantons), the US
counties (USA-CA), and more — tracked **worked / confirmed / validated** by
band and mode.
The awards panel has a **mode filter** (All / CW / Phone / Digital) that
applies to the whole award — bands, counts, confirmations and the contacts
behind a cell — and stacks with the worked/confirmed filter, so "worked on CW
but not confirmed on CW" is one click. Reference lists sort by reference or by
description.
## How matching works
@@ -121,13 +128,20 @@ drop off the list. This is how you close the gaps a matcher can't fill on its ow
## Live detection & manual refs
- References are detected **live** as you enter a callsign.
- References are detected **live** as you enter a callsign — from the looked-up
address *and* from the QTH, name, country, comment, note or grid you typed.
- An award can be marked **one reference per QSO** (used by DLD). When several
references then match the same contact, none is assigned silently — the
candidates are offered at log time and you pick. Off by default, so an n-fer
POTA activation still counts every park.
- You can **manually assign** a reference to a QSO (the *Award Refs* tab of the
QSO editor). It's stored in an ADIF extra (`APP_OPSLOG_AWARDREFS`) so it
survives export/import — see [[Import and Export ADIF]] — and is honoured
everywhere (award panel, grid columns, totals). For a list-backed award the
assigned reference must still be a **valid, listed** reference, and the QSO
must be **in scope** (rule 5) for it to count.
must be **in scope** (rule 5) for it to count. A hand-assigned reference
**replaces** what the matcher found, so a correction survives the next
recompute.
## Reference lists & display
+52 -14
View File
@@ -1,28 +1,46 @@
# CAT Control
OpsLog has **four native CAT backends** (Settings → CAT). Each auto-reconnects
and connects *non-blocking*, so a powered-off radio never freezes the app.
OpsLog has **eight CAT backends** (Settings → CAT). Each auto-reconnects and
connects *non-blocking*, so a powered-off radio never freezes the app. Backends
are named by **how the radio is reached**:
| Backend | Use it for |
|---------|-----------|
| **OmniRig** | Any OmniRig-supported rig (Rig 1 / Rig 2, hot-swap). |
| **FlexRadio (SmartSDR)** | FlexRadio 6000/8000 over the TCP API. → [[FlexRadio]] |
| **Icom CI-V** | Any Icom over **USB** *or* over the internet via its **LAN server**. → [[Icom]] · [[Remote Icom over the Internet]] |
| **FlexRadio (API)** | FlexRadio 6000/8000 over the TCP API. → [[FlexRadio]] |
| **Yaesu (USB)** | FTDX10 / FTDX101 family, direct serial — no OmniRig. → [[Yaesu]] |
| **Kenwood (USB, network)** | TS-590 / TS-890 / TS-990 / TS-2000 (Elecraft K3/K4 speak the same dialect), serial or a `host:port` serial bridge. → [[Kenwood and Xiegu]] |
| **Xiegu (USB)** | G90 / X6100 / X6200 / X5105 — CI-V with their reduced command set. → [[Kenwood and Xiegu]] |
| **Icom (CI-V USB)** | Any Icom over USB. → [[Icom]] |
| **Icom (CI-V network)** | An Icom's built-in LAN/internet server, replacing RS-BA1. → [[Remote Icom over the Internet]] |
| **TCI** | SunSDR / ExpertSDR2 and any TCI (WebSocket) server. |
Once connected, frequency / band / mode follow the radio, clicking a cluster spot
tunes the rig, and (for Flex) cluster spots can be pushed to the panadapter.
Once connected, frequency / band / mode follow the radio, clicking a cluster
spot tunes the rig, and (for Flex) cluster spots can be pushed to the panadapter.
## Sharing the rig with WSJT-X / JTDX / MSHV (rigctld)
A native backend holds the radio's serial port **exclusively** — so OpsLog can
serve its rig connection to other programs instead: **Settings → CAT → Share
CAT**. In WSJT-X / JTDX / MSHV / Log4OM pick rig model **Hamlib NET rigctl** at
`127.0.0.1:4532`. Works with every backend and both Hamlib command dialects.
> Never point two programs at the same COM port. If another logger or WSJT-X
> opens the rig's port directly while OpsLog holds it, you get "port busy"
> errors, garbled CI-V frames and erratic rig behaviour. One master — OpsLog —
> and everyone else through the shared rigctl port.
## OmniRig
Pick **Rig 1** or **Rig 2** (the two OmniRig slots). Configure the actual COM
port / baud in OmniRig's own settings. Works with anything OmniRig supports; PTT
keying via CAT is supported where the rig's OmniRig profile exposes it.
port / baud in OmniRig's own settings.
## FlexRadio
Enter the radio's IP (UDP discovery assists). You get a full SmartSDR-style
control tab — see **[[FlexRadio]]**.
- **VFO to read** — some OmniRig rig files declare the wrong active VFO (an
IC-7610 file declared VFO B). If the frequency looks frozen or follows the
wrong VFO, force **A** or **B** here.
- OpsLog and OmniRig must run at the **same privilege level** — one elevated
("as administrator") and not the other cannot see each other; OpsLog detects
and names this case.
## Icom CI-V (USB)
@@ -31,7 +49,7 @@ control tab — see **[[FlexRadio]]**.
- **COM port** + **baud** must match the radio (set *CI-V USB Echo Back* **OFF**
on the rig).
- The model choice also tailors the console (e.g. attenuator steps: 20 dB on an
IC-7300, 6/12/18 dB on an IC-7610).
IC-7300, 6/12/18 dB on an IC-7610/7800).
Full console details: **[[Icom]]**.
@@ -40,10 +58,30 @@ Full console details: **[[Icom]]**.
Enter the TCI host + port (default 40001). Gives freq / mode / PTT / split and,
optionally, panorama spots.
## Serial lines (DTR / RTS)
Windows raises the DTR and RTS lines when a serial port opens, and some
interfaces read one of them as **PTT** — the radio goes into transmit the moment
OpsLog connects. Others need the lines **high** to work at all. So:
- **Xiegu** always lowers both on connect (a G90 behind a DE-19 keyed on open),
and has a setting for which line keys the rig.
- **Yaesu and Kenwood** have an option (off by default) to lower both lines on
connect — turn it on only if your interface transmits as soon as OpsLog opens
the port.
- **Icom CI-V** has always dropped them.
## Protocol trace
Settings → CAT can log the **raw protocol** (every CI-V frame, or every Kenwood
command, as hex/text) to the diagnostic log — invaluable when reporting a radio
that answers oddly. The checkbox shows whether the trace is really running.
## Notes
- The **digital sub-mode** (FT4 vs FT8) is inferred from the frequency.
- A radio reporting LSB or USB selects **SSB** in the entry form.
- **Per-band Flex RX/TX antennas** can be configured and are applied
automatically on band change (Settings → FlexRadio).
automatically on band change (Settings → CAT → FlexRadio).
- Split, RIT/XIT and other rig-specific features are exposed on each backend's
control tab where supported.
+24 -6
View File
@@ -3,27 +3,39 @@
## Servers
Add multiple cluster servers (Settings). They auto-reconnect; one is the
**master** used for sending commands. The Cluster tab and the Main-view cluster
pane share the same live feed.
**master** used for sending commands. A quiet node is not treated as a dead one
— silence keeps its session, login and filters. The Cluster tab and the
Main-view cluster pane share the same live feed.
## Filter sidebar
A show/hide **filter sidebar** (shared by the Cluster tab and the Main pane):
- **Callsign** search, **hide worked**, **group duplicates**.
- Filter by **band / mode / status / source**.
- Filter by **band / mode / status / source**, plus **NEW POTA** and
**NEW COUNTY** chips.
## Per-spot status and tuning
Each spot is coloured by **status** relative to your log:
- **new** (entity never worked), **new-band**, **new-slot**, **worked**.
- **new** (entity never worked), **new-band**, **new-mode**, **new-slot**,
**worked**.
- Settings → General → **Group digital modes as one (DXCC-style)** makes
FT8/FT4/RTTY/PSK count as a single Digital mode for the colouring and the
matrix badges, matching how DXCC counts.
Click a spot to **tune the rig** (fills the callsign into the entry strip). A
multi-band **Band Map** shows panadapter-style strips per band.
multi-band **Band Map** shows panadapter-style strips per band — its CW / data
/ phone sub-bands use their own colour-blind-checked hues, and **Ctrl+↑ /
Ctrl+↓** jumps to the next spot above/below the current frequency and tunes it.
**POTA** spots are tagged with their park reference (via `api.pota.app`).
The entry strip's band matrix can also show the **ClubLog Most Wanted rank**
(Settings → General): an `MW #rank` pill next to the entity name, personalised
to your callsign, refreshed daily.
## Sending a spot
Use the **Send Spot** window to announce a DX spot on the master cluster:
@@ -35,6 +47,12 @@ frequency** (full resolution, including sub-kHz).
**Tools → Alert management** — Log4OM-style alert rules on **call / country /
band / mode / spotter**, with **sound**, **visual** and **e-mail** notification.
Active alerts appear as a discreet bell in the entry strip; click it for the
list. Alerts are kept briefly and only shown when active.
list.
## External spot sources
A **DXHunter** remote-call UDP packet fills the callsign, and when it carries
`<FREQ>` and `<MODE>` it also tunes whichever CAT backend is active. See
[[Settings and Data]] for the UDP configuration.
See also: [[Maps and Antennas]] for turning the beam to a spot.
+8 -6
View File
@@ -1,10 +1,11 @@
# OpsLog
A modern, fast ham-radio logger for **Windows** — Log4OM-style entry, real-time
CAT for **OmniRig**, native **FlexRadio/SmartSDR**, native **Icom CI-V** (USB
*and* remote-over-internet, replacing RS-BA1) and **TCI** (SunSDR / Expert
Electronics), a DX cluster with spot alerts, awards tracking, maps, contest
logging, QSL management and a QSL-card designer.
CAT for **OmniRig**, native **FlexRadio/SmartSDR**, **Icom CI-V** (USB *and*
remote-over-internet, replacing RS-BA1), **Yaesu**, **Kenwood**, **Xiegu** and
**TCI** (SunSDR / Expert Electronics) — with **CAT sharing** so WSJT-X & co use
the same rig link — a DX cluster with spot alerts, awards tracking, maps,
contest logging, QSL management and a QSL-card designer.
Built with **Wails v2** (Go backend + React/TypeScript frontend), **pure Go**
(no CGO). SQLite holds the configuration; the logbook can be the local SQLite
@@ -18,14 +19,15 @@ Developed by **F4BPO**.
1. **[[Installation]]** — download / build and first launch.
2. **[[Getting Started]]** — the entry strip, logging your first QSO, choosing a
profile.
3. **[[CAT Control]]** — connect your radio (OmniRig, FlexRadio, Icom, TCI).
3. **[[CAT Control]]** — connect your radio (OmniRig, FlexRadio, Icom, Yaesu,
Kenwood, Xiegu, TCI).
## What OpsLog does
| Area | Pages |
|------|-------|
| Enter and manage QSOs | [[Logging Basics]] · [[Recent QSOs and Filters]] · [[Import and Export ADIF]] |
| Control your radio | [[CAT Control]] · [[FlexRadio]] · [[Icom]] · [[Remote Icom over the Internet]] |
| Control your radio | [[CAT Control]] · [[FlexRadio]] · [[Icom]] · [[Remote Icom over the Internet]] · [[Yaesu]] · [[Kenwood and Xiegu]] |
| Chase DX | [[DX Cluster and Spots]] · [[Maps and Antennas]] |
| Station hardware | [[Amplifiers and Switches]] · [[Audio and Keyers]] |
| Events & contests | [[Contest Logging]] · [[Net Control]] · [[Multi-Operator Live Status]] |
+18 -6
View File
@@ -8,22 +8,34 @@ export modes.
Import an `.adi` / `.adif` file into the active profile's logbook. On import,
OpsLog parses every field, maps standard fields to columns and keeps unknown but
valid ADIF fields in a per-QSO **extras** store (editable later). Country / zones
are enriched from `cty.dat` where missing.
valid ADIF fields in a per-QSO **extras** store (editable later). Country /
zones are enriched from `cty.dat` where missing. A file **without a header**
(records pasted from another log) imports fine.
- **Field remapping**: the import dialog can move a field as it reads it —
e.g. the RSGB IOTA contest exports the island reference in `STATE`; add a
`STATE → IOTA` row and it lands where the award looks.
- **Fill from profile**: optionally stamps your station fields *and* your
default confirmation statuses (paper QSL, LoTW, eQSL, Club Log, HRDLog,
QRZ.com) on QSOs the file leaves empty — a WSJT-X log carries almost none.
Existing values are never overwritten.
## Export
- **Whole log**, **selected rows**, or the **filtered view** (no limit) — see
[[Recent QSOs and Filters]].
- **Standard** mode exports the common promoted fields; **All** mode also exports
every extra field.
- **Standard** mode exports the common promoted fields; **All** mode also
exports every extra field; **Choose fields…** opens a picker that separates
the official ADIF 3.1.7 fields (by category) from the OpsLog / non-standard
tags actually present in your log, with All/None per group. Your selection is
remembered.
- **Cabrillo** export for contest submission.
## Round-trip safety
Award references you assign manually are stored in an ADIF extra field
(`APP_OPSLOG_AWARDREFS`), so exporting your full log and re-importing it does not
lose your award-reference assignments.
(`APP_OPSLOG_AWARDREFS`), so exporting your full log and re-importing it does
not lose your award-reference assignments.
## Tips
+49
View File
@@ -0,0 +1,49 @@
# Kenwood and Xiegu (native CAT)
## Kenwood (USB, network)
A native backend talks straight to a **TS-590 / TS-890 / TS-990 / TS-2000**
over its serial port — frequency, mode, VFO, split and PTT, no OmniRig in
between. **Elecraft K3/K4** speak the same dialect. Pick **Kenwood (USB,
network)** in Settings → CAT.
- **Serial**: COM port + baud.
- **Network**: give a `host:port` instead — for a serial bridge (ser2net, an
Ethernet-serial adapter). *Not* the radio's own RJ45, which speaks Kenwood's
KNS/ARCP protocol.
- Split is detected from FR/FT when the radio omits it from its status frame.
- The backend was tested end-to-end against a TS-2000 emulator and reports
useful errors: a port that opens but stays silent is distinguished from one
sending data that never answers (the error quotes what arrived).
## Xiegu (G90, X6100, X6200, X5105)
These radios speak CI-V but with a **reduced command set** (no scope, no DSP
block, no data mode), so they have their own backend — pick **Xiegu (USB)** in
Settings → CAT. Frequency, mode, split and PTT.
### PTT on a G90 — read this
A **G90 ignores the CI-V PTT command**. That has three consequences:
1. In the Xiegu settings, choose **how the rig is keyed**: CI-V command, RTS or
DTR — pick the hardware line your interface wires to PTT.
2. WSJT-X & co transmit through OpsLog's **shared CAT link** (Hamlib NET rigctl
`127.0.0.1:4532` — see [[CAT Control]]): OpsLog converts the PTT request
into the hardware line. This is the supported path and it works.
3. **WSJT-X + OmniRig will NOT transmit** a G90: OmniRig sends PTT as a CI-V
command, which the radio ignores. Either use the native Xiegu backend +
rigctl sharing, or configure the PTT line (RTS/DTR) inside OmniRig itself.
### Keying on connect
Behind an interface that carries PTT on a modem line (e.g. a DE-19), a G90 used
to go **straight into transmit when OpsLog connected** — Windows raises DTR and
RTS when a serial port opens. The Xiegu backend now drops both lines on
connect, then drives only the line you selected for keying.
## Notes
- Both backends refuse a CI-V/CAT frame read at the wrong offset, so a garbled
answer can no longer turn into a phantom frequency.
- The protocol trace (Settings → CAT) covers both — see [[CAT Control]].
+31 -8
View File
@@ -10,8 +10,24 @@ save. Fields: callsign, RST tx/rx, name, QTH, grid, band, mode, TX/RX frequency
CQ/ITU zones, continent) from `cty.dat` including `/MM` `/AM` `/B` and call-area
handling (`/8`, `/W6`), plus **ClubLog** DXpedition date overrides.
- **Callsign lookup** (QRZ.com / HamQTH) fills name / QTH / grid and shows the
photo and a QRZ.com tab. Configure it in Settings → Lookup.
photo and a QRZ.com tab. Configure it in Settings → Lookup. Portable calls
(`/M`, `/P`) are looked up on the home call too.
- **No lookup account?** The name / QTH / locator are recovered from the **last
time you worked the station**, and for US calls the offline **FCC (ULS)**
database fills state, county and a 6-character grid as you type. A real
QRZ/HamQTH hit still wins.
- A green **NEW** badge appears on the County field (Info / F2) when the US
county has never been worked.
- **ESC** clears the callsign (and stops CW).
- The frequency readout is **scroll-tunable**: roll the wheel over the
hundreds / tens / units-of-kHz digit and the rig follows.
## Super Check Partial / N+1
Enable in Settings → General (downloads the community MASTER.SCP list). As you
type a call, a docked two-column widget shows known calls that **contain** what
you typed (Partial) and calls **one character away** (N+1) — click one to fix a
busted call.
## Editing a QSO
@@ -22,14 +38,18 @@ fields** editor for any ADIF field not promoted to a column.
## Bulk operations
Select rows in Recent QSOs, right-click:
Select rows in Recent QSOs (a **Select all** button takes every displayed row),
right-click:
- **Fix country & zones** from `cty.dat`, or **update from QRZ / ClubLog**.
- **Bulk edit field** — set one field across many QSOs (QSL/upload status, my
station, contest, propagation, contacted-station refs, comment…). Great for
flipping a batch to *Requested* before an upload.
- **Fix country & zones** from `cty.dat`, or **update from the callsign
databases** (QRZ / ClubLog), with a progress bar.
- **Bulk edit field** — set one field across many QSOs: QSL/confirmation
statuses *and dates*, my station, contest, propagation, contacted-station
refs, comment, **gridsquare**, even the **frequency** (band recomputed,
out-of-band values refused).
- **Send to** a QSL service, **export** selected / filtered to ADIF or Cabrillo,
**delete**.
**delete** (optionally withdrawing the QSO from QRZ.com and Club Log —
Settings → External services, off by default).
## Find duplicates
@@ -40,6 +60,9 @@ same day or same minute) and lets you pick which to delete.
- **Worked-before matrix** shows prior contacts with the entity per band/mode
slot as you type.
- Awards references are detected **live** as you enter a call (see [[Awards]]).
- Award references are detected **live** as you enter a call — including from
the QTH, name, comment or grid you typed (see [[Awards]]).
- The callsign in the top bar is the **station switcher**: click it to change
profile.
See also: [[Recent QSOs and Filters]] · [[Import and Export ADIF]]
+27 -15
View File
@@ -3,36 +3,48 @@
## Main view
The Main view is **two configurable panes** (per profile, Settings → General →
*Main view*). Choose from: great-circle map, locator (street) map, the cluster
grid, the worked-before grid, recent QSOs, the **FlexRadio** controls, the
**Icom** console, or the **Net control** panel.
*Main view*), with a **draggable divider** between them (double-click it to
even them out). Choose from: great-circle map, locator (street) map, the
cluster grid, the worked-before grid, recent QSOs, the **FlexRadio** controls,
the **Icom** or **Yaesu** console, or the **Net control** panel.
## Great-circle map
- Short/long-path **distance & azimuth** to the worked station.
- Selectable, **key-free** basemaps: Light / Voyager / Street / Satellite (all
labelled).
- Selectable, **key-free** basemaps: Light / Voyager / Street / Satellite.
- The **antenna beam lobe(s)** are drawn from the rotor azimuth.
- **Day/night terminator** and twilight band (button at the top right).
## Locator (street) map
An OSM street map centred on the contacted grid square — handy for local /
portable contacts. No API key.
## Rotor compass
## Rotators
An azimuthal-equidistant **click-to-turn** compass driven by **PstRotator**. The
current heading and target are shown; click a bearing to turn the rotor.
An azimuthal-equidistant **click-to-turn** compass; the current heading and
target are shown. Three rotator types (Settings → Rotator):
## Ultrabeam
- **PstRotator** — via its UDP interface.
- **microHAM ARCO** — native, over LAN or USB: set the ARCO's CONTROL PROTOCOL
to *Yaesu GS-232A*.
- **GS-232A (generic)** — any GS-232A controller, ERC (Easy Rotor Control)
included; serial speed selectable. Set an ERC to GS-232 emulation, not
Hy-Gain DCU-1.
Ultrabeam antennas are supported with three modes — **Normal**, **180° reverse**,
## Motorized antennas (Ultrabeam / SteppIR)
Both follow the **rig frequency** (band change → retune) and retune immediately
when you click a spot, with three modes — **Normal**, **180° reverse**,
**Bidirectional**:
- The **radiating direction** is shown in green and the **mechanical boom** in
grey, on both the compass and the map, so you always know where the antenna
actually points.
- The antenna **follows the rig frequency** (band change → retune), and retunes
immediately when you click a spot.
grey, on both the compass and the map.
- On a FlexRadio, transmit is **inhibited while the elements move**, and
released as soon as the antenna is tuned.
- **SteppIR — Tunable range** (Settings → Hardware → Antenna, default
1354 MHz): outside it OpsLog leaves the antenna and the TX interlock
completely alone, so tuning to 30 m on a 20 m6 m SteppIR does nothing.
Related hardware: [[Amplifiers and Switches]] (Antenna Genius switch).
Related hardware: [[Amplifiers and Switches]] (Antenna Genius switch, Tuner
Genius, relays).
+28 -10
View File
@@ -6,18 +6,29 @@ Every setting in OpsLog is **per-profile**: station identity, CAT, lookup, QSL
defaults, awards display, antennas, and which logbook to use. Create one profile
per callsign / station / event.
Switch or manage profiles in Settings. The active profile decides which logbook
your QSOs go to.
The **callsign in the top bar is the station switcher** — click it and pick a
profile. Managing profiles is at the bottom of that list (and in Settings).
## Config vs. logbook — two different stores
## Two separate databases
Since 0.21.0 the settings and the QSOs live in **separate files**:
| Store | What | Where |
|-------|------|-------|
| **Config** | settings, profiles, rigs/antennas, cluster nodes, lookup cache, award lists, QSL templates | always the **local SQLite** file under `data/` |
| **Logbook** | your QSOs | where the active profile points — local SQLite **or** shared MySQL |
| **Settings database** (`settings.db`, or `opslog.db` on older installs) | settings, profiles, rigs/antennas, cluster nodes, lookup cache, award lists, QSL templates | always the **local SQLite** file under `data/` |
| **Logbook** (`logbook.db`) | your QSOs | where the active profile points — a local SQLite file **or** shared MySQL |
Keeping config local means the UI is instant even when the logbook is a far-away
MySQL server.
Keeping the settings local means the UI is instant even when the logbook is a
far-away MySQL server. Settings → Database shows the two as separate sections,
with an *Open folder* shortcut; a logbook file can be **renamed or relocated**
(its QSOs move with it), and the status bar names the **logbook** file — that
is the one to back up.
A profile can point at its **own logbook file** — ideal for a visiting
operator, whose contacts stay out of your log without touching your settings.
**Portable**: paths inside the OpsLog folder are stored relative to it, so
moving the whole folder to another drive or PC loses nothing.
## Shared MySQL logbook (multi-operator)
@@ -25,11 +36,18 @@ Point a profile's logbook at a **MySQL** database so several operators run **one
log** — e.g. a multi-op special-event call. Configure the host / database /
credentials in the profile's database settings.
This is also what powers [[Multi-Operator Live Status]] (each instance heartbeats
its activity into a `live_status` table).
- The database and tables are converted to **utf8mb4** on connect, so Cyrillic
or Polish characters from a QRZ lookup store correctly even when the hosting
panel created the database as latin1.
- An FT8/MSHV QSO that cannot reach a laggy shared database is **parked and
re-logged automatically** once it recovers — no lost QSOs.
- Switching to a profile whose MySQL is unreachable shows a clear warning
instead of silently staying on the previous logbook.
This is also what powers [[Multi-Operator Live Status]].
## Backups
Optional **database + ADIF backup at shutdown** (Settings → Backup). Regardless,
copying the `data/` folder backs up your config and local logbook. See
copying the `data/` folder backs up your settings and local logbook. See
[[Settings and Data]].
+22 -8
View File
@@ -4,13 +4,23 @@
The main log table. Double-click a row to edit; right-click for bulk actions
(see [[Logging Basics]]). Columns are configurable — click **Columns** to choose
which are visible; your selection is saved (per profile).
which are visible; widths, order and hidden columns are saved (per profile),
with a separate layout for the narrower Main-tab pane.
- The selected-row count is always visible at the top, and a **Select all /
Unselect all** button takes every displayed row.
- QSL and upload status columns are coloured: **Y** green, **N** red, **R**
blue.
- A **Distance (km)** column (also in Worked-before) is computed from the QSO's
own locator pair.
- There are **no per-column header filters** — they only ever searched the rows
on screen, which made a QSO further back in the log look missing. Use the
advanced filter, which queries the whole logbook.
### Award columns
Each defined award can show a column with the reference the QSO counts for. These
columns are **hidden by default** and opt-in from the Columns picker — turn on
only the awards you're chasing. Your choice persists across restarts.
Each defined award can show a column with the reference the QSO counts for.
These columns are **hidden by default** and opt-in from the Columns picker.
## Advanced filter builder
@@ -19,15 +29,19 @@ Click the filter button to open the **QSO filter builder** (Log4OM-style):
- Add one or more **conditions**: *field · operator · value*.
- Operators: equals, not-equal, contains, starts/ends with, greater/less
(or equal), is empty, is not empty.
- Fields include every confirmation **status and date** (sent / received,
before / after) for paper QSL, LoTW, eQSL, Club Log, HRDLog and QRZ.com.
Field names stay in English — they are ADIF names, a standard vocabulary.
- Join conditions with **ALL (AND)** or **ANY (OR)**.
- Save named **presets** (they travel with the `data/` folder).
- The field dropdown is sorted alphabetically to find things fast.
The filtered view can be exported: **selected rows** or the **whole filtered
view** (no row limit) → ADIF or Cabrillo.
A filter shows **every** match (the on-screen row limit only applies to the
unfiltered log; safety cap 10 000). The filtered view can be exported:
**selected rows** or the **whole filtered view** → ADIF or Cabrillo.
## Worked-before matrix
As you type a callsign, the worked-before grid shows prior contacts with that
**entity**, arranged by band/mode slot, so you instantly see what's new (new
DXCC / new band / new slot) versus already worked.
DXCC / new band / new slot) versus already worked. Its right-click menu offers
the same bulk edit and export as the main grid.
+32 -22
View File
@@ -4,48 +4,58 @@
A `data/` folder is created **next to `OpsLog.exe`**:
- **Config** (SQLite): settings, profiles, rigs/antennas, cluster nodes, lookup
cache, award lists, QSL templates. Always local, so the UI is instant.
- **Local logbook** (SQLite): QSOs, when the profile logs locally.
- **Settings database** (SQLite): settings, profiles, rigs/antennas, cluster
nodes, lookup cache, award lists, QSL templates. Always local.
- **Logbook** (`logbook.db`, SQLite): QSOs, when the profile logs locally.
- `data/qsl/templates/…` — QSL card templates and their photos.
- `data/qsl/outbox/…` — sent QSL card JPEGs.
- Recordings folder (configurable) — per-QSO WAV/MP3.
- Backups.
- Backups, diagnostic logs.
Back up your setup by copying `data/` (and keep it with the exe). See
Paths are stored **relative to the folder**, so the whole OpsLog directory can
move to another drive or PC. Back up your setup by copying `data/`. See
[[Profiles and Databases]] for local-vs-MySQL logbooks.
## Settings map
| Section | What |
|---------|------|
| **General** | language, theme, Main-view panes, live-status publish |
| **Station** | your callsign, grid, name, address (my-station ADIF) |
| **CAT** | radio backend + connection ([[CAT Control]]) |
| **General** | language, theme, date format (US / FR / Standard), Main-view panes, digital-modes grouping, Super Check Partial, ClubLog exceptions & Most Wanted |
| **Station** | your callsign, grid, name, address (my-station ADIF) — hand-corrected CQ/ITU zones stay corrected |
| **CAT** | radio backend + connection, CAT sharing (rigctld), protocol trace ([[CAT Control]]) |
| **Lookup** | QRZ.com / HamQTH credentials |
| **FlexRadio** | per-band RX/TX antennas |
| **Audio** | DVK / recorder devices, PTT, gains, RX monitor |
| **CW Keyer** | WinKeyer / Icom / TCI engine + macros |
| **External services** | LoTW (TQSL), QRZ, eQSL, ClubLog, HRDLog, POTA |
| **Email** | SMTP for eQSL-by-email |
| **PowerGenius / Antenna Genius / Rotator / Ultrabeam** | station hardware |
| **Audio** | DVK / recorder devices, PTT, gains and levels, RX monitor |
| **CW Keyer** | engine (WinKeyer / Serial / Icom / Flex CWX / Yaesu / TCI), macros, ESM |
| **External services** | LoTW (TQSL), QRZ, eQSL, ClubLog, HRDLog, POTA, Cloudlog/Wavelog |
| **Email** | SMTP for eQSL-by-email and *Send log to F4BPO* |
| **Amplifier / Tuner Genius / Antenna Genius / Rotator / Antenna** | station hardware ([[Amplifiers and Switches]] · [[Maps and Antennas]]) |
| **Database** | settings DB + this profile's logbook, rename/relocate |
| **Backup** | database + ADIF backup at shutdown |
## Appearance & language
Four themes (Warm light, Warm dark, Graphite dark, High contrast) plus **Auto**
(follows the OS). Full **English / French** UI with a first-run flag chooser and
a switcher in Settings → General.
(follows the OS); fresh installs start dark. Full **English / French** UI with
a first-run flag chooser and a switcher in Settings → General. **Ctrl + wheel**
zooms the whole UI (remembered; Ctrl+0 resets). The window title bar is drawn
by OpsLog — drag the top bar to move, double-click to maximise — and the window
reopens on the screen it was closed on.
## Integrations (outbound UDP)
## UDP integrations
Push the current frequency to **PstRotator**, radio info in **N1MM `RadioInfo`**
format, or an **ADIF record on each logged QSO** — so external tools stay in sync.
- **Inbound**: WSJT-X / MSHV / JTDX QSO logging and status (unicast or
multicast), and DXHunter remote-call packets (fills the callsign, tunes the
rig when the packet carries `<FREQ>`/`<MODE>`).
- **Outbound**: the current frequency to **PstRotator**, radio info in **N1MM
`RadioInfo`** format, or an **ADIF record on each logged QSO**.
## Other
- **Autostart** external programs (WSJT-X, JTAlert, rotator control…) at launch,
skipping any already running.
- **Update check** at startup (toggleable).
- **Autostart** external programs (WSJT-X, JTAlert, rotator control…) at
launch, skipping any already running.
- **Update check** at startup, when opening Help → About, and every 5 minutes.
A "What's new" summary appears on the first launch after each update.
- **Help → Send log to F4BPO** (shown when SMTP is configured) e-mails the
diagnostic logs straight to the developer.
- **Anonymous usage telemetry** — a once-a-day heartbeat (random install ID +
version + OS; no callsign or QSO data). Opt out in Preferences.
+50 -30
View File
@@ -2,57 +2,77 @@
## Where's the log file?
OpsLog writes a diagnostic log. The path is shown in Settings (and can be opened
from there). When reporting a problem, include the relevant lines — they're
prefixed by subsystem (`Flex:`, `icom net:`, `icom scope`, `antgenius:`,
`cluster:`, `qslmgr:log`, `audio:`…).
OpsLog writes a diagnostic log. The path is shown in Settings (and can be
opened from there). When reporting a problem, include the relevant lines —
they're prefixed by subsystem (`cat:`, `Flex:`, `icom net:`, `antgenius:`,
`cluster:`, `qslmgr:log`, `audio:`…). With an SMTP server configured, **Help →
Send log to F4BPO** e-mails the logs straight to the developer.
A crash no longer leaves a blank window: the error is shown on screen,
selectable, with a copy button.
## CAT
- **Radio not connecting** — check the backend fields (COM port + baud for USB;
IP/credentials for network). OpsLog connects non-blocking, so it won't freeze —
watch the CAT status.
- **Icom: no CAT at all over USB** — the CI-V address must match the radio; pick
your **model** from the dropdown (it sets the address) and set *CI-V USB Echo
Back* **OFF** on the rig.
- **Icom scope blank on an IC-7300** — this was a bug where the scope decoder was
chosen from the configured CI-V address; it now uses the model detected from the
CI-V ID, so a single-scope rig run at address `0x98` decodes correctly. Update
to the latest build.
- **Icom attenuator button does nothing** — the dB steps are model-specific; make
sure the right model is selected (IC-7300 = 20 dB, IC-7610 = 6/12/18 dB).
IP/credentials for network). The CAT log line carries the error explaining a
disconnection.
- **"Serial port busy" in the log** — another program holds the COM port
(WSJT-X, MSHV, another logger configured for direct CAT). Only one program
can own the port: let OpsLog hold it and point the others at **Hamlib NET
rigctl 127.0.0.1:4532** (Settings → CAT → Share CAT). Two masters on one
CI-V bus also cause garbled frames and erratic behaviour.
- **The radio transmits as soon as OpsLog connects** — your interface reads DTR
or RTS as PTT. Xiegu drops the lines automatically; on Yaesu and Kenwood
enable the *lower DTR/RTS on connect* option. (It is off by default because
other interfaces stop transmitting with the lines low.)
- **WSJT-X won't key a Xiegu G90 through OmniRig** — a G90 ignores the CI-V PTT
command. Use the native Xiegu backend (which keys RTS/DTR) + rigctl sharing,
or set the PTT line inside OmniRig. See [[Kenwood and Xiegu]].
- **OmniRig frequency frozen / wrong VFO** — set **VFO to read** (A or B) in
the OmniRig backend settings; some rig files declare the wrong VFO.
- **"OmniRig not found" with OmniRig running** — one of the two runs as
administrator and the other doesn't. Start both the same way.
- **Icom: no CAT at all over USB** — the CI-V address must match the radio;
pick your **model** from the dropdown (it sets the address) and set *CI-V USB
Echo Back* **OFF** on the rig.
- **A radio that answers oddly** — enable the **protocol trace** (Settings →
CAT): every frame to and from the rig lands in the log as hex, which turns a
guess into a diagnosis.
## Remote Icom
- **Login rejected** → wrong Network User1 name/password.
- **Can't bind local port** → the Icom **Remote Utility is still running**
close it.
- **Link drops with the scope on** → receive-side retransmit should hold it; if
not, check network quality and the `icom net:` log lines. See
- **Frequency frozen after another program took the CI-V session** — OpsLog
reconnects on its own; if it doesn't, check the `icom net:` log lines. See
[[Remote Icom over the Internet]].
## FlexRadio
- **A control reads 0 / stale at startup** — some SmartSDR status fields use short
names (e.g. the TX filter is reported as `lo`/`hi`, not `filter_low/high`). If a
value never populates, capture the `Flex: … status` log line and report it.
- **Antenna wrong band on a spot click** — fixed: `SetFrequency`/`SetMode` update
the slice cache immediately so the panel and the Ultrabeam follow don't chase a
stale frequency.
- **A control reads 0 / stale at startup** — some SmartSDR status fields use
short names. If a value never populates, capture the `Flex: … status` log
line and report it.
- **SmartSDR CAT keeps disconnecting while OpsLog is open** — fixed: OpsLog now
binds only to the actual SmartSDR/Maestro GUI client. Update.
- **"Interlock is preventing transmission" with a SteppIR** — see the tunable
range setting in [[Maps and Antennas]].
## Multi-op live status PHP
`Connection refused` from the PHP page is almost always MySQL `bind-address =
127.0.0.1` or a firewall/grant issue — see
[[Multi-Operator Live Status]].
127.0.0.1` or a firewall/grant issue — see [[Multi-Operator Live Status]].
## DVK / PTT
- **Test PTT does nothing on CAT/OmniRig** — the key is held ~1.5 s so the async
OmniRig write is actually sent; if it still doesn't key, the rig's OmniRig
profile may not expose CAT TX keying — use RTS/DTR or VOX.
- **Test PTT does nothing on CAT/OmniRig** — the key is held ~1.5 s so the
async OmniRig write is actually sent; if it still doesn't key, the rig's
OmniRig profile may not expose CAT TX keying — use RTS/DTR or VOX.
- **A voice message transmits almost nothing** — raise the message level
(Settings → Audio) and check the rig's rear-input setting (FTDX10: SSB MOD
SOURCE = REAR).
## Still stuck?
Open an issue with: what you did, what happened, your radio/model, and the
relevant log lines.
Open an issue (or *Send log to F4BPO*) with: what you did, what happened, your
radio/model, and the relevant log lines.
+47
View File
@@ -0,0 +1,47 @@
# Yaesu (native CAT)
A native backend talks to an **FTDX10 / FTDX101** (and close relatives) directly
over the rig's USB/serial port — no OmniRig. Pick **Yaesu (USB)** in
Settings → CAT: COM port + baud (FTDX10/101 default 38400).
Frequency, mode, VFO A/B (MAIN/SUB on the 101), split and PTT are covered, and
OpsLog **follows the VFO you are actually on** — the displayed frequency, the
logged frequency and the VFO a cluster spot tunes. Split is worked out from
which VFO transmits, so simplex on the SUB receiver is not shown as split.
## The Yaesu console
With the native backend connected, a console tab (and a Main-view pane) gives:
- **S / PO / SWR meters** — power in watts on a curve measured against the rig's
own display, SWR as the ratio itself, with peak-hold so they stay readable
between CW words or SSB syllables.
- **Band and mode buttons** — CW, RTTY, DIGI and PSK show their sideband; click
the active button again to switch it.
- AF / RF / squelch, AGC, IPOAMP1AMP2, 6/12/18 dB attenuator, NB, DNR, narrow
filter, power, mic gain, VOX, split and **ATU tune**.
- **SPLIT** places the transmit VFO up 1 kHz on CW/data, up 5 kHz on phone.
- In CW the mic gain and VOX give way to a **CW card**: keyer speed, break-in
and ZIN (zero-in).
Sliders only respond to the mouse wheel after you click them, so scrolling the
panel can't change the transmit power by accident.
## CW with the rig's own keyer
A CW engine sends your macros with the radio's internal keyer (CAT `KY`) — no
WinKeyer, no second cable. Pick **Yaesu (rig keyer)** in Settings → CW keyer.
- Works on the **FTDX101 / FT-991A / FT-710** family.
- An **FTDX10 does not accept it** (`KY` is refused, `DAKY` doesn't help) —
OpsLog says so and points to the **serial DTR keyer** on the rig's second COM
port (the *Serial port* CW engine), which works. See [[Audio and Keyers]].
- CW speed is one setting everywhere: the console slider, the CW panel and the
rig's front panel stay in agreement.
## Notes
- A Yaesu that is switched off is reported as such (opening the port is not
"connected").
- If your interface goes into transmit the moment OpsLog connects, enable the
**lower DTR/RTS on connect** option — see [[CAT Control]].
+2
View File
@@ -16,6 +16,8 @@
- [[FlexRadio]]
- [[Icom]]
- [[Remote Icom over the Internet]]
- [[Yaesu]]
- [[Kenwood and Xiegu]]
**Operating**
- [[DX Cluster and Spots]]