Decrease Baud Rate and turning off ECM
Packet loss, jitter, and latency all add up to corrupt a fax transmission in VoIP env
and unfortunately also in Asterisk PBX.
When a fax machine determines that some data is lost, it will shut down the entire fax transmission, even though you would still have a workable document.
By slowing down the transmission speed up to 9600 bps, you’ll increase the probability that all the faxes will be transmitted or received correctly.
To slowing down the BAUD rate to 9600 bps you need to check the parameteres of the fax device.
In every fax trasmittion in the first steps of communications the involved devices put them agree about the speed to use in data transfer, usually the max possible (usually this is 14400 bps).
Att.: Lowering the fax baud rate can introduce some incompatibilities with some other fax devices, that are not configured to support use this value of bps. I.e. some fax software are not able (or or misconfigured) to receive/transmit fax in different baud/rate than 14400 bps. Sincerly it is rare but can happen !
Recent fax machines have ECM capability, which analyzes the received frames and detects any corrupted data: if any is detected, then a retransmit signal is sent until a error free frame is received.
The problem with this setting over VoIP is that some packet loss and latency can exist: the retransmits tend to increase the call duration, adding to the instability of the fax, creating additional retransmits which then quickly lead to failure with a communication error.
By disabling ECM the receiving fax machine will not continually request any slightly corrupted transmissions to be resent, ensuring a greater chance of a completed fax
Att.: Turning off ECM control could result in a fax image that is of slightly poorer quality (in most cases probably not even noticeable), but in most cases it should be more than sufficient.
Fax Relay (T.38 protocol)
The introduction of Fax Relay is a completely different approach in solving this kind of problem.
Using Fax relay the first gateway in the trasmittion path decode the modulated waveform and extract digital information, then transmit this bits-flow using T.38 protocolo via network connection to other device that receive the bits and remodule the signal for the fax device.
In other words T.38 is a protocol that describes how to send a fax over a computer data network in optimized way: using T.38 a fax is converted to an image, sent to the other T.38 device and then converted back to an analog fax signal. Jitter, packet loss can not alter much this type of fax-transmission !
As long as everything works correctly all the device involved in the path must be T.38 compatible, and the Voip PBX must be able to left intact pass this data stream.
Today most VoIP Gateways and ATA’s now support T38 reliably, and Asterisk is able to manage this kind of transmittion protocol.
I.e. Piece configuration for Patton SmartNode devices.
profile voip default codec 1 g711alaw64k rx-length 20 tx-length 20 no-silence-suppression codec 2 g711ulaw64k rx-length 20 tx-length 20 no-silence-suppression dtmf-relay rtp dejitter-max-delay 100 media detection-timeout 10 fax transmission 1 relay t38-udp fax transmission 2 bypass g711alaw64k rx-length 10 tx-length 10 fax redundancy low-speed 2 high-speed 1 fax volume -9.0 fax dejitter-max-delay 100 fax bypass-method v150-vbd
Here you can see that when fax transmission it has been recognized the device will try to use T.38 protocol: if the device in other end “not agree”, alaw codec trasmittion will be used instead.
Asterisk
[1110] type=friend username=1110 dtmfmode=rfc2833 secret=XXXXX context=from-trunk-sip qualify=yes insecure=very host=dynamic disallow=all allow=alaw directmedia=no nat=no t38pt_udptl=yes,redundancy,maxdatagram=400