Skip to content

Carry fax calls

Fax machines still sit on many office networks, usually behind an analog telephone adapter (ATA) or inside a multifunction printer. FlySIP Softswitch does not decode or transcode media: it passes the SDP offer and the media of a call from the caller to the vendor unchanged. A fax call therefore works when the fax device and the vendor agree on one of two methods:

  • G.711 pass-through. The fax tones travel as ordinary G.711 audio. It works with any vendor that offers G.711, but packet loss and jitter on the path can break a transmission.
  • T.38. The ATA detects the fax tones and switches the call to T.38 with a re-INVITE. The switch passes the re-INVITE on, and the media relay carries the T.38 (UDPTL) stream when it is in the path. T.38 is much more tolerant of packet loss, but the vendor must support it.

This tutorial sets up one fax line. Allow about 20 minutes.

  • You have Administrator access to the panel.
  • The ATA or fax device is registered with an account, or will be. See Register an account in Zoiper for the values any SIP device needs.
  • At least one vendor confirms that it accepts fax calls with T.38, G.711 or both.

Settings differ by model; look for these in the SIP or line settings of the ATA:

  1. Enable T.38 and allow fallback to G.711 if the vendor rejects it.
  2. Put G.711u or G.711a at the top of the codec list. Do not offer only G.729 or another compressed codec: they distort fax tones.
  3. Turn off voice activity detection (VAD), silence suppression and echo cancellation for the fax line.

Result: the device offers G.711 and switches to T.38 when it detects a fax.

  1. Open My Customers → Accounts and open the account of the fax line.
  2. On the Advanced tab, under SIP / Services, set Preferred Codec to G.711u or G.711a, or leave Any.
  3. Leave Use Preferred Codec Only cleared, so that the switch does not remove other media from the offer.
  4. On the Basic tab, under Additional, keep Media Relay Type at When Necessary unless the device is behind NAT and needs Always.
  5. Click Save.
Screenshot "tutorials/fax-account-codecs" has not been generated yet — see scripts/screenshots/screens.yml.

See Codecs management and Media relay.

Result: the account’s calls keep G.711 at the top of the offer and nothing is stripped.

Step 3: Route fax calls to fax-capable vendors

Section titled “Step 3: Route fax calls to fax-capable vendors”

The cheapest route for voice is often a vendor that compresses audio or does not support T.38. Give the fax line a routing group of its own:

  1. Open Vendors → Routing Groups and click Add.
  2. Enter Group Name, for example Fax.
  3. Add rows only with the connections of vendors that accept fax, and click Save & Close.
  4. Open the fax account, select Routing Group Fax on the Basic tab and click Save.

See Routing groups.

Result: fax calls of the account go only to vendors that can carry them.

  1. Send a test fax of several pages from the device to a fax number you can check.
  2. Open Reports → Call Records (CDRs) and find the call with its duration and cost.
  3. If the transmission breaks off, extract the call’s SIP log in Tools & Debugs → SIP Logs Viewer and check whether a re-INVITE with m=image ... udptl t38 was sent and accepted. A rejected re-INVITE means the vendor does not support T.38; switch the device to G.711 pass-through or use another vendor.

FlySIP does not convert faxes to e-mail or documents to faxes. A fax-to-e-mail service can be built next to the switch: the fax server terminates the calls as a vendor or an account, and the XML-RPC API keeps its users, balances and top-ups in sync with FlySIP, so that you bill them like other accounts.