3d0cdbd181
Co-authored-by: OpenAI Codex <codex@openai.com> Signed-off-by: Stan Grams <sjg@haxx.space>
246 lines
6.8 KiB
TOML
246 lines
6.8 KiB
TOML
# trx-rs Combined Configuration File
|
|
#
|
|
# Copy this file to one of:
|
|
# ./trx-rs.toml (current directory)
|
|
# ~/.config/trx-rs/trx-rs.toml (user config)
|
|
# /etc/trx-rs/trx-rs.toml (system-wide)
|
|
#
|
|
# Or use per-binary files (trx-server.toml / trx-client.toml) without the
|
|
# section headers — both formats are supported and the section headers may
|
|
# also appear in any per-binary file passed via --config.
|
|
#
|
|
# CLI arguments override config file values.
|
|
|
|
# =============================================================================
|
|
# trx-server — connects to radio hardware, exposes a JSON/audio TCP server
|
|
# =============================================================================
|
|
|
|
[trx-server.general]
|
|
# Callsign or station identifier
|
|
callsign = "N0CALL"
|
|
|
|
# Log level: trace, debug, info, warn, error
|
|
# log_level = "info"
|
|
|
|
[trx-server.rig]
|
|
# Rig model: ft817 (more models coming)
|
|
model = "ft817"
|
|
# Initial frequency (Hz) before first CAT read
|
|
initial_freq_hz = 144300000
|
|
# Initial mode before first CAT read (LSB, USB, CW, CWR, AM, WFM, FM, DIG, PKT)
|
|
initial_mode = "USB"
|
|
|
|
[trx-server.rig.access]
|
|
# Access type: "serial" or "tcp"
|
|
type = "serial"
|
|
|
|
# Serial port settings (when type = "serial")
|
|
port = "/dev/ttyUSB0"
|
|
baud = 9600
|
|
|
|
# TCP settings (when type = "tcp")
|
|
# host = "192.168.1.100"
|
|
# tcp_port = 4532
|
|
|
|
[trx-server.behavior]
|
|
# Polling interval when idle (milliseconds)
|
|
poll_interval_ms = 500
|
|
|
|
# Polling interval when transmitting (milliseconds)
|
|
poll_interval_tx_ms = 100
|
|
|
|
# Maximum retry attempts for transient errors
|
|
max_retries = 3
|
|
|
|
# Base delay for exponential backoff (milliseconds)
|
|
retry_base_delay_ms = 100
|
|
|
|
[trx-server.listen]
|
|
# Enable the JSON TCP listener for client connections
|
|
enabled = true
|
|
|
|
# IP address to listen on (use "0.0.0.0" for all interfaces)
|
|
listen = "127.0.0.1"
|
|
|
|
# TCP port to listen on
|
|
port = 4530
|
|
|
|
[trx-server.listen.auth]
|
|
# Authentication tokens (empty = no auth required)
|
|
tokens = []
|
|
|
|
[trx-server.pskreporter]
|
|
# Enable uploads of decoded FT8/WSPR spots to PSK Reporter
|
|
enabled = false
|
|
|
|
# PSK Reporter endpoint (UDP)
|
|
host = "report.pskreporter.info"
|
|
port = 4739
|
|
|
|
# Optional receiver locator (4 or 6-char Maidenhead).
|
|
# If omitted, it is derived from [trx-server.general] latitude/longitude.
|
|
# receiver_locator = "JO93"
|
|
|
|
[trx-server.aprsfi]
|
|
# Enable APRS-IS IGate uplink (forwards received RF APRS packets to APRS-IS / aprs.fi)
|
|
enabled = false
|
|
|
|
# APRS-IS server (rotate.aprs.net does DNS round-robin across all tier-2 servers)
|
|
host = "rotate.aprs.net"
|
|
port = 14580
|
|
|
|
# APRS-IS passcode. -1 = auto-computed from [trx-server.general] callsign.
|
|
# passcode = -1
|
|
|
|
[trx-server.decode_logs]
|
|
# Optional decoder message logs to files (APRS/CW/FT8/WSPR)
|
|
enabled = false
|
|
|
|
# Base directory for decoder logs.
|
|
# Default (if omitted): $XDG_DATA_HOME/trx-rs/decoders
|
|
# Fallback: logs/decoders
|
|
# dir = "/path/to/decoder-logs"
|
|
|
|
# Per-decoder log file names (supported tokens: %YYYY% %MM% %DD%)
|
|
aprs_file = "TRXRS-APRS-%YYYY%-%MM%-%DD%.log"
|
|
cw_file = "TRXRS-CW-%YYYY%-%MM%-%DD%.log"
|
|
ft8_file = "TRXRS-FT8-%YYYY%-%MM%-%DD%.log"
|
|
wspr_file = "TRXRS-WSPR-%YYYY%-%MM%-%DD%.log"
|
|
|
|
# --- SoapySDR backend example ---
|
|
# To use an SDR device instead of a physical transceiver, set:
|
|
#
|
|
# [trx-server.rig]
|
|
# model = "soapysdr"
|
|
# initial_freq_hz = 14074000
|
|
# initial_mode = "USB"
|
|
#
|
|
# [trx-server.rig.access]
|
|
# type = "sdr"
|
|
# args = "driver=rtlsdr"
|
|
#
|
|
# [trx-server.sdr]
|
|
# sample_rate = 1920000
|
|
# bandwidth = 1500000
|
|
# center_offset_hz = 200000
|
|
#
|
|
# [trx-server.sdr.gain]
|
|
# mode = "auto"
|
|
# value = 30.0
|
|
#
|
|
# [trx-server.sdr.squelch]
|
|
# enabled = false
|
|
# threshold_db = -65.0
|
|
# hysteresis_db = 3.0
|
|
# tail_ms = 180
|
|
#
|
|
# [[trx-server.sdr.channels]]
|
|
# id = "primary"
|
|
# offset_hz = 0
|
|
# mode = "auto"
|
|
# audio_bandwidth_hz = 3000
|
|
# decoders = ["ft8", "cw"]
|
|
# stream_opus = true
|
|
#
|
|
# [[trx-server.sdr.channels]]
|
|
# id = "wspr"
|
|
# offset_hz = 21600
|
|
# mode = "USB"
|
|
# audio_bandwidth_hz = 3000
|
|
# decoders = ["wspr"]
|
|
# stream_opus = false
|
|
|
|
# =============================================================================
|
|
# trx-client — connects to trx-server and exposes user-facing frontends
|
|
# =============================================================================
|
|
|
|
[trx-client.general]
|
|
# Callsign or station identifier displayed in frontends
|
|
callsign = "N0CALL"
|
|
|
|
# Log level: trace, debug, info, warn, error
|
|
# log_level = "info"
|
|
|
|
[trx-client.remote]
|
|
# Remote trx-server URL (host:port)
|
|
url = "192.168.1.100:9000"
|
|
# Optional target rig ID on a multi-rig server (omit to use server default rig)
|
|
# rig_id = "hf"
|
|
|
|
# Poll interval in milliseconds
|
|
poll_interval_ms = 750
|
|
|
|
[trx-client.remote.auth]
|
|
# Bearer token for authenticating with the remote server
|
|
token = "my-token"
|
|
|
|
[trx-client.frontends.http]
|
|
# Enable HTTP/REST frontend with SSE for real-time updates
|
|
enabled = true
|
|
listen = "127.0.0.1"
|
|
port = 8080
|
|
|
|
[trx-client.frontends.http.auth]
|
|
# Optional passphrase-based authentication for the HTTP frontend
|
|
# Disabled by default to preserve backward compatibility
|
|
|
|
# Enable authentication (default: false)
|
|
enabled = false
|
|
|
|
# Read-only passphrase: grants access to status/events/audio (rx role)
|
|
# Leave unset to disable rx access
|
|
# rx_passphrase = "rx-only-passphrase"
|
|
|
|
# Full control passphrase: grants access to all endpoints including TX/PTT (control role)
|
|
# Leave unset to disable control access
|
|
# control_passphrase = "full-control-passphrase"
|
|
|
|
# Enforce TX/PTT access control (default: true)
|
|
# When true, TX/PTT endpoints return 404 to authenticated users without control role
|
|
tx_access_control_enabled = true
|
|
|
|
# Session time-to-live in minutes (default: 480 = 8 hours)
|
|
session_ttl_min = 480
|
|
|
|
# Set Secure flag on session cookie (default: false)
|
|
# Should be true if served over HTTPS; false for HTTP/localhost
|
|
cookie_secure = false
|
|
|
|
# Cookie SameSite attribute: Strict, Lax (default), or None
|
|
cookie_same_site = "Lax"
|
|
|
|
[trx-client.frontends.rigctl]
|
|
# Enable rigctl-compatible TCP interface (hamlib compatible)
|
|
enabled = false
|
|
listen = "127.0.0.1"
|
|
port = 4532
|
|
|
|
[trx-client.frontends.http_json]
|
|
# Enable JSON-over-TCP control interface
|
|
enabled = true
|
|
listen = "127.0.0.1"
|
|
# Set to 0 to bind an ephemeral port
|
|
port = 0
|
|
# List of accepted bearer tokens (empty = no auth)
|
|
# auth.tokens = ["example-token"]
|
|
|
|
[trx-client.frontends.audio]
|
|
# Enable remote audio stream and decode transport
|
|
enabled = true
|
|
# Remote trx-server audio port
|
|
server_port = 4531
|
|
# Optional per-rig audio ports for multi-rig servers:
|
|
# rig_ports.ft817 = 4531
|
|
# rig_ports.airspyhf = 4532
|
|
|
|
[trx-client.frontends.audio.bridge]
|
|
# Enable local cpal bridge for WSJT-X virtual audio routing
|
|
enabled = false
|
|
# Optional exact output device name for RX playback
|
|
# rx_output_device = "BlackHole 2ch"
|
|
# Optional exact input device name for TX capture
|
|
# tx_input_device = "BlackHole 2ch"
|
|
# Playback/capture gain multipliers
|
|
rx_gain = 1.0
|
|
tx_gain = 1.0
|