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.
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:
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): email@example.com.
License the derivative work in the spirit of this license or use
GPL. Include a copyright notice and at least a pointer to the
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
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
"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
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:firstname.lastname@example.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
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.
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:
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?
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
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.
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
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.
Modem & Serial Port Basics for more details on how modems and serial ports
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.
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 ?).
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.
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
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
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.
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.