Files
trx-rs/README.md
T
sjg 83c23401fc [docs](trx-rs): replace all ASCII diagrams with Mermaid
Convert ASCII art and box-drawing diagrams to Mermaid fenced code blocks
across README.md, CLAUDE.md, Architecture.md, Wxsat-Map-Overlay.md, and
trx-wxsat/README.md. Add Mermaid-only policy to CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Stan Grams <sjg@haxx.space>
2026-03-29 12:29:12 +02:00

3.3 KiB

trx-rs logo

trx-rs

A modular amateur radio control stack written in Rust.

License

trx-rs splits radio hardware access from user-facing interfaces so you can run rig control, SDR DSP, decoding, audio streaming, and web access as separate, composable pieces.

Backends Yaesu FT-817, Yaesu FT-450D, SoapySDR
Frontends Web UI, rigctl-compatible TCP, JSON-over-TCP
Decoders AIS, APRS, CW, FT8, RDS, VDES, WSPR
Audio Opus streaming between server, client, and browser

Quick Start

1. Install dependencies

Debian / Ubuntu
sudo apt install build-essential pkg-config cmake libopus-dev libasound2-dev
# Optional — SDR support
sudo apt install libsoapysdr-dev
Fedora
sudo dnf install gcc pkg-config cmake opus-devel alsa-lib-devel
# Optional — SDR support
sudo dnf install SoapySDR-devel
Arch Linux
sudo pacman -S base-devel pkgconf cmake opus alsa-lib
# Optional — SDR support
sudo pacman -S soapysdr
macOS (Homebrew)
brew install cmake opus
# Optional — SDR support
brew install soapysdr

See Build Requirements in the wiki for details on each library.

2. Build and run

cargo build --release
cp trx-rs.toml.example trx-rs.toml   # edit for your environment
cargo run -p trx-server
cargo run -p trx-client

Open the configured HTTP frontend address in a browser (default http://localhost:8080).

Build without SDR support: cargo build --release --no-default-features

How It Works

graph TD
    Radio["Radio / SDR Hardware"] <-->|"serial or USB"| Server["trx-server<br/>rig control, DSP, decoders, audio capture"]
    Server <-->|"JSON-TCP :4530"| Client["trx-client<br/>remote connection, audio relay"]
    Server -->|"Opus-TCP :4531"| Client
    Client <-->|internal channels| F1["Web UI :8080"]
    Client <-->|internal channels| F2["rigctl :4532"]
    Client <-->|internal channels| F3["JSON-TCP"]

trx-server owns hardware access and runs the DSP pipeline. trx-client connects over TCP and exposes user-facing frontends. This keeps hardware local to one host while making control available over the network.

Documentation

Resource Description
User Manual Configuration, features, and usage
Architecture System design, crate layout, data flow, and internals
Optimization Guidelines Performance guidelines for the real-time DSP pipeline
Planned Features Roadmap and design notes
Contributing Commit conventions, workflow, and code style

License

BSD-2-Clause. See LICENSES for bundled third-party license files.