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.
Payphones used to be found on just about every street corner. They were a convenience, now replaced by the ubiquitous mobile phone. These machines were the stomping grounds for many early computer hackers, and as a result hold a place in hacker history. If you’ve ever wanted to re-live the good ol’ days, [hharte’s] project might be for you.
[hharte] has been working to make these old payphones useful again with some custom hardware and software. The project intends to be an interface between a payphone and an Asterisk PBX system. On the hardware side, the controller board is capable of switching various high voltage signals required for coin-line signaling. The controller uses a Teensy microcontroller to detect the hook status as well as to control the relays. The current firmware features are very basic, but functional.
[hharte] also wrote a custom AGI script for Asterisk. This script allows Asterisk to detect the 1700hz and 2200hz tones transmitted when coins are placed into the machine. The script is also in an early stage, but it will prompt for money and then place the call once 25 cents has been deposited. All of the schematics and code can be found on the project’s github page.
The Pogoplug Series 4 is a little network attached device that makes your external drives accessible remotely. Under the hood of this device is an ARM processor running at 800 MHz, which is supported by the Linux kernel. If you’re looking to build your own PBX on the cheap, [Ward] runs us through the process. Since the Pogoplug 4 is currently available for about $20, it’s a cheap way to play with telephony.
Step one is to convert the Pogoplug to Debian, which mostly requires following instructions carefully. After the Pogoplug is booting Debian, the Incredible PBX bundle can be installed. We’ve seen this bundle running on a Raspberry Pi in the past. Incredible PBX’s preconfigured setup based on Asterisk and FreePBX gives a ton of functionality out of the box.
With your $20 PBX running, there’s a lot that can be done. Google’s Voice service allows unlimited free calling to the USA and Canada. With Internet connectivity, you get email notifications for voicemails, and can query WolframAlpha by voice.
It looks like a consumer good, but this PBX server blade was built by [Benoit Frigon] over the last couple of years. It brings multiple telephone extensions to his home service.
The device runs Asterisk open source PBX software. Because it will be on all the time he wanted something that doesn’t draw a lot of power. The 500 Mhz system seen on the left has just a half a gig of ram. It’s enough to do the job and at 10 Watts it’s not going to break the bank when it comes to paying the electric bills. The board in the middle is used to interface the analog handsets with the land line. From the look of it he’s got it rigged for two extensions.
That’s all somewhat par for the course with PBX rigs, but the enclosure is where he really shines. [Benoit] used 22 gauge aluminum sheet to fabricate the enclosure which is designed to blend in with the rest of his home’s rack mount hardware. To provide control at the rack he added his own LCD and touch-sensitive button interface to the front of the case based on a PIC 18F2520. The system can also be accessed via the web thanks to a custom interface he coded.
[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.
[Headsheez] found a way to get his home phone service for free. He’s using a set of tools that we’re familiar with to route service from a typical analog phone system (which involves the extensions wired into your home) through a server to the Internet. On the hardware side of things this starts out with an Analog Telephone Adapter which translates the analog signal for use in a PBX system. He uses a copy of the open source PBX project called Asterisk which we’ve also seen used on devices like routers and the SheevaPlug. The actual telephone number comes from a Google voice account which for now is a free service but there’s no guarantee that it will remain that way in the future.
This should provide seamless service just like you’re used to with a traditional home phone line. There’s even caller ID for the number – but not the name – for incoming calls. The one big feature that is missing from this setup is the ability to call 911 for emergencies.