VerityRF Modem

An open-source sound-card modem compatible with VARA HF and VARA FM

Install

Packages will be published with each release in the GitHub repository. This page describes which package to use and how to set VerityRF Modem up with a radio and a client.

Contents: Linux, Windows, without the desktop app, Docker, configuration, PAT, VarAC, audio, PTT, help.

Linux

The desktop packages hold the app, the engine (verityrf) and the observer (verityrf-observer). Use one of them:

SystemPackages
64-bit PC (x86_64)VerityRF_<version>_amd64.deb, VerityRF-<version>-1.x86_64.rpm or VerityRF_<version>_amd64.AppImage
64-bit ARM (arm64), e.g. Raspberry Pi OS 64-bitVerityRF_<version>_arm64.deb, VerityRF-<version>-1.aarch64.rpm or VerityRF_<version>_aarch64.AppImage
32-bit ARM (armhf), Raspberry Pi 2 and later on a 32-bit OSVerityRF_<version>_armhf.deb, VerityRF-<version>-1.armhfp.rpm or VerityRF_<version>_armhf.AppImage
sudo apt install ./VerityRF_*_amd64.deb      # Debian, Ubuntu, Raspberry Pi OS
sudo dnf install ./VerityRF-*.x86_64.rpm     # Fedora and other rpm systems
chmod +x VerityRF_*.AppImage && ./VerityRF_*.AppImage

Windows 10 and 11

Run VerityRF_<version>_x64-setup.exe: a per-user install, no administrator rights needed. It puts verityrf.exe and verityrf-observer.exe next to the app.

Without the desktop app

For a server, a Raspberry Pi without a screen, or your own scripts: the archives verityrf-<version>-<target>.tar.gz (Linux x86_64, aarch64, armv7) and verityrf-<version>-x86_64-pc-windows-gnu.zip hold the two programs, an example configuration and a README.

verityrf --list-devices                       # the sound devices it can use
verityrf --input "USB Audio CODEC" --output "USB Audio CODEC" --ptt rigctld
verityrf --fm narrow                          # VARA FM instead of VARA HF
verityrf --config my.toml --kiss              # with the KISS port on 8100
verityrf --print-config                       # the configuration in effect

It runs until Ctrl+C; the console log shows the ports and every link. verityrf --help lists every option.

Docker

The engine and the observer also run as a container on Linux (amd64, arm64 and armv7), with the host's PulseAudio/PipeWire socket or ALSA devices and any PTT method. Container images are not published yet. With an image loaded:

mkdir -p config && cp verityrf.example.toml config/verityrf.toml   # edit [audio] and [ptt]
docker run --rm -it --user "$(id -u):$(id -g)" --ulimit rtprio=95 \
  -v "$PWD/config:/config:ro" -v verityrf-logs:/logs \
  -v "$XDG_RUNTIME_DIR/pulse/native:/run/pulse/native" \
  -p 127.0.0.1:8300-8301:8300-8301 -p 127.0.0.1:8310:8310 verityrf

The ports are published on 127.0.0.1 only: whoever reaches the command port can key your transmitter.

Configuration

In the app, open Settings; it edits the same file the engine reads. The file is ~/.config/verityrf/verityrf.toml on Linux and %APPDATA%\verityrf\verityrf.toml on Windows. Every key is optional. A minimal station:

[station]
licence = "N0CALL"          # your licensed base call: its links are REGISTERED

[audio]
input = "USB Audio CODEC"
output = "USB Audio CODEC"

[ptt]
method = "rigctld"
rigctld = "127.0.0.1:4532"

Then Start engine in the app (or run verityrf). Changes saved later take effect with Restart engine.

PAT (Winlink)

In PAT's configuration (pat configure):

"varahf": {
  "addr": "localhost:8300",
  "bandwidth": 2300,
  "rig": "",
  "ptt_ctrl": false
}

Start VerityRF Modem, then pat connect varahf:///N1CALL, a gateway from pat rmslist, or pat http and the web interface. bandwidth may be 500, 2300 or 2750. Leave ptt_ctrl false when VerityRF Modem keys the radio; with ptt_ctrl true and a hamlib rig, PAT keys it and VerityRF Modem's PTT method is host.

For VARA FM, start VerityRF Modem with --fm narrow (or wide) and use PAT's varafm transport: "varafm": {"addr": "localhost:8300", "ptt_ctrl": false}, then pat connect varafm:///N1CALL.

VarAC

In VarAC's settings for the VARA HF modem: host 127.0.0.1, command port 8300 (data port 8301). Turn off VarAC's option to start VARA itself, and start VerityRF Modem first. For VARA FM, choose the modem type VaraFM and run VerityRF Modem with --fm. If you use broadcasts, start VerityRF Modem with --kiss and point VarAC's KISS port at 8100.

Keying: either VerityRF Modem keys the radio and VarAC's own PTT is off, or VarAC keys it and VerityRF Modem's PTT method is host.

Audio

PTT

Choose in Settings → PTT, or in the [ptt] section. Each method has a Test and a Key 1 s button in the app.

ptt.max (30 s by default) releases a key held by rigctld, serial or CM108 PTT if a transmission ever runs longer.

Problems and questions

Report problems and ask questions in the project's GitHub issues. Include your system, the package you installed, your client and, if you can, the engine's console output or the app's activity log.