Link to home
Start Free TrialLog in
Avatar of eslindsey
eslindsey

asked on

HylaFAX with U.S. Robotics 56K FAX USB Modem

See also: https://www.experts-exchange.com/questions/23690292/USB-modem-with-hylafax-redhat-ES5-waiting-for-modem-to-come-ready.html

I am having the exact same problem with the exact same results, except I have a bank of 4 modems plugged in to my server that respond fine from minicom but not with HylaFAX.  I have tried creating a configuration file for the modems per the instructions (which I attached to this question as a "code snippet").  Sadly, faxaddmodem does not seem to be using this file (as indicated by the line "Using prototype configuration file usr-xon...").  I have included the entire command history from my faxaddmodem command, as well as the responses from ATI0 through ATI11.  You can find some other related links in the E-E article above.  Another note, to make debugging easier I created a symbolic link from /dev/modem -> /dev/ttyACM0.  This makes using minicom easier.

[root@server config]# faxaddmodem
Serial port that modem is connected to []? ttyACM0

Ok, time to setup a configuration file for the modem.  The manual
page config(5F) may be useful during this process.  Also be aware
that at any time you can safely interrupt this procedure.

Reading scheduler config file /var/spool/hylafax/etc/config.

No existing configuration, let's do this from scratch.

Country code [1]?
Area code [239]?
Phone number of fax modem [+1.999.555.1212]? +0.000.000.0000
Local identification string (for TSI/CIG) ["NothingSetup"]? MCVsoft Fax Service
Long distance dialing prefix [1]?
International dialing prefix [011]?
Dial string rules file (relative to /var/spool/hylafax) [etc/dialrules]?
Tracing during normal server operation [1]?
Tracing during send and receive sessions [0xFFF]?
Protection mode for received facsimile [0600]? 0644
Protection mode for session logs [0600]? 0644
Protection mode for ttyACM0 [0600]?
Rings to wait before answering [1]?
Modem speaker volume [off]? high
Command line arguments to getty program ["-h %l dx_%s"]?
Pathname of TSI access control list file (relative to /var/spool/hylafax) [""]?
Tag line font file (relative to /var/spool/hylafax) [etc/lutRS18.pcf]?
Tag line format string ["From %%l|%c|Page %%P of %%T"]?
Time before purging a stale UUCP lock file (secs) [30]?
Hold UUCP lockfile during inbound data calls [Yes]?
Hold UUCP lockfile during inbound voice calls [Yes]?
Percent good lines to accept during copy quality checking [95]?
Max consecutive bad lines to accept during copy quality checking [5]?
Max number of pages to accept in a received facsimile [25]? 250
Syslog facility name for ServerTracing messages [daemon]?
Set UID to 0 to manipulate CLOCAL [""]?
Use available priority job scheduling mechanism [""]?

Your facsimile phone number (+0.000.000.0000) does not agree with your
country code (1) or area code (239).  The number
should be a fully qualified international dialing number of the form:

    +1 239 <local phone number>

Spaces, hyphens, and periods can be included for legibility.  For example,

    +1.239.555.1212

is a possible phone number (using your country and area codes).

The non-default server configuration parameters are:

CountryCode:            1
AreaCode:               239
FAXNumber:              +0.000.000.0000
LongDistancePrefix:     1
InternationalPrefix:    011
DialStringRules:        etc/dialrules
RecvFileMode:           0644
LogFileMode:            0644
RingsBeforeAnswer:      1
SpeakerVolume:          high
GettyArgs:              "-h %l dx_%s"
LocalIdentifier:        MCVsoft Fax Service
TagLineFont:            etc/lutRS18.pcf
TagLineFormat:          "From %%l|%c|Page %%P of %%T"
MaxRecvPages:           250

Are these ok [yes]?

Now we are going to probe the tty port to figure out the type
of modem that is attached.  This takes a few seconds, so be patient.
Note that if you do not have the modem cabled to the port, or the
modem is turned off, this may hang (just go and cable up the modem
or turn it on, or whatever).

Probing for best speed to talk to modem: 38400 OK.

About fax classes:

The difference between fax classes has to do with how HylaFAX interacts
with the modem and the fax protocol features that are used when sending
or receiving faxes.  One class isn't inherently better than another;
however, one probably will suit a user's needs better than others.

Class 1 relies on HylaFAX to perform the bulk of the fax protocol.
Class 2 relies on the modem to perform the bulk of the fax protocol.
Class 2.0 is similar to Class 2 but may include more features.
Class 1.0 is similar to Class 1 but may add V.34-fax capability.
Class 2.1 is similar to Class 2.0 but adds V.34-fax capability.

HylaFAX generally will have more features when using Class 1/1.0 than
when using most modems' Class 2 or Class 2.0 implementations.  Generally
any problems encountered in Class 1/1.0 can be resolved by modifications
to HylaFAX, but usually any problems encountered in Class 2/2.0/2.1 will
require the modem manufacturer to resolve it.

Use Class 1 unless you have a good reason not to.

Hmm, this looks like a Class 1 modem.
Product code (ATI0) is "5601".
Other information (ATI3) is "U.S. Robotics 56K FAX USB V1.1.0".
DTE-DCE flow control scheme [default]?
Modem manufacturer is "3Com U. S. Robotics".
Modem model is "3CP5610".

Using prototype configuration file usr-xon...

The modem configuration parameters are:

ModemAnswerCmd:         AT+FCLASS=1A
ModemFlowControl:       xonxoff
ModemHardFlowCmd:       AT&H1&I0&R2
ModemMfrQueryCmd:       !USR
ModemModelQueryCmd:     ATI3
ModemNoFlowCmd:         AT&H0&I0&R1
ModemRate:              19200
ModemResultCodesCmd:    ATQ0X4
ModemRevQueryCmd:       ATI7
ModemSetupAACmd:        AT+FCLASS=0
ModemSetupDCDCmd:       AT&C1
ModemSetupDTRCmd:       ATS13=1&D2
ModemSoftFlowCmd:       AT&H2&I2&R1
Class1NFLOCmd:          AT&H0&I0&R1
Class1HFLOCmd:          AT&H1&I0&R2
Class1SFLOCmd:          ""
Class1SwitchingCmd:     "<delay\0727>"

Are these ok [yes]?

Creating new configuration file /var/spool/hylafax/etc/config.ttyACM0...
Done setting up the modem configuration.

Checking /var/spool/hylafax/etc/config for consistency...
...everything looks ok; leaving existing file unchanged.

Don't forget to run faxmodem(8C) (if you have a send-only environment)
or configure init to run faxgetty on ttyACM0.

[root@server ~]# minicom
minicom: WARNING: configuration file not found, using defaults

Welcome to minicom 2.1

OPTIONS: History Buffer, F-key Macros, Search History Buffer, I18n
Compiled on Jan  7 2007, 01:16:05.

Press CTRL-A Z for help on special keys

AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
OK
ATI0
5601

OK
ATI1
E7C4

OK
ATI2
OK
ATI3
U.S. Robotics 56K FAX USB V1.1.0

OK
ATI4

 ----Option----- --Setting-- Cmd  ----Option----- --Setting-- --Cmd--
 Comm Standard   CCITT       B0   Answer Ring#    0            S0=000
 Command Echo    Enabled     E1   Escape Char     43           S2=043
 Speaker Volume  Low         L1   CR Char         13           S3=013
 Speaker Control OnUntilCD   M1   LF Char         10           S4=010
 Result Codes    Enabled     Q0   BS Char         8            S5=008
 Dialer Type     Tone        T/P  Dial Pause      3 sec        S6=003
 Result Form     Text        V1   NoAns Timeout   45 sec       S7=045
 Extend Result   Enabled     X4   "," Pause       2 sec        S8=002
 DialTone Detect Enabled     X4   No CD Disc      2000 msec   S10=020
 BusyTone Detect Enabled     X4   DTMF Speed      95 msec     S11=095
 DCD Action      Std RS232   &C1  Esc GuardTime   1000 msec   S12=050
 DTR Action      Std RS232   &D2  Calling Tone    Enabled     S35=001
 V22b Guard Tone Disabled    &G0  Line Rate       33600       S37=000
 Flow Control    Hardware    &H1
 Error Control   V42,MNP,Bfr &M4
 Compression     44 42b MNP5 &K1

OK
ATI5

 ----Option----- --Setting-- Cmd  ----Option----- --Setting-- --Cmd--
 Comm Standard   CCITT       B0   Answer Ring#    0            S0=000
 Command Echo    Enabled     E1   Escape Char     43           S2=043
 Speaker Volume  Medium      L2   CR Char         13           S3=013
 Speaker Control OnUntilCD   M1   LF Char         10           S4=010
 Result Codes    Enabled     Q0   BS Char         8            S5=008
 Dialer Type     Tone        T/P  Dial Pause      3 sec        S6=003
 Result Form     Text        V1   NoAns Timeout   60 sec       S7=060
 Extend Result   Enabled     X4   "," Pause       2 sec        S8=002
 DialTone Detect Enabled     X4   No CD Disc      2000 msec   S10=020
 BusyTone Detect Enabled     X4   DTMF Speed      95 msec     S11=095
 DCD Action      Std RS232   &C1  Esc GuardTime   1000 msec   S12=050
 DTR Action      Std RS232   &D2  Calling Tone    Enabled     S35=001
 V22b Guard Tone Disabled    &G0  Line Rate       33600       S37=000
 Flow Control    Hardware    &H1  &Z0=
 Error Control   V42,MNP,Bfr &M4  &Z1=
 Compression     44 42b MNP5 &K1  &Z2=

OK
ATI6

 U.S. Robotics 56K FAX USB Link Diagnostics...


 Blocks Sent                         NA
 Blocks Resent                       NA
 Blocks Received                     NA
 Blers                               NA
 Retrains Requested                  NA
 Retrains Granted                    NA
 Data Compression                    NA
 Protocol                            NA
 Initial Transmit Speed              NA
 Initial Receive  Speed              NA
 Final   Transmit Speed              NA
 Final   Receive  Speed              NA
 Last Call                (hh:mm:ss) 00:00:00
 Disconnect Reason                   0

OK
ATI7
Configuration Profile...

Product Type           US/Canada USB
Product ID:            USR5637
Options                V32bis,V.80,V.34+,V.90,V.92
Error Correction       MNP,V.42
Data Compression       MNP5,V.42bis,V.44
Fax Options            Class 1
Line Options           Caller ID

Flash Date             01/30/2008
Flash Rev              1.1.0

OK
ATI8
OK
ATI9
(01.00HSM0A00\\MODEM \PNP0303\U.S.Robotics V.92 USB Modem23)

OK
ATI10
ERROR
ATI11

 U.S. Robotics 56K FAX USB Extended Link Diagnostics...

 Modulation                          Failure
 Receive Level                (-dBm) NA
 Transmit Level               (-dBm) NA
 Near Echo Loss               (-dBm) NA
 Far  Echo Loss               (-dBm) NA
 Round Trip Delay             (msec) NA
 SNR                                 NA
 Speed Shifts Requested              NA
 Speed Shifts Granted                NA
 RBS Pattern                         NA
 Digital Pad Loss               (dB) NA

OK


# $Id: usr-56k-fax-usb,v 1.0 2009/04/14 17:04:32 elindsey Exp $
#
# HylaFAX Facsimile Software
#
# Copyright (c) 1990-1996 Sam Leffler
# Copyright (c) 1991-1996 Silicon Graphics, Inc.
# HylaFAX is a trademark of 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.
#
 
# CONFIG:CLASS1:"5601":"U.S. Robotics 56K FAX USB V1.1.0":RTSCTS: Manufacturer='U.S. Robotics' Model='56K USB Faxmodem'
#
# BEGIN-SERVER
# END-SERVER
#
 
ModemAnswerCmd:                 ATA     # string, command for answering phone
ModemAnswerDataBeginCmd:        ""      # string, command for start of answered data call
ModemAnswerDataCmd:             ATA     # string, command for answering data call
ModemAnswerFaxBeginCmd:         ""      # string, command for start of answered fax call
ModemAnswerFaxCmd:              ATA     # string, command for answering fax call
ModemAnswerResponseTimeout:     180000  # integer, answer command timeout (ms)
ModemAnswerVoiceBeginCmd:       ""      # string, command for start of answered voice call
ModemAnswerVoiceCmd:            ATA     # string, command for answering voice call
ModemATCmdDelay:                0       # integer, delay before sending modem an AT cmd (ms)
ModemBaudRateDelay:             0       # integer, delay (ms) after setting baud rate
ModemClassQueryCmd:             AT+FCLASS=?     # string, command for querying modem services
ModemCommaPauseTimeCmd:         ATS8=2  # string, command for setting time to pause for comma in dialing string
ModemDialCmd:                   ATDT%s  # string, command for dialing (%s for number to dial)
ModemDialResponseTimeout:       180000  # integer, dialing command timeout (ms)
ModemEchoOffCmd:                ATE0    # string, command for disabling command echo
ModemFlowControl:               None    # string, DTE-DCE flow control scheme
ModemFrameFillOrder:            LSB2MSB # string, bit order for HDLC frames
ModemHardFlowCmd:               ""      # string, command for setting hardware flow control between DTE and DCE
ModemMinSpeed:                  2400    # string, minimum acceptable transmit speed
ModemMfrQueryCmd:               ""      # string, command for querying modem manufacturer
ModemModelQueryCmd:             ""      # string, command for querying modem model
ModemNoAutoAnswerCmd:           ATS0=0  # string, command for disabling auto-answer
ModemNoFlowCmd:                 ""      # string, command for disabling hardware flow control between DTE and DCE
ModemOnHookCmd:                 ATH0    # string, command for placing phone ``on hook''
ModemPageDoneTimeout:           180000  # integer, page send/receive timeout (ms)
ModemPageStartTimeout:          180000  # integer, page send/receive timeout (ms)
ModemRate:                      19200   # integer, baud rate to use for DCE-DTE communication
ModemRecvFillOrder:             LSB2MSB # string, bit order for received facsimile data
ModemResetCmds:                 ""      # string, additional commands when resetting modem
ModemResetDelay:                2600    # integer, delay (ms) after sending modem reset commands
ModemResultCodesCmd:            ATQ0    # string, command for enabling result codes
ModemRevQueryCmd:               ""      # string, command for querying modem firmware revision
ModemSendBeginCmd:              ""      # string, command to send on establishing carrier
ModemSendFillOrder:             LSB2MSB # string, bit order for sending facsimile data
ModemSetVolumeCmd:              "ATM0 ATL0M1 ATL8C1 ATL2M1 ATL3M1"      # string, commands for setting modem speaker volume level
ModemSetupAACmd:                ""      # string, command for setting up adaptive answer
ModemSetupDCDCmd:               ""      # string, command for setting up DCD handling
ModemSetupDTRCmd:               ""      # string, command for setting up DTR handling
ModemSoftFlowCmd:               ""      # string, command for setting software flow control between DTE and DCE
ModemSoftResetCmd:              ATZ     # string, command for doing a soft reset
ModemType:                      Class1  # string, modem type
ModemVerboseResultsCmd:         ATV1    # string, command for enabling verbose result codes
ModemWaitForConnect:            No      # boolean, force server to wait for ``CONNECT'' response on answer
ModemWaitTimeCmd:               ATS7=60 # string, command for setting time to wait for carrier when dialing
 
Class1Cmd:                      AT+FCLASS=1     # string, command to enter class 1
Class1HFLOCmd:                  AT+FL0=2        # string, command to set hardware flow control
Class1FrameOverhead:            4       # integer, extra bytes in a received HDLC frame
Class1NFLOCmd:                  AT+FL0=0        # string, command to set no flow control
Class1RecvAbortOK:              100     # integer, max wait (ms) for ``OK'' after recv abort
Class1RecvIdentTimer:           35000   # integer, max wait (ms) for initial ident frame
Class1SFLOCmd:                  AT+FL0=1        # string, command to set software flow control
Class1TCFMaxNonZero:            10      # integer, max% of non-zero data in good TCF
Class1TCFMinRun:                1000    # integer, minimum zero run in good TCF
Class1TCFRecvTimeout:           4500    # integer, max wait (ms) for TCF
Class1TCFResponseDelay:         75      # integer, delay between TCF and ack/nak
Class1SendPPMDelay:             75      # integer, delay before sending post-page message
Class1SendTCFDelay:             75      # integer, delay between sending DCS and TCF
Class1TrainingRecovery:         1500    # integer, delay after failed training

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of LunarNRG
LunarNRG
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of eslindsey
eslindsey

ASKER

You're right, I was not able to see that comment.  So I altered my config file as you suggested, and deleted the config.ttyACM0 file that faxaddmodem created last time (forcing it to recreate from scratch), and when it prompted me I responded:
DTE-DCE flow control scheme [default]? RTSCTS

At which point it replied with:
Modem manufacturer is "3Com U. S. Robotics".
Modem model is "3CP5610".
Using prototype configuration file usr-rts...

So it seems that it still is not using the config file I created for it, and I can't figure out why.  I did finally get it using my config file by changing my #CONFIG line to match the one that came with the usr-rts file:
# CONFIG:CLASS1:"5601":"U.S. Robotics 56K FAX USB V1.1.0":RTSCTS: Manufacturer='U.S. Robotics' Model='56K USB Faxmodem'
changed to
# CONFIG:CLASS1:5601:.*:RTSCTS: Manufacturer=USRobotics Model="56K USB Faxmodem"

Then when I ran faxaddmodem, it said:
Using prototype configuration file usr-56k-fax-usb...
as expected.

And guess what?!  Now when I restarted hylafax service and it restarted faxgetty, I run faxstat and get:
Modem ttyACM0 (+0.000.000.0000): Running and idle

Bravo!  Now, I just need to figure out access controls and how to get hylafax to perform advanced routing based on original destination fax number... That's my next challenge.  But kudos for helping me get around this one!

For anyone that may find it useful, I have attached the final config file that I created that allows Hylafax to communicate with my U.S. Robotics 56k USB FAX Modem.
# $Id: usr-56k-fax-usb,v 1.0 2009/04/14 17:04:32 elindsey Exp $
#
# HylaFAX Facsimile Software
#
# Copyright (c) 1990-1996 Sam Leffler
# Copyright (c) 1991-1996 Silicon Graphics, Inc.
# HylaFAX is a trademark of 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.
#
 
# CONFIG:CLASS1:5601:.*:RTSCTS: Manufacturer=USRobotics Model="56K USB Faxmodem"
#
# BEGIN-SERVER
# END-SERVER
#
 
ModemAnswerCmd:                 ATA     # string, command for answering phone
ModemAnswerDataBeginCmd:        ""      # string, command for start of answered data call
ModemAnswerDataCmd:             ATA     # string, command for answering data call
ModemAnswerFaxBeginCmd:         ""      # string, command for start of answered fax call
ModemAnswerFaxCmd:              ATA     # string, command for answering fax call
ModemAnswerResponseTimeout:     180000  # integer, answer command timeout (ms)
ModemAnswerVoiceBeginCmd:       ""      # string, command for start of answered voice call
ModemAnswerVoiceCmd:            ATA     # string, command for answering voice call
ModemATCmdDelay:                0       # integer, delay before sending modem an AT cmd (ms)
ModemBaudRateDelay:             0       # integer, delay (ms) after setting baud rate
ModemClassQueryCmd:             AT+FCLASS=?     # string, command for querying modem services
ModemCommaPauseTimeCmd:         ATS8=2  # string, command for setting time to pause for comma in dialing string
ModemDialCmd:                   ATDT%s  # string, command for dialing (%s for number to dial)
ModemDialResponseTimeout:       180000  # integer, dialing command timeout (ms)
ModemEchoOffCmd:                ATE0    # string, command for disabling command echo
ModemFlowControl:               RTSCTS  # string, DTE-DCE flow control scheme
ModemFrameFillOrder:            LSB2MSB # string, bit order for HDLC frames
ModemHardFlowCmd:               ""      # string, command for setting hardware flow control between DTE and DCE
ModemMinSpeed:                  2400    # string, minimum acceptable transmit speed
ModemMfrQueryCmd:               ""      # string, command for querying modem manufacturer
ModemModelQueryCmd:             ""      # string, command for querying modem model
ModemNoAutoAnswerCmd:           ATS0=0  # string, command for disabling auto-answer
ModemNoFlowCmd:                 ""      # string, command for disabling hardware flow control between DTE and DCE
ModemOnHookCmd:                 ATH0    # string, command for placing phone ``on hook''
ModemPageDoneTimeout:           180000  # integer, page send/receive timeout (ms)
ModemPageStartTimeout:          180000  # integer, page send/receive timeout (ms)
ModemRate:                      19200   # integer, baud rate to use for DCE-DTE communication
ModemRecvFillOrder:             LSB2MSB # string, bit order for received facsimile data
ModemResetCmds:                 ""      # string, additional commands when resetting modem
ModemResetDelay:                2600    # integer, delay (ms) after sending modem reset commands
ModemResultCodesCmd:            ATQ0    # string, command for enabling result codes
ModemRevQueryCmd:               ""      # string, command for querying modem firmware revision
ModemSendBeginCmd:              ""      # string, command to send on establishing carrier
ModemSendFillOrder:             LSB2MSB # string, bit order for sending facsimile data
ModemSetVolumeCmd:              "ATM0 ATL0M1 ATL8C1 ATL2M1 ATL3M1"      # string, commands for setting modem speaker volume level
ModemSetupAACmd:                ""      # string, command for setting up adaptive answer
ModemSetupDCDCmd:               ""      # string, command for setting up DCD handling
ModemSetupDTRCmd:               ""      # string, command for setting up DTR handling
ModemSoftFlowCmd:               ""      # string, command for setting software flow control between DTE and DCE
ModemSoftResetCmd:              ATZ     # string, command for doing a soft reset
ModemType:                      Class1  # string, modem type
ModemVerboseResultsCmd:         ATV1    # string, command for enabling verbose result codes
ModemWaitForConnect:            No      # boolean, force server to wait for ``CONNECT'' response on answer
ModemWaitTimeCmd:               ATS7=60 # string, command for setting time to wait for carrier when dialing
 
Class1Cmd:                      AT+FCLASS=1     # string, command to enter class 1
Class1HFLOCmd:                  AT+FL0=2        # string, command to set hardware flow control
Class1FrameOverhead:            4       # integer, extra bytes in a received HDLC frame
Class1NFLOCmd:                  AT+FL0=0        # string, command to set no flow control
Class1RecvAbortOK:              100     # integer, max wait (ms) for ``OK'' after recv abort
Class1RecvIdentTimer:           35000   # integer, max wait (ms) for initial ident frame
Class1SFLOCmd:                  AT+FL0=1        # string, command to set software flow control
Class1TCFMaxNonZero:            10      # integer, max% of non-zero data in good TCF
Class1TCFMinRun:                1000    # integer, minimum zero run in good TCF
Class1TCFRecvTimeout:           4500    # integer, max wait (ms) for TCF
Class1TCFResponseDelay:         75      # integer, delay between TCF and ack/nak
Class1SendPPMDelay:             75      # integer, delay before sending post-page message
Class1SendTCFDelay:             75      # integer, delay between sending DCS and TCF
Class1TrainingRecovery:         1500    # integer, delay after failed training

Open in new window

My configuration file was not correct, as I discovered when I tried to send a fax out.  I got the flow control command wrong, it is AT+FLO, not AT+FL0 (damn those O's and 0's!).  Also, I added a few parameters to support Caller ID.  Here is an updated, (hopefully) correct file:
# $Id: usr-56k-fax-usb,v 1.0 2009/04/14 17:04:32 elindsey Exp $
#
# HylaFAX Facsimile Software
#
# Copyright (c) 1990-1996 Sam Leffler
# Copyright (c) 1991-1996 Silicon Graphics, Inc.
# HylaFAX is a trademark of 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.
#
 
# CONFIG:CLASS1:5601:.*:RTSCTS: Manufacturer=USRobotics Model="56K USB Faxmodem"
#
# BEGIN-SERVER
# END-SERVER
#
 
ModemAnswerCmd:                 "ATA"           # string, command for answering phone
ModemAnswerDataBeginCmd:        ""              # string, command for start of answered data call
ModemAnswerDataCmd:             "ATA"           # string, command for answering data call
ModemAnswerFaxBeginCmd:         ""              # string, command for start of answered fax call
ModemAnswerFaxCmd:              "ATA"           # string, command for answering fax call
ModemAnswerResponseTimeout:     180000          # integer, answer command timeout (ms)
ModemAnswerVoiceBeginCmd:       ""              # string, command for start of answered voice call
ModemAnswerVoiceCmd:            "ATA"           # string, command for answering voice call
ModemATCmdDelay:                0               # integer, delay before sending modem an AT cmd (ms)
ModemBaudRateDelay:             0               # integer, delay (ms) after setting baud rate
ModemClassQueryCmd:             "AT+FCLASS=?"   # string, command for querying modem services
ModemCommaPauseTimeCmd:         "ATS8=2"        # string, command for setting time to pause for comma in dialing string
ModemDialCmd:                   "ATDT%s"        # string, command for dialing (%s for number to dial)
ModemDialResponseTimeout:       180000          # integer, dialing command timeout (ms)
ModemEchoOffCmd:                "ATE0"          # string, command for disabling command echo
ModemFlowControl:               "RTSCTS"        # string, DTE-DCE flow control scheme
ModemFrameFillOrder:            "LSB2MSB"       # string, bit order for HDLC frames
ModemHardFlowCmd:               ""              # string, command for setting hardware flow control between DTE and DCE
ModemMinSpeed:                  2400            # string, minimum acceptable transmit speed
ModemMfrQueryCmd:               ""              # string, command for querying modem manufacturer
ModemModelQueryCmd:             ""              # string, command for querying modem model
ModemNoAutoAnswerCmd:           "ATS0=0"        # string, command for disabling auto-answer
ModemNoFlowCmd:                 ""              # string, command for disabling hardware flow control between DTE and DCE
ModemOnHookCmd:                 "ATH0"          # string, command for placing phone ``on hook''
ModemPageDoneTimeout:           180000          # integer, page send/receive timeout (ms)
ModemPageStartTimeout:          180000          # integer, page send/receive timeout (ms)
ModemRate:                      19200           # integer, baud rate to use for DCE-DTE communication
ModemRecvFillOrder:             "LSB2MSB"       # string, bit order for received facsimile data
ModemResetCmds:                 "AT#CID=1"      # string, additional commands when resetting modem
ModemResetDelay:                2600            # integer, delay (ms) after sending modem reset commands
ModemResultCodesCmd:            "ATQ0"          # string, command for enabling result codes
ModemRevQueryCmd:               ""              # string, command for querying modem firmware revision
ModemSendBeginCmd:              ""              # string, command to send on establishing carrier
ModemSendFillOrder:             "LSB2MSB"       # string, bit order for sending facsimile data
ModemSetVolumeCmd:              "ATM0 ATL0M1 ATL8C1 ATL2M1 ATL3M1"      # string, commands for setting modem speaker volume level
ModemSetupAACmd:                ""              # string, command for setting up adaptive answer
ModemSetupDCDCmd:               ""              # string, command for setting up DCD handling
ModemSetupDTRCmd:               ""              # string, command for setting up DTR handling
ModemSoftFlowCmd:               ""              # string, command for setting software flow control between DTE and DCE
ModemSoftResetCmd:              "ATZ"           # string, command for doing a soft reset
ModemType:                      "Class1"        # string, modem type
ModemVerboseResultsCmd:         "ATV1"          # string, command for enabling verbose result codes
ModemWaitForConnect:            No              # boolean, force server to wait for ``CONNECT'' response on answer
ModemWaitTimeCmd:               "ATS7=60"       # string, command for setting time to wait for carrier when dialing
 
Class1Cmd:                      "AT+FCLASS=1"   # string, command to enter class 1
Class1HFLOCmd:                  "AT+FLO=2"      # string, command to set hardware flow control
Class1FrameOverhead:            4               # integer, extra bytes in a received HDLC frame
Class1NFLOCmd:                  "AT+FLO=0"      # string, command to set no flow control
Class1RecvAbortOK:              100             # integer, max wait (ms) for ``OK'' after recv abort
Class1RecvIdentTimer:           35000           # integer, max wait (ms) for initial ident frame
Class1SFLOCmd:                  "AT+FLO=1"      # string, command to set software flow control
Class1TCFMaxNonZero:            10              # integer, max% of non-zero data in good TCF
Class1TCFMinRun:                1000            # integer, minimum zero run in good TCF
Class1TCFRecvTimeout:           4500            # integer, max wait (ms) for TCF
Class1TCFResponseDelay:         75              # integer, delay between TCF and ack/nak
Class1SendPPMDelay:             75              # integer, delay before sending post-page message
Class1SendTCFDelay:             75              # integer, delay between sending DCS and TCF
Class1TrainingRecovery:         1500            # integer, delay after failed training
 
CallIDPattern:                  "NMBR="
CallIDPattern:                  "NAME="

Open in new window

I have installed and support a few Hylafax servers.  I have tried to use US Robotics modems on USB->Serial adapters and had similar problems.  I even was able to get Hylafax and faxgetty to appear to work fine.  They would even receive a one page fax, but then fail to receive the second page or fail to reset properly.  

After doing some digging (and personal experience), I have found that the USB to Serial drivers in Linux do a pretty good job for many serial devices, but seem to struggle with the flow requirements that faxing demands (some of them even block the Cisco break key for entering into the RMON prompt).  I ended up returning the USB-Serial devices and installed PCI-Serial cards and all works wonderfully now.  

Another option that I am using is one of Digi's C/Con devices  This will give you a large number of serial ports to use and only use up one PCI slot.
I have been using the USB modems without trouble for some time now. I don't bother with serial ports or adapters. The native USB modem drivers that come with my version of CentOS are working perfectly. I just needed the correct configuration file to tell Hylafax what commands to send.