Return to BSD News archive
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!howland.reston.ans.net!europa.eng.gtefsd.com!uunet!news.mentorg.com!sdl!not-for-mail From: tal@Warren.MENTORG.COM (Tom Limoncelli) Newsgroups: comp.unix.bsd Subject: Re: PD Fax Gateway? Date: 25 Aug 1993 16:12:14 -0400 Organization: Mentor Graphics -- IC Group, Warren, NJ, USA Lines: 441 Message-ID: <25gh2u$gb5@worf.Warren.MENTORG.COM> References: <25e7m4$7g9@news.cerf.net> NNTP-Posting-Host: worf.warren.mentorg.com X-Newsreader: NN version 6.4.19 #2 In <25e7m4$7g9@news.cerf.net> lewis@nic.cerf.net (Mealiffe Consulting) writes: >Does anyone know of a Public Domain FAX gateway that would accept incoming >e-mail messages and FAX them out that is available for a BSD system? I use FlexFax and I'm happy with it. I got it via FTP from ftp.sgi.com. From the "BLURB" file: FlexFAX Release Version 2.2.0 Available --------------------------------------- This note has the following sections: Overview Supported Systems About the Distribution Class 1 Modem Support Commonly Asked Questions How to Obtain the Distribution by FTP How to Obtain the Distribution by Mail How to Obtain the Distribution within Silicon Graphics What to do Once You've Retrieved Stuff (source distribution) What to do Once You've Retrieved Stuff (binary distribution) FlexFAX Mailing List Use and Copyright Overview -------- FlexFAX is a facsimile system for UNIX systems. It supports: o sending facsimile o receiving facsimile o polled retrieval of facsimile Facsimile can be any size (e.g. A4, B4), either 98 or 196 lpi, and transmitted/received as either 1D-encoded or 2D-encoded facsimile data (2D-encoded data is frequently more compact and hence takes a shorter time to communicate). Outgoing documents can be any format; the sendfax program uses a rule-based definition file similar to the System V /etc/magic file to deduce document types and to decide how to convert each document to a form suitable for transmission (either PostScript or TIFF/F). Automatic cover page generation is supported and users can easily tailor cover pages to their environment. A simple text-based phonebook database is supported by sendfax. Information is also provided on how to trivially setup an email to fax gateway service. Incoming facsimile are stored in a receiving area as TIFF/F files and may be automatically delivered by mail and/or printed. A fax server status program, faxstat, can be used to monitor the send and receive queues, as well as the state of facsimile servers. Fax modems may be shared with outgoing data communication applications that honor the "uucp locking protocol". These applications typically include: cu, tip, kermit, uucp, slip, and ppp. The system can also be configured so that incoming data calls cause the system to invoke the standard system getty program. The software is structured around a client-server architecture. One facsimile server process exists for each fax modem on a network. Clients may send facsimile from any machine that can communicate with the machine(s) on which the server(s) reside. Client software is designed to be lightweight and easy to port; imaging can be offloaded to the server or done on the client. (Imaging is, however, typically done on the server because it simplifies administration.) Multiple modems may be located on a single machine. An access control mechanism is included to control which users on which machines may submit documents for transmission. The system supports a wide variety of fax modems. Any Class 1 or Class 2 modem should work with the system. The following modems have been used successfully with the software: Manufacturer Model Class Firmware Rev ------------ ----- ----- ------------ Abaton InterFax 24/96 (+) unavailable AT&T Paradyne DataPort 14.4 1 >= C01.22.00 Boca Research M1440E 2 >= V1.270 Boca Research M1440E/RC32ACL (@) 2 V1.000 CPI ViVa 14.4/FAX 2 V1.10 172-502402-013 Dallas Fax <something> 2 not recommended Digicom Scout+ 1 >= 2A19/2931 Dynalink (?) Dynalink 1414VE 2 CBS-03 Everex EverFax 24/96D 2 >= 901231 Hayes Optima 144 1 unknown Hayes Optima 2400+Fax96 2 >= TR00-J260-001 XXX Logicode Quicktel Xeba 14.4 2 V0.500 TR14-Jxxx-001 Multi-Tech MT1432BA (*), MT224BA 2 >= 0307 I Multi-Tech MT1432BG 2 0109A Nuvo Voyager 96424PFX 1 AF-C2500-E0 PPI PM14400FXMT, PM14400FXSA 2 >= 2.17 Supra SupraFAX v.32bis 1,2 >= V1.200-C Supra SupraFAX v.32bis/RC32ACL (@) 2 >= V1.000 Telebit T3000, WorldBlazer 2 >= LA7.01 Twincom 144/DF 2 >= V1.200 USRobotics Courier 1 Sup4.1/DSP11 USRobotics Sportster 1 Sup4.1/DSP10 Zoom VFX 1,2 V2.00 Zero One Net. ZyXEL U1496E, U1496E+, U1496S 2 >= 5.01 Notes: + The Abaton driver is currently busted and may be purged in future versions of this software. * There are apparently many variants of the MT1432BA, the following models are known to work: MT1432BA, MT1432BA/A, MT1432MK, MT1432PCS @ /RC32ACL refers to second-generation products made with the Rockwell RC32ACL part and different firmware Class 1 means the modem supports the TIA/EIA-578 "Class 1" specification. Class 2 means the modem supports the TIA/EIA-592 draft SP-2388-A of August 30, 1991. The Abaton modem uses a proprietary interface that is neither Class 1 or Class 2. SEE THE SECTION "Class 1 Support" FOR IMPORTANT INFO ON CLASS 1 SUPPORT Note however that some modems perform better than others. The file MODEMS included in the distribution provides information about each modem that has been tried. Supported Systems ----------------- The software has been ported to the following systems: bsdi BSD/386 1.0 w/ GNU gcc 2.3.3 4.4bsd 4.4BSD-Alpha w/ GNU gcc 2.3.3 (incomplete) linux Linux 99p9 on an Intel 386 using gcc 2.3.3 sco SCO ODT 2.0 (incomplete) sgi Silicon Graphics 4D machines w/ AT&T C++ compiler solaris2 Solaris 2.x on a Sun4 with GNU gcc 2.3.3 (incomplete) sun Sun3/Sun4 w/ SunOS 4.1.X and GNU gcc 2.3.3 svr4 System V Release 4 on an Intel x86 w/ GNU gcc 2.3.3 (incomplete) 386bsd 386bsd 0.1 on an Intel 486 w/ GNU gcc 2.3.3+patches Systems that are marked (incomplete) compile properly and can be used to send and receive facsimile, but may have known problems or may be lacking some utilities such as the faxaddmodem installation script. Porting the software is usually straightforward provided there is a working C++ compiler (e.g. gcc), PostScript imaging facility (e.g. ghostscript), and support for a limited subset of the POSIX system call interface. System requirements are described more fully in the source code distribution. About the Distribution ---------------------- There are two distributions: a binary version that is directly installable on a Silicon Graphics IRIX 4.0.x system and a source distribution. The executables in the binary version of this distribution are only for Silicon Graphics 4D processor-based systems. The distribution is sure to work on any IRIX 4.0.x system, though it may also work on pre-4.0 os versions. The source distribution includes all the source code in the system except a small bit of code used to build a Display PostScript-based imager (this code is useless unless you have a developers agreement with Adobe for Display PostScript). The system is written almost entirely in C++. I use the AT&T 2.1 compiler, as supported by Silicon Graphics. GNU gcc 2.3.3 has been successfully used to build this software on all systems. A PostScript interpreter program is needed for imaging outgoing facsimile on the server machine. The binary distribution for Silicon Graphics machines includes an imaging program that requires the Display PostScript execution environment (dps_eoe) that is available with most versions of IRIX. The source distribution includes a device driver for use with Ghostscript version 2.5.2. Version 2.6.1 of the Ghostscript distribution comes with the required device driver. Class 1 Modem Support (Caveat Emptor) ------------------------------------- Most contemporary fax modems provide one of two command interfaces for communication between the host and modem: Class 1 or Class 2. (Actually, many modems that provide a Class 2 interface also provide a Class 1 interface.) These interfaces are specified by the Electronic Industries Association/Telecommunications Industry Association (EIA/TIA). The Class 1 standard provides minimal hardware support for fax communication while Class 2 adds many commands and places more functionality in the modem. FlexFAX includes drivers for both Class 1 and Class 2 modems. Robust support for Class 1 modems places two requirements on the host system: o low latency for serial line input o near realtime response In a UNIX environment both these requirements can be problematic. In particular, many UNIX systems increase the latency for data received on a serial port in order to reduce system overhead. That is, input data are typically held in a low level device driver for some period of time before they are passed to the user so that bursts of input data can be delivered to the user together. This behaviour is known to occur under the Silicon Graphics IRIX and SunOS 4.1.x operating systems; it may also occur under other systems. It is important for the proper operation of the Class 1 driver that input data be delivered to the facsimile server as quickly as possible. This may require making a non-standard call of some sort to the operating system. For SGI systems this call is automatically done. For SunOS systems it appears that the only way to minimize the input latency is to create a stream i/o module that accesses an internal interface (see the comments in the routine setInputBuffering in faxd/FaxServer.c++ and the directory port/sun/zsundev that contains source for a kernel streams module). The response time requirements are important for insuring that T.30 protocol messages are received in a timely fashion. On a loaded system the protocol process may be preempted by other activities and not be run fast enough to satisfy the protocol timing requirements. This can usually be guarded against by assigning the facsimile process a high scheduling priority. Unfortunately most UNIX systems do not provide support for such facilities and so even if it is possible to receive serial line input with the minimum of delay, protocol timing requirements may not be met because of delays in scheduling the execution of the fax server process. For this reason the facsimile server process attempts to raise its scheduling priority while it is actively sending or receiving facsimile. At other times, such as when it is doing queue management operations, it runs at a normal priority. On Silicon Graphics systems the ``high priority'' is a nondegrading scheduling priority that is above the priorities of the normal system processes. On other systems the server currently always runs at the same (normal) scheduling priority. For more details consult the setProcessPriority routine in faxd/FaxServer.c++. In summary, if you want to use a Class 1 modem with this software and your system does not provide support for low latency serial line input you are likely to have troubles. If your system does not provide a mechanism for raising process scheduling priority (note that this is not the same as the UNIX ``nice'' parameter), then you may see problems when the server is under load. Exactly how much load will cause trouble is dependent on the system configuration and processing power. Commonly Asked Questions ------------------------ Q: How is FlexFAX related to netfax (aka GNU fax)? A: Netfax is a simple fax package developed by folks at MIT and freely available under the terms of the GNU software agreement. FlexFAX is a totally independent project that was intended to provide a robust facsimile service that supports a wide variety of modems and systems. FlexFAX is also public available, but with a different copyright agreement (see the copyright at the bottom of this note). Q: My modem is not listed as supported, will it work? A: If the modem conforms to the draft Class 2 standard that most vendors used to implement their ``Ersatz Class 2'' modems, then it should work with the software; probably with some minor modifications to one of the modem configuration files distributed with the system. If the modem conforms to the EIA-578 "Class 1" programming interface, then it will only work if the intended host provides certain system facilities. Class 1 modems have successfully been used with this software on Silicon Graphics and Sun systems. Otherwise it is possible to support a modem by writing a new ``modem driver'' that is compiled into the facsimile server. Q: What's the best modem to buy/use with this software? A: First, if your system is incapable of supporting a Class 1 modem, then you need to use a Class 2 modem. The best Class 2 modem that I have had experience with is the Everex 24/96D, but it is no longer sold and it does not support the v.17 standard for transmitting and receiving at 14.4KB. I have had good success with all the Class 1 modems listed above; though the Supra modem exhibits the usual problems known to exist with modems built around the Rockwell RC144DP (data pump). How to Obtain the Distribution by FTP ------------------------------------- The source code is available for public ftp on sgi.com sgi/fax/v2.2.src.tar.Z (192.48.153.1) You can also obtain inst'able images for Silicon Graphics machines from sgi.com sgi/fax/v2.2.inst.tar (192.48.153.1) For example, % ftp -n sgi.com .... ftp> user anonymous Password: <use mail address as password> ftp> cd sgi/fax ftp> binary ftp> get v2.2.src.tar.Z .... ftp> quit In general, the latest version of the 2.2 release of the software is always available as "v2.2.src.tar.Z" or "v2.2.inst.tar" in the ftp directory. This file is a link to the appropriate released version (so don't waste your time retrieving the linked file as well!) Any files of the form v2.2.*.patch are shell scripts that can be used to patch older versions of the source code. For example, the file v2.2.0.patch would contain patches to update v2.2.0.tar.Z. Patch files only work to go between consecutive versions, so if you are multiple versions behind the latest release, you will need to apply each patch file between your current version and the latest. How to Obtain the Distribution by Mail -------------------------------------- Do not send me requests for the software; they will be ignored (without response). If you cannot use FTP at all, there is a service called "ftpmail" available from gatekeeper.dec.com: you can send e-mail to this machine and it will use FTP to retrieve files for you and send you the files back again via e-mail. To find out more about the ftpmail service, send a message to "ftpmail@gatekeeper.dec.com" whose body consists of the single line "help". How to Obtain the Distribution within Silicon Graphics ------------------------------------------------------ Internal to Silicon Graphics there are inst'able images on the host flake.asd in the directory /usr/dist. Thus you can do something like: % inst -f flake.asd.sgi.com:/usr/dist/flexfax to install the latest version of the software on your machine. What to do Once You've Retrieved Stuff (source distribution) ------------------------------------------------------------ The source distributions come in a compressed tar file. To extract the software do something like: % mkdir fax; cd fax % zcat <somewhere>/v2.2.src.tar.Z | tar xf - (uncompress and extract individual files in current directory). Then follow the instructions in the file README in the top of the source tree. What to do Once You've Retrieved Stuff (binary distribution) ------------------------------------------------------------ The binary distribution comes as a tar file that contains images for use with the standard Silicon Graphics installation program inst(1). To unpack the inst images do something like: % mkdir dist; cd dist % tar xf <somewhere>/v2.2.inst.tar Next, run inst to install the appropriate pieces that you want. The key documentation from the source distribution is included in the subsystem flexfax.man.readme. When this subsystem is installed the README file and other useful pieces of information are placed in the directory /usr/local/doc/flexfax. Otherwise the software is broken into two areas: flexfax.client.* for software needed on client machines, and flexfax.server.* for software needed on a machine where a fax modem is located. To unpack and install the client portion: % mkdir dist; cd dist % tar xf ../v2.2.inst.tar % cd ..; inst -f dist/flexfax ... inst> go (Note, the dist subdirectory is because some versions of inst fail if the files are in the current directory.) Note that server binaries are not installed by default, so to get them also you need to do: % inst -f flexfax ... inst> install flexfax.server.* inst> go Remember that to install a server on a Silicon Graphics machine, you need to have already installed the Display PostScript execution environment product (dps_eoe). Otherwise, the fax server will not be able to convert PostScript to facsimile for transmission. FlexFAX Mail List ----------------- A mailing list for users of this software is located on sgi.com. If you want to join this mailing list or have a list-related request such as getting your name removed from it, send a request to majordomo@whizzer.wpd.sgi.com For example, to subscribe, send the line "subscribe flexfax" in the body of your message. The line "help" will return a list of the commands understood by the mailing list management software. Submissions (including bug reports) should be directed to: flexfax@sgi.com When corresponding about this software please always specify what version you have, what system you're running on, and, if the problem is specific to your modem, identify the modem and firmware revision. Use and Copyright ----------------- Silicon Graphics has seen fit to allow me to give this work away. It is free. There is no support or guarantee of any sort as to its operations, correctness, or whatever. If you do anything useful with all or parts of it you need to honor the copyright notices. I would also be interested in knowing about it and, hopefully, be acknowledged. Sam Leffler (sam@sgi.com) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993 Sam Leffler Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that (i) the above copyright notices and this permission notice appear in all copies of the software and related documentation, and (ii) the names of Sam Leffler and Silicon Graphics may not be used in any advertising or publicity relating to the software without the specific, prior written permission of Sam Leffler and Silicon Graphics. THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -- Tom Limoncelli -- tal@warren.mentorg.com (work) -- tal@plts.org (play) "Some people run 'biff' to alert them that | Disclaimer: I do not they have new email. I run '/bin/true'". | speak for Mentor Graphics.