Next Previous Contents

26. Appendix G: Antique Modems

26.1 Obsolete CCITT (ITU) and Bell Protocols

This section compares the antique modems with the modern ones. You should read it if you are interested in modem history or are intending to actually use an antique modem.

QAM= Quadrature Amplitude Modulation. The word "Quadrature" is short for "quadrature differential phase shift keying" =QDPSK

26.2 Overview

Before v.32 modems typically had speeds of 300 to 2400 bps. Some super fast ones had much higher speeds (such as 19.2k bps) and used non-standard protocols. To utilize these "fast" ones, both modems for a connection usually needed to be of the same brand.

Prior to the v.42 standard for error correction and the v.42bis (1990) standard for data compression, the MNP standards were usually used for both error correction and data compression. An X.PC error correction standard was used on some commercial data networks. Compression and error correction were available on some 2400 bps modems.

Around 1980 many modems only had a speed of 300 bps (which was also 300 baud). This is only 0.3kbps. Modern modems are over 100 times faster. Some old-slow modems are still in use so they are not really "antique" quite yet.

26.3 Autobauding

Various meanings

This term has a few different meanings. In general it means the automatic adjustment of modem-to-modem speed or modem-to-serial_port speed.

Modem-to-modem speed

Modern modems negotiate the modem-to-modem speed and protocol when they first connect to each other. If one side can't negotiate, the other side should accept whatever speed and protocol that the antique modem has available. Sometimes this is called "autobauding". When both modems automatically lower their speed due to a noisy line it's called "fallback". Thus users of modern modems (or computer programs in your PC) don't need to deal with this (unless the S37 register has been set so as to disable autobauding).

But many old modems didn't have such autobauding (although many had fallback). If you have such a modem, it will likely work OK if the other modem you connect to is a modern one that can adjust it's speed and protocol to yours. But a problem arises if both modems which want to communicate with each other are both antique and don't support autobauding. How was this done?

In olden days, a computer dial-in site might have a number of phone lines, each of which would have a specific speed modem on it. For example, if you had a 1200 bps modem then you simply only dialed in to certain telephone numbers that supported that speed. Once a site obtained modems that could support various speeds on the same modem and automatically detect the callers speed (do autobauding) then people could call in using modems that didn't do this autobauding (providing that their speed and protocol was supported).

Modem-to-serial_port speed

When a modem modem is sent an init string (or a dial command), the modem detects the speed of the serial port and sets it's modem-to-serial_port speed to this value. It does this by sensing the speed of the "AT" at the beginning of the string.

Old modems couldn't do this and one would need to set the computer's serial port speed (with stty or the like) to the same exact value as the modem-to-modem speed (such as 1200 bps). If the modem had a choice of speeds one could use the AT register S37 to select one. But for dial-in when there was a choice of speeds (via autobauding), if a connection was made at say 2400 bps, then the modem-to-serial_port speed would change to 2400 bps. Then one would need to start getty at 2400 bps. Thus getty needed to adjust to whatever speed was coming from the modem.

One way for getty to determine this speed was to read the "CONNECT" message (provided the modem had been configured for CONNECT to show the modem-to-modem speed). The modem might send this CONNECT message to the serial port at whatever modem-to-serial_port speed had been set (as detected by the "AT" sent to the modem). This enabled getty to read the CONNECT message. But after the connect message, this speed would immediately switch to the modem-to-modem speed. Then getty could change the serial port speed to this and the connection would work OK.

Another way to try to set the serial port speed to match was to try out different speeds. The original getty program configuration file /etc/gettydefs has an optional autobauding feature (see "next-label" in the manual) which will change the speed of the serial port. The agetty program has a similar baud rate detection feature. This was used to adjust the speed of the serial port to the modem-to-modem speed of an incoming dial-in call.

In Linux, there's a problem if the speed is set to a speed not supported by Linux's serial port (for example 7200 bps). You may dial out and connect at 7200 bps (both modem-to-modem and modem-to-serial_port speed) but you only see garbage since Linux doesn't support 7200 on the serial port. Once you connect there is no simple way to hang up because even the +++ escape sequence can't be sent to the modem over a 7200 baud interface.

To dial out by the antique method using a modern modem set &Q0 N0 and S17=5 (if you want 1200 bps). Some of the S17 settings vary with the make of modem except that S17=0 is the default that connects the modern way at the highest speed supported.

Modern modems can use almost any serial port speed and it doesn't depend at all on modem-to-modem speed. To do this they employ speed buffering and flow control. Speed buffering means that modems have buffers so that there can be a difference between the modem-to-modem speed and the modem-to-serial_port speed. If the flow entering the modem is faster than the flow exiting it, the excess flow is simply stored in a buffer in the modem. Then to prevent the buffer from overflowing, the modem sends a flow control signal to stop the input flow to the modem. This is true for either direction of flow. See Flow Control for more details.

26.4 Before AT Commands

Hayes introduced the AT command set and other modem manufacturers adopted it as a standard. Before the AT commands, many modems used dip switches to configure the modem. Another command set is the CCITT V.25bis command set. Some modems supported both CCITT and AT commands. The CCITT V.25bis also specifies how Synchronous modem-to-serial_port communication is to take place using either the ASCII or 8-bit EBCDIC character sets.

26.5 Data Compression and Error Correction

MNP 2, 3, or 4 were used for error correction. MNP 5 was compression. Modern modems generally use V42 (error correction) and V42bis (compression). Many modems support both MNP and V42.

END OF Modem-HOWTO


Next Previous Contents