Softphones work, Hard Phones don't!

Im having a really strange issue with my VOIP setup. I have installed Asterisk with Freepbx and have it in my datacentre on an external IP address.

I have opened all the required ports and have everything working except our hard phones in the office. In the same office we have softphones which all work perfectly both ways.

The issue we are having with the hard phones is that when making “external” calls the person on the other end cannot hear the caller. The softphones on the same network work perfectly both ways so it doesn’t seem to be a firewall issue. I also have tested with opening all ports on the firewall.

If you need anything added to help with this just let me know.


One way audio is almost always routing or NAT issues. I would check the phones for any unusual NAT settings. You could also test the phones at another site (i.e. home, office next door, etc) just to rule out (or in) your local network. The FreePBX should have tcpdump installed and if you have a commercial firewall at your office you should be able to pull log files from that as well; if you have firewall support engage them as necessary. Turning on the SIP debug in the CLI will provide a lot of information as well.

Ultimately, based on the information provided it sounds as if you may have multiple issues as the symptoms you describe don’t really point to any single issue. Softphones work all the time, hard phones don’t work externally (presumably they work internally).

Thanks for the advice, we will test the hard phone at a different site to see if its anything to do with our office router/network setup.

More than likely its something to do with the hard phones themselves. The hard phones are Yealink and Shom phones. Both have the exact same issue.

We managed to test the yealink phone in another location with no luck. Now to add to the issue i have problems with a Zoiper softphone having the same issue. I read something about the RTP used are different and that i needed to configure the system to accept a larger range from 5000-20000. Done this too with no effect. Still digging to see what else to try.

Sure sounds like a NAT issue. Different approach, when a station receives an external call do you get two audio? Your first post seems to imply the one way audio only applies to outbound external calls. Do station to station calls work as expected. You may be dealing with a trunk issue either in or out or both. We have around 200 Yealink phones deployed in a similar setup without issue. Are you doing any firewall routing with the iptables?

disabled iptables and hardware firewall to test. Even disabled the firewall in our office so all the traffic was completely unfiltered.

When external calls come in all is fine with voice works in both directions. Its only when we make external calls.

It may be something on the trunk settings, specifically the outbound context, the call connects but the audio from your IP is lost somewhere in the process. The tcpdump command or the RTP trace in the cli may help track it down. Double check your trunk settings with your SIP provider as well. There is a possibility it’s something on their end. I know it’s a pain but if you have the ability to, testing with a second SIP trunk provider may help.

Our trunks use two distinct IP addresses for outbound and inbound calls. It’s kind of feels like the outbound RTP is simply not arriving at the correct IP address/host. I know you turned off your office firewall but we had a situation where our outbound audio was going out over a different WAN connection than the inbound audio and we experienced the same thing (inbound calls OK, outbound no one could hear us).

just wanted to update everyone that i have resolved my issue with the hard phones.

Basically the issue was related to NAT but not with any network or router configuration.

Within the freepbx web portal under “settings > asterisk SIP settings” i needed to specify the external IP address with the internal network configuration. I understand that this is a basic setting but unfortunately when i first set the system up i was very new to asterisk and was under pressure to get it all working. Initially when i set the NAT setting all calls would get dropped around 7secs. This was not ideal so i left this off as our softphones were working and i needed to move on to another project.

Thanks for all you input fcd_3 much appreciated.