Bizarre DAHDI phone problem

Lost a server to overheat (and the magic smoke got out). Replaced it in December with a new server and installed FreePBX 13.1. Everything works well with one exception. Wait, let me give you details first:

Current Asterisk Version: 13.1
DAHDI Version: 2.9.2 Echo Canceller: MG2 (this is the version that works with the FXS card).

I have 18 POTS phones connected to the server which is used to call out based on a database that we use to schedule calls. It’s a call center, and we have two other servers (Version 1.6) running. In addition to the 18 POTS phones, we have six SIP Phones designated for outbound dialing.

So, we are getting one-way audio on the DAHDI phones. Before anyone jumps to any conclusions - No, it isn’t a firewall problem or misconfigured router. I’ve been trying to get this working for a month and I spent an hour with my VOIP provider checking, and all of the traffic is making it from the server to them and back again. I originally suspected a firewall problem since I was having one of those on another server, but this server is connecting to the remote end cleanly.

I’ve already tried every possible combination of RTP settings - some will make the system not work at all, but none will help the incoming DAHDI phones hear the other end.

Now, here’s the strange part. The one-way audio is only on inbound connections to the DAHDI phones. Inbound connections to the SIP phones work fine (hence my assertion that the firewall is probably not the culprit). The other reason I’m pretty sure it isn’t the firewall is that the problem exists with local calls. I added the localhost and RTP ports to the firewall specifically (just in case it was something in there).

Example time:

  • Extension 131 dials 1-800-ARMYNOW and gets through. Call gets recorded, life is good.
  • Extension 131 dials 125 (DAHDI to SIP) and gets through. Life is good.
  • Extension uses “click to dial” feature of system (using the custom “call file” script I posted here a few years ago). Call goes through and remote end (outside the firewall) hears the caller, but the local end is dead air.
  • Extension 125 dials 131 (SIP to DAHDI). Call goes through and 131 cannot hear 125. Destination 125 hears everything 131 says.
  • “Wake Up Call” is left for 131. Extension 131 rings and hears nothing.
  • Extension 132 dials 131 (DAHDI to DAHDI). Extenion 132 hears everything, 131 is dead air.
  • Extension 131 dials 132 (still DAHDI to DAHDI). Extension 131 hears everything, 132 is dead air.

So, to summarize - if a call is placed TO a DAHDI extension, the person answering that phone will not hear the other end, regardless of the source. A call placed FROM a DAHDI extension works perfectly every time.

The other two servers work flawlessly using the same basic configuration, network, firewall, etc. SIP phones work flawlessly.

I thought for a minute that it might be a context issue, but there’s nothing that corroborates that. I’ve considered it might be a CODEC problem - I’ve got everything running using ULAW, which the VOIP provider likes. I haven’t seen anything in the logs, even with all the debug output I can turn on and 15 "-v"s on the command line. The dump of the traffic at the Ethernet port shows nothing suspicious. The VOIP provider verified that the traffic looks the same (when calling to an external number) regardless of the source or destination.

I’m open to suggestions.

I thought you’d all like to know that the problem seems to have gone away. At the urging on my PXO card supplier, I recompiled the DAHDI code and reinstalled it. I restarted Asterisk and the one-way audio seems to have gone away.

At this point (and based on a single warning I saw in the debug output) I’m going to guess that there was an SLIN to ULAW transcoder problem that reinstalling the software may have solved. The possibility is that some subtle change from the latest “Certified-1” to “Certified-2” code made some kind of difference that’s never bitten me before.