CCSO User Guide 501:
                     Modem Basics and Setup
                        by Mark S. Zinzow

       (Tenth composition draft Tuesday, November 1, 1994)
Introduction

This  document  provides  an  introduction  to  modems  and   the
information necessary to configure them and solve basic problems.
 It begins with  an overview  of some  of the  basic signals  the
RS-232 serial interface uses to connect  an external  modem to  a
computer.  The importance of these signals  for proper  operation
of  the  modem  will  be  discussed in  terms of  both modem  and
software  configuration.    Other  modem features  and tables  of
common modem control commands for setting them will be presented,
followed by trouble-shooting ideas for  common problems,  general
tips and tricks, and a list of references for further reading.

The Modem Plug (RS-232 Interface overview)

The  EIA  (Electronic  Industries  Association)  RS-232  standard
specifies signals for serial interfaces used to connect computers
and modems.   For technical  precision, the  terms Data  Terminal
Equipment (DTE) and Data Communication Equipment  (DCE) are  used
to distinguish between the computer and the modem, respectively. 
This is useful because serial interfaces are used for many things
besides computers and modems  such as  dumb terminals,  plotters,
scanners, printers, etc.   These terms are important because they
are used to define the interface signals.   A  different type  of
serial cable is needed to connect a modem to a  computer (DTE  to
DCE connections use a modem cable) than is used to, say,  connect
one computer to another (DTE to DTE connections use a  null-modem
cable).  Null modem cables are used by such PC  programs such  as
Lap-Link, or the MS-DOS INTERLNK command.
  
The  standard  is  based  on  a  25-pin connector,  of which  ten
connections are commonly used.  The names of the signals and  the
pin designations on a standard DB25 pin connector are: protective
(frame) ground 1, transmit  data 2,  receive data  3, request  to
send 4,  clear to  send 5,  data set  ready 6,  signal ground  7,
carrier detect 8, data terminal ready 20, and ring indicator 22. 
Many manufacturers have designed serial connectors that use fewer
connections, such as the IBM AT DB9 connector,  or the  Macintosh
DIN 8.  To  simplify discussion  of these  signals this  document
will  generally only  refer to  pin designation  numbers for  the
standard 25-pin  connector (DB25).   Modem  cables for  computers
with non-standard connectors are usually available which  provide
a  DB25  connector  at  the modem  end with  a subset  of the  10
connections mentioned above.

Three  of these  connections are  absolutely essential:  transmit
data, receive data, and signal ground.  The transmit data line is
where data are transmitted from the computer (DTE)  to the  modem
(DCE).  The receive data line is where data are received from the
modem  (DCE)  by  the  computer  (DTE).    Signal  ground is  the
reference against which all other signals apply  voltage.   Think
of a battery and a light bulb: it is not possible for current  to
flow without two wires.  Signal ground is the second wire for all
the other signals.  

Here is a table with signal abbreviations and descriptions of
other important signals:
                             Table 1
        RS232C  Standard
Source Pin-Function Designations        Explanation
-           1   PG  Ground (protective) Ground connection for
equip. frame and/or power cord.
DTE     2   TD  Data (Transmit)    Information sent from the
computer or terminal (DTE).
DCE     3   RD  Data (Receive)     Information sent from the
modem (DCE) to the DTE.
DTE     4   RTS  Request to Send   Originally intended for the
DTE to request to send data during 
     half duplex operation (where data can only be sent in one
direction at a time), this signal is now used in       full
duplex (bi-directional communication) to indicate to the DCE that
the DTE is ready to receive data        and the DCE may send
data.   This is a signal from the computer telling the modem when
to send data.
DCE     5   CTS  Clear to Send     Originally used by the DCE to
indicate the DTE may transmit in half        duplex mode in
response to RTS, it is still used to indicate the DTE may
transmit for hardware flow         control under full duplex
operation.  This signal is used by the modem to tell the computer
when to send        data. 
DCE     6   DSR  Data Set Ready    Indicates the DCE is connected
and ready to go.
-           7   SG  Ground (signal)     Ground connection  to
which other    signals are referenced.
DCE     8   CD  Carrier Detector   Indicates an acceptable signal
received between DCE's.
      or DCD Data Carrier Detect   In essence it says the modem
can hear another modem at the 
                         other end of the phone line.
-           9   Data Set Test
-           10  Data Set test
-           11  Unassigned
DCE     12  SDCD  Secondary Carrier Detector
DCE     13  SCTS  Secondary Clear to Send
DTE     14  STD  Secondary Data (Transmit)
DCE     15  TC  Xmit Clock (DCE)
DCE     16  SRD  Secondary Data (Receive)
DCE     17  RC  Rcvr Clock (DCE)
-           18  Unassigned
DTE     19  SRTS  Secondary Request to Send
DTE     20  DTR  Data Terminal Ready    Indicates the DTE is
connected and ready to go.  
          Dropping this signal is often used to quickly hang up
the phone and disconnect a modem.
DCE     21  SQ  Signal Quality Detector Indicates a low-grade
signal on the line.
DCE     22  RI  Ring Indicator          Indicates an incoming
call ring signal.
DTE/DCE 23  Data Signal Rate Selector
DTE     24  Xmit Clock (DTE)
-           25  Unassigned

 Cable Diagram showing direction of signals with arrows -> <-
DTE (Computer)   1 FG                         FG 1  DCE (Modem)
                 2 TD  data     ->            TD 2  
                 3 RD  data      <-           RD 3  
                 4 RTS flow control    ->    RTS 4  
                 5 CTS flow control     <-   CTS 5  
                 6 DSR modem control    <-    TD 6  
                 7 SG                         SG 7  
                 8 DCD modem control    <-    TD 8  
                20 DTR modem control    ->    TD 20 
                22 RI  modem control    ->    TD 22 
                
One can see that these signals provide for more information to be
exchanged between a computer and a modem  than just  the text  or
other data going between the computers connected by modems.  Many
modems will not transmit or dial without  the DTR  signal.   Many
computers or communications  programs will  not transmit  without
the DSR or CD signals.  CD is used by the host  computer or  BBSs
to  determine if  a caller  has hung  up or  been disconnected.  
Devices  such  as breakout  boxes or  data line  monitors can  be
plugged into serial cables to display these signals on LEDs,  and
can be very useful for diagnosing problems.

Flow control is a mechanism for various communication devices  to
deal  with  one device  sending data  faster than  the other  can
receive it.  Flow control works by allowing one device to ask the
other to pause while it catches up.  There are three common types
of flow control used: hardware, software, and none.  Flow control
is not necessary when the transmission speed is  very slow,  such
as 300 baud or 300 bits per second (bps), and the devices at each
end  are  reasonably  fast.    (Technically  baud  means   signal
transitions per second, which is not the same as bits per  second
(bps)  because  with  higher  speed  modems a  single signal  can
designate more than one bit of data.  Hence a  9600bps modem  may
technically only transmit at 2400 baud.  For this reason bits per
second (bps) is the preferred term to use  when describing  modem
speed; however, many people continue to  use the  term baud  when
they mean bps.)

Software flow  control (often  called XON/XOFF  flow control,  or
Ctrl-S/Ctrl-Q flow control) uses data characters to indicate that
data flow should start and stop.   The  characters normally  (but
not always) used are Control-S/Control-Q, also known by the names
XON  and  XOFF  for   transmission  on   and  transmission   off,
respectively.  It is handy for a human (as well as  a device)  to
hit Ctrl-S to stop text from scrolling  on the  screen, and  then
Ctrl-Q to resume the flow of characters.  Sometimes a program  or
line noise can generate a Ctrl-S when  the user  does not  expect
it, then if the modem or host  computer are  using software  flow
control, things appear to hang until Ctrl-Q is pressed.  

Software flow control can be used with  a serial  cable that  has
only  three wires  in it,  but generally  it is  slower and  less
desirable than hardware flow  control.   It is  not suitable  for
binary file transfers because binary files may  contain the  flow
control characters.  A problem with software flow control is that
flow control characters generally cannot  be sent  to the  remote
host  when  they  are used  to control  the local  modem.   Error
control  protocols  provide    flow  control  between the  modems
without  using  data  characters  so  configuration  options  are
possible to pass these characters on to the remote  host with  or
without the local modem acting upon them for local flow control.

Hardware flow control (also known as RTS/CTS  flow control)  uses
wires in the modem cable, or  hardware built  into most  internal
modems.  Sometimes the CD/DTR signals are used  for flow  control
when  the  RTS/CTS signals  are not  available (or,  as on  Apple
Macintosh Computers, where one handshake  in signal  and one  out
are provided that can be used as DTR and  CTS for  unidirectional
modem  (DTR)  and  flow (CTS)  control).   Hardware flow  control
should be used with all high speed modems, and  with modems  that
provide data compression.  This must  be configured  both in  the
communications software and the modem setup.  

Flow control is very important since there can be three different
data rates between two computers (DTEs) connected by modems:  the
data flow rate between the computer and modem  that originates  a
call, the data flow rate  between the  two modems,  and the  data
flow rate between the modem and computer that answer  the call.  
In unusual cases one could theoretically have six different rates
should the transmit and  receive speeds  differ!   Communications
devices that use different transmit and receive rates are common,
especially   when   satellite   transmissions   are  involved.   
Interactive cable would be another example.

The important thing to consider about all  these different  rates
is  the one  between one's  modem and  computer.   This is  often
referred to as the DTE rate.  With 300, 1200, and 2400bps modems,
the convention was that the modem would display a CONNECT message
indicating which of these speeds was negotiated  when the  modems
handshaked, and then  switch to  that rate.   The  communications
software or the user would then have to switch the speed at which
the computer's serial port was operating  to match.   Many  modem
manuals describe this as "DTE to DCE  rate follows  link rate".  
With  this convention,  flow control  was not  usually needed  or
used.

With high speed modems and modems that provide data  compression,
the DTE rate is fixed, usually  at a  higher rate  than the  link
rate (the actual transmission speed of  the modems  on the  phone
line).  This rate difference, sometimes  called speed  buffering,
allows  a  modem  to  appear  faster  than  it  actually  is   by
representing the data in fewer bits between the two DCEs than are
used between the DTEs and the  DCEs.   This re-representation  of
bits  to  gain  additional  speed  is called  data compression.  
Because the modem receives bits of data faster than  it needs  to
transmit them, it has a little time to group these bits and apply
compression algorithms.  Of  course the  modem on  the other  end
must also have this speed differential for  the data  compression
to result in better end-to-end throughput.  

For more discussion of modem speeds (modulation protocols), speed
buffering, error correction, and data compression, please see any
text on data communications,  informational literature  available
from many modem manufacturers,  or the  document Modem  Protocols
Explained.  
URL: 
gopher://gopher.cc.columbia.edu:71/00/acis/datacom/modem.protocol
s
(URL  stands  for Uniform  Resource Locator  and is  used by  WWW
clients such as Lynx or NCSA Mosaic to find and open documents.  
For    more    information     on    URLs     see    the     URL:
http://info.cern.ch/hypertext/WWW/Addressing/URL/Overview.html)


Basic Modem Commands

This document is not  intended as  a replacement  for your  modem
owners manual or your communications software documentation,  but
it may serve as an introduction and perhaps even  a supplement.  
Since many misplace or find their owners manuals daunting,  modem
command codes for a variety of modems will be listed here.   Many
believe that a modem advertised as "Hayes compatible" means  that
a modem uses  one set  of commands.   This  is not  true.   Hayes
compatible modems loosely follow the command set of the  classic,
but dated Hayes SmartmodemTM 300.  All  modem commands  discussed
in this manual are for  modems that  are considered  at least  in
part Hayes compatible.   A number  of modems  have been  marketed
with completely  different command  structures that  will not  be
discussed here. 
When  a  modem  is  first  turned on  it will  usually perform  a
self-test, initialize its features to stored or factory settings,
and  then  start   listening  to   the  serial   port.     Serial
communications require that  both serial  devices communicate  at
the same speed.  Since the modem does  not know  what speed  your
computer will be using, it will usually auto-detect the speed and
configure its serial port to match.  This determines the  initial
DTE rate.  The auto-detection process sometimes works best if the
first characters sent to the modem are carriage return (enter) or
a  capital  A.   Hayes  commands (except  A/) begin  with the  AT
command for attention and executed when the return  or enter  key
is pressed.  How you type commands to your modem depends on  your
communications software.   In  window based  packages select  the
serial port and speed from a menu bar and then type  them in  the
main  window.    Command based  programs will  usually require  a
command to get to the modem rather than the software prompt  such
as  the  Connect  command  (or  just  C)  in  Kermit.    See  the
documentation for your software.  A typical dialog between a user
and a modem could look like this:

AT
OK
ATD 1234567
CONNECT 9600

Some modems are case sensitive and will not respond to lower case
"at" instead of  "AT".
If the AT characters do not appear on the screen but the OK
response does, the AT E1 command can be used to tell the modem to
echo command characters.  The dial command D is usually given as
DT for Dial Tone or DP for Dial Pulse.  Most modems will default
to pulse
dialing if the T or P portion of the command is left out.  Once
enter is pressed after typing the AT D command followed by the
phone number, the modem takes the phone line off hook and if it
has a speaker one should hear a dial tone.  The modem will either
respond to the dial tone immediately, or wait the number of
seconds specified by S register 6 (S6), usually depending on the
result code setting set with the X command.  (S registers are
locations in the modem where settings are stored or status
information can be examined.  See Table 3.)  

Result codes are quite different from one modem  to another,  but
usually configured with the V and X commands.  V0  and V1  denote
numeric and verbal result codes respectively.   The number  after
the X denotes the amount of detail and sometimes other features. 
With  X0  set  a  modem  will  report   simply  "CONNECT"   after
connecting. With X1  the speed  will be  indicated (e.g.  CONNECT
1200, or CONNECT  2400).   X1 uses  blind dialing  (after the  S6
delay) as opposed to dial tone detection (usually  X2 and  above,
or X  and even  numbers)    Blind  dialing is  useful in  several
situations, on a pbx or phone system  with an  unusual dial  tone
(e.g. voicemail) that may not be detected by the  modem, or  when
one wishes to dial a phone by hand and  then force  the modem  on
hook with the ATO command.  Manual  dialing is  useful on  modems
that cannot handle extremely long phone numbers and access  codes
used  by  some  long  distance services  (due to  a 40  character
command length limit), or occasionally some modems will break  in
a way that prevents them from dialing but they can still connect.
 Dial tone detection is usually preferred because the modem dials
faster.

AT X1 DT 1234567

AT X1 O

The X1 result code is good for reliability, but the larger X
numbers usually give more informative messages.  Beware however
that some of them can prevent a modem from connecting or dialing.
For example the X5 or X6 settings on USR Courier HST and DS
modems (at least the older models) attempt to detect a VOICE
should a modem not answer.  V.32bis connections are erroneously
interpreted as voice and the connection is dropped (NO CARRIER)

For brevity not all common commands will be discussed, but Table
2 is provided for a summary.  Commands which are followed by a
number assume the 0 value if no number is given. Multiple
commands can be given after one AT prefix as in previous
examples.

                             Table 2
                    Common AT modem commands
A   Answer incoming call
A/  Repeat last command.  (Don't preface with AT.  Enter usually
aborts.)
D   Dial the following number and then handshake in originate
mode.
    Dial Modifiers (These are common but most modems will have
more.)
    P  Pulse dial
    T  Touch Tone dial
    W  Wait for second dial tone
    ,  Pause for time specified in register S8 (usually 2
seconds)
    ;  Remain in command mode after dialing
    !  Flash switch-hook (Hang up for a half second as in
transfering a call)
E   Will not echo commands to the computer (also E0)
E1  Will echo commands to the computer (so one can see what one
types)
H   On Hook (hang up, also H0)
H1  Off Hook (phone picked up)
I   Inquiry, Information, or Interrogation 
(This command is very model specific. I0 usually returns a number
or code, while higher numbers often provide much more useful
information.)
L   Speaker Loudness (L0 off or low volume)  -\
L1  Low volume                                 } Modems with
volume control
L2  Medium volume (usual default)              } knobs will not
have these.
L3  Loud or high volume                      -/
M   Speaker off (M0) (M3 is also common, but different on many
brands)
M1  Speaker on until remote carrier detected (until the other
modem is heard)
M2  Speaker is always on (data sounds are heard after CONNECT)
O   Return Online (O0 see also X1 as dial tone detection may be
active)
O1  Return Online after an equalizer retrain sequence
Q   Quiet mode Q0 displays result codes, user sees command
responses (e.g. OK)
Q1  Quiet mode, result codes are suppressed, user does not see
responses
Sn? Query the contents of S-register n
Sn=r Store the value r in S-register n
V   non-Verbal (Numeric result codes V0)
V1  Verbal english result codes (e.g. CONNECT, BUSY, NO CARRIER
etc.)
X   Hayes Smartmodem 300 compatible result codes (X0) (Many have
more than 4)
X1  Usually adds connection speed to basic result codes (e.g.
CONNECT 1200)
X2  Usually adds dial tone detection (preventing blind dial and
sometimes ATO)
X3  Usually adds busy signal detection
X4  Usually adds both busy signal and dial tone detection
Z   Reset modem to stored configuration (Z0, Z1 etc. for multiple
profiles)
 (Same as &F (factory default) on modems with out NVRAM (non
volatile memory)

&C0 Carrier detect (CD) signal always on
&C1 Carrier detect indicates remote carrier (usual prefered
default)
&D0 Data Terminal Ready (DTR) signal ignored (See your manual on
this one!)
&D1 If DTR goes from On to Off the modem goes into command mode
(some modems)
&D2 Some modems hang upon DTR On to Off transition.  (usual
prefered default)
&F  Factory defaults (Most modems have several defaults &F1, &F2,
etc.)
&P  (&P0) U.S./Canada pulse dialing 39% make/ 61% break ratio
&P1 U.K./Hong Kong pulse dialing 33% make/ 67% break ratio
&T  Model specific self tests on some modems
&V  View active (and often stored) configuration profile settings
(or ATI4)
&W  Store profile in NVRAM (&W0, &W1 etc. for multiple profiles)
    Some settings cannot be stored.  These often don't show on &V
or ATI4
&Zn=x Store number x in location n for AT DS on some modems



                       Table 3 S-registers
Register Range      Default   Function
S0    0-255 rings   1-2     Answer on ring number  Don't answer
if 0
S1    0-255 rings    0      If S0>0 this register counts incoming
rings
S2    0-127 ASCII   43 +    Escape to command mode character 
S2>127 no ESC
S3    0-127 ASCII   13 CR   Carriage return character
S4    0-127 ASCII   10 LF   Line feed character
S5    0-32,127 ASCII 8 BS   Backspace character  
S6    2-255 seconds  2     Dial tone wait time (blind dialing,
see Xn)
S7    1-255 seconds 30-60  Wait time for remote carrier
S8    0-255 seconds  2     Comma pause time used in dialing
S9    1-255 1/10 sec. 6     Carrier detect time required for
recognition
S10   1-255 1/10 sec. 7-14  Time between loss of carrier and hang
up
S11  50-255 millisec. 70-95 Duration and spacing of tones when
tone dialing
S12   0-255 1/50 sec. 50    Guard time for pause around +++
command sequence

Many modems have dozens, even hundreds, of S registers, but only
the first dozen or so are fairly standard.  They are changed with
a command like ATSn=N, and examined with ATSn?
(e.g.  AT S10=70  S1?  would tell the modem not to hang up for
seven seconds should it not hear the answering modem, and return
the number of times the phone last rang.)

Modem Installation

External modems are installed by plugging the power cord into a
wall outlet or power strip, plugging the serial cable into the
serial connectors on the modem and the computer, and plugging the
phone cable from the wall into the modem, and often plugging a
phone into the modem as well.  

PC
Internal modems can be more complicated.  On Intel based or IBM
compatible systems one must first decide on the port I/O address
and on the IRQ address to configure the modem.  Generally the
modem should be installed at the next available address.  If the
system has two serial ports, the modem should be configured for
COM3.  If one is not familiar with the hardware installed in the
system, one can run MSD (if one has MS Windows or a recent MS DOS
) to view the communication port configuration before installing
the modem.  On older systems the DOS debug command can be used to
determine the number of already installed ports as in the
following example:

C:\>debug
-d 40:0    com1 com2 com3 com4
0040:0000  F8 03 F8 02 00 00 00 00-78 03 00 00 00 00 00 00  
........x.......
0040:0010  63 44 FF 80 02 00 08 00-00 00 1E 00 1E 00 79 15  
cD............y.
-q

At the DOS prompt one types the debug command.  The D command is
used to display memory at segment 40 offset 0 where the BIOS
serial port table is kept.  Each pair of hexidecimal digits
represents an installed port address in low/high byte format.  In
this case COM1 is installed at address 03F8, and COM2 is at 02F8.
This information is provided to DOS during the boot process by
the ROM BIOS.  Older versions of DOS, and older BIOS software on
286 "AT" systems and previous only supported two comm. ports, so
inspection of installed boards and owners manuals is necessary to
rule out the possibility of a third comm. port when two are
already present on these systems.  For information on identifying
cards and resolving conflicts  see the URL entitled: Apendix A:
PC System Resources commonly used by Ethernet Cards
http://tampico.cso.uiuc.edu/nas/nash/pc.ethernet/pc.ethernet.html
#A
Generally the owner's manual and installation guides that come
with the computer and modem cover the details of setting the
address via jumpers or dip switches.  Laptops often have power
saving features that disable a modem or serial port until it is
activated via software.  Sometimes this is an option in the
system setup.  Other times a utility program is included for this
purpose.

Mac
Apple Macintosh users generally need to use system extensions
and/or control panel devices to activate their internal modems.

Unix
Unix workstations usually require the system administrator to
perform several configurations which usually include modifying
the files /etc/ttys and /etc/gettytab among others.  These files
have man pages on most unix systems which usually cross reference
other relevant documents.


Modem Configuration

Modem  configuration is  often regarded  as one  of those  arcane
mysteries to only be understood by  computer nerds.   Many  users
ask  for  optimal  initialization  strings  for their  particular
modem,  and  many  are  posted  on  BBSs  and  newsgroups   (e.g.
comp.dcom.modems).  If one takes the time  to learn  some of  the
basic features available in most modems, one can  see that  these
strings are merely a series of commands that enable, disable,  or
specify parameters for these features.  Most modem  manufacturers
chose reasonable default values for these features in hopes  that
the  modem  will  be  usable with  little or  no configuration.  
Unfortunately these defaults vary from  one brand  (or model)  of
modem to another, and settings will depend on the features of the
computer and communications  software, as  well as  those of  the
system one wishes to call.

There are two ways to configure a modem: storing the
configuration in the modem or storing initialization strings in
one's communications software.  The former is generally simpler,
but not a feature of all modems.  The latter can be more
cumbersome, but allows for greater flexibility in allowing
different configurations for calling different services.  Here
are a few examples:
AT S0=0 &B1 &H1 &W  
 Set no answer, CTS flow control, fixed DTE rate, and store the
configuration on a U.S. Robotics modem such as a Courier or
Sportster.
AT S0=0 &K3 &W  
 Set no answer, hardware flow control, and store on a modem based
on the Rockwell RC144AC chip set such as the Gateway Telepath.

Tables 2,3,4 and 5 should prove helpful in selecting the optimal
configuration settings for your modem.  Some ZyXEL modems require
the ATZ command for &W to take effect.

A break signal is a special signal (not a character) implemented
by inverting the carrier signal for at least the time it would
take to transmit two characters and a few extra bits.  It is used
by Cisco terminal servers to return to a terminal server command
prompt when in transparent mode (for file transfers, set with the
TERMINAL DOWNLOAD command).  Some modems have a special command
\Bn to send a break signal, others must be configured to transmit
it or use it like DTR to hang up or enter command mode with \Kn.

(((Note this table will be flipped so the features are on the
left and the modems accross the top
    and hopefully greatly expanded.)))
                             Table 4
                Flow control and related commands

             Hardware      |    |  Software       |None  | DTE
rate
     Bidirectional|Unidir. |H&S |Bidirec.|Unidirect.     |
Modem      RTS/CTS|CTS*|RTS*|Both|XON/XOFF|DTE* DCE*|      |Fixed
 Adjusting
                  |    |   |    |        |    |   |      |      |
LineLink 144e  &K3|    |   |    |  &K4   |    |   | &K0  |      |
 or            \Q3|\Q2 |   |    |  \Q1   |\Q4 |   | \Q0  |      |
                  |    |   |    |        |    |   |      |      |
Rockwell Chips    |    |   |    |        |    |   |      |      |
RC144AC        &K3|    |   |    |  &K4   |    |   | &K0  |      |
RC144DP        \Q3|\Q2 |   |    |  \Q1   |\Q4 |\G1| \Q0  |  \J0 |
 \J1  
US Robotics &H1&R2&H1&R1 &R2 &H3|        |&H2 |   |&H0&I0|  &B1  
 &B0
                  |    |   |    |        |    |   |      |      |
ZyXEL U-Series &H3|    |   |    |  &H4   |    |   | &H0  |  &B1  
 &B0
                  |    |   |    |        |    |   |      |      |
Your Modem     ___|____|___|____|  ____  |____|___| ___  | ____ |
____
                !! !                                        !!

 
*Unidirectional flow controls rather than bidirectional.

"Transmit Data (TD) Flow Control" 
 CTS   The DCE (modem) controls data from the DTE (computer)
{Hardware}
 DTE   The DCE (modem) controls data from the DTE (computer)
{Software}

"Received Data (RD) Flow Control"
 RTS   The DTE (computer) controls data from the DCE (modem)
{Hardware}
 DCE   The DTE (computer) controls data from the DCE (modem)
{Software}

                             Table 5
               Error Control and Data Compression
                   Error Correction Protocols
                       V.42(LAPM & MNP2-4)
                               ...

Supra, most Rockwell based modems, ...
\A  64  character maximum MNP block size for stream links
\A1 128 character maximum MNP block size for stream links
\A2 192 character maximum MNP block size for stream links
\A3 256 character maximum MNP block size for stream links

                        Data Compression
Supra, ...
%D0 512 BLTZ Dictionary Size
%D1 1024 BLTZ Dictionary Size
%D2 2048 (default) BLTZ Dictionary Size
%D3 4096 BLTZ Dictionary Size if one-way compression (%M1 or %M2)

                               ...

Error Correction and Data Compression

Almost more confusing than the actual protocols and  modem
commands is the terminology used to describe error correction
(also called error control).  Error correction is similar to file
transfer protocols such as Kermit, X, Y, or Zmodem.  File
transfer protocols break files up into chunks called packets. 
Error correction does the same thing except the blocks of data
are called frames and are generally smaller than those typically
used by modern file transfer protocols.  In all cases additional
information such as a checksum is added to the packet (frame) to
verify that the data was undamaged in transit.  If the data does
not match the checksum the entire packet or frame must be resent.
This technique trades off some speed for reliability.   Like
sliding-windows protocols several frames may be sent before an
acknowledgment is required.  The maximum data block size and the
number of frames allowed before an acknowledgment is required are
parameters negotiated by the modems when they connect.  

MNP (Microcom Networking Protocol) 2-4 and 10 are error
correction protocols.
V.42 is the standard which uses either LAPM (Link Access
Procedures for Modems) error correction protocol or MNP 4, 3, or
2.
MNP 5 is a data compression protocol.  
V.42bis is the standard for the BTLZ data compression protocol
which is better than MNP 5.

Direct, Normal, and Reliable Connections.
Many modems will use these terms to distinguish between several
types of modem configurations.  A direct connection is the
old-fashioned sort with no error correction or data compression. 
In a direct connection the DTE rate (computer serial speed) and
the link rate
(modem connection speed) must match.  A normal connection uses
flow control for speed buffering so the DTE and link rates may
differ.  A reliable connection uses flow control and will often
hang up if error correction and data compression cannot be
established.  An auto-reliable connection is like a reliable one
except the modem will fall back to normal or direct mode
automatically rather than hang up.  The \N command is common to
control this, but it is not standard.

Here are some example command summaries for a few common modems
using \N:
Supra FAXmodem v.32bis      Bullet 14.4      
\N  Normal mode             \N0 Normal data link 
\N1 Direct mode             \N1 Direct data link
\N2 MNP Reliable mode       \N2 MNP reliable link
\N3 AutoReliable mode       \N3 MNP auto-reliable link
\N4 LAPM/MNP Reliable Mode  \N4 V.42bis reliable link with phase
detection
                            \N5 V.42bis auto-reliable link with
phase                                         detection
                            \N6 V.42 reliable link without phase
detection
                            \N7 V.42 auto-reliable link without
phase                                         detection
Software Configuration

Generally no parity, eight data bits, one stop bit, and hardware
flow control are the most common software settings.  Probably the
most complicated values to pick can be the DTE rate or serial
port speed.  This is most easily accomplished by starting at the
link rate of the modem and trying successively higher speeds and
observing the impact on performance.
{Possible topics: Windows.ini or system.ini settings, 16550
buffered UARTs, ...}

Common Problems and Solutions

Problem: Modem won't dial:
Try a regular phone on the modem line and listen for dial tone. 
If there is no dial tone the
problem is the phone line and not the modem.  
Try X1 to disable dial tone detection.
Try pulse dialing ATDP instead of ATDT.
Try dialing manually with a phone and then use AT X1 O

Problem:  Modem dials but won't connect:
Try adding commas after the phone number to increase the time the
originating modem waits for carrier, or increase the value of S7.
(e.g. AT S7=100 DT 1234567   or ATDT 1234567,,,,)
Try X1 for simple result codes esp. if VOICE result appears after
modem tone is heard.
Try configuring for a slower link rate (set a lower port speed in
your software or modem).
Try disabling MNP 4,5, V.42, and V.42bis protocols each.

Problem:   Modem hangs up for no reason during a connection:
Try \A0 for a 64 character maximum MNP block instead of the
default 256 char. block.
Disconnect all other phones and answering machines on the same
line to see if any of them
are interfering.
Call your phone company if you can hear static on your lines.
It is possible your modem may have a bug in its ROM, call your
support line to check on the
version of your ROM or for other problems unique to your modem.

Problem:  Zmodem file transfers don't work:
Check parity.  X, Y, and Zmodem require none (No Parity).
Check flow control.  Are the modem and software set the same,
preferably RTS/CTS?
When using a Cisco terminal server, use the TERMINAL DOWNLOAD
command before logging into the host for telnet transparent mode,
and use the rlogin command to connect instead of the default
telnet protocol used when just the hostname is typed.
Use the -l and -L sz options to require acknowledgements and
lower the packet size.  (See your Zmodem documentation, man sz on
Unix systems.)
Switch to a more robust protocol like Kermit.  Sometimes Ymodem
will work when Zmodem will not.

Problem:  Call waiting disconnects data calls:
Disable call waiting with *70 (or *71 in some areas) before the
phone number.   
AT DT *70, 111-2222          or      AT DP 1170+ 111-2222  
(Pulse)
(Note this feature is not always available, call your local
telephone company to be sure.)
Try increasing the value of S10.

References:
Your modem owner's manual!
CCSO User Guide 101: The CCSO Terminal Servers
CCSO User Guide 402: Kermit for File Transfer

WWW URLs:     http://pclt.cis.yale.edu/pclt/comisdn/default.htm
gopher://gopher.cc.columbia.edu:71/00/acis/datacom/modem.protocol
s
gopher://gopher.uiuc.edu:70/00/Computers/user-gui/ug101

Newsgroups: comp.dcom.modems, comp.answers, news.answers for
articles such as:
The NetComm Modem FAQ v1.6 by Anthony Rumble   
Fax/Modems: Practical Peripherals by Dan Birchall          
ZyXEL modem FAQ List v3.9, Aug 15 by Robert Wong        
Digicom modem FAQ version 2.03 by Wolfgang Henke    
(archived at ftp.whnet.com /pub/wolfgang/Digicom.faq)

Modem manufacturers that provide free literature or modem
information:   
U.S. Robotics, Inc., 8100 N. McCormick Blvd., Skokie, IL 60076, 
1 (800) DIAL-USR