Provided by: efax_0.9a-19_i386 bug
 

NAME

        efax - send/receive faxes with Class 1, 2 or 2.0 fax modem
 
                         (Please read the fax man page first.)
 

SYNOPSIS

        efax [ options ] [ -t num [ file... ] ]
 

OPTIONS

        Where options are:
 
        -a cmd   use  the  command ATcmd when answering the phone.  The default
                 is "A".
 
        -c caps  set the local modem capabilities.  See the section on capabil‐
                 ities  below  for the format and meaning of caps.  For Class 1
                 the default is 1,n,0,2,0,0,0,0 where n is  the  highest  speed
                 supported by the modem.  For Class 2 the default is determined
                 by the modem.
 
        -d dev   use the fax modem connected to device  dev.   The  default  is
                 /dev/modem.
 
        -f fnt   use font file fnt for generating the header.  The default is a
                 built-in 8x16 font.  See the efix(1) -f option  for  the  font
                 file format.
 
        -g cmd   if  a  CONNECT  (or  DATA) response indicates a data call, the
                 shell /bin/sh is exec(2)’ed with cmd as its command.  cmd is a
                 printf(3) format that may contain up to 6 %d escapes which are
                 replaced by the baud rate following the  most  recent  CONNECT
                 message. cmd typically exec’s getty(8).
 
        -h hdr   put  string  ‘hdr’  at  the top of each page.  The first %d in
                 ‘hdr’ is replaced by the page number and the second,  if  any,
                 is replaced by the number of pages being sent.
 
        -i str
 
        -j str
 
        -k str   send the command ATstr to the modem to initialize it.  -i com‐
                 mands are sent before the modem is put into fax mode, -j  com‐
                 mands  after  the  modem  is in fax mode, and -k commands just
                 before efax exits.  The only default is a hang-up  (ATH)  com‐
                 mand  that  is sent before exiting only if no other -k options
                 are given.  Multiple options may be used.
 
        -l id    set the local identification string to id.  id should  be  the
                 local  telephone  number  in international format (for example
                 "+1 800 555 1212").  This is passed to the remote fax machine.
                 Some  fax  machines  may not accept characters other than num‐
                 bers, space, and ’+’.
 
        -o opt   use option opt to accommodate a non-standard fax modem  proto‐
                 col.   See  the  MODEM  REQUIREMENTS  section  below  for more
                 details.  The options are:
 
            0    Force use of Class 2.0 fax modem  commands.   The  modem  must
                 support Class 2.0.
 
            2    Force  use of Class 2 fax modem commands.  The modem must sup‐
                 port Class 2.
 
            1    Force use of Class 1 fax modem commands. The modem  must  sup‐
                 port  Class 1.  By default efax queries the modem and uses the
                 first of the three above classes which  is  supported  by  the
                 modem.
 
            a    use  software adaptive answer method.  If the first attempt to
                 answer the call does not result in a data connection within  8
                 seconds the phone is hung up temporarily and answered again in
                 fax mode (see "Accepting both fax and data calls" below).
 
            e    ignore errors in modem initialization commands.
 
            f    use "virtual flow control".  efax tries to estimate the number
                 of  bytes  in the modem’s transmit buffer and pauses as neces‐
                 sary to avoid filling it.  The modem’s buffer  is  assumed  to
                 hold  at  least 96 bytes.  This feature does not work properly
                 with Class 2 modems that add redundant padding to scan  lines.
                 Use  this  option  only  if you have problems configuring flow
                 control.
 
            h    use hardware (RTS/CTS) in addition to software (XON/XOFF) flow
                 control.   Many  modems will stop responding if this option is
                 used.  See the section ‘Resolving Problems’ before using  this
                 option.
 
            l    halve  the  time  between  testing lock files when waiting for
                 other programs to complete.  By default this is 8 seconds. For
                 example -olll sets the interval to 1 second.
 
            n    ignore requests for pages to be retransmitted. Use this option
                 if you don’t care about the quality of the received fax or  if
                 the  receiving  machine is too fussy.  Otherwise each page may
                 be retransmitted up to 3 times.
 
            r    do not reverse bit order during data  reception  for  Class  2
                 modems.   Only  Multitech modems require this option. Not nor‐
                 mally required since efax detects these modems.
 
            x    send XON  (DC1)  instead  of  DC2  to  start  data  reception.
                 Applies to a very few Class 2 modems only.
 
            z    delay  an  additional  100 milliseconds before each modem ini‐
                 tialization or reset command.  The initial delay  is  100  ms.
                 For  example,  -ozzz produces a 400 ms delay.  Use with modems
                 that get confused when commands arrive too quickly.
 
        -q n     ask for retransmission of pages  received  with  more  than  n
                 errors.  Default is 10.
 
        -r pat   each received fax page is stored in a separate file.  The file
                 name is created using pat as a strftime(3) format  string.   A
                 page  number  of  the form .001, .002, ...  is appended to the
                 file name.  If pat is blank ("") or no -r option  is  given  a
                 default string of "%m%d%H%M%S" is used.
 
        -s       remove lock file(s) after initializing the modem.  This allows
                 outgoing calls to proceed when efax is waiting for an incoming
                 call.   If  efax detects modem activity it will attempt to re-
                 lock the device.  If the modem has been locked  by  the  other
                 program  efax  will  exit and return 1 (‘‘busy’’).  Normally a
                 new efax process is then started by init(8). The new efax pro‐
                 cess  will  then check periodically until the lock file disap‐
                 pears and then re-initialize the modem.
 
        -t num [file...]
                 dial telephone  number  num  and  send  the  fax  image  files
                 file....   If used, this must be the last argument on the com‐
                 mand line.  The telephone number num is a string that may con‐
                 tain  any  dial  modifiers that the modem supports such as a T
                 prefix for tone dialing or commas  for  delays.   If  no  file
                 names  are  given the remote fax machine will be polled. If no
                 -t argument is given efax will answer the phone and attempt to
                 receive a fax.
 
        -v strng select  types of messages to be printed.  Each lower-case let‐
                 ter in strng enables one type of message:
 
                    e - errors
                    w - warnings
                    i - session progress information
                    n - capability negotiation information
                    c - modem (AT) commands and responses
                    h - HDLC frame data (Class 1 only)
                    m - modem output
                    a - program arguments
                    r - reception error details
                    t - transmission details
                    f - image file details
                    x - lock file processing
 
                 Up to two -v options may be used.  The first is  for  messages
                 printed  to  the standard error and the second is for messages
                 to the standard output. The default is "ewin" to the  standard
                 error only.
 
        -w       wait  for an OK or CONNECT prompt instead of issuing an answer
                 (ATA) command to receive a fax.   Use  this  option  when  the
                 modem is set to auto-answer (using S0=n) or if another program
                 has already answered the call.
 
        -x lkf   use a UUCP-style lock file lkf to lock the modem device before
                 opening  it.   If  the  device is locked, efax checks every 15
                 seconds until it is free.  Up to 16 -x options may be used  if
                 there  are several names for the same device.  A ‘#’ prefix on
                 the file name creates an binary rather than  text  (HDB-style)
                 lock  file.   This is the reverse of what was used by previous
                 efax versions.
        efax can read the same types of files as efix(1)  including  text,  T.4
        (Group  3),  PBM,  single-  and  multi-page TIFF (G3 and uncompressed).
        efax automatically determines the type of file from its contents.  TIFF
        files  are recommended as they contain information about the image size
        and resolution.
 
        Each page to be sent should be converted to a separate TIFF format file
        with  Group 3 (G3) compression.  Received files are also stored in this
        format.  The EXAMPLES section below shows how efix and  other  programs
        can be used to create, view and print these files.
        The  operating system must provide short response times to avoid proto‐
        col timeouts.  For Class 2 and 2.0 modems the delay should not exceed 1
        or 2 seconds.
 
        When  using  Class  1 modems the program must respond to certain events
        within 55 milliseconds.  Longer delays may cause the  fax  protocol  to
        fail  in  certain  places (between DCS and TCF or between RTC and MPS).
        Class 1 modems should therefore not be  used  on  systems  that  cannot
        guarantee  that  the program will respond to incoming data in less than
        55 milliseconds.  In particular, some intelligent serial cards and ter‐
        minal servers may introduce enough delay to cause problems with Class 1
        operation.
 
        The operating system must also provide sufficient  low-level  buffering
        to  allow  uninterrupted  transfer of data between the modem and a disk
        file at the selected baud rate, typically 9600 bps.  Since the fax pro‐
        tocol  does  not  provide  end-to-end flow control the effectiveness of
        flow control while receiving is limited by  the  size  of  the  modem’s
        buffer.  This  can be less than 100 bytes.  Efax does not use flow con‐
        trol during reception.
        The "Group" is the protocol used to send faxes  between  fax  machines.
        Efax  supports the Group 3 protocol used over the public telephone net‐
        work.
 
        The "Class" is the protocol used by computers to  control  fax  modems.
        Efax supports Class 1, 2 and 2.0 fax modems.
 
        Most  fax modems use XON/XOFF flow control when in fax mode.  This type
        of flow control adds very little overhead for fax use. Many modems have
        unreliable  hardware  (RTS/CTS)  flow  control in fax mode.  By default
        efax enables only XON/XOFF flow control and the -oh option must be used
        to add hardware flow control.
 
        While  some modems have serial buffers of about 1k bytes, many inexpen‐
        sive modems have buffers of about one hundred bytes and are  thus  more
        likely to suffer overruns when sending faxes.
 
        A  few  older modems may need a delay between commands of more than the
        default value used by efax (100 milliseconds).  If  the  delay  is  too
        short, commands may not echo properly, may time out, or may give incon‐
        sistent responses.  Use one or more -oz options to increase  the  delay
        between  modem initialization commands and use the E0 modem initializa‐
        tion command to disable echoing of modem commands.
 
        By default efax sends DC2 to start the data flow from  the  modem  when
        receiving  faxes  from  Class 2 modems.  A few older modems require XON
        instead.  Use of DC2 would cause the modem to  give  an  error  message
        and/or  the program to time out.  The -ox option should be used in this
        case.
 
        A few older Class 2 modems (e.g. some Intel models) don’t send  DC2  or
        XON  to  start  the  data  flow to the modem when sending faxes.  After
        waiting 2 seconds efax will print a warning and start sending  anyways.
 
        A  very few Class 2 modems do not reverse the bit order (MSB to LSB) by
        default on receive.  This might cause errors when trying to display  or
        print the received files.  The -or option can be used in this case.
 
        Some  inexpensive  "9600  bps" fax modems only transmit at 9600 bps and
        reception is limited to 4800 bps.
 
        The following Class 1 modems have been reported to work with efax: AT&T
        DataPort,  Cardinal Digital Fax Modem (14400), Digicom Scout+, Motorola
        Lifestyle 28.8, Motorola Power 28.8,  QuickComm  Spirit  II,  Smartlink
        9614AV-Modem,  Supra  Faxmodem  144LC,  USR  Courier V.32bis Terbo, USR
        Sportster (V.32 and V.34), Zoom AFC 2.400, Zoom VFX14.4V.
 
        The following Class 2 modems have been reported to work with efax: 14k4
        Amigo  Communion  fax/modem, Adtech Micro Systems 14.4 Fax/modem, askey
        modem type 1414VQE, AT&T DataPort, ATT/Paradyne, AT&T Paradyne  PCMCIA,
        Boca  modem, BOCA M1440E, Crosslink 9614FH faxmodem, FuryCard DNE 5005,
        GVC 14.4k internal, Intel 14.4 fax modem, Megahertz  14.4,  ,  Microcom
        DeskPorte  FAST  ES  28.8,  Motorola  UDS FasTalk II, MultiTech 1432MU,
        Practical Peripherals PM14400FXMT, Supra V32bis,  Telebit  Worldblazer,
        TKR  DM-24VF+,  Twincom  144/DFi,  ViVa 14.4/Fax modem, Vobis Fax-Modem
        (BZT-approved), Zoom VFX14.4V, ZyXEL U-1496E[+], ZyXEL Elite 2864I.
        The required modem  initialization  commands  are  generated  by  efax.
        Additional  commands  may  be  supplied as command-line arguments.  The
        modem must be set up to issue verbose(text) result codes.  The  follow‐
        ing  command  does this and is sent by efax before trying to initialize
        the modem.
 
        Q0V1     respond to commands with verbose result codes
 
        The following commands may be useful for special purposes:
 
        X3       don’t wait for dial tone before dialing.  This may be used  to
                 send a fax when the call has already been dialed manually.  In
                 this case use an empty string ("") as the  first  argument  to
                 the  -t  command.  Use X4 (usual default) to enable all result
                 codes.
 
        M2       leave the monitor speaker turned on for the  duration  of  the
                 call (use M0 to leave it off).
 
        L0       turn monitor speaker volume to minimum (use L3 for maximum).
 
        E0       disable echoing of modem commands.  See the Resolving Problems
                 section below.
 
        &D2      returns the modem to command mode when DTR  is  dropped.   The
                 program drops DTR at the start and end of the call if it can’t
                 get a response to a modem command.  You can use &D3  to  reset
                 the modem when DTR is dropped.
 
        S7=120   wait up to two minutes (120 seconds) for carrier.  This may be
                 useful if the answering fax machine takes a long time to start
                 the  handshaking  operation  (e.g.  a  combined  fax/answering
                 machine with a long announcement).
 

CAPABILITIES

        The capabilities of the local hardware and software can be set using  a
        string of 8 digits separated by commas:
 
        vr,br,wd,ln,df,ec,bf,st
 
        where:
 
        vr  (vertical resolution) =
                 0 for 98 lines per inch
                 1 for 196 lpi
 
        br  (bit rate) =
                 0 for 2400 bps
                 1 for 4800
                 2 for 7200
                 3 for 9600
                 4 for 12000 (V.17)
                 5 for 14400 (V.17)
 
        wd  (width) =
                 0 for 8.5" (21.5 cm) page width
                 1 for 10" (25.5 cm)
                 2 for 12" (30.3 cm)
 
        ln  (length) =
                 0 for 11" (A4: 29.7 cm) page length
                 1 for 14" (B4: 36.4 cm)
                 2 for unlimited page length
 
        df  (data format) =
                 0 for 1-D coding
                 1 for 2-D coding (not supported)
 
        ec  (error correction) =
                 0 for no error correction
 
        bf  (binary file) =
                 0 for no binary file transfer
 
        st  (minimum scan time) =
                 0 for zero delay per line
                 1 for 5 ms per line
                 3 for 10 ms per line
                 5 for 20 ms per line
                 7 for 40 ms per line
 
        When receiving a fax the vr, wd, and ln fields of the capability string
        should be set to the maximum values that  your  display  software  sup‐
        ports.  The default is 196 lpi, standard (8.5"/21.5cm) width and unlim‐
        ited length.
 
        When sending a fax efax will determine vr and ln from  the  image  file
        and set wd to the default.
 
        If  the  receiving  fax machine does not support high resolution (vr=1)
        mode, efax will reduce the resolution by combining pairs of scan lines.
        If  the  receiving  fax machine does not support the image’s width then
        efax will truncate or pad as required. Most fax machines can receive ln
        up to 2.  Few machines support values of wd other than 0.
 

HEADERS

        efax  adds  blank  scan lines at the top of each image when it is sent.
        This allows room for the page header but increases the  length  of  the
        image (by default about 0.1" or 2.5mm of blank space is added).
 
        The  header  placed  in this area typically includes the date and time,
        identifies the, and shows the page number  and  total  pages.   Headers
        cannot be disabled but the header string can be set to a blank line.
 
        The  default font for generating the headers is the built-in 8x16 pixel
        font scaled to 12x24 pixels (about 9 point size).
 
        Note that both efax and efix have -f options to specify the font.  efIx
        uses the font to generate text when doing text-to-fax conversions (dur‐
        ing "fax make") while efAx uses the font to generate the header (during
        "fax send").
        A  session log is written to the standard error stream.  This log gives
        status and error messages from  the  program  as  selected  by  the  -v
        option.  A time stamp showing the full time or just minutes and seconds
        is printed  before  each  message.   Times  printed  along  with  modem
        responses also show milliseconds.
        The program returns an error code as follows:
 
        0        The fax was successfully sent or received.
 
        1        The  dialed  number  was  busy or the modem device was in use.
                 Try again later.
 
        2        Something failed (e.g. file not found  or  disk  full).  Don’t
                 retry.  Check the session log for more details.
 
        3        Modem  protocol  error.   The  program  did  not  receive  the
                 expected response from the modem.  The modem may not have been
                 properly initialized, the correct -o options were not used, or
                 a bug report may be in order.  Check the session log for  more
                 details.
 
        4        The  modem is not responding.  Operator attention is required.
                 Check that the modem is turned on and connected to the correct
                 port.
 
        5        The program was terminated by a signal.
 

EXAMPLES

        Creating fax (G3) files
 
        The  efix  program can be used to convert text files to TIFF-G3 format.
        For example, the following command will convert the text file letter to
        the files letter.001, letter.002, etc,:
 
               efix -nletter.%03d letter
 
        Ghostscript’s  tiffg3  driver  can generate fax files in TIFF-G3 format
        from postscript files.  For example, the command:
 
                gs -q -sDEVICE=tiffg3 -dNOPAUSE \
                    -sOutputFile=letter.%03d letter.ps </dev/null
 
        will convert the Postscript file letter.ps into high-resolution  (vr=1)
        G3 fax image files letter.001, letter.002, ...
 
        The  images  should  have margins of at least 1/2 inch (1 cm) since the
        fax standard only requires that fax machines print a central portion of
        the image 196.6mm (7.7 inches) wide by 281.5mm (11.1 inches) high.
 
        The  efix  program  can also insert bitmaps in images to create letter‐
        head, signatures, etc.
 
        Printing fax files
 
        You can use the efix program to print faxes  on  Postscript  or  HP-PCL
        (LaserJet)  printers.   For  example,  to  print  the received fax file
        reply.001 on a Postscript printer use the command:
 
               efix -ops reply.001 | lpr
 
        Sending fax files
 
        The following command will dial the number 222-2222 using tone  dialing
        and  send  a  two-page  fax  from the TIFF-G3 files letter.001 and let‐
        ter.002 using the fax modem connected to device /dev/cua1.
 
               efax -d /dev/cua1 \
                    -t T222-2222 letter.001 letter.002
 
        Manual answer
 
        You can use efax to answer the phone immediately and start  fax  recep‐
        tion.   Use  this  mode  if you need to answer calls manually to see if
        they are fax or voice.
 
        For example, the following command will make the fax  modem  on  device
        /dev/ttyS1 answer the phone and attempt to receive a fax.  The received
        fax will be stored in the files reply.001, reply.002, and so  on.   The
        modem  will  identify itself as "555 1212" and receive faxes at high or
        low resolution (vr=1), at up to 14.4 kbps (br=5).
 
               efax -d /dev/ttyS1 -l "555 1212" \
                  -c 1,5 -r reply
 
        Automatic answer
 
        The -w option makes efax wait for characters to become  available  from
        the  modem (indicating an incoming call) before starting fax reception.
        Use the -w option and a -iS0=n option  to  answer  the  phone  after  n
        rings.   The example below will make the modem answer incoming calls in
        fax mode on the fourth ring and save the  received  faxes  using  files
        names corresponding to the reception date and time.
 
               efax -d /dev/ttyb -w -iS0=4 2>&1 >> fax.log
 
        Sharing the modem with outgoing calls
 
        The  modem  device  can  be shared by programs that use the UUCP device
        locking protocol.  This includes pppd, chat, minicom,  kermit,  uucico,
        efax,  cu,  and many others others.  However, locking will only work if
        all programs use the same lock file.
 
        efax will lock the modem device before opening it if one or  more  UUCP
        lock  file  names are given with -x options.  Most programs place their
        lock files in the /usr/spool/uucp or /var/lock directories and use  the
        name  LCK..dev  where  dev  is  the name of the device file in the /dev
        directory that is to be locked.
 
        If the -s (share) option is used, the lock file is removed while  wait‐
        ing for incoming calls so other programs can use the same device.
 
        If  efax detects another program using the modem while it is waiting to
        receive a fax, efax exits with a termination code of 1.   A  subsequent
        efax  process  using  this  device will wait until the other program is
        finished before re-initializing the modem  and  starting  to  wait  for
        incoming calls again.
 
        Programs  that  try  to  lock  the modem device by using device locking
        facilities other than UUCP lock files not be able to use this  arbitra‐
        tion  mechanism  because the device will still be open to the efax pro‐
        cess.  In this case you will need to kill the efax process  (e.g.  "fax
        stop") before starting the other program.
 
        When  efax is waiting for a fax it leaves the modem ready to receive in
        fax mode but removes the lock file.  When a slip or PPP  program  takes
        over  the  modem  port by setting up its own lock file efax cannot send
        any more commands to the modem -- not even to reset it.  Therefore  the
        other program has to set the modem back to data mode when it starts up.
        To do this add a modem reset command (send ATZ expect OK) to the begin‐
        ning of your slip or PPP chat script.
 
        Accepting both fax and data calls
 
        Many  modems  have an adaptive data/fax answer mode that can be enabled
        using the -j+FAE=1 (for Class 1) or -jFAA=1 (for Class 2[.0])  initial‐
        ization  string.   The  type  of call (data or fax) can then be deduced
        from the modem’s responses.
 
        Some modems have limited adaptive answer features  (e.g.  only  working
        properly  at certain baud rates or only in Class 2) or none at all.  In
        this case use the initialization string -i+FCLASS=0 to answer  in  data
        mode first and the -oa option to then hang up and try again in fax mode
        if the first answer attempt was not successful.  This method only works
        if  your  telephone system waits a few seconds after you hang up before
        disconnecting incoming calls.
 
        If the -g option is used then the option’s argument will be  run  as  a
        shell  command  when an incoming data call is detected.  Typically this
        command will exec getty(8).  This program should  expect  to  find  the
        modem  already off-hook and a lock file present so it should not try to
        hang up the line or create a lock file.  Note that the modem should  be
        set  up  to  report  the  DCE-DTE  (modem-computer, e.g. CONNECT 38400)
        speed, not the DCE-DCE (modem-modem, e.g. CONNECT  14400)  speed.   For
        many modems the initialization option -iW0 will set this.
 
        The following command will make efax answer incoming calls on /dev/cua1
        on the second ring.  This device will be  locked  using  two  different
        lock  files  but  these  lock  files  will be removed while waiting for
        incoming calls (-s).  If a data call is  detected,  the  getty  program
        will be run to initialize the terminal driver and start a login(1) pro‐
        cess.   Received  fax  files  will   be   stored   using   names   like
        Dec02-12.32.33.001,  in  the  /usr/spool/fax/incoming directory and the
        log file will be appended to /usr/spool/fax/faxlog.cua1.
 
               efax -d /dev/cua1  -j ’+FAA=1’ \
                  -x /usr/spool/uucp/LCK..cua1 \
                  -x /usr/spool/uucp/LCK..ttyS1 \
                  -g "exec /sbin/getty -h /dev/cua1 %d" \
                  -iS0=2 -w -s \
                  -r "/usr/spool/fax/incoming/%b%d-%H.%I.%S" \
                  >> /usr/spool/fax/faxlog.cua1 2>&1
 
        Note that adaptive answer of either type will not work for all callers.
        For some data calls the duration of the initial data-mode answer may be
        too short for data handshaking to complete.  In other cases this  dura‐
        tion  may  be so long that incoming fax calls will time out before efax
        switches to fax mode.  In addition, some  calling  fax  modems  mistake
        data-mode  answering  tones  for  fax  signaling tones and initiate fax
        negotiation too soon.  If you use  software  adaptive  answer  you  can
        reduce  the  value  of the initial data-mode answer (set by TO_DATAF in
        efax.c) to get more reliable fax handshaking or increase  it  for  more
        reliable  data  handshaking.   However, if you need to provide reliable
        fax and data service to all callers you should use separate phone  num‐
        bers for the two types of calls.
 
        When  a  call  is answered the modem goes on-line with the computer-to-
        modem baud rate fixed at the speed used for the most recent AT command.
        When efax is waiting for a fax or data call it sets the interface speed
        to 19200 bps since this is the speed required for fax operation.   This
        prevents full use of 28.8kbps modem capabilities.
        efax  can  answer  all incoming calls if you place an entry for efax in
        /etc/inittab (for SysV-like systems) or /etc/ttytab (for BSD-like  sys‐
        tems).  The init(8) process will run a new copy of efax when the system
        boots up and whenever the previous efax process terminates.  The  init‐
        tab  or  ttytab entry should invoke efax by running the fax script with
        an answer argument.
 
        For example, placing the following line in  /etc/inittab  (and  running
        "kill -1 1") will make init run the fax script with the argument answer
        every time previous process terminates and init is in runlevel 4 or  5.
 
               s1:45:respawn:/bin/sh /usr/bin/fax answer
 
        For  BSD-like  systems  (e.g.  SunOS),  a line such as the following in
        /etc/ttytab will have the same effect:
 
               ttya "/usr/local/bin/fax answer" unknown on
 
        You should protect the fax script and configuration files against  tam‐
        pering since init will execute them as a privileged (root) process.  If
        you will be allowing data calls via getty and login you  should  ensure
        that  your  system  is  reasonably secure (e.g. that all user id’s have
        secure passwords).
 
        If efax exec()’s getty properly but you get a garbled login prompt then
        there  is  probably a baud rate mismatch between the modem and the com‐
        puter.  First, check the efax log file to make sure the modem’s CONNECT
        response  reported  the  serial port speed (e.g. 19200), not the modem-
        modem speed (e.g. 14400).  Next, check the getty options and/or config‐
        uration  files  (e.g.  /etc/gettydefs)  for  that particular baud rate.
        Then run getty manually with the same arguments  and  verify  the  port
        settings  using  ‘‘stty </dev/XXX’’.  Note that you’ll probably want to
        enable hardware flow control  for  data  connections  (-h  for  agetty,
        CRTSCTS for getty_ps).
 
        A  few programs won’t work properly when efax is set up to answer calls
        because they don’t create lock files.  You can  put  the  shell  script
        ‘‘wrapper’’  below  around  such  programs  to make them work properly.
        Change BIN and LOCKF to suit.
 
               #!/bin/sh
               BIN=/bin/badprogram
               LOCKF=/var/spool/uucp/LCK..cua1
               if [ -f $LOCKF ]
               then
                       echo lock file $LOCKF exists
                       exit 1
               else
                       printf "%10d0 $$ >$LOCKF
                       $BIN $*
                       rm $LOCKF
               fi
        The "fax answer" script described above can be configured to e-mail the
        fax  files  received  by the previous fax answer process to a "fax man‐
        ager" who can then forward the  fax  to  the  correct  recipient.   The
        received  fax  files  are  send as MIME attachments, one file per page,
        using the ‘‘base64’’ text encoding and the ‘‘image/tiff’’ file  format.
 
        To  view  the fax images directly from your e-mail reader you will have
        to configure it with an application that  can  display  files  of  type
        image/tiff.   Typically  this  is specified in a ‘‘mailcap’’ file.  For
        example, placing the following line in /etc/mailcap will cause the  fax
        file attachments to be displayed using the ‘‘fax view’’ command.
 
        image/tiff; fax view %s
        You  can configure a "fax" printer into the lpr print spooler that will
        fax a document out using efax instead of printing it.   This  allows  a
        network  server running efax to send faxes on behalf of other machines,
        including non-Unix clients.  In the following steps use the directories
        specified  in  the  fax  script if they are different than /usr/bin and
        /var/spool/fax (FAXDIR).  To set up a fax printer do the  following  as
        root:
 
        (1) Create a link to the fax script called ‘‘faxlpr’’ so the fax script
        can determine when it is being invoked from the print spooler:
 
        ln -s /usr/bin/fax /usr/bin/faxlpr
 
        (2) Edit /etc/printcap and add an entry such as:
 
               fax:lp=/dev/null:sd=/var/spool/fax:if=/usr/bin/faxlpr:
 
        to define a printer called "fax".  Print files will be spooled  to  the
        /var/spool/fax  (sd=)  directory  and then piped to the /usr/bin/faxlpr
        filter (if=).  Error messages will appear on /dev/console.
 
        (3) Create and/or set the permissions to allow anyone to read and write
        in the fax spool directory.  For example:
 
               mkdir /var/spool/fax
               chmod 777 /var/spool/fax
 
        (4) Create a printer daemon lock file that is readable by anyone:
 
               touch /var/spool/fax/lock
               chmod 644 /var/spool/fax/lock
 
        You should now be able to send a fax using the lpr interface by using a
        command such as:
 
               lpr -P fax -J "555 1212" file.ps
 
        where the -J option is used to specify the phone number or alias to  be
        dialed.
 
        Note  that if more than one file is given on the command line they will
        be concatenated before being passed to "fax send".  TIFF-G3, Postscript
        or  PBM  files  must therefore be sent one file at a time although TIFF
        and Postscript files may contain multiple pages.   Only  multiple  text
        files  can  be  sent  in one command.  Page breaks in text files can be
        marked with form-feed characters.  Files will be converted and sent  at
        the default (high) resolution.
 
        You  can  use lpq(1) to check the fax queue, lprm(1) to remove fax jobs
        and lpc(8) to control the spooler.  In each case use the  -Pfax  option
        to  specify  the fax ‘‘printer.’’ A log file will be mailed to the user
        when the fax is sent.
 
        You should also be able to send a fax from any networked computer  that
        has  lpr-compatible remote printing software and that allows you to set
        the job name (-J option) to an  arbitrary  string.   Such  software  is
        available for most computers.
 
        See  the  lpd(8) and printcap(5) man pages for information on the print
        spooler and for restricting access by host name (/etc/host.lpd)  or  by
        user group (the ‘rg’ printcap entry).
        Double  check  the  configuration  setup  in  the first part of the fax
        script, particularly the modem device name and the lock file names.
 
        If  efax  hangs  when  trying  to  open  the  modem  device  (typically
        /dev/ttyX),  the  device  is  either  already in use by another process
        (e.g. pppd) or it requires the carrier detect line to be true before it
        can  be  opened.   Many systems define an alternate device name for the
        same physical device (typically  cuaX)  that  can  be  opened  even  if
        carrier is not present or other programs are already using it.
 
        If  responses to modem initialization commands are being lost or gener‐
        ated at random, another processes (e.g. getty or  an  efax  auto-answer
        process)  may be trying to use the modem at the same time.  Try running
        efax while this other program is running.   If  efax  does  not  report
        "/dev/ttyX locked or busy. waiting."  then the lock files names are not
        specified correctly.
 
        Attempt to send a fax. Check that the modem starts making  the  calling
        signal  (CNG,  a  0.5 second beep every 3 seconds) as soon as it’s fin‐
        ished dialing.  This shows the modem is in fax mode.  You may  need  to
        set the SPKR variable to -iM2L3 to monitor the phone line to do this.
 
        Listen for the answering fax machine and check that it sends the answer
        signal (CED, a 3  second  beep)  followed  by  "warbling"  sounds  (DIS
        frames)  every  3  seconds.   If  you hear a continuous sound (tones or
        noise) instead, then you’ve connected to a data modem instead.
 
        Your modem should send back its own warble (DCS frame) in  response  to
        DIS immediately followed by 1.5 seconds of noise (a channel check).  If
        everything is OK, the receiving  end  will  send  another  warble  (CFR
        frame) and your modem will start to send data.  If you have an external
        modem, check its LEDs.  If flow control is working properly the modem’s
        send  data  (SD)  LED  will turn off periodically while the fax data is
        sent.
 
        Check the message showing the line count and the average bit rate  when
        the  page transmission is done.  Low line counts (under 1000 for a let‐
        ter size image) or the warning "fax output buffer overflow" while send‐
        ing  indicate  that  the image data format is incorrect. Check the file
        being sent using the "fax view" command.
 
        If you get the error message ‘‘flow control did not  work’’  then  flow
        control was not active.  This usually results in a garbled transmission
        and the receiving machine may reject the page, abort the call, print  a
        distorted or blank image and/or hang up.
 
        The  warning "characters received while sending" or an <XOFF> character
        appearing after  the  transmission  means  that  the  operating  system
        ignored  the  modem’s XOFF flow control character.  Ensure that you are
        not running other programs such as getty or pppd at the  same  time  as
        efax since they will turn off xon/xoff flow control.
 
        If  you  cannot get flow control to work properly then enable ‘‘virtual
        flow control’’ with the -of option or hardware flow  control  with  the
        -oh option.
 
        Check  that  the  remote  machine  confirms  reception  with  a +FPTS:1
        response (Class 2) or an MCF frame (Class 1).
 
        For Class 2 modems, the error message "abnormal call termination  (code
        nn)" indicates that the modem detected an error and hung up.
 
        Many  companies  advertise  services  that will fax back information on
        their products.  These can be useful for testing fax reception.
 
        The message "run length buffer overflow" when  receiving  indicates  an
        error  with  the image data format.  You may need to use the -or option
        with certain Class 2 modems.
 
        If efax displays the message "can’t happen (<details>)" please  send  a
        bug report to the author.
 
        Finally,  don’t  play  "option bingo," if you can’t resolve the problem
        send a verbose log of the failed session (the output from fax  -v  ...)
        to the address below.
        A  Web Page with pointers to the latest version, known bugs and patches
        is available at:
 
               http://www.cce.com/efax/
        For Linux Systems
 
        Independent packages provide  more  user-friendly  interfaces  to  efax
        (xfax,  tefax)  and provide an e-mail-to-fax (Qfax) gateway using efax.
        All  are  available  by   anonymous   FTP   from   metalab.unc.edu   in
        /pub/Linux/apps/serialcomm/fax/.
 
        For Amiga Systems
 
        A port of an early version of efax for the Amiga is available as a com‐
        ponent of a shareware voice mail package, AVM, distributed by  Al  Vil‐
        larica (rvillari@cat.syr.edu).
 
        Other Ports
 
        efax  is  relatively  easy  to  port.   All system-dependent code is in
        efaxos.c.  An early version of efax was ported to  VMS.   Version  0.8a
        was  ported  to  Win32  by  Luigi Capriotti.  Contact the author if you
        would like to integrate the Win32 code into the current version.
 

AUTHOR

        Efax was written by Ed Casas.  Please send comments or bug  reports  to
        edc@cce.com.
        Bug  reports should include the operating system, the type of the modem
        and a copy of a verbose session  log  that  demonstrates  the  problem.
        It’s  usually  impossible to help without a verbose log.  Please do not
        send fax image files.
 

COPYRIGHT

        efax is copyright 1993 -- 1999 Ed Casas.  It may be  used,  copied  and
        modified under the terms of the GNU Public License.
 

DISCLAIMER

        Although  efax  has been tested it may have errors that will prevent it
        from working correctly on your system.  Some of these errors may  cause
        serious  problems including loss of data and interruptions to telephone
        service.
 

REFERENCES

        CCITT Recommendation T.30, "Procedures for Document Facsimile Transmis‐
        sion in the General Switched Telephone Network". 1988
 
        CCITT Recommendation T.4, "Standardization of Group 3 Facsimile Appara‐
        tus for Document Transmission". 1988.
 
        For documentation on Class 1 and Class 2 fax commands as implemented by
        Connexant  (formerly Rockwell) modems see http://www.conexant.com/tech‐
        info.
 
        For the TIFF  specification  see  http://partners.adobe.com/supportser‐
        vice/devrelations/PDFS/TN/TIFF6.pdf  or RFC 2301 (ftp://ftp.isi.edu/in-
        notes/rfc2301.txt).
 
        For information on Ghostscript see http://www.cs.wisc.edu/~ghost/.
 
        The pbm utilities can be obtained by ftp  from  wuarchive.wustl.edu  in
        /graphics/graphics/packages/NetPBM/netpbm-1mar1994.tar.gz.
 
        PCX and many other file formats are described in: Gunter Born, The File
        Formats Handbook, International Thomson Computer Press, 1995.
 
        The "Fax Modem Source Book" by Andrew Margolis, published by John Wiley
        & Sons in 1994 (ISBN 0471950726), is a book on writing fax applications
        which includes source code.
 
        Dennis Bodson et. al., "FAX: Digital Facsimile Technology and  Applica‐
        tions", Second Edition. Artech House, Boston. 1992.
        fax(1),  efix(1),  gs(1),  init(8), inittab(5), ttytab(5), printcap(5),
        lpd(8), printf(3), strftime(3).
 

BUGS

        Can’t read TIFF files with more than 1 strip
 
        Class 1 operation may fail if the program can’t respond to certain data
        received from the modem within 55 milliseconds.
 
        May fail if multitasking delays cause the received data to overflow the
        computer’s serial device buffer or if an  under-run  of  transmit  data
        exceeds 5 seconds.
 
        Polling does not work.
 
        Does not support 2-D coding, ECM, or BFT.