Ringdown over IP
Published on
Being the eternal “Fixer Of Things Nobody Else Knows How To Do”, I got presented with a fairly simple task: replicate an old school ringdown phone over a network. What follows are the chronicles of how I achieved this, from one ATA (analog telephone adapter) to another without using a PBX.
The Ask
For the unaware, ringdown phones are just a point-to-point phone line. At their simplest, they operate as such: you pick up phone A, and phone B rings until they pick up. Pick up phone B, and phone A rings - no need to dial. Ringdown phones are commonly used in large facilities with critical operations (power plants, factories), safety (help phones), and some hospitality/retail environments (e.g. “call for assistance”). Typically these were special extensions on an analog PBX, but nowadays for POTS you can get devices like the Viking DLE-200B which are a phone line simulator - it acts as a transparent bridge between two phones that you can connect back-to-back. So, when one phone goes off hook, the other rings. Exactly what we need! But what if you need to run it over distance?
The Solution
As always, the solution to communications in the 70s and beyond was twisted pair copper lines. But in the 21st century, we have fiber and IP. For this specific situation, we have a nice redundant fiber ring going where we want phones (or at least close by). But the core part of this is we didn’t want a reliance on an external source like a PBX - it would be just one more thing to go down, and we didn’t need any of the features it would offer.
I started by provisioning a VoIP VLAN just for the ringdown phones/ATAs. Then I got both of my ATAs plugged in and powered up. For this, I decided to use some Grandstream HT801s. They’re super basic single-channel ATAs, and extremely reliable. Then I set a static lease in the DHCP server for them - because of the configuration, a static IP is required. After logging into the configuration interface we only need to set one thing: the auto-dial, or as Grandstream calls it “Off-Hook Auto Dial”. In my case I set it to *47192*168*0*8*5060 for phone A.
Breaking it down, *47 is the feature code for IP direct-dial; 192*168*0*8 tells it to “dial” a SIP endpoint at 192.168.0.8; and *5060 tells it to use port 5060. In my case, I have the ATA for phone A as 192.168.0.7 and phone B as 192.168.0.8, so we need to tell phone A to dial phone B and vice versa. So, for phone B, I would use *47192*168*0*7*5060.
And technically that’s all you need to do! I went ahead and moved the Opus codec up for a higher-fidelity call, but that’s just personal preference. Also, even though the “auto-dial” implies, well, dialing, you don’t actually hear the dialed digits - once you pick up the phone, the other rings within a half second. Pretty cool!
Now these two ATAs are married and as long as they can talk to each other over the network, once you pick one end up, the other will ring. You could even cross network or subnet boundaries if you wanted - as long as port 5060 is open that’s all you need. Or, for a more low-tech solution, you could set static IPs in the devices themselves and just plug them into each other with a long ethernet cord and no switch. The sky is the limit!