No RTP Stream on Answered Call. RTP Starts After Placing on Hold and Retrieving

I am running Asterisk 16.20.0 with FreePBX on Google cloud platform.
I have a PJSIP trunk connected to my VSP and a remote PJSIP extension that has a Grandstream Budge Tone-201 handset.
Echo test works fine.
The problem I have is that an incoming call is answered ok by the extension but there is no RTP stream established. If I place the call on hold, the caller hears MoH and I can see that the RTP stream starts using the rtp set debug on command. When I take the caller back off hold, the call RTP stream continues and the audio is OK.

How do I get the RTP stream to establish itself on answer without having to place the caller on hold and retrieving the call?

Make sure that the UDP port range for RTP (default is 10000-20000) is in your Ingress rules in Google VPC network Firewall rules.

If you had already done that, or it doesn’t help:

Do calls between extensions fail the same way? (If you don’t have another hardphone, use a softphone or mobile SIP app for the second extension.) Do outbound calls work ok?

At the Asterisk command prompt, type
pjsip set logger on
make a failing test call (use a call between extensions if they fail), paste the Asterisk log for the call at and post the link here.

Hi Stewart,
Thanks for your speedy response.
Ingress rules were already set on GCP as described and calls between remote pjsip extensions work as well.
I redirected the inbound route to a softphone and the calls (10 x test calls) all answered with no fault. I redirected the inbound route back to the Grandstream Budge Tone-201 handset and the calls fail again.
So this is telling me that I have a setting on the Grandstream Budge Tone-201 handset that needs to adjusted. However as previously mentioned calls between the Grandstream Budge Tone-201 handset and the soft phone in either direction works without error.
Any ideas about the Grandstream Budge Tone-201 handset config? the manual can be found here;

Please paste the log with SIP trace for a failing call. Also, post details about modem and router/firewall at Grandstream location.

As both the softphone and Grandstream are at the same location and the only the Grandstream is having issues it seem to be a settings issue with the Grandstream.

OK, I think I solved it. The Grandstream had Use Random RTP Port set to yes. I changed this to No and now every call establishes a RTP stream on answer.

Direct IP Calls refers to dialing an IP address to connect directly to another client device (bypassing the PBX altogether). This setting should have no effect unless the user actually dials an IP address.

Direct Media refers to routing RTP directly between endpoints (the PBX is still handling signaling). Direct Media is obviously undesirable in this situation and could possibly explain your symptoms. Though pjsip should be smart enough not to apply it on a trunk-to-extension call, it is more conservative to set Direct Media to No, to ensure that it is not inadvertently activated.

In the Grandstream, try setting Local SIP Port to a non-standard value such as 5678. Confirm that NAT Traversal is No, STUN Server is left blank and Use Random Port is No.

If you still have trouble, please paste the log and post the details previously requested, as well as all the non-default settings in the Grandstream.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.