COHERENT manpages
This page displays the COHERENT manpage for modem [Technical Information].
List of available manpages
Index
modem -- Technical Information
The word modem is an abbreviation for ``modulation/demodulation device''.
With the COHERENT system, you can attach a modem to your computer either to
dial out for remote communication, to let others dial into your COHERENT
system, or both. With your modem, too, you can use COHERENT's UUCP
commands to exchange mail and files with remote sites automatically, and to
download news and files from networks.
This article gives a summary of how to connect your modem to your computer,
describe it to the COHERENT system, and set it up for UUCP connections. It
also discusses some problems that may crop up when you attempt to use your
modem.
Internal vs. External Modems
You can use internal and external modems with COHERENT. You must plug an
external modem into a serial port on your system, whereas you must jumper
an internal modem to use one of your system's COM ports. Be sure to use a
COM port that is not already used on your system, or problems will result.
See the Lexicon entry for asy for details on how COHERENT handles COM
ports.
It is more difficult to diagnose problems with an internal modem because
you have no status lights to indicate operation; otherwise, they operate
almost identically. The rest of this article assumes that you are working
with an external modem.
Plugging in an External Modem
A modem must be hooked up to a serial port on your computer. To plug your
modem into the computer, simply take a normal serial-port cable, one with
an RS-232 plug of the appropriate gender at each end, plug one end into
your modem and the other into the serial port you wish to use. The Lexicon
article RS-232 describes the wiring of the RS-232 plug in detail; but if
you are not skilled with a soldering iron, you are well advised simply to
purchase a cable from your local electronics store and be done with it.
Serial Ports
The COHERENT system supports up to four serial ports; the devices for these
are named /dev/com1r through /dev/com4r. If you are not sure which port you
have plugged your modem into, perform the following test: First, turn on
the modem. Then, type the following command:
echo FOO >/dev/com1l
If the TX light on the modem blinks, then you know the modem is plugged
into com1. If it does not, try the command again for /dev/com2l, and so on
through com4l until you find the appropriate port. If no command works,
check the wiring on your cable and make sure that the plugs are securely
inserted.
Edit /etc/ttys
If you intend to use your modem with UUCP, you must edit file /etc/ttys to
tell COHERENT how you want it to handle that serial port. You must know
(1) whether you want the port enabled or disabled; (2) the baud rate of the
port (as set by your modem); and (3) the name of the port (which you just
determined).
If a port is enabled, remote users can log into the system, either via a
terminal directly plugged into the port or via a modem. COHERENT sends a
login prompt to every enabled port. The COHERENT system also restricts
permissions on all enabled serial ports, so that only the superuser root
can read and write to the port. This prevents other users who may be using
the system from accessing the serial port. If a port is disabled, you can
dial out or use a direct-connect UUCP connection via that disabled port.
To dial out on an enabled port, you must first use the command disable to
disable the port. When you have finished dialing out, run the command
enable to re-enable the port. (Note that UUCP automatically disables and
re-enables a port when it dials out to poll a remote system.) Before you
can use these commands with a port, the port must first be described in the
file /etc/ttys.
See the Lexicon article on ttys for details on how to edit this file. Note
that a modem is a remote device, and must be so described in /etc/ttys, or
it will not work correctly.
After you have made your changes, type the command
kill quit 1
to make COHERENT re-read /etc/ttys and implement your changes.
Remote-Access Passwords
If you intend to let people dial into your computer, you are well advised
to set the remote-access password. This will require that people who dial
in know a special password in addition to whatever password their personal
account may have.
If you wish, you can set a different remote-access password for each group
of users who log into your system, as organized by the program invoked upon
logging in. For example, you can give one password to the users who log in
and invoke uucico; and another to the users who log in and use the
interactive shells ksh or sh. For details on how to do this, see the
Lexicon entries for d_passwd and dialups.
Edit /usr/lib/uucp/dial
Once you have edited file /etc/ttys and have set the remote-access
password, check the file /usr/lib/uucp/dial and see if it holds a
description that matches your modem. The commands cu and uucico read the
descriptions in dial to control how they talk to modems. dial already
contains descriptions for many commonly used modems; but you may find that
you must edit an existing entry to match your modem's features exactly; for
example, the existing entry may assume that you have a Touch-Tone telephone
whereas you actually have a pulse telephone. The Lexicon entry on dial
will walk you through this process.
When you have completed editing this entry, write it down, for you will
need to insert it elsewhere.
Edit Port
If you intend to use your modem with UUCP, you must insert an entry for it
into your the file /usr/lib/uucp/port. This file links a modem, as
described in file /usr/lib/uucp/dial, with a port on your system. This
arrangement permits UUCP to use one description with several modems of the
same type, each plugged into a different port.
See the Lexicon entry port for details.
Walking Through UUCP Configuration
The following description walks you through the task of configuring your
modem to handle UUCP. It is adapted from a posting to comp.os.coherent by
Rob Schofield (schofld@mebv.mhs.compuserve.com).
First, decide whether you want outsiders (including outside UUCP sites) to
log into your COHERENT system. If you do, then you must add to file
/etc/ttys the name the incoming device -- that is, the device that the
remote users will log into. If you do not want incoming logins, you do not
need to have an incoming device installed in /etc/ttys and you can safely
omit it.
As described above, an entry in /etc/ttys consists of three one-character
fields, followed by the name of the device:
-> The first field indicates whether the device is enabled (that is, gets a
login prompt) or disabled (that is, does not get a login prompt).
-> The second field indicates whether the device is in ``raw'' mode or
whether it ``cooks'' its input (that is, handles backspaces correctly,
and so on). You should use `l' (for cooked input).
-> The third field gives the speed of the port; see the Lexicon entry
/etc/ttys for a list of recognized codes.
-> The device has the name /dev/com?r. The `?' in this name stands for the
number of the COM port into which you've plugged your modem, from `1' to
`4'. The `r' in the device name stands for the ``remote'' (i.e., modem)
device. If your modem is high speed (i.e., faster than 9600 baud) then
use the hardware-handshaking version of the remote device (i.e.,
/dev/com?fr).
For example, if you have plugged a 14.4-kilobaud modem into serial port 3,
insert the following line into file /etc/ttys:
1lQcom3fr
Once you have inserted this line into /etc/ttys, type the command:
kill quit 1
This forces COHERENT to re-read /etc/ttys and so recognize your change.
If you wish to dial out on your modem via programs cu or ckermit, or if you
wish to have your UUCP system dial other, remote sites, those systems must
use the local /dev/com?l on the same port number as your modem. If it is
high speed, again use the `f' version /dev/com?fl, which enables hardware
handshaking. This sounds may sound strange (after all, why use a terminal-
type device on a modem?), but there's a reason for it. When you use the
UNIX or COHERENT system call open() on a com?r port, the function call does
not return until it detects a ``true'' value on DCD -- and that occurs only
when someone has dialed in and the modems have connected. By using a com?r
device, you are only setting up the system for a getty to detect someone
dialing in; if you're dialing out, you do not need to detect DCD, hence the
use of a terminal device. Hence, cu, UUCP, and ckermit should all be used
with the outgoing port device, and not the incoming.
Do not add this port to /etc/ttys; rather, add it to the configuration
files used by the applications. In the case of ckermit, use its command
set speed. You can type this command either by hand, when you invoke
ckermit; or you can add it to file .kermrc in your home directory. For
details, see the Lexicon entry for ckermit. In the case of cu and UUCP, the
device must be named in the file /usr/lib/uucp/port. For example, to dial
out via our 14.4-kilobaud modem plugged into COM 3, add the following entry
to /usr/lib/uucp/port:
port exampleport
type modem
device /dev/com3fl
baud 19200
dialer exampledialer
The device is /dev/com3fl, not the device /dev/com3fr we added to
/etc/ttys. The `r' version of a port is used exclusively for dialing in;
the `l' version for dialing out.
Last little trick is to link the device you are using to a pseudo device
used by a few communication packages:
ln -f /dev/com?fl /dev/modem
Be sure to substitute the number of the port you're using (from `1' through
`4') for the `?' in the above example.
Modem Maladies
This section discusses problems that have arisen with remote login via
modem, as diagnosed by the technical support staff of Mark Williams
Company.
Difficulty in logging in from a remote site via modem can be the result of
problems in one or more of the following: cabling; enabling/disabling the
port; flaws in the contents of file /etc/ttys; incorrect configuration of
the modem; and setting the port to an incorrect state. See Lexicon
articles terminal and UUCP for additional information. The following
paragraphs discuss the above-named items in detail.
RS-232 Cabling
When attaching an external modem to your computer, it is important to
use a modem cable that supports ``full modem control''. COHERENT
relies on modem-control signals when operating a modem for remote
access purposes. When attaching a terminal directly to a serial port,
a ``null modem'' cable must be used. When attaching a modem, a
``straight through'' cable must be used. See Lexicon articles RS-232
and terminal for further details on cabling.
Enabled vs. Disabled Ports
A serial port can be either enabled or disabled for remote access.
Enabling a port allows a user on a remote terminal or modem to log
into your COHERENT system. Disabling a port permits a user to dial
out or use a direct connect UUCP connection via that disabled port.
If a port is enabled for remote logins and you will use it to call
out, you must use the command disable to disable the port before you
access the port. UUCP automatically disables and re-enables a port.
The port name supplied to an enable or disable command must exactly
match the last part of a line in the /etc/ttys file (see below). For
example, for the command enable com2pr to work, there must be an entry
in the file /etc/ttys which ends with com2pr.
When a port is enabled, the first character for the port in file
/etc/ttys is set to a `1' (one), the permissions for the port are
changed so that only the superuser root can read and write to the port
(to prevent other users on the system from accessing the port while a
remote session is in progress), and a login prompt is sent to the
port.
ttys Problems
This file should have permissions of 644 (-rw-r--r--) and belong to
owner and group root. Review the Lexicon entry for ttys to ensure that
the format of your version of /etc/ttys is correct.
Leaving blanks at the end of a line in /etc/ttys usually results in
error messages stating that a device could not be found.
You do not need to edit the initial `0' or `1' in entries in
/etc/ttys; this digit is updated by the commands enable and disable.
See the Lexicon entries for enable and disable for more information.
Constant Flickering
Another problem is a constant flickering of send/receive LEDs and an
unexplained continual access of the hard drive. This occurs when the
port is enabled and the modem is set in echo mode: COHERENT sends the
login prompt to the modem, the modem echoes it back to COHERENT,
COHERENT then thinks the modem is trying to talk to it and sends the
password prompt, and so on ad infinitum.
To fix this problem, place the modem into no-echo mode, and turn off
the display of result codes. The following section discusses this in
more detail.
Modem Configuration
A modem that fails to answer an incoming call, hangs up before locking onto
the remote carrier, becomes stuck in a loop echoing characters sent to it
from the computer, or fails to operate at the expected baud rate probably
is configured improperly. To remedy this situation, send the appropriate
control string to the modem.
We offer some guidelines here for modem settings. Be warned, however, that
modems from different manufacturers usually behave differently, regardless
of claims of Hayes compatibility: you must check the manual for your modem.
-> Echo should be OFF (usually by setting ``E0'').
-> Result codes should be OFF (usually by setting ``Q1'').
-> Modem status ``DCD'' should follow true carrier detect status, rather
than being always on (usually by setting ``&C1'').
-> Auto answer should be ON (usually obtained by setting register S0 to a
nonzero value equal to the number of rings before answer).
-> The delay value for ``Wait for Carrier/Dial Tone'' (usually register S7)
should not be too short.
The scripts below show typical initialization for a ``Hayes-compatible''
modem that runs at 2400 baud and is plugged into port /dev/com3r. It is
only an example; your modem may need something different. Please note that
the commands sleep and stty are necessary in the first example so that the
command string will be sent to the modem at 2400 baud; otherwise, the
string is sent at the default port speed, which is 9600 baud.
# initialize 2400-baud Hayes-compatible modem
sleep 3 > /dev/com3l &
stty 2400 < /dev/com3l
echo 'AT E0 Q1 V0 S0=1 &C1 M3' > /dev/com3l
sleep 3
The following gives a similar script for a Trailblazer modem that runs at
9600 baud and is plugged into port /dev/com2r:
# initialize 9600 baud internal Trailblazer on com2
/etc/disable com2r
sleep 3 > /dev/com2l &
stty 9600 < /dev/com2l
echo 'AT E0 T V0 X3 H0' > /dev/com2l
echo 'AT S0=1 S7=60 S48=1 S51=252 S52=0 S54=3 S58=2' > /dev/com2l
/etc/enable com2r
Modem Control
This section describes the modem-control protocol used by the driver asy,
which COHERENT uses to control serial ports. Modem control describes how
COHERENT handles RS-232 signals other than ``Receive Data'' and ``Transmit
Data''.
Many processes can open a device at the same time. First open occurs if a
process opens a device when no process has opened the device. Last close
occurs when a process closes the port and no other remaining process has
the port open. On first open, RTS and DTR are asserted by the computer,
regardless of whether the specified device used modem control. If modem
control is used (the high-order bit in minor number set to zero), open()
does not complete until CD is true. Once an al[01] device has been opened
with modem control, loss of CD to that port causes SIGHUP to be sent to all
processes in the group keeping the port open.
See Also
Administering COHERENT,
dial,
RS-232,
terminal,
UUCP
Notes
One final bit of hard-won wisdom: once you have something working, write
down what you did, and store it in a place where you won't lose it.



