docs(wiki): cover the recent work, with worked examples
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.
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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** | `<PST><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: <AZIMUT>{az}</AZIMUT><PATH>{path}</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.
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
+117
-10
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
- [[Contest Logging]]
|
||||
- [[Net Control]]
|
||||
- [[Multi-Operator Live Status]]
|
||||
- [[Connections]]
|
||||
|
||||
**QSL & Awards**
|
||||
- [[Awards]]
|
||||
|
||||
Reference in New Issue
Block a user