Freeze one failed fax and every call-path owner
Record timestamp and timezone, direction, caller and called numbers, trunk, endpoint and version, intermediaries, registration or source-IP mode, SIP Call-ID, final response, duration, fax result code, pages, speed, resolution, ECM state and whether the received document exists and is legible.
Draw the actual path from endpoint through PBX, SBC, NAT and firewall to the provider. A successful SIP answer, audible tone and failed document can belong to different stages; do not summarize them as one generic fax failure.
Prove the initial dialog before looking for T.38
Retain the initial INVITE, provisional responses, 200 OK and ACK, including SDP and RTP addresses. Confirm the intended trunk, normalized destination, accepted identity and packets in both directions. If the initial call never establishes, solve routing, authentication, reachability or the G.711 phase first.
Do not treat REGISTER success as call success or a provider portal record as proof that the customer endpoint received the same dialog.
Locate the re-INVITE and its exact outcome
The provider test guide expects the party receiving the initial INVITE to send a later re-INVITE for T.38. Find that transaction, preserve its new Via branch and CSeq, offer, response and ACK, and identify the component that generated or rejected it.
If no re-INVITE exists, inspect endpoint fax detection and intermediary policy. If it is rejected, preserve the response and SDP mismatch. Do not force T.38 globally before identifying which leg lacks an offer or acceptable answer.
Compare negotiated SDP with the observed UDPTL path
After a successful T.38 exchange, compare each negotiated address and port with NAT state, firewall policy and the actual UDPTL packets in both directions. Customer and provider port ranges need not match. SIP and media can also use different addresses.
A completed re-INVITE with no UDPTL points to a later path boundary. Avoid opening media to the Internet; use the documented provider sources and the endpoint vendor ranges, then make the smallest reversible rule change.
Test SIP ALG and port handling as evidence-led changes
Compare messages on both sides of any firewall or SBC for rewritten connection addresses, ports or missing T.38 attributes. T38Fax recommends disabling SIP ALG and often using 5080 because helpers can mishandle re-INVITEs, but the actual device state and behavior must be demonstrated.
Change one control in a maintenance window, clear only the required state, repeat the same authorized fax and retain before-and-after ladders. Do not assume a nonstandard port guarantees that an ALG is bypassed.
Close with ECM and document evidence
Once UDPTL flows, record negotiated fax parameters, ECM use, page count, duration and both endpoint results, then inspect the permitted received document for completeness and legibility. A nominally successful call with corrupt or missing content is not accepted.
Use the provider test service or another expressly authorized destination, keep captures and documents under data-handling policy, and escalate a precise call sample when the earliest failing boundary is provider-side or uncertain. No call, packet or fax was inspected or tested for this article.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Testing a Power-T.38 SIP trunk ↗
- T38Fax recommended firewall settings ↗
- T38Fax SIP ALG guidance ↗
- T38Fax packet-capture guidance ↗
- T38Fax ECM guidance ↗
- T38Fax voice-call policy and UDPTL boundary ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.