old-www/HOWTO/Modem-HOWTO-1.html

382 lines
19 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
<TITLE> Modem-HOWTO: Introduction</TITLE>
<LINK HREF="Modem-HOWTO-2.html" REL=next>
<LINK HREF="Modem-HOWTO.html#toc1" REL=contents>
</HEAD>
<BODY>
<A HREF="Modem-HOWTO-2.html">Next</A>
Previous
<A HREF="Modem-HOWTO.html#toc1">Contents</A>
<HR>
<H2><A NAME="s1">1.</A> <A HREF="Modem-HOWTO.html#toc1">Introduction</A></H2>
<H2><A NAME="ss1.1">1.1</A> <A HREF="Modem-HOWTO.html#toc1.1">DSL, Cable, and ISDN Modems in other HOWTOs</A>
</H2>
<P> This HOWTO covers conventional analog modems for PCs on the PCI,
USB, LPC, and ISA buses. USB and ISDN coverage is weak. For other
types of modems see:</P>
<P>
<UL>
<LI> DSL-HOWTO</LI>
<LI> ADSL-Bandwidth-Management-HOWTO</LI>
<LI> Cable-Modems-HOWTO (same as Cable Modem Providers HOWTO)</LI>
<LI> SuSE ISDN Howto (not a LDP Howto)
<A HREF="http://brenner.chemietechnik.uni-dortmund.de/doc/sdb/en/html/isdn.html">http://brenner.chemietechnik.uni-dortmund.de/doc/sdb/en/html/isdn.html</A></LI>
<LI>
<A HREF="http://public.swbell.net/ISDN/overview.html">http://public.swbell.net/ISDN/overview.html</A>
tutorial on ISDN </LI>
<LI> ISDN docs in the kernel documentation subdirectory: "isdn".</LI>
<LI>
<A HREF="http://www.isdn4linux.de">http://www.isdn4linux.de</A></LI>
<LI>
<A HREF="Modem-HOWTO-25.html#other_modems">Appendix D: Other Types of Modems</A></LI>
</UL>
</P>
<H2><A NAME="ss1.2">1.2</A> <A HREF="Modem-HOWTO.html#toc1.2">Also not well covered: PCMCIA Modems, PPP</A>
</H2>
<P> For modems on the PCMCIA bus see the PCMCIA-HOWTO: PCMCIA serial
and modem devices. This HOWTO also doesn't cover the details of PPP
(used to connect to the Internet via a modem) or communication
programs. If you want to use a modem to connect to the Internet then
you need to use a program that will automatically set up PPP for you
(such as wvdial). More documentation on ppp should be found in
/usr/doc/ppp, /usr/share/doc/ppp or the like.</P>
<H2><A NAME="ss1.3">1.3</A> <A HREF="Modem-HOWTO.html#toc1.3">Copyright, Disclaimer, Trademarks, &amp; Credits</A>
</H2>
<H3>Copyright</H3>
<P> Copyright (c) 1998-2005 by David S. Lawyer
<A HREF="mailto:dave@lafn.org">mailto:dave@lafn.org</A></P>
<P>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:</P>
<P>
<OL>
<LI> 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.</LI>
<LI>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.</LI>
<LI>Give due credit to previous authors and major contributors.</LI>
</OL>
</P>
<P>If you're considering making a derived work other than a
translation, it's requested that you discuss your plans with the
current maintainer.</P>
<H3>Disclaimer</H3>
<P> 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.</P>
<H3>Trademarks.</H3>
<P> 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. </P>
<P>"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.</P>
<H3>Credits</H3>
<P> The following is only a rough approximation of how this this
document was created in the year 2000: About 1/4 of the material here
was lifted directly from Serial-HOWTO v. 1.11 (1997) by Greg Hankins.
<A HREF="mailto:gregh@twoguys.org">mailto:gregh@twoguys.org</A> (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
<CODE>
<A HREF="mailto:dave@lafn.org">mailto:dave@lafn.org</A></CODE>. Since 2000 much more has
been added by the current author so that little remains of the modem
coverage in the old Serial-HOWTO.</P>
<H2><A NAME="ss1.4">1.4</A> <A HREF="Modem-HOWTO.html#toc1.4">Contacting the Author</A>
</H2>
<P> 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
<A HREF="Modem-HOWTO-20.html#web_sites">Web Sites</A>. 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.</P>
<P>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.</P>
<H2><A NAME="new_vers"></A> <A NAME="ss1.5">1.5</A> <A HREF="Modem-HOWTO.html#toc1.5">New Versions of this HOWTO </A>
</H2>
<P> 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:
<A HREF="http://www.tldp.org/mirrors.html">http://www.tldp.org/mirrors.html</A> If you
only want to quickly compare the date of this the version v0.39, January 2007 with
the date of the latest version go to:
<A HREF="http://www.tldp.org/HOWTO/Modem-HOWTO.html">http://www.tldp.org/HOWTO/Modem-HOWTO.html</A></P>
<H2><A NAME="ss1.6">1.6</A> <A HREF="Modem-HOWTO.html#toc1.6">New in Recent Versions</A>
</H2>
<P> For a full revision history going back to the first version see
the source file (in linuxdoc format) at
<A HREF="http://cvsview.tldp.org/index.cgi/LDP/howto/linuxdoc/Modem-HOWTO.sgml">http://cvsview.tldp.org/index.cgi/LDP/howto/linuxdoc/Modem-HOWTO.sgml</A>.</P>
<P>
<UL>
<LI>v0.39 Jan. 2007 gromitkc url (modem list) seems to be no longer
maintained. Redefined "antique modems" as all under 56k speed.
setpci can't set IRQs. devfs is obsolete. vgetty supports ITU v.253</LI>
<LI>v0.38 May 2005: Eliminated section on Digital Modems in appendix
since it's already covered elsewhere. More on cable modems. ISDN
serial modems. Troubleshooting: Can't find winmodems if no driver.</LI>
<LI>v0.37 Feb. 2005: For AMR, codec is on motherboard. Fixed a few typos.
Better clarity for Dial-In. "NO CARRIER" likely not displayed when
remote hangs up.</LI>
<LI>v0.36 Feb. 2005 Rewrote "Quick Install" oriented towards PCI.
Some external RS-232 modems are winmodems. /dev/modem.</LI>
</UL>
</P>
<H2><A NAME="what_is_modem"></A> <A NAME="ss1.7">1.7</A> <A HREF="Modem-HOWTO.html#toc1.7">What is a Modem ? </A>
</H2>
<P> 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 the computer remotely. This is
called "dial-in".</P>
<P>Oversimplified, there are four basic types of analog modems for a PC:
external serial (RS-232), USB (= external 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.
The external serial modem plugs into a connector on the back of the PC
known as a "serial port". The USB modem plugs into a USB cable. See
<A HREF="Modem-HOWTO-2.html#usb_">USB Modems</A>. The internal modem is a card that
is inserted inside the computer. The built-in modem is a chip on the
motherboard used primarily in laptops. What is said in this HOWTO
regarding internal modems will generally apply also to built-in
modems. Internal modems are further subdivided into PCI, ISA, and
AMR, depending on whether they are designed for the PCI or ISA bus, or
for an AMR slot. </P>
<P>For an external vs internal comparison see
<A HREF="Modem-HOWTO-2.html#int_vs_ext">External vs. Internal</A>. 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 an external modem or
console terminal). In Linux, the common serial ports are named ttyS0,
ttyS1, etc. These ports usually corresponding respectively to COM1,
COM2, etc. in Dos/Windows). But in special cases, the names are
longer such as: ttySHCF0 is the 0th serial port for a type of winmodem
(HCF = Host Controlled Family). New types of serial ports just add
some more letters to ttyS.</P>
<P>See
<A HREF="Modem-HOWTO-4.html#basics_">Modem &amp; Serial Port Basics</A> 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.</P>
<P>Modems usually include the ability to send Faxes (Fax Modems). See
<A HREF="Modem-HOWTO-15.html#fax_">Fax</A> for a list of fax software. "Voice" modems
can work like an automatic answering machine and handle voicemail.
See
<A HREF="Modem-HOWTO-12.html#voice_">Voicemail Software</A>.</P>
<P>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 that doesn't use any linmodem driver?).</P>
<H2><A NAME="ss1.8">1.8</A> <A HREF="Modem-HOWTO.html#toc1.8">Does My Computer Contain an Internal Modem ?</A>
</H2>
<P> 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.</P>
<P>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.</P>
<H2><A NAME="quick_install"></A> <A NAME="ss1.9">1.9</A> <A HREF="Modem-HOWTO.html#toc1.9">Quick Install </A>
</H2>
<H3>Very Quick Install</H3>
<P> If you think your modem will work under Linux and needs no special
driver, then just physically install/connect it. Start you computer,
watch the boot-time messages for Linux to find the modem. Note it's
the serial port number such as ttyS2 (/dev/ttyS2). Connect a phone
line to it and dial out with say wvdial (after configuring wvdial).
If the above doesn't work, read on.</P>
<H3>Will my modem work under Linux?</H3>
<P>So called "winmodems" will work under Linux only if a driver for it
exists and gets installed. In this case it's called a "linmodem"
since it can be made to work under Linux. If it's made prior to 2004
see
<A HREF="http://64.126.95.102:8080/gromitkc/winmodem.html">old modem list</A> and
<A HREF="Modem-HOWTO-2.html#soft_modem">Software-based Modems (winmodems)</A>. There's no point of installing a modem that
will not work with Linux.</P>
<H3>External Serial Modem Install</H3>
<P> At one time (2002 ?) no external serial modem was a winmodem but
that's no longer the case. 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
<A HREF="#all_modems">All Modems</A> for further instructions.</P>
<H3>Internal Modems (ISA, PCI and AMR)</H3>
<P>If the modem is both PnP and directly supported by the
serial driver (kernel 2.4 +) or by a winmodem driver that you've
installed, then there is no configuring for you to do since the driver
should configure it.</P>
<P>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).</P>
<P>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.</P>
<H3>Internal Modems: Manual configuration</H3>
<P>Normally, you don't need to do this manual configuration since the
modem's serial port may be detected and 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 (or perhaps update your kernel to increases the
likelihood that the modem gets detected). If your modem has no ttyS
number assigned to it, it can't be used until it gets a ttyS number
(like ttyS10). It thus can't be detected by application programs such
as dialers or minicom. But it might be found by using say "lspci -v"
if it's on the PCI bus.</P>
<P>Finding a lost modem may not be easy and you may need to read a lot
more of this HOWTO. Once found, you need to use the "setserial"
program to manually assign it to an available ttyS? port of your
choice . For this you need to know both it's IO address (such as
0x6450) and its IRQ (such as 10). In the worst case, the modem has
been disabled by a failing to be detected and enabled by the BIOS (or
Linux) and doesn't have any IO address nor IRQ number. But you may
still be able to find it. Older modems could be disabled by a jumper
on the card or in rare cases by MS software. </P>
<P>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
<A HREF="Modem-HOWTO-6.html#choose_IRQ">Choosing Serial IRQs</A> and
<A HREF="Modem-HOWTO-6.html#choose_address">Choosing Addresses</A>. </P>
<H3>Old ISA Modems</H3>
<P>ISA modems normally use ttyS0 - ttyS3. 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. They have standard IO addresses
corresponding to the ttySx. For example you may find it feasible to
use /dev/ttyS2 at IO address 0x3e8 and IRQ 11.</P>
<P>If it has no jumpers then it's likely a Plug-and-Play modem which the
BIOS may configure when you power one your PC. Typing "pnpdump
--dumpregs" should find it. If you need to set or change them use
"isapnp". Use the "pnpdump" program to see what changes are possible.</P>
<H3>Both PCI and ISA: Use setserial to tell the serial driver</H3>
<P> 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 file named serial.conf
or autoserial.conf. It might be in say the /etc directory or in the
/var/lib/setserial directory (use "locate to find it). it runs each
time you boot. See
<A HREF="Modem-HOWTO-10.html#set_serial">What is Setserial</A> for
more info. See the next subsection
<A HREF="#all_modems">All Modems</A> for further instructions on quick installation.</P>
<H3>Use MS Windows to set the BIOS (A last resort method)</H3>
<P> 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.</P>
<H3><A NAME="all_modems"></A> All Modems </H3>
<P> 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, pppconfig, 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
<A HREF="Modem-HOWTO-14.html#speed_table">Speed Table</A> 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).</P>
<P>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
<A HREF="Modem-HOWTO-11.html#minicom_">Dialing Out with Minicom</A>.</P>
<H2><A NAME="ss1.10">1.10</A> <A HREF="Modem-HOWTO.html#toc1.10">dev/modem</A>
</H2>
<P> If your modem is on say /dev/ttyS2, you may want to link that to
/dev/modem. It's not really necessary to do this since you can write
down (or remember) say ttyS2 and tell it to programs that use the
modem. It may be simpler to just link it. To link it, type say
<CODE>ln -s /dev/ttyS2 /dev/modem </CODE>. Note "ttyS2" is just for
example. It might actually be ttyS14, etc. Or use Red Hat's
modemtool (or the like) to link it. But once you link it, be sure
that all programs that use the modem use /dev/modem and not
/dev/ttyS2, otherwise two programs may try to use the modem at the
same time without knowing they are doing this. System software was
written around 2000 to fix this problem but it may not be in recent
kernels (like 2.6).</P>
<HR>
<A HREF="Modem-HOWTO-2.html">Next</A>
Previous
<A HREF="Modem-HOWTO.html#toc1">Contents</A>
</BODY>
</HTML>