Fast, minimal terminal-based amateur radio logger
CQOps is a fast, offline-first amateur radio logger for the terminal, built for portable and field operations, SOTA/POTA activations, contests, and club stations. It is designed for shack use, portable operation, club stations, field days, and machines such as Raspberry Pi-class devices or older laptops.
CQOps always saves QSOs locally first. Internet-based integrations are optional.
CQOps is built around fast QSO entry, local-first logging, and practical field operation.
Local logging does not require internet access. Network features are skipped in --offline mode.
CQOps is a good fit for:
CQOps is not intended to replace every feature of a full desktop logger or a web-based logbook platform. It focuses on fast terminal logging, field operation, offline use, and shared-station workflows.
CQOps was built with ham club environments in mind. The active operator is always visible in the status bar — one glance tells you who is currently logged in. Switching operators takes a single keystroke (Ctrl+O) and takes effect immediately, with the operator’s callsign and name written into every subsequent QSO. No log-out, no password prompt, no interruption.
Logbooks, rig presets, and contests are cycled the same way — Ctrl+L, Ctrl+R, Ctrl+C. A club station with rotating operators, multiple rigs, and several active contests can switch context in under a second without touching a mouse.
For field days and public events, the CQOps Live dashboard projects a real-time map, QSO feed, and stats onto a big screen — visitors and club members can watch the station work without crowding the operator’s terminal. Just enable http server integration and use any device with web browser to access it.
Browse all releases:
https://github.com/szporwolik/cqops/releases
| Package | Link | Notes |
|---|---|---|
| Installer | cqops-setup.exe | Recommended for most users. Adds CQOps to the Start Menu and PATH. |
| Portable ZIP | cqops-windows-portable.zip | Extract and run without installing. |
Add the Cloudsmith APT repository, then install:
curl -1sLf 'https://dl.cloudsmith.io/public/szporwolik/cqops/setup.deb.sh' | sudo -E bash
sudo apt update
sudo apt install cqops
Or download the .deb directly:
| Architecture | Link | Use for |
|---|---|---|
| amd64 | cqops_amd64.deb | Most Intel/AMD PCs |
| arm64 | cqops_arm64.deb | 64-bit ARM systems |
| armhf | cqops_armhf.deb | 32-bit Raspberry Pi OS |
Install the downloaded package:
sudo dpkg -i cqops_*.deb
Add the Cloudsmith RPM repository, then install:
curl -1sLf 'https://dl.cloudsmith.io/public/szporwolik/cqops/setup.rpm.sh' | sudo -E bash
sudo dnf install cqops
Install from the AUR:
# CachyOS (uses paru by default)
paru -S cqops-bin
# Arch / Manjaro
yay -S cqops-bin
Also available via pacaur, aura, or manual makepkg. PKGBUILD at aur.archlinux.org/packages/cqops-bin.
| Architecture | Link | Use for |
|---|---|---|
| amd64 | cqops-linux-amd64.tar.gz | Most Intel/AMD PCs |
| arm64 | cqops-linux-arm64.tar.gz | 64-bit ARM systems |
| armhf | cqops-linux-armhf.tar.gz | 32-bit Raspberry Pi OS |
| Architecture | Link | Use for |
|---|---|---|
| Apple Silicon | cqops-darwin-arm64 | M1/M2/M3 Macs |
| Intel | cqops-darwin-amd64 | Intel Macs |
Install manually:
chmod +x cqops-darwin-* && sudo mv cqops-darwin-* /usr/local/bin/cqops
git clone https://github.com/szporwolik/cqops.git
cd cqops
make build
make install
Source builds require Go 1.26 or newer.
| Requirement | Value |
|---|---|
| Minimum terminal size | 80×24 characters |
| Recommended terminal size | 80×43 characters or larger |
| Recommended Windows terminal | Windows Terminal |
| Kitty graphics terminal | Kitty, Ghostty, or WezTerm |
cqops # Start the TUI
cqops --offline # Start without network activity
cqops --version # Print version and exit
cqops --help # Show help
On first launch, CQOps opens the setup wizard. Only the essential station information is required for local logging. Network integrations can be skipped and configured later.
| Page | What it configures |
|---|---|
| Station & Logbook | Initial logbook, station callsign, operator, grid locator, optional references and zones, Wavelog URL/API/station profile ID |
| Rig | Rig preset, model, antenna, power, backend, optional rotor, optional WSJT-X UDP settings |
| Integrations | Callbook lookup settings (QRZ.com, HamQTH, QRZ.RU, Callook.info) |
| General | IANA timezone |
| Summary | Review and save |
Supported rig backends are:
rigctld.| Key | Action |
|---|---|
| Ctrl+S | Validate and continue; on Summary, save and start CQOps |
| Esc | Go back |
| F10 | Quit |
| Tab / Shift+Tab | Move between fields |
| Space | Toggle checkboxes |
You can change wizard settings later with F9.
Start CQOps:
cqops
Complete the setup wizard with at least your callsign and grid locator.
Open the QSO form with F1.
Enter the contact callsign. CQOps uppercases callsigns automatically.
Fill the remaining fields. If the active rig is connected through flrig or Hamlib, CQOps can fill frequency, band, mode, and submode automatically.
Press Enter to save.
If a DUPE! warning appears, press Enter again to save anyway, or Esc to cancel.
The saved QSO appears immediately in the Recent QSOs table.
CQOps uses a fixed terminal layout:
┌─ Status Bar ───────────────────────────────────────────────────────────────────┐
│ CQOps v0.8.9 Log Portable Rig FTDx10 Call SP9MOA/P │
│ Net WSJT Hamlib DXC WL 23:00L 2100Z │
├─ Tab Bar ──────────────────────────────────────────────────────────────────────┤
│ F1 QSO F2 QRZ F4 DXC F5 HRD F6 REF F7 BPL F8 LOG F9 CFG │
├─ Main Content Area ────────────────────────────────────────────────────────────┤
│ QSO form, partner view, map, editor, dashboard data, or active screen content │
├─ Help Bar ─────────────────────────────────────────────────────────────────────┤
│ ? Help • Enter Log QSO • F10 Quit │
└────────────────────────────────────────────────────────────────────────────────┘
The status bar shows:
L,Z.Common labels include Net, WSJT, Rig, Flrig, Hamlib, Rotator, DXC, WL, and GPS. The GPS label follows the same colour convention — red when disconnected, yellow when connected but without a fix, white when a position fix is acquired.
| Color | Meaning |
|---|---|
| White/default | Connected or active |
| Yellow | Disabled, connecting, or expected offline |
| Red | Error or disconnected |
| Accent + bold | WSJT-X is transmitting |
| Key | Tab | Screen |
|---|---|---|
| F1 | QSO | QSO form and Recent QSOs |
| F2 | QRZ | Partner view: callbook data, map, stats, photo |
| F4 | DXC | DX Cluster spots and filters |
| F5 | HRD | PSK Reporter spots and propagation map |
| F6 | REF | SOTA/POTA/WWFF/IOTA reference search |
| F7 | BPL | Band Plan Browser |
| F8 | LOG | Logbook editor, ADIF, Wavelog sync |
| F9 | CFG | Configuration menus |
The help bar shows shortcuts relevant to the active screen. Press ? for the full help overlay.
Before leaving home:
In the field:
Start CQOps in offline mode:
cqops --offline
The active operator is saved in the ADIF OPERATOR field.
Each logbook can keep its own station details, Wavelog settings, contest settings, and operators.
A rig preset can include backend, model, antenna, power, rotor settings, and WSJT-X UDP settings.
When WSJT-X UDP integration is enabled, CQOps can receive ADIF messages from WSJT-X and auto-log completed digital QSOs.
Auto-logged QSOs:
If the operator reported by WSJT-X does not match the active operator in CQOps, CQOps shows a warning.
Before long digital sessions, check:
CQOps saves QSOs locally first. Wavelog sync is optional.
| Action | Where | Shortcut | Notes |
|---|---|---|---|
| Upload unsent QSOs | Logbook Editor | w |
Uploads in batches of 50 |
| Download from Wavelog | Logbook Editor | Ctrl+W |
Incremental download using last_fetched_id |
Upload status is tracked per QSO:
If upload fails, the QSO remains in the local logbook and can be retried later. Purging a logbook resets the fetch ID to 0, allowing a full re-download.
The QSO form is the main logging screen. Open it with F1.
CQOps can fill fields from:
| Source | Fields |
|---|---|
| flrig / Hamlib | Frequency, Freq RX if split, mode, submode |
| Callbook (QRZ.com / HamQTH / QRZ.RU / Callook.info) | Name, QTH, grid, country, CQ zone, ITU zone, DXCC, continent, photo |
| REF database | SOTA, POTA, WWFF, IOTA references |
| Wavelog lookup | Worked/confirmed status when configured |
| DXCC/prefix data | Prefix and country-related data |
| Left column | Middle column | Right column |
|---|---|---|
| Date UTC | Mode | Power W |
| Time UTC | Submode | Freq RX |
| Call | Name | SOTA Ref |
| RST sent | QTH | POTA Ref |
| RST rcvd | Grid | WWFF Ref |
| Frequency MHz | Country | IOTA |
| Band | SIG | SIG Info |
| Exch sent | ||
| Exch rcvd |
Exchange fields appear only when a contest is active.
The bottom row contains:
Fields such as Band, Mode, and Submode can be cycled with PgUp/PgDn.
When both grid locators are known, CQOps shows distance and azimuth.
The QSO form can also show badges such as:
| Key | Action |
|---|---|
| Enter | Save QSO |
| Ctrl+S | Send DX spot from filled form |
| Esc | Cancel duplicate confirmation |
| Enter on DUPE confirmation | Save duplicate anyway |
Open the Logbook Editor with F8.
Use it for:
Changes appear in Recent QSOs immediately.
CQOps supports ADIF 3.1.7 import and export.
| Action | Shortcut |
|---|---|
| Import ADIF | Ctrl+I |
| Export ADIF | Ctrl+E |
Import validates records, skips duplicates, and shows a summary. Imported QSOs are marked for Wavelog upload when Wavelog sync is configured.
Export can include all QSOs or contest-filtered QSOs. CONTEST_ID is preserved.
Mode and submode handling follows ADIF 3.1.7 as described in this manual:
The QSO form has separate Mode and Submode fields. Both can be cycled with PgUp/PgDn.
CQOps includes a lightweight contest-logging panel designed for casual contest participation — it is not a replacement for dedicated contest loggers like N1MM, Win-Test, or TR4W. If you are operating a serious multi-op, multi-radio, or assisted-category contest entry, use a purpose-built contest logger. CQOps is there when you want to hand out a few points, track your rate for fun, or log a handful of contest QSOs during a SOTA/POTA activation without leaving your everyday logger.
Create or configure a contest in the Logbook Editor with Ins.
Contest configuration includes:
| Marker | Replaced with |
|---|---|
@rst |
RST sent or received |
@serial |
Auto-incrementing serial number |
@cqz |
DX station CQ zone |
@mycqz |
Your CQ zone |
@itu |
DX station ITU zone |
@myitu |
Your ITU zone |
@grid |
DX station grid square |
@mygrid |
Your grid square |
Press Ctrl+C to cycle the active contest, or select from the Contest menu (F7). The exchange fields appear automatically in the QSO form and serials auto-increment.
When a contest is active, the bottom bar shows a live summary line:
IARU-HF · IARU HF 45 QSOs Started 16:13 Last 14:04 ago Next #45 On 2:41
| Field | Meaning |
|---|---|
IARU-HF |
Contest ADIF ID (machine-readable contest identifier) |
· IARU HF |
Contest display name — shown when different from the ID |
45 QSOs |
Total QSOs logged in this contest session |
Started 16:13 |
Time of the first QSO in the contest today |
Last 14:04 ago |
Time since the most recent contest QSO |
Next #45 |
Serial number that will be sent for the next QSO |
On 2:41 |
Total on-air time — sum of inter-QSO gaps shorter than 30 minutes |
The “Started” field hides on narrow terminals (below 120 columns). The contest name and on-air time hide below 100 columns.
When a contest is active and your terminal is wide enough, a compact statistics panel appears to the right of the QSO form with a yellow border:
╭──────────────────────────────────╮
│ Rate 2/h --/h │
│ Count 60m 0 hr 0 │
│ Peak 1m120 10m 54 60m 29 │
│ Avg 8/h Sess 5:36 │
│ QSO/min last 60m max 1 │
│ │
│ │
│ │
│ │
│ -60m now │
╰──────────────────────────────────╯
| Row | Field | Meaning |
|---|---|---|
| Rate | 2/h |
Rate over the last 10 QSOs — short-term burst speed |
--/h |
Rate over the last 100 QSOs — shows -- until 100 QSOs are logged |
|
| Count | 60m 0 |
QSOs logged in the last 60 minutes |
hr 0 |
QSOs logged in the current clock hour (since :00) |
|
| Peak | 1m120 |
Best 1-minute rate: 120/h = 2 QSOs in that minute |
10m 54 |
Best 10-minute sliding window: 54/h average | |
60m 29 |
Best 60-minute sliding window: 29/h average | |
| Avg | 8/h |
Session average — total QSOs ÷ hours since the first QSO |
Sess 5:36 |
Total session duration from first to last QSO (H:MM or minutes only) | |
| Chart | max 1 |
Busiest minute had 1 QSO. Bars show QSOs per minute |
-60m…now |
Left edge = 60 minutes ago, right edge = right now |
The chart uses Unicode block characters (█) scaled to 4 rows of vertical bars. Peak rates drop the /h suffix since “Peak” already implies “per hour”. All durations drop seconds — per-minute refresh makes them noise.
To submit your contest log, open the Logbook Editor (Ctrl+E) while a contest is active. When a contest filter is applied, the ADIF export dialog offers to export only the QSOs belonging to the active contest. This produces a standards-compliant ADIF 3.1.7 file with contest exchange fields, serial numbers, and the contest ADIF ID preserved — ready for upload to the contest organiser’s robot or log-checking system.
When a contest is active:
CONTEST_ID,Favorites store frequency, mode, and band presets in 3 slots — enough for your most-used calling frequencies. The shortcuts use Alt to avoid conflicts with standard terminal editing keys and work reliably across all terminal types.
| Shortcut | Action |
|---|---|
| Alt+Ins / Alt+Home / Alt+PgUp | Recall favorite from slot 1, 2, or 3 |
| Alt+Shift+Ins / Alt+Shift+Home / Alt+Shift+PgUp | Save current frequency, mode, and band to slot 1, 2, or 3 |
Favorites are stored in the configuration and are shared across logbooks.
Example:
145.55.FM.2m.Open REF Lookup with F6.
It searches:
You can search by prefix, name, or reference designator. Selected references can fill the QSO form.
Open the Band Plan Browser with F7.
It provides quick access to:
A selected frequency can be used to tune the active rig. Band plan data can also be exported as Markdown.
All integrations are optional. Local logging works without them.
CQOps supports multiple callbook providers with priority-based cascading. When you press Ins on the QSO form, providers are queried in order until one returns a result:
If higher-priority providers fail or are disabled, the next provider is tried. When Base call fallback is enabled (default: on), CQOps also tries the base callsign (without prefix or suffix) if the full call returns no match.
Enable and configure providers in F9 → Callbook.
On the QSO form, press Ins to fill callbook fields such as:
The Partner view on F2 can show the operator photo when available.
⚠️ Experimental. Photo display can use the Kitty terminal graphics protocol and requires a compatible terminal: Kitty, Ghostty, or WezTerm. Enable in F9 → General → Kitty Graphics. Standard terminals and SSH sessions without graphics passthrough will fall back to glyph photo.
Wavelog integration supports:
Wavelog is configured per active logbook with:
CQOps always saves QSOs locally first. Wavelog upload failure does not delete local data.
flrig integration uses XML-RPC over HTTP.
Default endpoint:
localhost:12345
CQOps can read:
Split operation maps VFO A to Frequency and VFO B to Freq RX.
Hamlib rig control uses the rigctld TCP daemon.
Depending on radio and backend support, CQOps can query:
CQOps handles missing VFO-name support gracefully where possible.
⚠️ Experimental. Rotator control is experimental. Always verify your antenna’s physical limits before operating. Be ready to stop movement immediately with Alt+/ . Use with caution — incorrect configuration can damage your rotor or antenna.
Rotor control uses Hamlib rotctld.
CQOps supports:
| Shortcut | Action |
|---|---|
| Alt+, | Adjust azimuth −5° |
| Alt+. | Adjust azimuth +5° |
| Alt+; | Adjust elevation +5° |
| Alt+’ | Adjust elevation −5° |
| Alt+\ | Point rotor to calculated path bearing |
| Alt+/ | Stop rotor |
WSJT-X integration uses UDP messages from WSJT-X. CQOps parses ADIF messages and can auto-log completed QSOs.
The rig label becomes accent-colored while WSJT-X is transmitting. If the operator reported by WSJT-X does not match the active operator, CQOps shows a warning.
CQOps can read position from a GPS receiver and use it as the station grid locator — ideal for portable, mobile, or field operations.
Two backends are supported:
/dev/ttyUSB0).127.0.0.1:2947). Useful when the GPS is shared with other
applications or accessed over the network.The GPS status indicator in the status bar shows:
| Colour | Meaning |
|---|---|
Red GPS |
Disconnected / error |
Yellow GPS |
Connected, no fix yet |
White GPS |
Fix acquired, position locked |
When a fix is acquired, the station grid locator is replaced with the
GPS-derived position and marked (GPS) in the status line:
Rig SSB - FTDx10/Dipole · Grid JO62TJ43PL (GPS)
Enable Grid from GPS in the Station & Logbook settings to use the GPS grid for QSO logging, APRS beacons, the dashboard map, and distance calculations.
Grid precision — configurable in the Integration menu (10, 8, or 6 characters). Default is 10-char (~25 m accuracy). The grid is always computed at full precision internally and truncated to the configured length at the usage layer.
DX Cluster integration uses telnet and requires internet access.
Default server:
dxspots.com:7300
Filters include:
| Key | Action |
|---|---|
| Enter | Fill QSO form, tune rig, and return to QSO |
| Space | Tune rig and stay on DX Cluster |
| Backspace | Clear filters |
When the DX Cluster is connected, the QSO form gains two extra capabilities:
PSK Reporter integration requires internet access. It is an excellent tool for quickly checking real-world propagation — see who is hearing your signal (or who you can hear) on any band, right now.
It provides:
CQOps supports three APRS service types — choose the one that matches your station setup:
| Service | Connection | Internet required |
|---|---|---|
| APRS-IS | TCP to an APRS-IS server | Yes |
| KISS | Serial port to a hardware KISS TNC | No |
| KISS Server | TCP to a KISS TNC server (e.g. Dire Wolf) | No (local network) |
Select the service type in the Integrations menu:
F9 → Integrations → APRS → Service (Space to cycle)
All three services support receiving APRS position reports from nearby stations and displaying them on the CQOps Live local map with:
All services also support periodic position beaconing. CQOps transmits your station’s grid locator at the configured interval. When GPS is active and Grid from GPS is enabled, the beacon automatically uses the GPS-derived position — ideal for portable and mobile operation.
Connects to the global APRS-IS network over the internet. Requires:
Default server:
euro.aprs2.net:14580
APRS-IS is configured globally under F9 → Integrations → APRS. Per-logbook callsign, SSID, symbol, comment, beacon interval, and range filter are set under F9 → Logbooks → [active logbook] → APRS.
Connects directly to a hardware KISS TNC over a serial port. No internet connection is required — APRS frames are sent and received through your radio.
Configure the serial port, baud rate, data bits, parity, stop bits, and DTR/RTS in the Integrations menu:
F9 → Integrations → APRS → Service: KISS
When KISS is selected, serial-specific fields (Port, Baud, Data bits, Parity, Stop bits, DTR, RTS) become visible.
The Test button opens the serial port to verify the TNC is reachable.
Connects to a KISS TNC accessible over TCP — for example, a Dire Wolf instance running on the same machine or on the local network. No internet connection is required.
Enter the host and port in the Integrations menu:
F9 → Integrations → APRS → Service: KISS Server → Host / Port
Defaults: 127.0.0.1:8001
Beacons are sent at the interval configured per logbook. The minimum interval is 1 minute. The beacon includes:
When GPS is active and Grid from GPS is enabled in the Station settings, the beacon automatically uses the GPS-derived grid locator — no manual grid update is needed while moving.
Beacon interval and other per-logbook settings are configured under:
F9 → Logbooks → [active logbook] → APRS
Received APRS position reports are cached locally and displayed on the CQOps Live dashboard map. Stations are shown with their APRS symbols and can be clicked for details. The display auto-fits to show all visible stations within the configured range.
APRS receive is independent of beacon transmit — you can receive without sending a beacon, and vice versa. Simply enable APRS in the Integrations menu and set the service type.
Solar data comes from hamqsl.com and includes:
Live updates require internet access. Cached data remains available offline after a successful fetch.
CQOps Live is a built-in browser dashboard for real-time station activity.
It is useful for:
Default settings:
| Setting | Default |
|---|---|
| Address | 0.0.0.0 |
| Port | 8073 |
| Local URL | http://localhost:8073 |
The server starts immediately after saving.
Address binding: The default
0.0.0.0makes the dashboard accessible from any device on your local network — useful for field day displays, club station screens, or checking the station from another room. Set the address to127.0.0.1to restrict access to the local machine only.
CQOps Live has two display modes.
Shown when no active callsign is being worked.
It displays:
Shown when a callsign is being worked.
It displays:
The info box above the local map cycles every 5 seconds through modules:
The weather row shows current Open-Meteo conditions for the station grid locator:
Weather data is fetched browser-side and degrades gracefully when offline.
The right-side local map is dedicated to APRS neighbourhood monitoring — see who is on APRS around your station. It can show:
CQOps Live updates through Server-Sent Events (SSE). No page refresh is needed.
The dashboard is designed for low-power hardware:
In the HTTP Server integration form, you can configure:
| Field | Description |
|---|---|
| Header 1 | Main title shown in the page header and hero area. Falls back to “CQOps Live”. |
| Header 2 | Subtitle below the title. Falls back to “Less clicking. More radio.”. |
| Logo URL | Publicly accessible image URL shown in the top-left corner. Falls back to the CQOps logo. |
| Event Start | Date in YYYY-MM-DD format. Filters stats and QSO lists from that date onward. |
Open configuration with F9.
| Platform | Config path |
|---|---|
| Linux / macOS | ~/.config/cqops/config.yaml |
| Windows | %APPDATA%\cqops\config.yaml |
Sensitive credentials are stored separately in secrets.enc in the same configuration directory.
Secrets are encrypted with a machine-tied key. When moving configuration to another machine, credentials must be entered again.
Press F9 to open the main menu, then select:
| Menu | Configures |
|---|---|
| General | Units, timezone, partner map/picture, solar panel, SCP/REF data sources, Kitty graphics, debug mode |
| Logbooks | Station callsign, grid, references, CQ/ITU zones, IARU region, GPS grid; per-logbook Wavelog (URL, API key, station profile); per-logbook APRS (callsign, symbol, beacon, range) |
| Operators | Operator callsign and name profiles for multi-operator stations |
| Rigs | Rig presets: model, antenna, power, backend (None/flrig/Hamlib), rotor, WSJT-X UDP |
| Contests | Contest profiles: name, date, ADIF contest ID, exchange templates, starting serial number |
| Integration | DX Cluster, HTTP server for dashboard, GPS, APRS, Solar, PSK Reporter |
| Callbook | QRZ.com, HamQTH, QRZ.RU, Callook.info providers; priority ordering, base-call fallback, Wavelog lookup |
| Notifications | QSO saved alerts, Wavelog QSO sent status, dupe beep, error sounds |
Use multiple logbooks for home, portable, contest, and club operation.
Press Ctrl+L to cycle the active logbook.
Each logbook keeps its own:
Operator profiles contain:
Press Ctrl+O to cycle the active operator.
The active operator is saved in the ADIF OPERATOR field and follows Wavelog uploads.
Rig presets store:
Press Ctrl+R to cycle the active rig.
Since v0.8.7, credentials are stored encrypted.
| Item | Value |
|---|---|
| Secrets file | secrets.enc |
| Location | Same directory as config.yaml |
| Unix permissions | 0600 where supported |
| Encryption | AES-256-GCM with a machine-tied key |
| Protected data | QRZ password, DX Cluster login, Wavelog API keys |
Plaintext secrets from older configs migrate on first run.
If secrets.enc is corrupted, CQOps starts with a warning and asks you to re-enter credentials.
| Key | Action |
|---|---|
| F1 | QSO form and Recent QSOs |
| F2 | Partner view |
| F4 | DX Cluster |
| F5 | PSK Reporter |
| F6 | REF Lookup |
| F7 | Band Plan Browser |
| F8 | Logbook Editor |
| F9 | Configuration / main menu |
| F10 | Quit |
| Ctrl+F9 | Log viewer |
| ? | Help overlay |
| Ctrl+L | Cycle active logbook |
| Ctrl+R | Cycle active rig |
| Ctrl+C | Cycle active contest |
| Ctrl+O | Cycle active operator |
| Esc | Back to previous screen |
| Key | Action |
|---|---|
| Tab | Next field |
| Shift+Tab | Previous field |
| ↑ / ↓ | Move within column |
| Enter | Save QSO, with duplicate confirmation if needed |
| Del | Clear all form fields |
| Ins | Lookup: Callbook, Wavelog, DXCC, and duplicate check |
| PgUp / PgDn | Cycle band, mode, or submode |
| Ctrl+S | Send DX spot from filled form |
| Ctrl+P | Fill call from nearest DXC spot |
| Ctrl+C | Cycle active contest |
| Alt+, | Adjust rotor azimuth −5° |
| Alt+. | Adjust rotor azimuth +5° |
| Alt+; | Adjust rotor elevation +5° |
| Alt+’ | Adjust rotor elevation −5° |
| Alt+\ | Point rotor to bearing from own grid to partner grid |
| Alt+/ | Stop rotor |
| Alt+Ins / Alt+Home / Alt+PgUp | Recall favorite (slot 1/2/3) |
| Alt+Shift+Ins / Alt+Shift+Home / Alt+Shift+PgUp | Save frequency, mode, band to favorite |
| Key | Action |
|---|---|
| ↑ / ↓ | Navigate rows |
| PgUp / PgDn | Previous or next page |
| Home / End | First or last row |
| Enter / e | Edit selected QSO |
| Delete | Delete selected QSO |
| p | Purge all QSOs |
| Ctrl+C | Cycle contest filter |
| Ctrl+E | Export ADIF |
| Ctrl+I / Tab | Import ADIF |
| w | Upload unsent QSOs to Wavelog |
| Ctrl+W | Download contacts from Wavelog |
| Esc / F6 | Close editor and return to QSO form |
| Key | Action |
|---|---|
| ↑ / ↓ | Navigate spots |
| Enter | Fill QSO form, tune rig, and return to QSO |
| Space | Tune rig to selected spot and stay on DX Cluster |
| Home | Cycle band filter forward |
| End | Cycle band filter backward |
\ |
Cycle spotter continent filter |
| Ins | Cycle mode filter forward |
| Del | Cycle mode filter backward |
| PgUp | Cycle time filter forward |
| PgDn | Cycle time filter backward |
| Backspace | Clear all filters |
| Esc / F4 | Return to QSO form |
| Key | Action |
|---|---|
| F2 | Cycle Partner view → Photo → Back |
| Esc / F1 | Return to QSO form |
Check:
network startup is not blocking by trying:
cqops --offline
Check logs:
| Platform | Logs path |
|---|---|
| Linux | ~/.local/share/cqops/logs/ |
| macOS | ~/Library/Application Support/cqops/logs/ |
| Windows | %APPDATA%\cqops\logs\ |
For flrig:
12345.For Hamlib:
rigctld is running,Status labels help diagnose the issue:
| Color | Meaning |
|---|---|
| White/default | Connected |
| Yellow | Disabled or connecting |
| Red | Failed |
Reconnect toasts may be suppressed. CQOps can retry silently.
Check:
Check:
Upload errors are shown as toasts. QSOs remain saved locally even when upload fails. Individual QSO failures do not block the rest of the upload batch.
Config file:
| Platform | Path |
|---|---|
| Linux / macOS | ~/.config/cqops/config.yaml |
| Windows | %APPDATA%\cqops\config.yaml |
Secrets file:
secrets.enc
The secrets file is stored in the same directory as config.yaml.
If the config is corrupted, move or delete it and restart CQOps. The setup wizard will create a fresh config.
The last_fetched_id field appears only after a successful Wavelog download.
Try:
cqops --offline when the network is unreliable.Before reporting a bug:
Enable Debug mode in F9 → General → Debug, or set:
debug: true
in config.yaml.
Report issues on GitHub:
https://github.com/szporwolik/cqops/issues
Include:
cqops --version,