Applies to VoipNow 3 and higher!
The T38FaxMaxDatagram session parameter is interpreted in different ways by various implementations of T.38. If VoipNow sends or receives faxes from/to an external device over T.38, then it is possible to have fax failures due to wrong interpretation of the T.38 parameter.
This article will help you solve the failures caused by the T.38 parameter.
The failures caused by the T.38 parameter can be identified in the Asterisk log, where you will see multiple lines similar to the ones below:
"[2010-07-12 10:42:57] WARNING: udptl.c:1087 ast_udptl_write: (SIP/faxsend-0003*002-0003*001): UDPTL asked to send 59 bytes of IFP when far end only prepared to accept 58 bytes; data loss will occur. You may need to override the T38FaxMaxDatagram value for this endpoint in the channel driver configuration."
Different specifications may give you some clues about this option.
"This option indicates the maximum size of a UDPTL packet or the maximum size of the payload within an RTP packet that can
be accepted by the remote device."
"The maximum size of the payload within an RTP packet that can be accepted by the remote device."
"This parameter signals the largest acceptable datagram for the offering endpoint and the answering endpoint (i.e. the maximum size of the RTP payload). The answering endpoint may accept a larger or smaller datagram than the offering endpoint. Each endpoint should consider the maximum datagram size of the opposite endpoint."
In practice, some systems define T38FaxMaxDatagram as the maximum IFP length, others treat it as the maximum UDPTL length. VoipNow considers this value as the maximum UDPTL size.
The t38pt_udptl configuration option from the sip.conf configuration file will be modified to reflect the remote endpoint interpretation.
maxdatagram=value will override the provided value of the other endpoint.
t38pt_udptl = yes,maxdatagram=400
This setting is global, meaning that it will modify the behavior for all T.38 fax sessions regardless of the device type. Asterisk must be restarted once this change is applied.