Skip to content

rrobinett/wsprdaemon-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wsprdaemon-client (v4)

Linux client for decoding WSPR and FST4W weak-signal transmissions and uploading spots to wsprnet.org and wsprdaemon.org.

v4 is a complete rewrite of the original ~15,700-line monolithic bash program (rrobinett/wsprdaemon) into a systemd service-oriented architecture with a Python control plane. The controller, wd-ctl, reads an INI config and ensures the right set of per-receiver/per-band systemd units exists, is configured, and is running.

Maintainer: Rob Robinett (AI6VN).

Status

Pre-beta. The service set, config parser, and contract-v0.4 conformance surfaces are in place and exercised on a Beelink test bench with RX888 and KiwiSDR receivers. Do not deploy on a production station yet. See wd-v4-architecture.md for the design spec and which parts of it are already implemented.

What it does

For each configured receiver/band pair, wsprdaemon-client orchestrates:

  1. Recording — WAV capture from an SDR multicast stream (KA9Q receivers via wd-ka9q-record, one recorder per radiod multicast producing WAVs for all bands on that receiver) or from a KiwiSDR channel (wd-kiwi-record, one per band).
  2. Decodingwd-decode runs wsprd (for W-prefix modes) or jt9 (for F-prefix modes) on each WAV and emits spot files.
  3. Postingwd-post merges spots across MERG'd receivers (best-SNR union) and hands them to the upload queue.
  4. Uploadingwd-upload-wsprnet and wd-upload-wsprdaemon deliver spots to the two online databases.

Housekeeping (wd-spool-clean.timer) trims the WAV spool and posting queue.

Install

Canonical install path is /opt/git/wsprdaemon-client (Pattern A repo layout — see docs/SIGMOND.md):

sudo install -d -o <maintainer> -g <service-group> -m 2775 /opt/git
cd /opt/git
sudo -u <maintainer> git clone https://github.com/rrobinett/wsprdaemon-client.git
cd wsprdaemon-client
sudo ./install.sh

install.sh creates the wsprdaemon:radio user/group, the FHS-compliant path set (/etc/wsprdaemon, /var/spool/wsprdaemon, /var/log/wsprdaemon, /run/wsprdaemon, /opt/wsprdaemon), installs executables under /usr/local/sbin/, and drops the systemd unit templates into /etc/systemd/system/. See docs/OPERATIONS.md for first-run steps and deploy.toml for the canonical install manifest.

Quick start

# 1. Write a config (or migrate from v3)
sudo cp tests/wsprdaemon.conf /etc/wsprdaemon/wsprdaemon.conf
sudo $EDITOR /etc/wsprdaemon/wsprdaemon.conf

# 2. Validate before starting anything
wd-ctl validate

# 3. Apply — wd-ctl computes the desired service set and reconciles
sudo wd-ctl apply

# 4. Check what's running
wd-ctl status

To stop everything: sudo wd-ctl teardown.

Documentation

Companion projects

  • ka9q-python — Python control of ka9q-radio; used by the KA9Q recorder
  • wspr-recorder — contract-v0.4-compliant WSPR WAV producer; preferred over the built-in recorder
  • hf-timestd — sub-ms HF time standard (planned integration via wd-hftime@)
  • sigmond — multi-client coordinator; defines the contract this client implements
  • ka9q-radio — Phil Karn's radiod daemon

License

See parent project rrobinett/wsprdaemon.

About

WD client V4.x

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors