FreePBX - Most Powerful & Flexible Phone System Known to Man

ITEXPO Blog
| The ITEXPO blog is where you can view the latest news and happenings at TMC's leading VoIP conference.

FreePBX - Most Powerful & Flexible Phone System Known to Man

freepbx-let-freedom-ring.pngI've been writing about VoIP and reviewing VoIP products since 1996, but even I need help once in awhile to figure out how to get a certain VoIP feature to work, how to install an IP-PBX, how to configure an advanced phone feature, etc. Well, recently I had to deploy a FreePBX system in a production environment for another company and I hit a few stumbling blocks that required a call to FreePBX's technical support and I have to say they were very responsive, extremely knowledgeable and very helpful.

One of my first stumbling blocks was getting second dialtone on a specific FXO port simply by pressing one of the line keys on a Grandstream GXP2100 phone. The reason is there is a DoorKing security gate system hooked into one of the Sangoma FXO ports that listens for certain DTMF touchtones to open and close the gate.

First, I had to create three groups in chan_dahdi_groups.conf, which is done in the FreePBX UI via this URL:
http://[ipaddress]/admin/config.php?display=dahdi
group=0 -> FXO trunks - channels 5, 6, and 7 (normal inbound/outbound lines)
group=1 -> FXO trunk  - channel  8 (special DoorKing port)
group=2 -> FXS lines  - channels 1, 2, 3, and 4 (analog devices)

I separated the DoorKing into its own trunk line group so it wouldn't be used for outbound calling. I also had to change the context to "from-analog" for the FXO ports for routing via channel number to work. I then assigned DID 1880 to DAHDI channel 8 so I could match on this DID. It's not technically a DID, but that's how FreePBX performs its matching and routing.

With the channels configured I added a new DAHDI trunk called 'DoorKingTrunk' and assigned the DAHDI Trunk drop-down to 'Group 1 Ascending', which is the single DAHDI channel 8 assigned previously.

Next, I added an Outbound Route called 'doorking' with 'Trunk Sequence for Matched Routes' set to 'DoorKingTrunk' and with a dial prefix called '999' such that if you dial 999 from any phone, it simply "grabs" the DoorKingTrunk line (channel 8) and acquired second dialtone. Lastly, I programmed a speed dial on the Grandstream GXP2100s to dial 999. Now, opening the gate is as simple as pressing a speed dial, hearing second dialtone ('true' analog dialtone, not simulated), pressing *7 {pause}, press 9, done! Now if only Grandstream speed dials supported pauses (usually comma) I could have programmed '999,,*7,9' for a single button press to open/close the security gate. smiley-frown Get on that, will ya Grandstream?

Verizon FiOS DTMF Fun!
One issue I encountered was flaky, inconsistent routing to extensions due to poor DTMF detection. The question was whether this was due to Verizon FiOS and the Motorola 14842 ONT (fiber to analog) device, or the Sangoma hardware installed in the FreePBX system. I was definitely leaning towards a Verizon issue, but the FreePBX technical support team did some extensive testing of the FiOS analog lines and pinpointed it as a Verizon issue. For some reason they were sending very short <25ms touchtones. Due to the Sangoma hardware, FreePBX was able to perform extensive DTMF debugging, something you cannot do with Digium hardware. I also contacted Sangoma tech support and they too indicated the touchtones received were very short.

I did some further testing on my own and it appears that digits 1-3 are usually 25ms or less while digits 4-9 are 50ms or greater, often 110ms. Thus, FreePBX has no issues detecting 4-9 but digits 1-3 were very finicky. After several calls to Verizon, two onsite visits, and escalation to from level 1 to level 2 to engineering, Verizon blamed everything from the PBX to the Genband switch they were using, to even blaming Asterisk zaptel timing / DTMF issues - but they offered no resolution. I have a blog post pending to go into more details on this, but fortunately, I was able to workaround the issue by using extension numbers that avoid digits 1-3.

Key System "You have a call on Line #" Redux
Users tend to be set in their ways. Many are used to the old key systems where each line flashes and they can answer that line, put that line on hold and have another user pick up that same line from their phone, i.e. "Hey Joe, you have a call on Line 3". In PBX parlance that's known as call parking, but unlike key systems, you don't see lines dedicated on the phones, so call parking and picking up a parked call is a different procedure which often throws users for a loop. But what if you can simulate a key system's call line appearances?

FreePBX technical support told me there is a workaround for this. Simply program the GXP2100's programmable buttons to use busy lamp fields for extensions 71, 72, and 73 and assign BLFs to three buttons. You can create as many BLFs as you have buttons. Then program a 4th button as a speed dial to ##70# which is Asterisk's transfer to the next available call parking orbit. When you press this speed dial button it tells FreePBX to park on x71, if busy park to x72, if also busy park to x73, etc. The BLF will change from green to red on the GXP2100 allowing another GXP2100 to visually see that a call is parked. Simply press the red button and you can pickup the parked call. Now FreePBX is a pseudo key system! regular_smile

Grandstream Dialplan ## Fun
Asking users to press ##70# to park a call is a bit much to ask, so I attempted to create a speed dial using FreePBX's EndPoint Manager and then deploying the speed dial globally to all the GXP2100 phones. Alas, Grandstream uses a PHP compiled configuration file that reads the human readable text file and converts it into a binary format. Well, the '#' key is a "comment" in PHP code, so the # gets ignored when EndPoint Manager generates the binary file. FreePBX technical support told me it's a quirk with Grandstream phones and they said one of their lead developers, Luke Duquaine would work on a fix for this today. Talk about service! I imagine if I called Cisco or Avaya and asked for a software fix I certainly wouldn't get a fix so quickly - if at all!

I head out to ITEXPO tomorrow in Las Vegas where I am super-excited to check out the first-ever FreePBX World. I've learned a lot just playing around with FreePBX, but even more from the FreePBX technical support team. I can't wait to network with other FreePBX users, developers, and resellers and learn more how they've customized the most flexible phone system on the planet!