VoIP.info Diagnostic

Asterisk PJSIP has no ringback, stalls on PRACK or loses early media

Trace one call through 180 or 183, 100rel negotiation, RSeq and RAck, SDP role and early RTP before changing endpoint policy.

Reviewed 2026-10-07Current Asterisk 22 res_pjsip, Progress, early-media and PJSIP troubleshooting references plus RFC 3262 and RFC 6337 reviewed October 7, 2026; no Asterisk host, endpoint, trunk, dialplan, provisional response, PRACK, SDP exchange, RTP path, announcement, ringback source, compatibility, availability, price or live call was inspected or testedAdvancedDocumentation based · not lab tested

Name the exact symptom and call leg

Separate silence before answer, missing local ringback, a repeated reliable 18x, absent PRACK, rejected PRACK, PRACK without a final response, early audio from the wrong fork and audio that begins only after answer. Record direction, endpoint, Call-ID, tags, CSeq, time and whether Asterisk is caller, callee or the middle B2BUA.

Do not infer the broken side from what the human caller heard. Capture both Asterisk channel legs because the carrier-facing and phone-facing provisional and media exchanges can differ.

Reconstruct 180, 183 and 100rel negotiation

For each leg, preserve the initial INVITE's Supported and Require headers and the loaded endpoint's 100rel value. Then list every 1xx response with its To tag, SDP presence, Require header and RSeq. If a reliable response exists, find the matching PRACK and compare RAck to the provisional response's RSeq and INVITE CSeq.

A 420 after a required 100rel request, or a 421 when the peer did not advertise support to a required endpoint, is a capability-policy result. It is not a codec or RTP diagnosis. Use the focused status-code guides before changing media settings.

Assign every SDP offer and answer

Mark which INVITE, reliable 18x, PRACK, PRACK response or final response carried the offer and which carried the answer. Compare the accepted media address, port, payloads and direction. If the To tag changes, determine whether a different early dialog or fork supplied the response.

Do not enable follow_early_media_fork or accept_multiple_sdp_answers until the trace demonstrates the specific different-tag or same-tag update it addresses. A new port in an unaccepted body is not the active RTP destination.

Locate the ringback or early-audio source

Determine whether the caller should generate local ringback from 180 or play received early RTP after 183 and accepted SDP. Capture Asterisk's loaded inband_progress value, any Progress() call, and whether early RTP left and arrived at the expected addresses. A valid PRACK exchange with no packets is a media-path problem; packets that arrive but do not decode are a payload, protection, direction or endpoint problem.

If a bodyless 183 suppresses ringback in a demonstrated SS7-interworking case, evaluate ignore_183_without_sdp only for that endpoint and retest the same route. Do not apply it to every carrier or discard SDP-bearing responses.

Correct one boundary and preserve the final sequence

Correct only the evidenced owner: endpoint 100rel policy, dialplan progress, 183 filtering, fork handling, SDP update handling, MOH behavior, signaling route or RTP path. Reproduce one authorized call with bounded PJSIP logging, then turn extra logging off.

Retain the final INVITE, provisional responses, PRACK transaction, SDP offer/answer, early packets, final response, ACK and post-answer RTP result. A completed PRACK is not a completed call, and audible ringback is not proof of the far-end state. No Asterisk host, endpoint, trunk, policy, PRACK exchange, early RTP path, compatibility, availability, price or call was inspected or tested for this diagnostic.

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.