Hack 71. Use a Rotary-Dial Phone with VoIP
Or "How Grandma Mabel Learned to Love Voice over IP."
What do a 19th-century Missouri undertaker and SIP have in common? The common thread is their ability to connect two parties without a third party intervening. That is, they both serve an intermediary role between caller and callee, signaling the call and providing a pathway for its sound signals.
In 1891, a Missouri undertaker, Almon B. Strowger, was granted a patent for an electromechanical device called a stepper switch. The stepper switch allowed the calling party to control whom he would connect to without the need for an operator. Today, that control mechanism might be analogized to a phone number. But the important point is that Strowger's invention made it possible to connect phone calls without a telephone operator's intervention.
SIP promotes the ability to call a party without the need for a SIP gateway or gatekeeper, as long as you know the recipient's sip@ address, called a SIP Uniform Resource Indicator (URI). To pay homage to the pioneering Mr. Strowger, we have included this hack to connect a rotary phone, such as a 1920 Western Electric candlestick phone (Figure 5-5), to a VoIP network.
First, let me give you a quick overview of how a rotary phone works. The rotary phone provides signaling to the central office by establishing a flow of current and then interrupting the flow momentarily to signal a pulse. The number of pulses produced in a given time period represents the number being dialed. Five pulses represent the number 5.
Adding a rotary phone to a VoIP network is a relatively painless process, as long as you can build an intermediary gateway that understands pulse signaling and SIP, and can signal both legs of the call. What can be painful is finding a VoIP device that supports rotary or "pulse" dialing. That's why you might be better off building this gateway yourself.
5.14.1. Do Pulse with an IAXy
The Digium IAXy FXS gateway supports pulse dialing, providing a simple and complete solution. In fact, the IAXy is a complete gateway in and of itself: it has an analog phone port on one side and an Ethernet RJ45 port on the other, complete with a little Inter-Asterisk Exchange (IAX) user agent built in.
Figure 5-5. A 1920s vintage Western Electric candlestick phone
The Digium IAXy supports pulse dialing out of the box. Configure /etc/asterisk/iax.conf with some entries that will allow the IAXy to be used as a peer:
[rotary] type=peer username=asterisk secret=supersecret
In this case, I used rotary as the IAX peer name. All you need to do, once this config is done, is register the IAXy with your Asterisk server as the IAX user asterisk. The rotary phone connects to the IAXy. Now you can use the rotary phone as you would any valid endpoint in your dial plan by routing calls to IAX/rotary using a Dial command.
5.14.2. Do Pulse with a Wildcard
If you opt to use Digium's Wildcard TDM400 with an FXO module installed, you'll need to add a line of code to the /etc/asterisk/zapata.conf file on the Asterisk phone system. In the Zaptel channel section of zapata.conf for this particular FXO channel, the following bit of config will enable the FXO port to support pulse dialing:
Once you have modified the zapata.conf file, connect your home line to the FXO port. To test, go off-hook and try dialing an extension off the Asterisk system from the rotary phone. Remember that using a rotary phone takes a little longer to dial, so be patient. Once you have confirmed that you can dial internally, access the outside line configured for pulse dialing and call someone.
5.14.3. "Pass Through" Pulse Dialing Signals
With many of the other VoIP product manufacturers, the rotary end-to-end solution is not as easy to configure or operate. Most VoIP gateways support pulse dialing on the FXO connections to the phone company. But they typically do not support pulse dialing with the FXS connections (i.e., the phones). A simple hack to overcome this limitation, at least in theory, is available on some of these gateways. One could assign a dedicated FXO port that is enabled for pulse dialing directly to an FXS port. The FXS port in turn would automatically seize the outside line when the rotary phone goes off-hook. In this way, the pulse signals sent by the phone are "passed through" to the phone line.
The drawback of this configuration is that you will not be able to dial internal extensions directly. Oh, and you'll be scratching your head if your local central office doesn't support pulse dialing! Make sure your local central office supports pulse dialing, or this hack definitely won't work.
5.14.4. Do Pulse Without Any Special Hardware
If none of the previous solutions turns your crank, there's yet another way you can use your classic rotary-dial phone with modern telephony services like VoIP and your tone-dialing-only phone company. If you have Yahoo! Widgets (formerly Konfabulator), you can actually do tone dialing via your rotary phone with the help of your Windows PC or Mac. Download and install Harry Whitfield's totally 'leet DTMF Dial widget (http://www.widgetgallery.com/view.php?widget=35922).
By taking your old-school phone off the hook and holding its mouthpiece up to your computer's speakers while dialing on the widget, the DTMF tones this widget generates will be sent through the phone line to the phone company (or to your VoIP ATA if you use a VoIP service). Just make sure the volume on your computer is up high enough for the mouthpiece to pick up the sound of the tones.