Buying or Building your own USB Radio Interface


Thanks to the hard work of Steven Henke, W9SH and Jim Dixon, WB6NIL, Asterisk/app_rpt can be used with USB sound fobs which have a C-Media electronics CM108, CM108AH, CM119, or CM119A USB interface chips. The sound fob will require some modifications to bring out PTT, block DC on the audio outputs, and attenuate the receive audio to match the microphone levels. This article deals only with the specifics of the CM108/CM119 chip. We welcome others to explore modifying USB sound fobs containing the other supported chips.

There are several commercially available USB radio interfaces. The best one for your application depends on several things like the amount of audio levels necessary, and the available logic signaling.

Here's a list. Those which have been approved by AllStar Link Inc. are indicated by the Asterisk (of course!)

RB RIM* & RIM Lite*
MC RA-35* and RA-40*
Modified FOBs*
ARS radio adapters
VoIP - Nano Interface

Linux distributions compatible with USB Sound fobs

A version of Limey Linux (which is a Compact flash based distribution) is available which provides support the modified USB sound fob. We have found that most of the VIA Mini-ITX boards are not powerful enough to support the demands of the DSP code for the USB channel driver. Version 1.0.6 of Limey Linux has been released to support newer Intel Mini-ITX motherboards which are more capable of handling these DSP tasks. All builds of Limey Linux are configured for the usbradio interface except for the VIA build. The VIA build is not fast enough to support the DSP overhead in the usbradio driver.

ACID, an automatic install of Centos which downloads all of the necessary files and automatically builds Asterisk and app_rpt is downloadable from here. Everything is taken care of by install scripts, so users with little or no Linux system integration skills can get up and running quickly. ACID is configured for the usbradio interface by default. This is a hard disk based distribution.

Technical Details

There is an Asterisk channel driver called chan_usbradio.c. This driver and the xpmr library source files contains all of the interface code to interface app_rpt to a CM108/CM119 based USB sound fob. In addition these files contain DSP code to do CTCSS encoding and decoding, squelch, pre-emphasis and soft limiting, de-emphasis, and audio level adjustments. Basically, you only need to make 3 or 4 connections to your radio:

Discriminator audio, de-emphasized audio, or speaker audio. Transmit audio (direct to modulator, or microphone) PTT

You can opt not to use the DSP-based squelch and, and bring a COR line in if that is what you want to do. However if you don't use discriminator audio, you will not be able to use the DSP-based CTCSS decoder.

Audio level adjustments, and CTCSS are done with commands from the Asterisk CLI. More details about these commands are available in the Adjusting Audio Levels HowTo.

The step-by-step hardware modification procedure is documented in a .pdf format here: USB FOB Modification Instructions. As of late, USB FOB's with leaded CM108 or CM119 chips have been getting harder to find, you need to make sure that the FOB you modify does indeed uses a genuine leaded integrated circuit, or your time will be wasted. Also the PC boards can be a little different from FOB to FOB. You will need to study the modification procedure and see where it might differ from the FOB you have. Information for modifying FOBs is available from the Repeater Builder's website.