[comp.protocols.misc] FAX's : here is the SCOOP!

amlovell@phoenix.Princeton.EDU (Anthony M Lovell) (11/23/88)

OK.  So many of the people who responded to my call for FAX info sent in
requests for the same that I felt I should post the collected facts I
received.  Most of these are from a single person...
It starts into an ad spiel partway thru, but the operative facts (for
me) are that FAX's can't be sent/received with a normal modem and that
the current standard uses some data compression. 

From here on out, the text is penned by:
Stuart.Lynne@wimsey.bc.ca {ubc-cs,uunet}!van-bc!sl     Vancouver,BC,604-937-7532

It's basically a raster image, huffman encoded and sent bit synchronous over
a V.29 modem.

You will need CCITT Recomendations T.4 (Bit encoding) and T.30 (Procedures).

These are generally available from companies that sell standards related
stuff. Try:

	Omnicon
	1-703-281-1135

What are you trying to do?

We have fax software running under Xenix 286 now. It will be available under
various other 286 / 386 Unix's later this year. Other types of machines next
year. We're using the Quadram JTFax 96 board which ties us to the AT bus.
Next year Quadram will have an external version which we can use from any
multiuser type box.

> How much do these FAX boards cost?  DO they have a scanner, or are they
> just these V.29 modems?  Can an ordinary modem suffice or are they different?

First think in terms of what a Facsimile machine is. For sending it's a
scanner connected to a V.29 modem with dial capability. It dials remote
machine has a conversation and eventually turns scanner on to scan the
document and send the (Huffman encoded) bits to the far end.

At the receiving end its a V.29 modem connected to a printer. When someone
dials in it has a conversation then starts receiving bits which it expands
to a raster line and prints.

In the case of a computer system *emulating* a facsimile machine you can go
the whole nine yards and get a scanner, printer and V.29 modem and emulate
the above faithfully. 

But if you can't afford a scanner, how about imaging an ASCII file directly
into the bit stream and sending that. Or create with PC Paint Brush, or
pre-scan and send same image to many fax sites.

Or for receiving, instead of just printing how about saving to a file.

In fact what we've described are some the capabilities associated with the
top-of-the line fax machines. 

Basically to emulate a fax machine you need two things. A V.29 modem and
software to make the far end think you are a facsimile machine. Ie you can
emulate the conversation at the beginning of the call (and between pages) to
initiate a transmission or reception of data. Where you are actually getting
the bits you send (or where you put them when you get them) is of no
interest to the remote fax machine.

What we have is a Smart 80188 based board with V.29 modem and the emulation
software in ROM. This is built by Quadram and called the JTFax 96. It can
dial (or answer) the phone and send (or receive) the data bits. As far as
the other end is concerned it's a "real" fax machine. For sending the JTFax
can accept:

	ASCII
	PCX (PC Paintbrush)
	Fax 
	Scanner 

These types of data can be intermixed in any order or amount during a single 
call.

For receiving it simply saves the Bit data as received.

To utilize this board we provide Xenix software which can tell the card what
phone number to call and then pass it data as required as the call
progresses. It can also monitor the phone and answer and receive data which
we will save in a numbered file.

Above this level we will be providing many different types of utilities:

	- mail intercept, forward mail messages to fax machine 
	- generic faxsend command
	- print filters for dotmatrix
	- print filters for postscript
	- display filters
	- polling, forwarding, distribution lists
	- support for up to six cards per Xenix system


Now back to your questions.

> How much do these FAX boards cost?  DO they have a scanner, or are they

Not sure on US, about $800 or $900. (Our software is extra.)

> just these V.29 modems?  Can an ordinary modem suffice or are they different?

No scanner, just V.29 modem.

[without a scanner, you will ...]
Basically be sending data files. The files can originate from many sources,
scanner (on another machine perhaps), imaged file (ASCII->raster image),
graphics program (PC paint brush type), received fax file, etc..

--
Stuart.Lynne@wimsey.bc.ca {ubc-cs,uunet}!van-bc!sl     Vancouver,BC,604-937-7532

We provide two programs to send fax's. Faxsend is a generic method which will
queue a set of files for delivery to a list of phone numbers. Faxmail is 
designed to be called by the mail system to deliver a mail message.
Another program, faxco, run's periodically (similiar to uucp's uucico) to
send queued fax messages. It uses a device list to find a free device and 
the name of a program to actually send a single message.

Currently we have one version of the sending program, jtfax which uses the
Quadram 9600 bps Smart Fax Card. This card handles the conversion from ASCII 
to the Huffman encoded bit stream, and manages the conversation with the 
remote fax machine.

To intercept mail on systems without sendmail or smail we have a simple
replacement for uux which checks for "fax!rmail" and exec's either faxmail
or the real uux program as appropriate.

This message provides an example of the flexibility of our approach. I'm
sending it from my main Unix system via mail to an address of the form:

       fax!555-1234!name  or 555-1234!name@fax.your.domain.here

My mail system forwards all messages for "fax!" to another machine called
"testat" which is the fax development system, via uucp. That system's mail
system attempts to deliver the message "rmail fax!rmail 555-1234". This
is translated to a call to "uux fax!rmail .." which is then intercepted and
passed to the faxmail program with the same arguments. 

The faxmail program add's a "Received:" header and "X-Fax-To:" header. The
latter uses the rest of the address after the phone number.

There are no problems with supporting multiple cards of this type. It only
takes 2kb of the memory map and because it does the conversion and handles
the T.30 conversation the overhead to support to it is *very* low. Much less
then sending the same data out over a 4800 bps serial port for example. So
quite literally the limitation will probably be how many slots you have in
your AT backplane after you stick in whatever else you need.

We will be doing a more generic utilities to support receiving fax messages,
and filters to send received fax's (T.4 huffman data) to various types of 
printers.

It is also not difficult to be able to send bit images that have been suitably
encoded, directly to the fax.

There is also a good tie in with all this to ICR. Calera has an interesting
smart card (multiple 68020's!!) which does Intelligent Character
Recognition. It will be interesting to write a driver for it and be able to
feed it T.4 huffman bit's and get ASCII out.

Next year when the semi smart external fax modems come out we can do some
more work to provide utilities to do the T.4 Huffman Encoding etc and
support them. At that point we won't be tied to Unix/Xenix on the AT bus but
could support virtually any reasonable Unix or other multiuser system (VMS etc).

There are two different types of markets for this type of product. First and
most obvious (to us Unix zealots) is simply to provide fax capability to
Unix users. Second is providing high powered Fax Relay systems to companies
who have a need to send *large* number's of fax's to *large* numbers of
phone numbers in a short period of time, quickly and efficently. For example
ad agencies, press bureaus, political parties, governments, magazines, etc.


UniFax - A Unix Fax Gateway                                        November 1988
=========================== 

UniFax provides a Unix based system for emulating a G.3 Facsimile Machine. 

  Using a smart Facsimile Card from Quadram and emulation software UniFax 
  allows the Unix user to send various types of files to a remote facsimile
  machine to be printed.  
  
  UniFax also operates in receive mode and captures incoming facsimile 
  transmissions. A logfile is maintained showing all incoming and outgoing 
  transmissions. 

  UniFax runs in the background and retries as required to deliver all files.


-- UniFax Mail Gateway --

  UniFax provides a simple but elegant method of addressing normal Unix mail
  messages so that they can be intercepted and routed via the UniFax Mail 
  Gateway. This allows Unix users to simply and effectively send simple mail 
  messages to other Unix users and at the same time to people with facsimile 
  machines.

  For example messages can be addressed to:

    Domain notation:  1-800-555-1234!Joe.Smith@fax.your.domain.here
    uucp notation:    unixname!fax!1-800-555-1234!Joe.Smith

  Confirmation of the delivery status is delivered by mail.


-- Printing Facsimile's --

  Various filters are available for converting the incoming fax data (T.4
  Huffman encoded bit stream) into other formats. A sample printer driver is
  provided in source form to demonstrate interfacing to an Epson style dot
  matrix printer.

  These filters can be used in conjunction with the standard lp(1) print filters
  to provide printing capabilities. 

  UniFax can be configured to automatically print all incoming facsimile 
  transmissions.,


-- Facsimile Emulation --

  The G.3 standard is complied with. Including support for high resolution 
  images.  

  UniFax automatically converts ASCII and PCX files to the T.4 format prior to
  sending. Other formats can be used by pre-converting to PCX or the T.4 format
  prior to creating the job.


-- Multi Line Capability --

  UniFax can support up to four Quadram JTFax 96 cards. This allows for four
  simultaneous facsimile conversations providing high capacity throughput.


-- Fax Send Command --

  Faxsend is generic command line program which allows a list of files to be
  sent to a list of phone numbers. Various options are available to control how
  and when the files are sent to each of the destinations. Confirmation of 
  the delivery status is delivered by mail.


        Global options
          High resolution
          Ack            Send confirmation when job is finished
          Length         page length

        Phone Options
          include        distribution list
          High           High priority
          Medium         Medium priority
          Low            Low priority
          Retries        max number of retries
          Rate           min number of minutes between retries

        File Options
          include        include file
          PCX            PCX data 
          G3             received fax file
          ASCII          ASCII file
          Font           font for conversion of ASCII files
          Size           size of characters (96/line or 132/line)


-- Unix Systems --

Currently SCO Xenix 286 AT compatible systems are supported. SCO 386 and other
286/386 Unix systems will be supported shortly. This may include the Sun 286/i.


-- Who could use UniFax --

If you have a Xenix system running on an AT compatible and send letters or 
messages to clients or associates who have a facsimile machine then you will
find a use for UniFax

If you have need for volume fax services either for sending or receiving you
can setup a multiline implementaton of UniFax that is cost effective and saves
you operating costs.



-- Information --

For more information contact:

                UniFax Software
                225B Evergreen Dr.
                Port Moody, BC, Canada
                V3H 1S1

                604-937-7532

                Stuart.Lynne@wimsey.bc.ca
                ..!uunet!van-bc!sl


For a demo send a short email message using the following format of address:

        yourfaxnumber!your.name@faxdemo.wimsey.bc.ca
        uunet!van-bc!faxdemo!yourfaxnumber!your.name



--
Stuart.Lynne@wimsey.bc.ca {ubc-cs,uunet}!van-bc!sl     Vancouver,BC,604-937-7532
-- 
amlovell@phoenix.princeton.edu     ...since 1963.