trx control

trx-control

trx-control is a modern and extensible software system for Linux to control transceivers and other devices over the network. It can as well be used to integrate third-party applications or databases.

trx-control consists of trxd(8), a daemon to control the transceivers and other hardware; trxctl(1), a command line utility to access trxd(8), and, xqrg(1), a sample graphical client to display a transceivers frequency. trxctl(1) and xqrg(1) are meant as reference clients only. Software that wants to make use of trxd(8) should implement the protocol and talk to trxd(8) directly over the network.

trxd(8) listens on port 14285 by default for incoming connections over plain sockets and can optionally listen for WebSocket connections. It supports both IPv4 and IPv6.

The actual device control is done using Lua modules, this way new devices or transceivers can easily be supported by supplying a corresponding Lua driver module for a specific transceiver model. See https://lua.org and https://lua.msys.ch for more information on Lua.

Project Goals

  • Make it easy to add support for new transceivers or other devices.

  • Make the system easily extensible.

  • Provide an easy to implement, and, easy to use protocol based on the exchange of JSON-formatted data to control transceivers.

  • Use a multithreaded, asynchronous approach at the core of the software.

Overview

At the core of a trx-control installation is trxd(8), the daemon that handles clients (IPv4 and IPv6) and controls the devices and extensions by exchanging JSON-formatted data with the clients and talking to the transceivers and other devices over whatever interface they use. All communication between the clients and trxd(8) is either done using NDJSON packages over a plain TCP/IP socket or JSON packages over a WebSocket.

Multiple clients can simultaneously connect to trxd(8), controlling an unlimited number of transceivers, GPIO pins, and, extensions:

diag overview

trxd(8) supports transceivers that can automatically send status updates (e.g. Yaesu FT-710 etc.) as well as transceivers that require polling (e.g. older Yaesu FT-897 etc.)

Devices and Extensions

Transceivers

trx-control supports the following transceivers, more will be added over time:

Brand Model(s)

DL2MAN

(tr)uSDX

ICOM

IC-705 / IC-7300

Yaesu

FT-710 / FT-817 / FT-857 / FT-891 / FT-897 / FT-991a

A special simulator transceiver driver exists for development and testing purposes.

GPIO

Brand Model(s)

 bmcm

USB-PIO / OR8 (attached to USB-PIO)

GPS/NMEA

Any GPS/Glonass/BeiDou etc. receiver that emits fix data as NMEA sentences.

Extensions

Name Purpose / Comments

cloudlog

Send transceiver status data to Cloudlog (requires a client to receive automatic status updates and send them to the cloudlog extension)

config

Access the trxd(8) configuration (read only)

dxcluster

Get DX (or SOTA) cluster spots in real time or query the last n spots

hamqth

Lookup callsigns the HamQTH.com database

keepalive

Send keepalive packages to listening clients at a set interval

logbook

A simple logbook for QSOs using a PostgreSQL database

memory

Manage memories and memory groups

ping

Check if the trxd(8) service is alive

qrz

Lookup callsigns in the QRZ.com database (requires a QRZ.com subscription for full functionality)

tasmota

Control power plugs with the Tasmota alternative firmware

The trx-control User Guide

The trx-control User Guide is intended to help with the setup and configuration of trx-control.

The trx-control Integration Guide

The trx-control Integration Guide aims at being helpful when integrating trx-control into your own software or writing a client that uses trx-control.

The trx-control Developer Guide

The trx-control Developer Guide aims at being helpful when developing new transceiver drivers or extensions.

The trx-control Client Application

The trx-control protocol is open for anyone do develop a client or integrate trx-control into their own software. Nevertheless we do provide a client application aimed at mobile devices.

The app is currently available for Android devices only and can be downloaded from the Google Play Store.

Now at Google Play
(Google Play and the Google Play Logo are trademarks of Google LLC.)

Information Material

From Supporting Elephants to Controlling Shortwave Transceivers: 15 Years of Lua. A recording of a talk during the "Celebrating 30-years of Lua" special edition Lua Workshop 2023 in Rio de Janeiro:

Presentation slides from the "Software Defined Radio & Amateur Radio" devroom that I co-organised at FOSDEM 2024 in Brussels:

Presentation slides from the Dreiländereck-Sysop-Treffen 2024:

Flyers and cards:

Print the flyers on A4 paper in landscape mode and fold them twice from the outside inwards so that the title is on top and the page with the address is on the back.

trx-control Chat Room on Matrix

There is a Matrix chat room #trx-control:matrix.org to discuss trx-control: #trx-control:matrix.org

Source Code

trx-control is open source software licensed under the liberal MIT license. You can access the source code on GitHub at https://github.com/hb9ssb/trx-control

Frequently Asked Questions

Is there a Windows Version of trx-control?

trx-control requires a Linux system to run on. This, however, does not mean that you are without options to run the software on Windows. Starting with Windows 10, the WSL, Windows-Subsystem for Linux, can be used. Alternatively, a desktop virtualizer, e.g. VirtualBox or VMWare Desktop, can be used to run a Linux system to host trx-control.

Another option might be to use containers, e.g. using Docker Desktop.