Cisco 303 codec g722 audio 1 way. With Solution!

Hello everyone:

We have been running FreePBX for months, updating modules & system when Stable updates are available, and with no problem since we started with it.
All our phones and FreePBX are configured to use g722 with priority, and g711u when not available. There are no problems when transcoding. Everything was working perfect, until yesterday.
With no changes at the system, nor at the office routers, nor at the phones, since yesterday, all Cisco 303 phones had this behavior:

  • If you make a call from those phones, if it is to an internal extension from one office to another, you can send audio, but no receive it. We do not use VPN, so this internal calls from one office to another pass through FreePBX.
  • If you make an external call from those phones, passing by any trunk, tested with two different providers, you cannot send audio, nor receive it.
  • In any of this two scenarios, if you pass the call to a non-Cisco system, like Gigaset, you audio works two ways (if the other end of the call has a Cisco phone of our office it does not).

We got crazy isolating the problem, try changing NAT settings, recovered a full VM backup of FreePBX from several days ago, change routers from our office from MikroTik to other brand, testing with our ISP backup, and always Cisco phones will fail.
Cisco phones work perfectly if you change the preferred codec, they can call in and out with two way audio using g711u.
As we isolated the issue to the codec g722 when used at Cisco phones (Gigaset ones continued using g722 with no problem), we updated firmware, factory reset the terminals, tried everything, with no luck, in order to continue using this codec at all of our phones. We are configuring phones manually, and only changing codec preference and SIP parameters to our FreePBX.
We also tried enabling at Asterisk only codec g722, disabling everything else, with no luck.
The solution: Extension by extension, at codecs sections, disallow “all” codecs, and allow only “g722”.
With this configuration, with Cisco phones set to prefer g722, this codec is working, and there are no issues when making and receiving calls.
I assume this is not a FreePBX issue, nor an Asterisk one, but We are concerned about this situation, as this codec has made noise at the forum in the past, and We would really love that someone with this issue had pointed it out. It would have saved us several hours yesterday.

We run with this configuration:

  • FreePBX running as VM, with 4GB DDR3 RAM assigned and 4 cores, with priority.
  • Virtualization Platform: Windows Server 2012 R2, running Hyper-V
  • Asterisk 13.17.2
  • Direct Public IP address (OVH Failover IP assigned to the VM directly)
  • Firewall is FreePBX Sangoma Firewall
  • Firewall settings is set to Internet at the public IP, trusted for our Offices IP
  • RTP is configured as default: 10.000 to 20.000 port
  • Several trunks, some for incoming calls, some for outgoing, from different providers.
  • Several codecs allowed at Asterisk, with g722 at the top
  • Several codecs allowed to trunks, all compatible with g722, and this at the top
  • Different phones: Cisco 303, Gigaset N510, Mobile apps…
  • Extensions are registering through PJSIP
  • All phones at our two offices are behind NAT, with proper configuration, we use MikroTik routers.