*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  Linux HOWTOs -> Modem-HOWTO: Introduction              
Modem-HOWTO: Introduction Next Previous Contents

1. Introduction

1.1 DSL, Cable, and ISDN Modems in other HOWTOs

This HOWTO covers conventional analog modems for PCs on the ISA, PCI, or USB buses. USB coverage is weak. For other types of modems see:

1.2 Also not covered: PCMCIA Modems, PPP

For modems on the PCMCIA bus see the PCMCIA-HOWTO: PCMCIA serial and modem devices. This HOWTO also doesn't cover PPP (used to connect to the Internet via a modem) or communication programs. Except it does show how to use communication programs to test that your modem works OK and can make phone calls. If you want to use a modem to connect to the Internet then you need to set up PPP. There's a lot of documentation for PPP (including a PPP-HOWTO). More documentation should be found in /usr/doc/ppp, /usr/share/doc/ppp or the like.

1.3 Copyright, Disclaimer, Trademarks, & Credits


Copyright (c) 1998-2003 by David S. Lawyer mailto:dave@lafn.org

Please freely copy and distribute (sell or give away) this document in any format. Send any corrections and comments to the document maintainer. You may create a derivative work and distribute it provided that you:

  1. If it's not a translation: Email a copy of your derivative work (in a format LDP accepts) to the author(s) and maintainer (could be the same person). If you don't get a response then email the LDP (Linux Documentation Project): submit@en.tldp.org.
  2. License the derivative work in the spirit of this license or use GPL. Include a copyright notice and at least a pointer to the license used.
  3. Give due credit to previous authors and major contributors.

If you're considering making a derived work other than a translation, it's requested that you discuss your plans with the current maintainer.


While I haven't intentionally tried to mislead you, there are likely a number of errors in this document. Please let me know about them. Since this is free documentation, it should be obvious that I cannot be held legally responsible for any errors.


Any brand names (starts with a capital letter such as MS Windows) should be assumed to be a trademark). Such trademarks belong to their respective owners.

"Hayes" is a trademark of Microcomputer Products Inc. I use "winmodem" to mean any modem which originally required MS-Windows and not in the trademark sense. All other trademarks belong to their respective owners.


The following is only a rough approximation of how this this document (as of 2000) was created: About 1/4 of the material here was lifted directly from Serial-HOWTO v. 1.11 (1997) by Greg Hankins. mailto:gregh@twoguys.org (with his permission). About another 1/4 was taken from that Serial-HOWTO and revised. The remaining 1/2 is newly created by the new author: David S. Lawyer mailto:dave@lafn.org.

1.4 Contacting the Author

Since I don't follow the many different brands/models of modems please don't email me with questions about them (or suggestions of which one to buy). If you are interested in a certain model (to find out if it works under Linux, etc.) see the huge list at Web Sites. Also, please don't ask me how to configure a modem unless you've looked over this HOWTO and still can't do it. I've no personal experience with software-based modems.

Please let me know of any errors in facts, opinions, logic, spelling, grammar, clarity, links, etc. But first, if the date is over a month or two old, check to see that you have the latest version. Please send me any other info that you think belongs in this document.

1.5 New Versions of this HOWTO

New versions of this Modem-HOWTO should come out every few months. Your problem might be solved in the latest version. It will be available to browse and/or download at LDP mirror sites. For a list of such sites see: http://www.tldp.org/mirrors.html If you only want to quickly compare the date of this the version v0.34, November 2004 with the date of the latest version go to: http://www.tldp.org/HOWTO/Modem-HOWTO.html

1.6 New in Recent Versions

For a full revision history going back to the first version see the source file (in linuxdoc format) at http://www.ibiblio.org/pub/linux/docs/HOWTO/other-formats/sgml/Modem-HOWTO.sgml.gz.

  • v0.34 Nov. 2004: Sentence fragment: ... "use up" fixed. url tag error. Distinctive ring workaround. LPC bus.
  • v0.33 Aug. 2004: Modems use telco power, Some external serial modems need Windows ?? Again: new gromitkc url
  • v0.32 Dec. 2003: Still newer gromitkc url w/o pop ups; more on devfs
  • v0.31 Nov. 2003: Mgetty dial-in, setserial rewritten
  • v0.30 August 2003: New gromitkc url
  • v0.29 July 2003 New gromitkc url, but many links in it are broken
  • v0.28 June 2003: Parallel port modems, lockfile permissions for wvdial
  • v0.27 May 2003: "Flow control" improved
  • v0.26 March 2003: USB clarity improved, v.92 modem "on hold" supported?, 3Com AT codes
  • v0.25 September 2002: Must restart minicom after configuring it unless you used the -s option. HCF is not an all-software modem as was incorrectly claimed. Better clarity for "Quick Install" and 56k modems. Does my PC have a modem?

1.7 What is a Modem ?

A modem (or analog modem) is a device that lets one send digital signals over an ordinary telephone line not designed for digital signals. If telephone lines were all digital then you wouldn't need a modem. But sometimes, a substitute for an analog modem, connected to a digital phone line, is imprecisely called a "digital modem". A modem permits your computer to connect to and communicate with the rest of the world. When you use a modem, you normally use a communication program or web browser to utilize the modem and dial-out on a telephone line. Advanced modem users can set things up so that others may phone in to them and use their computer. This is called "dial-in".

There are four basic types of modems for a PC: external serial, USB, internal, and built-in. The external serial and USB set on your desk outside the PC while the other two types are not visible since they're inside the PC. Sometimes the USB type is called "USB external". The external serial modem plugs into a connector on the back of the PC known as a "serial port". The USB modem plugs into the USB bus cable. See USB Modems. The internal modem is a card that is inserted inside the computer. The built-in modem is part of the motherboard and is thus built into the computer. It's is just like an internal modem except it can't be removed or replaced. As of 2001, built-in modems are primarily for laptops. What is said in this HOWTO regarding internal modems will generally apply also to built-in modems.

For a more detailed comparison see External vs. Internal. When you get an internal or, built-in, modem, you also get a dedicated serial port (which can only be used with the modem and not with anything else such as another modem or a printer). In Linux, the common serial ports are named ttyS0, ttyS1, etc. (or tts/0, tts/1 for the device file system (devfs). These ports usually corresponding respectively to COM1, COM2, etc. in Dos/Windows). But in special cases, the names are longer: ttySHCF0 is the 0th serial port for a type of winmodem (HCF = Host Controlled Family). New types of serial ports just add some more letter to ttyS.

See Modem & Serial Port Basics for more details on how modems and serial ports work. With a USB modem, the driver simulates a serial port at for example /dev/ttySHCFUSB or /dev/usb/asm/0 (for devfs).

Modems usually include the ability to send Faxes (Fax Modems). See Fax for a list of fax software. "Voice" modems can work like an automatic answering machine and handle voicemail. See Voicemail Software.

The v.92 protocol can put the modem "on hold" when someone makes an ordinary voice call to your telephone, provided that you have "call waiting" from your telephone company. Thus you can get a phone call while online. As of Jan. 2003 Linux doesn't seem to support it. If this is the latest version of this HOWTO, let me know about any Linux support for it. Some linmodem drivers may support it (but what if you have a hardware modem ?).

1.8 Does My Computer Contain an Internal Modem ?

Internal modems usually have a pair of modular telephone jacks on the back of the computer. They should be right next to each other and each one looks like a jack on the interior wall of a building where a telephone plugs in. One of the pair should be labeled "line" (or the like) which is where you plug in the telephone line.

Network cards also have modular jacks, but they are seldom in pairs and are slightly wider since they normally have 8 pins. Internal DSL "modems" exist and also have modular telephone jacks, but I think they are not very common (most DSL modems are external) as of 2002.

1.9 Quick Install

External Serial Modem Install

With a straight-thru or modem cable, connect the modem to an unused serial port on the PC. Make sure you know the name of the serial port: in most cases COM1 is ttyS0, COM2 is ttyS1, etc. You may need to check the BIOS setup menu to determine this. Plug in the power cord to provide power to the modem. See All Modems for further instructions.

Internal Modems (ISA, PCI and AMR)

The first thing to do is to make sure that the modem will work under Linux since (as of 2002) many modems don't. If it's a "winmodem" you'll need a driver for it (if one exists). See modem list and Software-based Modems (winmodems). If the modem is both PnP and directly supported by the serial driver (kernel 2.4 +) or by a winmodem driver then there is no configuring for you to do since the driver should configure it.

To physically install a modem card, remove the cover of the PC by /removing some screws. Find a matching vacant slot for the card next to the other adapter cards. Before inserting the card in the slot, remove a small cover plate on the back of the PC so that the telephone jacks on the card will be accessible from the rear of the PC. Then carefully align the card with the slot and push the card all the way down into the slot. Attach the card with a mounting screw (usually 3mm, .5mm pitch --don't use the wrong size).

You may watch the boot-time messages to see if your modem is detected. Use "dmesg" to see them or shift-page-up to scroll the screen back after they have flashed by.

Internal Modems: Manual configuration

Normally, you don't need to do this manual configuration since the modem's serial port should automatically be assigned a port at boot-time. For example: ttyS14 at I/O 0x6450 (IRQ = 10). Otherwise (or if there is some special reason to change the configuration) then you need to configure it yourself. You first need to decide which ttySx (or ttys/x) to assign it to (x is an integer). Pick a ttySx that is not already in use by other serial ports. Then you have the problem of setting an IRQ number and IO address. For PnP modems: If the BIOS has already set these in the physical device (which a PnP BIOS will do if it thinks you don't have a PnP OS) then you need to determine the IRQ and IO address and then tell this to "setserial".

In other cases you may have some choice of IRQs and IO addresses (including the case where you are able to change what the BIOS has set). See Choosing Serial IRQs and Choosing Addresses. For ISA modems there are standard IO addresses to use (corresponding to the ttySx). For example you may find it feasible to use /dev/ttyS2 at IO address 0x3e8 and IRQ 11. PCI modems seem to use different IO addresses so as not to conflict with ISA modems.

Old ISA Modems: What IOs and IRQs may be used?

For old modems with jumpers look at the modem manual or look for printing on the modem card that tells you what the jumpers do. If the BIOS has already configured the ISA modem, then "pnpdump --dumpregs" should show it. If you need to set or change them use "isapnp". Use the "pnpdump" to see what changes are possible.

Both PCI and ISA: Use setserial to tell the serial driver

You must find the file where "setserial" is run at boot-time and add a line something like: "setserial /dev/ttyS2 irq 5 port 0x0b8". For setserial v2.15 and later the results of running "setserial" on the command line may (or may not) be saved to /etc/serial.conf so that it runs each time you boot. See What is Setserial for more info. See the next subsection All Modems for further instructions on quick installation.

Use MS Windows to set the BIOS (A last resort method)

If you are using the BIOS to configure you may attempt to use MS Windows9x to "force" the BIOS to set a certain IRQ and/or IO. It can set them into the PnP BIOS's flash memory where they will be used to configure for Linux as well as Windows. See "Plug-and-Play-HOWTO and search for "forced" (occurs in several places). For Windows3.x you can do the same thing using the ICU under Windows 3.x. A few modems have a way to disable PnP in the modem hardware using software (under Windows) that came with the modem.

All Modems

Plug the modem into a telephone line. Then configure a dialing program. If you have an Internet Service Provider (ISP) you might configure one of these : wvdial, gnome-ppp, modem lights (Gnome) or kppp. They not only dial out but start PPP, which you need to connect to the Internet. Otherwise, you might try configuring the minicom dialer which isn't designed for connecting to the Internet, but is good for testing. Whether it's minicom or a dialer that starts PPP, set the serial port speed to a baud rate a few times higher than the bit rate of your modem. See Speed Table for more details on the "best" speeds to use. Tell it the full name of your serial port such as /dev/ttyS1 (or /dev/ttys/1).

Minicom is one way to set up and test your modem. Set hardware flow control (RTS/CTS). With minicom you may check to see if your modem is there (and ready to dial). Once you've set up minicom, type the command: AT, hit enter and you should see an "OK" response which comes directly from the modem. See Dialing Out with Minicom.

Next Previous Contents
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service