[Asterisk-Users] A software FAX modem

Steve Underwood steveu at coppice.org
Mon Oct 20 07:36:37 MST 2003


Hi all,

I would like to announce the availability of an initial test version of 
a totally software FAX facility, suitable for use with Asterisk. This is 
a first public test release, so don't expect a solid polished product 
just yet. People have shown interest in what I am doing, and here is the 
evidence that it is not vapourware.

If the notion of a software FAX machine is new to you, what I have 
basically implemented is this. Asterisk contains software to transcode 
GSM to A-law, A-law to u-law, and so on. These are DSP functions 
implemented on the server's main CPU(s), with no hardware support from 
special DSP processors or cards. What I have done is similar. I have 
implemented the DSP for the key FAX modem standards in software for the 
server. Without any special DSP hardware, this can send and receive 
faxes through the PSTN interfaces. It has been tested with an E400P card 
so far. However, it should work for calls passing through the T100P, 
T400P, E100P, E400P, TE410P, X100P, or TDM40P cards, using any of the 
available signalling methods. Don't expect it to work for calls received 
by VoIP - its a modem, not a miracle worker.

You can find the software at <http://www.opencall.org>. It currently 
consists of two parts:

The main part is spandsp, a DSP library for telephony at 8000 samples 
per second. This contains a number of functions. Some are complete, and 
some are works in progress. The FAX facility is part of this library. 
The FAX facility consists of implementations of V.21 (complete, but not 
optimised for speed), V.29 (functional, but not optimised for speed or 
bad lines), V.27ter (only the tx side is anything like complete), T.30 - 
the fax protocol (somewhat messy, and still in need of work to make it 
robust), and T.4 (fax compression). The T.4 handling makes use of 
libtiff, so you will need libtiff installed on a machine to use spandsp. 
You will also need libxml2 - the FAX facility doesn't use it, but some 
other parts of spandsp do.
   
The other part is a pair of very elementary demonstration apps for 
Asterisk, similar to the record and play apps, but for fax TIFF files. 
Why TIFF? TIFF is *the* standard for computer fax. Few other graphics 
file formats allow for multi-page documents. Apart from some dumb 
proprietary file formats (e.g. WinFAX) from the early 90s, I've never 
seen computer fax handled in any other way. If someone would like to 
adapt the Asterisk voicemail2 app to turn received faxes into attached 
e-mails, this would be a good thing. :-)

I have only implemented the early features of the FAX standards, where 
any patents have long since expired. If you look at the ITU's patent 
declaration database you will see a long list of patent claims against 
the fax standards. Note these apply to features added during the life of 
the standards, and most apply to things like colour fax, which few 
people use. The basic 9600bps V.29 fax spec. is more than 20 years old, 
so no patents can still be in force for these original features. Is this 
limiting? Not really. Only a small percentage of fax machines seem to 
support many of the newer features. Only a few simple to implement 
things, like super-fine mode, have been added to most machines.

The files for spandsp all say GPL. I have given an additional disclaimer 
to Digium, so the code can be merged into Asterisk, once it is a bit 
more polished and stable. In the meantime it is easy to use as an 
external library.

If it doesn't work for you, don't be too surprised. Feed back anything 
you find, and lets try to make things better. I suspect, from experience 
and things I have read on the web, that a lot of fax machines do not 
follow the standards very well. In that case, a number of tweaks are 
probably needed before this new software is adequately tolerant of the 
behaviour of real world machines.

Enjoy,
Steve





More information about the asterisk-users mailing list