# CQFTx User Manual

Field-test release: **v0.4.100-rc**

CQFTx is a guided FT8/FT4 application for portable and fixed-station operation. It decodes received signals, ranks actionable stations, manages the complete QSO exchange, controls a supported radio, and records completed contacts.

CQFTx does not use Hunter or Activator operating modes. What the operator does determines the workflow:

- Tap a CQ to call that station.
- Start CQ to invite replies and authorize CQFTx to select the best valid responder automatically.

Each active QSO stores its own durable direction—**We called them** or **They called us**—so an interrupted exchange resumes with the correct messages.

## Installing and updating

Download the field-test APK and its checksum from the
[CQFTx releases page](https://github.com/p0lr/CQFTx/releases).
To update an existing field installation, install the new APK over it. **Do not
uninstall first**: keeping the existing installation preserves station settings
and logs. If Android refuses the update, retain the installed app and record the
error rather than clearing its data or uninstalling it.

For daily operation, start with [Quick starts](#12-quick-starts). The sections on
[the operating display](#2-main-screen) and [logging](#7-logging) explain the
controls and saved-contact workflows.

## 1. Initial setup

After the callsign prompt, CQFTx shows **Field readiness** once. This is a compact
preflight for the radio/audio path, synchronized time and location, activation
reference, log storage, and any Internet-dependent spotting. A blocked item means
CQFTx cannot safely perform the requested operation; a warning means operation is
possible but reduced or offline. Use the buttons to open the relevant setup screen,
then choose **Run preflight again**. **Continue to CQFTx** dismisses the checklist;
the same checks remain visible in the operating and activation status.

Open **Station Setup** and configure:

- Your callsign and Maidenhead grid.
- FT8 or FT4.
- The single QSO message retry limit.
- The CQ message and watchdog limit.
- Optional POTA or SOTA preferences.
- Optional PSK Reporter upload and background receive.

### Decode effort

In **Station Setup**, move the **Decode effort** slider to **Lower**, **Normal**,
or **Higher**. **Normal** is the default and retains the existing staged search.
**Lower** uses shallower searches and can miss messages that Normal finds.
**Higher** expands the early search; it does not extend the response deadline
or the time allowed for a decode. More effort does not guarantee more messages.

The selection is saved with station settings and applies from the next receive
window. A window already being captured or decoded keeps its original effort.

**Use AP decodes** is a separate checkbox. When checked, AP results may be used
for responses. When unchecked, AP results remain visible but are ignored
for responses and station selection. Changing effort does not enable AP use.

### Language, region, and display units

CQFTx follows the language and region selected in Android. There is no separate
CQFTx language, region, or miles/kilometres setting. Change the device language
or regional preferences in Android Settings, then return to or restart CQFTx if
Android does not refresh the open screen immediately.

CQFTx accepts every language and region configuration supported by the Android
platform. When a CQFTx translation is available, the app uses it. Otherwise, the
complete base English interface is shown so that labels do not become a partial
mixture of languages. Android also supplies right-to-left layout direction for
languages such as Arabic, Persian, Hebrew, and Urdu.

Distance and altitude units follow Android's regional measurement system.
Regions using US or UK measurement conventions display miles and feet; regions
using the international system display kilometres and metres. This applies
consistently to station details, map paths, antenna height, terrain, activation
searches, and other distance or altitude readouts.

Displayed numbers and editable numeric fields use the region's digits, grouping,
and decimal separator. Frequency entry also accepts an ASCII decimal point for
operator convenience. Callsigns, Maidenhead locators, FT8/FT4 messages, ADIF
data, URLs, and UTC values retain their required technical formats and are not
translated. Changing the Android region changes presentation only; it does not
alter saved QSOs, station data, calculations, or radio control.

Open **Radio** and select the radio plus its USB audio and CAT paths. CQFTx must validate RX audio, TX audio, the USB serial device, radio identity, and CAT state before transmission is allowed.

If a QMX has no transmit audio, try turning the Android output/media volume all
the way up (100%) with the QMX USB audio output selected.

The operating status header identifies an active activation by its complete primary
park or summit reference and shows qualification progress. On constrained phone
layouts the reference and progress use a deliberate two-line form; the program icon
identifies the activity type. Narrow portrait phones allocate that two-line value a
complete row so even the longest supported summit reference remains visible.
Tap the activity status for the complete activity details, including all selected
references. Normal operation remains labeled simply **Normal**.

### Tune and Auto Tune

Open the PWR/SWR meter for two independent side-by-side controls. **Tune** starts
a supervised carrier for antenna adjustment. **Auto Tune** asks a positively
verified radio or attached tuner to find and retain a match. A control remains
gray when the connected radio does not support that operation. Both controls use one fixed
30-second maximum, are mutually exclusive with every other transmission, and
restore RX and the original dial frequency after stopping or failing. At an
FT8/FT4 calling frequency, CQFTx can perform the operation 5 kHz lower and then
restore the calling frequency.

Tune, Auto Tune, SWR Sweep, and Done share one compact row. Availability comes
from the connected radio driver and the current operating context, not just
the model name. During safety checks, an action reads **Checking…** and is
disabled. Starting or running an operation changes its action to **Stop**;
after tapping it, **Stopping…** stays disabled while cleanup finishes. Missing
hardware, an unsupported band, or failed verification leaves the action disabled.
SWR Sweep also requires the applicable regional plan and radio qualification.

Tune and Auto Tune do not perform a regulatory-authorization lookup. The
operator is responsible for selecting a frequency and operation permitted by
their license, jurisdiction, and station conditions.

Auto Tune turns green only for the same frequency and digital mode after a
verified match. A failure is red in that same context. Either result clears
when frequency, mode, radio, or control session changes. The IC-705 with a
detected AH-705, IC-7300, IC-7300MK2, and IC-7610 use the Icom tuner state and
native carrier. The G90 requires a fresh per-connection confirmation that both
main-unit and display firmware are 1.81 or later; CQFTx then requires at least
three valid final SWR samples in the last second and a median no higher than
the configured protection threshold. Automatic-tuner cleanup makes up to three
RX verification attempts, exactly 250 ms apart.

Manual Tune uses verified reduced RF power on the IC-705, IC-7100, IC-9700, and
IC-905. An attached AH-705 is forced to verified bypass for IC-705 manual Tune
and restored afterward. IC-9700 coverage is limited to 144, 430, and 1200 MHz;
IC-905 coverage follows the selected supported hardware band, including the
optional CX-10G path. These newly enabled radio/band paths require the
model-specific field qualification checklist before release use. QDX and the
legacy IC-706MKIIG/IC-718 profiles remain unavailable because CQFTx cannot
verify all required power, SWR, tuner, and restoration states. IC-7100 Auto
Tune also remains unavailable until a supported external tuner can be
positively detected rather than inferred from cabling or configuration.

### SWR Sweep

With a ready QMX or IC-705, open the PWR/SWR meter and choose **SWR Sweep**. In
the sweep window, CQFTx automatically selects the embedded U.S. General-class
or Canadian ISED RBR-4 allocation from the station jurisdiction. No license-class
chooser is required. Sweep stays unavailable when the station jurisdiction is
missing, unsupported, or the applicable embedded catalog is due for regulatory review.

For **General**, CQFTx covers the complete General-class allocation on the
selected band, not only the FT8/FT4 segment. It preserves every privilege gap:
for example, a 20-meter General sweep covers 14.025–14.150 MHz and
14.225–14.350 MHz without transmitting between them. The endpoints shown in
the graph are slightly inside those limits so the complete test emission stays
authorized. The 60-meter display likewise keeps discrete channels separate
from the continuous allocation.

For a Canadian jurisdiction, CQFTx uses the complete applicable RBR-4 Schedule I
band. For example, 20 meters spans 14.000–14.350 MHz and 13 centimeters spans
2.300–2.450 GHz. The control operator remains responsible for holding the
qualification required for the selected band; CQFTx does not infer qualifications.

Choose **Start** to measure exactly 21 safe actual-RF frequencies. CQFTx starts
at the selected FT8 or FT4 target and measures outward. QMX uses native SWR Tune
at its verified Tune %=50 safety setting. IC-705 uses a shaped 1500 Hz USB-D
carrier at its qualified, read-back 26/255 RF-power setting. The graph always
shows actual RF, 1500 Hz above the USB dial. If an
AH-705 answers, CQFTx forces and verifies bypass for the complete sweep and
restores its original on/bypass state afterward. If the IC-705 explicitly
rejects the tuner command because no tuner is attached, Sweep proceeds without
one. Qualification candidates for IC-7300, IC-7300MK2, IC-7610, and G90 force
and restore their built-in tuners. The IC-7100 candidate supports both an
explicitly rejected no-tuner response and a detected idle external tuner;
IC-9700 and IC-905 declare tuner control not applicable. These candidates are
not exposed in normal builds until physical-radio HIL is approved. An active
or unreadable tuner state fails closed.

General-class candidate plans extend through each radio's supported bands. The
IC-9700 candidate covers 2 m, the nationwide-safe 430–450 MHz portion of 70 cm,
and 23 cm. The IC-905 candidate additionally covers the disjoint 2300–2310 and
2390–2450 MHz 13 cm allocations plus its 5 cm and optional CX-10G 3 cm paths.
QDX, IC-718, and IC-706MKIIG remain unavailable because they cannot verify the
required live SWR, controlled-power, and PTT safety state.

Before a candidate radio/band combination is added to the release allowlist,
complete the model and band matrix in the remaining-radio SWR Sweep HIL
checklist. Code and protocol simulation do not establish minimum-power SWR
accuracy or the occupied-spectrum allowance on physical hardware.

**Stop**, closing the window, backgrounding the app, or disconnecting the radio
stops the carrier and restores RX, frequency, mode, power, and tuner state.
Retest is enabled only after successful cleanup. Tap a graph point for its
median SWR and associated power. Up to three complete or partial runs remain
available for comparison until the radio disconnects or the app process ends;
Sweep results are not saved or exported.

### Icom IC-7300 and IC-7300MK2

CQFTx identifies the original IC-7300 and IC-7300MK2 independently with the
radio-reported CI-V identity, even when an MK2 is configured to answer at the
original model's `94h` address. In the PWR/SWR window, **Tune** and **Auto Tune** use the
identified radio's built-in automatic antenna tuner and native tuning carrier;
it does not change the operator's RF-power setting or generate USB audio.

CQFTx enables either control only after it reads a valid idle tuner state and verifies
the radio is in RX, USB-D, on the selected band. It then requires both the
built-in-tuner tuning state and CI-V TX readback. A completed match remains
enabled. A no-match result, cancellation, timeout, disconnect, or command
failure forces RX, restores the original frequency, and restores the prior
tuner on/bypass state. The IC-7300 and IC-7300MK2 must be qualified separately;
evidence for one model never authorizes the other.

### Icom IC-7100

Set **CI-V Address** to `88h` and **CI-V Baud Rate** to `Auto` or `19200`.
CQFTx verifies the radio with transceiver-identification command `19 00` and
uses only the IC-7100's documented RIT controls; it does not send the `21 02`
XIT command used by newer Icom profiles.

Release E4 (CPU M 1.10 and CPU C 1.10) or newer is required because it added
the CI-V RIT control used by CQFTx's receive-state safety check. Current Icom
firmware is recommended. Back up the radio's settings to an SD card or with
CS-7100 before updating because the firmware update resets radio settings and
memory contents.

Manual Tune uses a read-back reduced-power USB-D carrier and restores the exact
prior power and frequency settings. Auto Tune stays unavailable: attaching an
AH-4 is not enough unless CQFTx can positively identify its control path.

### Icom IC-7610, IC-9700, and IC-905

The IC-7610 uses its built-in tuner for both Tune controls after CQFTx selects
MAIN and verifies idle tuner, RX, USB-D, band, and model identity. The IC-9700
and IC-905 have no enabled automatic-tuner path; their Tune control instead
uses read-back reduced power and exact restoration on the supported bands
described above.

CQFTx operates the IC-9700 on MAIN only. It captures stereo USB audio and uses
only the left (MAIN) channel for calibration, the receive meter, waterfall and
decoding. SUB can remain audible on the radio but is not decoded by CQFTx.
A stereo-capable USB input is required; CQFTx will report a capture failure
rather than fall back to mixed mono audio.

Connection setup selects MAIN/VFO A, disables satellite and split/repeater-duplex
operation, and selects USB-D with USB AF output. Changing these settings can block
transmission until the supported setup is restored. Satellite operation and
simultaneous dual-receiver decoding are not supported.

### Icom IC-706MKIIG

CQFTx can identify, receive, and transmit through an IC-706MKIIG connected with
a DigiRig Mobile-style CP210x serial interface and a separate USB audio path.
The radio has no documented CI-V PTT command, so CQFTx keys the DigiRig's
hardware PTT output by asserting CP210x RTS and returns to receive by releasing
RTS. DTR remains inactive. Opening, initializing, disconnecting, or closing the
serial transport always leaves RTS released; CQFTx does not key the radio while
testing the connection.

Use the DigiRig audio-and-PTT cable appropriate for the IC-706MKIIG. A generic
serial CI-V adapter can still provide receive and tuning control, but CQFTx
shows **PTT unavailable** unless the selected serial transport exposes the
supported CP210x RTS path. Do not use VOX as a substitute for supervised PTT.

### Icom IC-718

Set **CI-V Address** to the factory default `5Eh` and **CI-V Baud Rate** to
`19200`. CQFTx accepts the radio only when command `19 00` returns the exact
model identity `5E`; the address, adapter name, and generic CI-V replies cannot
identify it.

Use an IC-718 DigiRig-style CP210x CI-V/PTT cable and the separate USB audio
path. CQFTx sends transmit audio through the selected USB audio output and keys
PTT with CP210x RTS only after initialization has explicitly verified RTS
released. DTR remains inactive. The IC-718 provides receive S-meter data over
CI-V but no documented transmit power, SWR, or ALC feedback, so those TX meters
remain unavailable.

### Xiegu G90 with DigiRig

General G90 support requires **main-unit firmware 1.80 or newer**. Version 1.80 added
the model-identification and digital-mode commands CQFTx requires. Version 1.81
is recommended for its current digital-audio and ALC behavior. Install matching
main-unit and display firmware from the same official Xiegu release package;
do not mix component versions.

Use the normal DigiRig logic-level serial version (separate TX/RX), not the
one-wire Icom CI-V hardware variant. Connect DigiRig serial to the G90 head-unit
COMM port and DigiRig audio to the rear ACC connector. The CAT path is 19200
baud, 8 data bits, no parity, one stop
bit, and no flow control. DTR and RTS are not used for automatic PTT. CQFTx
accepts the radio only after Xiegu command `1D 19` returns model ID `00 90`; a
CP210x or DigiRig USB name by itself never identifies a G90.

During connection CQFTx tests CAT PTT safely by sending PTT release and reading
back RX state. It does not briefly transmit. A failure means the radio firmware,
COMM connection, baud setting, or CI-V control configuration is not usable, and
TX remains unavailable. CQFTx then leaves the radio configured for operation:
VFO A, simplex, USB digital mode/filter 1, compression off, and CAT PTT. G90
firmware rejects the Icom-style CAT commands for reading or changing RIT/XIT,
so CQFTx does not send them; confirm RIT and XIT are off from the radio before
digital operation. It intentionally does not restore the earlier configuration
on disconnect.

The DigiRig ACC audio levels remain manual. CQFTx monitors receive clipping and
the G90 power, SWR, and ALC readbacks without making calibration a transmit
interlock. With firmware 1.81, adjust DigiRig/Android TX output so the radio's
displayed digital ALC remains at or below 50. RX and TX calibration guidance is
advisory and non-blocking.

Auto Tune has a stricter requirement: confirm in the PWR/SWR window that both
the main unit and display are running firmware 1.81 or later. This confirmation
lasts only for the current radio/control session. CQFTx verifies the prior tuner
state, enables it, starts one tuner cycle, samples every 250 ms, and retains the
new match only when the final one-second SWR median passes. Cancellation,
failure, timeout, or disconnect restores the prior tuner state.

References: [Xiegu G90 firmware 1.80 feature notice](https://xiegu.eu/2025/05/29/g90-firmware-v1-80-complete-digital-mode-audio-enhancements/),
[Xiegu firmware downloads and 1.81 release notes](https://xiegu.eu/downloads/),
[Xiegu CI-V reference](https://xiegu.eu/wp-content/uploads/sites/4/2023/08/XIEGU-RADIO-CI-V-REFERENCE.pdf),
and [DigiRig G90 cabling](https://digirig.net/xiegu-g90-cables-build/).

When the connected radio supports CAT-adjustable receive gain, the Radio panel provides a live RMS/peak meter, fine controls, and **Auto Set RX Level** with 10% clipping headroom. Calibration and clipping guidance are advisory and non-blocking. For radios that report ALC, **Monitor Next Normal TX** observes an ordinary transmission without keying the radio itself and recommends a smaller TX audio setting when ALC is active.

IC-706MKIIG support covers verified legacy CI-V identity, frequency, USB mode,
supported bands, receiver S-meter status, and CP210x RTS hardware PTT through a
supported external interface. The radio has no native USB audio or documented
CI-V PTT command, so CQFTx does not send newer Icom audio, meter, or transmit
commands to it. Transmit audio uses the separately selected USB audio output.

GNSS is the preferred UTC authority. When GNSS is unavailable, CQFTx retries a GNSS lock every three minutes while the process is awake, including while the app is off-screen. This non-waking check pauses while the tablet sleeps. CQFTx uses Android's platform-synchronized network clock until GNSS locks; it does not contact a separate NTP service. Manual grid and UTC entry are enabled only when neither automatic authority can be used. CQFTx keeps checking while manual time is active and automatically switches to GNSS, or to Android network time when GNSS remains unavailable. Tap the clock icon or UTC time to open the time dashboard. Its top card shows app-time confidence, UTC, active authority, and freshness; separate rows show GNSS, Android network, and manual-source status at a glance. Time-authority confidence is advisory and does not inhibit transmit.

Opening activation-location discovery enables real-time GNSS position updates until
the discovery or activation-setup view closes. This location-only tracking does not
change the app clock's authority or its safe slot-boundary correction rules.

When manual UTC is active and an identified radio has a validated USB
receive-audio path, the Time Authority view offers **Run FT8 Decode Alignment**.
Enter the correct UTC date, hour, and minute manually first. FT8 Decode
Alignment is a precision phase adjustment; it cannot determine the correct
15-second FT8 period or any larger UTC unit.

FT8 Decode Alignment examines three FT8 periods and tests coarse phase offsets. It
requires at least five unique, CRC-valid stations across all three periods,
gives each station one vote, and rejects excessive DT dispersion or slot
ambiguity. If the buffered sample is not yet long enough, CQFTx collects fresh
audio for about one minute. An accepted correction is applied at the next idle
slot boundary. The authority view reports the correction, supporting stations
and periods, DT dispersion, and age. Disconnecting the radio or losing the
validated receive-audio path cancels acquisition.

## 2. Main screen

The main screen contains:

- Radio, band, digital mode, frequency, TX offset, UTC, grid, spot, power, and SWR status.
- The current CQ or QSO workflow card.
- The chronological decode pane.
- Filters for **All**, **CQs**, **My Traffic**, **POTA**, **SOTA**, **Current QSO**, **Watched**, and **Relevant Traffic**. **My Traffic** shows every retained message addressed to your callsign and all your transmissions, including CQ calls. Messages to you also remain visible in every other filter.

The compact system-confidence line reports CAT readiness, whether the receive
path is clean after TX, audio warnings, time authority, decoder queue or drops,
next-response timing margin, and whether QSO records are durably saved. Yellow
text requests attention but is informational; it does not inhibit transmission.

The workflow names its current authority: **Listening only**, **CQ authorized**,
**QSO automatic**, **TX held**, or **TX protection active**. An authorized CQ session
may answer waiting callers after the active QSO; **Stop automatic replies** revokes
that permission without ending the current exchange. During a CQ run, use **Stop CQ**.
A radio block names each unavailable audio/control path and offers **Open Radio setup**.
Calibration remains advisory and does not become a new TX interlock.

QSO Options and Stop QSO appear ahead of the contact details. **Hide contact details**
collapses location, propagation and receive telemetry while leaving callsign, timing,
message and exchange progress visible. Large text wraps; the workflow scrolls within
its own area so incoming traffic retains space on portrait screens.

**Suspended contacts · Resume…** opens resumable exchanges on the current band and mode directly from the
operating panel. Resuming uses the same checks as the QSO State Table. **Last saved**
shows a durably stored contact with callsign, band, mode and UTC; tap it to edit.
Failed writes remain in the existing pending-log recovery controls.

Tap the **QSO chance** heading for gesture help. Each row shows only the percentage.
Decode rows omit app-added CQ priority explanations such as “outside requested
area” and POTA/SOTA eligibility labels. The station's transmitted CQ qualifier
remains visible; priority details remain in CQ candidate options, and choosing
an out-of-area station still requires the existing confirmation.
The message column contains only the transmitted message. Directed-to-you color
replaces “Calling you”; a compact teal PSK-and-arrow badge at the right, beside
POTA/SOTA, identifies a matching direct report no more than 30 minutes old.
Nearby/same-grid reports remain in station details and do not receive this badge.
A crossed-circle indicator marks ignored stations; the row stays dimmed and
station details retain the ignore scope and controls. Long-pressing a row opens
station details with report age, signal strength, and receiver grid.
Hold a value for its contributing evidence; hold a station message for station
details, including QSO chance, confidence, scoring evidence, and **Send 73**.
These estimates guide selection; they are not guarantees.

The dedicated **QSO chance** column estimates the chance of completing a contact
within two minutes if you call that station now. It is deliberately rounded to
avoid false precision. CQFTx combines the station's recent median SNR, SNR trend
and repeat count with DT quality, decode age and confidence, CQ or directed-call
intent, current retries, exact-band TX-offset occupancy, path geometry, and the
retained space-weather context. Hold the percentage or open station details to
review confidence and contributing evidence. The row itself shows only the percentage; it is an
operating estimate, not decoder confidence or a guarantee of a reply.

Fresh PSK Direct evidence is considered high probability only when its sender,
receiver, mode, and band match this operator and station. A direct report cannot
be downgraded below the high-probability range merely by broad propagation
context. Completed and unsuccessful attempts are retained locally and calibrate
future estimates within the same band, mode, and score range. This learning is
bounded, survives restart, and does not upload the contact-attempt history.

Tap the spot status to open the unified Spots map. Reception markers include
distance and initial bearing from the configured station grid. When the same
receiver supplies multiple retained reports from one source, its detail shows
the SNR change between the two newest reports. The line above the map summarizes
the most recent transmission: unique receivers and grids, median and farthest
path, directional spread, PSK Reporter/RBN coverage, and exact versus probable
attribution. Exact reports agree with the transmitted slot and expected RF
frequency; probable reports satisfy the wider fixed time and frequency bounds.

The lower-left map attribution is also the map-source button. Tap it to choose
Automatic or a specific global or national map. The picker temporarily covers the
map, so it does not reserve any of the map viewport. The same retained choice is
used by the Spots, Path Outlook, and Find an activation location maps; changing it
on either selectable map changes every map. Automatic uses USGS in the United
States, Natural Resources Canada in Canada, and BKG TopPlusOpen elsewhere. A
specific national map is not substituted outside its coverage or when its service
is unavailable; CQFTx shows its retained tiles or the unavailable-tile background.

While the app is open on Wi-Fi, GNSS selects automatic map coverage: national
zooms 1–8 for the current US/Canada coverage, regional zooms 9–11 within 250 km,
and local zooms 12–13 within 50 km. Small position changes do not restart the
coverage plan; it recenters after 25 km or a country change. Each cache has its own
512 MiB limit, so local browsing cannot evict broader coverage. Downloads pause
when the app stops, Wi-Fi is lost, or a tile fails, and resume on a later app/Wi-Fi
restart or coverage change. Unsupported exact map providers remain viewport-only.

After 30 days, CQFTx checks retained image versions. An unchanged image receives
another 30 days without downloading its image body. Canadian base maps and labels
are checked separately. Failed checks preserve old tiles for offline use. Coverage
is limited by available cache space; the app does not guarantee a complete offline
package for very large areas. National/regional maps survive Android cache cleanup;
local detail may be removed by Android.

POTA and SOTA marker details identify the spotter and feed source when supplied,
show whether the station is needed or worked in the selected context, identify an
active QSO and recent local decode, and retain frequency changes plus stale or QRT
markers for five minutes. Cached activity catalogs add jurisdiction and
multi-reference context for POTA, and association, region, elevation, points, and
activation history for SOTA. A data-quality line reports unmapped observations,
four-character locator precision, PSK/RBN disagreement, future or old timestamps,
and the age of each available feed.

WWFF activators from the official Spotline feed appear as green leaf markers.
The WWFF count in the Spots title reflects current spots matching the selected
band and FT8/FT4 mode. Marker details include the WWFF reference and reserve
name, spotter provenance, frequency, age, and remarks.

Activator-spot feeds and activation-location catalogs are separate caches. A
spot-location fallback is always a local lookup by the spot's exact program
reference: it never starts a directory download or geocoder, chooses the nearest
park, infers a site from the activator's callsign, or uses the operator's GNSS
position. An unresolved spot remains in its source count and station list, but it
has no map marker and is reported as unmapped in the data-quality line.

Each incoming activity feed retains its last successful snapshot in memory while
CQFTx is running. A polling failure or offline transition preserves that snapshot
with its original fetch time; spots continue to age, expire, and respond to the
selected band and mode. A successful valid empty snapshot clears the prior list.
This spot snapshot is not durable across an app-process restart. The separate
program-location catalogs are durable, and a newly updated catalog is used to
resolve missing spot coordinates on the next successful spot poll; it does not
silently move markers in the already retained snapshot.

The transparent **HF** summary beside the map's Time control provides minimized
NOAA space-weather context without reducing the map. Tap it to show the details
panel; use **Minimize** in the panel header to give that space back to the map.
When minimized, the map expands to the available phone or tablet viewport. Its
automatic fit prevents unused map bands on a newly sized dialog, while any zoom
you select remains under manual control. On compact screens, PSK upload moves
into the Time row and an offline Reconnect action overlays the map instead of
consuming a separate row.
The panel reports the NOAA R, G, and S scales,
planetary Kp, 10.7 cm solar flux, and a plain-language HF interpretation alongside
the receiver evidence CQFTx is actually observing. Day/night and path context can
be toggled independently; solar shading and the gray line are calculated locally
from CQFTx's synchronized app clock.

The same panel contains **Antenna** settings. Enter the antenna height
above local ground using the unit shown by CQFTx; it follows Android's regional
measurement system. Select the closest broad
configuration: horizontal wire/dipole, vertical/monopole, directional/beam, or
other. CQFTx uses retained exact GNSS coordinates for the station marker and
every RF route, distance, bearing, path outlook, and terrain calculation. It does
not substitute the Maidenhead-grid center. **Terrain horizon** overlays 24 local
azimuth sectors sampled to 32 km. Green sectors retain a low horizon, amber
sectors are limited, red sectors contain a substantial obstruction, and blue
indicates a possible open-water direction. Tap a mapped station to see its local
horizon angle, dominant feature, compact elevation profile, confidence, and the
bounded percentage adjustment applied as terrain context. Elevations come from
the 90 m Copernicus DEM through Open-Meteo, so buildings, individual trees, small
cliffs, antenna pattern details, and reflections remain outside the model.

When internet connectivity is unavailable, CQFTx retains the last complete NOAA
snapshot and cached spots. Offline information is explicitly marked, aged, and
visually subdued; it is not presented as a live warning. Day/night context keeps
updating locally. The last complete terrain horizon is also retained for its
sampled location. **Retry** and **Update terrain** request their respective
refreshes after connectivity returns.

Tap a mapped station and choose **Path outlook** to open the dedicated route
view. CQFTx shows an experimental opportunity estimate for now, 30 minutes,
one hour, and two hours ahead. Direct PSK Reporter/RBN evidence, a current
POTA/SOTA/WWFF report, receiver coverage, band and daylight geometry, and the
retained NOAA snapshot contribute to the result. The explanation lists each
factor and lowers confidence for cached data and longer horizons. This is an
empirical operating aid, not an ITU-R P.533 circuit-reliability prediction or a
guarantee that the remote operator is listening and will answer.

After every transmission CQFTx waits for CAT-confirmed receive, restarts USB
capture, and applies a short settling interval. Audio from an incomplete recovery
can still provide positive decodes, but it cannot be used to conclude that a
station failed to answer.

### Choosing a decode filter

Filters change what you see. Hidden decodes still update station state, QSO
state, ranking, and diagnostics. Messages addressed to your callsign remain
visible in every filter, using the app's normal portable-callsign matching.

| Filter | Traffic shown in addition to messages addressed to you |
| --- | --- |
| **All** | All retained received messages and local transmissions. |
| **CQs** | Received CQ calls and your transmissions. |
| **My Traffic** | All your transmissions, including CQ calls. Other received traffic is hidden, regardless of the selected QSO partner. |
| **POTA** / **SOTA** | Traffic involving stations identified by current verified spots or recent decoded `CQ POTA` / `CQ SOTA` evidence, including your transmissions to them. |
| **Current QSO** | Received traffic involving the selected partner, plus your transmissions. |
| **Watched** | Received messages matched by enabled watch rules. |
| **Relevant Traffic** | CQ and target-related traffic, relevant directed replies, and your transmissions. |

Choose **My Traffic** beside **CQs** to follow your calls, incoming reports,
acknowledgements, and sign-offs together. Choose **Current QSO** to also see your
partner's retained traffic with other stations. On narrow layouts, scroll the
filter row horizontally to reach the remaining choices.

RX and TX rows share a chronological 20-window limit and an absolute 10-minute
lifetime. Expiring a displayed message does not remove saved QSOs or logging
state. Filters do not extend that history.

Open **Watch rules** from the main menu to create offline decode alerts. A rule can combine transmitting callsigns, CQ/activity designator tokens, Maidenhead grid prefixes, country names or ISO alpha-2 codes, state or province candidates, band, and mode. Values within one condition are alternatives; different conditions must all match. Callsigns prefixed with `=` require an exact match, while `~` also matches portable and other same-station variants. Each rule has its own 1–1,440 minute visual-alert cooldown, defaulting to five minutes. To bound decode work, up to 32 rules and 16 values per condition may be configured.

Every matching received decode displays an eye beside its message under every filter. The eye is not rate-limited. An eligible match also shows a persistent visual banner with the transmitting callsign, decoded message, and matching rule names; dismiss it with **Close**. CQFTx does not play alert audio, vibrate, request audio focus, or change the radio audio route. If CQFTx receives a match while off-screen, the latest eligible match is held and shown on return without consuming its cooldown until the banner is actually visible. Watch matching uses bundled offline data and never contacts QRZ or another network service.

Long-press any received decode to open its station snapshot. The dashboard summarizes known location and distance in Android's regional measurement system, separate POTA, SOTA, WWFF, and WWBOTA activity indicators, PSK Reporter evidence, retained decodes, and logged QSOs. Each activity indicator is gray without evidence and green when activity is found. Live spots use the selected band/mode and existing expiration rules; recent POTA/SOTA CQ evidence is also shown. WWBOTA currently has no live activity feed, so cached bunker locations do not imply active stations. Open **Integrations → QRZ.com** from the main menu to validate QRZ Callbook credentials. CQFTx encrypts the saved password with Android Keystore, obtains a temporary QRZ XML Callbook session, and refreshes an expired session automatically. It stores only selected station fields in the station-state cache, so previously retrieved callbook information remains visible offline. Live lookup requires validated credentials, Internet connectivity, and a QRZ XML Callbook subscription.

QRZ Logbook upload uses a separate Logbook API access key. Configure it in the
**QRZ Logbook Upload** section of **Integrations → QRZ.com**, directly below
the Callbook lookup credentials and their validate/store controls. CQFTx
validates the key with QRZ before enabling uploads and shows the selected book
name, exact owner callsign, configured date range, and uploaded, pending,
blocked, and local-only counts. The key is encrypted with a separate Android
Keystore key and is never written to diagnostics or backups.

A QSO is always committed to CQFTx first. QRZ work occurs afterward and cannot
delay completion, transmit timing, or the next contact. Offline QSOs remain in
a durable queue. CQFTx drains the queue oldest-first after connectivity returns,
on startup, after another QSO, or when **Retry now** is selected. Transient
failures use a unique network-constrained job with exponential backoff beginning
at 30 seconds. A successful insert is not complete until CQFTx fetches that QRZ
record and verifies the callsigns, UTC time, band, and detailed mode
(FT8, FT4, SSB, FM, or AM).
If that identity does not match, the accepted record remains available for safe
read-back retry, its QSO detail explains the mismatch, and later queued QSOs
continue processing. Review the local and QRZ records, then use **Retry now**.

The station callsign stored on the QSO must exactly match the QRZ logbook owner,
including `/P`, `/M`, or another suffix. A mismatch is retained locally and
shown as blocked; create another QRZ logbook for that callsign or export the QSO
or activity as ADIF and upload it to the appropriate book. Tap a QSO in CQFTx's
log to see its QRZ state: local only, pending, retry scheduled, accepted pending
verification, verified, or blocked.

Initial key setup asks whether existing eligible QSOs should be uploaded; the
default is no. ADIF imports remain local-only unless explicitly selected by a
later **Upload local-only QSOs** action. Historical POTA/SOTA activations that
predate the QRZ selection can be included only through the separate
historical-activation approval. An activation explicitly unchecked by the
operator remains excluded from later uploads.

To import a TrustedQSL backup on the tablet, open **Integrations → LoTW →
Choose TQSL backup (.tbk)** and select the file in Android's document picker.
CQFTx checks the certificate and matching station-location entries, then shows
the identities for review. Confirm **Import backup** to replace the previously
imported copy. The app encrypts its copy in private device storage; the
original file stays where it is. Replacing or removing a backup stops LoTW
uploads first; if that cannot complete, the saved backup is retained.
**Remove imported backup** deletes the app's copy. Importing a backup does
not enable LoTW uploads or submit any QSO.
Tap **Check local LoTW signing** to test the imported certificate and station
on the device. CQFTx signs and verifies a disposable record in memory, then
discards it. This check does not submit a contact or confirm LoTW acceptance.
Password-protected TQSL keys are identified but cannot yet pass this check.
After a successful local check, **Enable LoTW uploads** starts delivery for
new eligible QSOs. LoTW uses the signed file as its upload credential; the
setup check itself never contacts LoTW. **Stop LoTW uploads** preserves the
local log and per-QSO receipts. A lost upload response is marked **Needs
review** and is not automatically sent again.

At activation start, select QRZ, ClubLog, and LoTW separately. Unavailable
destinations cannot be newly selected. The selections can be changed in the
activity overview until the first local QSO is saved, then they lock. Normal
QSOs follow each configured destination's global upload setting.

For Normal QSOs, automatic logging skips a repeat with the same station and
contact on the same mode and dial frequency within five minutes of a saved
contact. A completed decode row with no message to send also creates no new
log entry. Operators can still enter or log a genuinely separate contact
explicitly. The cooldown does not apply when the frequency or mode changes.

To send one older normal QSO deliberately, open it in the local log and use
its destination-specific **Upload this saved QSO** action. For LoTW, review
and save the **Contact established (UTC)** date and time first if those fields
are blank. CQFTx does not infer that time from the start of an older exchange.
The action queues only the selected QSO and retains any existing receipt to
prevent an automatic duplicate.

Decode history is partitioned by amateur band and digital mode. The pane shows only the selected band and FT8/FT4 mode. A new context therefore begins with an empty view; returning to a previously used band and mode restores up to 20 still-valid cached windows for that context. Changing band or mode does not shorten another context's cache lifetime.

Each decode-window group begins with the same compact **E** or **O** badge used
in the waterfall. The badge identifies whether that group belongs to an even
or odd FT8/FT4 window.

Decode colors are:

- Green: an eligible received CQ.
- Red or salmon: a message addressed to your station.
- Yellow: a local transmission.
- Gray: a worked or activity-duplicate station.
- Orange: an AP-review decode.
- Neutral: other traffic.

If a worked station moves to another park, its current POTA spot makes the new
park eligible for another QSO. When that spot is missing or still shows the old
park, choose **Call despite priority** in the station's priority options, then
select the station again. This allows the call during an activation without
clearing worked history. The override does not change the logged park reference
or bypass log duplicate checks; check the remote park information before relying
on the new contact for park-to-park credit.

## 3. Waterfall and TX offset

Open the waterfall to inspect recent receive windows and select an open TX
offset. CQFTx finds contiguous openings that persist across the analyzed
windows and ranks them by width. The first recommendation for an opening centers
the complete transmitted signal to maximize separation from neighboring
signals. When fewer than three separate openings exist, CQFTx adds distinct,
well-separated choices from the remaining verified-clear space within those
openings. Proximity to the middle of the receiver passband is only a tie-breaker.

The waterfall provides:

- Direct offset entry.
- Open-offset recommendations steered to **Even TX**, **Odd TX**, or **Both TX
  parities**. A parity-specific search uses only matching-parity RX windows;
  **Both** requires an opening that remains clear across both. Recommendations
  are numbered from strongest to weakest and show the measured opening width.
  Up to three choices are shown when enough clear space is available.
- **Locked** TX offset, which keeps your chosen transmit frequency while selecting different stations.
- **Follow**, which allows the selected station's offset to move TX.

Choosing an offset directly switches to **Locked** so the chosen value is used.
During TX, the offset and mode change together for the next transmission.

Open-offset selection and the occupied-offset warning use the same occupancy
score. Before an operator-initiated transmission, CQFTx examines only RX
windows with the same even/odd parity as the intended TX window. Activity in
the opposite parity does not produce a warning. An occupied offset produces a
transient red toast; it does not require acknowledgement and does not block or
disarm transmission.

When live PSK Reporter spots are available, CQFTx can also show a **Possible TX
offset collision** banner. It compares the full on-air FT8 range, so stations
using different radio dial frequencies can still overlap. The banner appears
only when a receiver that has recently reported your station reports another
callsign overlapping a slot in which you transmitted. It is an advisory based
on delayed third-party reports; an absent banner does not prove the offset is
clear. Check the offset when safe. CQFTx never moves the offset or stops TX for
this warning.
Use **Warn about reported FT8 TX offset collisions** in the Spots panel to
turn this advisory on or off. The choice is saved across app restarts. Turning
it off immediately hides the banner and stops receiving other stations' reports
for this feature; your own spots remain available.

## 4. Calling a station

To work a station that is calling CQ:

1. Tap its decode row.
2. Confirm if the CQ is geographically directed elsewhere.
3. CQFTx starts an outbound QSO and schedules the correct message in the station's listening slot.
4. The software advances through call/grid, report, R-report, and final messages automatically.
5. A valid completed exchange is logged automatically.

You can change the target at any time by tapping another received decode row,
including while CQFTx is transmitting. The newly tapped station becomes the
active target immediately. CQFTx checkpoints the previous exchange as
**Suspended** in the QSO State Table without changing its reports, completed
steps, retry state, or completion status.

When the current TX window is also a valid transmit window for the new target,
CQFTx starts transmitting after the required radio/PTT preparation if it is
receiving. If already transmitting a QSO, it keeps PTT asserted, discards queued
audio for the previous message, and
continues the new target's message at the current waveform position. This applies
to any explicitly selected station, including directed replies and resumed
exchanges, throughout the remaining waveform. An automatic CQ first stops and
releases the transmitter before the selected QSO starts. A fresh transmission
also needs enough time for the existing PTT preparation margin. Audio that
has already reached the radio cannot be recalled, so a late switch can reduce
the chance that the new message decodes. Target selection is never blocked by
that timing. If no usable audio remains, or the new target listens in a
different slot, the selection remains active and its message is sent in the
next matching window.

The normal waveform end and return-to-receive deadline do not move. A selection
made after the waveform ends still changes the target immediately, but there is
no remaining message audio to play in that window. Automatic replies and retries
retain their earlier start limits.

With a locked TX offset, changing targets preserves the selected offset. In
Follow mode, the new target's offset is used. Tapping the active station again
does not reset an exchange unless its retry limit has been reached.

To return to an exchange later, open the **QSO State Table** and tap
**Resume CALLSIGN** beneath its **Suspended** row. CQFTx restores that station's
saved exchange step, reports, retries, slot, and offset, then makes it the
active target. If another QSO is active, that QSO is checkpointed as
**Suspended** by the same rule.

Canceling a directed-CQ confirmation or selecting an invalid target leaves the
current contact and waiting callers intact. If replacement PCM generation fails,
CQFTx restores the previous contact and holds TX for an explicit retry. A slow
CQ shutdown retains the chosen caller until RX ownership is released.

Tap any QSO progress button—**CALL**, **REPORT**, **R-REPORT**, **FINAL** (RR73),
or **73**—to select that outgoing message immediately. During transmission,
CQFTx requests a waveform replacement through the current transmitter; it does
not extend the slot. Otherwise the message is prepared for the next eligible
normal transmit window. Incoming decodes cannot advance past this operator
selection until that message has been transmitted. After successful transmission,
normal automatic progression resumes from subsequent received messages; the
selection is a one-transmission override, not a persistent manual mode. Selecting another stage
replaces the pending choice; End QSO still stops the exchange. The former
Skip Step action is removed. Selection alone does not mark a message sent or
claim a completed contact. If waveform preparation fails, TX is held and the
selection is retained for an explicit retry.

Other traffic from the selected station does not pause the workflow. Only valid directed exchange messages advance QSO state.

If retries are exhausted, tapping the station again resets the retry counter and attempts the exchange again. **End QSO** cancels the active attempt without claiming a completed contact.

## 5. Calling CQ

Open **CQ Options** to select the CQ message and slot, then tap **Start CQ**. The options and start buttons are replaced by one large **Stop CQ** button.

When the readiness check blocks a new CQ, its button reads **CQ blocked** and
cannot start transmission. **Open Radio setup** remains available beside the
operating controls. A running CQ still exposes **Stop CQ** if a connection fails.
The decode pane says when RX audio is unavailable or when it is waiting for
the first receive window; a quiet completed window is reported separately.

The Integrations menu summarizes each service independently. QRZ shows key
validation and pending, accepted, and verified counts; ClubLog shows its
account check, whether new uploads are on, pending, submitted, verified, and
blocked-QSO counts; LoTW shows signing
readiness and pending, accepted, and confirmed counts. Accepted or submitted
QSOs still await the service's remote verification stage.
Open ClubLog to see the callsign, UTC time, and reason for each blocked QSO;
the matching local log entry shows its reason too. A blocked receipt does not
stop later ClubLog uploads. Check the remote log before resubmitting because a
remote copy may already exist.
Older saved-identity blocks whose retained ADIF now validates receive a
readback-only check; CQFTx does not upload those QSOs again automatically.
LoTW setup groups the imported TQSL backup and local signing check, web report
access, and upload controls in that order.

Direct callers are retained in the CQ replies queue even when CQ has stopped or
the queue was previously empty. Receiving a caller does not itself enable TX.
When you tap **Start CQ**, CQFTx answers the highest-priority eligible waiting
caller before sending another CQ. Duplicate contacts in the current operating
context are excluded. Existing ignored-station, pending-log, band/mode, and
caller-freshness rules still apply; a standby caller needs a fresh reception to
be selected automatically.

If a station uses all retries without replying, its unfinished exchange is
preserved and removed from the active queue. In Assisted or Full, while CQ remains authorized,
CQFTx proceeds to the next eligible waiting caller, excluding the timed-out
station for that handoff. If nobody is waiting, only Full resumes CQ automatically,
subject to the configured **Max calls** limit. An operator stop, TX hold, or a newly selected QSO prevents an old timeout
callback from starting another contact.



While CQ is authorized:

1. CQFTx transmits only in the selected slot.
2. It receives and decodes in the opposite slot.
3. A valid reply in the direct response window stops CQ.
4. CQFTx ranks eligible responders and automatically starts the best one.
5. The QSO proceeds through logging without operator interaction.
6. After completion, None ends automatic answering. Assisted and Full retain
   the authorized session and select the next eligible caller through the normal
   TX checks. A TX hold prevents continuation. With an empty queue, Assisted
   keeps listening; Full starts another bounded CQ run.

Tap **Stop CQ** to revoke automatic reply authorization. Later directed messages remain visible and selectable, but they cannot automatically start a QSO from the stopped session.

A first signal report is a valid shortened reply. CQFTx sends the corresponding R-report. An R-signal report may start directly at RR73 when the retained station history supports the exchange. An isolated RRR, RR73, or 73 without report-exchange evidence cannot create or log a new QSO.

Outgoing signal reports use the station's latest accepted received signal strength. When later decode stages refine the same message, the displayed decode uses the latest measurement at the same trust level, even when it is weaker. A suspect duplicate does not replace a trusted decode in history or change the outgoing report. Explicitly accepting an AP decode updates its history entry while retaining its operator-accepted label; if a newer reception exists, its signal strength remains the outgoing report even when the older accepted message advances the exchange. Selecting a retained decode without a current station record uses that decode's measured signal strength.

POTA and SOTA replies retain priority over ordinary replies. Within the same eligibility class, R-reports rank ahead of first reports, which rank ahead of grid replies. Equal-stage replies retain first-response order.

### Grid-only contest replies

Some FT8/FT4 contest exchanges use `YOURCALL THEIRCALL R GRID` instead of a
numerical signal report. CQFTx recognizes this as an acknowledged grid from the
selected station. If CQFTx has already transmitted your grid in that contact,
it proceeds to RR73. Otherwise it sends your ordinary grid message first and
waits for acknowledgement. Report stages are not required for this exchange;
reports that were never sent or received remain blank in the log. The displayed
RX signal strength is still the measured reception strength.

A manually selected stage remains pinned until its successful transmission;
subsequent received messages resume automation. Repeated acknowledged grids for
an already logged contact resend RR73 for that contact and do not create
another log entry. A later CQ from that station does not by itself turn a
repeated acknowledged report into a new contact. This supports incoming
grid-only exchanges, not a
new contest transmit mode: the current native encoder is not used to generate
`R GRID` messages. See the [WSJT-X contest message examples](https://wsjt.sourceforge.io/wsjtx-main_en.html#_contest_messages).

## 6. QSO status panel

The QSO panel presents:

- Callsign and next transmit timer.
- Current message and retry count.
- Exchange-stage buttons: the current stage has a thick outline and dot; completed stages show a check mark.
- Remote location and calculated distance when both grids are known.
- PSK Reporter context.
- RX dB, DT, audio frequency, and last-received age.

The entire exchange is automatic after target selection. Operator controls remain available for ending the QSO or handling exceptional recovery.

### Log an incomplete active contact

Open **QSO Options**, then choose **Log this QSO** to save the active contact before
its exchange completes. This is an explicit operator decision: known reports are
saved and missing reports stay blank. The app keeps the exchange, retries, TX hold
and automation authorization unchanged. Saving does not send a message or claim
that a final message was received.

The contact appears in **Last saved** only after storage confirms success. Failed
writes remain available for retry, including after restart when recovery storage
succeeds. Repeated saves and later automatic completion reuse the saved exchange;
they do not create another entry or overwrite corrections you made in the log.
If you switch contacts while the options dialog is open, reopen it for the current
contact. Standalone Send 73 and closeout-only retries cannot create a new contact.

### Final 73 and manual resends

Enable **Send final 73 during activations** when starting an activation, or in
**Activity** while an activation is running, to send one
courtesy 73 after receiving a valid RR73. The setting defaults to off; Normal
operation continues to send its usual courtesy 73. The contact is completed and
saved before the courtesy transmission. Canceling that transmission does not
remove the logged contact; a failed save remains available for retry.

To send or resend a final 73 after moving on, long-press the station's decoded
row and select **Send 73** in its station details. This works for already-worked
stations and does not create a contact or change the existing log. It requires a
recent, non-suspect decode with slot information on the current band and mode.
The latest qualifying decode supplies the slot; your existing TX offset/lock
setting still applies.

The status reports **73 to CALLSIGN queued**. Use **Stop QSO** to cancel. Auto CQ
stops, an on-air frame finishes normally, and the 73 uses the next eligible slot.
Any previous exchange is suspended for explicit resume from the QSO State Table.
Each resend requires another **Send 73** action. A failed attempt does not repeat
automatically. Leaving the operating screen cancels a pending manual 73; requests
do not survive app restoration.


## 7. Logging

Normal operation uses the continuous station log. Every selected activation
program uses a separate activation session and log.

CQFTx logs after durable exchange completion. Receiving RR73 or 73 can complete
logging before a courtesy transmission. Receiving RRR prepares a required 73 in
Normal operation and every activation, including POTA; only RR73 uses the
activation fast-close policy unless the final-73 setting is enabled. A failed log write is retained for retry, and
repeated completion callbacks cannot create duplicate records. A contact that is
an award duplicate is still kept once in the master log; CQFTx excludes only its
program-specific qualification credit.

Tap the QSO log icon in the main display to review and manage logs. The logbook
contains QSO and activation views, search and activity filters, ADIF export,
ADIF import, backup restore, and log-clearing controls. Log management is not
part of the hamburger menu.

In **Manage Logs**, **Save complete database backup…** writes a SQLite file to
the location selected in Android's file picker. This includes every operator
database table: contacts, activations, pending exchanges, QRZ/ClubLog/LoTW
delivery state, and watch rules. Verify that Android reports the save complete
before moving or deleting the original device. Account credentials and catalog
caches are stored outside this database and are not in this file.

**Restore complete database from file…** validates the selected file and shows
a replacement warning. Stop CQ and finish any active QSO first. On confirmation,
CQFTx validates and migrates an older supported backup in a private copy,
saves the current database as a rollback backup, replaces all operator database
rows in one transaction, and closes. Reopen the app to load the restored state.
A corrupt or incompatible backup leaves the current database untouched.
**Merge QSOs from latest internal backup** is a separate additive
operation; it does not restore integration receipts or other database state.

### Add a contact manually

On the logbook's **QSO** tab, select **Add QSO** to enter a completed contact.
Manual entry supports SSB, FM, AM, FT8, and FT4 and works offline. Phone modes
are logbook choices; the live operating-mode selector remains FT8/FT4.
Opening the form does not stop CQ or an active exchange, or key the radio.

The full-screen form scrolls so Callsign and the operating fields remain reachable
with the keyboard open. **Done** and **Log & Next** stay outside the scrolling form:
below it across the full form width in both orientations. The station and activity context
appears above Callsign. Mode, band, and frequency have visible labeled controls;
check them before saving. A usable frequency reported by a ready radio fills
frequency and band when the form opens. Without one, the selected band remains and
frequency is blank for manual entry. New forms start in SSB, so confirm FM or AM
when needed.

Enter the callsign, sent/received reports (default 59), and optional
State/Province. Each field keeps its label beside the value, including fields
under **More details**. Large fields have a thicker outline when focused; the fixed
action area separates Done from the larger Log & Next action. Tap a report to
select its value and replace it with the numeric keyboard.
QRZ station lookup is optional, may fill an untouched State/Province, and never
blocks offline logging. A **Worked earlier** hint shows the latest matching
station contact across bands and modes; it does not reject a contact or determine
award credit. The current activation program’s worked-reference field is shown
directly. Expand **Park-to-park / Summit-to-summit** for other optional worked
references. **More details** exposes UTC and grid.

**Log & Next** saves locally, clears contact-specific values, restores the
report defaults, and returns focus to Callsign. A persistent **Last logged** row
shows the saved callsign, band, mode, and UTC; tap it to edit through the normal
log editor; in landscape, scroll the form to reach this row. The row appears only
after confirmed durable saving. Software
keyboard Next and plain Enter advance between visible fields; external keyboards
can use **Ctrl+Enter** to submit and Tab to move focus. Done or Back asks before
discarding unfinished contact data; tapping outside does not dismiss the form.
The activity active when you open the form is attached to every contact entered
in that form. With no active activity, entries go into the Normal log. Close and
reopen the form when you need a different activity context. QRZ upload follows
that activity's saved consent, or the configured QRZ book for Normal contacts.

After each save, mode remains selected and the app refreshes band and frequency
from the radio for the next contact. If you edited either radio field manually,
both values remain as entered. **Read radio** requests a fresh CAT read beside
the visible operating fields. If the radio is unavailable or the read fails,
the current values stay in place and the form prompts for manual entry. Verify
the fields match the contact you are logging. UTC start/end
and optional grid are editable under **More details**. FT8/FT4 use signed signal reports rather
than the phone-mode default of 59. A validation or storage failure keeps the
draft available for correction or retry; wait for **Last logged** before treating
the contact as saved.

### Review, export, and import

Log rows may be corrected. Swipe deletion offers undo. ADIF export is available for completed logs and ended activation sessions.

Open **Manage**, then **Import ADIF**, to select an ADIF file through Android's
document picker. CQFTx reads at most 16 MiB and does not modify or remove the
selected source. Before writing anything, it presents:

- The number of source records and QSOs ready to add.
- Duplicates found within the file and duplicates already in the log.
- Rejected records with record numbers and validation reasons.
- A sample of the QSOs that will be added.

Only FT8, FT4, SSB, FM, and AM records with valid contacted and station callsigns, a valid UTC
start that is not in the future, a frequency that maps to a supported amateur
band, and valid supplied grid values are accepted. Grids are optional. Ordinary
contacts require no activation reference; a station activity reference is
required only when the imported record explicitly identifies the operator's
contact as part of an activation. These are the same minimum
viable-QSO checks used before CQFTx exports a log. Cancel leaves the log unchanged.
Confirming **Import** first writes and verifies a complete
pre-merge database and JSONL backup, then merges every accepted QSO in one
SQLite transaction. Any merge failure rolls back the entire batch. The final
report gives added, duplicate, and rejected counts; duplicate detection is
rechecked during the transaction in case the log changed after preview.

## 8. Activation programs

Open **Activity**. Select POTA, SOTA, WWFF, or WWBOTA to start with one
program, or use **Find an activation location** when an exact GNSS position is
available. Program-first setup offers **Find nearby**, **Search locations**, and manual
reference entry for the selected program.

Location-first discovery immediately opens the full-screen cached-locations map for
all selectable programs. It centers on the current GNSS position and initially shows
an area extending 20 km north, south, east, and west; there is no intermediate filter
form. Each provider-owned result appears under its stable program/reference identity
with only its evidenced program badges.
Tapping a marker shows the location, coordinates, distance, references, and evidence.
Choose the activation action explicitly, then select the primary program when the
location supports more than one.

Completed pan, pinch, or zoom-button gestures query the retained index for the visible
map area and show at most 200 results. Tapping a marker does not perform another query.
The recenter action returns to the current station position. The same retained map-tile
cache is used offline; a missing background tile does not remove cached activation
locations or prevent manual reference entry.

All discovery queries are local and do not wait for Internet. While a discovery or
activation-setup view is open, CQFTx uses each live GNSS position fix so a new nearby
lookup starts from the latest available coordinates. Program-first nearby lookup reads
the selected program's own cached catalog, uses a fixed 200 km radius, and lists the ten
closest results. **Search locations** also reads that provider catalog directly. When
available, the combined location index adds verified references from other programs to
the selected result; it is not required to choose the primary location.

Opening discovery, changing a selection, and moving the map never download or rebuild
a catalog. Provider directories refresh separately in the background. Only a changed,
verified provider generation rebuilds the shared location index used by the combined
map. A failed download, parse, database replacement, or shared-index rebuild keeps the
last complete generation. These caches are durable across app restart and contain no
operator logs. When GNSS or a catalog is unavailable, enter a reference manually;
CQFTx retains it as an unverified snapshot for that activation.

After choosing a location, select **Choose programs at this location** to review its
references. Choose one primary activation type and explicitly select any secondary
references. The primary type controls the CQ message and automatic-spotting choice.
Identical non-empty location names merge into one result and are labeled as exact-name
matches; matching coordinates alone do
not create that relationship.
CQFTx may show references from another catalog within 1 km as possible matches, but
distance alone never proves eligibility. To use one, confirm whether it is the same
site, located within the reference, or overlaps its activation area. That confirmation
can apply only to the current activation or be remembered on this device. Remembered
mappings continue to be applied automatically during later location-index rebuilds.

Activation setup includes **Log this activation’s QSOs to QRZ.com** when
a validated QRZ Logbook key is enabled. Each activity type remembers its most
recent selection. The active activation may change the choice until its first
QSO is committed locally; the choice then locks for that activation. When QRZ
is not configured, the checkbox is disabled but activation setup and local/POTA
export logging continue normally.

Starting an activity changes logging and CQ context; it does not change an operating mode.

For POTA:

1. Start a POTA activity.
2. Choose a nearby park from GPS results or enter a reference manually.
3. Verify the reference and grid.
4. Optionally enable automatic self-spotting.
5. Start CQ or tap another station as desired.

Automatic POTA spotting waits for the first successful activation transmission, refreshes after frequency or mode changes and at the configured interval, and posts QRT when the activity ends.
It is available only when POTA is the primary activation type. A secondary POTA
reference provides a manual POTA spotting action instead.

For SOTA, choose or enter the summit reference, then operate the same way. SOTA
spot submission remains a manual action.

For WWFF, choose or search the cached official directory, or enter one WWFF
reference manually. CQFTx shows progress toward 44 qualifying contacts for the
session. Incoming activators appear from the WWFF Spotline feed when their spots match
the selected band and FT8/FT4 mode. Outgoing WWFF spotting remains an explicit action
that opens Spotline; CQFTx does not submit automatically.

For WWBOTA, choose a nearby bunker from the cached official master list,
search by reference or name, or enter a full `B/<scheme>-NNNN` reference. Up to
five co-located bunker references may be entered as a comma-separated list.
CQFTx shows 25 qualifying contacts for HF or mixed-band operation and five for
VHF-only. The same station can earn another contact on another band; merely
changing mode on the same band does not add another. This progress is an
operating aid, not an award adjudication. WWBOTA spotting opens the manual
cluster action; CQFTx does not submit automatically without an approved provider
policy. WWBOTA publishes an API, but CQFTx's first integration keeps the external
write operator-driven until its fixed rate, identity, and conflict rules complete
field validation.

CANParks closed in September 2026 and is no longer available for location discovery,
activation setup, incoming spots, or outgoing spotting. Existing CANParks log records
remain readable and retain their historical ADIF association.

Every logged QSO receives an immutable copy of all selected program references.
The general ADIF export preserves every association; award-specific export
creates the required program/reference projections. POTA, SOTA, and WWFF dedicated
fields remain compatible. Programs without dedicated ADIF fields, including WWBOTA,
use the appropriate `MY_SIG`/`MY_SIG_INFO` and `SIG`/`SIG_INFO`
associations.

## 9. Radio safety

CQFTx verifies the selected radio and audio routes before every transmit. Failed CAT, removed USB audio, incomplete waveform output, or a route change aborts the transmission and returns the radio to RX without advancing QSO state.

On capable radios CQFTx monitors power and SWR. A protection event:

- Stops transmit audio.
- Commands RX.
- Blocks further transmission.
- Displays a large red warning that the operator must acknowledge.

QMX firmware SWR protection is polled through the radio driver. A red lock indicates the radio itself is in protection mode; clear that condition at the radio before transmitting again.

## 10. Background behavior

Optional background receive uses an Android foreground service. Leaving the app stops active or automatic transmission and puts an active contact on TX hold. Returning to the app keeps RX available; use **Send QSO**, confirm a valid new station selection, or tap **Start CQ** to re-enable TX. A USB detach immediately invalidates the radio session; reconnecting requires fresh CAT and audio validation.

## 11. Diagnostics and recovery

Use **Diagnostics** to inspect radio identity, CAT replies, audio routes, receive-window quality, decode timing, TX timing, SWR/power, QSO decisions, and log outcomes.

**Export Diagnostics** creates a ZIP suitable for field-failure review. **Reset Operating State** clears the active QSO, CQ authorization, prepared transmission, and retained decodes while preserving completed logs and station configuration.

Debug builds include RF-safe operation, pressure, QSO-state, and native-audio simulators. These harnesses never key a physical radio.

## 12. Quick starts

### Work a CQ

1. Connect and validate the radio.
2. Select band and FT8/FT4.
3. Choose or lock a clear TX offset.
4. Tap an eligible CQ.
5. Let CQFTx complete and log the exchange.

### Call CQ

1. Connect and validate the radio.
2. Select band, FT8/FT4, CQ message, and slot.
3. Choose or lock a clear TX offset.
4. Tap **Start CQ**.
5. Let CQFTx select and complete valid replies.
6. Tap **Stop CQ** when finished.

### Start an activation

1. Open **Activity** and select a program, or choose **Find an activation location**.
2. Choose a nearby cached location, search the cache, or enter a reference manually.
3. Select a primary type and any verified secondary program references. Confirm any
   proximity-only suggestion before it can be used.
4. Confirm grid, radio, band, mode, and TX offset.
5. Enable automatic POTA self-spotting if POTA is primary and desired. Secondary POTA,
   SOTA, WWFF, and WWBOTA provide manual spotting actions.
6. Start CQ or select a CQ station.
7. End the activity explicitly and export its ADIF log. POTA setup can optionally
   copy the activating park reference into each ADIF `COMMENT`; the checkbox is
   off on first use and remembers the operator's most recent choice. Structured
   POTA fields are always exported independently of that compatibility option.

### Retuning and pending QSO recovery

When CAT reports a changed dial frequency, CQFTx suspends the current QSO,
cancels prepared transmission and CQ continuation, and retains the exchange for
later resumption. Select the station or start CQ again on the intended frequency
to resume operation. Decodes still completing from the previous operating context
cannot advance the new exchange.

**End Activation** is available even when some QSO logs have not been saved.
The confirmation warns that those contacts remain pending. Ending retains them
under the original activation; you can start another activity while recovering them.
The end-of-activation ADIF export is available immediately and includes saved and
available pending contacts, deduplicated in favor of saved records. It also works
when every available contact is pending. Review the warning and contacts before
submission. Ending or exporting does not discard pending contacts, resolve their
recovery state, or claim that they were saved to the local log. The activation's
own end state must still be stored;
if that write fails, CQFTx reports the failure and allows another attempt.

Skipping a final transmission saves a pending log confirmation for recovery after
restart; it does not log the contact automatically. If storage cannot be confirmed,
CQFTx warns you to keep the app open until you confirm or discard the entry.
Automatic handoff to the next CQ caller excludes STANDBY stations. They remain
visible and manually selectable; a fresh qualifying reply restores automatic eligibility.

Discarding a pending QSO displays **Discarding…** until storage confirms removal.
Logging and a second discard are unavailable during that operation. If removal
fails, the entry remains pending and CQFTx reports that it can be retried.

### Viewing and skipping queued callers

In the left QSO management area, **Queue** opens a scrollable list of the active
contact and waiting callers in priority order. Standby and closeout-only entries
are labelled separately. Close and reopen the list to refresh it.

**Skip station** immediately selects the next eligible waiting caller using the
normal transmit controls. The unfinished contact is retained but its current
queue entry is removed; a fresh reply can add it again. If no eligible caller
remains and Full automation is still authorized, CQ resumes after the current transmit owner
returns the radio to RX. The configured **Max calls** limit still applies.
Assisted keeps listening for new callers without sending CQ; None stops automatic
answering after the contact. If CQ is disabled, transmission stops. This differs from
**Stop QSO**, which stops the operation instead of advancing through callers.

In Full, CQ also resumes when the last queued QSO completes or exhausts its retries.
**Stop CQ** revokes this authorization; **Stop QSO** holds transmission and ends
the CQ session. Safety/readiness failures still prevent automatic transmission.


### QSO automation level

Under **Station Setup**, use the three-position **QSO automation** slider:

| Setting | Caller handling | Empty queue |
| --- | --- | --- |
| **None** (default) | Answer one station per operator-started CQ session | End automatic answering |
| **Assisted** | Work eligible callers in queue order | Keep listening and answer fresh callers; do not send CQ |
| **Full** | Work eligible callers in queue order | Resume CQ, with the configured Max calls limit |

Changing the setting does not authorize transmission. Start CQ explicitly to
start a session at the selected level. Changing levels invalidates the old
session authorization; it does not interrupt a contact already underway.
**Skip station** remains an explicit way to select the next eligible caller in
any level. Stop QSO and Stop CQ revoke the session; queued callers remain subject
to duplicate, freshness, AP-trust, and operator-hold checks.

Each activation started in Assisted or Full requires **Continue / Cancel** on an
offline rules notice for its selected programs. Cancel leaves the activation
unstarted. Selecting Full also requires a new acknowledgement before the slider
accepts that selection. There is no “remember my choice” bypass.

The notices cite [POTA rule 6](https://docs.pota.app/docs/rules.html),
[WWFF §3.10](https://wwff.co/wwff_cont/uploads/2025/09/WWFF-Global-Rules-V_5.10.pdf),
[SOTA §3.7.1](https://www.sota.org.uk/Joining-In/General-Rules), and
[WWBOTA general/national award rules](https://wwbota.net/awardsnew/), as applicable.
POTA and WWFF expressly require personal operator action; the displayed SOTA and
WWBOTA provisions are not presented as an explicit software-automation ban.

The Full notice explains U.S. control-operator duties and control arrangements
under [47 CFR §97.3](https://www.ecfr.gov/current/title-47/section-97.3),
[§97.105](https://www.ecfr.gov/current/title-47/section-97.105),
[§97.109](https://www.ecfr.gov/current/title-47/section-97.109), and automatic digital
station restrictions under [§97.221](https://www.ecfr.gov/current/title-47/section-97.221).
Supervised sequencing is not necessarily regulatory automatic control. Continue
acknowledges the notice, rather than certifying legal or program compliance.


### Combined RR73 and next-caller report

In Assisted or Full, an eligible caller waiting in the same mode and transmit
slot can be announced in the current contact's closing frame:

`K1ABC RR73; K2NEW <MYCALL> -12`

The first callsign is the contact being completed. Its log is created only after
successful transmission, through the normal durable-log/recovery path. The
second callsign receives its first signal report in that same frame. If it does
not reply, the next attempt sends the ordinary `K2NEW MYCALL -12`; it does not
repeat the previous contact's RR73. A response arriving while logging finishes
retains its more advanced QSO stage. Existing retry limits and operator stops apply.

The Type 0.1 format hashes the transmitting callsign (shown in angle brackets)
and represents reports in two-decibel steps from -30 to +32. Both recipient calls
must fit its standard-callsign encoding. Unsupported calls, a different slot/mode,
an ineligible queue target, or an explicitly forced stage retain normal messages.

Decoder 0.4.93 adds reception of this compound frame. A known transmitting
callsign produces separate RR73 and report observations for the two recipients.
An unresolved callsign hash remains visible as `<...>` but cannot drive a QSO.
Decoder 0.4.93 has passed its reviewed host and tablet qualification, including
FT8/FT4 round-trip checks. App release checks remain separate and are still in
progress. Historical failures remain recorded.

<!-- CQFTX_WEBSITE_METADATA
{"schema":1,"radios":[{"id":"QMX","name":"QMX","capabilities":{"txMeters":true,"receiverHealth":true,"discoverableBands":true,"receiveAudioOutputLevel":true,"transmitAudioDrive":true,"transmitControl":true,"transmitAudioInputLevel":false,"alcMeter":false,"transmitPowerMeterPolling":true,"swrMeterPolling":true}},{"id":"QDX","name":"QDX","capabilities":{"txMeters":false,"receiverHealth":false,"discoverableBands":false,"receiveAudioOutputLevel":true,"transmitAudioDrive":true,"transmitControl":true,"transmitAudioInputLevel":false,"alcMeter":false,"transmitPowerMeterPolling":false,"swrMeterPolling":false}},{"id":"IC705","name":"IC-705","capabilities":{"txMeters":true,"receiverHealth":false,"discoverableBands":false,"receiveAudioOutputLevel":true,"transmitAudioDrive":true,"transmitControl":true,"transmitAudioInputLevel":true,"alcMeter":true,"transmitPowerMeterPolling":true,"swrMeterPolling":true}},{"id":"IC7300","name":"IC-7300","capabilities":{"txMeters":true,"receiverHealth":false,"discoverableBands":false,"receiveAudioOutputLevel":true,"transmitAudioDrive":true,"transmitControl":true,"transmitAudioInputLevel":true,"alcMeter":true,"transmitPowerMeterPolling":true,"swrMeterPolling":true}},{"id":"IC7300MK2","name":"IC-7300MK2","capabilities":{"txMeters":true,"receiverHealth":false,"discoverableBands":false,"receiveAudioOutputLevel":true,"transmitAudioDrive":true,"transmitControl":true,"transmitAudioInputLevel":true,"alcMeter":true,"transmitPowerMeterPolling":true,"swrMeterPolling":true}},{"id":"IC718","name":"IC-718","capabilities":{"txMeters":false,"receiverHealth":true,"discoverableBands":false,"receiveAudioOutputLevel":false,"transmitAudioDrive":true,"transmitControl":false,"transmitAudioInputLevel":false,"alcMeter":false,"transmitPowerMeterPolling":false,"swrMeterPolling":false}},{"id":"IC706MKIIG","name":"IC-706MKIIG","capabilities":{"txMeters":false,"receiverHealth":false,"discoverableBands":false,"receiveAudioOutputLevel":false,"transmitAudioDrive":true,"transmitControl":false,"transmitAudioInputLevel":false,"alcMeter":false,"transmitPowerMeterPolling":false,"swrMeterPolling":false}},{"id":"IC7100","name":"IC-7100","capabilities":{"txMeters":true,"receiverHealth":false,"discoverableBands":false,"receiveAudioOutputLevel":true,"transmitAudioDrive":true,"transmitControl":true,"transmitAudioInputLevel":true,"alcMeter":true,"transmitPowerMeterPolling":true,"swrMeterPolling":true}},{"id":"IC7610","name":"IC-7610","capabilities":{"txMeters":true,"receiverHealth":false,"discoverableBands":false,"receiveAudioOutputLevel":true,"transmitAudioDrive":true,"transmitControl":true,"transmitAudioInputLevel":true,"alcMeter":true,"transmitPowerMeterPolling":true,"swrMeterPolling":true}},{"id":"IC9700","name":"IC-9700","capabilities":{"txMeters":true,"receiverHealth":false,"discoverableBands":false,"receiveAudioOutputLevel":true,"transmitAudioDrive":true,"transmitControl":true,"transmitAudioInputLevel":true,"alcMeter":true,"transmitPowerMeterPolling":true,"swrMeterPolling":true}},{"id":"IC905","name":"IC-905","capabilities":{"txMeters":true,"receiverHealth":false,"discoverableBands":false,"receiveAudioOutputLevel":true,"transmitAudioDrive":true,"transmitControl":true,"transmitAudioInputLevel":true,"alcMeter":true,"transmitPowerMeterPolling":true,"swrMeterPolling":true}},{"id":"G90","name":"Xiegu G90","capabilities":{"txMeters":true,"receiverHealth":true,"discoverableBands":false,"receiveAudioOutputLevel":false,"transmitAudioDrive":true,"transmitControl":true,"transmitAudioInputLevel":false,"alcMeter":true,"transmitPowerMeterPolling":false,"swrMeterPolling":false}}]}
-->
