A hybrid vocoder that uses both DVSI hardware and Codec2 open source software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Tom Early 842d2e0a59
uses TCP instead of unix sockets
2 years ago
codec2 added codec2 from mvoice 4 years ago
config uses TCP instead of unix sockets 2 years ago
.gitignore uses TCP instead of unix sockets 2 years ago
Configure.cpp uses TCP instead of unix sockets 2 years ago
Configure.h uses TCP instead of unix sockets 2 years ago
Controller.cpp uses TCP instead of unix sockets 2 years ago
Controller.h uses TCP instead of unix sockets 2 years ago
DV3000.cpp redo run-time config 3 years ago
DV3000.h Updates from master 3 years ago
DV3003.cpp redo run-time config 3 years ago
DV3003.h Updates from master 3 years ago
DVSIDevice.cpp redo run-time config 3 years ago
DVSIDevice.h Updates from master 3 years ago
DVSIPacket.h support for dvsi 300{0,3} 4 years ago
IP.cpp uses TCP instead of unix sockets 2 years ago
IP.h uses TCP instead of unix sockets 2 years ago
LICENSE Initial commit 4 years ago
Main.cpp run-time config 3 years ago
Makefile uses TCP instead of unix sockets 2 years ago
PacketQueue.h Updates from master 3 years ago
README.md uses TCP instead of unix sockets 2 years ago
TCPacketDef.h mend 4 years ago
TCSocket.cpp uses TCP instead of unix sockets 2 years ago
TCSocket.h uses TCP instead of unix sockets 2 years ago
Timer.h several improvements to CTranscoderPacket 4 years ago
TranscoderPacket.cpp Add USRP transcoding 3 years ago
TranscoderPacket.h Add USRP transcoding 3 years ago
WinTypes.h switched to ftd2xx 4 years ago
ftd2xx.h switched to ftd2xx 4 years ago

README.md

tcd

tcd is a hybrid digital voice transcoder for ham radio used by the new URF reflector.

Introduction

This will build a new kind of hybrid transcoder that uses AMBE DVSI-based hardware for vocoding digital voice streams used in DStar/DMR/YSF and David Rowe's open-source Codec2 used in M17 as well as the open-source P25 vocoder, IMBE.

This is the only transcoder that will work with the URF reflector.

This software is loosely based on LX3JL's ambed, but is easily different enough to be considered an entirely original work. Here are some major differences with ambed:

  • tcd uses both hardware-based and software-based vocoders, providing a bridge between the closed source vocoders used in DStar, DMR NXDN and YSF and open-source vocoders used in M17 (Codec2) and P25 (IMBE).
  • UNIX Sockets are used to communicate between the reflector and this transcoder. This greatly simplifies the code and significantly improves transcoding performance.
  • Each configured module has a dedicated encoding and decoding instance running on a different thread. This prevents overloading when processing multiple voice streams and provides the best possible performance for the reflector's clients.

Constraints and Requirements

Currently, this program must be run locally with its paired URF reflector. Remote transcoding is not yet supported.

Only systemd-based operating systems are supported. Debian or Ubuntu is recommended. If you want to install this on a non-systemd based OS, you are on your own. Also, by default, tcd is built without gdb support.

The P25 IMBE software vocoder library is available here. See its README.md file for instructions for compiling and installing this library.

If you are running tcd on an ARM-base processor, you can opt to use a software-based vocoder library available here for DMR/YSF vocoding. This library is used for the AMBE+2 (DMR/YSF/NXDN) codec. If you are going to use this library, tcd must run on an ARM platform like a RPi. Using this software solution means that you only need one DVSI device to handle D-Star vocoding.

The DVSI devices need an FTDI driver which is available here. It's important to know that this driver will only work if the normal Linux kernel ftdi_sio and usbserial drivers are removed. This is automatically done by the system service file used for starting tcd.

Download the repository

In the parent directory of you urfd repository:

git clone https://github.com/nostar/tcd.git
cd tcd

To be perfectly clear, the urfd reflector repository clone and this clone must be in the same directory.

Compiling and configuring tcd

Copy the three configuration files to the working directory:

cp config/* .

Use your favorite text editor to edit the following files:

  • tcd.mk defines some compile time options. If you want to use the md380 vocoder, or change the installation directory, specify it here. Once you've set these options, do make to compile tcd. If you change BINDIR, you need to also change the ExecStart in your tcd.service file.
  • tcd.ini defines run-time options. It is especially imporant that the Transcoded line for the tcd.ini file is exactly the same as the same line in the urfd.ini file! Suggested values for vocoder gains are provided.
  • tcd.service is the systemd service file. You will need to modify the ExecStart line to successfully start tcd by specifying the path to your tcd executable and your tcd.ini file.

Installing tcd

It is easiest to install and uninstall tcd using the ./radmin scripts in your urfd repo. If you want to do this manually:

sudo make install
sudo make uninstall

Powered by TurnKey Linux.