The History of app_rpt
By: Jim Dixon WB6NIL
Once upon a time, there was <a href="http://www.asterisk.org">Asterisk PBX</a>. I was heavily involved in its initial practical implementation (if interested, see link below (The History of the Zapata Telephony Project as it relates to the Asterisk PBX).
From its very onset, I saw that <a href="http://www.asterisk.org">Asterisk</a> was not only a good telephony switch, but also makes a good application implementation platform for virtually any telecommunication application that requires use of many of the things that Asterisk provides.
<a href="http://app-rpt.qrvc.com/">App_Rpt</a> was started, not only to demonsrtate this feature of <a href="http://www.asterisk.org">Asterisk</a>, but to essentially provide an outlet of nearly 30 years of experience and frustration with repeater and remote base systems, in the form of designing a system essentially "the way I think a system should be."
I learned from and was inspired by some of the best ideas and implementations and also from some of the worst, and tried to create a workable and desirable system that met as many needs as possible.
My first big hurdle was to design a radio interface that cound interconnect with a PC internally and the typical interface signals of a two-way radio. In the interest of keeping the technology simple and inexpensive, I designed a board (the ARIB board) which interfaced 2 analog FXS ports (either on a multiport analog card, like the <a href="http://www.digium.com">Digium</a> <a href="137">TDM400P</a>, or a channel bank connected to the PC through a T1 card, that is already part of an existing phone switch) to the Radio signals (and provide buffering, level control, etc).
<img src="/drupal/sites/default/files/pictures/analog-small.jpg" />
Rev. C. Analog Radio Interface Board
This interface did work well to allow me to do the initial development of the software, and first half a dozen deployments, since most of us that had it first already had <a href="http://www.asterisk.org">Asterisk</a> phone switches already in opertion, with spare ports on our channel banks.
The systems were originally deployed in Northern California (<a href="http://www.city-data.com/city/Oakhurst-California.html">Oakhurst</a> area) at a couple of locations, and in San Diego by Steve, WA6ZFT.
With Steve's greatly appreciated help, we were able to debug the thing and add many new and interesting features.
After a few months of the system running stably (despite new additions all the time), we decided that better system integration was appropriate, so we (along with help from David Kramer) designed and produced the Quad PCI Radio Interface card. This allows interface between the PC and 4 separate radio systems simultaneously, via 8 pin modular connectors.
<img src="/drupal/sites/default/files/pictures/pci-front-small.jpg" />
Rev. B Production version of PCI Radio Card
In addition we also found an optimal PC in which to best use these PCI cards. Its a mini-ITX system that runs on 12 volts directly, 1 U rackmount and has no moving parts, and is comparatively inexpensive.
Together the PCI card and the PC make an ultra-stable, super high-end radio controller system, that, coupled with its open-source-ness gives the system implementer supreme flexibility and functionality.
For the next 2 years, we kept adding features, and refining the ones we had, and discovering that even though MANY people were QUITE interested in the technology, the price for entry was a bit high (for those who had no experience and wanted to just evaluate it). It became painfully obvious that something had to be done, somehow, to allow the hardware interface price to be lowered considerably without sacrifice in the quality of the technology.
After looking at many possibilities, including usage of a PC's internal audio subsystem (yuch! yuch! yuch!), it sure seemed that the only realistic chance we had was to get something reliably working with a USB interface.
Experiments with USB several years previously show it to be utterly flaky and useless on Linux, and not much better even on Windows. But, since that's about all that's available any more (other then maybe Firewire, which is more or less the same thing) I figured we should re-visit the possibility of stable USB, and did so and found success. Its good that things change.
After some looking around, I found the <a href="http://www.cmedia.com.tw/?q=en/USB/CM108"> C-Media CM-108</a> USB Sound IC. It is VERY simple, VERY high quality, VERY reliable and VERY inexpensive. Even already make USB sound cards (well, sound devices, they're awfully small to call a card) that could easily be modified for development and testing purposes.
So after some testing and verification of the USB hardware, I went to my friend Steve Henke, W9SH (who had already done some major work on the IAXRPT project for us), and asked him to use his amazing DSP skills to write code to do two-way audio processing right in the PC (going along with the Zapata Telephony motto of "We don't need no stinkin' DSP!"), which, happily he did.
We now have functional DSP code and channel interface code to allow USB devices to interface with <a href="http://app-rpt-svn.ohnosec.org/viewvc/projects/allstar/?root=svn">App_Rpt</a> and <a href="http://www.asterisk.org">Asterisk</a>, allowing high-quality, yet inexpensive interconnection with radio devices.
Currently, A URI (USB Radio Interface) is being sold specifically for this purpose (see <a href="http://www.dmkeng.com">DMK Engineering URI Site</a>)