Reference

config(5hylafax)

HylaFAX configuration database

NAME

config - HylaFAX configuration database

DESCRIPTION

HylaFAX uses a configuration file for the central queueing agent and for each facsimile modem attached to a machine. These files contain information about the modems and about how the HylaFAX server processes that service these modem should operate. Configuration files are located in the etc subdirectory. The configuration file for the faxq(8) program is named config. The per-modem configuration files used by the faxgetty(8), faxsend(8), and pagesend(8) programs have names of the form config.devid, where devid is an identifier derived from the name of the modem's device file; for example ttym2 for /dev/ttym2, term_10 for /dev/term/10.

Configuration files have a simple format and are entirely ASCII. A configuration parameter is of the form

tag: value

where a tag identifies a parameter and a value is either a string, number, or boolean value. Comments are introduced by the ``#'' character and extend to the end of the line. String values start at the first non-blank character after the ``:'' and continue to the first non-whitespace character or, if whitespace is to be included, may be enclosed in quote marks (``"''). String values enclosed in quote marks may also use the standard C programming conventions for specifying escape codes; e.g. ``\n'' for a newline character and ``\xxx'' for an octal value. Numeric values are specified according to the C programming conventions (leading ``0x'' for hex, leading ``0'' for octal, otherwise decimal), except for a few parameters, such as RecvFileMode, whose value is interpreted strictly as an octal number and PageChopThreshold whose value is interpreted strictly as a floating point number. Boolean values are case insensitive. For a true value, either ``Yes'' or ``On'' should be used. For a false value, use ``No'' or ``Off''.

The following table itemizes the tags and the expected type of their value. The first part lists items specific to the operation of each server, while the second part has items related to the servicing of the modem. Parameters marked with a † are used only by the HylaFAX scheduler process and should appear only in the file named config. Parameters marked with a ‡ are used by both the scheduler and the per-device applications and so should appear in all appropriate configuration files (i.e. config and any per-device files that make sense). Parameters not otherwise marked should appear only in per-device configuration files. More detailed information about each item is given following the table.

Tag	Type	Default	Description
AdaptiveAnswer	boolean	No	enable adaptive answer of inbound calls
AnswerRotary	string	Any	alternatives for answering calls
AnswerBias	integer	-	bias to apply to successful rotary answer 
AreaCode‡	string	-	local area code
CIDName	string	-	Caller ID name pattern string
CIDNumber	string	-	Caller ID number pattern string
ClocalAsRoot	boolean	No	set CLOCAL using root UID
ContCoverCmd†	string	bin/mkcover	continuation cover page generation script
ContCoverPage†	string	-	continuation cover page template filename
CountryCode‡	string	-	local country code
DestControls†	string	-	per-destination controls file
DeviceMode	octal	600	protection mode to use for modem device
DialStringRules‡	string	-	dial string rules file
FAXNumber	string	-	facsimile modem phone number
FaxRcvdCmd	string	bin/faxrcvd	notification script for received facsimile
GettyArgs	string	-	arguments passed to getty program
InternationalPrefix‡	string	-	dialing prefix for international calls
JobReqBusy	integer	80	requeue interval for BUSY dial result
JobReqDataConn	integer	00	requeue interval for data connection dial result
JobReqNoAnswer	integer	00	requeue interval for NO ANSWER dial result
JobReqNoCarrier	integer	00	requeue interval for NO CARRIER dial result
JobReqNoFCon	integer	00	requeue interval for carrier without +FCON dial result
JobReqOther‡	integer	00	requeue interval for ``other'' problems
JobReqProto	integer	0	requeue interval after fax protocol error
LockDataCalls	boolean	Yes	lock modem for the duration of an inbound data call
LockVoiceCalls	boolean	Yes	lock modem for the duration of an inbound voice call
LogFacility‡	string	daemon	syslog facility name for ServerTracing messages
LogFileMode	octal	600	protection mode to use for session log files
LocalIdentifier	string	-	local station identification string
LongDistancePrefix	string	-	dialing prefix for long distance calls
MaxConcurrentJobs†	integer		max concurrent jobs to process for a destination
MaxConsecutiveBadLines	integer		max consecutive bad rows for OK page quality
MaxDials†	integer	2	max phone calls to make to transmit a job
MaxRecvPages	integer	unlimited	max pages to permit in a receive
MaxSendPages†	integer	unlimited	max pages to permit in a send
MaxSetupAttempts	integer		max attempts to initialize a modem
MaxTries†	integer		max attempts to transmit a job
ModemClass†	string	-	define a name for a set of modems
ModemPriority	integer	255	scheduling priority for outbound jobs
ModemReadyState	string	R	``ready state'' sent by faxgetty
NoCarrierRetrys	integer		number of times to retry dialing on ``NO CARRIER''
NotifyCmd‡	string	bin/notify	user notification command script
PageChop†	string	last	control automatic truncation of trailing whitespace
PageChopThreshold†	float	.0	whitespace truncation threshold (inches)
PCL2FaxCmd†	string	bin/pcl2fax	PCL RIP command script
PercentGoodLines	integer	5	percentage of good rows for OK page quality
PollLockWait‡	integer	0	polling interval when in ``lock wait'' state (secs)
PollModemWait	integer	0	polling interval when in ``modem wait'' state (secs)
PollRcvdCmd	string	bin/pollrcvd	delivery script for facsimile received by polling
PostScriptTimeout†	integer	00	timeout on POSTSCRIPT interpreter runs (secs)
PS2FaxCmd†	string	bin/ps2fax	POSTSCRIPT RIP command script
QualifyCID	string	-	file of Caller-ID patterns for checking inbound calls
QualifyTSI	string	-	file of TSI patterns for qualifying senders
RecvDataFormat	string	adaptive	format for received facsimile data
RecvFileMode	octal	600	protection mode to use for received facsimile files
RingData	string	-	distinctive ring data call identifier
RingFax	string	-	distinctive ring fax call identifier
RingsBeforeAnswer	integer		rings to wait before answering phone
RingVoice	string	-	distinctive ring voice call identifier
SendFaxCmd†	string	bin/faxsend	fax transmit command script
SendPageCmd†	string	bin/pagesend	pager transmit command script
SendUUCPCmd†	string	bin/uucpsend	UUCP transmit command script
ServerTracing‡	integer		non-session server tracing
SessionTracing‡	integer		send and receive session tracing
SpeakerVolume	string	Quiet	volume level for modem speaker
TagLineFont	string	-	tag line font filename
TagLineFormat	string	see below	tag line format string
TIFF2FaxCmd†	string	bin/tiff2fax	TIFF converter command script
TimeOfDay†	string	Any	default time-of-day restrictions
Use2D†	boolean	Yes	restrict/permit use of 2D-encoded fax data
UUCPLockMode‡	octal	600	protection mode for UUCP lock files
UUCPLockDir‡	string	see below	UUCP lockfile directory
UUCPLockTimeout‡	integer	0	time before removing stale UUCP lockfile
UUCPLockType‡	string	see below	UUCP lockfile type
VGettyArgs	string	-	arguments passed to voice getty program
WedgedCmd†	string	bin/wedged	command to run when modem is wedged

ModemAnswerCmd	string	ATA	command for answering phone
ModemAnswerDataBeginCmd	string	-	command for start of answered data call
ModemAnswerDataCmd	string	ATA	command for answering data call
ModemAnswerFaxBeginCmd	string	-	command for start of answered fax call
ModemAnswerFaxCmd	string	ATA	command for answering fax call
ModemAnswerResponseTimeout	integer	80000	answer command timeout (ms)
ModemAnswerVoiceBeginCmd	string	-	command for start of answered voice call
ModemAnswerVoiceCmd	string	ATA	command for answering voice call
ModemATCmdDelay	integer		delay before sending modem an AT cmd (ms)
ModemBaudRateDelay	integer		delay (ms) after setting baud rate
ModemClassQueryCmd	string	AT+FCLASS=?	command for querying modem services
ModemCommaPauseTimeCmd	string	ATS8=2	command for setting time to pause for ``,'' in dialing string
ModemDialCmd	string	ATDT%s	command for dialing (%s for number to dial)
ModemDialResponseTimeout	integer	80000	dialing command timeout (ms)
ModemEchoOffCmd	string	ATE0	command for disabling command echo
ModemFlowControl	string	None	DTE-DCE flow control scheme
ModemFrameFillOrder	string	LSB2MSB	bit order for HDLC frames
ModemHardFlowCmd	string	-	command for setting hardware flow control between DTE and DCE
ModemMinSpeed	string	400	minimum acceptable transmit speed
ModemMfrQueryCmd	string	-	command for querying modem manufacturer
ModemModelQueryCmd	string	-	command for querying modem model
ModemNoAutoAnswerCmd	string	ATS0=0	command for disabling auto-answer
ModemNoFlowCmd	string	-	command for disabling hardware flow control between DTE and DCE
ModemOnHookCmd	string	ATH0	command for placing phone ``on hook''
ModemPageDoneTimeout	integer	80000	page send/receive timeout (ms)
ModemPageStartTimeout	integer	80000	page send/receive timeout (ms)
ModemRate	integer	9200	baud rate to use for DCE-DTE communication
ModemRecvFillOrder	string	LSB2MSB	bit order for received facsimile data
ModemResetCmds	string	-	additional commands when resetting modem
ModemResetDelay	integer	600	delay (ms) after sending modem reset commands
ModemResultCodesCmd	string	ATQ0	command for enabling result codes
ModemRevQueryCmd	string	see below	command for querying modem firmware revision
ModemSendBeginCmd	string	-	command to send on establishing carrier
ModemSendFillOrder	string	LSB2MSB	bit order for sending facsimile data
ModemSetVolumeCmd	string	see below	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	string	ATZ	command for doing a soft reset
ModemType	string	-	modem type
ModemVerboseResultsCmd	string	ATV1	command for enabling verbose result codes
ModemWaitForConnect	boolean	No	force server to wait for ``CONNECT'' response on answer
ModemWaitTimeCmd	string	ATS7=60	command for setting time to wait for carrier when dialing

FaxT1Timer	integer	5000	CCITT T.30 T1 timer (ms)
FaxT2Timer	integer	000	CCITT T.30 T2 timer (ms)
FaxT4Timer	integer	100	CCITT T.30 T4 timer (ms)

Class0Cmd	string	AT+FCLASS=0	Class 0: command to enter class 0

Class1Cmd	string	AT+FCLASS=1	Class 1: command to enter class 1
Class1HFLOCmd	string	-	Class 1: command to set hardware flow control
Class1FrameOverhead	integer		Class 1: extra bytes in a received HDLC frame
Class1NFLOCmd	string	-	Class 1: command to set no flow control
Class1RecvAbortOK	integer	00	Class 1: max wait (ms) for ``OK'' after recv abort
Class1RecvIdentTimer	integer	5000	Class 1: max wait (ms) for initial ident frame
Class1SFLOCmd	string	-	Class 1: command to set software flow control
Class1TCFMaxNonZero	integer	0	Class 1: max% of non-zero data in good TCF
Class1TCFMinRun	integer	000	Class 1: minimum zero run in good TCF
Class1TCFRecvTimeout	integer	500	Class 1: max wait (ms) for TCF
Class1TCFResponseDelay	integer	5	Class 1: delay between TCF and ack/nak
Class1SendPPMDelay	integer	5	Class 1: delay before sending post-page message
Class1SendTCFDelay	integer	5	Class 1: delay between sending DCS and TCF
Class1TrainingRecovery	integer	500	Class 1: delay after failed training

Class2Cmd	string	AT+FCLASS=2	Class 2: command to enter class 2/2.0
Class2AbortCmd	string	AT+FK	Class 2: command to abort active session
Class2BORCmd	string	AT+FBOR=0	Class 2: command to setup bit order
Class2BUGCmd	string	AT+FBUG=1	Class 2: command to enable HDLC frame tracing
Class2CIGCmd	string	AT+FCIG	Class 2: command to set polling identifier
Class2CRCmd	string	AT+FCR=1	Class 2: command to enable receive capability
Class2CQCmd	string	-	Class 2: command to setup copy quality parameters
Class2CQQueryCmd	string	AT+FCQ=?	Class 2: command to query modem copy quality capabilities
Class2DCCCmd	string	AT+FDCC	Class 2: command to set modem capabilities
Class2DCCQueryCmd	string	AT+FDCC=?	Class 2: command to query modem capabilities
Class2DISCmd	string	AT+FDIS	Class 2: command to set session parameters
Class2DDISCmd	string	-	Class 2: command to set session parameters before dialing
Class2HFLOCmd	string	-	Class 2: command to set hardware flow control
Class2LIDCmd	string	AT+FLID	Class 2: command to set local identifier string
Class2MINSPCmd	string	AT+FMINSP	Class 2: command to set minimum transmit speed
Class2NFLOCmd	string	-	Class 2: command to set no flow control
Class2PHCTOCmd	string	AT+FPHCTO=30	Class 2: command to set Phase C timeout parameter
Class2PTSCmd	string	AT+FPTS	Class 2: command to set received page status
Class2RecvDataTrigger	string	``\21''	Class 2: character to send to trigger recv
Class2RELCmd	string	-	Class 2: command to enable byte-aligned EOL codes
Class2SendRTC	boolean	No	Class 2: append RTC to page data on transmit
Class2SFLOCmd	string	-	Class 2: command to set software flow control
Class2SPLCmd	string	AT+FSPL	Class 2: command to set polling request
Class2TBCCmd	string	AT+FTBC=0	Class 2: command to enable stream mode
Class2XmitWaitForXON	boolean	Yes	Class 2: wait for XON before sending facsimile data

Class2Cmd	string	AT+FCLASS=2.0	Class 2.0: command to enter class 2/2.0
Class2AbortCmd	string	AT+FKS	Class 2.0: command to abort active session
Class2BORCmd	string	AT+FBO=0	Class 2.0: command to setup bit order
Class2BUGCmd	string	AT+FBU=1	Class 2.0: command to enable HDLC frame tracing
Class2CIGCmd	string	AT+FPI	Class 2.0: command to set polling identifier
Class2CRCmd	string	AT+FCR=1	Class 2.0: command to enable receive capability
Class2CQCmd	string	-	Class 2.0: command to setup copy quality parameters
Class2DCCCmd	string	AT+FCC	Class 2.0: command to set modem capabilities
Class2DCCQueryCmd	string	AT+FCC=?	Class 2.0: command to query modem capabilities
Class2DISCmd	string	AT+FIS	Class 2.0: command to set session parameters
Class2HFLOCmd	string	AT+FLO=2	Class 2.0: command to set hardware flow control
Class2LIDCmd	string	AT+FLI	Class 2.0: command to set local identifier string
Class2MINSPCmd	string	AT+FMS	Class 2.0: command to set minimum transmit speed
Class2NFLOCmd	string	AT+FLO=0	Class 2.0: command to set no flow control
Class2NRCmd	string	AT+FNR=1,1,1,1	Class 2.0: command to set negotiation message reporting
Class2PHCTOCmd	string	AT+FCT=30	Class 2.0: command to set Phase C timeout parameter
Class2PIECmd	string	AT+FIE=0	Class 2.0: command to set procedure interrupt handling
Class2PTSCmd	string	AT+FPS	Class 2.0: command to set received page status
Class2RecvDataTrigger	string	``\22''	Class 2.0: character to send to trigger recv
Class2RELCmd	string	-	Class 2.0: command to enable byte-aligned EOL codes
Class2SFLOCmd	string	AT+FLO=1	Class 2.0: command to set software flow control
Class2SPLCmd	string	AT+FSP	Class 2.0: command to set polling request
Class2TBCCmd	string	AT+FPP=0	Class 2.0: command to enable stream mode

PagerSetupCmds	string	-	commands for setting up modem for a pager call
PagerMaxMsgLength	integer	28	max length of a text message 

IXOService	string	``PG''	IXO: service identification string
IXODeviceID	string	``1''	IXO: device identification string
IXOMaxUnknown	integer		IXO and UCP: max unknown responses before abort
IXOIDProbe	integer		IXO: time between sending \r during ID sequence (secs)
IXOIDTimeout	integer	0	IXO: max time to wait for ID= response (secs)
IXOLoginRetries	integer		IXO: max attempts to login
IXOLoginTimeout	integer	5	IXO: max time to complete login (secs)
IXOGATimeout	integer	0	IXO: max time to wait for Go-Ahead response (secs)
IXOXmitRetries	integer		IXO and UCP: max retries to send text msg block
IXOXmitTimeout	integer	5	IXO and UCP: max time to transmit text msg block
IXOAckTimeout	integer	0	IXO: max time to wait for msg block ack (secs)

SERVER-ORIENTED CONFIGURATION PARAMETERS

These configuration parameters affect the general operation of the fax server.

AdaptiveAnswer

Control whether or not an adaptive answering strategy is used whereby an incoming call is answered in multiple ways according to the list specified in the AnswerRotary parameter. For example, if adaptive answering is enabled and AnswerRotary specifies ``fax data'', then an incoming call will first be answered as fax using ModemAnswerFaxCmd and then, if that fails, as data using ModemAnswerDataCmd. If the adaptive answer strategy is not enabled, then calls are answered using the appropriate ModemAnswer*Cmd parameter (normally ModemAnswerCmd for unattended operation). Note that the adaptive answer strategy depends on many factors that limit its usefulness. When calls are answered first as fax, it typically only works with a Class 1 modem because it is important that the sequence of operations related to answering as fax be completed in a short enough time that a subsequent answer for data be done before the caller times out and hangs up the telephone (for this reason Class1RecvIdentTimer should be set to a value that is shorter than FaxT1Timer.) Also, note that it is sometimes necessary to arrange that the phone be placed on-hook between successive answers; this can typically be done by inserting the appropriate command at the start of the second and subsequent ModemAnswer*Cmds.

AnswerRotary

The sequence of answering techniques the server should ``rotate through'' when answer incoming calls. Answering techniques are:

Name	Description
fax	answer a fax call
data	answer a data call
voice	answer a voice call
extern	use the vgetty application to answer a call
any	answer a call of any/unknown type

When a call is not answered succesfully, the server advances the rotary to the next specified answering technique. If AdaptiveAnswer is enabled, the server will try all the answering techniques for each incoming call. Otherwise, the rotary is advanced between unsuccessful phone calls. For example, if AdaptiveAnswer is disabled and AnswerRotary is ``fax data'', then the calls will initially be answered as fax until the first call is received that does not appear to be from a fax machine; after that calls will be answered as if they were from a data modem until the next unsuccessful call; after which they will one again be answered as fax. Only the first three techniques listed are used; any additional ones are (silently) ignored. See also AnswerBias.

AnswerBias

The index into the AnswerRotary list that the server should rotate the list to after each successful incoming phone call. List indices are numbered starting at zero. For example, if AnswerRotary is ``fax data'' and AnswerBias is 1, then after each successful inbound call, the next call will be answered as data.

AreaCode‡

The local area code in which the facsimile modem resides. This value is passed to the dial string rules that are used, for example, to formulate canonical phone numbers for dialing (see DialStringRules below.)

CIDName

A string that identifies the caller's identity in any Caller-ID status messages. The specified string is compared against any unrecognized status messages received from the modem before the phone is placed off-hook. If there is a match, then the remainder of the message is returned as the ``caller name''. For example, for the ZyXEL U-1496 this parameter would be set to ``CALLER NAME: '' (note the trailing space). See also CIDNumber and QualifyCID.

CIDNumber

A string that identifies the caller's phone number in any Caller-ID status messages. The specified string is compared against any unrecognized status messages received from the modem before the phone is placed off-hook. If there is a match, then the remainder of the message is returned as the phone number of the caller. For example, for the ZyXEL U-1496 this parameter would be set to ``CALLER NUMBER: ''. See also CIDName and QualifyCID.

ClocalAsRoot

Control whether operations that set the CLOCAL bit on the modem device special file are done with the effective user-ID set to the super-user or the ``fax'' user. By default such operations are done as the fax user, except under IRIX where they are done as the super-user (because IRIX disallows manipulation of CLOCAL by anyone but the super-user).

ContCoverCmd†

The command to invoke to generate a continuation cover page; see ContCoverPage and mkcover(8).

ContCoverPage†

A template file to use in creating continuation cover pages. If this parameter is non-null, then the server will pass the filename to the command specified by ContCoverCmd to generate cover pages for outbound jobs that are continued after protocol errors. These cover pages identify the receiver and indicate that the document is a continued transmission. If this parameter is not specified or is null, then the server will not generate continuation cover pages. The specified pathname must be relative to the top of the fax server's spooling area.

CountryCode‡

The local country code in which the facsimile modem resides. As for AreaCode, this value is passed to the dial string rules for use in formulating canonical phone numbers for dialing (among other things.)

DestControls†

An optional file containing rules for controlling parameters on a per-destination basis; see destctrls(5) The following parameters may be controlled with this mechanism: MaxConcurrentJobs, MaxDials, MaxSendPages, MaxTries, RejectNotice, SessionTracing, and TimeOfDay. If no DestControls parameter is specified, or if the controls file does not specify default values for these parameters, then any settings in the config file used by faxq(8) are used for default settings. Note that faxq automatically rereads the contents of a DestControls file if it is modified while the server is running.

DeviceMode

The file protection mode that the server should set for the modem device file. Note that this value is given in octal. The default value of 0600 implies that only the facsimile user (usually uucp) can access the modem. See also chmod(2).

DialStringRules‡

The pathname of the file that holds the rules for processing user-specified dial strings; c.f. dialrules(5). The specified pathname must be relative to the top of the fax server's spooling area; e.g. etc/dialrules.

FAXNumber

The phone number associated with the facsimile modem. This string is used to generate the Transmitter Subscriber Identification (TSI ) and Caller Subscriber Identification (CSI ) information passed to remote machines—unless the LocalIdentifier parameter is explicitly set. The FAXNumber is also used to name the session log file where information for incoming phone calls is recorded; see log(5). If this phone number is not a fully qualified number the values of AreaCode and CountryCode are used to generate the transmitted CSI and TSI.

InternationalPrefix‡

The string to use to place an international phone call. In the United States, this is ``011''. This string is passed to the dial string rules.

JobReqBusy

The delay in seconds to wait before retrying a job whose dialing attempt failed with a ``BUSY'' status result.

JobReqDataConn

The delay in seconds to wait before retrying a facsimile job whose dialing attempt failed because a data modem answered the phone.

JobReqNoAnswer

The delay in seconds to wait before retrying a job whose dialing attempt failed with a ``NO ANSWER'' status result.

JobReqNoCarrier

The delay in seconds to wait before retrying a job whose dialing attempt failed with a ``NO CARRIER'' status result.

JobReqNoFCon

The delay in seconds to wait before retrying a facsimile job whose dialing attempt failed because the initial facsimile protocol handshake failed (i.e. no ``+FCON:'' result was received from a Class 2/2.0 modem).

JobReqOther‡

The delay in seconds to wait before retrying a job that failed for a reason not already covered by one of the Job* parameters.

JobReqProto

The delay in seconds to wait before retrying a facsimile job that failed because of a fax protocol error.

GettyArgs

A string that indicates whether or not the server should invoke the getty(8) program in response to an incoming call from a data modem. If the string value is not null, then it is interpreted as a set of arguments to pass to the getty program. Before supplying the arguments, the string is first scanned for ``%''-escape sequences: any appearance of ``%l'' is replaced with the tty name and any appearance of ``%s'' is replaced with the serial port speed (in decimal). The ``%'' character can be specified with ``%%''. If the GettyArgs parameter is not specified in the configuration file or if the string value is null, then data connections will be rejected. Note that in addition to the specified command line arguments, the getty program is invoked with its standard input, output, and error descriptors directed to the controlling tty device.

LocalIdentifier

The local station identification string to use when transmitting TSI and CSI strings (see FAXNumber above). NB: while this string may contain any printable ASCII characters; beware that CCITT T.30 specifies a restricted character set and some fax modems and machines may reject or not display non-conforming strings. If the local identifier is not specified, a canonical form of the FAXNumber is used instead.

LockDataCalls

Hold the UUCP lockfile during the time an inbound data call is processed by the external getty program. If this is disabled then the lockfile will be removed just before the getty program is invoked. Note however that doing this introduces a race condition whereby an outbound program may sneak in and take control of the modem after the inbound call has been accepted, but before the getty program has started up and installed it's own lockfile.

LockVoiceCalls

Hold the UUCP lockfile during the time an inbound data call is processed by the external voice getty program. If this is disabled then the lockfile will be removed just before the voice getty program is invoked. Note however that doing this introduces a race condition whereby an outbound program may sneak in and take control of the modem after the inbound call has been accepted, but before the voice getty program has started up and installed it's own lockfile.

LogFacility‡

The symbolic name for the syslog(3) facility to use when logging error messages and informational/debugging messages requested through the ServerTracing parameter. The list of facility names is found in the system include file <syslog.h>; comparisons are case-insensitive.

LogFileMode

The file protection mode that should be used when creating files to hold session logs. Note that this value is given in octal. The default value of 0600 implies that the log files are not generally accessible, which is important if sensitive information such as calling card access codes are logged. If log files are to be publicly accessible, this value may be set, for example, to 0644. See also chmod(2).

LongDistancePrefix‡

The string to use to place a long distance phone call. In the United States, this is ``1''.

MaxConcurrentJobs†

The default value to use for the maximum number of jobs for the same destination that are processed concurrently. Note that each job is processed with a separate phone call; job batching is not currently supported. Thus this parameter defines the maximum number of concurrent phone calls to the same destination. This value may be overridden by rules in the DestControls file.

MaxConsecutiveBadLines

The maximum number of consecutive erroneous rows of image data that the server will receive before it deems a page to have unacceptable copy quality. Setting this parameter to zero causes the server to not check the quality of received facsimile. See also PercentGoodLines.

MaxDials†

The default value for the maximum number of times the server will place a call for an outbound job. This value may be overridden by rules in the DestControls file. See also MaxTries.

MaxRecvPages

The maximum number of pages the server will accept in a received facsimile before it aborts the session.

MaxSendPages†

The default value for the maximum number of pages the server will permit in a transmitted facsimile. Outbound jobs that exceed this limit are rejected. This value may be overridden by rules in the DestControls file.

MaxSetupAttempts

The maximum number of times a HylaFAX server program will attempt to initialize a modem before considering it ``wedged''.

MaxTries†

The default value for the maximum number of times the server will attempt to communicate with a remote site. Note that for a call to be counted against this limit, carrier must be established; this is in contrast to the value of MaxDials which limits the number of calls that will be placed on behalf of a job. This value may be overridden by rules in the DestControls file. See also MaxDials.

ModemClass†

Define a logical name for a set of modem devices. This parameter can be used to define a name that clients can use to refer to a collection of modems. The syntax is ``<name><regex>'' where <name> is the name for the class and <regex> is a regular expression that faxq(8) matches against known modems. Thus for example, the default modem to use for a job, any, is defined as ``any:.*''. This parameter may be specified multiple times to define multiple modem classes. Modem classes may overlap. The actual set of modems in a modem class that are considered for use may vary based on which modems are believed to be ready for use.

ModemPriority

The scheduling priority to use for a modem. Priority values are in the range 0 to 255 with greater values signifying higher (more desirable) priority. The HylaFAX scheduler process assigns the highest priority modem that is ready for use when scheduling an outbound job.

NoCarrierRetrys

The number of times to redial a phone number after receiving a ``NO CARRIER'' result code. In normal operation the fax server will treat this result code to mean that a facsimile modem/machine did not answer the phone and reject the transmit job. This is done to avoid repeatedly dialing wrong phone numbers and depends on the modem distinguishing between no carrier and no answer. However, some modems are not capable of reliably distinguishing between no carrier and no answer, or when instructed to do so do not identify a busy signal correctly. For these modems one may find it necessary to increase the value of this parameter to compensate. It is strongly recommended, however, that this value not be set to a large number.

ModemReadyState

Define the state transmitted to the HylaFAX scheduler process each time a modem is made ready by a faxgetty process. State is one of: ``R'' (ready for use), ``B'' (busy), or ``D'' (down). The modem state can be used to control whether or not modems are assigned to outbound jobs. A modem's state is initially set to ``R'' (ready). Modem state can be dynamically changed with the faxstate(8) program or by setting this configuration parameter with the faxconfig(8) program.

NotifyCmd‡

The command to invoke to notify a client of a job status change; see notify(8).

PageChop†

Whether or not to automatically truncate trailing whitespace on pages of outbound facsimile (when possible). If page chopping is enabled, then pages with at least PageChopThreshold trailing whitespace on a page will be transmitted as a ``short page'' if the receiver is capable of accepting variable-length pages. The possible values are: ``last'' to enable chopping of the last page of each document, ``all'' to enable chopping of all pages, or ``none'' to disable page chopping.

PageChopThreshold†

The minimum amount of trailing whitespace that must be present on a page before page chopping will be attempted; see PageChop. Note that this value is specified in inches.

PCL2FaxCmd†

The command to invoke to convert a HP-PCL document submitted for transmission to TIFF/F, suitable for transmission (for future use).

PercentGoodLines

The minimum percentage of good rows of image data required for a received facsimile page to be deemed to have acceptable copy quality. Setting this parameter to zero causes the server to not check the quality of received facsimile. See also MaxConsecutiveBadLines.

PollLockWait

When polling for the presence/removal of a UUCP lockfile, the time (in seconds) to wait between checks. Lockfile polling occurs when the fax server collides with another process using the modem for outbound use.

PollModemWait

The time (in seconds) to wait between checks for a modem to become ready for use. Modem polling occurs when a modem fails to reset cleanly.

PS2FaxCmd†

The command to invoke to convert a POSTSCRIPT document submitted for transmission to TIFF/F, suitable for transmission; see ps2fax(8).

QualifyCID

A string that specifies whether or not Caller-ID information should be checked against an access control list before accepting an inbound call. If QualifyCID is non-null and there is Caller-ID service, then only calls from phone numbers identified in the file specified by this string (typically etc/cid) will be accepted; see cid(5). If QualifyCID is not specified in the configuration file, or the value is null, then all incoming calls will be answered. Note that Caller-ID screening is only available when this service is enabled on the phone line and the modem is capable of presenting Caller-ID status information to the host. The CIDNumber and CIDName parameters must also be setup to reflect the manner in which the modem returns Caller-ID status information to the host.

QualifyTSI

A string that specifies whether or not the identity of calling facsimile machines should be checked against an access control list before receiving facsimile. If QualifyTSI is non-null, then only messages from facsimile machines identified in the file specified by the string (typically etc/tsi) will be accepted; see tsi(5). If QualifyTSI is not specified in the configuration file, or the value is null, then all incoming facsimile messages will be accepted.

RecvDataFormat

The data format (compression scheme) to write received facsimile data when copy quality checking is enabled on the host. (When copy quality checking is not done by the server the received facsimile data is written exactly as it is received from the modem.) The format may be one: ``1-D MR'', ``2-D MR'', ``2-D MMR'', or ``adaptive''. An ``adaptive'' format causes the received data to be written using the data format negotiated by the sender and receiver. Note that while 2-D MMR is the most space-efficient data format the resultant file may not be viewable (certain commonly used programs do not properly read multi-strip TIFF with 2-D MMR data).

RecvFileMode

The file protection mode that should be used when creating files to hold incoming facsimile. Note that this value is given in octal. The default value of 0600 implies that only the facsimile user can read received facsimile. If incoming facsimile are to be publicly accessible, this value may be set, for example, to 0644. See also chmod(2).

RingData

A modem status string that identifies that an incoming call is for data use. This string should be set when a phone line has been setup with distinctive ring service. See also RingFax and RingVoice.

RingFax

A modem status string that identifies that an incoming call is for facsimile use. This string should be set when a phone line has been setup with distinctive ring service. See also RingData and RingVoice.

RingsBeforeAnswer

The number of rings to wait before answering the phone. If this value is set to 0, then the phone will only be answered in response to an explicit answer command; see faxanswer(8).

RingVoice

A modem status string that identifies that an incoming call is for voice use. This string should be set when a phone line has been setup with distinctive ring service. See also RingData and RingFax.

SendFaxCmd†

The command to use to process outbound facsimile jobs; see faxsend(8).

SendPageCmd†

The command to use to process outbound pager jobs; see pagesend(8).

SendUUCPCmd†

The command to use to process outbound UUCP jobs. This parameter is not currently used, it is for future development.

ServerTracing‡

A number that controls the generation of tracing information by a server when not actively sending or receiving facsimile. Tracing is divided into areas that are individually controlled. To enable tracing of multiple areas of operation, the flag associated with each area should be bit-or'd to form the value for this tag.

Flag	Area	Description
1 (0x00001)	Server Operation	queue management and general operation
2 (0x00002)	FAX/IXO Protocol	T.30 facsimile protocol or IXO/TAP protocol
4 (0x00004)	Modem Operations	modem hardware manipulation
8 (0x00008)	Modem Communications	comands passed between host and modem
16 (0x00010)	Timeouts	timer operations
32 (0x00020)	Modem Capabilities	modem capabilities
64 (0x00040)	HDLC Frames	binary T.30 HDLC frames
128 (0x00080)	Binary Modem I/O	binary communication between host and modem
256 (0x00100)	Server State Transitions	server program state transitions
512 (0x00200)	Queue Management	job queue management
1024 (0x00400)	Copy Quality	copy quality checking of received facsimile
2048 (0x00800)	Job Management	low-level job management
4096 (0x01000)	IXO Protocol	low-level IXO protocol
8192 (0x02000)	Config File Parsing	unknown configuration file parameters
16384 (0x04000)	FIFO Messages	inter-application messages
32768 (0x08000)	Modem State Transitions	modem state changes (down, busy, ready)
65536 (0x10000)	Dial Rules	dialstring rules parsing and execution
131072 (0x20000)	Docq Changes	document reference handling


For example, to enable tracing of server operations and protocol operations, a value of 1+2=3 should be specified. NB: tracing timeouts and/or binary modem I/O can adversely affect the operation of the fax server; enabling these areas should be done with extreme care.

Server tracing is directed to syslog(3) using the facility specified with the LogFacility configuration parameter. Note that syslogd(8) must be configured to capture facility.info, facility.debug, facility.warning, and facility.err messages. See log(5) for a description of the logged messages.

SessionTracing‡

A number that controls the generation of tracing information by a server while sending or receiving facsimile. The number is interpreted identically to ServerTracing. Note that session tracing is placed in log files in the log subdirectory; see log(5) for more information.

SpeakerVolume

The volume level that the in-modem speaker should be adjusted to while in command mode. The possible values are:

Value	Description
Off	silent
Quiet	almost inaudible
Low	tolerable in privacy
Medium	loud enough to hear in the next room
High	intolerable


Note that the speaker is always turned off once carrier is established. Also beware that some modems support fewer volume settings; see ModemSetVolumeCmd.

TagLineFont

The filename of the font to use in imaging tag lines across the top of each transmitted page. Fonts must be stored in the Portable Compiled Font (PCF ) format used by the X11 Window System. Filenames are specified relative to the root of the spooling area; e.g. etc/lutRS18.pcf. If no font is specified, if a null filename is specified, or if the specified font file is not readable, then tag lines will not be generated. See also TagLineFormat.

TagLineFormat

The format string to use when imaging tag lines across the top of each transmitted page. This string may include escape codes that cause various items to be interpolated into the imaged tag line. Any escape code supported by strftime(3C) may be used as well as the following server-implemented codes:

Escape	Description
%%d	destination phone number
%%i	job identifier
%%j	user-specified job tag
%%l	LocalIdentifier or canonicalized FAXNumber
%%m	sender's electronic mail address
%%n	canonicalized FAXNumber
%%p	current page number
%%s	sender's name
%%t	total pages in job
%%%	``%''

In addition, the format string may indicate that text is to be centered in multiple equal-sized fields by separating text with ``|'' characters. For example, ``a|b|c'' would cause the tag line to be broken up into three equal-sized areas with the strings ``a'', ``b'', and ``c'' centered within each region. The default tag line format string is ``From %%n|%c|Page %%p of %%t''. See also TagLineFont.

TIFF2FaxCmd†

The command to invoke to convert a TIFF submitted for transmission to TIFF/F, suitable for transmission; see tiff2fax(8).

TimeOfDay†

The default time-of-day restrictions to apply to outbound jobs. Outbound jobs will be processed only during the specified time. Any jobs submitted outside this time period will be held until the start of this time. The syntax for time-of-day restrictions is designed to be compatible with the syntax used by the UUCP software. The following BNF describes the syntax:

   Syntax = tod ["," tod]
      tod = <days><timerange>
     days = "Any" | "Wk" | <dayname>+ | nothing
  dayname = "Sun" | "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat"
timerange = <start> "-" <end> | nothing
    start = <24hrtime>
      end = <24hrtime>
 24hrtime = {0-9}{0-9}{0-9}{0-9}
  nothing =

where start and end are 24-hour times, day names can be either 2- or 3-characters, and a null day or time specification means any time or day. White space and other syntactic sugar may be freely inserted between tokens but may not be inserted between 24-hour times in the time range.

This value may be overridden by rules in the DestControls file.

Use2D†

Control the use of 2D-encoded data for transmitted facsimile.

UUCPLockMode‡

The file protection mode that should be used when creating UUCP lockfiles. Note that this value is given in octal.

UUCPLockDir‡

The pathname of the directory in which UUCP lockfiles are to be created.

UUCPLockTimeout‡

The time in seconds to wait before removing a stale UUCP lockfile (i.e. a lockfile whose owner does not appear to exist). If this value is set to 0, then the fax server will never remove a stale lockfile.

UUCPLockType‡

A string that specifies the type of UUCP lockfile to create. The string may be one of ``ascii'' or ``binary'' depending on whether the process-ID of the lock owner is written to the file as an ascii string or as a binary value, respectively. In addition, two prefixes may be used to control the format of the lock filename. If the type string is prefixed with a ``+'', then SVR4- style filenames are generated using the major device number of the tty device and the major and minor device numbers for the filesystem on which the tty device resides. If the type string is prefixed with a ``-'', then any upper case letters in the device part of the lockfile name are converted to lower case letters; for example, ``LCK..ttyA01'' is converted to ``LCK..ttya01''. This upper-to-lower case conversion is useful for systems such as SCO where the convention is to name devices with upper-case letters, but create lockfiles with lower-case letters.

VGettyArgs

A string that indicates whether or not the server should invoke a voice getty program in response to an incoming voice call. If the string value is not null, then it is interpreted as a set of arguments to pass to the vgetty program. Before supplying the arguments, the string is first scanned for ``%''-escape sequences: any appearance of ``%l'' is replaced with the tty name and any appearance of ``%s'' is replaced with the serial port speed (in decimal). The ``%'' character can be specified with ``%%''. If the VGettyArgs parameter is not specified in the configuration file or if the string value is null, then voice connections will be rejected. Note that in addition to the specified command line arguments, the vgetty program is invoked with its standard input, output, and error descriptors directed to the controlling tty device.

WedgedCmd†

The command to invoke when a modem is deemed ``wedged''; see wedged(8).

MODEM-ORIENTED CONFIGURATION PARAMETERS

This section lists configuration parameters that are specific to the setup and operation of the modem. All commands must be specified exactly as they are to be transmitted to the modem (note that this is a departure from previous versions of this software that automatically prepended ``AT'' to each line of commands sent to the modem). When multi-line commands are required, enclose the commands in quote marks (``"'') and insert a newline character ``\n'' where lines should be broken. An example of a multi-line command string is ``AT+FCQ=1\nAT+FBADMUL=20\nAT+FBADLIN=10''.

Command strings sent to the modem may include command escapes that force the host to alter the DTE-DCE communication rate, the flow control scheme used between the host and modem, delay for a period of time, flush input data, and wait for a specific response from the modem. The following escape codes are interpreted:

Escape	Effect
<none>	enable no flow control between DTE and DCE
<xon>	enable software flow control between DTE and DCE
<rts>	enable hardware flow control between DTE and DCE
<2400>	set the DCE-DTE baud rate to 2400 bps
<4800>	set the DCE-DTE baud rate to 4800 bps
<9600>	set the DCE-DTE baud rate to 9600 bps
<19200>	set the DCE-DTE baud rate to 19200 bps
<38400>	set the DCE-DTE baud rate to 38400 bps
<57600>	set the DCE-DTE baud rate to 57600 bps
<76800>	set the DCE-DTE baud rate to 76800 bps
<115200>	set the DCE-DTE baud rate to 115200 bps
<delay:N>	delay N x 10 ms on the host (0 <= N <= 255)
<flush>	flush any pending input data from the modem
<waitfor:R>	wait for the response R from the modem (see below)

Note that commands to the left of an escape code are sent to the modem before the associated actions are carried out on the host. This may be important when changing baud rates, as the result code from a command may be returned at the new baud rate. Also, beware that not all baud rates are supported by all systems and modems; the set of baud rates supported by a host is usually listed in stty(1).

The ``<waitfor:..>'' escape can be used to override the default behaviour which is to wait for an ``OK'' response to a command sent to the modem. The possible response codes are:

NOTHING	a null response
OK	the default response
CONNECT	``CONNECT...''
NOANSWER	``NO ANSWER...''
NOCARRIER	``NO CARRIER...''
NODIALTONE	``NO DIALTONE...''
BUSY	``BUSY''
OFFHOOK	``PHONE OFF-HOOK''
RING	``RING...''
ERROR	error status from modem
OTHER	any unrecognized modem response

For example ``ATO\r<waitfor:CONNECT>'' would send ``ATO\r'' to the modem and then wait for a response with a leading ``CONNECT'' in it; and ``ATS99=2\r<delay:2><flush><waitfor:NOTHING>'' would send ``ATS99=2\r'' to the modem, delay 20 ms, flush any input from the modem, and then continue (not wait for any response).

ModemAnswerCmd

The command to answer the phone. If possible, this command should generate a result string that identifies whether the incoming call is from a facsimile, voice, or data modem. Typically this auto-detection is configured ahead of time; e.g. for Class 2 modems with the ``AT+FAA=1'' command.

The following table describes how the result codes are interpreted by the facsimile server.

Result String	Default	Class 1	Class 2	Class2.0
CONNECT FAX	Fax	-	-	-	-
CONNECT	Data	Unknown	-	-
NO ANSWER	No Answer	-	-	-
NO CARRIER	No Carrier	-	-	-
NO DIALTONE	No Dialtone	-	-	-
ERROR	Error	-	-	-
FAX	Fax	-	-	-
DATA	Data	-	-	-
+FCON	-	-	Fax	Fax
+FCO	-	-	Fax	Fax
+FDM	-	-	Data	Data
+FHNG:	-	-	Error	Error
VCON	-	-	Voice	Voice

The ``Default'' column indicates the interpretation made for the result string in either class 1 or 2 unless explicitly overridden. The ``Class 1'' column indicates result strings handled specially for modems operating in class 1, the ``Class 2'' column indicates special handling for modems operating in class 2, and the ``Class 2.0'' column indicates special handling for modems operating in class 2.0. Unknown entries imply that interpretation is based on the way in which the call was answered; if answering is done for an explicit call type, that type is assumed, otherwise a Fax call is presumed.

ModemAnswerDataBeginCmd

The command to send to the modem once a data connection has been established.

ModemAnswerDataCmd

The command to explicitly answer the phone for a data connection. This command must generate a result string that identifies the incoming call is from a data modem. If this parameter is not specified or is null, then the value of ModemAnswerCmd is used instead. See also AdaptiveAnswer and AnswerRotary.

ModemAnswerFaxBeginCmd

The command to send to the modem once a facsimile connection has been established.

ModemAnswerFaxCmd

The command to explicitly answer the phone for a facsimile connection. This command must generate a result string that identifies the incoming call is from a facsimile modem. If this parameter is not specified or is null, then the value of ModemAnswerCmd is used instead. See also AdaptiveAnswer and AnswerRotary.

ModemAnswerVoiceBeginCmd

The command to send to the modem once a voice connection has been established.

ModemAnswerVoiceCmd

The command to explicitly answer the phone for a voice connection. This command must generate a result string that identifies the incoming call is for voice. If this parameter is not specified or is null, then the value of ModemAnswerCmd is used instead. See also AdaptiveAnswer and AnswerRotary.

ModemAnswerResponseTimeout

The maximum time, in milliseconds, to wait for a response from the modem after sending ModemAnswerCmd. Note that you may want to shorten this value when using the server-based adaptive answer strategy; see AdaptiveAnswer.

ModemATCmdDelay

A delay, in milliseconds, that should be performed before each ``AT'' command string is sent to the modem.

ModemBaudRateDelay

The amount of time, in milliseconds, to pause after setting the baud rate on the serial line. This parameter is only needed for hosts where (apparently) setting the serial line parameters does not take effect immediately.

ModemCommaPauseTimeCmd

The command to set the time, in seconds, that the modem should pause when encountering a ``,'' modifier in the dialing string.

ModemDialCmd

The command to place a phone call. The string is assumed to be suitable for use as a parameter to the sprintf(3S) function; so the ``%'' character should be escaped as ``%%''. The dial command must include a single ``%s'' where the number that is to be dialed is to be substituted. Facilities such as tone or pulse dialing, outgoing prefixes to route though a PBX, and so on should be included in the dialing command string. It is also important that, if possible, a trailing ``@'' symbol should be included so that the modem returns result codes that distinguish between no answer and no carrier. Use of the ``@'' permits the server to reduce the probability that a wrong number is continually redialed. If the modem does not support this facility, then it may be necessary to raise the number of retries done when a ``NO CARRIER'' result is returned.

ModemDialResponseTimeout

The maximum time to wait, in milliseconds, for a response from the modem after sending This value should be longer than the timeout programmed into the modem through the ModemWaitTimeCmd parameter. This additional server-based timeout is provided to guard against modems that can ``lock up'' when dialing the telephone.

ModemEchoOffCmd

The command to disable echoing of commands sent to the modem.

ModemFlowControl

The type of flow control to use between DTE and DCE; one of ``NONE'', ``XONXOFF'' and ``RTSCTS''. This value is used to select the string sent to the modem to initially establish DTE-DCE flow control; one of ModemNoFlowCmd, ModemSoftFlowCmd, and ModemHardFlowCmd. The current flow control setting is also used to select the appropriate flow control command to send to the modem when the software switches to Class 1, 2, or 2.0; see Class1HFLOCmd, Class1NFLOCmd, Class1SFLOCmd, Class2HFLOCmd, Class2NFLOCmd, and Class2SFLOCmd.

The server supports both software and hardware flow control for Class 1, Class 2, and Class 2.0 modems. Whether to use hardware or software flow control depends on the capabilities of the modem and the host hardware and operating system. Communication rates above 9600 baud often require that hardware flow control be used for reliable DTE-DCE communication. However, beware that many modems only support software flow control when sending or receiving facsimile.

ModemFrameFillOrder

The bit order to expect for received HDLC frames and to use when formulating HDLC frames to send. This value may be either LSB2MSB when bits are ordered from least-significant-bit to most-significant-bit (as in the CCITT specification) or MSB2LSB when bits are ordered in the reverse direction.

ModemHardFlowCmd

The command to setup hardware (RTS/CTS) flow control between DTE and DCE.

ModemMinSpeed

The minimum acceptable signalling rate for transmitting facsimile page data. Possible values are: 2400, 4800, 7200, 9600, 12200, and 14400.

ModemMfrQueryCmd

The command to send to the modem to get the manufacturer identification string. If this parameter is not set, then it is initialized to ``AT+FMFR?'' for Class 2 modems, or to ``AT+FMI?'' for Class 2.0 modems. If the parameter begins with a ``!'', then the remainder of the string is taken to be the identification string and no command is issued to the modem.

ModemModelQueryCmd

The command to send to the modem to get the model identification string. If this parameter is not set, then it is initialized to to ``AT+FMDL?'' for Class 2 modems, or to ``AT+FMM?'' for Class 2.0 modems. If the parameter begins with a ``!'', then the remainder of the string is taken to be the identification string and no command is issued to the modem.

ModemNoAutoAnswerCmd

The command to stop the modem from automatically answering when the phone rings.

ModemNoFlowCmd

The command to disable flow control between DTE and DCE.

ModemOnHookCmd

The command to place the phone ``on hook'' (i.e. hangup).

ModemPageDoneTimeout

The maximum time to wait, in milliseconds, for a response from the modem after sending a page of facsimile data (e.g. the time to wait for a response to a Class 2/2.0 AT+FET command).

ModemPageStartTimeout

The maximum time to wait, in milliseconds, for an initial response from the modem when sending a page of facsimile data (e.g. the time to wait for a response to a Class 2/2.0 AT+FDR command).

ModemRate

The baud rate to use for DCE-DTE communication. This value may be one of: 115200, 76800, 57600, 38400, 19200, 9600, 4800, 2400, 1200. The default value is 19200 because many modems lock the rate at 19200 when sending or receiving facsimile. Note that not all values are supported by all operating systems and modems; consult stty(1) for the available rates on your system.

ModemRecvFillOrder

The bit order to expect for received facsimile data. This value may be either LSB2MSB when bits are ordered from least-significant-bit to most-significant-bit (as in the CCITT specification) or MSB2LSB when bits are ordered in the reverse direction. According to the various specifications all modems should return data in LSB2MSB order. However many Class 2 modems use MSB2LSB for compatibility with modems that were built with Rockwell hardware/firmware that included a bug that was too widespread to correct.

ModemResetCmds

A string of commands to issue to the modem during initialization. This string is sent to the modem before the standard set of configuration commands required by the fax server. Note that these commands should not include normal reset commands that are specified through other parameters. For example, commands to setup flow control, DCD handling, DTR handling, etc. should be specified through the appropriate configuration parameters and not through this parameter. In addition the soft reset command (usually ``ATZ'') should not be included in this string; the servers issue this command explicitly.

ModemResetDelay

The time, in milliseconds, to pause after resetting a modem either by dropping the DTR signal, or through a software reset command. This parameter should be long enough to permit the modem to do any reset-related processing it requires.

ModemResultCodesCmd

The command to enable result codes.

ModemRevQueryCmd

The command to send to the modem to get a firmware revision identification string. If this parameter is not set, then it is initialized to ``AT+FREV?'' for Class 2 modems, or to ``AT+FMR?'' for Class 2.0 modems. If the parameter begins with a ``!'', then the remainder of the string is taken to be the identification string and no command is issued to the modem.

ModemSendBeginCmd

The command to send to the modem upon establishing carrier during a transmit operation. This parameter is useful for systems that are incapable of enabling hardware flow control without DCD asserted.

ModemSendFillOrder

The bit order the modem expects for transmitted facsimile data. This value may be either LSB2MSB or MSB2LSB (see also ModemRecvFillOrder above.) Virtually all modems expect transmitted facsimile data in LSB2MSB bit order.

ModemSetVolumeCmd

The commands to use to set the modem speaker volume levels. There should be five whitespace-separated commands, one each for setting the volume to ``Off'', ``Quiet'', ``Low'', ``Medium'', and ``High''; the default is ``"ATM0 ATL0M1 ATL81 ATL2M1 ATL3M1"''. See also SpeakerVolume.

ModemSetupAACmd

The command to setup adaptive answer support in the modem-if available. Adaptive answer is the term used for the ability to distinguish between calls from facsimile, voice, and data sources. Note that this string is the last command issued by the device drivers during setup, so the command string may, if necessary, switch to a different operating mode (e.g. on some Rockwell-based modems it is necessary to issue the ``AT+FAA=1'' command in Class 0).

ModemSetupDCDCmd

The command to setup DCD handling. On most systems the facsimile server will enable the CLOCAL flag on the tty device to which the modem is connected. This should insure that the system does not close an open file descriptor associated with the modem if carrier is dropped. Thus, for most systems and modems ModemSetupDCDCmd should setup DCD to reflect carrier.

ModemSetupDTRCmd

The command to setup DTR handling so that the modem is reset when the DTR signal is lowered by the host. The facsimile server uses this facility to insure that modems are not left in a ``locked up'' state.

ModemSoftFlowCmd

The command to setup software (XON/XOFF) flow control between DTE and DCE.

ModemSoftResetCmd

The command to force a soft reset of the modem.

ModemType

This parameter must be set to one of: ``Class2'', ``Class2.0'', or ``Class1''; to indicate that the modem is a Class 2-, Class 2.0-, or Class 1-style modem, respectively.

ModemVerboseResultsCmd

The command to enable verbose, as opposed to numeric, result codes.

ModemWaitForConnect

If enabled, the facsimile server will not consider a connection established when answering an incoming call until a ``CONNECT'' status string is received. This is useful mainly for Rockwell RC32ACL-based modems that send ``FAX'' and ``DATA'' status messages before sending ``CONNECT''.

ModemWaitTimeCmd

The command to set the number of seconds to wait for a carrier signal when placing a call or answering the phone.

T.30 PROTOCOL CONFIGURATION PARAMETERS

The following parameters apply to the implementation of the CCITT T.30 facsimile protocol in the Class 1 device driver. They should not be changed without full understanding of the operation of the server.

FaxT1Timer

The value of the T1 timer in milliseconds. This timer is used to time out the initial session contact; i.e. receipt of DIS/DCS.

FaxT2Timer

The value of the T2 timer in milliseconds. This timer is used to time out receiving responses and commands.

FaxT4Timer

The value of the T4 timer in milliseconds. This timer is used to time out the reception of HDLC frames and, usually, trigger frame retransmissions.

CLASS 1 MODEM CONFIGURATION PARAMETERS

The following parameters are specific to the configuration of Class 1-style modems; they should not be changed lightly:

Class1Cmd

The command to set the modem into Class 1 operation.

Class1FrameOverhead

The number of extraneous bytes in HDLC frames sent to the host in response to an ``AT+FRH'' command. For modems that properly implement the Class 1 interface, this number should be 4 (the default).

Class1HFLOCmd

The command to setup hardware (RTS/CTS) flow control between DTE and DCE when operating in Class 1. This command is issued immediately after sending the Class1Cmd to switch the modem to Class 1 operation.

Class1NFLOCmd

The command to setup no flow control between DTE and DCE when operating in Class 1. This command is issued immediately after sending the Class1Cmd to switch the modem to Class 1 operation.

Class1RecvAbortOK

The time, in milliseconds, to wait for an ``OK'' result code from the modem after aborting an HDLC frame receive (``AT+FRH=3''). If this number is zero, then the modem is assumed to not correctly implement aborting and instead the driver will wait 200ms, flush any input, and then send ``AT\n'' and wait 100ms for an ``OK'' result.

Class1RecvIdentTimer

The time, in milliseconds, to wait for an initial DCS when receiving a facsimile. CCITT recommendation T.30 specifies this as the value of the T1 timer. However, adaptive answering schemes such as that described above under the AdaptiveAnswer parameter may require that this timer be shortened.

Class1SendPPMDelay

The time, in milliseconds, to delay between dropping the high speed message carrier and sending the post-page message/command.

Class1SendTCFDelay

The time, in milliseconds, to delay between sending DCS and TCF.

Class1SFLOCmd

The command to setup software (XON/XOFF) flow control between DTE and DCE when operating in Class 1. This command is issued immediately after sending the Class1Cmd to switch the modem to Class 1 operation.

Class1TCFMaxNonZero

The maximum percentage of non-zero data bytes permitted in an acceptable received TCF. Note that this number does not include any leading non-zero data in the received data. See also Class1TCFMinRun.

Class1TCFMinRun

The duration, in milliseconds, of the minimum run of zero data in an acceptable received TCF. This value should be specified according to a 1.5 second transmission of zero data (i.e. it should be between 0 and 1500). See also Class1TCFMaxNonZero.

Class1TCFRecvTimeout

The maximum time to wait, in milliseconds, for the first byte of the Training Check (TCF ) message data that is received during the training phase of the facsimile reception protocol.

Class1TCFResponseDelay

The time, in milliseconds, to delay between receiving TCF and sending a response on the v.21 carrier to indicate whether or not training was successful.

Class1TrainingRecovery

The time, in milliseconds, to delay after a failed training session. This time is used when sending training and when waiting for DCS and subsequent training during receive.

CLASS 2 AND 2.0 MODEM CONFIGURATION PARAMETERS

The following parameters are specific to the configuration of Class 2- and Class 2.0-style modems:

Class2Cmd

The command to set the modem into Class 2/2.0 operation.

Class2AbortCmd

The command to use to abort an established session. After using this command to abort a session, the fax software will send ModemOnHookCmd and then reset the modem by dropping DTR .

Class2BORCmd

The command to setup the bit order of sent and received facsimile data. Usually the command ``AT+FBOR=0'' is used so that data is sent and received in direct bit order (LSB2MSB). Some modems, such as the Everex 24/96D, must use reversed bit order for Phase B and D data exchanges to avoid a bug that results in garbage data being placed in the padding of EOL codes. The bit order specified by this command must correspond to the settings of the ModemSendFillOrder and ModemRecvFillOrder parameters.

Class2BUGCmd

The command to use to enable the tracing of HDLC frames sent and received by the modem. This tracing information should be returned to the host in ``+FHR:'' and ``+FHT:'' status strings. Note that many Class 2 modems do not support this facility.

Class2CIGCmd

The command used to set a polling identifier. This string is inserted into the format ``%s="<id>"''.

Class2CQQueryCmd

The command to send to the modem to get the copy quality capabilities string. If the parameter begins with a ``!'', then the remainder of the string is taken to be the capabilities string and no command is issued to the modem; this can be used together with the Class2CQCmd to force copy quality checking to be done in the server instead of in the modem. See also PercentGoodLines and MaxConsecutiveBadLines for parameters used to do server copy quality checking.

Class2CRCmd

The command to use to enable the reception of facsimile.

Class2CQCmd

The command to use to set up parameters for copy quality checking. For example, for an Everex 24/96D modem this parameter might be set to ``AT+FCQ=1\nAT+FBADMUL=20\nAT+FBADLIN=10''.

Class2DCCCmd

The command used to set modem capabilities. This string is inserted into the format ``%s=vr,br,wd,ln,df,ec,bf,st''.

Class2DCCQueryCmd

The command to send to the modem to get the Class 2/2.0 capabilities. If the parameter begins with a ``!'', then the remainder of the string is taken to be the capabilities string and no command is issued to the modem.

Class2DDISCmd

The command to set session parameters before dialing. This string is inserted into the format ``%s=vr,br,wd,ln,df,ec,bf,st''. Setting this parameter enables support for Class 2 modems that do not properly implement the ``AT+FDIS'' command by setting up session parameters before dialing the telephone.

Class2DISCmd

The command used to set the current session parameters. This string is inserted into the format ``%s=vr,br,wd,ln,df,ec,bf,st''.

Class2HFLOCmd

The command to setup hardware (RTS/CTS) flow control between DTE and DCE when operating in Class 2/2.0. This command is issued immediately after sending the Class2Cmd to switch the modem to Class 2/2.0 operation. For Class 2.0 operation the default is ``AT+FLO=2''.

Class2LIDCmd

The command used to set the local identifier string. This string is inserted into the format ``%s="<id>"''

Class2MINSPCmd

The command used to set the minimum acceptable speed to be negotiated for transmitting page data. This string is inserted into the format ``%s=<speed>''

Class2NFLOCmd

The command to setup no flow control between DTE and DCE when operating in Class 2/2.0. This command is issued immediately after sending the Class2Cmd to switch the modem to Class 2 operation. For Class 2.0 operation the default is ``AT+FLO=0''.

Class2NRCmd

(Class 2.0 only) The command to setup negotiation message reporting. For the correct operation of the Class 2.0 driver this command must enable the reporting of: receiver parameters, transmitter parameters, and ID strings. It is not necessary to enable reporting of non-standard frames for correct operation of the Class 2.0 driver.

Class2PHCTOCmd

The command to use to set the Phase C timeout parameter (in seconds).

Class2PIECmd

(Class 2.0 only) The command to use to control procedure interrupt handling. Procedure interrupts should be disabled because HylaFAX does not provide a mechanism for dispatching procedure interrupts to an administrator.

Class2PTSCmd

The command to use to set the received page status code. When copy quality checking is done in the host, this command may be used to control the post-page response delivered to the sender. Beware that some modems do not properly implement this command in which case the server should be configured to not do copy quality check: see the PercentGoodLines and MaxConsecutiveBadLines parameters to understand how to defeat copy quality checking.

Class2RecvDataTrigger

The character to send to the modem to trigger the transmission of received data from the modem to the host. This character is specified to be DC1 (octal 21) in the draft specification 2388-A and DC2 (octal 22) in the 2388-B specification. Most Class 2 modems accept DC1 or both DC1 and DC2. Some modems however only accept DC2. Note that string parameters may use C-style escape sequences, so DC2, for example, would be specified as ``"\022"''.

Class2RELCmd

The command to use to enable the delivery of byte-aligned EOL codes in received facsimile. If this parameter is defined, then received facsimile data will be marked to indicate that EOL codes are byte-aligned; otherwise they will be marked as not (necessarily) having byte-aligned codes.

Class2SendRTC

Whether or not to append an explicit ``Return To Control'' (RTC) signal to the page data when transmitting. The Class 2 spec (i.e. SP-2388-A) states the modem will append RTC when it receives the post-page message command from the host; this parameter is provided in case the modem does not correctly implement this.

Class2SFLOCmd

The command to setup software (XON/XOFF) flow control between DTE and DCE when operating in Class 2/2.0. This command is issued immediately after sending the Class2Cmd to switch the modem to Class 2/2.0 operation. For Class 2.0 operation the default is ``AT+FLO=1''.

Class2SPLCmd

The command to use to enable a polling request.

Class2TBCCmd

The command to use to enable stream-mode communication between the host and modem.

Class2XmitWaitForXON

Whether or not to wait for an XON character from the modem before sending facsimile data to the modem for transmission. Note that this is only relevant for modems that conform to the Class 2 spec (i.e. SP-2388-A). The Class 2.0 specification states that the host may transmit data immediately upon receiving CONNECT and that no XON character will be sent to the host.

PAGER-RELATED CONFIGURATION PARAMETERS

The following parameters are specific to the configuration and operation of the IXO/TAP and UCP support for sending pager messages and GSM SM. Parameter not used for UCP are marked with ``(IXO/TAP only)''.

PagerSetupCmds

The commands to send to a modem to prepare the modem for a call to pager service provider. Typically these commands place direct the modem to communicate with the service provider at 300 bps using the V.21 protocol. Per-service provider command strings can be setup in the info database; see info(5).

PagerMaxMsgLength

The maximum length for a pager text message. Messages longer than this number are truncated. Per-service provider message lengths can be setup in the info database; see info(5).

IXOService

(IXO/TAP only) The service identification string transmitted as part of the IXO/TAP protocol.

IXODeviceID

(IXO/TAP only) The terminal device identification string transmitted as part of the IXO/TAP protocol.

IXOMaxUnknown

The maximum number of unrecognized messages that will be accepted at various stages of the IXO/TAP protocol before the sender will abort and hangup the phone.

IXOIDProbe

(IXO/TAP only) The time, in seconds, between sending a ``\r'' during the initial ID recognition sequence of the IXO/TAP protocol.

IXOIDTimeout

(IXO/TAP only) The maximum time, in seconds, to wait for the initial ID response from the service provider.

IXOLoginRetries

(IXO/TAP only) The maximum number of attempts to login to a service provider.

IXOLoginTimeout

(IXO/TAP only) The maximum time, in seconds, to wait to complete the login procedure.

IXOGATimeout

(IXO/TAP only) The maximum time, in seconds, to wait for a Go-Ahead message from the service provider.

IXOXmitRetries

The maximum number of times to try sending a text message block in a single call.

IXOXmitTimeout

The maximum time, in seconds, to try transmitting a text message block.

IXOAckTimeout

(IXO/TAP only) integer 0 IXO: max time to wait for msg block ack (secs) The maximum time, in seconds, to wait for an acknowledgement to a transmitted message.

PROTOTYPE CONFIGURATION FILES

Per-modem configuration files are typically derived from prototype files that have been created for known modems. These prototype files are kept in the config subdirectory and, by convention, have names that identify a brand or type of modem and the DTE-DCE flow control scheme the prototype files configures. The faxaddmodem(8) program that is used to configure a modem for use with HylaFAX selects a prototype configuration file using information retrieved from the modem and comments embedded in the prototype files. For Class 1 modems the product ID code returned by the command ``ATI0'' and the response from the comannd ``ATI3'' are used to select a prototype configuration file, while for Class 2 modems the manufacturer and model as returned by ``AT+FMFR?'' and ``AT+FMDL?'', respectively, are used (or ``AT+FMI?'' and ``AT+FMM?'' for Class 2.0 modems).

A Class 1 prototype configuration file is identified for use by faxaddmodem by searching for a comment of the form:

# CONFIG:CLASS1:144:.*:RTSCTS: Manufacturer='AT&T' Model=Dataport


In this example ``144'' is the product ID code for an AT&T DataPort modem, ``.*'' is a regular expression matched against the result string returned by the ``ATI3'' command, and ``RTSCTS'' indicates the modem is configured to use hardware flow control during fax operation. The remainder of the line is evaluated by the sh(1) and used to specify the modem's manufacturer and model (since Class 1 modems do not have standard commands to query this information).

Class 2 and 2.0 prototype configuration files match the string ``manufacturer-model-flowcontrol'' against a sh(1) glob pattern specified in the configuration file, where manufacturer and model are the strings returned by querying the modem and flowcontrol is either ``RTSCTS'' for hardware flow control or ``XONXOFF'' for software flow control. For example:

# CONFIG: CLASS2: ZyXEL*-RTSCTS
# CONFIG: CLASS2.0: USRobotics*-XONXOFF

are configuration comments that appear in the prototype file for a ZyXEL 1496E with Class 2 support, and for a US Robotics Courier modem with Class 2.0 firmware.

The faxaddmodem program merges server-specific configuration parameters into a prototype configuration according to comments placed in the prototype file. All lines between ``BEGIN-SERVER'' and ``END-SERVER'' comments are placed with the appropriate server configuration parameters. Note that this means modem-related configuration parameters must be placed outside this area of the file.

SEE ALSO

faxaddmodem(8), faxq(8), faxgetty(8), faxsend(8), hylafax(5)