I discovered the secret to getting SIP phones like X-Lite and Packet8‘s DTA-310 working well with Asterisk. It’s the silence.
Yep. A little-known fact is that Asterisk uses the incoming RTP stream for timing its outgoing RTP stream. That means if your SIP client stops sending audio (i.e., its silence suppression is activated), you will stop getting audio from Asterisk. While at the beach, I first noticed this when I would have to make a noise on the phone before the audio from the distant party would resume. I wound up breathing into the microphone just so I could continue the conversation. Really freaky.
Turning off silence suppression fixes the problem. Then your SIP clients continue sending audio, and continue receiving audio as a result. You can do this in X-Lite under the “advanced settings” menu.
Turning it off on the DTA-310 is far trickier. I have no way of adjusting silence suppression using the earlier firmware. As far as I know, it can only be disabled using fresh firmware and an unlocked “advanced configuration” page. That’s what stumped me about the silence problem at the beach. I was using what I thought was an identical DTA-310 as the one I knew to work, but the truth was the “malfunctioning” one did not have its silence suppression activated while my working one in the office did (its unlocked).
So the big issue now is discovering how to disable the silence in the older firmware, or how to unlock the DTA completely. Or maybe the answer is to scrap the Packet8 DTAs altogether and switching entirely to Sipuras.