The Coding Flow

Code Clean Or Die Tryin’

Setup ExpertSDR for Digital Modes on Linux

I recently got a SunSDR2 DX and it took me some time to get it up and running with all the other software that I use for ham radio. Maybe the following article saves you some hours.


ExpertSDR comes with its own network-based CAT protocol named TCI. It has the great advantage that all changes are pushed to the clients, so there is no polling necessary and the clients are updated immediately. This is a great leap forward. On the downside, the list of programs that can use TCI is rather short at the moment. Alternatively ExpertSDR offers an emulation of the Kennwood TS-480, which can be used via a virtual COM port. This works, but it is not very easy to setup, as you need to compile a kernel module (e.g. the tty0tty null modem emulator).

As Hamlib is currently the biggest common denominator on Linux, I wrote a small programm that acts as a Hamlib Net protocol server (model number 2) for the clients and connects to an ExpertSDR instance via TCI. The TCI-Hamlib adapter can be started as a service at boot time, it automatically connects to ExpertSDR when it is available. Currently the adapter supports all Hamlib commands that are used by FLDigi, CQRLog, and WSJT-X.

TCI-Hamlib Adapter

  • Download the lastest version of the TCI-Hamlib adapter
  • Install the deb package using sudo apt install ./tciadapter_<version>_amd64.deb
  • Edit /etc/systemd/service/tciadapter.service to your needs
  • Enable the tciadapter systemd service for automatic start: sudo systemctl enable tciadapter.service
  • Start the tciadapter systemd service: sudo systemctl start tciadapter.service


connect WSJT-X to the TCI-Hamlib adapter


connect FLDigi to the TCI-Hamlib adapter


connect CQRLog to the TCI-Hamlib adapter


To transfer audio data between a digimode program and ExpertSDR, you need to setup two ALSA loopback devices. Such a virtual audio device connects its input (subdevice 1) to its output (subdevice 0).

ALSA Loopback Devices

To configure the loopback devices, create the file /etc/modprobe.d/alsa-loopback.conf with the following content:

options snd-aloop index=1,2 enable=1,1 pcm_substreams=2,2 id=dev1rx,dev2tx

To start the loopback devices, you need to call sudo modprobe snd-aloop. To make this happen automatically at boot type, add the line snd-aloop to /etc/modules: sudo echo snd-aloop >> /etc/modules


Always start ExpertSDR first, before the digimode program is started!

connect ExpertSDR to the ALSA loopback devices

Only one digimode program can run at the same time. If you want to run them in parallel, you need additional loopback devices and the second VAC channel in ExpertSDR.


connect WSJT-X to the ALSA loopback devices


connect FLDigi to the ALSA loopback devices