| 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> |