From 99599458ff1aad9d8cf66bd0c804973c0cfe2823 Mon Sep 17 00:00:00 2001 From: Gregory Salaun Date: Sun, 16 Aug 2026 14:07:38 +0200 Subject: [PATCH] docs(wiki): cover the recent work, with worked examples MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Asked for the wiki to catch up, and to be explicit — examples rather than descriptions. New page and six rewritten sections. Recent QSOs and Filters, the page named in the request: the right-click menu is now a table of what every entry does, and the filter builder has five worked multi-criteria filters written out field by field, each ending in what you then do with the result. Including the distinction that prompted it — "export selected" takes the highlighted rows, "export filtered view" takes every QSO the filter matched, and after building a filter it is the second one you want. Plus the traps: ADIF date format, and "is empty" not being "equals N". Connections (new): the page for a settings section that had none. What OpsLog listens to and sends, which outbound row another logger actually wants — a logger asking for "WSJT-X UDP" discards a bare ADIF record — the custom-message triggers with their placeholder lists, three worked examples, and the port-clash warning that produced this week's CAT-drop report. Amplifiers and Switches: the generic HTTP relay in full — per-relay URLs, the pattern form, {relay}, {relay-1} and {value} with what each one sends — relay automatic control with a four-relay antenna-switch example, and the bench power supply including why OpsLog writes only its output. Rotators: the two new native types (SPID with the Rot1Prog/Rot2Prog choice, DCU-1), two-rotor setups, and that Test only reads the heading on the types where it does. Awards: the US county database, and the difference between the automatic fill (blanks only) and the right-click re-derive (replaces) — with the Connecticut planning regions, which is the case that needs it. QSL Management: QSL_VIA against QSL_SENT_VIA/QSL_RCVD_VIA, why an import shows E on every Log4OM record, and that V counts as confirmed. Troubleshooting: the three field reports of the last few days, by symptom. Every [[link]] checked to resolve. --- wiki/Amplifiers-and-Switches.md | 136 +++++++++++++++++++++++++++- wiki/Awards.md | 37 ++++++++ wiki/Connections.md | 156 ++++++++++++++++++++++++++++++++ wiki/DX-Cluster-and-Spots.md | 17 ++++ wiki/Maps-and-Antennas.md | 41 +++++++-- wiki/Profiles-and-Databases.md | 10 ++ wiki/QSL-Management.md | 32 +++++++ wiki/Recent-QSOs-and-Filters.md | 127 ++++++++++++++++++++++++-- wiki/Troubleshooting.md | 37 ++++++++ wiki/_Sidebar.md | 1 + 10 files changed, 574 insertions(+), 20 deletions(-) create mode 100644 wiki/Connections.md diff --git a/wiki/Amplifiers-and-Switches.md b/wiki/Amplifiers-and-Switches.md index 36dce3c..0774489 100644 --- a/wiki/Amplifiers-and-Switches.md +++ b/wiki/Amplifiers-and-Switches.md @@ -55,6 +55,8 @@ Over TCP / GSCP — a docked **A/B antenna-switch** widget: Configure the host / password in Settings → Antenna Genius. +--- + ## Relay boards (Station Control) Relay boards for antenna/accessory switching, with named buttons in Station @@ -68,11 +70,139 @@ Control: web page — a factory board needs neither. - **Denkovi** USB (4/8 relays, FT245) and generic **CH340 / LCUS** USB-serial boards. +- **HTTP relay (home-made / generic)** — see below. -A Test-connection button and detection feedback live in the setup panel. +### HTTP relay (home-made / generic) + +For any box that switches on a plain HTTP GET: an ESP8266 with a web page, a +Shelly, a Sonoff on third-party firmware, a qro.cz board, a home-brew switch. +Pick the relay count, name the relays, and give the addresses. + +There is **no Host field and no connection test**. This device type has no +address of its own — each relay carries its own full URL, and they need not +even be on the same box. Nothing is read back either: OpsLog remembers what it +commanded, so after a restart each managed relay is re-commanded once. + +**Two ways to give the addresses**, and you can mix them. + +**A — one URL per relay.** The reason this type exists: a hand-made switch +often has addresses with nothing in common between channels. + +| Relay | ON URL | OFF URL | +|---|---|---| +| 1 | `http://192.168.1.9/FF0101` | `http://192.168.1.9/FF0100` | +| 2 | `http://192.168.1.9/relay2/on` | `http://192.168.1.9/relay2/off` | + +**B — one pattern for the whole board**, with the relay number filled in: + +``` +ON pattern: http://192.168.1.9/relay?n={relay}&state=on +OFF pattern: http://192.168.1.9/relay?n={relay}&state=off +``` + +#### Substitutions + +| In a URL or a pattern | Becomes | +|---|---| +| `{relay}` | the relay number, 1-based | +| `{relay-1}` | the relay number counting **from zero** — for boards whose channels are 0, 1, 2… | +| `{value}` | **that relay's label**, from the *Relay labels* row below | + +`http` may be left off — it is assumed. `https` works and is used as typed. + +`{value}` is for a switch addressed by antenna name rather than by channel +number. Name relay 1 **Ant1**, and: + +``` +Per-relay ON URL for relay 1: http://10.10.10.100/relay?on={value} +Sent: http://10.10.10.100/relay?on=Ant1 +``` + +Rename the antenna and the address follows it — the name on the button and the +name on the wire cannot drift apart, because they are the same text. A label +with a space or an accent is percent-encoded automatically. A relay whose URL +uses `{value}` **must have a label**; the editor warns you while you type. + +A per-relay URL always wins over the pattern, so you can write a pattern for +the seven ordinary channels and one full URL for the odd one out. + +### Manual switching + +Every relay is a button in **Station Control** — click to toggle. The generic +HTTP board is never greyed out (there is no connection to wait for); the other +types are enabled once the board answers. + +--- + +## Relay automatic control + +Settings → **Relay automatic control** turns relays by frequency or band, the +equivalent of PstRotator's automatic control. Each relay of each configured +board gets a rule: + +| Mode | Meaning | +|---|---| +| **Off** | OpsLog never touches this relay. | +| **Band** | ON while the current band is one of the bands you tick. | +| **Frequency** | ON while the frequency is inside a kHz range you type. | + +Example — a three-way antenna switch on a KMTronic board: + +| Relay | Label | Mode | Setting | +|---|---|---|---| +| 1 | Beam 20-10 | Band | 20m, 17m, 15m, 12m, 10m | +| 2 | 40 m dipole | Band | 40m | +| 3 | 80 m inverted-V | Band | 80m, 160m | +| 4 | 6 m preamp | Frequency | 50000 – 54000 kHz | + +Rules to know: + +- A relay is only switched when it is **not already** in the wanted position. + On the first evaluation after launch OpsLog reads the boards' live state, so + a relay already correct is left alone rather than clunking. +- An **unknown** frequency or band changes nothing. When CAT disconnects the + frequency reads zero, and treating that as "out of range" would switch every + relay off. +- The rules follow **your radio**. Changing band in the QSO entry strip drives + the rig, the rig reports back, and the relays follow. **Without a CAT + connection** the Band selector itself is the band change, and the relays + follow that instead — unless the band or frequency 🔒 is on, which means the + entry is deliberately decoupled from the rig (logging an old contact) and no + hardware should move. + +For a switch driven by a URL or a UDP message rather than by a relay board, see +[[Connections]]. + +--- + +## Bench power supply + +Settings → **Power supply**. A programmable supply on a serial port speaking +**Modbus RTU** — BSIDE, Wanptek and the other supplies that use function codes +03 and 06. + +Give the COM port. The other two fields are the factory settings and only need +changing if you changed them on the supply: **9600 baud**, **Modbus address 1** +(8 data bits, no parity, 1 stop bit). + +A card appears in **Station Control**: an **Output** on/off button, the measured +volts / amps / watts, and — in small type — the voltage and current the supply +is *set* to. That pairing is the useful part: `13.80 V set` beside `0.020 A` +says at a glance that the supply is on and the radio is drawing nothing. + +> **OpsLog only ever writes the output on/off.** The supply's register map also +> exposes the voltage and current set points and the three protection trip +> levels, and none of them belong to a logbook — a wrong value there is 30 V +> where a radio expected 13.8. They are read and displayed, never changed. +> Set them on the supply's own front panel. + +If the protection has tripped, the card says so with the supply's status word. + +--- ## 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. +the window — amplifier(s), tuner, relays, rotator, power supply, Ultrabeam… +Drag a panel by the grip on its left edge to reorder; the order is remembered. +A column-count selector (Auto / 1–6) caps how many sit side by side. diff --git a/wiki/Awards.md b/wiki/Awards.md index aec332c..c6b8ddb 100644 --- a/wiki/Awards.md +++ b/wiki/Awards.md @@ -163,3 +163,40 @@ built-in award without fear of a future release overwriting it. **Rescan** re-pulls the logbook and recomputes — it picks up fresh LoTW / QRZ / eQSL confirmations (see [[QSL Management]]). + +--- + +## US counties (CQ USA-CA) + +A county award needs a county on every US QSO, and most logs do not have one: +neither the callsign nor the prefix carries it, and few operators send it. + +**Settings → US counties** downloads the FCC **ULS** database — every US +amateur licence with its address — and builds a local index of callsign → +county + grid. It is a few hundred megabytes to fetch and takes a few minutes; +once built it works offline and needs no key. + +With it downloaded: + +- A **new US QSO** gets its county (and grid, if you have none) filled in + automatically — **only where the field is empty**. A value you or QRZ + supplied is never overwritten: the ZIP-derived county is about 98 % right and + the one you logged is usually better. +- **Right-click → Update US county from the ULS database** re-derives the + county of the selected contacts and **replaces** what is stored. That is the + deliberate opposite of the automatic pass, and it is the way to correct + counties already in the log — see the Connecticut note below. Contacts + outside the US, and callsigns the database does not hold, are left alone. + The entry only appears once the database is downloaded. + +### Connecticut + +Connecticut **abolished its eight counties** for statistical purposes in 2022; +the Census Bureau replaced them with nine **planning regions**. CQ USA-CA still +uses the old county names, so OpsLog maps a Connecticut address back to its +legal county. + +If your database was built by an older OpsLog, the Settings panel says so and +offers a refresh — a download date alone cannot show it, because a database +fetched yesterday by an older version still holds the wrong Connecticut +counties. After refreshing, use the right-click update on your CT contacts. diff --git a/wiki/Connections.md b/wiki/Connections.md new file mode 100644 index 0000000..32ea4c8 --- /dev/null +++ b/wiki/Connections.md @@ -0,0 +1,156 @@ +# Connections + +Settings → **Connections** is where OpsLog talks to other programs and to +hardware over the network: what it **listens** to, what it **sends**, and +messages you write yourself. + +It was called *UDP* until it grew a second transport — a row can now send an +**HTTP GET** instead of a datagram, which is what most home-made antenna +switches understand. + +Each row has a name, a direction, a service type, a port, and an on/off switch. +**Everything sent and received is written to the application log**, so a row +that does not work can be diagnosed rather than guessed at — see +[[Troubleshooting]] for where the log lives. + +--- + +## Inbound — what OpsLog listens to + +| Service | Sends it | Use | +|---|---|---| +| **WSJT-X / JTDX / MSHV** | those programs, port 2237 | Log their QSOs automatically, follow the DX call being worked, and show their decodes. Multicast is normal here. | +| **ADIF over UDP** | JTAlert, GridTracker, FLDIGI | A text ADIF record per logged QSO. | +| **N1MM Logger+** | N1MM | Its XML contact record. | +| **Remote callsign** | DXHunter and similar | A callsign — and optionally a frequency and mode — to load into the entry form and tune to. | + +### Multicast or unicast? + +WSJT-X and MSHV normally broadcast to a **multicast group** (usually +`239.255.0.1`) so several programs can hear them at once. Tick *Multicast* and +give the group. A program sending to one address only needs unicast — leave it +unticked. + +> **Do not put an inbound row and an outbound row on the same port.** OpsLog +> then receives its own messages, and something it publishes can come back as a +> command. It says so in the log when it spots the arrangement: +> *"X sends on port 2241 and Y listens on it — OpsLog will receive its own +> messages there; give one of the two another port."* + +--- + +## Outbound — what OpsLog sends + +| Service | Format | Fires on | +|---|---|---| +| **ADIF message** | a plain ADIF record | each QSO logged | +| **WSJT-X logged QSO** | the same ADIF wrapped in a WSJT-X datagram | each QSO logged | +| **PstRotator frequency** | `` | frequency change | +| **N1MM RadioInfo** | N1MM's RadioInfo XML | frequency or mode change | +| **Custom message** | whatever you write | a trigger you pick | + +### Which one for another logger? + +If a logger says it accepts "WSJT-X UDP", it wants the **WSJT-X logged QSO** +row — it listens on the WSJT-X interface and silently discards a bare ADIF +record. Logger32 is the usual case. A logger that documents a plain ADIF +listener wants the **ADIF message** row instead. They are two rows because they +are two different things on the wire; enable the one your logger asks for, not +both, or the QSO arrives twice. + +--- + +## Custom messages + +The general case: **you choose when it fires, what it says, and how it leaves.** +This is how a home-made antenna switch, a relay box or a home-automation server +gets told what the station is doing. + +### 1. Pick the trigger + +| Trigger | Fires when | +|---|---| +| **QSO logged** | a contact is saved | +| **Band change** | the radio changes band — or, on a station with no CAT, the Band selector in the entry strip | +| **Rotator command** | the antenna is told to turn (compass, SP/LP buttons, a spot click) | +| **Lookup done** | a callbook lookup returns | + +### 2. Write the message + +Anything in `{braces}` is replaced. What is available depends on the trigger: + +| Trigger | Placeholders | +|---|---| +| QSO logged | `{call}` `{band}` `{band_m}` `{mode}` `{grid}` `{name}` `{country}` `{rst_s}` `{rst_r}` `{comment}` `{date}` `{time}` `{freq_hz}` `{freq_mhz}` `{dxcc}` | +| Band change | `{band}` `{band_m}` `{mode}` `{freq_hz}` `{freq_mhz}` | +| Rotator command | `{az}` `{el}` `{path}` (`SP`, `LP` or empty) | +| Lookup done | `{call}` `{name}` `{grid}` `{country}` `{qth}` `{state}` `{dxcc}` | + +`{band}` is `20m`; `{band_m}` is just `20`, because an antenna switch usually +wants the number and nothing else. + +### 3. Choose the transport + +- **UDP** — a datagram to an address and port. You choose the line ending. +- **URL** — an HTTP GET. Values are URL-encoded automatically. + +### Examples + +**Turn an antenna switch on every band change, over HTTP:** + +``` +Trigger: Band change +Transport: URL +URL: http://192.168.1.50/set?band={band_m} +``` +20 m → `http://192.168.1.50/set?band=20` + +**Tell a rotator display where the antenna is going:** + +``` +Trigger: Rotator command +Transport: UDP → 192.168.1.77:8100 +Message: {az}{path} +``` + +**Announce each QSO to a shack dashboard:** + +``` +Trigger: QSO logged +Transport: URL +URL: http://homeassistant.local:8123/api/webhook/qso?call={call}&band={band}&mode={mode} +``` + +> Credentials in a URL are sent as typed — this is meant for a LAN. Passwords +> are **redacted in the log** so a log file can be shared safely. + +### When a band change is a band change + +The Band-change trigger follows **the radio**, because an antenna switch should +follow the radio and not what is being typed. Changing band in the entry strip +drives the rig, the rig reports the new band, and the trigger fires from that. + +On a station whose rig OpsLog does not control there is nothing to report back, +so the **Band selector itself** counts as the band change. The 🔒 lock on Band +or Frequency suppresses it: a lock means the entry is deliberately decoupled +from the rig, and nothing should move for a contact logged from last year. + +--- + +## Diagnosing a row that does nothing + +The log names every message. In order, check: + +1. **Is the row enabled?** The list shows it. +2. **`udp: Reload done — N server(s) running`** at startup, and one + `cfg id=… name=… dir=… service=… port=…` line per row. A row that failed to + start is listed with its error. +3. **Outbound:** `udp: [NAME] sent N bytes to ADDRESS (service)` for a datagram, + or the URL for an HTTP row. +4. **A message that renders empty is skipped** and the log says so — usually a + placeholder that the trigger does not provide. +5. **`a QSO was logged but no outbound "ADIF message" row is enabled`** — the + answer to "why does my other logger get nothing". + +See also: [[Amplifiers and Switches]] for relay boards and their own automatic +control, and [[DX Cluster and Spots]] for spot sources. diff --git a/wiki/DX-Cluster-and-Spots.md b/wiki/DX-Cluster-and-Spots.md index aaa5dd3..b8ed199 100644 --- a/wiki/DX-Cluster-and-Spots.md +++ b/wiki/DX-Cluster-and-Spots.md @@ -56,3 +56,20 @@ A **DXHunter** remote-call UDP packet fills the callsign, and when it carries [[Settings and Data]] for the UDP configuration. See also: [[Maps and Antennas]] for turning the beam to a spot. + +## When the list looks empty + +If spots are arriving and none are shown, the panel says so, names the filters +responsible and offers a button to clear them all. The two easiest to forget are +the **band and mode locks** (🔒), because they follow the radio rather than a +click — with the rig on 20 m SSB and both locked, a hundred spots on other bands +show nothing. + +Filter selections are remembered between sessions; a fresh installation starts +with none set. + +## Spotting + +When you send a spot, the comment carries the mode and then the **award +references you have assigned** to that contact — the ones on the QSO, not the +ones OpsLog would compute for it. diff --git a/wiki/Maps-and-Antennas.md b/wiki/Maps-and-Antennas.md index 183646d..432ad4a 100644 --- a/wiki/Maps-and-Antennas.md +++ b/wiki/Maps-and-Antennas.md @@ -23,14 +23,41 @@ portable contacts. No API key. ## Rotators An azimuthal-equidistant **click-to-turn** compass; the current heading and -target are shown. Three rotator types (Settings → Rotator): +target are shown. The needle follows a turning antenna smoothly — OpsLog polls +faster while the position is changing and backs off once it is parked. -- **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. +**Two rotors** can be configured (two towers, or a Rotator Genius driving two). +A Rotor 1 / 2 selector appears on the compass; OpsLog turns and displays the +one you pick. + +### Types (Settings → Rotator) + +| Type | Connection | Notes | +|---|---|---| +| **PstRotator** | UDP | Enable PstRotator's UDP listener (Setup → Communication → UDP). | +| **Rotator Genius** (4O3A) | TCP, port 9006 | Native. *Rotator #* picks which of the two the box drives; *Two rotors* adds the second as its own rotor. | +| **microHAM ARCO / GS-232A** | LAN or USB | Set the controller's CONTROL PROTOCOL to *Yaesu GS-232A*. An **ERC** must be in GS-232 emulation, **not** Hy-Gain DCU-1. | +| **Hy-Gain DCU-1** | COM port or serial-over-IP | RotorCard DXA, Idiom Press Rotor-EZ, Green Heron. Azimuth only. A DCU-1 is 4800 baud; others may differ — match the controller. | +| **SPID / AlfaSpid** | COM port | Native, so PstRotator is not needed in between. See below. | + +### SPID / AlfaSpid + +Pick the dialect to match the controller — they are not interchangeable: + +- **Rot2Prog** — RAS, BIG-RAS/HR, MD-01, MD-02. Azimuth **and** elevation. + 600 baud. +- **Rot1Prog** — the older azimuth-only controllers (RAK, RAU). 1200 baud. + +The two use different frame lengths, so a wrong choice shows up at once: the +**Test** button reports a reply of the wrong length rather than leaving you to +find out when the antenna turns oddly. + +Two towers means two controllers, each on its own COM port and each a separate +rotor in OpsLog. + +> **The Test button on a SPID, an ARCO or a DCU-1 only READS the heading** — it +> confirms the port, the speed and the dialect without moving anything, and +> says so. (PstRotator and a Rotator Genius are instead sent a move to 0°.) ## Motorized antennas (Ultrabeam / SteppIR) diff --git a/wiki/Profiles-and-Databases.md b/wiki/Profiles-and-Databases.md index 370112f..ba576bb 100644 --- a/wiki/Profiles-and-Databases.md +++ b/wiki/Profiles-and-Databases.md @@ -51,3 +51,13 @@ This is also what powers [[Multi-Operator Live Status]]. Optional **database + ADIF backup at shutdown** (Settings → Backup). Regardless, copying the `data/` folder backs up your settings and local logbook. See [[Settings and Data]]. + +## What follows the active profile + +Every setting is per profile, station hardware included. Switching profile +reconnects the **CAT link**, the **amplifiers**, the **motorized antenna**, the +**Antenna Genius** and the **tuner** using the new profile's settings — so an +operator with, say, an SPE on COM9 for HF and another on COM10 for 6 m gets the +right one by switching profile, with no visit to Settings. + +The Winkeyer is deliberately left alone: you connect it explicitly. diff --git a/wiki/QSL-Management.md b/wiki/QSL-Management.md index 091ae53..6ba3bab 100644 --- a/wiki/QSL-Management.md +++ b/wiki/QSL-Management.md @@ -34,6 +34,38 @@ auto-refreshes the **award** stats. - **LoTW upload** goes through **TQSL** (ARRL's signer) — set the TQSL path and station location in Settings. +## Paper QSL: sent, received, and how + +The QSL Manager's paper form sets four things on a batch at once — the sent +status and date, the received status and date — plus **how the card travelled**, +in each direction. + +Two ADIF fields are involved and they are **not** the same thing: + +| Field | Holds | Example | +|---|---|---| +| `QSL_VIA` | the **manager's callsign** | `M0OXO` | +| `QSL_SENT_VIA` / `QSL_RCVD_VIA` | **how the card travelled** — an enumeration | `B` bureau · `D` direct · `E` electronic | + +Some loggers write the routing into the manager field, and OpsLog's own older +versions wrote the words "Bureau" / "Direct" / "Electronic" there too. If your +log has a mixture, OpsLog offers a **repair** — it tells you how many QSOs are +affected **before** it changes anything, and it only moves values that are +unmistakably a routing method (a manager is a callsign, never one of those six +words). + +On **import**, the two fields are kept apart and nothing is invented: a file +without a routing gives an empty routing. If you see `E` on every imported QSO +it came from the file — Log4OM writes `QSL_SENT_VIA:E` on every record whether +a card was ever sent. To clear them, filter the imported QSOs and use +**Bulk edit field** with an empty value ([[Recent QSOs and Filters]]). + +## Confirmed means Y or V + +A LoTW confirmation can come back as **V** (verified) rather than **Y**. Both +count as confirmed — in the awards, the band/mode matrix, the slot statistics, +the row colours and the QSL Info tab alike. + ## E-mail eQSL Right-click a QSO → **Send eQSL by e-mail** via the configured SMTP account. The diff --git a/wiki/Recent-QSOs-and-Filters.md b/wiki/Recent-QSOs-and-Filters.md index 44a3b6b..f0a1ad2 100644 --- a/wiki/Recent-QSOs-and-Filters.md +++ b/wiki/Recent-QSOs-and-Filters.md @@ -2,29 +2,64 @@ ## The Recent QSOs grid -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; widths, order and hidden columns are saved (per profile), -with a separate layout for the narrower Main-tab pane. +The main log table. Double-click a row to edit; **right-click** for everything +else (see [The right-click menu](#the-right-click-menu) below). Columns are +configurable — click **Columns** to choose 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. + blue, **V** (verified) green — a LoTW contact marked *V* counts as confirmed + everywhere, like *Y*. - 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. +A QSO logged from **WSJT-X, MSHV, JTDX or a net** appears here immediately, not +when its auto-upload eventually goes out. That matters if you use a *delayed* +upload to leave yourself time to correct a contact before it is sent. + ### 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. +--- + +## The right-click menu + +Select one or more rows, right-click, and the menu acts on **the whole +selection**. Right-clicking a row that is not selected selects it first, so a +single right-click on one QSO always does what it looks like it will. + +| Entry | What it does | +|---|---| +| **Fix country & zones from cty.dat** | Re-derives DXCC, continent, CQ and ITU zones from the prefix database. Use after a cty.dat update, or on QSOs imported without zones. | +| **Update from the callsign databases** | Re-queries QRZ.com / HamQTH per QSO. A network round trip each — a progress bar appears. | +| **Update from ClubLog (exceptions)** | Applies Club Log's exception list: callsigns whose real entity is not what the prefix says. | +| **Update US county from the ULS database** | Re-derives the county of US contacts and **replaces** what is stored. Only appears once the county database is downloaded — see [[Awards]]. | +| **Send OpsLog QSL by e-mail** | Renders the [[QSL Card Designer]] card for that QSO and mails it. | +| **Bulk edit field…** | One field, one value, on every selected QSO. Leaving the value **empty clears** the field. | +| **Export selected to ADIF / Cabrillo** | Just the rows you picked. | +| **Export selected — choose fields…** | Same, but you pick which ADIF fields go in the file. | +| **Export filtered view to ADIF / Cabrillo** | **Every QSO the current filter matches** — not only the rows on screen, and with no row limit. | +| **Send to QRZ / Club Log / HRDLog / eQSL / LoTW** | Uploads the selection now, whatever the automatic upload mode is. | +| **Delete…** | With a confirmation naming the count. | + +> **Exporting a filtered search is two different entries.** *Export selected* +> takes the rows you highlighted. *Export filtered view* takes the whole result +> of the filter, including the QSOs scrolled off the bottom. When you have just +> built a filter and want the lot, it is the second one. + +--- + ## Advanced filter builder -Click the filter button to open the **QSO filter builder** (Log4OM-style): +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 @@ -32,12 +67,84 @@ Click the filter button to open the **QSO filter builder** (Log4OM-style): - 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)**. +- Join the conditions with **ALL (AND)** or **ANY (OR)**. - Save named **presets** (they travel with the `data/` folder). -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. +A filter shows **every** match — the on-screen row limit only applies to the +unfiltered log (safety cap 10 000). + +### Worked examples + +Each of these is a few clicks in the builder. The point of the last column is +what you then do with the result. + +**1. Everything worked on 20 m in FT8 that is still unconfirmed on LoTW** + +| Join | Field | Operator | Value | +|---|---|---|---| +| ALL | `band` | equals | `20m` | +| | `mode` | equals | `FT8` | +| | `lotw_qsl_rcvd` | is empty | | + +→ right-click → **Export filtered view to ADIF**, and you have the file to +re-upload or to check against LoTW. + +**2. Paper cards sent but never answered, older than a year** + +| Join | Field | Operator | Value | +|---|---|---|---| +| ALL | `qsl_sent` | equals | `Y` | +| | `qsl_rcvd` | is empty | | +| | `qso_date` | less than | `20250816` | + +→ select all → **Bulk edit field** to mark them for a bureau chase, or export +them for a follow-up list. + +**3. Every contact with one entity, on any band, in a date range** + +| Join | Field | Operator | Value | +|---|---|---|---| +| ALL | `dxcc` | equals | `291` | +| | `qso_date` | greater or equal | `20260101` | +| | `qso_date` | less or equal | `20261231` | + +→ this is the shape for an award submission. Save it as a **preset** so next +year is one click and a date change. + +**4. Anything that might be a duplicate of tonight's run** + +| Join | Field | Operator | Value | +|---|---|---|---| +| ALL | `call` | contains | `DL` | +| | `band` | equals | `40m` | +| ANY | `qsl_sent` | equals | `Y` | +| | `lotw_qsl_sent` | equals | `Y` | + +Note the mix: the **ALL** block narrows to the contacts you care about, the +**ANY** block accepts a QSO confirmed by either route. + +**5. US contacts with no county recorded** + +| Join | Field | Operator | Value | +|---|---|---|---| +| ALL | `dxcc` | equals | `291` | +| | `cnty` | is empty | | + +→ select all → right-click → **Update US county from the ULS database**. + +### Tips + +- **Dates are ADIF dates**: `YYYYMMDD`, no separators. `20260816`, not + `16/08/2026`. +- **`is empty` is not the same as `equals N`.** A QSL that was never sent is + empty; one explicitly marked *not sent* holds `N`. Filters on confirmation + usually want *is empty*. +- To find what a field is called, show its column in the grid: the Columns + picker and the filter builder use the same ADIF names. +- A preset saves the conditions, not the results — it re-runs against the log + as it is today. + +--- ## Worked-before matrix diff --git a/wiki/Troubleshooting.md b/wiki/Troubleshooting.md index 70a5c28..7253cc4 100644 --- a/wiki/Troubleshooting.md +++ b/wiki/Troubleshooting.md @@ -76,3 +76,40 @@ selectable, with a copy button. Open an issue (or *Send log to F4BPO*) with: what you did, what happened, your radio/model, and the relevant log lines. + +## The rig disconnects during digital transmissions + +Symptom: with WSJT-X or JTDX set to **Fake It** split, the CAT link drops on +every over. Fake It shifts the dial for each transmission instead of using +split, so it changes the radio state twice per cycle. + +Check that **no inbound Connections row shares a port with an outbound one**. +If it does, OpsLog receives what it publishes, and its own frequency broadcast +can come back as a command to re-tune — a loop that fires on every dial shift. +The log names the clash at startup. Give one of the two rows another port. + +## A motorized antenna does not follow the rig + +Look for this line in the log: + + antenna: steppir connected, but TRACKING IS OFF in Settings — it will not + follow the rig, and only moves when you tune it by hand + +That is not a fault. Tracking is a setting (Settings → Antenna), and with it off +the antenna only moves when you tune it yourself. + +If the antenna genuinely stops answering, the log says so and reconnects on its +own: + + steppir: status query failed, reconnecting: read status: timed out … + steppir: reconnected after 2 failed attempt(s) + +## A rotator turns the wrong way + +On a **SPID**, check the dialect first: **Rot1Prog** for the azimuth-only +controllers (RAK, RAU) and **Rot2Prog** for the RAS / BIG-RAS / MD-01 / MD-02. +They use different frame lengths, and the wrong one is the usual cause of a +heading that reads correctly while every commanded move goes the long way round. + +Test with a **small** move first — from 45° to 50°, not to 180° — so a wrong +result cannot wrap the coax at the top of the tower. diff --git a/wiki/_Sidebar.md b/wiki/_Sidebar.md index 2e264fc..5e6b1a5 100644 --- a/wiki/_Sidebar.md +++ b/wiki/_Sidebar.md @@ -27,6 +27,7 @@ - [[Contest Logging]] - [[Net Control]] - [[Multi-Operator Live Status]] +- [[Connections]] **QSL & Awards** - [[Awards]]