DIY PBX Chapter 1: The bright idea

As you may know, for the last five years, I've used an IP04 as my home PBX. This device has served me well; in that time adaptively blocking over 900 unwanted calls while permitting friends and family to call me, even when I have travelled. But, I have started to feel the limitations of the IP04, and the current restrictions imposed by the COVID-19 pandemic have givem me time to attempt to realize some of my home automation ambitions. So, with a starting goal of replacing and enhancing my home PBX, and an ultimate goal of creating a home automation hub, I have decided to take the time to build a DIY PBX.

The part in which I explain and justify myself

I have run into a number of limitations in the IP04 PBX; some of which I have caused, and others for which the hardware and software take responsibility. As an example of a good IoT device, Rowetel makes both the hardware schematics and the software source readily available, and I have no complaint about that. While stable and capable enough, the device itself sports an obscure (and more-or-less obsolete) CPU that lacks a number of the niceties that modern Linux expects, which makes system-programming challenging. I have found a "build environment" for the processor and system, but it lacks documentation and support. Additionally, Rowetel no longer makes or supports the device. All this to say that, while the device works as intended, I cannot really upgrade any of the software. And my ambitions and plans have run into the limitations of the software.

So, I've expanded, using the IP04 as the telephone system interface, and placing accounting, reporting, telephonebook management, and telephone system management on a separate, networked, system. This works well enough, but I'd like to centralize it all, integrating the phonebook and system management (for instance) back into the telephone system interface. And this will take a bigger machine than the IP04.

On the hardware side, I can tell that the IP04 has aged. One of the FXS ports has stopped working entirely, and, on the remaining ports, audio that once sounded clear as a bell now sounds as if it were recorded in a shower. A constant hiss permeates the audio; probably a combination of (my) poor choice of operational parameters, and the ageing of the hardware. (I surmise that the load I've put on the Blackfin processor in the IP04, and/or the ageing of the flash memory that it uses, has introduced minute processing delays that turn up as white noise on the phone line. I've tried various Asterisk tuning parameters, but nothing seems to work.)

And so, I justify my choice to build a new PBX, using all that I've learned from tinkering with and managing the IP04 over the last 10 years or so.

The part where I show my blue-sky plans (and expose my inexperience)

I intend to take all the telephony stuff I do with the IP04, and all the telephony administration stuff I do on my server, and put them all in one box. This new system will have enough processing power to properly accomodate the demands of the phone system and its support tools, and enough room to expand if and when necessary. It will support all the system development tools necessary to maintain and build the system, without demanding an obscure "build environment". Finally, it will not cost much; it should only take spare parts, obsolete components, and one or two new parts (like a telephony card to connect to the phone network and to my telephone extensions).

Initially, the new system will only replace the IP04. But, in time, I will expand it to handle more telephony tasks, and even some "home automation" tasks as well.

At least, that's the plan.

References and Further Reading
The home of the Asterisk telephony project
Books published under an Open Documentation Licence
Asterisk: The Future of Telephony
Asterisk: The Definitive Guide
Asterisk Cookbook