Line 37: |
Line 37: |
| | | |
| <p>We now have functional DSP code and channel interface code to allow USB devices to interface with App_Rpt and Asterisk, allowing high-quality, yet inexpensive interconnection with radio devices.</p> | | <p>We now have functional DSP code and channel interface code to allow USB devices to interface with App_Rpt and Asterisk, allowing high-quality, yet inexpensive interconnection with radio devices.</p> |
| + | |
| + | ==Zapata Telephony and how it relates to Asterisk PBX== |
| + | <p>By Jim Dixon, WB6NIL</p> |
| + | <p>About 20-25 or so years ago, AT&T started offering an API |
| + | (well, one to an extent, at least) allowing users |
| + | customize functionality of their Audix voicemail/attendant |
| + | system which ran on an AT&T 3BX usually 3B10) Unix platform. |
| + | This system cost thousands of dollars a port, and had very |
| + | limited functionality.</p> |
| + | <p>In an attempt to make things more possible and attractive |
| + | (especially to those who didnt have an AT&T PBX or Central |
| + | Office switch to hook Audix up to) a couple of manufacturers |
| + | came out with a card that you could put in your PC, which ran |
| + | under MS-DOS, and answered one single POTS line (loopstart |
| + | FXO only). These were rather low quality, compared with |
| + | today's standards (not to mention the horrendously pessimal |
| + | environment in which they had to run), and still cost upwards |
| + | of $1000 each. Most of these cards ended up being really bad |
| + | sounding and flaky personal answering machines.</p> |
| + | <p>In 1985 or so, a couple of companies came out with |
| + | pretty-much decent 4 port cards, that cost about $1000 each |
| + | (wow, brought the cost down to $250 per port!). They worked |
| + | MUCH more reliably then their single port predecessors, and |
| + | actually sounded pretty decent, and you could actually put 6 |
| + | or 8 of them in a fast 286 machine, so a 32 port system was |
| + | easy to attain. As a result the age of practical Computer |
| + | Telephony had begun.</p> |
| + | <p>As a consultant, I have been working heavily in the area of |
| + | Computer Telephony ever since it existed. I very quickly |
| + | became extremely well- versed in the hardware, software and |
| + | system design aspects of it. This was not difficult, since I |
| + | already had years of experience in non-computer based telephony.</p> |
| + | <p>After seeing my customers (who deployed the systems that I |
| + | designed, in VERY big ways) spending literally millions of |
| + | dollars every year (just one of my customers alone would |
| + | spend over $1M/year alone, not to mention several others that |
| + | came close) on high density Computer Telecom hardware.</p> |
| + | <p>It really tore me apart to see these people spending $5000 or |
| + | $10000 for a board that cost some manufacturer a few hundred |
| + | dollars to make. And furthermore, the software and drivers |
| + | would never work 100% properly. I think one of the many |
| + | reasons that I got a lot of work in this area, was that I |
| + | knew all the ways in which the stuff was broken, and knew how |
| + | to work around it (or not).</p> |
| + | <p>In any case, the cards had to be at least somewhat expensive, |
| + | because they had to contain a reasonable amount of processing |
| + | power (and not just conventional processing, DSP |
| + | functionality was necessary), because the PC's to which they |
| + | were attached just didnt have much processing power at that time.</p> |
| + | <p>Very early on, I knew that someday in some "perfect" future |
| + | out there over the horizon, it would be commonplace for |
| + | computers to handle all of the necessary processing |
| + | functionality internally, making the necessary external |
| + | hardware to connect up to telecom interfaces VERY inexpensive |
| + | and in some cases trivial.</p> |
| + | <p>Accordingly, I always sort of kept a corner of an eye out for |
| + | what the "Put on your seatbelts, youve never seen one this |
| + | fast before" processor throughput was becoming over time, and |
| + | in about the 486-66DX2 era, it looked like things were pretty |
| + | much progressing at a sort of fixed exponential rate. I knew, |
| + | especially after the Pentium processors came out, that the |
| + | time for internalization of Computer Telephony was going to |
| + | be soon, so I kept a much more watchful eye out.</p> |
| + | <p>I figured that if I was looking for this out there, there |
| + | *must* be others thinking the same thing, and doing something |
| + | about it. I looked, and searched and waited, and along about |
| + | the time of the PentiumIII-1000 (100 MHz Bus) I finally said, |
| + | "gosh these processors CLEARLY have to be able to handle this".</p> |
| + | <p>But to my dismay, no one had done anything about this. What I hadn't |
| + | realized was that my vision was 100% right on, I just didnt know |
| + | that *I* was going to be one that implemented it.</p> |
| + | <p>In order to prove my initial concept I dug out an old Mitel |
| + | MB89000C "ISDN Express Development" card (an ISA card that |
| + | had more or less one-of-everything telecom on it for the |
| + | purpose of designing with their telecom hardware) which |
| + | contained a couple of T-1 interfaces and a cross-point matrix |
| + | (Timeslot- Interchanger). This would give me physical access |
| + | from the PC's ISA bus to the data on the T-1 timeslots |
| + | (albeit not efficiently, as it was in 8 bit I/O and the TSI |
| + | chip required MUCHO wait states for access).</p> |
| + | <p>I wrote a driver for the kludge card (I had to make a couple |
| + | of mods to it) for FreeBSD (which was my OS of choice at the |
| + | time), and determined that I could actually reliably get 6 |
| + | channels of I/O from the card. But, more importantly, the 6 |
| + | channels of user-space processing (buffer movement, DTMF |
| + | decoding, etc), barely took any CPU time at all, thoroughly |
| + | proving that the 600MHZ PIII I had at the time could probably |
| + | process 50-75 ports if the BUS I/O didnt take too much of it.</p> |
| + | <p>As a result of the success (the 'mie' driver as I called it) |
| + | I went out and got stuff to wire wrap a new ISA card design |
| + | that made efficient use of (as it turns out all of) the ISA |
| + | bus in 16 bit mode with no wait states. I was successful in |
| + | getting 2 entire T-1's (48 channels) of data transferred over |
| + | the bus, and the PC was able to handle it without any problems.</p> |
| + | <p>So I had ISA cards made, and offered them for sale (I sold |
| + | about 50 of them) and put the full design (including board |
| + | photo plot files) on the Net for public consumption.</p> |
| + | <p>Since this concept was so revolutionary, and was certain to |
| + | make a lot of waves in the industry, I decided on the Mexican |
| + | revolutionary motif, and named the technology and |
| + | organization after the famous Mexican revolutionary Emiliano |
| + | Zapata. I decided to call the card the "tormenta" which, in Spanish, |
| + | means "storm", but contextually is usually used to imply a |
| + | "*BIG* storm", like a hurricane or such.</p> |
| + | <p>That's how Zapata Telephony started.</p> |
| + | <p>I wrote a complete driver for the Tormenta ISA card for *BSD, |
| + | and put it out on the Net. The response I got, with little |
| + | exception was "well that's great for BSD, but what do you |
| + | have for Linux?"</p> |
| + | <p>Personally, Id never even seen Linux run before. But, I can |
| + | take a hint, so I went down to the local store (Fry's in |
| + | Woodland Hills) and bought a copy of RedHat Linux 6.0 off the |
| + | shelf (I think 7.0 had JUST been released but was not |
| + | available on shelf yet). I loaded it into a PC, (including |
| + | full development stuff including Kernel sources). I poked |
| + | around in the driver sources until I found a VERY simple |
| + | driver that had all the basics, entry points, interfaces, etc |
| + | (I used the Video Spigot driver for the most part), and used |
| + | it to show me how to format (well at least to be functional) |
| + | a minimal Linux driver. So, I ported the BSD driver over to |
| + | Linux (actually wasnt *that* difficult, since most of the |
| + | general concepts are roughly the same). It didnt have |
| + | support for loadable kernel modules (heck what was that? in |
| + | BSD 3.X you have to re-compile the Kernel to change |
| + | configurations. The last system I used with loadable drivers |
| + | was VAX/VMS.) but it did function (after you re-compiled a |
| + | kernel with it included). Since my whole entire experience |
| + | with Linux consisted of installation and writing a kernel |
| + | module, I *knew* that it *had* to be just wrong, wrong, |
| + | wrong, full of bad, obnoxious, things, faux pauses, and |
| + | things that would curl even a happy Penguin's nose hairs.</p> |
| + | <p>With this in mind, I announced/released it on the Net, with |
| + | the full knowledge that some Linux Kernel dude would come |
| + | along, laugh, then barf, then laugh again, then take pity on |
| + | me and offer to re-format it into "proper Linuxness".</p> |
| + | <p>Within 48 hours of its posting I got an email from some dude |
| + | in Alabama (Mark Spencer), who offered to do exactly that. |
| + | Not only that he said that he had something that would be |
| + | perfect for this whole thing (Asterisk).</p> |
| + | <p>At the time, Asterisk was a functional concept, but had no |
| + | real way of becoming a practical useful thing, since it |
| + | didnt, at that time, have a concept of being able to talk |
| + | directly (or very well indirectly for that matter, being that |
| + | there wasnt much, if any, in the way of practical VOIP |
| + | hardware available) to any Telecom hardware (phones, lines, |
| + | etc). Its marriage with the Zapata Telephony system concept |
| + | and hardware/driver/ library design and interface allowed it |
| + | to grow to be a real switch, that could talk to real |
| + | telephones, lines, etc.</p> |
| + | <p>Additionally Mark has nothing short of brilliant insight into |
| + | VOIP, networking, system internals, etc., and at the |
| + | beginning of all this had a great interest in Telephones and |
| + | Telephony. But he had limited experience in Telephone |
| + | systems, and how they work, particularly in the area of |
| + | telecom hardware interfaces. From the beginning I was and |
| + | always have been there, to help him in these areas, both |
| + | providing information, and implementing code in both the |
| + | drivers and the switch for various things related to this. |
| + | We, and now more recently others have made a good team (heck |
| + | I ask him stuff about kernels, VOIP, and other really |
| + | esoteric Linux stuff all the time), working for the common |
| + | goal of bringing the ultimate in Telecom technology to the |
| + | public at a realistic and affordable price.</p> |
| + | <p>Since the ISA card, I designed the "Tormenta 2 PCI Quad |
| + | T1/E1" card, which Mark marketed as the Digium T400P and |
| + | E400P, and now Varion is marketing as the V400P (both T1 and |
| + | E1). All of the design files (including photo plot files) are |
| + | available on the Zapatatelephony.org website for public consumption.</p> |
| + | <p>We have more, higher-density designs on the way.</p> |
| + | <p>As anyone can see, with Mark's dedicated work (and a lot of |
| + | Mine and other people's) on the Zaptel drivers and the Asterisk |
| + | software, the technologies have come a long, long way, and |
| + | continue to grow and improve every day.</p> |
| + | <p>Footnote:</p> |
| + | <p>Has anyone ever taken a moment to sit back and consider the |
| + | ENORMOUS responsibility that Mark has taken upon himself by |
| + | doing this project? Have you ever thought of how incredibly |
| + | many things that he has to concern himself with, and that it |
| + | just *NEVER ENDS*! At this point, I believe that I have |
| + | worked with him on this project longer that just about |
| + | anyone, including some of his employees, and believe me, I |
| + | have a good vantage point to see at least some of the stuff |
| + | that he has to go through to accomplish this.</p> |
| + | <p>Personally, I would have *NEVER* taken on such a task, being |
| + | that I am and was quite aware of the level of responsibility required |
| + | to do so.</p> |
| + | <p>Yes, the task that I took on was and is quite a task, and |
| + | quite a responsibility, but I did what I knew I could |
| + | accomplish. Mark's part is way larger then mine, and all I |
| + | can say that I know what it takes for him to do what he is |
| + | doing, and I seriously appreciate the time and dedication |
| + | that he has put into all the incredibly wonderful things that |
| + | he has done for it and all of us.</p> |
| + | <p>Furthermore, Id like to seriously thank all of the project |
| + | contributors and everyone else that has done some part to |
| + | help with this project. Thank you for demonstrating that you |
| + | believe in it, and that you believe in us.</p> |