The SIP protocol is commonly used for IP telephone communications. Unfortunately it’s notorious for having issues with NAT traversal. Even some major vendors can’t seem to get it right. [Stephen] had this problem with his Cisco WRVS4400N router. After a bit of troubleshooting, he was able to come up with a workaround that others may find useful.
The router had built in SIP ALG functionality, but it just didn’t work. [Stephen] was trying to route SIP traffic from a phone to an Asterisk PBX system behind the router. The router just couldn’t properly handle these packets regardless of whether SIP ALG was enabled or disabled.
[Stephen] first tried to change the SIP port on the external VOIP phone from the default of 5060 to something else. Then he setup port forwarding on the router to the Asterisk box to forward the traffic to the Asterisk system on the original port. This sort of worked. The calls would go through but they would eventually drop after about 20 seconds.
The only thing that [Stephen] could get to work completely was to change the SIP port in Asterisk’s sip.conf file using the “bindport” directive. He changed it to some random unused high port number. Then he setup port forwarding on the router to forward incoming UDP packets on that port to the Asterisk system. This worked fine, but now all of the original phones behind the router stopped working because they were configured to use the default port of 5060.
Rather than re-configure all of the phones in the organization, [Stephen] made one change on the Asterisk system. He setup an iptables rule to forward all incoming traffic on UDP port 5060 to the new SIP port. Now all of the phones are working with minimal changes across the organization. It’s a lot of hassle to go through just because the router couldn’t handle SIP correctly, but it gets the job done.
[Ward Mundy] has found something great by combining a GXP-2200 phone with Raspberry Pi to create a private branch exchange. So the idea behind a PBX setup is kind of like a company intranet. All of the phones in the system are assigned an extension number and have access to the internal system functions like voice mail, and sharing phone lines to the outside world. We’ve talked about using an RPi as a PBX before, but the high-tech phone he’s using this time around pulls everything together remarkably well.
The GXP-2200 is available for under $200. It runs Android and has a full color touch screen pictured above. It is marketed as a multimedia phone and indeed it brings Skype and Google Voice to the party. But it also offers six SIP lines. The hardware even seems to be planned for this type of use as the phone offers a second Ethernet port to which the RPi board can be connected. In this example [Ward] simply screws the RPi to the phone’s plastic stand and connects the two using a six-inch cable. From there the PBX can be configured with the phone’s browser. How’s that for slick?
We’re not sure why this use didn’t immediately come to mind when we got our hands on a Raspberry Pi board, but the hardware is almost perfect as a PBX system. PBX, or Private Branch Exchange, is basically an in-house phone system. This guide which [Ward] put together shows you how to do some interesting things with it.
When talking about PBX setups the most common software package is Asterisk. That’s what’s at work here, rolled up with a bunch of other helpful software in an RPi targeted distro called Incredible PBX. All it takes to get up and running is to partition and burn the image to an SD like any other RPi distro. The configuration ends up being most of the work, starting with changing the default password, and moving on to customizing the environment to match your phone numbers and your needs. As with PBX setups on other embedded Linux devices, Google Voice is your best friend. The service will set you up with a free phone number.
This guide doesn’t delve into hardware connected hand sets. You’ll need to use a SIP phone. But that’s easy enough as there are free apps for most smart phones that will do the trick.
As you well know, today is March 14th – aka “Pi Day”.
Celebrated in math classrooms around the country, this truly is a celebration that belongs to the geeks. Here at Hack-a-Day, we too love Pi day, though we might not outwardly celebrate it with as much gusto as expressed by some of our readers.
[Chris Poole] is one Hack-a-Day fan who knows how to make the most of this mathematical holiday. He has put together a neat SIP-based phone service that reads Pi aloud to anyone who calls. He is running Asterisk in combination with Perl to read off the numbers, and is using a free SIP DID number to accept the calls. We gave it a shot earlier today, and were greeted by a gentle synthesized voice reading off the numbers of Pi. We’re not sure how many digits it is programmed to handle, as we stopped after about 20, so give him a call and let us know how many digits you make it through.
As a parting note, no Pi Day would be complete without a few obligatory Pi-related (albeit old) web comics and pastry concoctions, so here you go!
XKCD – Pi Equals…
XKCD – e to the Pi Times i
XKCD – E to the Pi Minus Pi
Spherical Pi Pie
[kayakdiver] is developing a SIP and PUFF controlled kayak, but in order to start you first need a SIP and PUFF switch. These devices allow the user to lightly sip or puff into a tube to control switches or sensors, and are sometimes mounted in joysticks for control of a computer, or wheelchair, etc, but finding the cost prohibitive the next best thing was to whip up their own.
The design is clean and direct featuring off the shelf tubing and fittings, 2 pressure/vacuum switches, and an Arduino. Each one of the switches can detect pressure or vacuum, so one switch set to each is fed though a Y and up to the mouthpiece, since everything is sealed this has the advantage of only needing pressure and not airflow making it more comfortable for the user over long periods, and keeps down on humidity in the tubes.
[sprite_tm] made my morning by sending in his latest work. After opening up his new SMC WSKP100 (Skype wifi phone) to identify the hardware differences, he managed to shrink a flash image from the SMCWSP100 to fit on his new toy. Then he spent some time hacking the kernel from the former to work on his phone. The result? A SIP operational phone that’ll connect to his asterix server at half the price of SMC’s official SIP phone.