This section will give you a thumbnail sketch of the modem types available out there, one tuned for the typical Unix installation's needs.
The modem market has stabilized, with a clear leader at a reasonable price. If you can afford it ($270 in August 2001) go buy a U.S. Robotics V.Everything external. You can then know that you've got the best and skip the rest of this section.
The modem market is like consumer electronics (and unlike the computer market as a whole) in that price is a very poor predictor of performance. For ordinary file transfers, some $50 modems are better than some $150 modems. Paying top dollar mainly buys you better tolerance of poor connections and better performance at heavy-duty bi-directional transfers (such as you would generate, for exmaple, using SLIP or PPP over a leased line to an Internet provider).
In today's market, the typical modem does a nominal 56kbps -- V.90 plus V.29 or V.17 fax transmission and reception (over plain old phone lines you won't get more than 53K of that). You don't see much in the way of slow/cheap to fast/expensive product ranges within a single brand, because competition is fierce and for many modem board designs (those featuring DSP (Digital Signal Processor) chips run by a program in ROM) adding a new protocol is basically a software change.
For much more information on high-speed modems for Unix, see The Linux/Modem Compatibility Knowledge Base. The page is aimed at Linux users, but the advice is general to any non-Windows OS.
Most modems come in two packagings: internal, designed to fit in a PC card slot, and external, with its own case, power supply, and front-panel lights. Typically you'll pay $20 to $30 more for an external modem than you will for the internal equivalent. You'll also need a serial port to connect your external modem to.
Pay that premium — being able to see the blinkenlights on the external ones will help you understand and recover from pathological situations. For example, if your Unix system is prone to ``screaming-tty'' syndrome, you'll quickly learn to recognize the pattern of flickers that goes with it. Punch the hangup/reset button on an external modem and you're done — whereas with an internal modem, you have to go root and flounder around killing processes and maybe cold-boot the machine just to reset the card.
See Rick's Rants for extended discussion of this point.
If the abbreviation ``RPI'' occurs anywhere on the box, don't even consider buying the modem. RPI (Rockwell Protocol Interface) is a proprietary ``standard'' that allows modem makers to save a few bucks at your expense by using a cheap-jack Rockwell chipset that doesn't do error correction. Instead, it hands the job off to a modem driver which (on a Unix machine) you will not have.
Also avoid anything called a ``Windows Modem'' or ``WinModem'', ``HCF, or ``HSP''; these lobotomized pieces of crap require a Windows DLL to run. They will eat up to 25% of your processor clocks during transfers, and hog high-priority interrupts (causing your machine to stall under Windows even if your processor still has spare cycles).
Multi-user Unix eats enough processor clocks that you want to be sure of good hardware buffering in your UART — that is, enough of it to avoid losing characters between modem and PC if the OS is a bit slow responding to an interrupt (V.42bis in hardware won't detect this!). This means you want a 16550A or equivalent UART. If you're using an external modem, this is an issue about your serial-port board(s). If you're using an internal modem, the UART is on the modem card itself. So, when buying internal modems, ask what the UART type is. If the vendor says 16540, lose them.
Many fax modems come with bundled MS-DOS fax software that is at best useless under Unix, and at worst a software kluge to cover inadequate hardware. Avoid these bundles and buy a bare modem — it's cheaper, and lowers the likelihood that something vital to your communications needs has been left out of the hardware.
Avoid ``Class 1'' and ``Class 2'' modems. Look for ``Class 2.0'' for the full EIA-standard command set.
What you want, these days, is a V.90 modem. V.90, formally, is the ITU-T recommendation for asymmetric data signalling rates of up to 56Kbps in the direction of a digitally connected server to a capable client, and up to 33.6Kbps in the direction of the client to the server.
The technology is based on eliminating restrictions imposed by the conversion of analog signals to digital form in the downstream data path (server -> client). Data flow in the server to client direction does not occur in the form of a modulated carrier, it is instead sent as binary numbers representative of 256 possible voltage levels. The reason for the asymmetrical send/receive rates is because in the direction from the client to the server it is not possible to use a digital coding scheme and make it work as well as V.34 does, thus V.34 is used instead. It isn't possible because the telco's line card has a codec that is a much better digital level changer for the transmit direction than it is for the receive direction. The codec used in the customer's modem is, in that respect, somewhat more sophisticated and was designed to work as a fairly good level changer in the receive direction (which the telco's codec was not designed to do).
Note: Achievable bit rates are limited to less than 56kbps in the United States by FCC regulations that limit power input to the network.
Beyond the V series, the telcos are pushing a technology called ADSL (Asymmetric Digital Subscriber Line). This method converts existing twisted-pair telephone lines into access paths for multimedia and high speed data communications. ADSL transmits more than 6Mbps to a subscriber, and as much as 640 kbps more in both directions.
An ADSL circuit connects an ADSL modem on each end of a twisted-pair phone line, creating three information channels; a high speed downstream channel, a medium speed duplex channel, and a POTS (Plain Old Telephone Service) channel. The POTS channel is split off from the digital modem by filters, thus guaranteeing uninterrupted POTS, even if ADSL fails. The high speed channel ranges from 1.5 to 6.1 Mbps, while duplex rates range from 16 to 640 kbps. Each channel can be sub-multiplexed to form multiple, lower rate channels.
Fax capability is included with most all modems these days; it's cheap for manufacturers, being basically a pure software add-on. The CCITT also sets fax protocol standards. Terms to know:
CCITT standard for Group III fax encoding at 9600bps
CCITT standard for Group III fax encoding at 14400bps
V.17 isn't common yet, but it doesn't usually cost extra over V.29 when you find it.
There's a separate series of standards for software control of fax modems over the serial line maintained by the Electronics Industry Association and friends. These are:
Class 1 — base EIA standard for fax control as extensions to the Hayes AT command set.
Class 2.0 — enhanced EIA standard including compression, error correction, station ID and other features.
Class 2 — marketroidian for anything between Class 1 and Class 2.0. Different ``Class 2'' modems implement different draft subsets of the 2.0 standard, so ``Class 2'' fax software won't necessarily drive any given ``Class 2'' modem.
There's also a proprietary Intel "standard" called CAS, Communicating Applications Specification. Ignore it; only Intel products support it.
The GNU toolset includes a freeware fax transmission and reception toolset, Netfax. Look for it at prep.ai.mit.edu:pub/gnu/fax-*. It says it requires a modem conforming to the ``Class 2'' control standard, but you'd be safest getting a 2.0-conformant modem for reasons explained above. Netfax also requires GNU Ghostscript to do Postscript handling for it.