The TCP Protocol and Quisk

By Jim Ahlstrom, N2ADR, the author of Quisk SDR

Initial draft June 7, 2026. Expect frequent updates.

Please use the group https://groups.io/g/n2adr-sdr for discussions.

This paper discusses software that I do not use myself. Please report errors.

What is TCI

I am interested in adding TCI to implement Rx and Tx audio streams that connect Quisk to external digital mode programs, CW skimmers, logging programs and contest programs. These programs typically use only a few control commands, often just PTT and frequency. TCI provides many more controls such as output power control, filter width, CW macro speed and AGC mode. It is a more general transceiver control protocol.

The TCI protocol was developed by Expert Electronics. Their SDR hardware is controlled by their ExpertSDR3 and legacy ExpertSDR2 software. TCI is a protocol built into this software that enables external programs to control the radio and have access to the receive and transmit audio streams. This can be used by external digital mode and logging programs.


The TCI protocol uses a network connection and it eliminates the need for COM ports and virtual audio cables. This is an attractive feature. The digital mode program WSJT-X supports TCI, and to connect it to a radio you select the radio "TCI" and the audio "TCI audio" and you are connected. Using PC audio to transfer digital samples between computer programs has always been a bother.

Why I Don't Like TCI

I am the author of Quisk SDR software. When my users first requested TCI, I initially declined. I don't like the TCI protocol for these reasons:

Experiences with WSJT-X

Although I don't like the TCP protocol, my users want to connect to WSJT-X, and it supports TCI. So I felt obliged to add TCI to Quisk. I have WSJT-X version 3.0 on Linux and version 3.1 on Windows to test. I could not find a technical description of the TCI protocol as used by WSJT-X (is there one?) so I looked in the source code. I saw a comment that indicated an early version 1.2 of TCI and I saw the Stream header lacked the number of channels. So I had to resort to experimentation to figure out how to connect. I discovered the following:

Experiences with deskHPSDR

I do not have the software defined radio deskHPSDR but I have been in contact with its developer Heiko, DL1BZ. He has implemented TCI version 2.0 and has successfully connected to the clients JTDX, MSHV RumLogNG and UT4LW's SDC (Software Defined Connectors) and its build-in CW Skimmer. He has no interest in supporting protocols earlier than the current version 2.0 of TCI.


I don't disagree with Heiko but this creates problems for me. My TCI version 1.4 currently connects to WSJT-X, and I believe that TCI version 2 will not. So changing to version 2 will anger my users. The problem goes away when and if WSJT-X upgrades to version 2, but that may never happen. And there may be other TCI version 1.4 software out there that I don't know about, and I will break it too.


I am not a philosopher, I am an engineer with the mindset of a businessman. I want to make my users happy and contribute to the advancement of amateur radio. We should be using modern technology, not COM ports and audio hacks.

What to Do

An ideal solution would be to assemble all authors of client and server software and hash out a protocol that is simple to implement and satisfies everyone. But this is not an ideal world. I proposed this to FreeDV and they were too busy with their own software. But I think it is possible to invent and publish a "best practises" document for TCI that will guarantee connection to most or maybe all clients. For example, if a client requests audio stream parameters that are not in TCI 1.4 but are in 2.0, then the server knows to use 2.0. These commands are:

I expect that most modern clients will send their AUDIO_STREAM parameters to the server at an early time, and so no real changes will be needed. There should also be a small set of commands and their meanings that are guaranteed to be available. This is not a restriction on the server, and the server can implement additional commands as desired. But clients can depend on the VFO command to always set the Rx and Tx frequency.


I need the support of TCI client and server software authors to make this work. I welcome feedback, both positive and negative. Please let me know what you think on the news group named above.


Jim Ahlstrom, N2ADR