[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