VoIP.info Troubleshooting

FreePBX call connects but has one-way or no audio

Trace the final SDP and observed RTP through both FreePBX call legs before changing NAT, direct media, symmetric RTP, Strict RTP, codecs or security.

Reviewed 2026-10-11Sangoma PBX GUI Asterisk SIP Settings and legacy FreePBX 12 SIP-audio guidance plus current Asterisk res_pjsip NAT, configuration, troubleshooting, CHANNEL and bounded-debug references reviewed October 6, 2026; the legacy Sangoma page is chan_sip-era symptom and settings context, not a FreePBX 17 PJSIP configuration recipe, and no PBX, firewall, endpoint, trunk, packet flow or live call was inspected or testedAdvancedDocumentation based · not lab tested

Name the missing stream and the exact call state

Record one authorized call's timestamp and timezone, linked or call identifier, caller, destination, direction, answer time and the first event after which audio failed. State the symptom from each participant's perspective: the caller cannot hear the callee, the callee cannot hear the caller, neither side hears speech, or only early media differs from answered audio. A connected SIP dialog proves signaling state, not audible media.

Keep ringing, early announcements, answered speech, music on hold, transfer and resumed speech as separate intervals. Sangoma's older SIP-audio page is useful evidence that successful call setup and media behavior are different, but its FreePBX 12 and chan_sip-era fields are not instructions to reproduce unchanged on a current PJSIP system. Preserve the installed FreePBX, Asterisk and module versions before interpreting a label or default.

Separate endpoint audio from the PBX media path

Before changing the PBX, compare an approved internal call, the affected external or remote call, and a known-good endpoint on the same intended path. Verify the active microphone and speaker, mute state, local input level and the direction each endpoint actually sends and receives. A ringtone, system sound or microphone meter does not prove the call's RTP path.

Use the smallest comparison that changes one boundary: same endpoint to an internal extension, known-good endpoint through the same trunk, or affected endpoint from the local network where policy allows. If the endpoint never creates or plays audio, stop at that owner. If the failure follows the external, remote or trunk leg, continue with the negotiated addresses and observed packets instead of resetting phones or changing every codec.

Read FreePBX-managed and loaded PJSIP state

In the FreePBX GUI, preserve Asterisk SIP Settings values for External Address, every Local Network, the RTP port range, Strict RTP and codec order. Sangoma documents these as distinct controls and allows more than one local or VPN network. Record the supported Submit and Apply Config result, then read the live PJSIP transport and endpoint objects. Do not edit generated configuration files or treat their current text as a durable configuration interface.

Compare the intended GUI setting, generated state and loaded runtime state. A correct form value does not prove that Asterisk reloaded it, and a broad private-address label does not prove that the affected subnet belongs in local_net. Preserve the exact endpoint, address of record, contacts and transport used by this call; similarly named objects are not interchangeable evidence.

Follow final SDP and RTP through both call legs

For each leg, retain the final offer and answer that govern the answered interval: connection address, media port, codec payloads, packetization, RTCP behavior and any security attributes. Then compare those advertised tuples with packets observed at the endpoint-facing and trunk-facing interfaces in both directions. A packet counter without source, destination, time and leg can hide that only one stream is moving.

Asterisk can remain in the media path or permit direct media. Preserve direct_media state and the actual bridge or channel topology before deciding where packets should flow. CHANNEL(rtp,dest) can expose a channel's current RTP destination on supported builds, but it is one runtime view rather than proof that the destination receives or decodes packets. Use a bounded packet capture only where authorized and redact addresses and personal calling data.

Map the mismatch to one documented control

Asterisk gives the NAT and media controls different jobs. Transport local_net defines addresses treated as local; external_media_address rewrites advertised media outside those networks; endpoint media_address can override the advertised media address; rtp_symmetric sends RTP to the source that actually sends it; force_rport and rewrite_contact affect SIP response and contact routing; and direct_media changes whether endpoints exchange media directly. Do not enable a bundle of options merely because the call crosses NAT.

Strict RTP learns and then accepts an expected media source, so a source change or asymmetric path requires timestamped evidence before relaxing it. A codec mismatch, missing encryption agreement or inaccessible certificate is a different owner from an unroutable address. Preserve the final codec and security negotiation; do not disable encryption, open unrestricted firewall ranges or turn off Strict RTP as a production shortcut.

Use bounded signaling and media evidence

Asterisk's PJSIP troubleshooting material recommends inspecting loaded endpoint and identification objects and can expose the SIP/SDP exchange with pjsip set logger on. Enable it only for an approved reproduction, correlate one call, and turn it off immediately afterward. The troubleshooting page is marked under construction, so verify commands and fields against the installed branch rather than assuming every example applies unchanged.

Collect only what the hypothesis needs: final signaling, loaded objects, channel and bridge state, interface packet counters or a narrow RTP capture. Protect credentials, phone numbers, addresses and audio payloads. A capture taken at only one interface cannot establish end-to-end delivery, and decoded speech in one direction does not prove the other direction or endpoint playback.

Correct one owner and retest the media lifecycle

Correct the smallest demonstrated owner: missing local subnet, stale external address, wrong advertised media address, endpoint NAT behavior, direct-media topology, Strict RTP source transition, codec or media-security policy, firewall ownership, endpoint route or provider-side media path. Preserve the previous setting and rollback. Do not widen exposure, edit FreePBX-owned files or copy a legacy chan_sip field into PJSIP without a current supported mapping.

Repeat the affected call and a known-good control. Verify inbound and outbound answer where applicable, speech in both directions, early media, hold and resume, attended or blind transfer, and hangup. Confirm that logging and temporary captures are disabled and that unrelated calls still work. No PBX, firewall, endpoint, trunk, packet flow, compatibility, capacity, price, availability or live call was inspected or tested for this guide.

Asterisk CLI — bounded FreePBX PJSIP media evidence
core show version
pjsip show endpoint <endpoint>
pjsip show aor <aor>
pjsip show transport <transport>
pjsip set logger on
# Place one authorized affected call; preserve final SDP and correlate both legs.
core show channels verbose
bridge show all
pjsip set logger off

Preserve FreePBX ownership when testing direct media

Use the Asterisk direct-media guide to map GUI intent to generated and loaded endpoint policy, then retain the actual offer/answer and RTP path. Do not edit generated PJSIP files or disable direct media globally from a single PBX-side capture.

Trace FreePBX-generated PJSIP media-address ownership

The Asterisk PJSIP diagnostic maps final SDP and both RTP directions back to loaded endpoint and transport state. Change the FreePBX owner, apply configuration and recheck runtime state rather than editing generated files.

Audit the global SIP-setting boundary before changing media policy

The Asterisk SIP Settings guide separates External Address, Local Networks and RTP range from endpoint codecs, direct media and encryption. Use it to prove generated and loaded state, then continue here with final SDP and both RTP directions.

Sources & applicability

Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.

Examples require adaptation to your topology. No live PBX or hardware testing is claimed.