Advanced Features

This section covers advanced features and configuration options for experienced users.

Serial CLI Reference

DXSpotter Pro exposes a serial command-line interface over USB-C at 115200 baud. The CLI is available at any time during operation (no special boot mode needed).

Note

Plug the USB-C cable into your computer, then connect to the serial port that appears — typically cu.usbmodem* on macOS, ttyUSB* on Linux, or COM* on Windows — at 115200 baud.

Available Commands

Type help (or ?) to see the live list. The full set of commands:

Command

Description

help / ?

Print the list of available commands

show

Print the current configuration: callsign, cluster, filter, device name, timezone, max spots, and the WiFi list

wifi add <ssid> <password>

Append a WiFi credential (max 5). The list is full when wifiCount hits 5; use wifi clear first

wifi clear

Erase all WiFi credentials from the in-memory config

cluster <host> [port]

Set the DX cluster server. Port defaults to 7300 if omitted

callsign <call>

Set the operator callsign (auto-uppercased)

filter <cmd...> / filter clear

Set or clear the band filter (slot 0). Whatever follows filter is taken verbatim as the filter command

tz <posix-tz>

Set the timezone using a POSIX TZ string. Example: GMT0BST,M3.5.0/1,M10.5.0/2 for UK

save

Persist the in-memory config to NVS. Required after most wifi / cluster / callsign / filter / tz changes

reboot

Restart the device

ota

Trigger an immediate OTA version check and install if newer

reset-lcd

Re-initialise the display and force a full redraw. Harmless to run any time; rarely needed

Tip

Most settings change require a follow-up save to be remembered after reboot. The CLI will remind you with (remember to save).

CLI Examples

Adding a WiFi network from the CLI:

wifi add MyHomeWiFi MySecurePassword123
save
reboot

Switching to a different cluster:

cluster dxc.g3lrs.org.uk 7300
save

Setting your callsign and filter:

callsign K3ABC
filter accept/spot 0 freq 20m
save

Setting the timezone (UK):

tz GMT0BST,M3.5.0/1,M10.5.0/2
save

Triggering an OTA update right now:

ota

Recovering from a 1-pixel scan-out drift (rare):

reset-lcd

Inspecting current config and connection state:

show

This prints something like:

---- config ----
callsign : K3ABC
cluster  : dxc.hamserve.uk:7300
filter   : 'accept/spot 0 freq 20m'
device   : dxspotter-pro
tz       : GMT0BST,M3.5.0/1,M10.5.0/2
maxSpots : 64
wifi (2):
  [0] MyHomeWiFi (pw set)
  [1] BackupNetwork (pw set)
----------------

Over-The-Air (OTA) Firmware Updates

DXSpotter Pro checks for firmware updates automatically. Updates are downloaded securely over HTTPS from the TopBytes update service.

How OTA Works

  • On boot, the device waits about 30 seconds for WiFi and other services to settle

  • It then asks the update service whether a newer release is available for this unit

  • The on-screen modal shows download progress; the device reboots into the new firmware automatically

After the boot check, the cycle repeats every hour for the rest of uptime.

Manual OTA Trigger

You don't have to wait for the hourly cadence:

  • Serial CLI: type ota

  • Touch UI: touch link, to bring up the network details panel and then select update

The OTA Progress Modal

When an update is in progress, a full-screen modal takes over the LCD with:

  • Title: "Firmware Update"

  • Status text: "Connecting..." -> "Downloading..." -> "Done — rebooting"

  • A horizontal progress bar (0% to 100%)

  • The numeric percentage

If the update fails, the modal shows the error message instead of "Done — rebooting" — common errors include HTTP 4xx (server didn't have the firmware), connect failed (network issue), timeout, and flash write: ... (rare partition error).

Warning

Do not power off the device during an OTA update. Loss of power mid-flash can leave the device in an indeterminate state requiring USB recovery (see Troubleshooting).

Alert Matching Rules

DXSpotter Pro's alert system matches incoming spots against a list of up to 10 callsign or prefix entries.

How Matching Works

For each incoming spot, the spotted DX callsign is compared against every alert entry using a case-insensitive startsWith match.

Examples:

Alert entry

DX callsign

Match?

3B7

3B7M

Yes (prefix)

3B7

3B7A/P

Yes (prefix)

3B7

3B8FA

No (different prefix)

vk9dx

VK9DX

Yes (case-insensitive)

K3ABC

K3ABCD

Yes (startsWith — be careful!)

K3ABC/M

K3ABC

No (entry is longer than the spot)

Tips for Choosing Alert Entries

  • Use the prefix only when chasing a DXpedition — 3B7 matches every operator on the expedition without needing to list each call

  • Use the full callsign when chasing a specific operator

  • Avoid very short prefixes (K, W, G) — they'll match too many spots and the popups will be a constant interruption

  • Casing doesn't matter — type whatever's convenient

Match Effects

When a spot matches:

  1. The spot row in the spot list is rendered with an amber background

  2. The first time a spot's match is detected, the alert popup modal is shown with the full spot details

  3. The popup auto-dismisses after alertDismissSecs seconds (default 60, range 0–600). Set to 0 to require manual dismissal

  4. The amber row remains highlighted until it ages out of the spot ring buffer

Custom Filters via the Web Portal

The web portal supports up to 5 custom filter presets. Each preset is a friendly name plus a raw filter command. Presets appear:

  • In the web Filter dropdown (selecting one applies it via the cluster preset path)

  • In the PRESETS section of the on-device MODE modal

Defining a Custom Filter

  1. Open the web portal (http://<device-ip>/)

  2. Scroll to the "Custom Filters" section

  3. Click Add to create a new entry

  4. Fill in the Name (e.g. 20M FT8) and Command (e.g. accept/spot 0 freq 14.070-14.080)

  5. Save

The new filter is now selectable from both the web dropdown and the touch MODE modal.

Filter Command Syntax

DXSpotter Pro sends filter commands directly to the cluster server. The exact syntax depends on the cluster's software (DX-Spider, CC Cluster, AR-Cluster), but DX-Spider syntax is the most common:

Basic band filters:

accept/spot 0 freq 160m
accept/spot 0 freq 80m
accept/spot 0 freq 40m
accept/spot 0 freq 20m
accept/spot 0 freq 15m
accept/spot 0 freq 10m

Frequency range filters:

accept/spot 0 freq 14.000-14.100   # 20M CW segment
accept/spot 0 freq 14.200-14.350   # 20M SSB segment
accept/spot 0 freq 7.000-7.080     # 40M CW

Mode-style filters (slot 1):

accept/spot 1 freq hf/cw
accept/spot 1 freq hf/ssb
accept/spot 1 info ft8
accept/spot 1 info ft4

Composable rules:

DXSpotter Pro composes slot 0 (band) AND slot 1 (mode) on the cluster automatically. Any custom filter you define in the web portal is treated as a preset, meaning it atomically replaces both slots when applied.

Combined rules in a single preset:

accept/spot 0 freq 20m and info ft8
accept/spot 0 freq hf and by_zone 14
accept/spot 0 freq 20m or freq 15m or freq 10m

Refer to your cluster's help (via raw telnet) for the supported filter grammar.

Two-Slot Composable Filtering Behaviour

The on-device band rows and MODE buttons interact with the two-slot system as follows:

  • Tap a band -> updates slot 0 (band filter), preserves slot 1 (mode), AND-combined on the server

  • Tap a mode -> updates slot 1 (mode filter), preserves slot 0 (band), AND-combined on the server

  • Tap a PRESET in the MODE modal -> atomic replacement of both slots; the filter is treated as a single recipe

  • Tap CLEAR in the filter footer -> removes both slots in one round-trip

  • Pick a preset from the web filter dropdown -> equivalent to tapping a PRESET on screen

If a PRESET is active and you tap a band or mode button, the preset is replaced — band/mode taps don't compose with presets.

Web Portal Network Information

The web portal is reachable at:

  • http://<device-ip>/ while connected to your WiFi

  • http://<deviceName>.local/ if your network supports mDNS/Bonjour

  • http://192.168.4.1/ when the device is in AP setup mode

Warning

The web interface has no password protection. Use only on trusted local networks. Do not expose to the public internet.

Network Administration

Port Usage

DXSpotter Pro uses the following network ports:

Port

Protocol

Purpose

80

TCP (HTTP)

Web configuration interface (inbound)

53

UDP (DNS)

DNS resolution (outbound; also inbound DNS in AP mode)

123

UDP (NTP)

Time synchronisation (outbound)

7300*

TCP (Telnet)

DX Cluster connection (outbound — varies per cluster)

443

TCP (HTTPS)

Cached propagation feed + OTA firmware downloads, both to u.topbytes.net (outbound)

* Port number varies based on the configured cluster; 7300 is the most common.

Firewall Considerations

For normal operation:

  • Allow outbound TCP to your cluster's port (e.g. 7300)

  • Allow outbound UDP to NTP servers (port 123)

  • Allow outbound DNS (port 53)

For the propagation panel and OTA:

  • Allow outbound HTTPS to u.topbytes.net (port 443) — serves both the cached propagation feed and firmware updates

The device no longer connects to www.hamqsl.com directly; the propagation data is fetched and cached on the TopBytes server.

For web configuration:

  • Allow inbound HTTP on port 80 from your local network only

Security Best Practices

  1. Use WPA2 or WPA3: don't connect DXSpotter Pro to open networks

  2. Don't expose port 80 to the internet: the web portal has no authentication

  3. Use mDNS / hostname access rather than fixed IPs where possible

  4. Keep firmware up to date: OTA auto-checks hourly; security fixes (if any) are pushed via the same path

  5. Strong WiFi password: protects everything else

Time Synchronisation

DXSpotter Pro synchronises its clock via NTP shortly after WiFi comes up.

  • NTP server: pool.ntp.org

  • Timezone: configured via web portal dropdown or serial tz <posix-tz> command

  • DST is handled automatically by the POSIX timezone string

  • Time format on screen: HH:MM:SS XXX (XXX is the timezone abbreviation)

Power Consumption

  • Typical: 2–4 W at 5 V (driven mainly by the LCD backlight)

  • Peak (during OTA flash): up to 1 A at 5 V

  • Use a quality 5 V / 1 A or higher USB-C supply

  • USB-C power banks are supported for portable use; 10,000 mAh runs the device for many hours

What's Next?