One-Way Audio¶
Symptom: call connects, both sides answer, but only one side hears the other. Either caller hears callee but not vice-versa, or the reverse.
Most Likely Causes¶
- NAT / external address misconfigured on the PBX. UnifiedBX advertises a private IP in SDP; remote endpoint can't reach it for RTP.
direct_mediaenabled on an extension that's behind NAT. Reinvite to client succeeds but reverse RTP path fails.- Firewall blocking RTP — UDP
10000-20000(default range) blocked in one direction. - Asymmetric routing — RTP from one side egresses one path, return takes another, gets dropped.
- Codec issue post-reinvite — both sides claim a codec they can't actually do.
Diagnose¶
# Check the PBX's advertised external addresses:
asterisk -rx "pjsip show transports"
# external_media_address and external_signaling_address should be set on Internet-facing transports.
# Live capture during a one-way call:
sngrep -d any
# Open the call. Look at the SDP c= and m= lines on both sides.
# Each side should advertise an IP the OTHER side can reach.
If c=IN IP4 192.168.x.x is in the SDP and that's a private IP the remote endpoint can't reach, that's the bug.
Fix¶
- System Admin → Sysadmin → Network Settings → set External Address to the PBX's public IP / FQDN. Apply Config.
- Trunk Attributes → SIP Settings → External Address — match.
- Disable
direct_mediaon NAT'd extensions: User Attributes → Extensions →→ Advanced → Direct Media = No . - Verify firewall: open UDP
10000-20000to/from the carrier and any remote endpoints. - For persistent NAT issues on remote softphones: enable STUN, or pin the softphone's Public Address manually.
When to Escalate¶
- External Address is correct, RTP ports are open, only one specific carrier exhibits this. Likely a carrier-side NAT issue — open a ticket with them, send pcaps.