I’m not sure how diverse my readership is, and some of my readers are not really interested in the tech end of what I play around with, so let this be a bit of warning that this will be on the tech end of what I am interested in.
I am in the process of building a PBX. In case you are wondering, PBX is short for Private Branch Exchange. Some of the big names in the industry are Avays, Nortel and Lucent. There are many others, but those are pretty much the big names. Where a PBX is primarily used is when a business has more than 4 phone lines coming in to the office, and they need to be able to transfer calls from one phone to another.
Related to the PBX is the Voice Mail system. Octel is the ‘big’ name here. Why this is ‘related’ and not ‘part’ of the PBX is that for most systems a voice mail system is a computer with a few phone lines coming into it that acts as an extension off the PBX and usually is not part of the PBX itself, though that is changing as well.
Another related platform is the Voice Response Unit, VRU, or the stupid phone system firewall that tries to isolate tech support from customers. I don’t immediately have a need for one of these, however that may change. Most of these are little more than a collection of recordings along with a touch tone recognition system. Some of the more advanced systems can handle verbal responses as well, recognizing numbers, letters, words and occasionally short phrases (usually on the lines of ‘tech support’.
My immediate interest is in building a small phone system that allows me to place calls from one IP or WiFi phone, to another. Over time I would like to add the ability to connect to the phone systems, being able to use one of the phones I’ve gotten working to place and receive calls to normal phones and IP phones on the internet.
The obvious question is ‘Why do you want to do this? Up front I’ll admit that I don’t need a bunch of phone numbers, or phone lines into my apartment. II may very well run a small business of sorts in my spare time, but it’s not taking a significant amount of my time right now, and I’m not really expecting to do a lot of expansion any time soon.
My own reason is that I’m interested in the underlying technology. I’ve been doing network related stuff for over 25 years now, Everything from maintenance and repairs on multi-channel phone backbone hardware on up to Wan, Lan and related technology. I think the idea of a PBX is really just an extension to that.
Ok, time to get down to what ammounts to brass tacks. I’m not going to be buying a PBX from one of the big guys. As noted I don’t have the commercial interest, and at least in part it defeats the objective of learning through implementation. Instead I will be using a platform called Asterisk that runs on a number of different operating systems, though is most recognized under Linux. In the short term the idea is to get a couple of IP phones to talk to each other. Longer term will be to replace several phone systems and hopefully be able to extend the coverage of my phones from strictly within my apartment to most of the city block that I am on. A much longer term objective will be to add a sytem that will handle unknown callers in a method I consider reasonable, though those callers may not. (I’m not a big fan of telemarketers, so they are probably not going to be very encouraged to keep trying to call me.
I have a few ’strange’ requirements. As an example, any phone that picks up and dials ‘911′ should be immediately forwarded to the external 911 system. WiFi phones should be able to connect to the system locally and remotely. If I’m in a coffee shop with an open access point, I should be able to place calls. This applies to soft phones on laptops or tablets as well. There may be a requirement for those devices to enter a passcode to establish a long distance call if the conversation is going to be billable, however I haven’t decided how I’m going to implement that. One possibility there is to use Perfect Paper Passwords from Steve Gibson’s systems discussed on Security Now, modified to be 4 or 8 digit numbers rather than text, but we’ll see. It’s a decision for the future.
One of the things that I am interested in doing is hooking this up so that I can also use my amateur radio hardware and software to take and place calls. That’s something for down the road though.
To get started I’ve already set up a server. For that I stopped at my local Microcenter and picked up a PowerSpec V50 small formfactor computer, installed Ubuntu on it, and installed the Asterisk software. i have also collected several wifi UTStarcom wifi phones that were originally provisioned for Vonage. These may, or may not, provide me with the phones I need, but if they do, I’ll be satisfied. As an alternative to the UTStarcom phones, and one that I will probably use first, there are several softphone systems available for Linux that will allow me to establish and test phone service withinmy network even before I get the UTStarcom phones set up.
As an example of what I am contemplating longer term, the following diagram may help:

The phones in the upper left would be cell phones, such as my own, or of family who would like to use my pbx for an alternate voicemail system, or the like. The ‘phones’ beside them are IP phones that plug into a network switch (the blue round thing below them) as are the computers with a V in them, PCs running phone software of some sort. Below those is a separate wifi network, possibly infrastructure, more likely ad-hoc, that the wifi phones connect to the PBX a little more directly through. Off to the left is my firewall setup, which will allow call traffic into and out from my network, to the Internet in general (below) or specific internet users such as cell phones above.
Obviously things can get very complicated pretty fast, so let’s start with some ideas of how to set things up. Each phone and computer above will have it’s own extension. Stuff in the ‘local’ network will have an extension in the range 2###, phones connected via wifi will be 3### series extensions. This is purely to keep track of what type of device is being used. If I need to at a later date, I may set IP ‘Phones’ (the type that look like a phone, and don’t interface directly with a computer) up in the 4### range. In the long run, I hope to use 1### for extentions that map to external phones such as cell phones, and family phones, but I may throw those up to the 8### range I don’t know. 9### is reserved for setting up various external call connections. 0 will be a virtual operator of some sort, but that’s for much later down the line.
So, that’s the plan at the moment. It’s subject to change, but if you don’t start out with a plan of some sort, you’re pretty much lost from the get go.