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), 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 for configuration, optional shared MySQL for the logbook so several operators can run one log. Fully themeable and bilingual (English / French).
Developed by F4BPO.
- Log4OM-style entry strip: callsign, RST tx/rx, name/QTH/grid, band/mode, TX/RX frequency (split), start/end time, comment/note. The contacted entity's flag is shown large next to the RST fields.
- Callsign lookup (QRZ.com / HamQTH) with photo, auto-fill of name/QTH/grid and the QRZ.com tab.
- Offline DXCC resolution from
cty.dat(country, CQ/ITU zones, continent), with/MM/AM/B(beacon) and call-area (/8,/W6) handling, plus ClubLog DXpedition date overrides. - Recent QSOs, Worked-before matrix (per band/mode slot), bulk re-resolve from cty/QRZ/ClubLog, bulk send to QSL services.
- Advanced QSO filter builder (field / operator / value, AND / OR, saved presets) with filtered- and selected-row ADIF export.
- Find duplicates (Tools) — groups QSOs by same call + band + mode (optionally same day / minute) and lets you pick which to delete.
- ADIF 3.1.7 compliant import/export: a full field dictionary, 30 promoted columns, a generic "extra fields" editor and standard/all export modes.
- Profiles: every setting is per-profile; each profile can point its logbook at the local SQLite file or a shared MySQL database (multi-operator).
- Main view = two configurable panes (per profile, Settings → General → Main view): 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.
- Great-circle map with short/long-path distance & azimuth, selectable basemaps (Light / Voyager / Street / Satellite, all key-free and labelled) and the antenna beam lobe(s) drawn from the rotor azimuth.
- Rotor compass (azimuthal-equidistant, click-to-turn) driven by PstRotator.
- Ultrabeam support (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 never lose track of where the antenna points.
- Multiple cluster servers with auto-reconnect, a master for commands.
- Filter sidebar (callsign search, hide-worked, group duplicates, band / mode / status / source) shared by the Cluster tab and the Main-view cluster pane, with a show/hide toggle.
- Per-spot status (new / new-band / new-slot / worked), click-to-tune the rig, and a multi-band Band Map (panadapter-style strips).
- POTA spots are tagged with their park reference (via
api.pota.app). - Spot alerts (Log4OM-style): rules on call / country / band / mode / spotter, with sound, visual and e-mail notification (Tools → Alert management).
Four native backends (Settings → CAT), each with auto-reconnect and a fast, non-blocking connect so a powered-off radio never freezes the app:
- OmniRig (Rig 1/2, hot-swap) — works with any OmniRig-supported rig.
- FlexRadio (SmartSDR) over the radio's TCP API — real-time slice freq / mode / split, UDP discovery, and panadapter spots (cluster spots pushed to the Flex display, click → fill the call).
- Icom CI-V — native, over the radio's USB port or over the internet via the radio's built-in LAN server (see Remote Icom below). No RS-BA1 or Remote Utility needed.
- TCI (WebSocket) — SunSDR / ExpertSDR2 and any TCI-compatible server: freq / mode / PTT / split, plus optional panorama spots.
Mode is taken from the radio; the digital sub-mode (FT4 vs FT8) is inferred from the frequency. Per-band Flex RX/TX antennas can be configured and are applied automatically on band change.
Shown only when the CAT backend is a FlexRadio:
- Transmit: RF power, tune power, TUNE, MOX, speech processor (NOR/DX/DX+), VOX (+ level + delay), monitor (+ level), mic gain.
- Receive (active slice): AGC mode/threshold, audio level, NB / NR / ANF.
- Antenna tuner (ATU): tune / bypass / memories.
- Amplifier: PowerGenius XL operate/standby + fault.
- Live meters over the UDP VITA-49 stream: S-meter (S-units), forward power (W), SWR, ALC, PA temperature, voltage, plus the amplifier's meters.
Shown when the CAT backend is Icom (USB or network). A full RS-BA1-style console:
- Twin VFO readout (MAIN / SUB) with the big tabular frequency, mode badge, band and RIT/ΔTX offset, and a mode-button row (SSB / CW / RTTY / PSK / AM / FM).
- Spectrum scope + waterfall (panadapter): ON/OFF, CTR/FIX, double-click to tune, and ◀ ⊙ ▶ buttons to centre the scope on the current frequency (±50 kHz) and pan left/right.
- Live meters always visible: S-meter (click → fill RST), power in watts, SWR.
- Receive DSP: AF / RF gain, squelch, AGC, preamp, attenuator, filter (FIL1/2/3), NB, NR, ANF and — on CW only — the APF (audio peak filter).
- Passband / notch: Twin PBT (inner / outer), manual notch + position.
- Transmit: RF power, MOX, TUNE, split with an automatic offset (+5 kHz on SSB, +1 kHz on CW), and monitor. On voice modes only: mic gain, speech compressor, VOX (+ gain + anti-VOX). Controls that don't apply to the current mode are hidden automatically.
- Bands & antenna: one-touch band buttons and ANT1/ANT2 selection.
- Clarifiers: RIT and ΔTX with wheel / ± tuning (Ctrl+←/→ nudges RIT).
- Power ON / OFF buttons (manual by design — the app never wakes the rig on connect).
- CW keying can run through the radio's own keyer (see Keyers below).
OpsLog speaks the IC-7610's built-in network protocol directly — it replaces both the Icom Remote Utility and RS-BA1. Enter the radio's IP, the Network User1 name/password and the CI-V address, and the whole Icom console works over the LAN/internet: login + token (auto-renewed), CI-V tunnel, receive-side retransmit for a rock-solid link even with the panadapter streaming, and manual power ON/OFF. (Audio is out of scope — use the radio in USB + a voice link such as Mumble.)
- CW keyer with macros and F-key macros. The keyer engine is selectable: WinKeyer (K1EL WK1/2/3 over a COM port), Icom (the radio's own keyer over CI-V — no extra hardware, works over the remote link too) or TCI.
- Digital Voice Keyer (DVK): record F1–F6 voice messages and transmit them.
- QSO audio recording: continuous rolling capture; on Log QSO the contact
is saved to a per-QSO WAV (
CALL_YYYYMMDD_HHMMSS.wav); mixes RX + mic.
- PowerGenius XL (4O3A) amplifier — direct TCP: operate/standby, fan-mode selector and fault display.
- Antenna Genius (4O3A) antenna switch over TCP/GSCP — a docked A/B antenna-switch widget.
- Awards engine: built-in + custom award definitions (shared globally across profiles) — DXCC, WAS / WAZ / WAC, WPX, IOTA / POTA / SOTA / WWFF, DDFM, worked/confirmed/validated by band & mode, OR rules and manual reference assignment, live reference detection on call entry, reference-list import for totals/names, and a Rescan that re-pulls the logbook (picks up fresh LoTW/QRZ confirmations).
- QSL services: ClubLog (batched ADIF upload), LoTW, QRZ.com, eQSL — upload and confirmation download (which auto-refreshes the award stats).
- QSL Card Designer (see below).
- E-mail eQSL: right-click a QSO → Send eQSL by e-mail via the configured SMTP account. (Outlook/Hotmail disable basic-auth SMTP — use Gmail with an app password, or a Microsoft app password.)
- Contest tab: pick a contest (built-in ADIF
CONTEST_IDlist) and an exchange (running serial or a fixed exchange). OpsLog auto-fillsCONTEST_IDand the sent/received serials (STX/SRX), enforces a window start/end, flags dupes and keeps a live scoreboard.
For a multi-op special-event call on a shared MySQL logbook (e.g. TM74TFR):
Settings → General → Publish live operator status. Each OpsLog instance
heartbeats its current activity (operator call, band, frequency, mode) into a
live_status table every ~15 s. A small PHP renderer
(docs/livestatus/tm74-status.php) on your
own web server reads that table and produces a live page/image you can embed on
the station's QRZ.com bio (<img src="…/tm74-status.php?img=1">). OpsLog
only writes to the DB — it is not a web server.
- Directed-net logging (Tools → Net): a global roster (
nets.json) plus an in-memory active session — check stations in, then log the whole net at once using the CAT frequency.
- Themes: four complete themes (Warm light, Warm dark, Graphite dark, High contrast) plus Auto (follows the OS light/dark preference), selectable in Settings → General. Every panel and every AG-Grid table follows the theme.
- Bilingual: full English / French UI, with a first-run flag chooser and a switcher in Settings → General.
- Secret vault: opt-in passphrase encryption of the stored passwords (AES-GCM + PBKDF2). Encrypted values are portable; a single unlock prompt at launch decrypts them for the session.
- UDP emitters: push the current frequency to PstRotator, radio info in
N1MM
RadioInfoformat, or an ADIF record on each logged QSO — so external tools (rotator control, digital apps, other loggers) stay in sync.
- Autostart: launch external programs (WSJT-X, JTAlert, rotator control…) at OpsLog startup, skipping any already running.
- Backup: optional database + ADIF backup at shutdown.
- Update check at startup with a toast (toggleable).
- Anonymous usage telemetry (a once-a-day heartbeat: random install ID + version + OS — no callsign or QSO data; opt-out in Preferences).
Tools → QSL Card Designer… turns a few photos into a polished eQSL card:
- Pick 1–6 photos (jpeg/png). OpsLog analyzes them offline (detail/luminance grid) and proposes 3 designs — callsign in the calmest zone of the best photo, operator name, CQ/ITU zones + locator line, country flag, the other photos as bordered inserts, and a per-QSO confirmation box.
- Pick a proposal and fine-tune it: click an element to select, drag to move, change font / style preset (gel gold, gel silver, classic white outline, script, flat) and per-preset knobs in the right panel.
- Save the template (photos are copied into
data/qsl/templates/<id>/, so the originals can move). One template can be the default per profile.
Sending: right-click a QSO → Send eQSL by e-mail. The card is rendered with
that QSO's data, rasterized to a ≤ 800 KB JPEG, archived in data/qsl/outbox/
and sent through the configured SMTP account to the address found by the
QRZ/HamQTH lookup. On success the QSO is stamped EQSL_SENT=Y (ADIF). The
e-mail subject/body templates live in the designer
({CALL} {DATE} {BAND} {MODE} {MYCALL} variables).
Fonts: Archivo Black, Lilita One, Baloo 2, Oswald, Great Vibes, Allura (all
OFL, embedded — licenses in internal/qslcard/assets/fonts/); Cooper Black is
offered when MS Office installed it. Flags: flag-icons (MIT), embedded for the
commonly-worked DXCC entities.
- Config (settings, profiles, rigs/antennas, cluster nodes, lookup cache,
award lists, QSL templates) always lives in the local SQLite file under
data/— instant even when the logbook is on a far-away MySQL. - Logbook (QSOs) lives where the active profile points it: the local SQLite file or a per-profile shared MySQL database.
A French version of this document is available in README.fr.md.