Skip to content

Set Up the LoTW Pipeline ​

LoTW (Logbook of The World) is the official ARRL system for QSO confirmations and is accepted for most DXCC, WAS, and WAZ awards. HAM-Tools uses the official CLI tool TQSL as a subprocess — you keep full control over certificates and station locations.

Time: 30 minutes the first time, after that uploads run in seconds.

Prerequisites

Phase 1 — Install TQSL.app (one-time) ​

HAM-Tools does not ship TQSL (ARRL licensing reasons). You install it yourself.

  1. Download: lotw.arrl.org/lotw-help/installation/ → "TQSL for macOS" (currently 2.8.x)
  2. Open the DMG, drag TQSL.app into the Applications folder
  3. First launch: Gatekeeper complains ("unverified developer"). Right-click → "Open" → "Open anyway".

tqsl 2.5+

HAM-Tools supports both tqsl ≥ 2.5 (configs in ~/.tqsl/) and older versions (configs in ~/Library/Application Support/TrustedQSL/). You don't have to decide — the picker finds both.

Phase 2 — Request and Import the ARRL Certificate ​

  1. In TQSL.app: Callsign Certificate → Request New Callsign Certificate
  2. Enter your callsign, country/DXCC, license period
  3. "Save Request" → creates a .tq5 file
  4. Submit it to ARRL by email (linked at the end of the wizard)
  5. ARRL mails a postcard to your license address with a verify code (that's why it can take 1–2 weeks)
  6. After their reply: TQSL.app → Callsign Certificate → Load Certificate → load the .tq6 file ARRL emails you
  7. When loading, you set a cert password — remember it!

The cert now lives in the macOS Keychain under TrustedQSL.

Phase 3 — Create a Station Location in TQSL ​

A station location describes where you operated (for LoTW's mapping of DXCC multipliers, US states, ITU/CQ zones).

  1. TQSL.app → Station → Station Locations
  2. Click "Add"
  3. Click through the wizard:
    • Callsign: HB9HJI (your licensed call)
    • DXCC Entity: Switzerland / your country
    • CQ Zone: 14 (CH), ITU Zone: 28
    • Grid Square: your locator (e.g. JN47PN)
    • State / County: only relevant for W/VE
  4. Assign a name: e.g. HB9HJI/HOME (shown in HAM-Tools)
  5. "OK", the station is saved in ~/.tqsl/station_data.xml

Multiple stations

If you operate portable or abroad, create a separate location per site: HB9HJI/JN36, HB9HJI/M-Tuscany, HB9HJI/AM. HAM-Tools asks which location to use on upload.

Now HAM-Tools comes into play.

  1. Settings → Lookup & Upload (⌘, → "Lookup & Upload" tab)
  2. Sub-picker at the top: choose "LoTW"
  3. tqsl binary: default is /Applications/Tqsl.app/Contents/MacOS/tqsl — auto-detection should have found the path. If it's empty or the app is elsewhere: click the "📁 Browse…" button next to the field → in Finder just click Tqsl.app, and HAM-Tools fills in the binary path automatically. This also works with a Homebrew install (select /opt/homebrew/bin/tqsl directly).
  4. Station location: open the dropdown → you'll see the locations from Phase 3. Pick your default location (e.g. HB9HJI/HOME)

Picker empty?

If the dropdown stays empty: the station location wasn't created in TQSL yet. Did you really finish Phase 3? Does ~/.tqsl/station_data.xml (or ~/Library/Application Support/TrustedQSL/station_data.xml) exist? Check in Terminal:

bash
cat ~/.tqsl/station_data.xml
ls -la ~/Library/Application\ Support/TrustedQSL/

Phase 5 — Enable Auto-Upload ​

Three toggles in the LoTW section:

ToggleEffect
"Automatically upload every logged QSO"One TQSL call per QSO — recommended for home loggers
"After a successful upload, mark › QSL sent via LoTW ‹"QSL status is set automatically — recommended
(Master) Real-time upload at the very topIf off, EVERYTHING is paused (for travel/portable without internet)

Phase 6 — Test the First Upload ​

  1. Logbook → select a log, with at least 1 QSO in it
  2. Select a QSO in the table (or several via ⌘-click)
  3. Right-click → "LoTW: upload N QSOs"
  4. Enter the cert password (from Phase 2)
  5. Wait 5–30 seconds — the "LoTW" status column in the table shows a pill:
PillMeaning
🟡 PendingUpload in progress
🟢 SentSuccessfully handed to LoTW
🔴 Failedtqsl returned an error — diagnostic snippet in the alert
⚪ ConfirmedThe other station uploaded their QSO too + it matched

Initially you'll only see 🟢 Sent — confirmation comes once the other station uploads on their end.

Phase 7 — Confirmation Sync ​

After a few days / weeks, some of the other stations have submitted their QSOs to LoTW too. Pull the confirmations:

  1. Logbook → "QSL" tab at the top
  2. Button "Fetch LoTW confirmations"
  3. HAM-Tools fetches the LoTW report XML from arrl.org and matches it against your QSOs on call + band + mode + date
  4. Confirmed QSOs go 🟢 → ⚪ Confirmed
  5. The Awards tab shows the new confirmed counters

Frequency: once a week is enough

LoTW doesn't push confirmations in real time. A weekly sync covers 95%. If a DXpedition QSO matters (the DX operators often don't sync to LoTW until 6 months later), just wait.

Common Problems ​

"Station Location X could not be found"
→ Typo in the picker. Go to TQSL.app → Station Locations and check the exact name (case matters). Or reopen the picker in HAM-Tools — the dropdown shows the real names.

Cert password is asked for every time
→ That's intentional (security). Saving it would require Keychain item reuse, which we don't do — otherwise you couldn't separate personal/club/contest certs.

"tqsl: error: command-line option 'x' not recognized"
→ You have a very old TQSL version (< 2.5). Update to 2.7+.

Upload ends up in the "rejected" branch even though everything looks OK
→ The diagnostic snippet in the error alert opens the raw tqsl output. Common cause: the cert has expired (LoTW certs are valid for 3 years), or the mode label (e.g. FT8 vs. MFSK) isn't accepted by tqsl. Running tqsl manually in Terminal reproduces it.

Use eQSL/QRZ instead of LoTW
→ see Settings → Lookup & Upload. Each service has its own toggles, all can run in parallel.

What's Next ​

  • Log Your First POTA QSO — if you haven't yet
  • The POTA module and SOTA module read LoTW confirmations automatically for award tracking
  • ARRL DXCC + WAS + WAZ awards can be applied for directly at ARRL once you have enough confirmations

HAM-Tools © HB9HJI · Funkwelt