Continuing with my tendency to vent about stuff, today I want to talk about telephony.

Since a few years ago, I need to use different VoIP providers to keep in touch with friends and family, in different parts of the world.

So, I have a DID in Argentina (bought trough the excellent DIDWW), and another one in Ireland (which came for free when I was using BlueFace for call termination). I also have a service to handle outbound calls (FlowRoute), but it is not necessarily the only one I use, as cost and quality of Internet calls vary wildly. I have also used several Betamax providers, the aforementioned BlueFace, tried Netelip, etc.

This results in having soft-phones installed in my mobile devices and laptop, and a hardware SIP phone that I carry around; all of them having configurations for at least 3 different providers. This does not lead to hilarity.

In light of this, it's been a long time since I want to set up my own SIP router to be able to handle all of this, and be able to register to a single SIP proxy that will handle all the complexity.

Last Friday, the Irish DID decided to stop working. It turns out, that since I don't have my own setup, I was using that provider as a kind of hub, with their provided voicemail, and terminating the Argentinian DID there. So the damage was big.

This made me spend way too many hours during the weekend trying to set up some SIP solution. And I am not pleased.


First, I went with the old and known Asterisk. The default installation in Debian puts 95 configuration files in /etc/asterisk, which you are supposed to review and adjust. Yes, you've read correctly: ninety-five different configuration files. None of them having anything close to a sensible explanation of their syntax or function. Also, not a remote hint of consistency.

I could not find any configuration helper in the Debian archive, just hundreds of PHP-based projects scattered around the web. All the started guides I've found only guided you for the most basic tasks, but did not give you a way to have a functioning system.

Needless to say, after a short time I grew tired of this, and decided to try something else.

Way too many options

After this, I have spent an inordinate amount of hours, just trying to comprehend the difference between the gazillion different VoIP systems out there, I am still struggling to see that. Even if I understand that X is not a PBX, I don't exactly need a PBX, and most products deliver at least some of the features I need. It seems none of them makes a good job of just explaining what you can or can't do with their software.

Documentation is awful in all the projects I researched. When it is there at all, it is incomplete, maybe super detailed at points, but in most cases, there is just no big picture view of the system to just start understanding how things work, and how to find your way.

Sadly, not even the distros seems to be able to put a list of "recommended VoIP software for different needs".


Finally, I've found YATE (Yet Another Telephony Engine). It seemed promising: not too bloated, fairly extensible, and scriptable in a few languages!

Sadly, after many hours, it turned out to be a fiasco. The documentation seems decent, until you realise there are many key details left out. Basic information about how a call is handled cannot be found anywhere. Using the scripting power, I was able to find out at least the variables that were available, but that was not enough. I found a mailing list (with the worst archive reader I've seen in ages), where people made the very same questions I have, and nobody has replied. In years.

So here I am, stuck with not being able to tell if a call is coming from a random host on the internet, or one of my DIDs, or one of the authenticated clients. I guess I will have to start from scratch with Yet Another (Another) Telephony Engine.

comment 1
I haven't used it myself.
Comment by Ralf
comment 4

you might have a look at the have an OSS version of their provider-grade SW with a nice WEB-UI around kamailio & co.

good luck and keep us posted :) günter

Comment by chymian
comment 5

Thanks for all the comments!

Ralf: That website is all in German, and I am not really a fluent speaker of the language :)

Mehdi: I thought about it, but I could not really understand the use case for it, it does not seem to be suited for my case: a hub to concentrate all my SIP activity, so my clients can be stupid.

pdebuyl: By suggestion of Daniel Pocock, I am actually trying to do that, but it is far from easy, if you want to do anything more than just routing federated calls. The documentation is awfully incomplete, which does not help.

chymian: I have not heard about them, but I am trying to stay with Debian-packaged systems. That's also why I ruled FreeSWITCH out since the beginning.

Comment by Martín Ferrari
comment 6

And yes, I promise an follow-up to this, when I finally make all this work!

So far, I only managed to get a basic repro instance working, but that does not allow me to route calls to my termination providers, have call groups, etc. So I need to dig into the arcane Asterisk setup and understand how these two interact (which seems to be a mystery).

We will see...

Comment by Martín Ferrari
mail updates
Just configured the emailnotify plugin (should be more clearly advertised, this is very useful!). Let's see if it works...
Comment by Martín Ferrari