Handbook:Advanced Server Configuration:Modems that Lie about their Capabilities

Class 2 and 2.0 fax modems all too frequently have bugs in their firmware. Sometimes it is possible to workaround firmware problems by restricting a modems' capabilities. To do this the Class2DCCQueryCmd configuration parameter may be set in the per-modem configuration file. By default this parameter holds the command to send the modem to query its capabilities. However if the query string has a leading ``!'' then no command is sent to the modem and instead the remainder of the string is treated as the response returned by the modem. Thus to avoid using a particular modem capability all you need to do is setup a capabilities string that has a restricted set of modem capabilities.

Capabilities are returned using a syntax specified in the Class 2/2.0 specification:

 (vr),(br),(wd),(ln),(df),(ec),(bf),(st) 

where,

 vr

indicates which vertical resolutions are supported, br indicates which signaling rates are supported, <DT>wd</TT> <DD>indicates which page widths are supported, <DT>ln</TT> <DD>indicates which page lengths are supported, <DT>df</TT> <DD>indicates which data formats are supported, <DT>ec</TT> <DD>indicates whether or not the optional Error Correction Mode (ECM) is supported, <DT>bf</TT>

<DD>indicates whether or not the optional Binary File Transfer (BFT) protocol is supported, and <DT>st</TT> <DD>indicates which minimum scan times are supported. </DL></UL>

Each parameter is specified as single value, range of values (e.g. 0-3</TT>), or list of values (e.g. 0,1,2</TT>). The values are given in the Class 2/2.0 specification and in the following table (note that this table does not list values defined in the latest ITU T.class2 specification):

An example use of this mechanism is found in the prototype configuration file for the AT&T DataPort modem. The rev C01.66.10 firmware for the DataPort returns an invalid string for the AT+FDCC=?</TT> query command so the prototype configuration file supplies a valid one instead:

Class2DCCQueryCmd:    "!(0,1),(0-5),(0-4),(0-2),(0),(0),(0),(0-7)"

Beware of specifying that a modem has capabilities that it does not; HylaFAX is likely to try and make use of them!