A modem for a PC may be either internal or external. The internal one is installed inside of your PC (you must remove screws, etc. to install it) and the external one just plugs into a serial port on a PC. Internal modems are less expensive, usually use less electricity, and use up no space on your desk. External modems are much easier to install, require less configuration, and have lights which may give you a clue as to what is happening. External modems are easy to move to another computer. Most external modems have no switch to turn off the power supply when not in use and thus are likely to consume a little electricity even when turned off (unless you unplug the power supply from the wall). Each watt they draw costs you about $1/yr. Another possible disadvantage of an external is that you will be forced to use an existing serial port which may not support a speed of over 115,200 k (although as of late 1998 most new internal modems don't either --but some do). If a new internal modem had a 16650 UART it would put less load on the CPU (but almost none do as of late 1998).
Internal modems present a special problem for Linux, but will work just as well as external modems provided you avoid the high percentage of them that will work only for MS Windows, and also provided that you spend time to configure them correctly. While new modems are plug-and-play you have various ways to deal with them: use the "isapnp" program, have a PnP Bios do the configuring, or patch the kernel to create a PnP Linux. There are many Linux users that say that it's a lot simpler just to get an external modem and plug it in. But as you can see from this section, the choice is not so clear cut.
Many external modems are labeled "Plug and Play" (PnP) but they should all work fine as non-PnP modems. Since you usually plug the modem into a serial port which has its own IRQ number and I/O address, the modem needs no PnP features to set these up. However, the serial port itself may need to be configured (IRQ number and I/O address) unless the default configuration is OK.
How can an external modem be called PnP since it can't be configured by PnP? Well, it has a special PnP identification built into it that can be read (thru the serial port) by a PnP operating system. Such an operating system would then know that you have a modem and know the model number. Then you might not need to configure application programs by telling them what port the modem is on (such as /dev/ttyS2 or COM3). But if you don't have a PnP operating system you will need to configure your application program manually by giving it the /dev id (such as ttyS2).
Connecting an external modem is simple compared to connecting most other devices to a serial port that require various types of "null modem" cables. Modems use straight through cable, with no pins crossed. Most computer stores should have these. Make sure you get the correct gender. If you are using the DB9 or DB25 serial port at your computer, it will always be male. Do not confuse the male DB25 serial port with the parallel port, which is a female DB25. Hook up your modem to one of your serial ports. If you are willing to accept the default IRQ and I/O address of the port you connect it to, then you are ready to start your communication program and configure it.
An internal modem is installed in a PC by taking off the cover of the PC and inserting the modem into a vacant slot on the motherboard. There are modems for the ISA slots and others for the PCI slots. While external modems plug into the serial port (via a short cable) the internal modems have the serial port built into the modem. In other words, the modem card is both a serial port and a modem.
Setting the I/O address and IRQ for a serial port was formerly done by jumpers on the card. These are little black rectangular "cubes" about 5x4x2 mm in size which push in over pins on the card. Plug-and-Play modems (actually the serial port part of the modems) don't use jumpers for setting these but instead are configured by sending configuration commands to them. Both a PnP BIOS and programs such as "isapnp" (for the ISA bus only) under Linux can send them such commands and thus configure them. The configuring of them is built into Windows 95/98 OS. Under Linux you have a choice of ways (none of which is always easy) to io-irq configure them:
In late 1998, the majority of internal modems don't work with Linux since it may be a "Winmodem" or "Windows Modem" although they often don't state it directly like this. Besides "Winmodems" a modem which doesn't simulate a serial port will not work under Linux. If you can look at the package it came in (or a manual) find the section on the package that says something like "Minimum System Requirements" or just "System Requirements". It may be in fine print. Read it closely. If Windows (and/or Dos) is listed as one of the requirements then it will likely not work under Linux.
Otherwise, it probably will work under Linux if it fails to state explicitly that you must have Windows. By saying it's "designed for Windows" it may only mean that it fully supports Microsoft's plug-and-play which is OK since Linux uses the same plug-and-play specs. Being "designed for Windows" thus gives no clue as to whether or not it will work under Linux. You might check the Website of the manufacturer or inquire via email. I once saw a web-page that specifically stated that one model worked under Linux while implying that another model didn't.
As far as the author knows, there is no effort underway to support Winmodems in Linux. You might request that modem manufacturers port their code to Linux (or the like).
Such modems use DSP's (Digital Signal Processors) which are programmed by algorithms which must be downloaded from the hard disk to the DSP's memory just before using the modem. Unfortunately, the downloading is done by Dos/Windows programs so one can't do it from Linux. Ordinary modems that work with Linux often have a DSP too (and may mention this on the packaging), but the program that runs it is stored inside the modem. This is not "DSP modem" in the sense of this section and should work OK under Linux.
If a DSP modem modem simulates a serial port, then it is usable with Linux which communicates with modems via the serial port. If you also have Dos/Windows on the same PC you may be able to use the modem: First start Dos/Windows (make sure the modem gets initialized) and then without turning off the computer, go into Linux. One way to do this is to press CTRL-ALT-DEL. An example of a DSP modem is IBM's Aptiva MWAVE.
Modems that require Rockwell RPI drivers are not fully usable since the driver software doesn't work on Linux. The RPI does compression and error correction using MS Windows software on your computer's CPU. If you are willing to operate the modem without using the RPI (and have no compression nor error correction) then you may easily disable RPI by sending the modem (via the initialization string) a command to do so each time you power on your modem. Not having data compression available may not be much of a handicap since most long files which you download from the Internet are already compressed and attempts at further compression may only slow things down a bit.
A PCI modem card is one which inserts into a PCI-bus slot on the motherboard of a PC. On the net, it's claimed by some (but not all) that Linux doesn't support PCI modems. Of course if it's a Winmodem or if the interface doesn't emulate a serial port, it's not supported. All PCI modems that I've seen for sale state the Windows is required. After you install a PCI modem, look at /proc/pci and if you see an IRQ and an I/O address that is under 0xFFFF ??, then it might work OK. If instead of an I/O address you see a high memory address, it probably works by shared memory which is not supported by Linux. The fact that some people have gotten PCI modems to work under Linux indicates that it's possible in some cases.