Differences between version 3 and revision by previous author of HowToModemHOWTO.
Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History
Newer page: | version 3 | Last edited on Tuesday, October 26, 2004 10:26:00 am | by AristotlePagaltzis | Revert |
Older page: | version 2 | Last edited on Friday, June 7, 2002 1:07:06 am | by perry | Revert |
@@ -1,7919 +1 @@
-
-
-
-Modem-HOWTO
-
-
-
-----
-
-!!! Modem-HOWTO
-
-!!David S.Lawyer
-
-mailto:dave@lafn.org v0.23, January 2002
-
-
-----
-'' Help with selecting, connecting, configuring, trouble-shooting, and
-understanding modems for a PC. See Serial-HOWTO for multiport serial
-boards.''
-----
-
-
-
-
-!!1. Introduction
-
-
-*1.1 DSL, Cable, and ISDN Modems in other HOWTOs
-
-*1.2 Also not covered: PCMCIA Modems, PPP
-
-*1.3 Copyright, Disclaimer, Trademarks, & Credits
-
-*1.4 Contacting the Author
-
-*1.5 New Versions of this HOWTO
-
-*1.6 New in Recent Versions
-
-*1.7 What is a Modem ?
-
-*1.8 Quick Install
-
-
-
-
-
-!!2. Modems for a Linux PC
-
-
-*2.1 External vs. Internal
-
-*2.2 Is a Driver Needed ?
-
-*2.3 External Modems
-
-*2.4 Internal Modems
-
-*2.5 Software-based Modems (winmodems, linmodems)
-
-*2.6 PCI Modems
-
-*2.7 AMR Modems
-
-*2.8 USB Modems
-
-*2.9 Which Internal Modems might not work with Linux
-
-
-
-
-
-!!3. Modem Pools
-
-
-*3.1 Introduction
-
-*3.2 Analog Modem Pools, Multi-modem Cards
-
-*3.3 Digital Modems, RAS
-
-
-
-
-
-!!4. Serial Port and Modem Basics
-
-
-*4.1 What is a Serial Port ?
-
-*4.2 IO Address & IRQ
-
-*4.3 Names: ttyS0, ttyS1, etc.
-
-*4.4 Interrupts
-
-*4.5 Flow Control
-
-*4.6 Data Flow Path; Buffers
-
-*4.7 Serial Driver Module
-
-
-
-
-
-!!5. Configuring Overview
-
-
-
-
-!!6. Locating the Serial Port: IO address, IRQs
-
-
-*6.1 IO & IRQ Overview
-
-*6.2 PCI Bus Support
-
-*6.3 Common mistakes made re low-level configuring
-
-*6.4 IRQ & IO Address Must be Correct
-
-*6.5 What is the IO Address and IRQ per the driver ?
-
-*6.6 What is the IO Address & IRQ of my Serial Port Hardware?
-
-*6.7 Choosing Serial IRQs
-
-*6.8 Choosing Addresses --Video card conflict with ttyS3
-
-*6.9 Set IO Address & IRQ in the hardware (mostly for PnP)
-
-*6.10 Giving the IRQ and IO Address to Setserial
-
-
-
-
-
-!!7. Configuring the Serial Driver (high-level) "stty"
-
-
-*7.1 Introduction
-
-*7.2 Hardware flow control (RTS/CTS)
-
-*7.3 Speed Settings
-
-*7.4 Ignore CD Setting: clocal
-
-*7.5 What is stty ?
-
-
-
-
-
-!!8. Modem Configuration (excluding serial port)
-
-
-*8.1 Finding Your Modem
-
-*8.2 AT Commands
-
-*8.3 Init Strings: Saving and Recalling
-
-*8.4 Other AT Modem Commands
-
-*8.5 Blacklisting
-
-*8.6 What AT Commands are Now Set in my Modem?
-
-*8.7 Modem States (or Modes)
-
-
-
-
-
-!!9. Serial Port Devices /dev/ttyS2, (or /dev/ttys/2) etc.
-
-
-*9.1 Devfs (The new Device File System)
-
-*9.2 Serial Port Device Names & Numbers
-
-*9.3 USB (Universal Serial Bus) Ports
-
-*9.4 Link ttySN to /dev/modem
-
-*9.5 cua Device Obsolete
-
-
-
-
-
-!!10. Interesting Programs You Should Know About
-
-
-*10.1 What is setserial ?
-
-*10.2 What is isapnp ?
-
-*10.3 What is wvdialconf ?
-
-
-
-
-
-!!11. Trying Out Your Modem (Dialing Out)
-
-
-*11.1 Are You Ready to Dial Out ?
-
-*11.2 Dialing Out with wvdial
-
-*11.3 Dialing Out with Minicom
-
-*11.4 Dialing Out with Kermit
-
-
-
-
-
-!!12. Dial-In
-
-
-*12.1 Dial-In Overview
-
-*12.2 What Happens when Someone Dials In ?
-
-*12.3 56k doesn't work
-
-*12.4 Getty
-
-*12.5 Why "Manual" Answer is Best
-
-*12.6 Dialing Out while Waiting for an Incoming Call
-
-*12.7 Ending a Dial-in Call
-
-*12.8 Dial-in Modem Configuration
-
-*12.9 Callback
-
-*12.10 Voice Mail
-
-*12.11 Simple Manual Dial-In
-
-*12.12 Complex GUI Dial-In, VNC
-
-*12.13 Interoperability with MS Windows
-
-
-
-
-
-!!13. Uugetty for Dial-In (from the old Serial-HOWTO)
-
-
-*13.1 Installing getty_ps
-
-*13.2 Setting up uugetty
-
-*13.3 Customizing uugetty
-
-
-
-
-
-!!14. What Speed Should I Use with My Modem?
-
-
-*14.1 Speed and Data Compression
-
-*14.2 Where do I Set Speed ?
-
-*14.3 Can't Set a High Enough Speed
-
-*14.4 Speed Table
-
-
-
-
-
-!!15. Communications Programs And Utilities
-
-
-*15.1 Minicom vs. Kermit
-
-*15.2 List of Communication Software
-
-*15.3 SLiRP and term
-
-*15.4 MS Windows
-
-
-
-
-
-!!16. Two Modems (Modem Doubling)
-
-
-*16.1 Introduction
-
-*16.2 Modem Bonding
-
-
-
-
-
-!!17. Troubleshooting
-
-
-*17.1 My Modem is Physically There but Can't be Found
-
-*17.2 "Modem is busy"
-
-*17.3 I can't get near 56k on my 56k modem
-
-*17.4 Uploading (downloading) files is broken/slow
-
-*17.5 For Dial-in I Keep Getting "line NNN of inittab invalid"
-
-*17.6 I Keep Getting: ``Id "S3" respawning too fast: disabled for 5 minutes''
-
-*17.7 My Modem is Hosed after Someone Hangs Up, or uugetty doesn't respawn
-
-*17.8 NO DIALTONE
-
-*17.9 NO CARRIER
-
-*17.10 uugetty Still Doesn't Work
-
-*17.11 (The following subsections are in both the Serial and Modem HOWTOs)
-
-*17.12 My Serial Port is Physically There but Can't be Found
-
-*17.13 Extremely Slow: Text appears on the screen slowly after long delays
-
-*17.14 Somewhat Slow: I expected it to be a few times faster
-
-*17.15 The Startup Screen Show Wrong IRQs for the Serial Ports.
-
-*17.16 "Cannot open /dev/ttyS?: Permission denied"
-
-*17.17 "Operation not supported by device" for ttyS?
-
-*17.18 "Cannot create lockfile. Sorry"
-
-*17.19 "Device /dev/ttyS? is locked."
-
-*17.20 "/dev/tty? Device or resource busy"
-
-*17.21 "Input/output error" from setserial or stty
-
-*17.22 Overrun errors on serial port
-
-*17.23 Port get characters only sporadically
-
-*17.24 Troubleshooting Tools
-
-
-
-
-
-!!18. Flash Upgrades
-
-
-
-
-!!19. Other Sources of Information
-
-
-*19.1 Misc
-
-*19.2 Books
-
-*19.3 HOWTOs
-
-*19.4 Usenet newsgroups
-
-*19.5 Web Sites
-
-
-
-
-
-!!20. Appendix A: How Analog Modems Work (technical) (unfinished)
-
-
-*20.1 Modulation Details
-
-*20.2 56k Modems (V.90, V.92)
-
-*20.3 Full Duplex on One Circuit
-
-*20.4 Echo Cancellation
-
-
-
-
-
-!!21. Appendix B: Digital Modem Signal Processing (not done)
-
-
-
-
-!!22. Appendix C: "baud" vs. "bps"
-
-
-*22.1 A simple example
-
-*22.2 Real examples
-
-
-
-
-
-!!23. Appendix D: Terminal Server Connection
-
-
-
-
-!!24. Appendix E: Other Types of Modems
-
-
-*24.1 Digital-to-Digital "Modems"
-
-*24.2 ISDN "Modems"
-
-*24.3 Digital Subscriber Line (DSL)
-
-*24.4 56k Digital-Modems
-
-*24.5 Leased Line Modems
-
-
-
-
-
-!!25. Appendix F: Fax pixels (dots)
-
-
-
-
-!!26. Appendix G: Antique Modems
-
-
-*26.1 Introduction
-
-*26.2 Old CCITT (ITU) and Bell Protocols
-
-*26.3 Historical Overview
-
-*26.4 Proprietary protocols, etc.
-
-*26.5 Autobauding
-
-*26.6 Modem-to-modem Speed
-
-*26.7 Modem-to-serial_port Speed
-
-*26.8 Before AT Commands
-
-*26.9 Data Compression and Error Correction
-
-----
-
-!!1. Introduction
-
-!!1.1 DSL, Cable, and ISDN Modems in other HOWTOs
-
-
-
- This HOWTO covers conventional analog modems for PCs on either the
-ISA, PCI, or USB bus. USB coverage is weak. For other types of
-modems see:
-
-
-
-
-
-* DSL-HOWTO (formerly ADSL mini-howto)
-*
-
-* Cable-Modems-HOWTO (same as Cable Modem Providers HOWTO)
-*
-
-* SuSE ISDN Howto (not a LDP Howto)
-http://brenner.chemietechnik.uni-dortmund.de/doc/sdb/en/html/isdn.html
-*
-
-*
-http://public.swbell.net/ISDN/overview.html
-tutorial on ISDN
-*
-
-* ISDN docs in the kernel documentation subdirectory: "isdn".
-*
-
-*
-http://www.isdn4linux.de (1998, old)
-*
-
-*
-Appendix D: Other Types of Modems
-*
-
-
-
-
-
-!!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
-
-
- Copyright (c) 1998-2001 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:
-
-
-
-
-
-# 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@linuxdoc.org.
-#
-
-#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.
-#
-
-#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.
-
-
-
-
-!Disclaimer
-
-
- 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.
-
-
-
-
-!Trademarks.
-
-
- Any brand names (starts with a capital letter) 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 requires MS-Windows and not in the
-trademark sense. All other trademarks belong to their respective
-owners.
-
-
-
-
-!Credits
-
-
- 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 come out every few months. The
-modem situation is rapidly changing (and I'm still learning). 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.linuxdoc.org/mirrors.html If you
-only want to quickly compare the date of this the version v0.23, January 2002 with
-the date of the latest version go to:
-http://www.linuxdoc.org/HOWTO/Modem-HOWTO.html
-
-
-
-!!1.6 New in Recent Versions
-
-
-
-v0.23 January 2002: dropped connection w/V.90, X3 to force dialing if
-NO DIALTONE, more on USB, wvdial added to "Trying Out Your Modem",
-major revision to "Antique Modems", several broken links fixed,
-better clarity re RAS, digital modems.
-v0.22 September 2001: &X3 -> X3, NO CARRIER, NO DIALTONE
-v0.21 August 2001: clarity re autobauding, corrected linmodem
-situation, more mention of USB, major revision of Configuring the
-Serial Port now named: Locating ...
-v0.20 August 2001: fixed typo: done->down, more linmodems
-v0.19 July 2001: Dialing Out while Waiting for a Call. Antique modems
-using "CONNECT" to set DTE speed.
-v0.18 June 2001 new section: modem doubling (bonding, teaming,
-multilink)
-
-
-
-
-!! 1.7 What is a Modem ?
-
-
-
- A 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. It
-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, USB, internal
-and built-in. The external 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 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, built-in, or USB 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 serial ports are named ttyS0, ttyS1, etc. (usually
-corresponding respectively to COM1, COM2, etc. in Dos/Windows). For
-the new devfs they are all in the /dev/ttys/ directory and named , 1,
-etc. See
-Modem & Serial Port Basics for
-more details on modems and serial ports.
-
-
-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.
-
-
-
-
-!! 1.8 Quick Install
-
-
-!External 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 2001) many modems don't. See
-modem list.
-If the modem is both PnP and directly supported by the serial driver
-(kernel 2.4 +) then there is no configuring for you to do since the
-driver will configure it.
-
-
-To physically install a modem card, remove the cover of the PC by
-removing some screws (perhaps screw size 6-32 in the U.S.). Find a
-matching vacant slot for it 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).
-
-
-If you have a modem that is not a winmodem (see
-Software-based Modems (winmodems)) the serial driver may
-configure it for you and you have nothing to do. This should be noted
-in the boot-time messages (use dmesg to see them or shift-page-up
-after they have flashed by).
-
-
-But if you are not so lucky you may need to configure it yourself.
-You first need to decide which ttySx (or ttys/x) to assign it to.
-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.
-
-
-
-
-!ISA Modems: What IOs and IRQs may be used?
-
-
- For old modems with jumpers look at the manual (or jumpers if they
-say). 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 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
-communication program such as minicom or a ppp program (such as
-wvdial). 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). Set hardware flow control (RTS/CTS).
-
-
-Minicom is the easiest to set up and to use to test your modem. But
-if you are lucky you may get ppp to work the first time and not need
-to bother with minicom. 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 direct from the modem.
-
-
-
-----
-
-!!2. Modems for a Linux PC
-
-!! 2.1 External vs. Internal
-
-
-
- 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
-connector on a PC. Internal modems are less expensive, are less
-likely to to suffer data loss due to buffer overrun, usually use less
-electricity, and use up no space on your desk.
-
-
-External modems are usually easier to install and usually require less
-configuration. They have lights which may give you a clue as to what
-is happening and aid in troubleshooting. The fact that the serial
-port and modem can be physically separated also aids in
-troubleshooting. External modems are easy to move to another
-computer. If you need to turn the power off to reset your modem (this
-is seldom necessary) then with an external you don't have to power
-down the entire PC.
-
-
-Unfortunately 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 usually costs you over $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 bps (although as of late 2000 most new internal modems
-don't either --but some do). For details
-Can't Set a High Enough Speed
-
-Internal modems present a special problem for Linux, but will work
-just as well as external modems provided you avoid the ones that will
-work only for MS Windows. Configuring them ranges from very easy
-(automatically) to difficult depending on both the modem, your skills,
-and how easy it is to find info about your modem --info that is not
-all in this HOWTO. Some of the modems which will work only under MS
-Windows due to lack of Linux drivers (for software modems). If you
-buy a new one that you're not sure will work under Linux, try to get
-an agreement that you can return it for a refund if it doesn't work
-out.
-
-
-While most new modems are plug-and-play you have various ways to deal
-with the PnP configuring:
-
-
-* The serial driver does it all for you (more likely for a PCI modem)
-*
-
-* Use the "isapnp" program
-*
-
-* Let a PnP BIOS do the configuring
-*
-
-The last 2 items of the above have shortcomings. Isapnp documentation
-is difficult to understand although reading the Plug-and-Play-HOWTO
-(long) will aid in understanding it. If you want the PnP BIOS to do
-the configuring, all you need to do is to make sure that it knows that
-you don't have a PnP operating system. But it may not do it correctly
-and you may need to find out what it's done see
-What is set in my serial port hardware?.
-
-
-Many Linux users still say that it's a lot simpler just to get an
-external modem and plug it in. But if you get the right internal
-modem it may be just as easy.
-
-
-
-
-!!2.2 Is a Driver Needed ?
-
-
-
- ISA (and some PCI) hardware modems (including all external modems)
-don't really need any driver. The serial port the the modem resides
-on does need a driver and it's supplied either as a Linux serial
-module or compiled into the kernel. Any driver for a PCI Modem should
-install automatically since they are detected by system software.
-Software modems do need a driver. The drivers for MS Windows are
-*.exe programs which will not run under Linux. So you must use a
-Linux driver (if it exists). See
-Software-based Modems (winmodems, linmodems)
-
-
-
-!!2.3 External Modems
-
-
-!PnP External Modems
-
-
- Many external modems are labeled "Plug and Play" (PnP) but they
-should all work fine as non-PnP modems. While the serial port itself
-may need to be configured (IRQ number and IO address) unless the
-default configuration is OK, an external modem uses no such IRQ/IO
-configuration. You just plug the modem into the serial port.
-
-
-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 on a certain
-port and would also know the id number. If it's a software modem, it
-could try to locate a driver for it. It could also tell application
-programs what port your modem is on. (such as /dev/ttyS2 or COM3).
-But since you don't have such a PnP operating system you may need to
-configure your application program manually by giving it the /dev id
-(such as /dev/ttyS2). Some programs can probe for a modem on various
-ports.
-
-
-
-
-!Cabling & Installation
-
-
- Connecting an external modem is simple compared to connecting
-most other devices to a serial port that require various types of
-"null modem" cables (which will not work for modems). Modems use
-straight through cable, with no pins crossed over. Most computer
-stores should have this. Make sure you get the correct gender and
-number of pins. Hook up your modem to one of your serial ports. If
-you are willing to accept the default IRQ and IO address of the port
-you connect it to, then you are ready to start your communication
-program and configure the modem itself.
-
-
-
-
-!What the Lights (LED's) Mean (for some external modems)
-
-
-
-
-
-* TM Test Modem
-*
-
-* AA Auto Answer (If on, your modem will answer an incoming call)
-*
-
-* RD Receive Data line = RxD
-*
-
-* SD Send Data line = TxD
-*
-
-* TR data Terminal Ready = DTR (set by your PC)
-*
-
-* RI Ring Indicator (If on, someone is "ringing" your modem)
-*
-
-* OH Off Hook (If off, your modem has hung up the phone line)
-*
-
-* MR Modem Ready = DSR ??
-*
-
-* EC Error Correction
-*
-
-* DC Data Compression
-*
-
-* HS High Speed (for this modem)
-*
-
-
-
-
-
-!!2.4 Internal Modems
-
-
-
- An internal modem is installed in a PC by taking off the cover of
-the PC and inserting the modem card into a vacant slot on the
-motherboard. There are modems for PCI slots, other modems for the
-older ISA slots, and ARM software "modems" for the new small AMR slot.
-Some new PC don't have any ISA slots. Only some newer PCs will have
-ARM 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 IO 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 over the bus inside the computer. Such configuration
-commands can be sent by a PnP BIOS, by the isapnp program (for the ISA
-bus only), by setpci (for the PCI bus), or by newer serial device
-drivers for certain modems. Under Linux you may have a choice of how
-to configure the ones that don't get io-irq configured by the serial
-driver.
-
-
-
-
-
-#ISA bus: Use "isapnp" which may be run automatically at
-every boot-time
-#
-
-# Let a PnP BIOS do it, and then maybe tell setserial the IO and
-IRQ
-#
-
-#PCI bus: Use lspci -vv to look at it and setpci to configure.
-#
-
-
-
-See
-Quick Install for more details,
-especially for the PCI bus.
-
-
-
-
-!! 2.5 Software-based Modems (winmodems, linmodems)
-
-
-!Introduction to software modems (winmodems)
-
-
- Software modems turn over some (or even almost all) of the work of
-the modem to the main processor (CPU) chip of your computer (such as a
-Pentium chip). This requires special software (a modem driver) to do
-the job. Until late 1999, such software was released only for MS
-Windows and wouldn't work with Linux. Even worse was that the maker
-of the modem kept the interface to the modem secret so that no one
-could write a Linux driver for it (even though a few volunteers were
-willing to write Linux drivers).
-
-
-But things have improved some since then so that today (late 2001)
-many such modems do have a linux driver. There is no standard
-interface so that different brands/models of software-modems need
-different drivers (unless the different brands/models happen to use
-the same chipset internally).
-
-
-Another name for a software modem (used by MS) is "driver-based
-modem". The conventional hardware-based modem (that works with Linux)
-doesn't need a modem driver (but does use the Linux serial driver)
-After about mid-1998 most new internal modems were software modems.
-
-
-Software modems fall into 2 categories: linmodems and winmodems.
-Winmodems will only work under MS Windows. Linmodems will work under
-Linux (but formerly were mostly winmodems so some still call them
-"winmodems"). The term "Winmodem" is also a trademark for a certain
-model of "winmodem" but that's not the meaning of it in this document.
-
-
-
-
-!Linmodems
-
-
- In late 1999, two software-based modems appeared that could work
-under Linux and were thus called "linmodems". Lucent Technologies
-(LT) unofficially released a Linux binary-only code to support most of
-its PCI modems. PC-TEL (includes "Zoltrix") introduced a new
-software-based modem for Linux. After that, interest increased for
-getting winmodems to work under linux. There is a GPL'ed driver for
-Intel's (Modem Silicon Operations) MD563x HaM chipset (nee Ambient
-division of Cirrus Logic). As of mid-2001 there are also drivers for:
-Conexant HSF, Motorola SM56, ESS (ISA only), and IBM's Mwave for
-Thinkpads 600+.
-
-
-What percent of software modems now (2001) work under Linux? Well,
-there's a lot of modem chips not supported: Lucent/Agere ARM
-(Scorpio), 3COM/US Robotics, Conexant HCF, some !SmartLink (3 different
-chipsets), Ambient HSP, and possibly others. But there might be
-support for some of these by the time you read this. So it seems that
-over half the software modem chips are now supported (as of late 2001).
-
-
-Be warned in advance that determining if your modem is a linmodem may
-or may not be easy. You may need to first find out what chipset you
-have and who makes it. Just knowing the brand and model number of
-your modem may not be sufficient. There are complex ways to find this
-out using say "lspci" (more than once) and then looking up the chip
-maker using the long modem number. This requires checking a database
-or searching the Internet. It's not always simple. It could happen
-that you will put a fair amount of effort into this only to get the
-bad news that your modem isn't supported. See Linmodem-HOWTO for more
-details.
-
-
-
-
-!Linmodem sites and documentation
-
-
-
-
-
-*Linmodem-HOWTO
-*
-
-*Winmodems-and-Linux-HOWTO (not as well written as Linmodem-HOWTO)
-*
-
-*
-http://linmodems.org is a project to turn winmodems
-into linmodems. Has a mailing list.
-*
-
-*
-modem list. Has links to linmodem info.
-*
-
-*
-http://sayamindu.topcities.com/pctel.html is a HOWTO
-for PCTel software modems. Should be at LDP sites soon.
-*
-
-
-
-
-
-!Software-based modem types
-
-
- There are two basic types of software modems. In one type the
-software does almost all of the work. The other is where the software
-only does the "control" operations (which is everything except
-processing the digital waveshapes --to be explained later). Since the
-hardware doesn't do the control it's called a "controllerless" modem.
-The first type is an all-software modem (sometimes just called a
-software modem).
-
-
-For both of these types there must be analog hardware in the modem to
-generate an electrical waveshape to send out the phone line. It's
-generated from a digital signal (which is sort of a "digital
-waveshape"). It's something like the digital electronics creates a
-lot of discrete points on graph paper and then the modem draws a
-smooth curve thru them. There must also be hardware to convert the
-incoming waveshape to digital. This is just analog-to-digital
-conversion (and conversely). It's done by a codec (coder-decoder).
-
-
-Then this digital waveshape must be converted to a data byte stream.
-This is known as demodulation, while turning data bytes into a digital
-waveshape is known as modulation. The modem can't just send an
-incoming data byte stream to the PC but must first do decompression,
-error correction, and convert from serial to the parallel bus of the
-computer. Likewise for an outgoing data byte stream.
-
-
-The difference between the two types of software-based modems is where
-the digital modulation takes place. In the all-software modem this
-modulation is done in the CPU using a Host Signal Processor (HSP). In
-the controllerless modem it's done in the modem but all other digital
-work is done by the CPU. This other digital work consists of dealing
-with AT-commands, data compression, error correction, and simulating a
-serial port. In the all-software modem, there are still two items
-handled by hardware: the A/D conversion of waveshapes by the codec and
-echo cancellation.
-
-
-For example the Rockwell HCF (Host Controlled Family) is an
-all-software modem. If the software that does these tasks could be
-ported to Linux and then there wouldn't be a major problem.
-
-
-
-
-!Is this modem a software modem?
-
-
- How do you determine if an internal modem is a software modem?
-First see if the name, description of it, or even the name of the MS
-Windows driver for it indicates it's a software modem: HSP, HCF, HSF,
-controllerless, host-controlled, host-based, and soft-... modem. If
-it's one of these modem it will only work for the cases where a Linux
-driver is available. Since software modems cost less, a low price is
-a clue that it's a software modem.
-
-
-If you don't know the model of the modem and you also have Windows on
-your Linux PC, click on the "Modem" icon in the "Control Panel". Then
-check out the modem list (see
-Web Sites.
-If the above doesn't work (or isn't feasible), 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 it requires a Pentium CPU, then almost all of it's work is done by
-software and it's not likely to work under Linux. If it requires a
-486 CPU (or better) then it's likely a host-controlled modem that will
-work only if there exists a Linux driver for it. Saying that it only
-works with Windows is also bad news. However, even in this case there
-may be a Linux driver for it.
-
-
-Otherwise, it may be a hardware modem 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 (but it's harder
-to configure under Linux). 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. Some
-manufacturers are specifically stating that certain models work under
-Linux.
-
-
-
-
-!Should I get a software modem?
-
-
- Only if you know there is a Linux driver for it that works OK.
-Besides the problems of getting a driver, what are the pros and cons
-of software modems? Since the software modem uses the CPU to do some
-(or all) of its work, the software modem requires less on-board
-electronics and thus costs less. At the same time, the CPU work load
-is increased by the modem which may result in slower operation.
-
-
-The percentage of loading of the CPU by the modem depends on both what
-CPU you have and whether or not it's an all-software modem. For a
-modern CPU and a modem that only uses the CPU as a controller, there's
-little loss of performance. In most other cases, you will not suffer
-a loss of performance if there are no other CPU-intensive tasks are
-running at the same time. Of course, when you're not using the
-software modem there is no degradation in performance at all.
-
-
-Is the cost savings worth it? In many cases yes, especially if you
-don't use the modem much and/or are not running any other CPU
-intensive tasks when the modem is in use. The savings in modem cost
-could be used for a better CPU which would speed things up a little.
-But the on-board electronics of a modem can do the job more
-efficiently than a general purpose CPU (except that it's not efficient
-at all when it's not in use). So if you use the modem a lot it's
-probably better to avoid all-software modems (and then you can use a
-less powerful CPU :-).
-
-
-
-
-!! 2.6 PCI Modems
-
-
-
- A PCI modem card is one which inserts into a PCI-bus slot on the
-motherboard of a PC. While many PCI winmodems will not work under
-Linux (no driver available) other PCI modems will work under Linux.
-The Linux serial driver is being modified to support certain PCI modem
-cards (but not winmodems). If the Linux serial driver supports it
-then the driver will set up the PnP configuration for you. See
-PCI Bus Support Underway If no special
-support is in the Linux serial driver it may still work OK but you
-have to do some work to configure it.
-
-
-
-
-!!2.7 AMR Modems
-
-
-
-These are all winmodems that insert into a special AMR (Audio Modem
-Riser) slot on the motherboard. Audio cards are sometimes used in this
-slot. The slot's main use is for HSF type modems where the CPU does
-almost all of the work. This results in a small modem card and thus a
-short AMR slot. Such a "modem" is actually little more than a codec
-which transforms digital signals representing an analog voltage wave
-into the analog wave itself (and conversely). Linux supports at least
-one of them.
-
-
-
-
-!! 2.8 USB Modems
-
-
-
-USB = Universal Serial Bus. Some USB modems work with Linux and
-some don't. Linux has support for modems that conform to the USB
-Communication Device Class Abstract Control Model (= USB CDC ACM).
-There's a module for ACM named acm.o. See the /usb/acm... document in
-the kernel documentation directory (/usr/share/doc/kernel-doc-2.4.x in
-Debian, perhaps /usr/doc/kernel... in some distributions). The ACM
-serial port for the first (0th) such modem is (with devfs) is:
-/dev/usb/acm/. Otherwise it might be /dev/usb/ttyACM0.
-
-
-
-
-!! 2.9 Which Internal Modems might not work with Linux
-
-
-
-
-
-
-*
-Software-based Modems (winmodems, linmodems) Only roughly half have a Linux driver available.
-*
-
-*
-MWave and DSP Modems might work, but only if
-you first start Windows/Dos each time you power on your PC
-*
-
-* Modems with
-RPI (Rockwell) drivers work
-but with reduced performance
-*
-
-
-
-
-
-! MWave and some DSP Modems
-
-
- Note that there's now a Linux driver for the ACP (Mwave) modem
-used in IBM Thinkpads 600+. See the mini-HOWTO: ACP-Modem.
-
-
-While hardware modems used use DSPs (Digital Signal Processors) some
-of these DSPs are programmed by a driver which must be downloaded from
-the hard disk to the DSPs memory just before using the modem.
-Unfortunately, such downloading is normally done by Dos/Windows
-programs (which doesn't work for Linux). But there has been
-substantial success in getting some of these modems to work with
-Linux. For example, there is a Linux driver available to run a Lucent
-(DSP) modem.
-
-
-Ordinary modems that work fine with Linux (without needing a driver
-for the modem) often have a DSP too (and may mention this on the
-packaging), but the program that runs the DSP is stored inside the
-modem. These work fine under Linux. An example of a DSP modem that
-has problems working under Linux is the old IBM's Aptiva MWAVE.
-
-
-One way to get some DSP modems to work with Linux is to boot from DOS
-(if you have it on your Linux PC). You first install the driver under
-DOS (using DOS and not Window drivers). Then start Dos/Windows and
-start the driver for the modem so as to program the DSP. Then without
-turning off the computer, start Linux.
-
-
-One may write a "batch" file (actually a script) to do this. Here is
-an example but you must modify it to suit your situation.
-
-
-rem mwave is a batch file supplied by the modem maker
-call c:\mww\dll\mwave start
-rem loadlin.exe is a DOS program that will boot Linux from DOS (See
-rem Config-HOWTO).
-c:\linux\loadlin f:\vmlinuz root=/dev/hda3 ro
-
-
-
-
-One may create an icon for the Window's desktop which points to such a
-batch file and set the icon properties to "Run in MSDOS Mode". Then
-by clicking on this icon one sets up the modem and goes to Linux.
-Another possible way to boot Linux from DOS is to press CTRL-ALT-DEL
-and tell it to reboot (assuming that you have set things up so that
-you can boot directly into Linux). The modem remains on the same com
-port (same IO address) that it used under DOS.
-
-
-The Newcom ifx modem needs a small kernel patch to work correctly
-since its simulation of a serial port is non-standard. The patch and
-other info for using this modem with Linux is at
-http://quinine.pharmacy.ohio-state.edu/~ejolson/linux/newcom.html.
-
-
-
-
-! Rockwell (RPI) Drivers
-
-
- Some older Rockwell chips need Rockwell RPI (Rockwell
-Protocol Interface) drivers for compression and error correction.
-They can still be used with Linux even though the driver software
-works only under MS Windows. This is because the MS Windows software
-(which you don't have) does only compression and error correction. If
-you are willing to operate the modem without compression and error
-correction then it's feasible to use it with Linux. To do this you
-will need to disable RPI by sending the modem (via the initialization
-string) a "RPI disable" command each time you power on your modem. On
-my old modem this command was +H0. Not having data compression
-available makes it slower to get webpages but is just as fast when
-downloading files that are already compressed.
-
-
-
-----
-
-!!3. Modem Pools
-
-!!3.1 Introduction
-
-
-
- These are multiple modems which might be used by an ISP or by an
-organization that has a number of phone lines for dialing in and out.
-There are two types of modem pools: analog and digital. An ISP will
-use digital so that they can support 56k (V.90, V.92) modems at near
-maximum speed.
-
-
-A modem pool could be a number of modems on the same card (such as an
-analog multi-port modem card) or many modems in an external chassis
-(something like an external modem). The modems may be analog modems
-similar to modems used for home/office PCs (can't send above 33.6k
-even if they are "56k modems"). They also could be "digital modems"
-which can send at nearly 56k (if you have a good line). The "digital
-modems" require a digital connection to the telephone line and don't
-use any serial ports at all. All of these modem pools will require
-that you install special drivers for them.
-
-
-
-
-!!3.2 Analog Modem Pools, Multi-modem Cards
-
-
-
- A "multimodem card" is short for "multiport modem card". Some put
-a hyphen after "multi": multi-modem or multi-port. An analog modem
-pool is just many analog modems (the common home/office modem)
-provided either on an internal plug-in card or in an external chassis.
-Each modem comes with a built-in serial port. There is usually a
-system of sharing interrupts or of handling interrupts by their own
-electronics, thus removing much of this burden from the CPU. Note
-that these modems are not "digital modems" and will thus not be able
-to use 56k for people who dial-in.
-
-
-Here is a list of some companies that make analog multiport modem
-cards which plug into slots in a PC. 8 modems/card is common. The
-cards listed claim to work with Linux and the websites should point
-you to a driver for them.
-
-
-Multi-modem Cards (analog, not digital):
-
-
-* MultiModemISI by Multi-Tech Systems. 56k or 33.6k, PCI,
-4 or 8 ports. ISDN/56k hybrids.
-http://www.multitech.com/PRODUCTS/MultiModemISI/
-
-*
-
-* Equinox SST Multi-modem. PCI, 56k, 4 or 8 ports.
-http://www.equinox.com/product/multi-modem.htm
-
-*
-
-* PCI-RAS cards by Perle. 56k, 4 or 8 ports.
-http://www.perle.com/solutions/app_notes/multi_modem/pci_ras_fax.html
-
-*
-
-* !RocketModem by Comtrol. ISA 33.6k, 4 or 8 port.
-http://www.comtrol.com/sales/specs/rm.htm
-
-*
-
-* !RocketModem II by Comtrol. PCI 56k, 4 or 6 port.
-http://www.comtrol.com/sales/specs/rmii.htm
-
-*
-
-* Multi-modem communication adapters by Digi.
-http:/www.dgii.com/solutions/mmcommadapters/index.html
-*
-
-
-
-
-
-!! 3.3 Digital Modems, RAS
-
-
-
- "digital modems" are much different than the analog modems that
-most people use in their PCs. They require a digital connection to
-the telephone line and don't use serial ports for the interface to the
-computer. Instead, they interface directly to a computer bus via a
-special card(s) (which may also contain the "digital modems"). They are
-able to send at near 56k, something no analog modem can do. They are
-often a component of "remote access servers" (RASs) or "digital modem
-pools"
-
-
-The cables from the phone company that carry digital signals have been
-designed for high bandwidth so that the same cable carries multiple
-telephone calls. It's done by "time-division multiplexing". A single
-phone call in a cable is carried on two different channels, one for
-each direction. So the RAS must connect each such channel-pair to the
-appropriate "digital modem" that services that phone call. Such tasks
-are done by what is sometimes called a "... concentrator".
-
-
-Now the digital signal received by a "digital modem" may really
-represent an analog signal which has been sent to it by an analog
-modem. One way to deal with it would be to convert it to an analog
-signal and then put that thru an analog modem to get the digital data
-sent by the analog modem. But why do all this work. Since the signal
-is already in digital form, why not process it digitally? That's how
-it's done. The digital signal is processed and converted to another
-digital stream of bytes which represents data bytes sent by the analog
-modem. A "digital signal processor" (DSP) is commonly used for this
-task. A CPU could also handle it but it would be heavily loaded.
-
-
-Likewise, a "digital modem" must handle sending digital signals in the
-opposite direction from a RAS to a digital telephone line. Thus it
-only makes digital-to-digital conversions and doesn't deal in analog
-at all. It thus is not really a modem at all since it doesn't
-modulate any analog carrier. So the name "digital modem" is a
-misnomer but it does do the job formerly done by modems. Thus some
-"digital modems" call themselves "digital signal processors", or
-"remote access servers", etc. and may not even mention the word
-"modem".
-
-
-Such a RAS system may be a stand-alone proprietary server, a chassis
-containing digital modems that connects to a PC via a special
-interface card, or just a card itself. Digi calls one such card a
-"remote access server concentrator adapter". One incomplete
-description of what is needed to become an ISP is: See
-What do I need to be an ISP?. Cyclades promotes their own
-products here so please do comparison shopping before buying anything.
-
-
-
-----
-
-!! 4. Serial Port and Modem Basics
-
-!!4.1 What is a Serial Port ?
-
-
-!Intro to Serial
-
-
- The serial port is an I/O (Input/Output) device.
-
-
-
-
-
-Most PC's have one or two serial ports. Each has a 9-pin connector
-(sometimes 25-pin) on the back of the computer. Computer programs can
-send data (bytes) to the transmit pin (output) and receive bytes from
-the receive pin (input). The other pins are for control purposes and
-ground.
-
-
-The serial port is much more than just a connector. It converts the
-data from parallel to serial and changes the electrical representation
-of the data. Inside the computer, data bits flow in parallel (using
-many wires at the same time). Serial flow is a stream of bits over a
-single wire (such as on the transmit or receive pin of the serial
-connector). For the serial port to create such a flow, it must
-convert data from parallel (inside the computer) to serial on the
-transmit pin (and conversely).
-
-
-Most of the electronics of the serial port is found in a computer chip
-(or a part of a chip) known as a UART. For more details on UARTs
-see the section
-
-
-
-
-
-But you may want to finish this section first so that you will
-hopefully understand how the UART fits into the overall scheme of
-things.
-
-
-
-
-!Pins and Wires
-
-
- Old PC's used 25 pin connectors but only about 9 pins were
-actually used so today most connectors are only 9-pin. Each of the 9
-pins usually connects to a wire. Besides the two wires used for
-transmitting and receiving data, another pin (wire) is signal ground.
-The voltage on any wire is measured with respect to this ground. Thus
-the minimum number of wires to use for 2-way transmission of data is
-3. Except that it has been known to work with no signal ground wire
-but with degraded performance and sometimes with errors.
-
-
-There are still more wires which are for control purposes (signalling)
-only and not for sending bytes. All of these signals could have been
-shared on a single wire, but instead, there is a separate dedicated
-wire for every type of signal. Some (or all) of these control wires
-are called "modem control lines". Modem control wires are either in
-the asserted state (on) of +12 volts or in the negated state (off) of
--12 volts. One of these wires is to signal the computer to stop
-sending bytes out the serial port cable. Conversely, another wire
-signals the device attached to the serial port to stop sending bytes
-to the computer. If the attached device is a modem, other wires may
-tell the modem to hang up the telephone line or tell the computer that
-a connection has been made or that the telephone line is ringing
-(someone is attempting to call in). See the Serial-HOWTO:
-Pinout and Signals for more details.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-!!4.2 IO Address & IRQ
-
-
-
- Since the computer needs to communicate with each serial port, the
-operating system must know that each serial port exists and where it
-is (its I/O address). It also needs to know which wire (IRQ number)
-the serial port must use to request service from the computer's CPU.
-It requests service by sending an interrupt on this wire. Thus every
-serial port device must store in its non-volatile memory both its I/O
-address and its Interrupt !ReQuest number: IRQ. See
-Interrupts. For the PCI bus it doesn't work
-exactly this way since the PCI bus has its own system of interrupts.
-But since the PCI-aware BIOS sets up chips to map these PCI interrupts
-to IRQs, it seemingly behaves just as described above except that
-sharing of interrupts is allowed (2 or more devices may use the same
-IRQ number).
-
-
-I/O addresses are not the same as memory addresses. When an I/O
-addresses is put onto the computer's address bus, another wire is
-energized. This both tells main memory to ignore the address and
-tells all devices which have I/O addresses (such as the serial port)
-to listen to the address to see if it matches the device's. If the
-address matches, then the I/O device reads the data on the data bus.
-
-
-
-
-!!4.3 Names: ttyS0, ttyS1, etc.
-
-
-
- The serial ports are named ttyS0, ttyS1, etc. (and usually
-correspond respectively to COM1, COM2, etc. in DOS/Windows). The /dev
-directory has a special file for each port. Type "ls /dev/ttyS*" to
-see them. Just because there may be (for example) a ttyS3 file,
-doesn't necessarily mean that there exists a physical serial port
-there.
-
-
-Which one of these names (ttyS0, ttyS1, etc.) refers to which
-physical serial port is determined as follows. The serial driver
-(software) maintains a table showing which I/O address corresponds to
-which ttyS. This mapping of names (such as ttyS1) to I/O addresses
-(and IRQ's) may be both set and viewed by the "setserial" command.
-See
-What is Setserial. This does
-not set the I/O address and IRQ in the hardware itself (which is
-set by jumpers or by plug-and-play software). Thus what physical port
-corresponds to say ttyS1 depends both on what the serial driver thinks
-(per setserial) and what is set in the hardware. If a mistake has
-been made, the physical port may not correspond to any name (such as
-ttyS2) and thus it can't be used. See
-Serial Port Devices /dev/ttyS2, etc. for more details>
-
-
-
-
-!! 4.4 Interrupts
-
-
-
-
-
-
-When the serial port receives a number of bytes (may be set to 1, 4,
-8, or 14) into its FIFO buffer, it signals the CPU to fetch them by
-sending an electrical signal known as an interrupt on a certain wire
-normally used only by that port. Thus the FIFO waits for a number of
-bytes and then issues an interrupt.
-
-
-However, this interrupt will also be sent if there is an unexpected
-delay while waiting for the next byte to arrive (known as a timeout).
-Thus if the bytes are being received slowly (such as someone typing on
-a terminal keyboard) there may be an interrupt issued for every byte
-received. For some UART chips the rule is like this: If 4 bytes in a
-row could have been received, but none of these 4 show up, then the
-port gives up waiting for more bytes and issues an interrupt to fetch
-the bytes currently in the FIFO. Of course, if the FIFO is empty,
-no interrupt will be issued.
-
-
-Each interrupt conductor (inside the computer) has a number (IRQ) and
-the serial port must know which conductor to use to signal on. For
-example, ttyS0 normally uses IRQ number 4 known as IRQ4 (or IRQ 4). A
-list of them and more will be found in "man setserial" (search for
-"Configuring Serial Ports"). Interrupts are issued whenever the
-serial port needs to get the CPU's attention. It's important to do
-this in a timely manner since the buffer inside the serial port can
-hold only 16 (1 in old serial ports) incoming bytes. If the CPU fails
-to remove such received bytes promptly, then there will not be any
-space left for any more incoming bytes and the small buffer may
-overflow (overrun) resulting in a loss of data bytes.
-There is no
-Flow Control to prevent
-this.
-
-
-Interrupts are also issued when the serial port has just sent out all
-16 of its bytes from its small transmit buffer out the external cable.
-It then has space for 16 more outgoing bytes. The interrupt is to
-notify the CPU of that fact so that it may put more bytes in the small
-transmit buffer to be transmitted. Also, when a modem control line
-changes state an interrupt is issued.
-
-
-The buffers mentioned above are all hardware buffers. The serial port
-also has large buffers in main memory. This will be explained later
-
-
-Interrupts convey a lot of information but only indirectly. The
-interrupt itself just tells a chip called the interrupt controller
-that a certain serial port needs attention. The interrupt controller
-then signals the CPU. The CPU then runs a special program to service
-the serial port. That program is called an interrupt service routine
-(part of the serial driver software). It tries to find out what has
-happened at the serial port and then deals with the problem such a
-transferring bytes from (or to) the serial port's hardware buffer.
-This program can easily find out what has happened since the serial
-port has registers at IO addresses known to the the serial driver
-software. These registers contain status information about the serial
-port. The software reads these registers and by inspecting the
-contents, finds out what has happened and takes appropriate action.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-!! 4.5 Flow Control
-
-
-
- Flow control means the ability to slow down the flow of bytes in a
-wire. For serial ports this means the ability to stop and then
-restart the flow without any loss of bytes. Flow control is needed
-for modems to allow a jump in instantaneous flow rates.
-
-
-
-
-!Example of Flow Control
-
-
- For example, consider the case where you connect a 33.6k external
-modem via a short cable to your serial port. The modem sends and
-receives bytes over the phone line at 33.6k bits per second (bps).
-Assume it's not doing any data compression or error correction. You
-have set the serial port speed to 115,200 bits/sec (bps), and you are
-sending data from your computer to the phone line. Then the flow from
-the your computer to your modem over the short cable is at 115.2k bps.
-However the flow from your modem out the phone line is only 33.6k bps.
-Since a faster flow (115.2k) is going into your modem than is coming
-out of it, the modem is storing the excess flow (115.2k -33.6k = 81.6k
-bps) in one of its buffers. This buffer would soon overrun (run out
-of free storage space) unless the high 115.2k flow is stopped.
-
-
-But now flow control comes to the rescue. When the modem's buffer is
-almost full, the modem sends a stop signal to the serial port. The
-serial port passes on the stop signal on to the device driver and the
-115.2k bps flow is halted. Then the modem continues to send out data
-at 33.6k bps drawing on the data it previous accumulated in its
-buffer. Since nothing is coming into the buffer, the level of bytes
-in it starts to drop. When almost no bytes are left in the buffer,
-the modem sends a start signal to the serial port and the 115.2k flow
-from the computer to the modem resumes. In effect, flow control
-creates an average flow rate in the short cable (in this case 33.6k)
-which is significantly less than the "on" flow rate of 115.2k bps.
-This is "start-stop" flow control.
-
-
-In the above simple example it was assumed that the modem did no data
-compression. This would be true when the modem is sending a file
-which is already compressed and can't be compressed further. Now
-let's consider the opposite extreme where the modem is compressing the
-data with a high compression ratio. In such a case the modem might
-need an input flow rate of say 115.2k bps to provide an output (to the
-phone line) of 33.6k bps (compressed data). The compression ratio is
-3.43 (115.2/33.6) which is much higher than average. In this case the
-modem is able to compress and the 115.2 bps PC-to-modem flow and send
-the same data out on the phone line at 33.6bps. There's no need for
-flow control here. But such a high compression ratio rarely happens
-so that most of the time flow control is needed to slow down the flow
-on the 115.2 bps PC-to-modem cable. The flow is stopped and started
-so that the average flow is usually well under the "on" flow of 115.2
-bps.
-
-
-In the above example the modem was an external modem. But the same
-situation exists (as of late 2000) for most internal modems. There is
-still a speed limit on the PC-to-modem speed even though this flow
-doesn't take place over an external cable. This makes the internal
-modems compatible with the external modems.
-
-
-In the above example of flow control the flow was from the computer to
-a modem. But there is also flow control which is used for the
-opposite direction of flow: from a modem (or other device) to a
-computer. Each direction of flow involve 3 buffers: 1. in the modem
-2. in the UART chip (called FIFOs) 3. in main memory managed by the
-serial driver. Flow control protects certain buffers from
-overflowing. The small UART FIFO buffers are not protected in this
-way but rely instead on a fast response to the interrupts they issue.
-FIFO stand for "First In, First Out" which is the way it handles
-bytes. All the 3 buffers use the FIFO rule but only one of them also
-uses it as a name. This is the essence of flow control but there are
-still some more details.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-!Hardware vs. Software Flow Control
-
-
- If feasible it's best to use "hardware" flow control that uses two
-dedicated "modem control" wires to send the "stop" and "start"
-signals.
-
-
-
-
-
-Software flow control uses the main receive and transmit wires to send
-the start and stop signals. It uses the ASCII control characters DC1
-(start) and DC3 (stop) for this purpose. They are just inserted into
-the regular stream of data. Software flow control is not only slower
-in reacting but also does not allow the sending of binary data unless
-special precautions are taken. Since binary data will likely contain
-DC1 and DC3, special means must be taken to distinguish between a DC3
-that means a flow control stop and a DC3 that is part of the binary
-code. Likewise for DC1.
-
-
-
-
-
-
-
-!!4.6 Data Flow Path; Buffers
-
-
-
- Much has been explained about this including flow
-control, a pair of 16-byte FIFO buffers (in the UART), and a pair of
-larger buffers inside a device connected to the serial port (such as a
-modem. But there is still another pair of buffers. These are large
-buffers (perhaps 8k) in main memory also known as serial port buffers.
-When an application program sends bytes to the serial port
-
-
-they first get stashed in the the transmit serial port buffer in main
-memory. The pair consists of both this transmit buffer and a receive
-buffer for the opposite direction of byte-flow. Here's an example
-diagram for the case of browsing the Internet with a browser.
-Transmit data flow is left to right while receive flow is right to
-left.
-
-
-
-
-application 8k-byte 16-byte 1k-byte tele-
-BROWSER ------- MEMORY -------- UART --------- MODEM -------- phone
-program buffer buffer buffer line
-
-
-
-The serial device driver takes out say 16 bytes from this transmit buffer,
-one byte at a time and puts them into the 16-byte transmit buffer in the
-serial UART for transmission. Once in that transmit buffer, there
-is no way to stop them from being transmitted. They are then
-transmitted to the modem or other device connected to the serial port
-which also has a fair sized (say 1k) buffer. When the device driver
-(on orders from flow control) stops the flow of outgoing bytes from
-the computer, what it actually stops is the flow of outgoing bytes
-from the large transmit buffer in main memory. Even after this has
-happened and the flow to the device
-connected to the serial port has stopped, an application program
-may keep sending bytes to the 8k transmit buffer until it becomes
-fill.
-
-
-When it gets fill, the application program can't send any more bytes
-to it (a "write" statement in a C_program blocks) and the application
-program temporarily stops running and waits until some buffer space
-becomes available. Thus a flow control "stop" is ultimately able to
-stop the program that is sending the bytes. Even though this program
-stops, the computer does not necessarily stop computing. It may
-switch to running other processes while it's waiting at a flow control
-stop. The above was a little oversimplified since there is another
-alternative of having the application program itself do something else
-while it is waiting to "write".
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-!!4.7 Serial Driver Module
-
-
-
- The device driver for the serial port is the software that
-operates the serial port. It is now provided as a serial module.
-From kernel 2.2 on, this module will normally get loaded automatically
-if it's needed. In earlier kernels, you had to have kerneld
-running in order to do auto-load modules on demand. Otherwise the
-serial module needed to be explicitly listed in /etc/modules. Before
-modules became popular with Linux, the serial driver was usually built
-into the kernel (and sometimes still is). If it's built-in don't let
-the serial module load or else you will have two serial drivers
-running at the same time. With 2 drivers there are all sorts of
-errors including a possible "I/O error" when attempting to open a
-serial port. Use "lsmod" to see if the module is loaded.
-
-
-When the serial module is loaded it displays a message on the screen
-about the existing serial ports (often showing a wrong IRQ). But once
-the module is used by setserial to tell the device driver the
-(hopefully) correct IRQ then you should see a second display similar
-to the first but with the correct IRQ, etc. See
-"Serial Module" in the Serial-HOWTO.
-See
-What is Setserial for more info on
-setserial.
-
-
-
-
-
-
-
-
-
-----
-
-!!5. Configuring Overview
-
-
-Since each modem has an associated serial port and the port has both
-hardware and software, there are three parts to configuring a modem:
-
-
-
-
-
-*Locate the serial port hardware: IO address, IRQ; Done by PnP
-methods or jumpers, setserial. See
-Locating the Serial Port: IO address IRQs
-What is Setserial
-*
-
-* Configure the serial port driver (high-level): Done by the
-communication program (stty-like). Sets speed, flow control, etc.
-See
-Configuring the Serial Driver (high-level) See
-What is stty ?
-*
-
-* Configure the modem itself: Done by the communication program
-See
-Modem Configuration
-*
-
-
-
-The above omits a few other things that "setserial" can do besides
-locating the serial ports. But normally you don't need to use them.
-Setserial may be used in the future to enable super-high speed.
-
-
-Communication programs include aminicom, seyon, or
-wvdial (for PPP) and mgetty) for dial-in. Such
-communication programs require that you configure them although the
-default configuration they come with may only need a little tweaking.
-
-
-Unfortunately the communication program doesn't locate the serial
-port. This "locating" is the low-level PnP configuring of the serial
-port: setting its IO address and IRQ in both the hardware and the
-driver. If you are lucky, this will happen automatically when you
-boot Linux. Setting these in the hardware was formerly done by
-jumpers and then running "setserial" but today it's done by
-"Plug-and-Play" software. You may still need "setserial".
-
-
-But there's a serious problem: Linux (as of early 2001) is not a true
-Plug-and-Play operating system. However, the latest serial drivers
-handle Plug-and-Play for some serial ports (including some built-into
-internal modems). In other cases you may need to use Plug-and-Play
-tools to set up the configuration although they are not always very
-user friendly. This may create a difficult problem for you. The next
-section will go into this in much more detail.
-
-
-
-----
-
-!! 6. Locating the Serial Port: IO address, IRQs
-
-!!6.1 IO & IRQ Overview
-
-
-
- For a serial port to work properly, it must have both an IRQ and
-an IO address. Without an IO address, it can't be located and will not
-work at all. Without an IRQ it will need to use inefficient polling
-methods for which one must set the IRQ to . So every serial port
-needs an IO address and IRQ. In olden days this was set by jumpers on
-a serial port card. Today it's set by digital signals sent to the
-hardware and this is part of "Plug-and-Play (PnP).
-
-
-The driver must also know both the IO address and IRQ so that it can
-locate the card. Modern drivers (kernel 2.4) determine this by PnP
-methods so one doesn't need to tell them (by using "setserial"). The
-driver uses PnP functions provided by Linux to determine what the IO
-and IRQ are and to set them if necessary. The driver also probes
-possible serial port addresses to see if there are any serial ports
-there. This works for the case of jumpers and sometimes works for a
-PnP port when the driver doesn't do PnP.
-
-
-Locating the serial port by giving it an IRQ and IO address is
-low-level configuring. What follows repeats what was said above in
-more detail. This low-level configuring consists of assigning an IO
-address, IRQ, and name (such as ttyS2). This IO-IRQ pair must be set
-in both the hardware and told to the serial driver. We could call
-this "io-irq" configuring for short. The "setserial" program is one
-way to tell the driver. The other way is for the driver to use PnP
-methods to determine/set the IO/IRQ and then remember what it did.
-For jumpers you must always use "setserial". If you need to configure
-but don't understand certain details it's easy to get into trouble.
-
-
-When Linux starts, some effort is made to detect and configure
-(low-level) a few serial ports. Exactly what happens depends on your
-BIOS, hardware, Linux distribution, etc. If the serial ports work OK,
-there may be no need for you to do any more low-level configuring.
-
-
-If you're having problems with the serial ports, then you may need to
-do low-level configuring. If you have kernel 2.2 or lower,
-then you need to do it if you:
-
-
-
-
-
-* Plan to use more than 2 ISA serial ports
-*
-
-* Are installing a new serial port (such as an internal modem)
-*
-
-
-
-For kernel 2.2+ you may be able to use more that 2 serial ports
-without doing any low-level configuring by sharing interrupts. All
-PCI cards should support this but for ISA it only works for some
-hardware. It may be just as easy to give each port a unique interrupt
-if they is available. See
-Interrupt sharing and Kernels 2.2+
-
-The low-level configuring (setting the IRQ and IO address) seems to
-cause people more trouble than the high-level, although for many it's
-fully automatic and there is no configuring to be done. Until the
-serial driver knows the correct IRQ and IO address, the port will not
-usually not work at all. Also, PnP ports can be disabled so that they
-can't be found (except with PnP tools). Applications, and utilities
-such as "setserial" and "scanport" don't use PnP tools and thus can't
-detect disabled ports. For example, an IO enabling bit must be set in
-PCI serial port hardware by PnP so that it's IO address may be used.
-
-
-Even if the port can be found by normal (non-PnP) software, it may
-work extremely slow if the IRQ is wrong. See
-Extremely Slow: Text appears on the screen slowly after long delays.
-
-
-In the Wintel world, the IO address and IRQ are called "resources" and
-we are thus configuring certain resources. But there are many other
-types of "resources" so the term has many other meanings. In summary,
-the low-level configuring consists of enabling the device, giving it a
-name (ttyS2 for example) and putting two values (an IRQ number and IO
-address) into two places:
-
-
-
-
-
-# the device driver (often by running "setserial" at
-boot-time)
-#
-
-# memory registers of the serial port hardware itself
-#
-
-
-
-You may watch the start-up (= boot-time) messages. They are usually
-correct. But if you're having problems, there's a good chance that
-the ones that look like "setserial" output don't show the true
-configuration of the hardware (and they are not necessarily supposed
-to). See
-I/O Address & IRQ: Boot-time messages.
-
-
-
-
-!! 6.2 PCI Bus Support
-
-
-
-
-
-
-
-
-
-If you have kernel 2.4, then there should be support for PnP (either
-built-in or by modules). Some PCI serial cards can be automatically
-detected and low-level configured by the serial driver. Others will
-not be.
-Kernel 2.2 had no support for PCI serial ports (although some people
-got them working anyway). The 2.4 serial driver will read the id
-number digitally stored on the serial hardware to determine how to
-support it (if it knows how). It should assign the I/O address to it,
-determine it's IRQ, etc. So you don't need to use "setserial" for it
-??
-
-
-If you have a
-
-
-but it will not work because the latest serial driver doesn't support
-it, you can help in attempting to create a driver for it. To do this
-you'll need to contact the maintainer of the serial driver, Theodore
-(Ted) Y. Ts'o.
-
-
-
-
-
-Look at
-Ted Ts'o's site for the details of what you need to do. Here's a summary of
-what you need to do to help him. You will need to email Ted Ts'o a
-copy of the output of "lspci -vv" with full information about the
-model and manufacturer of the PCI modem (or serial port). Then he
-will try to point you to a test driver which might work for it. You
-will then need to get it, compile it and possibly recompile your
-kernel. Then you will test the driver to see if it works OK for you
-and report the results to Ted Ts'o. If you are willing to do all the
-above (and this is the latest version of this HOWTO) then email the
-needed info to him at:
-mailto:tytso@mit.edu.
-
-
-PCI ports are not well standardized. Some use main memory for
-communication with the PC. Some require special enabling of the IRQ.
-The output of "lspci -vv" can help determine if one can be supported.
-If you see a 4-digit IO port, the port might work by just telling
-"setserial" the IO port and the IRQ.
-For example, if lspci shows IRQ 10, I/O at 0xecb8 and you decide to
-name it ttyS2 then the command is:
-
-
-setserial /dev/ttyS2 irq 10 port 0xecb8 autoconfig
-
-
-Note that the boot-time message "Probing PCI hardware" means reading
-the PnP configuration registers in the PCI cards which reveals the IO
-addresses and IRQs. This is different that the probing of IO
-addresses by the serial driver which means reading certain IO
-addresses to see if what's read looks like there's a serial port at
-that address.
-
-
-
-
-!!6.3 Common mistakes made re low-level configuring
-
-
-
- Here are some common mistakes people make:
-
-
-*setserial command: They run it (without the "autoconfig" and
-auto_irq options) and think it has checked the hardware to see if
-what it shows is correct (it hasn't).
-*
-
-*setserial messages: They see them displayed on the screen at
-boot-time (or by giving the setserial command) and erroneously think
-that the result always shows how their hardware is actually
-configured.
-*
-
-*/proc/interrupts: When their serial device isn't in use they
-don't see its interrupt there, and erroneously conclude that their
-serial port can't be found (or doesn't have an interrupt set).
-*
-
-*/proc/ioports and /proc/tty/driver/serial: People think this
-shows the actual hardware configuration when it only shows about the
-same info (possibly erroneous) as setserial.
-*
-
-
-
-
-
-!! 6.4 IRQ & IO Address Must be Correct
-
-
-
-There are really two answers to the question "What is my IO and
-IRQ?" 1. What the device driver thinks has been set (This is what
-setserial usually sets and shows.). 2. What is actually set in the
-hardware. Both 1. and 2. above should be the same. If they're not it
-spells trouble since the driver has incorrect info on the physical
-serial port. In some cases the hardware is disabled so it has no IO
-address or IRQ.
-
-
-If the driver has the wrong IO address it will try to send data to a
-non-existing serial port --or even worse, to some other device. If it
-has the wrong IRQ the driver will not get interrupt service requests
-from the serial port, resulting in a very slow or no response. See
-Extremely Slow: Text appears on the screen slowly after long delays. If it has the wrong model of UART there
-is also apt to be trouble. To determine if both I0-IRQ pairs are
-identical you must find out how they are set in both the driver and
-the hardware.
-
-
-
-
-!!6.5 What is the IO Address and IRQ per the driver ?
-
-
-!Introduction
-
-
-What the driver thinks is not necessarily how the hardware is
-actually set. If everything works OK then what the driver thinks is
-likely correct (set in the hardware) and you don't need to investigate
-(unless you're curious or want to become a guru). Ways to determine
-what the driver thinks include: boot-time messages
-I/O Address & IRQ: Boot-time messages, the
-/proc directory "files"
-The /proc directory and setserial, and the "setserial" command.
-
-
-
-
-
-
-
-! I/O Address & IRQ: Boot-time messages
-
-
- In many cases your ports will automatically get low-level
-configured at boot-time (but not always correctly). To see what is
-happening, look at the start-up messages on the screen. Don't neglect
-to check the messages from the BIOS before Linux is loaded (no
-examples shown here). These BIOS messages may be frozen by pressing
-the Pause key. Use Shift-!PageUp to scroll back to the messages after
-they have flashed by. Shift-!PageDown will scroll in the opposite
-direction. The dmesg command (or looking at logs in /var/log)
-will show some of the messages but they seem to miss important ones
-from setserial. Here's an example of the start-up messages (as of mid
-1999). Note that ttyS00 is the same as /dev/ttyS0.
-
-
-
-
-
-At first you see what was detected (but the irq is only a wild guess):
-Serial driver version 4.27 with no serial options enabled
-ttyS00 at 0x03f8 (irq = 4) is a 16550A
-ttyS01 at 0x02f8 (irq = 3) is a 16550A
-ttyS02 at 0x03e8 (irq = 4) is a 16550A
-Later setserial shows you what was saved, but it's not necessarily
-correct either:
-Loading the saved-state of the serial devices...
-/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
-/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A
-/dev/ttyS2 at 0x03e8 (irq = 5) is a 16550A
-
-
-
-
-Note that there is a slight disagreement: The first message shows
-ttyS2 at irq=4 while the second shows it at irq=5. dmesg may not
-display the second message. In most cases the second message is the
-correct one. But if your having trouble it may be misleading. Before
-reading the explanation of all of this complexity in the rest of this
-section, you might just try using your serial port and see if it works
-OK. If so it may not be essential to read further.
-
-
-The second message is from the setserial program being run at
-boot-time. It shows what the device driver thinks is the correct
-configuration. But this too could be wrong. For example, the irq
-could actually be set to irq=8 in the hardware (both messages wrong).
-The irq=5 could be there because someone incorrectly put this into a
-configuration file (or the like). The fact that Linux sometimes gets
-IRQs wrong is because it doesn't by default probe for IRQs. It just
-assumes the "standard" ones (first message) or accepts what you told
-it when you configured it (second message). Neither of these is
-necessarily correct. If the serial driver has the wrong IRQ, the
-serial port is very slow or doesn't seem to work at all.
-
-
-The first message is a result of Linux probing the serial port
-addresses but it doesn't probe for IRQs. If a port shows up here it
-exists but the IRQ may be wrong. Linux doesn't check IRQs because
-doing so is not foolproof. It just assumes the IRQs are as shown
-because they are the "standard" values. Your may check them manually
-with setserial using the autoconfig and auto_irq
-options but this isn't guaranteed to be correct either.
-
-
-The data shown by the BIOS messages (which you see at first before
-Linux is booted) is what is initially set in the hardware. If your
-serial port is Plug-and-Play (PnP) then it's possible that "isapnp" or
-"setpci" will run and change these settings. Look for messages about
-this after Linux starts. The last serial port message shown in the
-example above should agree with the BIOS messages (as possibly
-modified by isapnp or setpci). If they don't agree then you either
-need to change the setting in the port hardware or use setserial to
-tell the driver what is actually set in the hardware.
-
-
-Also, if you have Plug-and-Play (PnP) serial ports, they can only be
-found by PnP software unless the IRQ and IO has been set inside the
-hardware by Plug-and-Play software. Prior to kernel 2.4 this was a
-common reason why the start-up messages did not show a serial port
-that physically exists. A PnP BIOS may automatically low-level
-configure them. PnP configuring will be explained later.
-
-
-
-
-! The /proc directory and setserial
-
-
- Type "setserial -g /dev/ttyS*". There are some other
-ways to find this info by looking at "files" in the /proc directory.
-Be warned that there is no guarantee that the same is set in the
-hardware.
-
-
-/proc/ioports will show the IO addresses that the drivers are using.
-/proc/interrupts shows the IRQs that are used by drivers of
-currently running processes (that have devices open). It shows how
-many interrupts have actually be issued.
-/proc/tty/driver/serial shows much of the above, plus the
-number of bytes that have been received and sent (even if the device
-is not now open).
-
-
-Note that for the IO addresses and IRQ assignments, you are only seeing
-what the driver thinks and not necessarily what is actually set in the
-hardware. The data on the actual number of interrupts issued and
-bytes processed is real however. If you see a large number of
-interrupts and/or bytes then it probably means that the device is (or
-was) working. But the interrupts might be from another device. If
-there are no bytes received (rx:) but bytes were transmitted (tx:3749
-for example), then only one direction of flow is working (or being
-utilized).
-
-
-Sometimes a showing of just a few interrupts doesn't mean that the
-interrupt is actually being physically generated by any serial port.
-Thus if you see almost no interrupts for a port that you're trying to
-use, that interrupt might not be set in the hardware. To view
-/proc/interrupts to check on a program that you're currently running
-(such as "minicom") you need to keep the program running while you
-view it.
-
-
-
-
-!! 6.6 What is the IO Address & IRQ of my Serial Port Hardware?
-
-
-!Introduction
-
-
-If it's PCI or ISA PnP then what's set in the hardware has been done
-by PnP methods. Even if nothing has been set or the port disabled,
-PnP ports may still be found by using "lspci -v" or "isapnp
---dumpregs". Ports disabled by jumpers (or hardware failures) are
-lost. See
-ISA PnP ports,
-PCI: What IOs and IRQs have been set?,
-PCI: Is the port enabled?
-
-PnP ports don't store their configuration in the hardware when the
-power is turned off. This is in contrast to Jumpers (non-PnP) which
-remain the same with the power off. That's why a PnP port is more
-likely to be found in a disabled state than an old non-PnP one.
-
-
-
-
-! PCI: What IOs and IRQs have been set?
-
-
- For PCI, the BIOS almost always sets the IRQ and may set the IO
-address as well. To see how it's set use "lspci -vv" (best) or look
-in /proc/bus/pci (or for kernels <2.2 /proc/pci). The modem's
-serial port is often called a "Communication controller". If more
-than one IO address is shown, the first one is more likely to be it.
-You can't change the IRQ (at least not with "setpci") This is
-because if one writes it in it's hardware register no action is taken
-on it. It's the BIOS that should actually set up the IRQs and then
-write the correct value to this register for lspci to view. If you
-must, change the IO address with "setpci" by changing the
-BASE_ADDRESS_0 or the like. The _0 (or _1) after BASE_ADDRESS must be
-the correct register.
-
-
-
-
-! PCI: Is the port enabled?
-
-
-If the port communicates via an IO address "then lspci -vv" should
-show "Control: I/O+ ..." with + meaning that the IO address is
-enabled. If it shows "I/O-" then you may need to use the setpci
-command to enable it. For example "setpci -d 151f:000 command=101".
-The "command" means the command register which is the same as the
-"Control" register displayed by lspci. The 101h sets two bits: the 1
-sets I/O to + and the 100 part keeps SERR# set to +. In this case
-only the SERR# bit of the Control register was initially observed to
-be + when the lspci command was run. So we kept it enabled to + by
-setting bit 8 (where bit 0 is I/O) to 1 by the first 1 in 101. My
-apologies if setting bits is confusing. Bit 8 is actually the 9th bit
-since we started counting bits from .
-
-
-
-
-! ISA PnP ports
-
-
-For an ISA Plug-and-Play (PnP) port one may try the pnpdump
-program (part of isapnptools). If you use the --dumpregs option
-then it should tell you the actual IO address and IRQ set in the port.
-It should also find an ISA PnP port that is disabled. The address it
-"trys" is not the device's IO address, but a special address used for
-communicating with PnP cards.
-
-
-
-
-!Finding a port that is not disabled (ISA, PCI, PnP, non-PnP)
-
-
- Perhaps the BIOS messages will tell you some info before Linux
-starts booting. Use the shift-!PageUp key to step back thru the
-boot-time messages and look at the very first ones which are from the
-BIOS. This is how it was before Linux started. Setserial can't
-change it but isapnp or setpci can. Starting with kernel 2.4, these
-are built into the serial driver.
-
-
-Using "scanport" will probe all I/O ports and will indicate what it
-thinks may be serial port. After this you could try probing with
-setserial using the "autoconfig" option. You'll need to guess the
-addresses to probe at (using clues from "scanport"). See
-What is Setserial.
-
-
-For a port set with jumpers, the IO ports and IRQs are set per the
-jumpers. If the port is not Plug-and-Play (PnP) but has been setup by
-using a DOS program, then it's set at whatever the person who ran that
-program set it to.
-
-
-
-
-!Exploring via MS Windows (a last resort)
-
-
-For PnP ports, checking on how it's configured under DOS/Windows
-may (or may not) imply how it's under Linux. MS Windows stores its
-configuration info in its Registry which is not used by Linux so they
-are not necessarily configured the same. If you let a PnP BIOS
-automatically do the configuring when you start Linux (and have told
-the BIOS that you don't have a PnP operating system when starting
-Linux) then Linux should use whatever configuration is in the BIOS's
-non-volatile memory. Windows also makes use of the same non-volatile
-memory but doesn't necessarily configure it that way.
-
-
-
-
-!! 6.7 Choosing Serial IRQs
-
-
-
- If you have Plug-and-Play ports then either a PnP BIOS or a
-serial driver may configure all your devices for you so then you may
-not need to choose any IRQs. PnP software determines what it thinks
-is best and assigns them (but it's not always best). But if you
-directly use isapnp (ISA bus) or jumpers then you have to choose. If
-you already know what IRQ you want to use you could skip this section
-except that you may want to know that IRQ 0 has a special use (see the
-following paragraph).
-
-
-
-
-!IRQ 0 is not an IRQ
-
-
- While IRQ 0 is actually the timer (in hardware) it has a special
-meaning for setting a serial port with setserial. It tells the driver
-that there is no interrupt for the port and the driver then will use
-polling methods. Such polling puts more load on the CPU but can be
-tried if there is an interrupt conflict or mis-set interrupt. The
-advantage of assigning IRQ 0 is that you don't need to know what
-interrupt is set in the hardware. It should be used only as a
-temporary expedient until you are able to find a real interrupt to
-use.
-
-
-
-
-! Interrupt sharing, Kernels 2.2+
-
-
- Sharing of IRQs is where two devices use the same IRQ. As a
-general rule, this wasn't allowed for the ISA bus. The PCI bus may
-share IRQs but one can't share the same IRQ between the ISA and the
-PCI bus. Most multi-port boards may share IRQs. Sharing is not as
-efficient since every time a shared interrupt is given a check must be
-made to determine where it came from. Thus if it's feasible, it's
-nicer to allocate every device its own interrupt.
-
-
-Prior to kernel 2.2, serial IRQs could not be shared with each other
-except for most multiport boards. Starting with kernel 2.2 serial
-IRQs may be sometimes shared between serial ports. In order for
-sharing to work in 2.2 the kernel must have been compiled with
-CONFIG_SERIAL_SHARE_IRQ, and the serial port hardware must support
-sharing (so that if two serial cards put different voltages on the
-same interrupt wire, only the voltage that means "this is an
-interrupt" will prevail). Since the PCI bus specs permit sharing, any
-PCI card should allow sharing.
-
-
-
-
-!What IRQs to choose?
-
-
- The serial hardware often has only a limited number of IRQs. Also
-you don't want IRQ conflicts. So there may not be much of a choice.
-Your PC may normally come with ttyS0 and ttyS2 at IRQ 4, and
-ttyS1 and ttyS3 at IRQ 3. Looking at
-/proc/interrupts will show which IRQs are being used by
-programs currently running. You likely don't want to use one of
-these. Before IRQ 5 was used for sound cards, it was often used for a
-serial port.
-
-
-Here is how Greg (original author of Serial-HOWTO) set his up in
-/etc/rc.d/rc.serial. rc.serial is a file (shell script) which runs at
-start-up (it may have a different name or location). For versions of
-"setserial" after 2.15 it's not always done this way anymore but this
-example does show the choice of IRQs.
-
-
-
-
-
-/sbin/setserial /dev/ttyS0 irq 3 # my serial mouse
-/sbin/setserial /dev/ttyS1 irq 4 # my Wyse dumb terminal
-/sbin/setserial /dev/ttyS2 irq 5 # my Zoom modem
-/sbin/setserial /dev/ttyS3 irq 9 # my USR modem
-
-
-
-
-Standard IRQ assignments:
-
-IRQ 0 Timer channel 0 (May mean "no interrupt". See below.)
-IRQ 1 Keyboard
-IRQ 2 Cascade for controller 2
-IRQ 3 Serial port 2
-IRQ 4 Serial port 1
-IRQ 5 Parallel port 2, Sound card
-IRQ 6 Floppy diskette
-IRQ 7 Parallel port 1
-IRQ 8 Real-time clock
-IRQ 9 Redirected to IRQ2
-IRQ 10 not assigned
-IRQ 11 not assigned
-IRQ 12 not assigned
-IRQ 13 Math coprocessor
-IRQ 14 Hard disk controller 1
-IRQ 15 Hard disk controller 2
-
-
-
-
-
-
-There is really no Right Thing to do when choosing interrupts. Try to
-find one that isn't being used by the motherboard, or any other
-boards. 2, 3, 4, 5, 7, 10, 11, 12 or 15 are possible choices. Note
-that IRQ 2 is the same as IRQ 9. You can call it either 2 or 9, the
-serial driver is very understanding. If you have a very old serial
-board it may not be able to use IRQs 8 and above.
-
-
-Make sure you don't use IRQs 1, 6, 8, 13 or 14! These are used by
-your motherboard. You will make her very unhappy by taking her IRQs.
-When you are done you might want to double-check
-/proc/interrupts when programs that use interrupts are being
-run and make sure there are no conflicts.
-
-
-
-
-!! 6.8 Choosing Addresses --Video card conflict with ttyS3
-
-
-
- Here's a problem with some old serial cards. The IO address of
-the IBM 8514 video board (and others like it) is allegedly 0x?2e8
-where ? is 2, 4, 8, or 9. This may conflict with the IO address of
-ttyS3 at 0x02e8. Your may think that this shouldn't happen since
-the addresses are different in the high order digit (the leading 0 in
-02e8). You're right, but a poorly designed serial port may ignore the
-high order digit and respond to any address that ends in 2e8. That is
-bad news if you try to use ttyS3 (ISA bus) at this IO address.
-
-
-For the ISA bus you should try to use the default addresses shown
-below. PCI cards use different addresses so as not to conflict with
-ISA addresses. The addresses shown below represent the first address
-of an 8-byte range. For example 3f8 is really the range 3f8-3ff.
-Each serial device (as well as other types of devices that use IO
-addresses) needs its own unique address range. There should be no
-overlaps (conflicts). Here are the default addresses for commonly
-used serial ports on the ISA bus:
-
-
-
-
-
-ttyS0 address 0x3f8
-ttyS1 address 0x2f8
-ttyS2 address 0x3e8
-ttyS3 address 0x2e8
-
-
-
-
-Suppose there is an address conflict (as reported by setserial -g
-/dev/ttyS*) between a real serial port and another port which
-does not physically exist (and shows UART: unknown). Such a conflict
-shouldn't cause problems but it sometimes does in older kernels. To
-avoid this problem don't permit such address conflicts or delete
-/dev/ttySx if it doesn't physically exist.
-
-
-
-
-!! 6.9 Set IO Address & IRQ in the hardware (mostly for PnP)
-
-
-
- After it's set in the hardware don't forget to insure that it also
-gets set in the driver by using setserial. For non-PnP serial
-ports they are either set in hardware by jumpers or by running a DOS
-program ("jumperless") to set them (it may disable PnP). The rest of
-this subsection is only for PnP serial ports. Here's a list of the
-possible methods of configuring PnP serial ports:
-
-
-
-
-
-* Using a PnP BIOS CMOS setup menu
-(usually only for external
-devices
-on ttyS0 (Com1) and ttyS1 (Com2))
-*
-
-* Letting a PnP BIOS automatically configure a PnP serial port
-See
-Using a PnP BIOS to I0-IRQ Configure
-*
-
-* Doing nothing if the serial driver recognized your card OK
-*
-
-* Using isapnp for a PnP serial port non-PCI)
-*
-
-* Using setpci (pciutils or pcitools) for the PCI bus
-*
-
-
-
-The IO address and IRQ must be set (by PnP) in their registers each
-time the system is powered on since PnP hardware doesn't remember how
-it was set when the power is shut off. A simple way to do this is to
-let a PnP BIOS know that you don't have a PnP OS and the BIOS will
-automatically do this each time you start. This might cause problems
-in Windows (which is a PnP OS) if you start Windows with the BIOS
-thinking that Windows is not a PnP OS. See Plug-and-Play-HOWTO.
-
-
-Plug-and-Play (PnP) was designed to automate this io-irq configuring,
-but for Linux it initially made life much more complicated. In modern
-Linux (2.4 kernels --partially in 2.2 kernels), each device driver has
-to do it's own PnP (using supplied software which it may utilize).
-There is unfortunately no centralized planning for assigning IO
-addresses and IRQs as there is in MS Windows. But it usually works
-out OK in Linux anyway.
-
-
-
-
-! Using a PnP BIOS to I0-IRQ Configure
-
-
- While the explanation of how to use setpci or isapnp for io-irq
-configuring should come with such software, this is not the case if
-you want to let a PnP BIOS do such configuring. Not all PnP BIOS can
-do this. The BIOS usually has a CMOS menu for setting up the first
-two serial ports. This menu may be hard to find. For an "Award"
-BIOS it was found under "chipset features setup" There is often
-little to choose from. Unless otherwise indicated in a menu, these
-first two ports normally get set at the standard IO addresses and
-IRQs. See
-Serial Port Device Names & Numbers
-
-Whether you like it or not, when you start up a PC a PnP BIOS starts
-to do PnP (io-irq) configuring of hardware devices. It may do the job
-partially and turn the rest over to a PnP OS (which Linux is in some
-sense) or if thinks you don't have a PnP OS it may fully configure all
-the PnP devices but not configure the device drivers. This is what
-you want but it's not always easy to figure out exactly what the PnP
-BIOS has done.
-
-
-If you tell the BIOS that you don't have a PnP OS, then the PnP BIOS
-should do the configuring of all PnP serial ports --not just the first
-two. An indirect way to control what the BIOS does (if you have
-Windows 9x on the same PC) is to "force" a configuration under
-Windows. See Plug-and-Play-HOWTO and search for "forced". It's
-easier to use the CMOS BIOS menu which may override what you
-"forced" under Windows. There could be a BIOS option that can set or
-disable this "override" capability.
-
-
-If you add a new PnP device, the BIOS should PnP configure it. It
-could even change the io-irq of existing devices if required to avoid
-any conflicts. For this purpose, it keeps a list of non-PnP devices
-provided that you have told the BIOS how these non-PnP devices are
-io-irq configured. One way to tell the BIOS this is by running a
-program called ICU under DOS/Windows.
-
-
-But how do you find out what the BIOS has done so that you set up the
-device drivers with this info? The BIOS itself may provide some info,
-either in its setup menus of via messages on the screen when you turn
-on your computer. See
-What is set in my serial port hardware?. Other ways of finding out is to use lspci for
-the PCI bus or isapnp --dumpregs for the ISA bus. The cryptic results
-it shows you may not be clear to a novice.
-
-
-
-
-!!6.10 Giving the IRQ and IO Address to Setserial
-
-
-
- Once you've set the IRQ and IO address in the hardware (or arranged
-for it to be done by PnP) you also need to insure that the "setserial"
-command is run each time you start Linux. See the subsection
-Boot-time Configuration
-
-
-
-
-
-----
-
-!! 7. Configuring the Serial Driver (high-level) "stty"
-
-!!7.1 Introduction
-
-
-
-This configuring is normally done by your communications program
-such as wvdial. It may do much of it without even letting you know what
-it's done. In olden days it was done with the "stty" utility. If you
-set something with stty, the communications program may change the
-setting so it's usually best to just let the communications program
-handle it. See
-What is stty ?
-
-
-
-!!7.2 Hardware flow control (RTS/CTS)
-
-
-
- See
-Flow Control for an explanation of
-it. You should always use hardware flow control if possible. Your
-communication program or "getty" should have an option for
-setting it (and if you're in luck it might be enabled by default). It
-needs to be set both inside your modem (by an init string or default)
-and in the device driver. Your communication program should set both
-of these (if you configure it right).
-
-
-If none of the above will fully enable hardware flow control. Then
-you must do it yourself. For the modem, make sure that it's either
-done by the init string or is on by default. If you need to tell the
-device driver to do it is best done on startup by putting it in a file
-that runs at boot-time. See the subsection
-Boot-time Configuration You need to add the following to such
-a file for each serial port (example is ttyS2) you want to enable
-hardware flow control on:
-
-
-
-
-
-stty crtscts < /dev/ttyS2
-or
-stty -F /dev/ttyS2 crtscts
-
-
-
-
-If you want to see if flow control is enabled do the following: In
-minicom (or the like) type AT&V to see how the modem is configured
-and look for &K3 which means hardware flow control. Then without
-exiting the communications program (such as minicom) see if the device
-driver knows about it by typing: stty -F /dev/ttyS2 -a. Look for
-"crtscts" (without a disabling minus sign).
-
-
-
-
-!!7.3 Speed Settings
-
-
-
- Besides flow control there is speed. See
-What Speed Should I Use with My Modem. There's also are
-parity and bits-per-byte settings. Normally the port is set by the
-communications program at 8N1 (8-bits per byte, No parity, and 1 stop
-bit). If you're running PPP then you must use 8N1. So if you get a
-complaint that it's not 8-bit clean then it's likely not 8N1 as it
-should be.
-
-
-
-
-!!7.4 Ignore CD Setting: clocal
-
-
-
-If the modem is not sending a CD signal and clocal is disabled
-(stty shows -clocal) then a program may not be able to open the serial
-port. If the port can't open, the program may just hang, waiting
-(often in vain) for a CD signal from the modem. Actually, a skilled
-programmer can write the program in such a way as to force the port to
-open even when CD and -clocal say not to so it's not always a problem.
-
-
-One way to avoid any possible problems is to send "AT&C" to the
-modem so that CD from the modem will always be on. CD always-on is
-fine for dial-out but for dial-in the CD signal is sometimes (but
-rarely) used to detected an incoming call.
-
-
-Minicom sets clocal automatically when it starts up so there is no
-problem. But version 6..192 of Kermit hung when I set -clocal and
-tried to "set line ...".
-
-
-Here's a problem that existed prior to the year 2000 or thereabouts.
-It's since been fixed. If -clocal is set and there is no CD signal,
-then the "stty" command will hang and there is seemingly no way to set
-clocal (except by running minicom). But minicom will restore -clocal
-when it exits. One way to get out of this is to use minicom to send
-the "AT&C" to the modem (to get the CD signal) and then exit
-minicom with no reset so that the CD signal always remains on. Then
-you may use stty again.
-
-
-
-
-!! 7.5 What is stty ?
-
-
-
- stty is something like setserial but it sets the speed (baud
-rate), hardware flow control, and other parameters of a serial port.
-Typing "stty -F /dev/ttyS2 -a" should show you how ttyS2 is
-configured. Most of the stty settings are for things that you never
-need to use with modems. Many of the setting are only needed for
-Text-Terminals (and some are only needed for antique terminals of the
-1970s). Your communication package should automatically set up the
-several settings needed for modems. For this reason you normally don't
-need to use stty so it's not covered much in this Modem-HOWTO. But
-stty is sometimes useful for trouble-shooting. More is said about
-stty in the Serial-HOWTO or Text-Terminal-HOWTO..
-
-
-
-----
-
-!! 8. Modem Configuration (excluding serial port)
-
-!!8.1 Finding Your Modem
-
-
-
- Before spending a lot of time deciding how to configure your
-modem, you first need to make sure it can be found and that
-AT-commands and the like can be sent to it. So I suggest you first
-give it a very simple configuration using the communication program
-you will be using on the port and see it it works. If this works you
-may then want to improve on the configuration, If not then see
-My Modem is Physically There but Can't be Found. A winmodem may be hard to find and will not work under
-Linux.
-
-
-
-
-!!8.2 AT Commands
-
-
-
- While the serial port on which a modem resides requires
-configuring, so does the modem itself. The modem is configured by
-sending AT commands (or the like) to it on the same serial line that
-is used to send data.
-
-
-Most modems use an AT command set. These are cryptic and short ASCII
-commands where all command strings must be prefaced by the letters AT.
-AT means: ATtention, expect a command to follow. For example:
-ATZ&K3<return> This is an AT-command string with two
-commands here: Z and &K3. Z is short for Z0 and a few modems
-require that you use Z0 instead of just Z. It's like this for other
-commands ending in . The command string is terminated by a return
-character (use the <enter> key if you are manually typing it). A
-string that's too long (40 or more characters) may not work on older
-modems. You may use either uppercase or lowercase letters.
-
-
-Unfortunately there are many different variations of the AT
-command set so that what works for one modem may or may not work for
-another modem. Thus there is no guarantee that the AT commands given
-in this section will work on your modem.
-
-
-Such command strings are either automatically sent to the modem by
-communication programs or are manually typed in by you. Most
-communication programs provide a screen where you may change (edit)
-and save the init string that the communication program will use.
-The modem itself has a stored configuration (profile) which is like a
-long init string. It represents the configuration of the modem when
-it's first tuned on. You may change it to suit your taste. In most
-cases there are a few different such configurations (profiles) and
-there are ways to designate one of them to be active.
-
-
-If you have a manual for your modem (either on paper or on floppy
-disk) you might find AT-commands there. 3Com modems (and others ??)
-have AT-Command help files built into the modem so if you type say
-"AT$" to the modem it will display some "online help".
-
-
-You can also find info on AT commands on the Internet. You should
-first try a site for your modem manufacturer. If this doesn't work
-out then you can search the Internet using terms that are from AT
-commands such as &C1, &D3, etc. This will tend to find sites
-that actually list AT-Commands instead of sites that just talk about
-them in general. You might also try a few of the sites listed in the
-subsection
-Web Sites. Be warned that the
-AT-commands for a different brand of modem may be somewhat different.
-
-
-
-
-!! 8.3 Init Strings: Saving and Recalling
-
-
-
- The examples given in this subsection are from the Hayes AT modem
-command set. All command strings must be prefaced by the two letters
-AT. For example: AT&C1&D3^M (^M is the return character).
-When a modem is powered on, it automatically configures itself with
-one of the configurations it has stored in its non-volatile memory.
-If this configuration is satisfactory there is nothing further to do.
-
-
-If it's not satisfactory, then one may either alter the stored
-configuration or configure the modem each time you use it by sending
-it a string of commands known as an "init string" (= initialization
-string). Normally, a communication program does this. What it
-sends will depend on how you configured the communications program.
-Your communication program should allow you to edit the init string
-and change it to whatever you want. Sometimes the communications
-program will let you select the model of your modem and then it will
-use an init string that it thinks is best for that modem.
-
-
-The configuration of the modem when it's first powered on may be
-expressed by an init string. You might think of this as the default
-"string" (called a profile). If your communications program sends the
-modem another string (the init string), then this string will modify
-the default configuration. For example, if the init string only
-contains two commands, then only those two items will be changed.
-However, some commands will recall a stored profile from inside the
-modem so a single such command in the init string can thereby change
-everything in the configuration.
-
-
-Modern modems have a few different stored profiles to choose from that
-are stored in the modem's non-volatile memory (it's still there when
-you turn it off). In my modem there are two factory profiles (0 and
-1, neither of which you can change) and two user defined profiles (
-and 1) that the user may set and store. Your modem may have more. To
-view some of these profiles send the command &V. At power-up one
-of the user-defined profiles is loaded. For example, if you type the
-command &Y0 (just Y0 for a 3Com modem) then in the future profile
-0 will be used at power-on.
-
-
-There are also commands to load (activate) any of the stored profiles.
-Such a load command may be put in an init string. Of course if it
-loads the same profile that was automatically loaded at power-up,
-nothing is changed (unless the active profile has been modified since
-power-up). Since your profile could have thus been modified it's a
-good idea to use some kind of an init string even if it does nothing
-more than load a stored profile.
-
-
-Examples of loading saved profiles:
-Z0 loads user-defined profile 0 and resets (hangs up, etc.)
-&F1 loads factory profile 1
-
-
-Once you have sent commands to the modem to configure it the way you
-want (such as loading a factory profile and modifying it a little)
-you may save this as a user-defined profile:
-&W0 saves the current configuration to user-profile .
-
-
-Many people don't bother saving a good configuration in their modem,
-but instead, send the modem a longer init string each time the modem
-is used. Another method is to restore the factory default by &F1
-at the start of the init string and then modify it a little by adding
-a few other commands to the end of the init string. Since there is no
-way to modify the factory default this prevents anyone from changing
-the configuration by modifying (and saving) the user-defined profile.
-
-
-You may choose an init string supplied by someone else that they think
-is right for your modem. Some communication programs have a library
-of init strings to select from. The most difficult method (and one
-which will teach you the most about modems) is to study the modem
-manual and write one yourself. You could save this configuration
-inside the modem so that you don't need an init string. A third
-alternative is to start with an init string that someone else wrote,
-but modify it to suit your purposes.
-
-
-If you look at init strings used by communication programs you may see
-symbols which are not valid modem commands. These symbols are
-commands to the communication program itself and will not be sent to
-the modem. For example, may mean to pause briefly.
-
-
-
-
-!Where is my "init string" so I can modify it ?
-
-
- This depends on your communication program (often a PPP program).
-If this is the latest version of Modem-HOWTO send me info for other
-cases.
-
-
-* Gnome: run pppsetup
-*
-
-* wvdial: edit /etc/wvdial.conf
-*
-
-* minicom: hit ^Ao (or possibly ALT-o), then select "Modem and
-Dialing"
-*
-
-
-
-
-
-!! 8.4 Other AT Modem Commands
-
-
-
- For dial-in see
-Dial-in Modem Configuration. The rest of
-this section is mostly what was in the old Serial-HOWTO. All strings
-must start with AT. Here's a few Hayes AT codes that should be in the
-string (if they are not set by using a factory default or by a saved
-configuration).
-
-
-
-
-
-*E1 command echo ON
-*
-
-*Q0 result codes are reported
-*
-
-*V1 result codes are verbose
-*
-
-*S0=0 never answer (uugetty does this with the WAITFOR option)
-*
-
-
-
-Here's some more AT commands for special purposes:
-
-
-*&C1 CD is only on when you're connected
-*
-
-*&S0 DSR is always on
-*
-
-*X3 Dial even if there is no dialtone (Use where
-dial-tones don't exist).
-*
-
-
-
-
-
-
- Note: to get his old USR Courier V.34 modem to reset correctly
-when DTR drops, Greg Hankins had to set &D2 and S13=1
-(this sets bit 0 of register S13). This has been confirmed to work on
-USR Sportster V.34 modems as well.
-
-
-
-
-
- Note: some old Supra modems treat CD differently than other
-modems. If you are using a Supra, try setting &C0 and
-''not'' &C1. You must also set &D2 to handle DTR
-correctly.
-
-
-
-
-!!8.5 Blacklisting
-
-
-
-If phone number is dialed a few times with no success, some
-modems may blacklist a phone number. After a certain time you may try
-again. Some countries require this to reduce needless repeated
-dialing. To view the blacklist try %B. To delete the blacklist use
-these AT commands:
-
-
-* SR Robotics o 3COM: s40=2 or if NG try s40=7
-*
-
-* Lucent: %t21,18,
-*
-
-* Rockwell: %tcb
-*
-
-* Cirrus Logic: *nc9
-*
-
-
-
-
-
-!!8.6 What AT Commands are Now Set in my Modem?
-
-
-
- You may try to use minicom for viewing your modem profile. It's
-best not to have any other process running on the modem port when you
-do this. If you have set up minicom for your modem, then you may type
-on the command line: minicom -o to start minicom without
-restoring the saved modem profile. Then type at&v to
-display the profile. To exit minicom without disturbing this profile,
-use the q (quit) command for exiting without resetting.
-
-
-The above may not work for various reasons. If the modem has been set
-not to echo result codes it may not even display any profile. If there
-is another process running on the modem port at the same time, some of
-what the modem sends to you is likely to be read by the other process
-so you will see only part of the profile. Is there some way to
-temporarily stop the other process on the port so it will not
-interfere? I tried the "stop" signal using the "kill" command but it
-didn't work. If this is the latest version of this HOWTO, let me know
-if you find a way to do it.
-
-
-If you have at least one process running on the modem port and kill
-them, the modem's profile may be reset so you will not observe
-what the original profile was. This will happen if you kill getty (or
-it's replacements: login or bash) and have &D3 set. The killing
-of getty (or the like) will drop DTR and reset the modem's profile to
-the power-on state. To keep getty from respawning when killed, comment
-it out in /etc/inittab and do an "init q".
-
-
-
-
-!!8.7 Modem States (or Modes)
-
-
-
- Since the channel for sending AT commands to the modem is the same
-channel that is used for the flow of data (files, packets, etc.) then
-it's important to cleanly separate the AT commands from the data.
-
-
-When the modem is first turned on it's in the command mode (also
-called terminal mode, idle state or AT-command mode). Anything sent
-to it from the PC is assumed to be an AT command and not data. Then
-if a dial command is sent to it (ATD...), it dials and connects to
-another modem. It's now in the on-line data mode (connected) and
-sends and receives data (such as Internet pages). In this mode AT
-command one trys to send it will not work but will be transmitted to
-the other modem instead. Except for the escape command. This is +++
-with a minimum time delay both at the start and end. The time delay
-allows the modem to determine that it is likely a real escape and not
-just +++ in a file being transmitted.
-
-
-So we have two states so far: AT-command and on-line data. But there
-is a third important state which is sort of a combination of these
-two. It's the on-line command mode. This is when the modem maintains
-a connection (without sending/receiving data) but anything sent from
-the PC is interpreted as an AT command. This is the state reached
-with a +++ escape signal or by a DTR drop from the PC provided the
-&D1 has been set. Then one can send AT commands to the modem
-including commands which will leave this state and go to one of the
-other two states.
-
-
-There are other states also: dialing state and handshaking state but
-they normally lead to the connected (on-line) state. If they don't
-then the modem should hang up, thereby returning to the initial
-AT-command (or idle) state.
-
-
-
-----
-
-!! 9. Serial Port Devices /dev/ttyS2, (or /dev/ttys/2) etc.
-
-
- For creating devices in the device directory see:
-
-
-
-
-
-
-
-
-
-
-!!9.1 Devfs (The new Device File System)
-
-
-
- This is a new type of device interface to Linux. It's optional
-starting with kernel 2.4. It's more efficient than the conventional
-interface and makes it easy to deal with a huge number of devices.
-The device names have all changed as well. But there's an option to
-continue using the old names. For a detailed description of it see:
-http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.html
-
-The name changes (if used) are: ttyS2 becomes tts/2 (Serial port),
-tty3 becomes vc/3 (Virtual Console), ptyp1 becomes pty/m1 (PTY
-master), ttyp2 becomes pty/s2 (PTY slave). "tts" looks like a
-directory which contains devices "files": , 1, 2, etc. All of these
-new names should still be in the /dev directory although optionally
-one may put them elsewhere.
-
-
-
-
-!! 9.2 Serial Port Device Names & Numbers
-
-
-
- Devices in Linux have major and minor numbers (unless you use the
-new devfs). The serial port ttySx (x=,1,2, etc.) has major number 4.
-You may see this (and the minor numbers too) by typing: "ls -l ttyS*"
-in the /dev directory.
-
-
-There formerly was a "cua" name for each serial port and it behaved
-just a little differently. For example, ttyS2 would correspond to
-cua2. The cua major number was 5 and minor numbers started at 64.
-You may still have the cua devices in your /dev directory but they are
-now deprecated. Their drivers behave slightly different than for the
-ttyS ones. name="cua Device Obsolete">."')
-
-
-Dos/Windows use the COM name while the setserial program uses
-tty00, tty01, etc. Don't confuse these with dev/tty0, dev/tty1, etc.
-which are used for the console (your PC monitor) but are not serial
-ports. The table below is for the "standard" case (but yours could be
-different). The major/minor numbers don't exist with the devfs.
-
-
-
-
-
-ISA IO devfs usb
-dos major minor address devfs devfs usb acm modem
-COM1 /dev/ttyS0 4, 64; 3F8 /dev/tts/0 /dev/usb/tts/0 /dev/usb/acm/
-COM2 /dev/ttyS1 4, 65; 2F8 /dev/tts/1 /dev/usb/tts/1 /dev/usb/acm/1
-COM3 /dev/ttyS2 4, 66; 3E8 /dev/tts/2 /dev/usb/tts/2 /dev/usb/acm/2
-COM4 /dev/ttyS3 4, 67; 2E8 /dev/tts/3 /dev/usb/tts/3 /dev/usb/acm/3
-
-
-
-
-
-
-!!9.3 USB (Universal Serial Bus) Ports
-
-
-
-The serial ports on the USB are: /dev/ttyUSB0, /dev/ttyUSB1, etc.
-The devfs names for these are: /dev/usb/tts/, /dev/usb/tts/1, etc.
-For many modems they are /dev/usb/acm/, etc. (in devfs notation).
-For more info see the usb subdirectory in the kernel documentation
-directory for files: acm and usb-serial.
-
-
-
-
-!!9.4 Link ttySN to /dev/modem
-
-
-
- On some installations, two extra devices will be created,
-/dev/modem for your modem and /dev/mouse for a
-mouse. Both of these are symbolic links to the appropriate serial
-device in /dev which you specified during the installation
-Except if you have a bus mouse, then /dev/mouse will point to
-the bus mouse device).
-
-
-Formerly (in the 1990s) the use of /dev/modem was discouraged
-since lock files might not realize that it was really say
-/dev/ttyS2. The newer lock file system doesn't fall into
-this trap so it's now OK to use such links.
-
-
-
-
-
-
-
-
-
-
-!! 9.5 cua Device Obsolete
-
-
-
- Each ttyS device has a corresponding cua device. But the cua
-device is deprecated so it's best to use ttyS (unless cua is
-required). There is a difference between cua and ttyS but a savvy
-programmer can make a ttyS port behave just like a cua port so there
-is no real need for the cua anymore. Except that some older programs
-may need to use the cua.
-
-
-What's the difference? The main difference between cua and ttyS has
-to do with what happens in a C-program when an ordinary "open" command
-tries to open the port. If a cua port has been set to check modem
-control signals, the port can be opened even if the CD modem control
-signal says not to. Astute programming (by adding additional lines to
-the program) can force a ttyS port to behave this way also. But a cua
-port can be more easily programmed to open for dialing out on a modem
-even when the modem fails to assert CD (since no one has called into
-it and there's no carrier). That's why cua was once used for dial-out
-and ttyS used for dial-in.
-
-
-Starting with Linux kernel 2.2, a warning message is put in the
-kernel log when one uses cua. This is an omen that cua is defunct and
-should be avoided if possible.
-
-
-
-----
-
-!!10. Interesting Programs You Should Know About
-
-!! 10.1 What is setserial ?
-
-
-
- This part is in 3 HOWTOs: Modem, Serial, and Text-Terminal. There
-are some minor differences, depending on which HOWTO it appears in.
-
-
-
-
-!Introduction
-
-
- If you have a Laptop (PCMCIA) don't use setserial until you
-read
-Laptops: PCMCIA. setserial is a
-program which allows you to tell the device driver software the I/O
-address of the serial port, which interrupt (IRQ) is set in the port's
-hardware, what type of UART you have, etc. Since there's a good
-chance that the serial ports will be automatically detected and set,
-many people never need to use setserial. In any case setserial
-will not work without either serial support built into the kernel or
-loaded as a module. The module may get loaded automatically if you
-(or a script) tries to use setserial.
-
-
-Setserial can also show how the driver is currently set. In addition,
-it can be made to probe the hardware I0 port addresses to try to
-determine the UART type and IRQ, but this has severe limitations. See
-Probing. Note that it can't set the IRQ
-or the port address in the hardware of PnP serial ports (but the
-plug-and-play features of the serial driver may do this). It can't
-read the PnP data stored in configuration registers in the hardware.
-
-
-If you only have one or two built-in serial ports, they will usually
-get set up correctly without using setserial. Otherwise, if you add
-more serial ports (such as a modem card) you may need to deal with
-setserial. Besides the man page for setserial, check out info in
-/usr/doc/setserial.../ or /usr/share/doc/setserial.
-It should tell you how setserial is handled in your distribution of
-Linux.
-
-
-Setserial is often run automatically at boot-time by a start-up
-shell-script for the purpose of assigning IRQs, etc. to the driver.
-Setserial will only work if the serial module is loaded (or if the
-equivalent was compiled into your kernel). If the serial module gets
-unloaded later on, the changes previously made by setserial will
-be forgotten by the kernel. But recent (2000) distributions may
-contain scripts that save and restore this. If not, then
-setserial must be run again to reestablish them. In addition to
-running via a start-up script, something akin to setserial also
-runs earlier when the serial module is loaded (or the like). Thus
-when you watch the start-up messages on the screen it may look like it
-ran twice, and in fact it has.
-
-
-
-
-
-
-
-
-
-
-
-Setserial does not set either IRQ's nor I/O addresses in the serial
-port hardware itself. That is done either by jumpers or by
-plug-and-play. You must tell setserial the identical values that have
-been set in the hardware. Do not just invent some values that you
-think would be nice to use and then tell them to setserial. However,
-if you know the I/O address but don't know the IRQ you may command
-setserial to attempt to determine the IRQ.
-
-
-You can see a list of possible commands by just typing setserial
-with no arguments. This fails to show you the one-letter options such
-as -v for verbose which you should normally use when troubleshooting.
-Note that setserial calls an IO address a "port". If you type:
-
-
-setserial -g /dev/ttyS*
-
-
-you'll see some info about how that device driver is configured for
-your ports. Note that where it says "UART: unknown" it
-probably means that no uart exists. In other words you probably have
-no such serial port and the other info shown about the port is
-meaningless and should be ignored. If you really do have such a
-serial port, setserial doesn't recognize it and that needs to be
-fixed.
-
-
-If you add -a to the option -g you will see more info although few
-people need to deal with (or understand) this additional info since
-the default settings you see usually work fine. In normal cases the
-hardware is set up the same way as "setserial" reports, but if you are
-having problems there is a good chance that "setserial" has it wrong.
-In fact, you can run "setserial" and assign a purely fictitious I/O
-port address, any IRQ, and whatever uart type you would like to have.
-Then the next time you type "setserial ..." it will display these
-bogus values without complaint. They will also be officially
-registered with the kernel as displayed (at the top of the screen) by
-the "scanport" command. Of course the serial port driver will not
-work correctly (if at all) if you attempt to use such a port. Thus
-when giving parameters to "setserial" anything goes. Well almost. If
-you assign one port a base address that is already assigned (such as
-3e8) it will not accept it. But if you use 3e9 it will accept it.
-Unfortunately 3e9 is already assigned since it is within the range
-starting at base address 3e8. Thus the moral of the story is to make
-sure your data is correct before assigning resources with setserial.
-
-
-While assignments made by setserial are lost when the PC is powered
-off, a configuration file may restore them (or a previous
-configuration) when the PC is started up again. In newer versions,
-what you change by setserial may get automatically saved to a
-configuration file. In older versions, the configuration file only
-changes if you edit it manually so the configuration always remains
-the same from boot to boot. See
-Configuration Scripts/Files
-
-
-
-! Probing
-
-
-Prior to probing with "setserial", one may run the "scanport"
-command to check all possible ports in one scan. It makes crude
-guesses as to what is on some ports but doesn't determine the IRQ. But
-it's a fast first start. It may hang your PC but so far it's worked
-fine for me.
-
-
-With appropriate options, setserial can probe (at a given I/O
-address) for a serial port but you must guess the I/O address. If you
-ask it to probe for /dev/ttyS2 for example, it will only probe at the
-address it thinks ttyS2 is at (2F8). If you tell setserial that ttyS2
-is at a different address, then it will probe at that address, etc.
-See
-Probing
-
-The purpose of this is to see if there is a uart there, and if so,
-what its IRQ is. Use "setserial" mainly as a last resort as there are
-faster ways to attempt it such as wvdialconf to detect modems, looking
-at very early boot-time messages, or using pnpdump
---dumpregs. To try to detect the physical hardware use for
-example :
-setserial /dev/ttyS2 -v autoconfig
-If the resulting message shows a uart type such as 16550A, then you're
-OK. If instead it shows "unknown" for the uart type, then there
-is supposedly no serial port at all at that I/O address. Some cheap
-serial ports don't identify themselves correctly so if you see
-"unknown" you still might have a serial port there.
-
-
-Besides auto-probing for a uart type, setserial can auto-probe for
-IRQ's but this doesn't always work right either. In one case it first
-gave the wrong irq but when the command was repeated it found the
-correct irq. In versions of setserial >= 2.15, the results of your
-last probe test could be automatically saved and put into the
-configuration file /etc/serial.conf which will be used next
-time you start Linux. At boot-time when the serial module loads (or
-the like), a probe for UARTs is made automatically and reported on the
-screen. But the IRQs shown may be wrong. The second report of the
-same is the result of a script which usually does no probing and thus
-provides no reliable information as to how the hardware is actually
-set. It only shows configuration data someone wrote into the script
-or data that got saved in /etc/serial.conf.
-
-
-It may be that two serial ports both have the same IO address set in
-the hardware. Of course this is not permitted but it sometimes
-happens anyway. Probing detects one serial port when actually there
-are two. However if they have different IRQs, then the probe for IRQs
-may show IRQ = . For me it only did this if I first used
-setserial to give the IRQ a fictitious value.
-
-
-
-
-
-
-
-! Boot-time Configuration
-
-
- When the kernel loads the serial module (or if the "module
-equivalent" is built into the kernel) then only ttyS{-3} are
-auto-detected and the driver is set to use only IRQs 4 and 3
-(regardless of what IRQs are actually set in the hardware). You see
-this as a boot-time message just like as if setserial had been
-run.
-
-
-To correct possible errors in IRQs (or for other reasons) there may be
-a file somewhere that runs setserial again. Unfortunately, if
-this file has some IRQs wrong, the kernel will still have incorrect
-info about the IRQs. This file should run early at boot-time before
-any process uses the serial port. In fact, your distribution may have
-set things up so that the setserial program runs automatically from a
-start-up script at boot-time. More info about how to handle this
-situation for your particular distribution might be found in file
-named "setserial..." or the like located in directory /usr/doc/ or
-/usr/share/doc/.
-
-
-Before modifying a configuration file, you can test out a "proposed"
-setserial command by just typing it on the command line. In some
-cases the results of this use of setserial will automatically get
-saved in /etc/serial.conf when you shutdown. So if it worked OK (and
-solved your problem) then there's no need to modify any configuration
-file. See
-New configuration method using /etc/serial.conf.
-
-
-
-
-! Configuration Scripts/Files
-
-
- Your objective is to modify (or create) a script file in the /etc
-tree that runs setserial at boot-time. Most distributions provide
-such a file (but it may not initially reside in the /etc tree). In
-addition, setserial 2.15 and higher often have an /etc/serial.conf
-file that is used by the above script so that you don't need to
-directly edit the script that runs setserial. In addition just using
-setserial on the command line (2.15+) may ultimately alter this
-configuration file.
-
-
-So prior to version 2.15 all you do is edit a script. After 2.15 you
-may need to either do one of three things: 1. edit a script. 2. edit
-/etc/serial.conf or 3. run "setserial" on the command line
-which may result in /etc/serial.conf automatically being
-edited. Which one of these you need to do depends on both your
-particular distribution, and how you have set it up.
-
-
-
-
-! Edit a script (required prior to version 2.15)
-
-
- Prior to setserial 2.15 (1999) there was no /etc/serial.conf file
-to configure setserial. Thus you need to find the file that runs
-"setserial" at boot time and edit it. If it doesn't exist, you need
-to create one (or place the commands in a file that runs early at
-boot-time). If such a file is currently being used it's likely
-somewhere in the /etc directory-tree. But Redhat <6.0 has supplied it
-in /usr/doc/setserial/ but you need to move it to the /etc tree before
-using it. You might use "locate" to try to find such a file. For
-example, you could type: locate "*serial*".
-
-
-The script /etc/rc.d/rc.serial was commonly used in the past.
-The Debian distribution used /etc/rc.boot/0setserial.
-Another file once used was /etc/rc.d/rc.local but it's
-not a good idea to use this since it may not be run early enough.
-It's been reported that other processes may try to open the serial
-port before rc.local runs resulting in serial communication failure.
-Today it's most likely in /etc/init.d/ but it isn't normally intended
-to be edited.
-
-
-If such a file is supplied, it should contain a number of
-commented-out examples. By uncommenting some of these and/or
-modifying them, you should be able to set things up correctly. Make
-sure that you are using a valid path for setserial, and a valid
-device name. You could do a test by executing this file manually
-(just type its name as the super-user) to see if it works right.
-Testing like this is a lot faster than doing repeated reboots to get
-it right.
-
-
-For versions >= 2.15 (provided your distribution implemented the
-change, Redhat didn't) it may be more tricky to do since the file that
-runs setserial on startup, /etc/init.d/setserial or the like was not
-intended to be edited by the user. See
-New configuration method using /etc/serial.conf.
-
-
-If you want setserial to automatically determine the uart and the IRQ
-for ttyS3 you would add something like:
-
-
-
-
-
-/sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig
-
-
-Do this for every serial port you want to auto configure. Be sure to
-give a device name that really does exist on your machine. In some
-cases this will not work right due to the hardware. If you know what
-the uart and irq actually are, you may want to assign them explicitly
-with "setserial". For example:
-
-
-
-
-
-/sbin/setserial /dev/ttyS3 irq 5 uart 16550A skip_test
-
-
-
-
-
-
-
-
-
-! New configuration method using /etc/serial.conf
-
-
- Prior to setserial version 2.15, the way to configure setserial
-was to manually edit the shell-script that ran setserial at boot-time.
-See
-Edit a script (after version 2.15: perhaps not). Starting with version 2.15 (1999) of setserial
-this shell-script is not edited but instead gets its data from a
-configuration file: /etc/serial.conf. Furthermore you may
-not even need to edit serial.conf because using the "setserial"
-command on the command line may automatically cause serial.conf to be
-edited appropriately.
-
-
-This was intended so that you don't need to edit any file in order to
-set up (or change) what setserial does each time that Linux is booted.
-But there are serious pitfalls because it's not really "setserial"
-that edits serial.conf. Confusion is compounded because different
-distributions handle this differently. In addition, you may modify it
-so that it works differently.
-
-
-What often happens is this: When you shut down your PC the script
-that runs "setserial" at boot-time is run again, but this time it only
-does what the part for the "stop" case says to do: It uses
-"setserial" to find out what the current state of "setserial" is, and
-it puts that info into the serial.conf file. Thus when you
-run "setserial" to change the serial.conf file, it doesn't get changed
-immediately but only when and if you shut down normally.
-
-
-Now you can perhaps guess what problems might occur. Suppose you
-don't shut down normally (someone turns the power off, etc.) and the
-changes don't get saved. Suppose you experiment with "setserial" and
-forget to run it a final time to restore the original state (or make a
-mistake in restoring the original state). Then your "experimental"
-settings are saved.
-
-
-If you manually edit serial.conf, then your editing is destroyed when
-you shut down because it gets changed back to the state of setserial
-at shutdown. There is a way to disable the changing of serial.conf at
-shutdown and that is to remove "###AUTOSAVE###" or the like from first
-line of serial.conf. In at least one distribution, the removal of
-"###AUTOSAVE###" from the first line is automatically done after the
-first time you shutdown just after installation. The serial.conf file
-should contain some comments to explain this.
-
-
-The file most commonly used to run setserial at boot-time (in
-conformance with the configuration file) is now /etc/init.d/setserial
-(Debian) or /etc/init.d/serial (Redhat), or etc., but it should not
-normally be edited. For 2.15, Redhat 6.0 just had a file
-/usr/doc/setserial-2.15/rc.serial which you have to move to
-/etc/init.d/ if you want setserial to run at boot-time.
-
-
-To disable a port, use setserial to set it to
-"uart none". The format of /etc/serial.conf appears to be just like
-that of the parameters placed after "setserial" on the command line
-with one line for each port. If you don't use autosave, you may edit
-/etc/serial.conf manually.
-
-
-BUG: As of July 1999 there is a bug/problem since with ###AUTOSAVE###
-only the setserial parameters displayed by "setserial -Gg /dev/ttyS*"
-get saved but the other parameters don't get saved. Use the -a flag
-to "setserial" to see all parameters. This will only affect a small
-minority of users since the defaults for the parameters not saved are
-usually OK for most situations. It's been reported as a bug and may
-be fixed by now.
-
-
-In order to force the current settings set by setserial to be saved to
-the configuration file (serial.conf) without shutting down, do what
-normally happens when you shutdown: Run the shell-script
-/etc/init.d/{set}serial stop. The "stop" command will save
-the current configuration but the serial ports still keep working OK.
-
-
-In some cases you may wind up with both the old and new configuration
-methods installed but hopefully only one of them runs at boot-time.
-Debian labeled obsolete files with "...pre-2.15".
-
-
-
-
-!IRQs
-
-
- By default, both ttyS0 and ttyS2 will share IRQ 4, while ttyS1 and
-ttyS3 share IRQ 3. But actually sharing serial interrupts (using them
-in running programs) is not permitted unless you: 1. have kernel 2.2
-or better, and 2. you've complied in support for this, and 3. your
-serial hardware supports it. See
-
-
-
-
-
-
-
-
-If you only have two serial ports, ttyS0 and ttyS1, you're still OK
-since IRQ sharing conflicts don't exist for non-existent devices.
-
-
-If you add an internal modem and retain ttyS0 and ttyS1,
-then you should attempt to find an unused IRQ and set it both on your
-serial port (or modem card) and then use setserial to assign it to
-your device driver. If IRQ 5 is not being used for a sound card, this
-may be one you can use for a modem. To set the IRQ in hardware you
-may need to use isapnp, a PnP BIOS, or patch Linux to make it PnP. To
-help you determine which spare IRQ's you might have, type "man
-setserial" and search for say: "IRQ 11".
-
-
-
-
-! Laptops: PCMCIA
-
-
-If you have a Laptop, read PCMCIA-HOWTO for info on the serial
-configuration. For serial ports on the motherboard, setserial is used
-just like it is for a desktop. But for PCMCIA cards (such as a modem)
-it's a different story. The configuring of the PCMCIA system should
-automatically run setserial so you shouldn't need to run it. If you
-do run it (by a script file or by /etc/serial.conf) it might be
-different and cause trouble. The autosave feature for serial.conf
-shouldn't save anything for PCMCIA cards (but Debian did until
-2.15-7). Of course, it's always OK to use setserial to find out how
-the driver is configured for PCMCIA cards.
-
-
-
-
-
-
-
-
-
-
-!!10.2 What is isapnp ?
-
-
-
- isapnp is a program to configure Plug-and-Play (PnP) devices
-on the ISA bus including internal modems. It comes in a package
-called "isapnptools" and includes another program, "pnpdump" which
-finds all your ISA PnP devices and shows you options for configuring
-them in a format which may be added to the PnP configuration file:
-/etc/isapnp.conf. It may also be used with the --dumpregs option to
-show the current IO address and IRQ of the modem's serial port. The
-isapnp command may be put into a startup file so that it runs each
-time you start the computer and thus will configure ISA PnP devices.
-It is able to do this even if your BIOS doesn't support PnP. See
-Plug-and-Play-HOWTO.
-
-
-
-
-!! 10.3 What is wvdialconf ?
-
-
-
- wvdialconf will try to find which serial port (ttyS?) has a
-modem on it. It also creates a configuration program for the wvdial
-program. wvdial is used for simplified dialing out using the PPP
-protocol to an ISP. But you don't need to install PPP in order to use
-wvdialconf. It will only find modems which are not in use. It
-will also automatically devise a "suitable" init strings but sometimes
-gets it wrong. Since this command has no options, it's simple to use
-but you must give it the name of a file to put the init string (and
-other data) into. For example type: wvdialconf my_config_file_name.
-
-
-
-----
-
-!! 11. Trying Out Your Modem (Dialing Out)
-
-!!11.1 Are You Ready to Dial Out ?
-
-
-
- Once you've plugged in your modem and know which serial port it's
-on you're ready to try using it. If you already have an account with
-an ISP to connect to the Internet, you could try using a program like
-"wvdial" to connect to the Internet using the PPP protocol.
-
-
-As an alternative to taking one big step using PPP to connect to the
-Internet, you could do a two step process: First just test out your
-modem without using PPP (using Minicom or Kermit). Then if your modem
-works OK, use "wvdial" or other ppp dialer to connect to the Internet.
-A different strategy is to first try a ppp dialer and then if that
-doesn't work out, fallback to Minicom or Kermit to see if your modem
-works OK. Knowing how to use either Minicom or Kermit is handy for
-dialing out to some places directly without going thru the Internet.
-If you are going to use Minicom or Kermit you must find a phone number
-to dial that will accept phone calls from a computer (without using
-PPP). Perhaps a local library has such a phone number for its on-line
-catalog.
-
-
-Then make sure you are ready to phone. Do you know what serial port
-(such as ttyS2) your modem is on? You should have found this out when
-you io-irq configured your serial ports. Have you decided what speed
-you are going to use for this port? See
-Speed Table for a quick selection or
-What Speed Should I Use with My Modem for more details. If
-you have no clue of what speed to set, try setting it a few times
-faster than the advertised speed of your modem. Also remember that if
-you see a menu where an option is "hardware flow control" and/or
-"RTS/CTS" or the like, select it. Is a live telephone cable plugged
-in to your modem? You may want to connect this cable to a real
-telephone to make sure that it can produce a dial tone.
-
-
-Now you need to select a communication (dialing) program to use to
-dial out. Simple dialing programs include: minicom, seyon (X
-Window), and kermit. Internet dialing programs (using PPP) include
-wvdial, kppp (for KDE), gnome-ppp (for gnome). See section
-Communications Programs about some communications
-programs. Three examples are presented next:
-Dialing Out with wvdial
-Dialing Out with Minicom and
-Dialing Out with Kermit
-
-
-
-!! 11.2 Dialing Out with wvdial
-
-
-
- Wvdial is a program with not only dials out, but starts PPP and
-logs you in to an ISP where you get to the Internet. Wvdial may be
-configured during the installation process or by using the program
-"wvdialconf". See the man pages for both "wvdialconf" and "wvdial".
-However, before using wvdial you must do two other tasks not covered
-by the wvdial documentation:
-
-
-*set up your network on your PC. The old HOWTO,
-"ISP-Hookup-HOWTO" has some info on how to do this but fails to
-mention wvdial which replaces "chatscripts".
-*
-
-*configure your browser
-*
-
-
-
-
-
-!! 11.3 Dialing Out with Minicom
-
-
-
- Minicom comes with most Linux distributions. To configure it you
-should be the root user. Type "minicom -s" to configure. This will
-take you directly to the configuration (set-up) menus. Alternatively
-you could just run "minicom" and then type ^A to see the bottom status
-line. This shows to type ^A Z for help (you've already typed the ^A
-so just type z). From the help menu go to the Configuration menu.
-
-
-Most of the options don't need to be set for just simply dialing out.
-To configure you have to supply a few basic items: the name of the
-serial port your modem is on such as /dev/ttyS2 and the speed such as
-115200. These are set at the serial port menu. Go to it and set
-them. Also (if possible) set hardware flow control (RTS/CTS). Then
-save them. When typing in the speed, you should also see something
-like "8N1" which you should leave alone. It means: 8-bit bytes, No
-parity, 1 stop-bit appended to each byte. If you can't find the speed
-you want, a lower speed will always work for a test. Exit (hit
-return) when done and save the configuration as default (dfl) using
-the menu. You may want to exit minicom and start it again so it can
-now find the serial port and initialize the modem, or you could go to
-help and tell minicom to initialize the modem.
-
-
-Now you are ready to dial. But first at the main screen you get
-after you first type "minicom" make sure there's a modem there by
-typing AT and then hit the <enter> key. It should display OK.
-If it doesn't something is wrong and there is no point of trying to
-dial.
-
-
-If you got the "OK" go back to help and select the dialing directory.
-You may edit it and type in a phone number, etc. into the directory
-and then select "dial" to dial it. Alternatively, you may just dial
-manually (by selecting "manual" and then type the number at the
-keyboard). If it doesn't work, carefully note any error messages and
-try to figure out what went wrong.
-
-
-
-
-!! 11.4 Dialing Out with Kermit
-
-
-
- You can find the latest version of kermit at
-http://www.columbia.edu/kermit/. For example, say your
-modem was on ttyS3, and its speed was 115200 bps. You would
-do the following:
-
-
-linux# kermit
-C-Kermit 6..192, 6 Sep 96, for Linux
-Copyright (C) 1985, 1996,
-Trustees of Columbia University in the City of New York.
-Default file-transfer mode is BINARY
-Type ? or HELP for help.
-C-Kermit>set line /dev/ttyS3
-C-Kermit>set carrier-watch off
-C-Kermit>set speed 115200
-/dev/ttyS3, 115200 bps
-C-Kermit>c
-Connecting to /dev/ttyS3, speed 115200.
-The escape character is Ctrl-\ (ASCII 28, FS)
-Type the escape character followed by C to get back,
-or followed by ? to see other options.
-ATE1Q0V1 ; you type this and then the Enter key
-OK ; modem should respond with this
-
-
-
-
-If your modem responds to AT commands, you can assume your modem
-is working correctly on the Linux side. Now try calling another modem
-by typing:
-
-
-ATDT7654321
-
-
-where 7654321 is a phone number. Use ATDP instead of ATDT if you have
-a pulse line. If the call goes through, your modem is working.
-
-
-To get back to the kermit prompt, hold down the Ctrl key, press
-the backslash key, then let go of the Ctrl key, then press the C key:
-
-
-Ctrl-\-C
-(Back at linux)
-C-Kermit>quit
-linux#
-
-
-
-
-This was just a test using the primitive "by-hand" dialing method.
-The normal method is to let kermit do the dialing for you with
-its built-in modem database and automatic dialing features, for example
-using a US Robotics (USR) modem:
-
-
-linux# kermit
-C-Kermit 6..192, 6 Sep 1997, for Linux
-Copyright (C) 1985, 1996,
-Trustees of Columbia University in the City of New York.
-Default file-transfer mode is BINARY
-Type ? or HELP for help
-C-Kermit>set modem type usr ; Select modem type
-C-Kermit>set line /dev/ttyS3 ; Select communication device
-C-Kermit>set speed 115200 ; Set the dialing speed
-C-Kermit>dial 7654321 ; Dial
-Number: 7654321
-Device=/dev/ttyS3, modem=usr, speed=115200
-Call completed.<BEEP>
-Connecting to /dev/ttyS3, speed 115200
-The escape character is Ctrl-\ (ASCII 28, FS).
-Type the escape character followed by C to get back,
-or followed by ? to see other options.
-Welcome to ...
-login:
-
-
-
-
-
-----
-
-!! 12. Dial-In
-
-!!12.1 Dial-In Overview
-
-
-
- Dial-in is where you set up your PC so that others may dial in to
-your PC (at your phone number) and use your PC. Unfortunately some
-use the term "dial-in" when what they actually mean is just the
-opposite: dial-out. Dial-in works like
-this. Someone with a modem dials your telephone number. Your modem
-answers the phone ring and connects. Once the caller is connected
-the getty program is notified and starts the login process for
-the caller. After the caller has logged in, the caller then may use
-your PC. It could be almost as if they were sitting at the
-monitor-console.
-
-
-The caller may use a script to automatically log in. This script will
-be of the expect-send type. For example it expects "login:"
-and then (after it detects "login:") will send the users login name.
-It next expects the password and then sends the password, etc. Then
-once the user has been automatically logged in, the /etc/passwd
-(password file) might specify that a shell (such as bash) will be
-started for the user. Or it might specify that PPP is to start so
-that the user may be connected to the Internet. See the PPP-HOWTO for
-more details. The program that you use at your PC to handle dialin is
-called getty or mgetty. See
-Getty
-
-An advanced getty program such as mgetty can watch to see if PPP is
-started by the PC on the other end. If so, the login prompt would be
-skipped, a PPP connection would be made, and login would take place
-automatically over the PPP connection.
-
-
-
-
-!!12.2 What Happens when Someone Dials In ?
-
-
-
- Here's a more detailed description of dialin. This all assumes
-that you are using either mgetty or uugetty. Agetty is inferior and
-doesn't work exactly as described below (see
-About agetty)
-
-
-For dialin to work, the modem must be listening for a ring and getty
-must be running and ready to respond to the call. Your modem is
-normally listening for incoming calls, but what it does when it gets a
-ring depends on how it's configured. The modem can either
-automatically answer the phone or not directly answer it. In the
-latter case the modem sends a "RING" message to getty and then getty
-tells the modem to answer the ring. In either case, it may be set up
-to answer on say the 4th ring. This means that if the call is not for
-the modem, one must walk/run to the phone and pick it up manually
-before the 4th ring. Then they can talk to the other person. If they
-get to the phone too late they will hear the screeching noise of the
-modem which has answered the call.
-
-
-Once the modem answers the call it sends tones to the other modem
-(and conversely). The two modems negotiate how they will communicate
-and when this is completed your modem sends a "CONNECT" message (or
-the like) to getty. When getty gets this message, it sends
-a login prompt out the serial port. Once a user name is given to this
-prompt getty may just call on a program named login to
-handle the logging in from there on. While getty usually starts
-running at boot-time it should wait until a connection is made
-before sending out a "login" prompt.
-
-
-Now for more details on the two methods of answering the call. For
-the first method where the modem automatically answers the call, the
-number of times it will ring before answering is controlled by the S0
-register of the modem. If S0 is set to 3, the modem will
-automatically answer on the 3rd ring. If it's set to 0 then the modem
-will only answer the call if getty sends it an "A" (= Answer) AT
-command to the modem while the phone is ringing. (Actually an "ATA"
-is sent since all modem commands are prefixed by "AT".) This is known
-as "manual" answering since the modem itself doesn't do it
-automatically (but getty does). You might think it best to utilize
-the ability of the modem hardware to automatically answer the call,
-but it's actually better if getty answers it "manually".
-
-
-For the "manual" answer case, getty opens the port at boot-time
-and listens. When the phone rings, a "RING" message is sent to the
-listening getty. Then if getty wants to answer this ring,
-it sends the modem an "A" command. Note that getty may be set to
-answer only after say 4 "RING" messages (the 4th ring) similar to the
-automatic answer method. The modem then makes a connection and sends
-a "CONNECT ..." message to getty which then sends a login prompt
-to the caller. It's not all quite this simple as are some special
-tricks used to allow dial-out when waiting for a call. See
-Dialing Out while Waiting for an Incoming Call
-
-The automatic answer case uses the CD (Carrier Detect aka DCD) wire
-from the modem to the serial port to tell when a connection is made.
-It works like this. At boot-time getty tries to open the serial
-port but the attempt fails since the modem has negated CD (the modem
-is idle). Then the getty program waits at the open statement in
-the program until a CD signal is asserted. When a CD signal arrives
-(perhaps hours later) then the port is opened and getty sends the
-login prompt. While getty is waiting (sleeping) at the open
-statement, other processes can run so it doesn't degrade computer
-performance. What actually wakes getty up is an interrupt which
-is issued when the CD line from the modem changes its state to on.
-
-
-You may wonder how getty is able to open the serial port in the
-"manual"-answer case since CD may be negated. Well, there's a way to
-write a program to force the port to open even if there is no CD
-signal asserted.
-
-
-
-
-!!12.3 56k doesn't work
-
-
-
-If you expect that people will be able to dial-in to you at 56k, it
-can't be done unless you have all the following:
-
-
-# You have a digital connection to the telephone company such as a
-trunkside-T1 or ISDN line
-#
-
-# You use special digital modems (see
-Digital Modems)
-#
-
-# You have a "... concentrator", or the like to interface your
-digital-modems to the digital lines of the telephone company.
-#
-
-A "... concentrator" may be called a "modem concentrator"
-or a "remote access concentrator" or it could be included in a "remote
-access server" (RAS) which includes the digital modems, etc. This
-type of setup is used by ISPs (Internet Service Providers).
-
-
-
-
-!! 12.4 Getty
-
-
-!Introduction to Getty
-
-
- getty is the program you run for dialin. You don't need it
-for dialout. In addition to presenting a login prompt, it also may help
-answer the telephone. Originally getty was used for logging in to a
-computer from a dumb terminal. A major use of it today is for logging
-in to a Linux console. There are several different getty programs but
-a few of these work OK with modems for dialin. The getty program is
-usually started at boot-time. It must be called from the /etc/inittab
-file. In this file you may find some examples which you will likely
-need to edit a bit. Hopefully these examples will be for the flavor
-of getty installed on your PC.
-
-
-There are four different getty programs to choose from that may be
-used with modems for dial-in: mgetty, uugetty, getty_em,
-and agetty. A brief overview is given in the following
-subsections. agetty is the weakest of the four and it's mainly
-for use with directly connected text-terminals. mgetty has
-support for fax and voice mail but Uugetty doesn't. mgetty
-allegedly lacks a few of the features of uugetty. getty_em
-is a simplified version of uugetty. Thus mgetty is likely
-your best choice unless you are already familiar with uugetty (or
-find it difficult to get mgetty). The syntax for these getty
-programs differs, so be sure to check that you are using the correct
-syntax in /etc/inittab for whichever getty you use.
-
-
-In order to see what documentation exists about the various gettys on
-your computer, use the "locate" command. Type: locate "*getty*"
-(including the quotes may help). Note that many distributions just
-call the program getty even though it may actually be agetty, uugetty,
-etc. But if you read the man page (type: man getty), it might
-disclose which getty it is. This should be the getty program with
-path /sbin/getty.
-
-
-
-
-!Getty "exits" after login (and can respawn)
-
-
-After you log in you will notice (by using "top", "ps -ax", or
-"ptree") that the getty process is no longer running. What happened
-to it? Why does getty restart again if your shell is killed? Here's
-why.
-
-
-After you type in your user name, getty takes it and calls the login
-program telling it your user name. The getty process is replaced
-by the login process. The login process asks for your password,
-checks it and starts whatever process is specified in your password
-file. This process is often the bash shell. If so, bash starts and
-replaces the login process. Note that one process replaces another
-and that the bash shell process originally started as the getty
-process. The implications of this will be explained below.
-
-
-Now in the /etc/inittab file getty is supposed to respawn (restart) if
-killed. It says so on the line that calls getty. But if the bash shell
-(or the login process) is killed, getty respawns (restarts). Why?
-Well, both the login process and bash are replacements for getty and
-inherit the signal connections establish by their predecessors. In
-fact if you observe the details you will notice that the replacement
-process will have the same process ID as the original process. Thus
-bash is sort of getty in disguise with the same process ID number. If
-bash is killed it is just like getty was killed (even though getty
-isn't running anymore). This results in getty respawning.
-
-
-When one logs out, all the processes on that serial port are killed
-including the bash shell. This may also happen (if enabled) if a
-hangup signal is sent to the serial port by a drop of DCD voltage by
-the modem. Either the logout or drop in DCD will result in getty
-respawning. One may force getty to respawn by manually killing bash
-(or login) either by hitting the k key, etc. while in "top" or with
-the "kill" command. You will likely need to kill it with signal 9
-(which can't be ignored).
-
-
-
-
-
-
-
-! About mgetty
-
-
-mgetty was written as a replacement for uugetty which was
-in existence long before mgetty. Both are for use with modems
-but mgetty is best (unless you already are committed to uugetty).
-mgetty may be also used for directly connected terminals. In
-addition to allowing dialup logins, mgetty also provides FAX
-support and auto PPP detection. It permits dialing out when mgetty is
-waiting for an incoming phone call. There is a supplemental program
-called vgetty which handles voicemail for some modems.
-mgetty documentation is fair (except for voice mail), and is not
-supplemented in this HOWTO. To automatically start PPP one must edit
-/etc/mgetty/login.conf to enable "AutoPPP" You can find the latest
-information on mgetty at
-http://www.leo.org/~doering/mgetty/ and
-http://alpha.greenie.net/mgetty/
-
-
-
-! About uugetty
-
-
-getty_ps contains two programs: getty is used for console
-and terminal devices, and uugetty for modems. Greg Hankins
-(former author of Serial-HOWTO) used uugetty so his writings
-about it are included here. See
-Uugetty.
-
-
-
-
-! About getty_em
-
-
- This is a simplified version of ``uugetty''. It was written by
-Vern Hoxie after he became fully confused with complex support files
-needed for getty_ps and uugetty.
-
-
-It is part of the collection of serial port utilities and information
-by Vern Hoxie available via ftp from
-scicom.alphacdc.com/pub/linux. The name of the collection is
-``serial_suite.tgz''.
-
-
-
-
-! About agetty
-
-
- This subsection is long since the author tried using agetty for
-dialin. agetty is seemingly simple since there are no
-initialization files. But when I tried it, it opened the serial port
-even when there was no CD signal present. It then sent both a login
-prompt and the /etc/issue file to the modem in the AT-command state
-before a connection was made. The modem thinks all this an AT command
-and if it does contain any "at" strings (by accident) it is likely to
-adversely modify your modem profile. Echo wars can start where getty
-and the modem send the same string back and forth over and over. You
-may see a "respawning too rapidly" error message if this happens. To
-prevent this you need to disable all echoing and result codes from the
-modem (E0 and Q1). Also use the -i option with agetty to prevent any
-/etc/issue file from being sent.
-
-
-If you start getty on the modem port and a few seconds later find that
-you have the login process running on that port instead of getty, it
-means that a bogus user name has been sent to agetty from the modem.
-To keep this from happening, I had to save my dial-in profile in the
-modem so that it become effective at power-on. The other saved
-profile is for dial-out. Then any dial-out programs which use the
-modem must use a Z, Z0, or Z1 in their init string to initialize the
-modem for dial-out (by loading the saved dial-out profile). If the
-1-profile is for dial-in you use Z1 to load it, etc. If you want
-to listen for dial-in later on, then the modem needs to be reset to
-the dial-in profile. Not all dial-out programs can do this reset upon
-exit from them.
-
-
-Thus while agetty may work OK if you set up a dial-in profile
-correctly in the modem hardware, it's probably best suited for virtual
-consoles or terminals rather than modems. If agetty is running for
-dialin, there's no easy way to dial out. When someone first dials in
-to agetty, they should hit the return key to get the login prompt.
-agetty in the Debian distribution is just named getty.
-
-
-
-
-!About mingetty, and fbgetty
-
-
-mingetty is a small getty that will work only for monitors
-(the usual console) so you can't use it with modems for dialin.
-fbgetty is as above but supports framebuffers.
-
-
-
-
-!!12.5 Why "Manual" Answer is Best
-
-
-
- The difference between the two ways of answering is exhibited
-when the computer happens to be down but the modem is still working.
-For the manual case, the "RING" message is sent to getty but since the
-computer is down, getty isn't there and the phone never gets answered.
-There are no telephone charges when there is no answer. For the
-automatic answer case, the modem (which is still on) answers the phone
-but no login message is ever sent since the computer is down. The
-phone bill runs up as the waiting continues. If the phone call is
-toll-free, it doesn't make much difference, although it may be
-frustrating waiting for a login prompt that never arrives.
-mgetty uses manual answer. Uugetty can do this too using a
-configuration script.
-
-
-
-
-!! 12.6 Dialing Out while Waiting for an Incoming Call
-
-
-
-Here's what could go wrong with a simple-minded manual-answer
-situation. Suppose another process dials out while getty is listening
-for a "RING" message from its modem on the serial wire. Then incoming
-bytes for the dial-out process flow from the modem to the serial port.
-For example, your modem may send a "CONNECT" message to your serial
-port when the dial-out process connects. If getty reads this there's
-trouble since reads are destructive reads. Once getty reads it, then
-the dial-out process that is expecting "CONNECT" (or something else)
-can't read it. Thus the dial-out process is likely to fail.
-
-
-There's a way to avoid this and here's how mgetty does it. When
-mgetty is listing for an incoming call, it doesn't read anything from
-the port until it thinks that the characters are for mgetty. Mgetty
-monitors the port and if characters arrive, it doesn't read them right
-away. Instead, it first checks to see if another process is using the
-port. If so, mgetty backs off and closes the port (but the port
-remains open for the other process). Thus if another process dials
-out, mgetty doesn't interfere with it. When the other process finally
-closes the port, then mgetty resumes "listening". It's a special type
-of "listening" that refrains from reading until mgetty believes that
-what it will read is for mgetty (hopefully a "RING" message).
-
-
-When mgetty checks to see if another process is using the port, it
-actually checks for valid lockfiles on the port. If the other process
-failed to use lockfiles, too bad for it. For more details see the
-mgetty documentation: "How mgetty works". For programmers only:
-"listening" is actually using the system calls "poll" or "select" to
-monitor the port. They are likely also used to monitor the port when
-a non-mgetty process is using the port.
-
-
-With auto-answer, getty is waiting for CD to be asserted so that it
-can open the port. One may dial out, but once a connection is made
-the modem's CD is asserted. If getty were to then read the port it
-would eat the characters intended to be read by the dial-out
-connection. While agetty will have this problem, it's claimed that
-uugetty will check lockfiles before reading (similar to mgetty).
-
-
-
-
-!!12.7 Ending a Dial-in Call
-
-
-
- There are two major ways to end a dial-in call. The caller may
-either logout or just hang up. For the hangup case see
-Caller hangs up
-
-
-
-!Caller logs out
-
-
- When the call is over the normal way to end the connection is for
-the user to log out. This will kill the remote user's shell on your
-PC. Now since there is nothing running on this port, the port is
-closed and sends a hangup signal to the modem by negating DTR. This
-will only happen if stty -a shows hupcl (hang up on close) but this
-should be the default.
-
-
-The modem getting this hangup (negated DTR signal) will then hang up
-the phone line (provided the modem has been configured to do this
---see below). The modem should then be ready to answer any new
-incoming calls. Killing the user's shell also causes getty to respawn
-and wait for the next call.
-
-
-As an alternative to using DTR to tell the modem to hang up the phone
-line, a script used after getty respawns may send the unique escape
-code sequence +++ to the modem to put it into AT command mode. The
-+++ must have both an initial and final time delay. Once in AT
-command mode, a hangup command (H0) may be sent to the modem as well
-as other AT commands. If the PC fails to successfully signal the
-modem when a logout happens (or to use the +++ escape when restarting
-getty), then the modem is apt to remain in on-line mode and no more
-incoming calls can be received.
-
-
-
-
-!When DTR drops (is negated)
-
-
-When DTR (the "hang-up" signal) is negated, what the modem does
-depends on the value of the &D option in the modem's profile. If
-it's &D0 nothing at all happens (the modem ignores the negation of
-DTR).
-
-
-&D2: The modem will hang up and go into AT command mode
-(off-line) to wait for the next call. Except that it will not
-automatically answer the phone (if it should) until DTR is asserted
-again. But since getty is set to respawn (in /etc/inittab) then getty
-will immediately restart after a logout and this will assert DTR. So
-what happens when someone logs out is that DTR only is negated for a
-fraction of a second (winks) before it gets asserted again. For the
-above to happen, the DTR must be negated for at least the time
-specified by register S25.
-
-
-&D3: In this case the modem does a hard reset: It hangs
-up and restores the saved profile as specified by &Y. It should
-now be in the same state it was in when first powered on and it's
-ready for incoming calls. The S25 limit may have no effect so even a
-very short "wink" is detected. Another brand of modem says the S25
-limit is still valid. Thus &D3 is a stronger "reset"
-than &D2 which doesn't restore the saved profile and
-could require a longer wink to work.
-
-
-If you don't know which of the above two to use try using
-&D3 first. Under favorable conditions, either one should
-work OK. It's reported that some modems require &D2.
-
-
-
-
-! Caller hangs up
-
-
- Instead of logging out the normal way, a caller may just hang
-up. This results in a lost connection and of course a loss of
-carrier. Other problems could also cause a loss of carrier. The "NO
-CARRIER" result code is displayed. The modem hangs up and waits for
-the next call. Except that there is no getty running yet to start the
-login process.
-
-
-Here's how getty gets started again: The loss of carrier should
-negate the CD signal sent by the modem to the serial port (provided
-&C1 has been set). When the the PC's serial port gets
-the negated CD signal it should kill the shell and then getty should
-respawn.
-
-
-This paragraph is about other things that happen but do nothing. Only
-the curious need read it. When the shell is killed a DTR wink is sent
-to the modem but since the modem is not on-line anymore and has
-already hung up, the modem ignores the negation of DTR (hang up). The
-loss of carrier also negates the DSR signal sent by the modem to the
-serial port (provided &S1 or &S2 is set) but this signal is
-ignored (by Linux).
-
-
-
-
-!! 12.8 Dial-in Modem Configuration
-
-
-
- The getty programs have a provision for sending an init string to
-the modem to configure it. But you may need to edit it. Another
-method is to save a suitable init string inside the modem (see
-Init Strings: Saving and Recalling for how
-to save it in the modem).
-
-
-The configuration for dial-in depends both on the getty you use and
-perhaps on your modem. If you can't find suggested configurations in
-other documentation here are some hints using Hayes AT commands:
-
-
-
-
-
-*&C1 Make the CD line to the serial port track the actual
-state of the carrier (CD asserted only when there's carrier).
-Getty_em requires &C0 (CD always asserted)
-*
-
-*&D3 Do a hard reset of the modem when someone logs out
-(or hangs up). For some modems it's reported that &D2 is
-required since they can't tolerate a hard reset ??
-*
-
-*E0 Don't echo AT commands back to the serial port. This
-is a must for agetty. Some suggest E1 (echo AT commands) for mgetty.
-For dial-out you want E1 so you can see what was sent.
-*
-
-*&K3 Use hardware flow control
-*
-
-*Q0 Echo results words (such as CONNECT). Most gettys use
-them. But it's reported an AT&T version of uugetty and agetty
-require Q2 (no result words for dial-in).
-*
-
-*S0=? mgetty suggests S0=0 (manual answer). If you set
-S0=3 the modem will auto-answer on the 3rd ring, etc. Agetty uses
-auto-answer. So does uugetty (usually).
-*
-
-*V1 Display results (such as CONNECT) in words (and not in code)
-*
-
-*X4 Check for dialtone and busy signal
-*
-
-
-
-
-
-!!12.9 Callback
-
-
-
- Callback is where someone first dials in to your modem. Then, you
-get a little info from the caller and then call it right back. Why
-would you want to do this? One reason is to save on telephone bills
-if you can call the caller cheaper than the caller can call you.
-Another is to make sure that the caller really is who it claims to be.
-If a caller calls you and claims to be calling from its usual phone
-number, then one way to verify this is to actually place a new call to
-that number.
-
-
-There's a program for Linux called "callback" that works with mgetty.
-It's at
-ftp://ftp.icce.rug.nl/pub/unix/. Step-by-step
-instructions on how someone installed it (and PPP) is at
-http://www.stokely.com/unix.serial.port.resources/callback.html
-
-
-
-!! 12.10 Voice Mail
-
-
-
- Voice mail is like an answering machine run by a computer.
-To do this you must have a modem that supports "voice" and supporting
-software. Instead of storing the messages on tape, they are stored in
-digital format on a disk. When a person phones you, they hear a
-"greeting" message and can then leave a message for you. More
-advanced systems would have caller-selectable mail boxes and
-caller-selectable messages to listen to. Free software is available in
-Linux for simple answering, but doesn't seem to be available yet for
-the more advanced stuff.
-
-
-I know of two different voicemail packages for Linux. One is a very
-minimal package (see
-Voicemail Software).
-The other, more advanced, but currently poorly documented, is
-vgetty. It's an optional addition to the well documented and
-widely distributed mgetty program. It supports ZyXEL-like voice
-modem commands. In the Debian distribution, you must get the
-mgetty-voice package in addition to the mgetty package and mgetty-doc
-package. Obsolete documentation has been removed from mgetty but
-replacement documentation is lacking (except if you use the -h (help)
-option when running certain programs, etc.). But one sees postings
-about using it on the mgetty newsgroup. See
-About mgetty. It seems that vgetty is currently not very
-stable but it's successfully being used and development of it
-continues. If this is the latest version of this HOWTO can someone
-who is familiar with vgetty please let me know its current status.
-
-
-
-
-!! 12.11 Simple Manual Dial-In
-
-
-
- This is really doing it manually! There's a way to answer a call
-without bothering to edit any configuration files for dial-in or
-enabling getty but the caller can't login. To do this you run a
-terminal program such as minicom. Make sure it's connected to your
-modem by typing "AT <enter>" and expect "OK". Then wait for the
-call. Then you really answer the call manually by typing "ATA" when
-the phone is ringing. This doesn't run getty and the caller can't
-login. But if the caller is calling in with a terminal program they
-may type a message to your screen (and conversely). You both may send
-files back and forth by using the commands built into the terminal
-programs (such as minicoms). Another way to answer such a call would be
-to type say "ATS0=3" just before the call comes in to enable the modem
-to auto-answer on the third ring.
-
-
-This is one way to crudely transfer files with someone on a MS Windows
-PC who uses !HyperTerminal or Terminal (for Windows 3.x or DOS). These
-two MS programs are something like minicom. Using this simple manual
-method (for Linux-to-Linux or MS-to-Linux) requires two people to be
-present, one one each end of the phone line connection running a
-terminal communications program. Be warned that if both people
-type at the same time it's chaos. It's a "last resort" way to
-transfer files between any two people that have PCs (either Linux or
-MS Windows). It could also be used for testing your modem or as a
-preliminary test before setting up dial-in.
-
-
-
-
-!!12.12 Complex GUI Dial-In, VNC
-
-
-
- At the opposite extreme to the simple (but labor intensive) manual
-dial-in is one that results in GUI graphical interface to the Linux
-PC. This generally requires that a network running TCP/IP protocol exist
-between the two computers. One way to get such a "network" is to
-dial-out to a PC set for dial-in and then run PPP on the phone line.
-PPP will use TCP/IP protocol encapsulated inside the PPP packets.
-Both sides must run PPP and mgetty can be configured to start PPP as
-soon as the caller does. The caller may use a PPP-dialer program just
-like they were dialing an ISP. Programs such as wvdial, eznet, or
-chat scripts should do it.
-
-
-Instead of this tiny network over a phone connection a much larger
-network (the entire world) is reached via an ISP. For their
-lowest-rate service many of them use proxy servers that will not give
-you access to the ports you need to use. Even if they don't use
-proxy servers, the IP address they give you is only temporary for the
-session, so you'll need to email this IP to whomever wants to reach
-you. If you get a more expensive ISP service, then you can avoid
-these problems.
-
-
-One way to get a GUI interface from the remote PC is to run the GPLed
-program: Virtual Network Computer (VNC) from AT&T. It has a
-server part which you run on your Linux PC for dial-in and a viewer
-(client) part used for dial-out. Neither of these actually does any
-dialing or login but assumes that you have a network already set up.
-The VNC server has an X-server built in and may use Linux's twm window
-manager. See the article on VNC in Linux Magazine:
-http://www.linux-mag.com/2000-11/desktop_03.html. The AT&T
-site for VNC is:
-http://www.uk.research.att.com/vnc/.
-
-
-With VNC one can also connect to remote Windows PCs, get the Windows
-GUI on a Linux PC, and run Windows programs on the remote Windows PC.
-Of course the Windows PC must be running VNC (as a server).
-Obviously, a GUI connection over a modem will be slower than a
-text-only connection especially if you run KDE or GNOME or want 16-bit
-color.
-
-
-
-
-!!12.13 Interoperability with MS Windows
-
-
-
- Once you have dial-in set up, others may call in to you using
-minicom (or the like) from Unix-like systems. From MS Windows one may
-call you using "!HyperTerminal (or just "Terminal" in Windows 3.1 or
-DOS).
-
-
-If in Windows one wants to use dial-up with a network protocol over
-the phone line it's called "Dial-up Networking". But it probably will
-not be able to communicate with Linux. For setting up such dial-in in
-Windows one clicks on "server" while dial-out is the "client. Such
-dial-in is often called "remote control" meaning that the caller can
-use your PC, run programs on it, and thus control it remotely.
-
-
-While it's easy to call in to a text-based Linux system from MS
-Windows, it's not so easy the other way around (partly because
-Windows is not text-based and would need to put the caller into DOS
-where files wouldn't be protected like they are in Linux.
-
-
-However Windows "Dial-up Networking" can establish a dial-in provided
-the caller uses certain network protocols over the phone line: MS's
-or Novel's (two protocols not liked by Linux). So if someone with
-Windows enables their Dial-up networking server in Windows 98, you
-can't just dial in directly to it from Linux. This type of dial-in
-doesn't permit the caller to run most of the programs on the host like
-Linux does. It's called "remote access" and one may transfer files,
-use the hosts printer, access databases, etc. Is there some way to
-interface to Dial-up Networking from Linux??
-
-
-It is possible for two people to crudely chat and send files using
-Minicom on the Linux end and !HyperTerminal on the Windows end. It's
-all done manually by two live persons, one on each end of the phone
-connection. See
-Simple Manual Dial-In.
-
-
-At the opposite extreme, one would like to run a dial-in so that the
-person calling would get a GUI interface. For that a network protocol
-is normally used. It's possible using PC Anywhere for Windows or VNC
-for both Linux and Windows. But PC Anywhere doesn't seem to talk to
-Linux ?? Other Window programs for "remote control" include Laplink,
-Co-Session, and Microcom. Do any such programs support Linux besides
-VNC ??
-
-
-
-----
-
-!! 13. Uugetty for Dial-In (from the old Serial-HOWTO)
-
-
- Be aware that you could use mgetty as a (better?) alternative to
-uugetty. mgetty is newer and more popular than uugetty.
-See
-Getty for a brief comparison of these 2
-gettys.
-
-
-
-
-!!13.1 Installing getty_ps
-
-
-
- Since uugetty is part of getty_ps you'll first have to install
-getty_ps. If you don't have it, get the latest version from
-metalab.unc.edu:/pub/Linux/system/serial. In particular,
-if you want to use high speeds (57600 and 115200 bps), you must get
-version 2..7j or later. You must also have libc 5.x or greater.
-
-
-
-
-
- By default, getty_ps will be configured to be Linux FSSTND
-(File System Standard) compliant, which means
-that the binaries will be in /sbin, and the config files
-will be named /etc/conf.{uu}getty.ttyS''N''. This is not
-apparent from the documentation! It will also expect lock files to go
-in /var/lock. Make sure you have the /var/lock
-directory.
-
-
-If you don't want FSSTND compliance, binaries will go
-in /etc, config files will go in
-/etc/default/{uu}getty.ttyS''N'', and lock files will go in
-/usr/spool/uucp. I recommend doing things this way if you
-are using UUCP, because UUCP will have problems if you move
-the lock files to where it isn't looking for them.
-
-
-getty_ps can also use syslogd to log messages. See the man
-pages for syslogd(1) and syslog.conf(5) for setting up
-syslogd, if you don't have it running already. Messages
-are logged with priority LOG_AUTH, errors use LOG_ERR, and debugging
-uses LOG_DEBUG. If you don't want to use syslogd you
-can edit tune.h in the getty_ps source files to use a log
-file for messages instead, namely /var/adm/getty.log by
-default.
-
-
-Decide on if you want FSSTND compliance and syslog capability.
-You can also choose a combination of the two. Edit the Makefile,
-tune.h and config.h to reflect your decisions. Then
-compile and install according to the instructions included with the
-package.
-
-
-
-
-!!13.2 Setting up uugetty
-
-
-
-With uugetty you may dial out with your modem while uugetty
-is watching the port for logins. uugetty does important lock
-file checking. Update /etc/gettydefs to include an entry for
-your modem. For help with the meaning of the entries that you put
-into /etc/gettydefs, see the "serial_suite" collected by Vern
-Hoxie. How to get it is in section See
-About getty_em. When you are done editing /etc/gettydefs, you
-can verify that the syntax is correct by doing:
-
-
-
-
-
-linux# getty -c /etc/gettydefs
-
-
-
-
-
-
-!Modern Modems
-
-
- If you have a 9600 bps or faster modem with data compression,
-you can lock your serial port to one speed. For example:
-
-
-# 115200 fixed speed
-F115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #F115200
-
-
-
-
-If you have your modem set up to do RTS/CTS hardware flow control, you
-can add CRTSCTS to the entries:
-
-
-# 115200 fixed speed with hardware flow control
-F115200# B115200 CS8 CRTSCTS # B115200 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F115200
-
-
-
-
-
-
-!Old slow modems
-
-
- If you have a slow modem (under 9600 bps) Then, instead of one
-line for a single speed, your need several lines to try a number of
-speeds. Note the these lines are linked to each other by the last
-"word" in the line such as #4800. Blank lines are needed between
-each entry. Are the higher modem-to-serial_port speeds in this
-example really needed for a slow modem ?? The uugetty documentation
-shows them so I'm not yet deleting them.
-
-
-
-
-
-# Modem entries
-115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #57600
-57600# B57600 CS8 # B57600 SANE -ISTRIP HUPCL #@S @L @B login: #38400
-38400# B38400 CS8 # B38400 SANE -ISTRIP HUPCL #@S @L @B login: #19200
-19200# B19200 CS8 # B19200 SANE -ISTRIP HUPCL #@S @L @B login: #9600
-9600# B9600 CS8 # B9600 SANE -ISTRIP HUPCL #@S @L @B login: #4800
-4800# B4800 CS8 # B4800 SANE -ISTRIP HUPCL #@S @L @B login: #2400
-2400# B2400 CS8 # B2400 SANE -ISTRIP HUPCL #@S @L @B login: #1200
-1200# B1200 CS8 # B1200 SANE -ISTRIP HUPCL #@S @L @B login: #115200
-
-
-
-
-
-
-!Login Banner
-
-
- If you want, you can make uugetty print interesting things in
-the login banner. In Greg's examples, he has the system name, the
-serial line, and the current bps rate. You can add other things:
-
-
-
-
-
-@B The current (evaluated at the time the @B is seen) bps rate.
-@D The current date, in MM/DD/YY.
-@L The serial line to which uugetty is attached.
-@S The system name.
-@T The current time, in HH:MM:SS (24-hour).
-@U The number of currently signed-on users. This is a
-count of the number of entries in the /etc/utmp file
-that have a non-null ut_name field.
-@V The value of VERSION, as given in the defaults file.
-To display a single '@' character, use either '\@' or '@@'.
-
-
-
-
-
-
-!!13.3 Customizing uugetty
-
-
-
- There are lots of parameters you can tweak for each port you have.
-These are implemented in separate config files for each port.
-The file /etc/conf.uugetty will be used by ''all''
-instances of uugetty, and /etc/conf.uugetty.ttyS''N''
-will only be used by that one port. Sample default config files can
-be found with the getty_ps source files, which come with most
-Linux distributions. Due to space concerns,
-they are not listed here. Note that if you are using older versions
-of uugetty (older than 2..7e), or aren't using FSSTND, then the
-default file will be /etc/default/uugetty.ttyS''N''. Greg's
-/etc/conf.uugetty.ttyS3 looked like this:
-
-
-# sample uugetty configuration file for a Hayes compatible modem to allow
-# incoming modem connections
-#
-# line to initialize
-INITLINE=ttyS3
-# timeout to disconnect if idle...
-TIMEOUT=60
-# modem initialization string...
-# format: <expect> <send> ... (chat sequence)
-INIT="" AT\r OK\r\n
-WAITFOR=RING
-CONNECT="" ATA\r CONNECT\s\A
-# this line sets the time to delay before sending the login banner
-DELAY=1
-#DEBUG=010
-
-
-
-
-Add the following line to your /etc/inittab, so that
-uugetty is run on your serial port, substituting in the correct
-information for your environment - run-levels (2345 or 345, etc.)
-config file location, port, speed, and default terminal type:
-
-
-
-
-
-S3:2345:respawn:/sbin/uugetty -d /etc/default/uugetty.ttyS3 ttyS3 F115200 vt100
-
-
-Restart init:
-
-
-linux# init q
-
-
-For the speed parameter in your /etc/inittab, you want to use
-the highest bps rate that your modem supports.
-
-
-Now Linux will be watching your serial port for connections.
-Dial in from another machine and login to you Linux system.
-
-
-
-
-
- uugetty has a lot more options, see the man
-page for uugetty) (often just called getty) for a full
-description. Among other things there is a scheduling feature, and a
-ringback feature.
-
-
-
-----
-
-!! 14. What Speed Should I Use with My Modem?
-
-
- By "speed" we really mean the "data flow rate" but almost everybody
-incorrectly calls it speed. For all modern modems you have no choice
-of the speed that the modem uses on the telephone line since it will
-automatically choose the highest possible speed that is feasible under
-the circumstances. If one modem is slower than the other, then the
-faster modem will operate at the slower modem's speed. On a noisy
-line, the speed will drop still lower.
-
-
-While the above speeds are selected automatically by the modems you do
-have a choice as to what speed will be used between your modem and
-your computer (PC-to-modem speed). This is sometimes called "DTE
-speed" where "DTE" stands for Data Terminal Equipment (Your computer
-is a DTE.) You need to set this speed high enough so this part of the
-signal path will not be a bottleneck. The setting for the DTE speed
-is the maximum speed of this link. Most of the time it should
-actually operate at lower speeds.
-
-
-For an external modem, DTE speed is the speed (in bits/sec) of the
-flow over the cable between you modem and PC. For an internal modem,
-it's the same idea since the modem also emulates a serial port. It
-may seem ridiculous having a speed limit on communication between a
-computer and a modem card that is directly connected inside the
-computer to a much higher speed bus. But it's that way since the
-modem card probably includes a dedicated serial port which does have
-speed limits (and settable speeds).
-
-
-
-
-!!14.1 Speed and Data Compression
-
-
-
- What speed do you choose? If it were not for "data compression"
-one might try to choose a DTE speed exactly the same as the modem
-speed. Data compression takes the bytes sent to the modem from your
-computer and encodes them into a fewer number of bytes. For example,
-if the flow (speed) from the PC to the modem was 20,000 bytes/sec
-(bps) and the compression ratio was 2 to 1, then only 10,000 bytes/sec
-would flow over the telephone line. Thus for a 2:1 compression ratio
-you need to set the DTE speed to double the maximum modem speed on the
-phone line. If the compression ratio were 3 to 1 you need to set it 3
-times faster, etc.
-
-
-
-
-!!14.2 Where do I Set Speed ?
-
-
-
- This DTE (PC-to-modem) speed is normally set by a menu in your
-communications program or by an option given to the getty command if
-someone is dialing in. You can't set the DCE modem-to-modem speed
-since this is set automatically by the modem to the highest feasible
-speed after negotiation with the other modem. Well, actually you can
-set the modem-to-modem speed with the S37 register but you shouldn't
-do it. If the two modems on a connection were to be set this way to
-different speeds, then they couldn't communicate with each other.
-
-
-
-
-!! 14.3 Can't Set a High Enough Speed
-
-
-!Speeds over 115.2k
-
-
- The top speed of 115.2k has been standard since the mid 1990's.
-But by the year 2000, most new serial ports supported higher speeds of
-230.4k and 460.8k. Some also support 921.6k. Unfortunately Linux
-seldom uses these speeds due to lack of drivers. These ports behave
-just like 115.2k ports unless the higher speeds are enabled by special
-software. To get these speeds you need to compile the kernel with
-special patches but it seems that the 2.4 kernels are not yet
-supported
-
-
-The patch software is fairly simple since it only needs to enable the
-higher speeds by dialog with the hardware. But it's not quite as
-simple as just putting an enable byte in a hardware register since the
-registers weren't designed for this. But unfortunately, there is no
-standard way to enable the higher speeds so the driver needs to
-support a variety of hardware.
-
-
-A patch to support high-speed is called shsmod (Super High Speed
-Mode). There are both Windows and Linux versions of this patch. See
-http://www.devdrv.com/shsmod/. For Linux (as of late
-2001), most of the documentation is only in Japanese and the patch is
-for the old kernel 2.2.x. There is also a module for the VIA
-VT82C686 chip
-http://www.kati.fi/viahss/. Using it may
-result in buffer overflow.
-
-
-For internal modems, only a minority of them advertise that they
-support speeds of over 115.2k for their built-in serial ports.
-Does shsmod support these ??
-
-
-
-
-! How speed is set in hardware: the divisor and baud_base
-
-
- Here's a list of commonly used divisors and their corresponding
-speeds (assuming a maximum speed of 115,200): 1 (115.2k), 2 (57.6k), 3
-(38.4k), 6 (19.2k), 12 (9.6k), 24 (4.8k), 48 (2.4k), 96 (1.2k), etc.
-The serial driver sets the speed in the hardware by sending the
-hardware only a "divisor" (a positive integer). This "divisor"
-divides the maximum speed of the hardware resulting in a slower speed
-(except a divisor of 1 obviously tells the hardware to run at maximum
-speed).
-
-
-There are exceptions to the above since for certain serial port
-hardware, speeds above 115.2k are set by using a very high divisor.
-Bear that exception in mind as you read the rest of this section.
-Normally, if you specify a speed of 115.2k (in your communication
-program or by stty) then the serial driver sets the port hardware to
-divisor 1 which sets the highest speed.
-
-
-Besides using a very high divisor to set high speed the conventional
-way to do it is as follows: If you happen to have hardware with a
-maximum speed of say 230.4k (and the 230.4k speed has been enabled),
-then specifying 115.2k will result in divisor 1. For some hardware
-this will actually give you 230.4k. This is double the speed that you
-set. In fact, for any speed you set, the actual speed will be double.
-If you had hardware that could run at 460.8k then the actual speed
-would be quadruple what you set. All the above assumes that you don't
-use "setserial" to modify things.
-
-
-
-
-!Setting the divisor, speed accounting
-
-
- To correct this accounting (but not always fix the problem) you
-may use "setserial" to change the baud_base to the actual maximal
-speed of your port such as 230.4k. Then if you set the speed (by your
-application or by stty) to 230.4k, a divisor of 1 will be used and
-you'll get the same speed as you set.
-
-
-If you have old software which will not permit such a high speed (but
-your hardware has it enabled) then you might want to look into using
-the "spd_cust" parameter for setserial with "divisor 1". Then when
-you tell the application that the speed it 38,400, it will use divisor
-1 and get the highest speed.
-
-
-There are some brands of UARTs that uses a very high divisor to set
-high speeds. There isn't any satisfactory way to use "setserial" (say
-set "divisor 32770") to get such a speed since then setserial would
-then think that the speed is very low and disable the FIFO in the
-UART.
-
-
-
-
-!Crystal frequency is higher than baud_base
-
-
- Note that the baud_base setting is usually much lower than the
-frequency of the crystal oscillator since the crystal frequency of say
-1.8432 MHz is divided by 16 in the hardware to get the actual top
-speed of 115.2k. The reason the crystal frequency needs to be higher
-is so that this high crystal speed can generate clock ticks to take a
-number of samples of each bit to determine if it's a 1 or a .
-
-
-Actually, the 1.8432 MHz "crystal frequency" is obtained from a 18.432
-MHz crystal oscillator by dividing by 10 before being fed to the UART.
-Other schemes are also possible as long as the UART performs properly.
-
-
-
-
-
-
-
-
-
-
-!! 14.4 Speed Table
-
-
-
- It's best to have at least a 16650 UART for a 56k modem but few
-modems or serial ports provide it. Second best is a 16550 that has
-been tweaked to give 230,400 bps (230.4 kbps). Most people still use
-a 16550 that is only 115.2 kbps but it's claimed to only slow down
-thruput by a few percent (on average). This is because a typical
-compression ratio is 2 to 1 and for downloading compressed files
-(packages) it's 1 to 1. There's no degradation for these cases. Here
-are some suggested speeds to set your serial line if your modem speed
-is:
-
-
-
-
-
-* 56k (V.92): use 230.4 kbps (hard to obtain)
-*
-
-* 56k (V.90): use 115.2 kbps or 230.4 kbps (best)
-*
-
-* 33.6k (V.34bis): use 115.2 kbps
-*
-
-* 28.8k (V.34): use 115.2 kbps
-*
-
-* 14.4k (V.32bis): use 57600 bps
-*
-
-* 9.6k (V.32): use 38400 bps
-*
-
-* slower than a 9600 bps (V.32) modem: Set the speed to the
-same speed as the modem (unless you have data compression).
-*
-
-
-
-All the above speeds may use V.42bis data compression and V.42 error
-correction. If data compression is not used then the speed may be set
-lower so long as it's above the modem speed.
-
-
-
-----
-
-!! 15. Communications Programs And Utilities
-
-
- While PPP is used for Internet access you also need a dialer
-program (or script) that will work with PPP. Such a dialer program
-will dial a phone number. When the other side answers the phone then
-three things happen: a modem connection is established (CONNECT), PPP
-is started at both ends, and you get logged in automatically. The
-exact sequence of the last 2 events may vary. Dialer programs for ppp
-include wvdial, chap scripts, kppp, RP3, Linuxconf, and gnome-ppp.
-
-
-There are also other dialer programs which can dial out directly (thru
-a modem) to local libraries, etc. This isn't the Internet.
-minicom is the most popular followed by Seyon (X-Windows
-only) and Kermit. People have likely also used these programs
-for dialing out with ppp for the Internet but it's not what they were
-originally designed for.
-
-
-
-
-!!15.1 Minicom vs. Kermit
-
-
-
- Minicom is only a communications program while Kermit is both a
-communications program and a file transfer protocol. But one may use
-the Kermit protocol from within Minicom (provided one has Kermit
-installed on one's PC). Minicom is menu based while Kermit is
-command line based (interactive at the special Kermit prompt). While
-the Kermit program is free software, the documentation is not all
-free. There is no detailed manual supplied and it is suggested that
-you purchase a book as the manual. However Kermit has interactive
-online help which tells all but lacks tutorial explanations for the
-beginner. Commands may be put in a script file so you don't have to
-type them over again each time. Kermit (as a communications program)
-is more powerful than Minicom.
-
-
-Although all Minicom documentation is free, it's not as extensive as
-Kermit's. Since permission is required to include Kermit in a
-commercial distribution, and since the documentation is not entirely
-free, some distributions don't include Kermit. In my opinion it's
-easier to set up Minicom, there is less to learn, and you can still
-use kermit from within Minicom.
-
-
-
-
-!!15.2 List of Communication Software
-
-
-
- Here is a list of some communication software you can choose from,
-If they didn't come with your distribution they should be available
-via FTP. I would like comparative comments on the dialout programs.
-Are the least popular ones obsolete?
-
-
-
-
-!Least Popular Dialout
-
-
-
-
-
-*ecu - a communications program
-*
-
-*pcomm - procomm-like communications program with zmodem
-*
-
-*xc - xcomm communication package
-*
-
-
-
-
-
-!Most Popular Dialout
-
-
-
-
-
-* PPP dialers for getting on the internet: wvdial, eznet,
-chat, pon (uses chat),
-*
-
-*minicom - telix-like communications program. Can work
-with scripts, zmodem, kermit
-*
-
-*
-C-Kermit -
-portable, scriptable, serial and TCP/IP communications including file
-transfer, character-set translation, and zmodem support
-*
-
-*seyon - X based communication program
-*
-
-
-
-
-
-! Fax
-
-
- By using a fax program, you may use most modems to send faxes.
-In this case you dial out directly and not via ppp and an ISP. You
-also pay any long-distance telephone charges. email is more
-efficient.
-
-
-
-
-
-* efax a small fax program
-*
-
-* hylafax a large fax program based on the client-server
-model.
-*
-
-*mgetty+fax handles fax stuff and login for dial-ins
-*
-
-*A fax protocol tutorial
-http://www.iec.org/online/tutorials/vfoip/topic08.html
-*
-
-
-
-
-
-! Voicemail Software
-
-
-
-
-
-* vgetty is an extension to mgetty that handles voicemail for
-some modems. It should come with recent releases of mgetty.
-*
-
-*
-VOCPis a
-"complete voice messaging" system for Linux.
-
-*
-
-
-
-
-
-!Dial-in (uses getty)
-
-
-
-
-
-*mgetty+fax is for modems and is well documented (except for
-voicemail as of early 1999). It also handles fax stuff and provides
-an alternative to uugetty. It's incorporating voicemail (using
-vgetty) features. See
-About mgetty
-
-*
-
-* uugetty is also for modems. It comes as a part of the
-ps_getty package. See
-About getty_ps
-*
-
-
-
-
-
-!Other
-
-
-
-
-
-*callback is where you dial out to a remote modem and then
-that modem hangs up and calls you back (to save on phone bills).
-
-*
-
-*SLiRP and term provide a PPP-like service that you can
-run in user space on a remote computer with a shell account.
-See
-term and SLiRP for more details
-
-*
-
-*ZyXEL is a control program for ZyXEL U-1496 modems. It
-handles dialin, dialout, dial back security, FAXing, and voice
-mailbox functions.
-
-*
-
-*SLIP and PPP software can be found at
-
-ftp://metalab.unc.edu/pub/Linux/system/network/serial/.
-
-*
-
-*Other things can be found on
-
-ftp://metalab.unc.edu/pub/Linux/system/serial and
-
-ftp://metalab.unc.edu/pub/Linux/apps/serialcomm or one of the
-many mirrors. These are the directories where serial programs are kept.
-*
-
-
-
-
-
-!! 15.3 SLiRP and term
-
-
-
- SLiRP and term are programs which are of use if you only
-have a dial-up shell account on a Unix-like machine and want to get
-the equivalent of a PPP account (or the like) without being authorized
-to have it (possibly because you don't want to pay extra for it, etc.).
-SLiRP is more popular than term which is almost obsolete.
-
-
-To use SLiRP you install it in your shell account on the remote
-computer. Then you dial up the account and run SLiRP on the remote
-and PPP on your local PC. You now have a PPP connection over which
-you may run a web browser on your local PC such as Netscape, etc.
-There may be some problems as SLiRP is not as good as a real PPP
-account. Some accounts may provide SLiRP since it saves on IP
-addresses (You have no IP address while using SLiRP).
-
-
-term is something like SLiRP only you need to run term on
-both the local and remote computer. There is no PPP on the phone line
-since term uses its own protocol. To use term from your PC
-you need to use a term-aware version of ftp to do ftp, etc. Thus it's
-easier to use SLiRP since the ordinary version of ftp works fine with
-SLiRP. There is an unmaintained Term HOWTO.
-
-
-
-
-!!15.4 MS Windows
-
-
-
- If you want someone who uses MS Windows to dial in to your Linux
-PC then if they use:
-
-
-* Windows 3.x: use Terminal
-*
-
-* Windows 95/98/2000: use !HyperTerminal
-*
-
-
-
-Third party dial-out programs include !HyperTerminal Private Edition.
-
-
-
-----
-
-!!16. Two Modems (Modem Doubling)
-
-!!16.1 Introduction
-
-
-
- By using two modems at the same time, the flow of data can be
-doubled. It takes two modems and two phone lines. There are two
-methods of doing this. One is "modem bonding" where software at both
-ends of the modem-to-modem connection enables the paired modems to
-work like a single channel.
-
-
-The second method is called "modem teaming. Only one end of the
-connection uses software to make 2 different connections to the
-internet. Then when a file is to be downloaded, one modem gets the
-first half of the file while the second modems simultaneously gets the
-last half of the same file. Is there any modem teaming support in
-Linux ??
-
-
-
-
-!!16.2 Modem Bonding
-
-
-
- There are two ways to do this in Linux: EQL and multilink. These
-are provided as part of the Linux kernel (provided they've been
-selected when the kernel was compiled). For multilink the kernel
-must be at least v.2.4. Both ends of the connection must run them.
-Few (if any) ISPs provide EQL but many provide Multilink.
-
-
-The way it works is something like multiplexing only it's the other
-way around. Thus it's called inverse-multiplexing. For the multilink
-case, suppose you're sending some packets. The first packet goes out on
-modem1 while the second packet is going out on modem2. Then the third
-packet follows the first packet on modem1. The forth packet goes on
-modem2, etc. To keep each modem busy, it may be necessary to send out
-more packets on one modem than the other. Since EQL is not packet
-based, it doesn't split up the flow on packet boundaries.
-
-
-
-
-!EQL
-
-
-EQL is "serial line load balancing" which has been available for
-Linux since at least 1995. An old (1995) howto on it is in the kernel
-documentation (in the networking subdirectory). Unfortunately, ISPs
-don't seem to provide EQL.
-
-
-
-
-!Multilink
-
-
- Staring with kernel 2.4 in 2000, experimental support is provided
-for multilink. It must be selected when compiling the kernel and it
-only works with PPP.
-
-
-
-----
-
-!! 17. Troubleshooting
-
-!! 17.1 My Modem is Physically There but Can't be Found
-
-
-
- The error messages could be something like "No modem detected",
-"Modem not responding", or (strange) "You are already online" (from
-Minicom). If you have installed an internal modem (serial port is
-builtin) or are using an external one and don't know what serial port
-it's connected to then the problem is to find the serial port. See
-My Serial Port is Physically There but Can't be Found. This section is about finding out which serial port
-has the modem on it.
-
-
-There's a program that looks for modems on commonly used serial ports
-called "wvdialconf". Just type "wvdialconf <a-new-file-name>".
-It will create the new file as a configuration file but you don't need
-this file unless you are going to use "wvdial" for dialing.
-See
-What is wvdialconf ? Unfortunately, if
-your modem is in "online data" mode, wvdialconf will report "No modem
-detected" See
-No response to AT
-
-Your problem could be due to a winmodem (or the like) which usually
-can't be used with Linux. See
-Software-based Modems (winmodems). The "setserial program may
-be used to detect serial ports but will not detect modems on them.
-Thus "wvdialconf" is best to try first.
-
-
-Another way try to find out if there's a modem on a port is to start
-"minicom" on the port (after first setting up minicom for the correct
-serial port --you will need to save the setup and then exit minicom
-and start it again). Then type "AT" and you should see OK (or 0 if
-it's set for "digit result codes"). The results may be:
-
-
-* No response. See
-No response to AT
-*
-
-* It takes many seconds to get an expected truncated response
-(including only the cursor moving down one line). See
-Extremely Slow: Text appears on the screen slowly after long delays
-*
-
-* Some strange characters appear but they are not in response to
-AT. This likely means that your modem is still connected to something
-at the other end of the phone line which is sending some cryptic
-packets or the like.
-*
-
-
-
-
-
-! No response to AT
-
-
- The modem should send you "OK" in response to your "AT" which you
-type to the modem (using minicom or the like). If you don't see "OK"
-(and in most cases don't even see the "AT" you typed either) then the
-modem is not responding (often because what you type doesn't even get
-to the modem).
-
-
-A common cause is that there is no modem on the serial port you are
-typing to. For the case of an internal modem, that serial port likely
-doesn't exist either. That's because the PnP modem card (which has a
-built-in serial port) has either not been configured (by isapnp or the
-like) or has been configured incorrectly. See
-My Serial Port is Physically There but Can't be Found.
-
-
-If what you type is really getting thru to a modem, then the lack of
-response could be due to the modem being in "online data" mode where
-it can't accept any AT commands. You may have been using the modem
-and then abruptly disconnected (such as killing the process with
-signal 9). In that case your modem did not get reset to "command
-mode" where it can interact to AT commands. Thus the message from
-minicom "You are already online. Hangup first." Well, you are sort
-of online but you are may not be connected to anything over the phone
-line. Wvdial will report "modem not responding" for the same
-situation.
-
-
-To fix this as a last resort you could reboot the computer. Another
-way to try to fix this is to send +++ to the modem to tell it to
-escape back to "command mode" from "online data mode". On both sides
-of the +++ sequence there must be about 1 second of delay (nothing
-sent during "guard time"). This may not work if another process is
-using the modem since the +++ sequence could wind up with other
-characters inserted in between them or after the +++ (during the guard
-time). Ironically, even if the modem line is idle, typing an
-unexpected +++ is likely to set off an exchange of control packets
-(that you never see) that will violate the required guard time so
-that the +++ doesn't do what you wanted. +++ is usually in the string
-that is named "hangup string" so if you command minicom (or the like)
-to hangup it might work. Another way to do this is to just exit
-minicom and then run minicom again.
-
-
-
-
-!!17.2 "Modem is busy"
-
-
-
- What this means depends on what program sent it. The modem could
-actually be in use (busy). Another cause reported for the SuSE
-distribution is that there may be two serial drivers present instead
-of one. One driver was built into the kernel and the second was a
-module.
-
-
-In kppp, this message is sent when an attempt to get/set the serial
-port "stty" parameters fails. (It's similar to the "Input/output
-error" one may get when trying to use "stty -F /dev/ttySx"). To get a
-few of these stty parameters, the true address of the port must be
-known to the driver. So the driver may have the wrong address. The
-setserial" command will display what the driver thinks but it's likely
-wrong in this case. So what the "modem busy" really means is that the
-serial port (and the modem) can't be found.
-
-
-If you have a pci modem, then use one of these commands: lspci, or cat
-/proc/pci, or dmesg to find the correct address and irq of the
-modem's serial port. Then check to see if "setserial" shows the same
-thing. If not, you need to run a script at boot-time which contains a
-setserial command that will tell the driver the correct address and
-irq. The reason that the driver has it wrong may be due to failure of
-the kernel to understand the lspci data correctly. You might notice
-this in a boot-time message.
-
-
-
-
-!!17.3 I can't get near 56k on my 56k modem
-
-
-
- There must be very low noise on the line for it to work at even
-close to 56k. Some phone lines are so bad that the speeds obtainable
-are much slower than 56k (like 28.8k or even slower). Sometimes
-extension phones connected to the same line can cause problems. To
-test this you might connect your modem directly at the point where the
-telephone line enters the building with the feeds for everything else
-on that line disconnected (if others can tolerate such a test).
-
-
-
-
-!!17.4 Uploading (downloading) files is broken/slow
-
-
-
- Flow control (both at your PC and/or modem-to-modem) may not be
-enabled. For the uploading case: If you have set a high DTE speed
-(like 115.2k) then flow from your modem to your PC may work OK but
-uploading flow in the other direction will not all get thru due to the
-telephone line bottleneck. This will result in many errors and the
-resending of packets. It may thus take far too long to send a file.
-In some cases, files don't make it thru at all.
-
-
-For the downloading case: If you're downloading long uncompressed
-files or web pages (and your modem uses data compression) or if you've
-set a low DTE speed, then downloading may also be broken due to no
-flow control.
-
-
-
-
-!!17.5 For Dial-in I Keep Getting "line NNN of inittab invalid"
-
-
-
-Make sure you are using the correct syntax for your version of
-init. The different init's that are out there use different
-syntax in the /etc/inittab file. Make sure you are using the
-correct syntax for your version of getty.
-
-
-
-
-!!17.6 I Keep Getting: ``Id "S3" respawning too fast: disabled for 5 minutes''
-
-
-
- Id "S3" is just an example. In this case look on the line which
-starts with "S3" in /etc/inittab and calls getty. This line
-causes the problem. Make sure the syntax for this line is correct and
-that the device (ttyS3) exists and can be found. If the modem has
-negated CD and getty opens the port, you'll get this error message
-since negated CD will kill getty. Then getty will respawn only to be
-killed again, etc. Thus it respawns over and over (too fast). It
-seems that if the cable to the modem is disconnected or you have the
-wrong serial port, it's just like CD is negated. All this can occur
-when your modem is chatting with getty. Make sure your modem is
-configured correctly. Look at AT commands E and Q.
-
-
-
-
-
-If you use uugetty, verify that your /etc/gettydefs syntax is
-correct by doing the following:
-
-
-linux# getty -c /etc/gettydefs
-
-
-
-
-This can also happen when the uugetty initialization is failing.
-See section
-uugetty Still Doesn't Work.
-
-
-
-
-!!17.7 My Modem is Hosed after Someone Hangs Up, or uugetty doesn't respawn
-
-
-
-This can happen when your modem doesn't reset when DTR is dropped.
-Greg Hankins saw his RD and SD LEDs go crazy when this happened.
-You need to have your modem reset. Most Hayes compatible modems do
-this with &D3, but for USR Courier, !SupraFax, and other
-modems, you must set &D2 (and S13=1 for USR Courier).
-Check your modem manual (if you have one).
-
-
-
-
-!!17.8 NO DIALTONE
-
-
-
-It means exactly what it says. Someone else may be using another
-telephone on the same line. You also get this error if there is no
-phone line plugged into the modem, or if the phone line is somehow
-broken. Try plugging a real telephone into the phone cord used by the
-modem. Check it for a dialtone.
-
-
-If for some reason your modem doesn't detect a dialtone, then you can
-force it to dial anyway by putting X3 in the init string.
-
-
-
-
-!!17.9 NO CARRIER
-
-
-
-This means that the analog sine wave (the carrier) from the other
-modem isn't present like it should be. If you were already connected,
-this means that the connection has been lost. There may have been
-noise on the line or a bad connection. The other modem may have hung
-up on you for some reason: Perhaps the automatic login process
-didn't work out OK. Perhaps PPP didn't get started OK. Perhaps a
-time limit was exceeded.
-
-
-If you get this error before you get connected, it means that the
-carrier of the other modem wasn't detected by your modem. This may
-happen if there is there is no properly working modem on the other
-end. For example, an answering machine could have picked up your
-call instead of a modem. NO CARRIER will also happen if the modems
-fail to negotiate a protocol to use. This can happen if you have an
-early V.90 modem that first tries to negotiate a high speed X2 or
-K56flex protocol. These two protocols are obsolete and some ISP
-servers will drop the connection (hang up) when this happens since
-they have no understanding of such protocols and don't wait around
-long enough for the calling modem to fallback to V.90.
-
-
-If you force your modem to drop the connection by dropping the DTR
-signal or sending your modem the hangup signal (ATH) you may get this
-error message. But in this case you (or your software) wanted to drop
-the connection so there should be no problem. In this case you are
-only supposed to get NO CARRIER if data was lost. So for most cases
-of dropping a connection by hangup (or by dropping DTR) you only get
-an OK message. Your modem dialer program may not even display that to
-you.
-
-
-
-
-!! 17.10 uugetty Still Doesn't Work
-
-
-
-There is a DEBUG option that comes with getty_ps. Edit your
-config file
-/etc/conf.{uu}getty.ttyS''N'' and
-add DEBUG=''NNN''. Where ''NNN'' is one of the following
-combination of numbers according to what you are trying to debug:
-
-
-D_OPT 001 option settings
-D_DEF 002 defaults file processing
-D_UTMP 004 utmp/wtmp processing
-D_INIT 010 line initialization (INIT)
-D_GTAB 020 gettytab file processing
-D_RUN 040 other runtime diagnostics
-D_RB 100 ringback debugging
-D_LOCK 200 uugetty lockfile processing
-D_SCH 400 schedule processing
-D_ALL 777 everything
-
-
-Setting DEBUG=010 is a good place to start.
-
-
-If you are running syslogd, debugging info
-will appear in your log files. If you aren't running syslogd
-info will appear in /tmp/getty:ttyS''N'' for debugging
-getty
-and /tmp/uugetty:ttyS''N'' for uugetty, and in
-/var/adm/getty.log. Look at the
-debugging info and see what is going on. Most likely, you will need
-to tune some of the parameters in your config
-file, and reconfigure your modem.
-
-
-You could also try mgetty. Some people have better luck with
-it.
-
-
-
-
-!!17.11 (The following subsections are in both the Serial and Modem HOWTOs)
-
-
-!! 17.12 My Serial Port is Physically There but Can't be Found
-
-
-
- If a physical device (such as a modem) doesn't work at all it may
-mean that the device is not at the I/O address that setserial
-thinks it's at. It could also mean (for a PnP card) that is doesn't
-yet have an address. Thus it can't be found.
-
-
-Check the BIOS menus and BIOS messages. For the PCI bus use lspci or
-scanpci. If it's an ISA bus PnP serial port, try "pnpdump --dumpregs"
-and/or see Plug-and-Play-HOWTO. Using "scanport" will scan all ISA
-bus ports and may discover an unknown port that could be a serial port
-(but it doesn't probe the port). It could hang your PC. You may try
-probing with setserial. See
-Probing. If
-nothing seems to get thru the port it may be accessible but have a bad
-interrupt. See
-Extremely Slow: Text appears on the screen slowly after long delays. Use setserial -g to
-see what the serial driver thinks and check for IRQ and I0 address
-conflicts. Even if you see no conflicts the driver may have incorrect
-information (view it by "setserial" and conflicts may still exist.
-
-
-If two ports have the same IO address then probing it will erroneously
-indicate only one port. Plug-and-play detection will find both ports
-so this should only be a problem if at least one port is not
-plug-and-play. All sorts of errors may be reported/observed for
-devices illegally "sharing" a port but the fact that there are two
-devices on the same a port doesn't seem to get detected (except
-hopefully by you). In the above case, if the IRQs are different then
-probing for IRQs with setserial might "detect" this situation by
-failing to detect any IRQ. See
-Probing.
-
-
-
-
-!! 17.13 Extremely Slow: Text appears on the screen slowly after long delays
-
-
-
- It's likely mis-set/conflicting interrupts. Here are some of the
-symptoms which will happen the first time you try to use a modem,
-terminal, or serial printer. In some cases you type something but
-nothing appears on the screen until many seconds later. Only the last
-character typed may show up. It may be just an invisible
-<return> character so all you notice is that the cursor jumps
-down one line. In other cases where a lot of data should appear on
-the screen, only a batch of about 16 characters appear. Then there is
-a long wait of many seconds for the next batch of characters. You
-might also get "input overrun" error messages (or find them in logs).
-
-
-For more details on the symptoms and why this happens see
-
-
-
-
-
-If it involves Plug-and-Play devices, see also Plug-and-Play-HOWTO.
-
-
-As a quick check to see if it really is an interrupt problem, set the
-IRQ to 0 with "setserial". This will tell the driver to use
-polling instead of interrupts. If this seems to fix the "slow"
-problem then you had an interrupt problem. You should still try to
-solve the problem since polling uses excessive computer resources.
-
-
-Checking to find the interrupt conflict may not be easy since Linux
-supposedly doesn't permit any interrupt conflicts and will send you a
-/dev/ttyS?: Device or resource busy error
-message if it thinks you are attempting to create a conflict. But a
-real conflict can be created if "setserial" has told the kernel
-incorrect info. The kernel has been lied to and thus doesn't think
-there is any conflict. Thus using "setserial" will not reveal the
-conflict (nor will looking at /proc/interrupts which bases its info on
-"setserial"). You still need to know what "setserial" thinks so that
-you can pinpoint where it's wrong and change it when you determine
-what's really set in the hardware.
-
-
-What you need to do is to check how the hardware is set by checking
-jumpers or using PnP software to check how the hardware is actually
-set. For PnP run either "pnpdump --dumpregs" (if ISA bus) or run
-"lspci" (if PCI bus). Compare this to how Linux (e.g. "setserial")
-thinks the hardware is set.
-
-
-
-
-!!17.14 Somewhat Slow: I expected it to be a few times faster
-
-
-
- An obvious reason is that the baud rate is actually set too slow.
-It's claimed that this happened by trying to set the baud rate to a speed
-higher than the hardware can support (such as 230400).
-
-
-Another reason may be that whatever is on the serial port (such as a
-modem, terminal, printer) doesn't work as fast as you thought it did.
-
-
-
-
-
-Another possible reason is that you have an obsolete serial port: UART
-8250, 16450 or early 16550 (or the serial driver thinks you do). See
-
-
-
-
-
-Use "setserial -g /dev/ttyS*".
-If it shows anything less than a 16550A, this may be your problem.
-If you think that "setserial" has it wrong check it out. See
-What is Setserial for more info. If you
-really do have an obsolete serial port, lying about it to setserial
-will only make things worse.
-
-
-
-
-!! 17.15 The Startup Screen Show Wrong IRQs for the Serial Ports.
-
-
-
- Linux does not do any IRQ detection on startup. When the serial
-module loads it only does serial device detection. Thus, disregard
-what it says about the IRQ, because it's just assuming the standard
-IRQs. This is done, because IRQ detection is unreliable, and can be
-fooled. But if and when setserial runs from a start-up script, it
-changes the IRQ's and displays the new (and hopefully correct) state
-on on the startup screen. If the wrong IRQ is not corrected by a
-later display on the screen, then you've got a problem.
-
-
-So, even though I have my ttyS2 set at IRQ 5, I still see
-
-
-ttyS02 at 0x03e8 (irq = 4) is a 16550A
-
-
-at first when Linux boots. (Older kernels may show "ttyS02" as
-"tty02" which is the same as ttyS2). You may need to use
-setserial to tell Linux the IRQ you are using.
-
-
-
-
-!!17.16 "Cannot open /dev/ttyS?: Permission denied"
-
-
-
- Check the file permissions on this port with "ls -l /dev/ttyS?"_
-If you own the ttyS? then you need read and write permissions: crw
-with the c (Character device) in col. 1. It you don't own it then it
-should show rw- in cols. 8 & 9 which means that everyone has read and
-write permission on it. Use "chmod" to change permissions. There are
-more complicated ways to get access like belonging to a "group" that
-has group permission.
-
-
-
-
-!!17.17 "Operation not supported by device" for ttyS?
-
-
-
- This means that an operation requested by setserial, stty, etc.
-couldn't be done because the kernel doesn't support doing it.
-Formerly this was often due to the "serial" module not being loaded.
-But with the advent of PnP, it may likely mean that there is no modem
-(or other serial device) at the address where the driver (and
-setserial) thinks it is. If there is no modem there, commands (for
-operations) sent to that address obviously don't get done. See
-What is set in my serial port hardware?
-
-If the "serial" module wasn't loaded but "lsmod" shows you it's now
-loaded it might be the case that it's loaded now but wasn't loaded
-when you got the error message. In many cases the module will
-automatically loaded when needed (if it can be found). To force
-loading of the "serial" module it may be listed in the file:
-/etc/modules.conf or /etc/modules. The actual module should reside
-in: /lib/modules/.../misc/serial.o.
-
-
-
-
-!!17.18 "Cannot create lockfile. Sorry"
-
-
-
- When a port is "opened" by a program a lockfile is created in
-/var/lock/. Wrong permissions for the lock directory will not allow a
-lockfile to be created there. Use "ls -ld /var/lock" to see if the
-permissions are OK: usually rwx for everyone (repeated 3 times). If
-it's wrong, use "chmod" to fix it. Of course, if there is no "lock"
-directory no lockfile can be created there. For more info on
-lockfiles see the Serial-HOWTO subsection: "What Are Lock
-Files".
-
-
-
-
-!!17.19 "Device /dev/ttyS? is locked."
-
-
-
- This means that someone else (or some other process) is supposedly
-using the serial port. There are various ways to try to find out what
-process is "using" it. One way is to look at the contents of the
-lockfile (/var/lock/LCK...). It should be the process id. If the
-process id is say 100 type "ps 100" to find out what it is. Then if
-the process is no longer needed, it may be gracefully killed by "kill
-100". If it refuses to be killed use "kill -9 100" to force it to be
-killed, but then the lockfile will not be removed and you'll need to
-delete it manually. Of course if there is no such process as 100 then
-you may just remove the lockfile but in most cases the lockfile should
-have been automatically removed if it contained a stale process id
-(such as 100).
-
-
-
-
-!! 17.20 "/dev/tty? Device or resource busy"
-
-
-
- This means that the device you are trying to access (or use) is
-supposedly busy (in use) or that a resource it needs (such as an IRQ)
-is supposedly being used by another device (the resource is "busy").
-This message is easy to understand if it only means that the device is
-busy (in use). But it often means that a resource is in use. What
-makes it even more confusing is that in some cases neither the device
-nor the resources that it needs are actually "busy".
-
-
-The ``resource busy'' part often means (example for ttyS2) ``You
-can't use ttyS2 since another device is using ttyS2's
-interrupt.'' The potential interrupt conflict is inferred from what
-"setserial" thinks. A more accurate error message would be ``Can't
-use ttyS2 since the setserial data (and kernel data) indicates
-that another device is using ttyS2's interrupt''. If two devices
-use the same IRQ and you start up only one of the devices, everything
-is OK because there is no conflict yet. But when you next try to
-start the second device (without quitting the first device) you get a
-"... busy" error message. This is because the kernel only keeps track
-of what IRQs are actually in use and actual conflicts don't happen
-unless the devices are in use (open). The situation for I/O address
-(such as 0x3f8) conflict is similar.
-
-
-This error is sometimes due to having two serial drivers: one a module
-and the other compiled into the kernel. Both drivers try to grab the
-same resources and one driver finds them "busy".
-
-
-There are two possible cases when you see this message:
-
-
-# There may be a real resource conflict that is being avoided.
-#
-
-# Setserial has it wrong and the only reason ttyS2 can't be
-used is that setserial erroneously predicts a conflict.
-#
-
-
-
-What you need to do is to find the interrupt setserial thinks
-ttyS2 is using. Look at /proc/tty/driver/serial (if you have
-it). You should also be able to see it with the "setserial" command
-for ttyS2.
-
-
-Bug in old versions: Prior to 2001 there was a bug which wouldn't let
-you see it with "setserial". Trying to see it would give the same
-"... busy" error message.
-
-
-To try to resolve this problem reboot or: exit or gracefully kill all
-likely conflicting processes. If you reboot: 1. Watch the boot-time
-messages for the serial ports. 2. Hope that the file that runs
-"setserial" at boot-time doesn't (by itself) create the same conflict
-again.
-
-
-If you think you know what IRQ say ttyS2 is using then you may
-look at /proc/interrupts to find what else (besides another serial
-port) is currently using this IRQ. You might also want to double
-check that any suspicious IRQs shown here (and by "setserial") are
-correct (the same as set in the hardware). A way to test whether or
-not it's a potential interrupt conflict is to set the IRQ to
-(polling) using "setserial". Then if the busy message goes away, it
-was likely a potential interrupt conflict. It's not a good idea to
-leave it permanently set at 0 since it will put more load on the CPU.
-
-
-
-
-!!17.21 "Input/output error" from setserial or stty
-
-
-
- You may have typed "ttys" instead of "ttyS". You will see this
-error message if you try to use the setserial command for any device
-that is not a serial port. It also may mean that the serial port is
-in use (busy or opened) and thus the attempt to get/set parameters by
-setserial or stty failed. It could also mean that there isn't any
-serial port at the IO address that setserial thinks your port is at.
-
-
-
-
-!!17.22 Overrun errors on serial port
-
-
-
- This is an overrun of the hardware FIFO buffer and you can't
-increase its size. Bug note (reported in 2002): Due to a bug in some
-kernel 2.4 versions, the port number may be missing and you will only
-see "ttyS" (no port number). But if devfs notation such as "tts/2" is
-being used, there is no bug. See
-
-
-
-
-
-
-
-
-
-
-!!17.23 Port get characters only sporadically
-
-
-
- There could be some other program running on the port. Use "top"
-(provided you've set it to display the port number) or "ps -alxw".
-Look at the results to see if the port is being used by another
-program. Be on the lookout for the gpm mouse program which often runs
-on a serial port.
-
-
-
-
-!!17.24 Troubleshooting Tools
-
-
-
- These are some of the programs you might want to use in
-troubleshooting:
-
-
-* "lsof /dev/ttyS*" will list serial ports which are open.
-*
-
-* "setserial" shows and sets the low-level hardware configuration
-of a port (what the driver thinks it is). See
-What is Setserial
-*
-
-* "stty" shows and sets the configuration of a port (except for
-that handled by "setserial").
-*
-
-* "modemstat" or "statserial" will show the current state of
-various modem signal lines (such as DTR, CTS, etc.)
-*
-
-* "irqtune" will give serial port interrupts higher
-priority to improve performance.
-*
-
-* "hdparm" for hard-disk tuning may help some more.
-*
-
-* "lspci" shows the actual IRQs, etc. of hardware on the PCI bus.
-*
-
-* "pnpdump --dumpregs" shows the actual IRQs, etc. of hardware for
-PnP devices on the ISA bus.
-*
-
-* Some "files" in the /proc tree (such as ioports, interrupts,
-and tty/driver/serial).
-*
-
-
-
-
-
-
-
-
-
-
-----
-
-!!18. Flash Upgrades
-
-
- Many modems can be upgraded by reprogramming their flash memories
-with an upgrade program which you get from the Internet. By sending
-this "program" from the PC via the serial port to the modem, the modem
-will store this program in its non-volatile memory (it's still there
-when the power is turned off). The instructions on installing it are
-usually on how to do in under Windows so you'll need to figure out how
-to do the equivalent under Linux (unless you want to install the
-upgrade under Windows). Sending the program to the modem is often
-called a download.
-
-
-If the latest version of this HOWTO still contains this request (see
-New Versions of this HOWTO) please send me
-your experiences with installing such upgrades that will be helpful to
-others.
-
-
-Here's the general idea of doing an upgrade. First, there may be a
-command that you need to send your modem to tell it that what follows
-is a flash ROM upgrade. In one case this was AT** You can do this by
-starting a communications program (such as minicom) and type. First
-type AT <enter> to see if your modem is there and answers "OK".
-
-
-Next, you need to send an file (sometimes two files) directly to the modem.
-Communication programs (such as minicom) often use zmodem or kermit to
-send files to the modem (and beyond) but these put the file into
-packets which append headers and you want the exact file sent to the
-modem, not a modified one. But the kermit communications program has
-a "transmit" command that will send the file directly (without using
-the kermit packets) so this is one way to send a file directly.
-Minicom didn't have this feature in 1998.
-
-
-Another way to send the file(s) would be to escape from the
-communications program to the shell (in minicom this is ^AJ) and then:
-cat upgrade_file_name > /dev/ttyS2 (if your serial port is
-ttyS2). Then go back to the communication program (type fg at the
-command line prompt in minicom) to see what happened.
-
-
-Here's an example session for a certain Rockwell modem (C-a is ^A):
-
-- Run minicom
-- Type AT** : see "Download initiated ..."
-- C-a J
-- cat FLASH.S37 > /dev/modem
-- fg : see "Download flash code ..."
-- C-a J
-- cat 283P1722.S37 > /dev/modem
-- fg : see "Device successfully programmed"
-
-
-
-
-----
-
-!!19. Other Sources of Information
-
-!!19.1 Misc
-
-
-
-
-
-
-*man pages for: agetty(8), getty(1m), gettydefs(5),
-init(1), isapnp(8), login(1), mgetty(8),
-setserial(8)
-*
-
-*Your modem manual (if it exists). Some modems come without manuals.
-*
-
-*
-Serial Suite by Vern Hoxie is a collection of blurbs about the care and
-feeding of the Linux serial port plus some simple programs.
-*
-
-*The Linux serial mailing list. To subscribe, send email to
-
-majordomo@vger.rutgers.edu, with
-``subscribe linux-serial'' in the message body. If you
-send ``help'' in the message body, you get a help
-message. The server also serves many other Linux lists. Send
-the ``lists'' command for a list of mailing lists.
-*
-
-
-
-
-
-!!19.2 Books
-
-
-
- I've been unable to find a good up-to-date book on modems.
-
-
-*The Complete Modem Reference by Gilbert Held, 1997.
-Contains too much info about obsolete topics. More up-to-date info
-may be found on the Internet.
-*
-
-*Modems For Dummies by Tina Rathbone, 1996. (Have never seen it.)
-*
-
-*The Modem Technical Guide by Douglas Anderson, 1996.
-*
-
-*Ultimate Modem Handbook by Cass R. Lewart, 1998.
-*
-
-* Black, Uyless D.: Physical Layer Interfaces & Protocols, IEEE
-Computer Society Press, Los Alamitos, CA, 1996.
-*
-
-
-
-
-
-!!19.3 HOWTOs
-
-
-
-
-
-
-*Cable-Modem mini-howto
-*
-
-* SuSE ISDN Howto (not a LDP Howto)
-http://sol.parkland.cc.il.us/sdb/en/html/isdn.html or
-http://brenner.chemietechnik.uni-dortmund.de/doc/sdb/en/html/isdn.html
-*
-
-*Linux-Modem-Sharing mini-howto. Computers on a network share
-a single modem for dial-out (like a shared printer).
-*
-
-*Modems-HOWTO: In French (Not used in creating this Modem-HOWTO)
-*
-
-*NET-3-4-HOWTO: all about networking, including SLIP, CSLIP, and PPP
-*
-
-*PPP-HOWTO: help with PPP including modem set-up
-*
-
-* Serial-HOWTO has info on Multiport Serial Cards used for both
-terminals and banks of modems. Covers the serial port in more detail
-than in the HOWTO.
-*
-
-*Serial-Programming-HOWTO: for some aspects of serial-port programming
-*
-
-*Text-Terminal-HOWTO: (including connecting up with modems)
-*
-
-*UUCP-HOWTO: for information on setting up UUCP
-*
-
-
-
-
-
-!!19.4 Usenet newsgroups
-
-
-
-
-
-
-* comp.os.linux.answers; FAQs, How-To's, READMEs, etc. about Linux.
-*
-
-* comp.os.linux.hardware; Hardware compatibility with the
-Linux operating system.
-*
-
-* comp.os.linux.setup; Linux installation and system administration.
-*
-
-* comp.dcom.modems; Modems for all OS's
-*
-
-
-
-
-
-!! 19.5 Web Sites
-
-
-
-
-
-
-* Modem List of modems which work/don't_work under Linux
-http://www.idir.net/~gromitkc/winmodem.html
-*
-
-*
-Linux Serial Driver home page Includes info about support for PCI modems.
-*
-
-*Hayes AT modem commands
-Technical Reference for Hayes (tm) Modem Users
-*
-
-*
-AT Command Set and Register Summary for Analog Modem Modules (Cisco)
-*
-
-*
-Controlling your Modem with AT Commands
-*
-
-*Modem FAQs:
-Navas 28800-56K Modem FAQ
-*
-
-*
-Curt's High Speed Modem Page
-*
-
-* Much info on 56k modems
-56k Modem = v.Unreliable
-*
-
-*
-Links to modem manufacturers
-*
-
-*
-More Links to modem manufacturers
-*
-
-*
- http://search.fcc.gov/ name="Search for
-manufacturer by FCC ID">
-*
-
-
-
-
-----
-
-!! 20. Appendix A: How Analog Modems Work (technical) (unfinished)
-
-!! 20.1 Modulation Details
-
-
-!Intro to Modulation
-
-
- This part describes the modulation methods used for conventional
-modems. It doesn't cover the high speed PCM methods (modulus
-conversion) sometimes used by
-56k Modems (V.90, V.92). But 56k modems also use the modulation methods
-described here.
-
-
-Modulation is the conversion of a digital signal represented by binary
-binary (0 or 1) into an analog signal something like a sine wave.
-The modulated signal consists pure sine wave "carrier" signal which
-is modified to convey information. A pure carrier sine wave,
-unchanging in frequency and voltage, provides no flow of information
-at all (except that a carrier is present). To make it convey
-information we modify (or modulate) this carrier. There are 3 basic
-types of modulation: frequency, amplitude, and phase. They will be
-explained next.
-
-
-
-
-!Frequency Modulation
-
-
- The simplest modulation method is frequency modulation. Frequency
-is measured in cycles per second (of a sine wave). It's the count
-of the number of times the sine wave shape repeats itself in a second.
-This is the same as the number of times it reaches it peak value
-during a second. The word "Hertz" (abbreviated Hz) is used to mean
-"cycles per second".
-
-
-A simple example of frequency modulation is where one frequency means
-a binary 0 and another means a 1. For example, for some obsolete 300
-baud modems 1070 Hz meant a binary 0 while 1270 Hz meant a binary 1.
-This was called "frequency shift keying". Instead of just two
-possible frequencies, more could be used to allow more information to
-be transmitted. If we had 4 different frequencies (call them A, B, C,
-and D) then each frequency could stand for a pair of bits. For
-example, to send 00 one would use frequency A. To send 01, use
-frequency B; for 10 use C; for 11 use D. In like manner, by using 8
-different frequencies we could send 3 bits with each shift in
-frequency. Each time we double the number of possible frequencies we
-increase the number of bits it can represent by 1.
-
-
-
-
-!Amplitude Modulation
-
-
- Once one understands frequency modulation example above including
-the possibilities of representing a few bits by a single shift in
-frequency, it's easier to understand both amplitude modulation and
-phase modulation. For amplitude modulation, one just changes the height
-(voltage) of the sine wave analogous to changing the frequency of the
-sine wave. For a simple case there could only be 2 allowed amplitude
-levels, one representing a -bit and another representing a 1-bit. As
-explained for the case of frequency modulation, having more possible
-amplitudes will result in more information being transmitted per
-change in amplitude.
-
-
-
-
-!Phase Modulation
-
-
- To change the phase of a sine wave at a certain instant of time,
-we stop sending this old sine wave and immediately begin sending a new
-sine wave of the same frequency and amplitude. If we started sending
-the new sine wave at the same voltage level (and slope) as existed
-when we stopped sending the old sine wave, there would be no change in
-phase (and no detectable change at all). But suppose that we started
-up the new sine wave at a different point on the sine wave curve.
-Then there would likely be a sudden voltage jump at the point in time
-where the old sine wave stopped and the new sine wave began. This is
-a phase shift and it's measured in degrees (deg.) A 0 deg. (or a 360
-deg.) phase shift means no change at all while a 180 deg. phase shift
-just reverses the voltage (and slope) of the sine wave. Put another
-way, a 180 deg. phase shift just skips over a half-period (180 deg.)
-at the point of transition. Of course we could just skip over say 90
-deg. or 135 deg. etc. As in the example for frequency modulation, the
-more possible phase shifts, the more bits a single shift in phase can
-represent.
-
-
-
-
-!Combination Modulation
-
-
- Instead of just selecting either frequency, amplitude, or phase
-modulation, we may chose to combine modulation methods. Suppose that
-we have 256 possible frequencies and thus can send a byte (8 bits) for
-each shift in frequency (since 2 to the 8 power is 256). Suppose also
-that we have another 256 different amplitudes so that each shift in
-amplitude represents a byte. Also suppose there are 256 possible
-phase shifts. Then a certain points in time we may make a shift in
-all 3 things: frequency, amplitude and phase. This would send out 3
-bytes for each such transition.
-
-
-No modulation method in use today actually does this. It's not
-practical due to the relatively long time it would take to detect all
-3 types of changes. The main problem is that frequent shifts in phase
-can make it appear that a shift in frequency has happened when it
-actually didn't.
-
-
-To avoid this difficulty one may simultaneous change only the phase
-and amplitude (with no change in frequency). This is called
-phase-amplitude modulation. It is also called quadrature amplitude
-modulation (= QAM) since there were only 4 possible phases
-(quadrature) in early versions of it. This method is used today for
-the common modem speeds of 14.4k, 28.8k, and 33.6k. The only
-significant case where this modulation method is not used today is for
-56k modems. But even 56k modems exclusively use QAM (phase-amplitude
-modulation) in the direction from your PC out the telephone line.
-Sometimes even the other direction will also fall back to QAM when
-line conditions are not good enough. Thus QAM (phase-amplitude
-modulation) still remains the most widely used method on ordinary
-telephone lines.
-
-
-
-
-!! 20.2 56k Modems (V.90, V.92)
-
-
-
- The "modulation" method used for speeds above 33.6k is entirely
-different than the common phase-amplitude modulation used at 33.6k and
-below. Since ordinary telephone calls are converted to digital
-signals at the local offices of the telephone company, the fastest
-speed that you can send digital data by an ordinary telephone call is
-the same speed that the telephone company uses over its digital
-portion of the phone call transmission. What is this speed? Well,
-it's close to 64kbps. It would be 64k but sometimes bits are "stolen"
-for signalling purposes. But if the phone Co. knows that the link is
-not for voice, bits may not get stolen. The case of 64k will be
-presented and then it will be explained why the actual speed is lower
-(56k or less --usually significantly less).
-
-
-Thus 64k is the absolute top speed possible (not counting date
-compression) for an ordinary telephone call using the digital portion
-of the circuit that was designed to send digital encodings of the
-human voice. In order to use 64k, the modems need to either have
-direct access to the digital portion of the circuit or be able to
-predict the exact digital signal that generated a received analog
-signal (and conversely). This task is far too error prone if both
-sides of a telephone call have only an analog interface to the
-telephone company. But if one side has a digital interface, then it's
-possible (in one direction for V.90 and in both directions for V.92).
-Thus if your ISP has a digital interface to the phone company, the ISP
-may send out a certain digital signal over the phone lines toward your
-PC. The digital signal from the ISP gets converted to analog at the
-local telephone office near your PC's location (perhaps near your
-home). Then it's your modem's task to try to figure out exactly what
-that digital signal was. If it could do this then transmission at 64k
-(the speed of the telephone company's digital signal) is possible in
-this direction.
-
-
-What method does the telephone company use to digitally encode analog
-signals? It uses a method of sampling the amplitude of the analog
-signal at a rate of 8000 samples per second. Each sample amplitude is
-encoded as a 8-bit byte. (Note: 8 x 8000 = 64k) This is called
-"Pulse Code Modulation" = PCM. These bytes are then sent digitally on
-the telephone company's digital circuits where many calls share a
-single circuit using a time-sharing scheme known as "time division
-multiplexing". Then finally at a local telephone office near your
-home, the digital signal is de-multiplexed resulting in the same
-digital signal as was originally created by PCM. Then this signal is
-converted back to analog and sent to your home. Each PCM 8-bit byte
-creates a certain amplitude of the analog signal. Your modem's task
-is to determine just what that PCM 8-bit byte was, based on the analog
-amplitude it detects.
-
-
-This was originally called is called "modulus conversion". It's now
-often called "PCM" something since its just like encoding into PCM but with the
-added problem of sampling at the precise time that the codec generate
-the analog voltage from the digital PCM code.
-
-
-In order to determine the digital codes the telephone Co. used to
-create the analog signal, the modem must sample this analog signal
-amplitude at exactly the same points in time the phone Co. used when
-it created the analog signal. To do this an 8kHz clock timing signal
-is generated with help from a residual 4kHz signal on the analog phone
-line. The creation of amplitudes to go out to your home/office at 8k
-amplitudes/sec sort of creates a 4kHz signal. Suppose every other
-amplitude was of opposite polarity. Then there would be a 4kHz
-sine-like wave created. Each amplitude is in a sense a 8-bit symbol
-and when to sample amplitudes is known as "symbol timing". The
-modem's task is to insure that it's 8kHz clock runs at precisely twice
-the speed of the 4kHz signal (which could drift slightly off 4kHz) and
-that the modem's clock is synchronized with that used by the telephone
-company's codec. The actual electronics may use much higher frequency
-clocks (dividing them down) and take more than a single sample. If
-you know how this synchronization works, let me know (if this a a
-recent Modem-HOWTO).
-
-
-Now the encoding of amplitudes in PCM is not linear. At low
-amplitudes an increment of 1 in the PCM byte represents a much smaller
-increment (delta) in analog signal amplitude than would be the case if the
-amplitude being sampled were much higher. Thus for low amplitudes
-it's difficult to distinguish between adjacent byte values. To make
-it easier to do this (for 56k modems) certain PCM codes representing
-very low amplitudes are not used. This gives a larger delta between
-possible amplitudes and makes correct detection of them by your modem
-easier. Thus half of the amplitude levels are not used (in the
-downstream direction) by V.90 or V.92. This is tantamount to each
-symbol (valid amplitude level) representing 7 bits instead of 8. This
-is where 56k comes from: 7 bits/symbol x 8k symbols/sec = 56k bps. Of
-course each amplitude symbol is actually generated by 8-bits but only
-128 bytes of the possible 256 bytes are actually used by the ISP
-sender. There is a code table mapping these 128 8-bit bytes to 128
-7-bit bytes. It's not just a simple mapping like ignoring the last
-bit. Thus to send 7 normal data bytes (8-bits) will take 8 of the
-above mentioned bytes.
-
-
-But it's a little more complicated that this. If the line conditions
-are not nearly perfect or if the direction is upstream, then even
-fewer possible levels (symbols) are used resulting in speeds under
-56k. Also due to US government rules prohibiting high power levels on
-phone lines, certain high amplitudes levels can't be used resulting in
-only about 53.3k at best for "56k" modems in the downstream direction.
-
-
-Note that the digital part of the telephone network is bi-directional.
-Two such circuits are used for a phone call, one in each direction.
-The 56k signal is only used in one of these directions: from your ISP
-to your PC (called the "downstream" direction). For V.90, the other
-direction (upstream, from your home/office to the ISP) uses the
-conventional phase-amplitude modulation scheme with a maximum of
-36.6kbps (and not 53.3kbps). For V.92, this upstream direction also uses
-the PCM method and supports 48 kbps. The analog portion of the
-circuit from your home/office to the nearest telephone Co. office was
-never intended to be bi-directional since it's only a single twisted
-pair. But due to sophisticated cancellation methods it's able to
-convey data simultaneously in both directions as explained in the next
-subsection. It's claimed that with V.92, it's almost impossible to
-get maximum thruput in both directions simultaneously due to the
-difficulties of bi-directional flow on a single circuit.
-
-
-
-
-!!20.3 Full Duplex on One Circuit
-
-
-
- Modern modems are able to both send and receive signals
-simultaneously. One could call this "bidirectional" or "full duplex".
-This was once done by using one frequency for sending and another for
-receiving. Today, the same frequency is used for both sending and
-receiving. How this works is not easy to comprehend.
-
-
-Most of the telephone system "main lines" are digital with two
-channels in use when you make a telephone call. What you say goes over
-one digital channel and what the other person says goes over the other
-(reverse) digital channel. Unfortunately, the part of the telephone
-system which goes to homes (and many offices) is not digital but only
-a single analog channel. If both modems were directly connected to
-the digital part of the phone system then bidirectional communication
-(sending and receiving at the same time) would be no problem because
-two channels would be available.
-
-
-But the end portion of the signal path goes over just one circuit. How
-can there be two-way communication on it simultaneously? It works
-something like this. Suppose your modem is receiving a signal from
-the other modem and is not transmitting. Then there's no problem.
-But if your modem were to start transmitting (with the other received
-signal still flowing into your modem) it would drown out the received
-signal. If the transmitted signal was a "solid" voltage wave applied
-to the end of the line then there is no way any received signal could
-be present at that point.
-
-
-But the transmitter has "internal impedance" and the transmitted
-signal applied to the end of the line is not solid (or strong enough)
-to completely eliminate the received signal coming from the other end.
-Thus while the voltage at the end of the line is mostly the stronger
-transmitted signal a small part of it is the desired received signal.
-All that is needed is to filter out this stronger transmitted signal
-and then what remains will be the signal from the other end which we
-want. To do this, one only needs to get the pure transmitted signal
-directly from the transmitter (before it's applied to the line)
-amplify it a determined amount, and then subtract it from the total
-signal present at the end of the line. Doing this in the receiver
-circuits leaves a signal which mostly came from the other end of the
-line.
-
-
-
-
-!!20.4 Echo Cancellation
-
-
-
- An analog signal traveling down a line in one direction may
-encounter changes in the line that will cause part of the signal to
-echo back in the opposite direction. Since the same circuit is used
-for bi-directional flow of data, such echos will result in garbled
-reception. One way to ameliorate this problem is to send training
-signals once in a while to determine the echo characteristic of the
-line. This will enable one to predict the echos that will be
-generated by any given signal. Then this prediction method is used to
-predict what echos the transmitted signal will cause. Then this
-predicted echo signal is subtracted from the received signal. This
-cancels out the echoes.
-
-
-
-----
-
-!!21. Appendix B: Digital Modem Signal Processing (not done)
-----
-
-!!22. Appendix C: "baud" vs. "bps"
-
-!!22.1 A simple example
-
-
-
- ``baud'' and ``bps'' are perhaps one of the most misused terms in
-the computing and telecommunications field. Many people use these
-terms interchangeably, when in fact they are not! bps is simply the
-number of bits transmitted per second. The baud rate is a measure of
-how many times per second a signal changes (or could change). For a
-typical serial port a 1-bit is -12 volts and a -bit is +12 v (volts).
-If the bps is 38,400 a sequence of 010101... would also be 38,400 baud
-since the voltage shifts back and forth from positive to negative to
-positive, etc. and there are 38,400 shifts per second. For another
-sequence say 111000111... there will be fewer shifts of voltage since
-for three 1's in sequence the voltage just stays at -12 volts yet we
-say that its still 38,400 baud since there is a possibility that the
-number of changes per second will be that high.
-
-
-Looked at another way, put an imaginary tic mark separating each bit
-(even though the voltage may not change). 38,400 baud then means
-38,400 tic marks per second. The tic marks at at the instants of
-permitted change and are actually marked by a synchronized clock
-signal generated in the hardware but not sent over the external cable.
-
-
-Suppose that a "change" may have more than the two possible outcomes
-of the previous example (of +- 12 v). Suppose it has 4 possible
-outcomes, each represented by a unique voltage level. Each level may
-represent a pair of bits (such as 01). For example, -12v could be 00,
--6v 01, +6v 10 and +12v 11. Here the bit rate is double the baud rate.
-For example, 3000 changes per second will generate 2 bits for each
-change resulting in 6000 bits per second (bps). In other words 3000
-baud results in 6000 bps.
-
-
-
-
-!!22.2 Real examples
-
-
-
- The above example is overly simple. Real examples are more
-complicated but based on the same idea. This explains how a modem
-running at 2400 baud, can send 14400 bps (or higher). The modem
-achieves a bps rate greater than baud rate by encoding many bits in
-each signal change (or transition). Thus, when 2 or more bits are
-encoded per baud, the bps rate exceeds the baud rate. If your
-modem-to-modem connection is at 14400 bps, it's going to be sending 6
-bits per signal transition (or symbol) at 2400 baud. A speed of 28800
-bps is obtained by 3200 baud at 9 bits/baud. When people misuse the
-word baud, they may mean the modem speed (such as 33.6k).
-
-
-Common modem bps rates were formerly 50, 75, 110, 300, 1200,
-2400, 9600. These were also the bps rates over the
-serial_port-to-modem cables. Today the bps modem-to-modem (maximum)
-rates are 14.4k, 28.8k, 33.6k, and 56k, but the common rates over the
-serialPort-to-modem cables are not the same but are: 19.2k, 38.4k,
-57.6k, 115.2k, 230.4k. The high speed of 230.4k is (as of late 2000)
-unfortunately not provided by most new (and old) hardware. Using
-modems with V.42bis compression (max 4:1 compression), rates up to
-115.2k bps are possible for 33.6k modems. 203.2k (4 x 53.3k) is
-possible for 56k modems.
-
-
-Except for 56k modems, most modems run at 2400, 3000, or 3200
-baud. Even the 56k modems use these bauds for transmission and
-sometimes fall back to them for reception. Because of the bandwidth
-limitations on voice-grade phone lines, baud rates greater than 2400
-are harder to achieve, and only work under conditions of good phone
-line quality.
-
-
-How did this confusion between bps and baud start? Well, back when
-antique low speed modems were high speed modems, the bps rate actually
-did equal the baud rate. One bit would be encoded per phase change.
-People would use bps and baud interchangeably, because they were the
-same number. For example, a 300 bps modem also had a baud rate of
-300. This all changed when faster modems came around, and the bit rate
-exceeded the baud rate. ``baud'' is named after Emile Baudot, the
-inventor of the asynchronous telegraph printer. One way this problem
-gets resolved is to use the term "symbol rate" instead of "baud" and
-thus avoid using the term "baud". However when talking about the
-"speeds" between the modem and the serial port (DTE speed) baud and the
-symbol rate are the same. And even "speed" is a misnomer since we
-really mean flow rate.
-
-
-
-----
-
-!!23. Appendix D: Terminal Server Connection
-
-
- This section was adapted from Text-Terminal-HOWTO.
-
-
-A terminal server is something like an intelligent switch that can
-connect many modems (or terminals) to one or more computers. It's
-not a mechanical switch so it may change the speeds and protocols of
-the streams of data that go thru it. A number of companies make
-terminal servers: Xyplex, Cisco, 3Com, Computone, Livingston, etc.
-There are many different types and capabilities. Another HOWTO is
-needed to compare and describe them (including the possibility of
-creating your own terminal server with a Linux PC). Most are used for
-modem connections rather than directly connected terminals.
-
-
-One use for them is to connect many modems (or terminals) to a high
-speed network which connects to host computers. Of course the
-terminal server must have the computing power and software to run
-network protocols so it is in some ways like a computer. The
-terminal server may interact with the user and ask what computer to
-connect to, etc. or it may connect without asking. One may sometimes
-send jobs to a printer thru a terminal server.
-
-
-A PC today has enough computing power to act like a terminal server
-except that each serial port should have its own hardware interrupt.
-PC's only have a few spare interrupts for this purpose and since they
-are hard-wired you can't create more by software. A solution is to
-use an advanced multiport serial card which has its own system of
-interrupts (or on lower cost models, shares one of the PC's interrupts
-between a number of ports). See Serial-HOWTO for more info. If such
-a PC runs Linux with getty running on many serial ports it might be
-thought of as a terminal server. It is in effect a terminal server if
-it's linked to other PC's over a network and if its job is mainly to
-pass thru data and handle the serial port interrupts every 14 (or so)
-bytes. Software called "radius" is sometimes used.
-
-
-Today real terminal servers serve more than just terminals. They also
-serve PC's which emulate terminals, and are sometimes connected to a
-bank of modems connected to phone lines. Some even include built-in
-modems. If a terminal (or PC emulating one) is connected directly to
-a modem, the modem at the other end of the line could be connected to
-a terminal server. In some cases the terminal server by default
-expects the callers to use PPP packets, something that real text
-terminals don't generate.
-
-
-
-----
-
-!! 24. Appendix E: Other Types of Modems
-
-
- This HOWTO currently only deals with the common type of modem used
-to connect PC's to ordinary analog telephone lines. There are various
-other types of modems, including devices called modems that are not
-really modems.
-
-
-
-
-!!24.1 Digital-to-Digital "Modems"
-
-
-
- The standard definition of a modem is sometimes broadened to
-include "digital" modems. Today direct digital service is now being
-provided to many homes and offices so a computer there sends out
-digital signals directly (well almost) into the telephone lines. But
-a device is still needed to convert the computer digital signal into
-the type allowed on telephone circuits and this device is sometimes
-called a modem. This HOWTO doesn't cover such modems but some links
-to documents that do may be found at the start of this HOWTO. The
-next 3 sections: ISDN, DSL and 56k, concern digital-to-digital
-"modems".
-
-
-
-
-!!24.2 ISDN "Modems"
-
-
-
- Such a "modem" is really a Terminal Adapter (TA). Support for
-some of them can be built into the kernel 2.4 or added as a module.
-The kernel documentation has an isdn subdirectory. Configuration
-might use "isdn-config" GUI. A Debian package "isdnutils" is
-available. There is SuSE ISDN Howto (not a LDP Howto) which is
-translated from German
-http://sol.parkland.cc.il.us/sdb/en/html/isdn.html There is an
-isdn4linux package and a newsgroup: de.alt.comm.isdn4linux. Many of
-the postings are in German. You might try using a search engine to
-look for "isdn4linux".
-
-
-
-
-!!24.3 Digital Subscriber Line (DSL)
-
-
-
- DSL uses the existing twisted pair line from your home (etc.) to
-the local telephone office. This can be used if your telephone line
-can accept significantly higher speeds than an ordinary modem would
-use. It replaces the analog-to-digital converter at the local
-telephone office with a converter which can accept a much faster flow
-of data (in a different format of course). The device which converts
-the digital signals from your computer to the signal used to represent
-digital data on the local telephone line is also called a modem.
-
-
-
-
-!!24.4 56k Digital-Modems
-
-
-
- For any 56k modem to work as a 56k modem in your home or office,
-the other end must be connected directly to the digital system of the
-telephone company. Thus ISPs at the other end of the line must obtain
-special digital modems to provide customers with 56k service. There's
-more to it than this since banks of many modems are multiplexed onto a
-high capacity telephone cable that transports a large number of phone
-calls simultaneously (such as a T1, E1, ISDN PRI, or better line).
-This requires a concentrator or "remote access server". This has
-usually been done by stand-alone units (like PC's but they cost much
-more and have proprietary OSs). Now there are some cards one may
-insert into a PC's PCI bus to do this.
-
-
-
-
-!!24.5 Leased Line Modems
-
-
-
- See the mini-howto: Leased-Line which covers leased lines where
-there is no dialtone. Leased line modems are analog and not digital.
-These special modems are used on lines leased from the telephone
-company or sometimes on just a long direct wire hookup. They often
-will also work as ordinary modems but go into leased-line mode when
-the AT command &L1 is given.
-
-
-Ordinary modems for a telephone line will not normally work on such a
-leased line. An ordinary telephone line has about 40-50 volts (known
-as the "battery) on it when not in use and the conventional modem uses
-this voltage for transmission. Furthermore, the telephone company has
-special signals indicating a ring, line busy, etc. Conventional
-modems expect and respond to these signals. Connecting two such
-modems by a long cable will not provide the telephone signals on the
-cable and thus the modems will not work.
-
-
-Leased-line modems often use a "dumb mode" where they ignore AT
-commands, disable result reporting, etc. One type of leased line
-used two pairs of wires (one for each direction) using V.29 modulation
-at 9600 baud. Some brands of leased line modems are incompatible with
-other brands.
-
-
-
-----
-
-!!25. Appendix F: Fax pixels (dots)
-
-
- Here's some info on the bloated bandwidth required for standard
-fax including the dot density. You can of course send a fax via your
-modem if you dial the real telephone number of the recipient.
-
-
-
-
-
-A4 paper: 216mm (horizontal) * 297mm (vertical)
-normal mode 8dots/mm * 3.85dots/mm
-fine mode * 7.7dots/mm
-extra fine mode *15.4dots/mm
-
-
-
-
-Each dot is either white or black and thus 1 bit. One sheet of A4
-paper using fine mode is (216*8) * (297*7.7) = about 4 million dots.
-With a compression ratio of 8:1 it takes about 50 seconds at 9600bps
-for transmission.
-
-
-
-----
-
-!!26. Appendix G: Antique Modems
-
-!!26.1 Introduction
-
-
-
- By "antique" I mean modems with speeds of 14.4 bps or less. Many
-of them were made in the 1980s. Faster modems are also included if
-they use a proprietary protocol. This appendix compares the
-antique modems with the modern ones. You should read it if you are
-interested in modem history or are intending to actually use an
-antique modem. Also, many current modems and software still support
-the old protocols and you might find that these have been configured
-by mistake.
-
-
-
-
-!!26.2 Old CCITT (ITU) and Bell Protocols
-
-
-
-
-
-
-* Bell 103 300 bps; frequency shift keying = FSK (1962)
-*
-
-* V.21 300 bps; frequency shift keying (used a different
-frequency than Bell 103) (1964)
-*
-
-* V.23 1200/75 bps and 600/75 bps asymmetric; 75 bps is the reverse
-channel; frequency shift keying = FSK (1964)
-*
-
-* Bell 212A 1200 bps; quadrature differential phase shift keying
-= QDPSK = DPSK
-*
-
-* V.22 1200 bps; fallback to 600 bps ; QDPSK = DPSK (1980)
-*
-
-* V.22bis 2400 bps; QAM (1984)
-*
-
-* V.32 9600 bps; QAM (1984 but not widely used until years
-later)
-*
-
-* V.32bis 14400 bps; QAM (1991)
-*
-
-QAM= Quadrature Amplitude Modulation. The word "Quadrature" is short
-for "quadrature differential phase shift keying" =QDPSK
-
-
-
-
-!!26.3 Historical Overview
-
-
-!Teletypes and dumb terminals
-
-
- Prior to 1960, 110 bps ( .11) modems were used for teletype
-machines (like an electric typewriter only much more noisy). Then in
-1960 AT$amp;T came out with a 300 bps modem (for use on it's phone
-system). Such slow (and expensive modems) were later mainly used
-for transmitting data between mainframe computers or for connecting a
-dumb terminal to a mainframe computer over phone lines. Many dumb
-terminals didn't even have a screen display, but printed on paper
-instead.
-
-
-
-
-!PCs and BBSs
-
-
-With the advent of the personal computer (PCs) in the early 1980s,
-the PC was used like a dumb terminal for connecting to mainframes.
-But now files could be transferred and one PC could connect to
-another.
-
-
-The 1980s saw the rise of the Bulletin Board System (BBS). The public
-could dial up a BBS with a modem and then downloadable free software,
-participate in discussions on various topics, play on-line games, etc.
-It was something like visiting a large Internet site. Many BBSs would
-have a monthly charge but some were run by volunteers and were free.
-Many companies established BBSs for customers that contained support
-information, catalogs, etc. In the early 1990s, BBSs were booming.
-By the mid 1990s some even offered Internet connections. For some
-history of BBSs see
-Sysops' Corner: History of BBSing
-
-
-
-!The Internet
-
-
-Then came the advance of Internet in the mid 1990s which resulted
-in the demise of the BBSs near the end of the 1990s. Some BBSs became
-websites, but when BBSs were dying in droves, websites were quite
-expensive so most BBSs just disappeared. Also, the public was
-unwilling to pay for using websites like they previously paid for the
-use of BBSs. There were such a huge number of free websites to visit
-that subscription BBSs were no longer competitive.
-
-
-Modems permitted the public to connect to the Internet. In the 1990s
-Modems became fast, cheap and widely used. Then in the late 1990s,
-faster non-analog "modems" appeared: ISDN, DSL, and cable. The
-history of these isn't in this HOWTO.
-
-
-
-
-!Speeds
-
-
-Before V.32 (9600 bps), modems typically had speeds of 300 to 2400
-bps. Some super fast ones had much higher speeds (such as 19.2k bps)
-and used non-standard protocols. To utilize these "fast" ones, both
-modems for a connection needed to support the same proprietary protocol
-which often meant that they must be the same brand.
-
-
-Prior to the V.42 standard for error correction and the V.42bis (1990)
-standard for data compression, the MNP standards were usually used for
-both error correction and data compression. An X.PC error correction
-standard was used on some commercial data networks. Compression and
-error correction were available on some 2400 bps modems.
-
-
-From 1960 to 1980 most modems only had a speed of 300 bps (which was
-also 300 baud). This is only .3kbps. Modern modems are over 100
-times faster. Some old-slow modems are still in use so they are not
-really "antique" quite yet.
-
-
-
-
-!!26.4 Proprietary protocols, etc.
-
-
-
- These were used in order to obtain higher speeds before more
-standardized higher speeds became established. The modem at the other
-end needs to support the same protocol for this to work. The dates
-shown below may be only approximate.
-
-
-
-
-
-* PEP (Packetized Ensemble Protocol 1985): 18k (at best).
-*
-
-* Hayes Express 96: 9.6k (Hayes 1987)
-*
-
-* HST: 9.6k (US Robotics 1986)
-*
-
-* HST: 14.4k (US Robotics 1989)
-*
-
-* HST: 16.8k (US Robotics 1992)
-*
-
-* V.32 terbo: 19.2k (AT$amp;T 1993)
-*
-
-* V.!FastClass: 28.8k (Rockwell 1993)
-*
-
-* X2 :57.3k (US Robotics 1997)
-*
-
-* K56: Flex 57.3k (Rockwell 1997)
-*
-
-The PEP used as much bandwidth as feasible by splitting the spectrum
-into as many as 512 sub-bands. It was supported by Ven-Tel's
-Pathfinder and Telebit's Trailblazer.
-
-
-
-
-!! 26.5 Autobauding
-
-
-
-This term has a few different meanings. In general it means either
-the automatic adjustment of modem-to-modem speed or of
-modem-to-serial_port speed.
-
-
-
-
-!!26.6 Modem-to-modem Speed
-
-
-
-Modern modems negotiate the modem-to-modem speed and protocol when
-they first connect to each other and normally connect to each other at
-the highest possible speed. If one side can't negotiate, the other
-side should accept whatever speed and protocol that the fixed side has
-available. Except that some modern modems may no longer support some
-of the antique protocols. During negotiations, one modem often must
-use a lower speed than its maximum in order to connect with the other
-modem. This is sometimes called "fallback" since one modem falls back
-to a lower speed (although it never really used its higher speed
-modem-to-modem). This is also called "autobauding" or "automode".
-Sometimes fallback also happens when both modems automatically lower
-their speed due to a noisy line. Register S37 in a modem is normally
-set to enable autobauding but may also be set for a fixed
-modem-to-modem speed in some modems.
-
-
-Early modems didn't have such autobauding or fallback. If you have
-such a modem, it will likely work OK if the other modem you connect to
-is a modern one that can adjust it's speed and protocol to yours. But
-a problem arises if both modems which want to communicate with each
-other are both antique and don't support automode. In this case
-they need to be manually set to the same speed and protocol.
-
-
-Even when this automode existed, there was sometimes a limited
-choices of speed (like only 1200/300 bps). In olden days (and even
-today), a computer dial-in site might have groups of phone lines,
-where each group which had a specific type modem on it which supported
-specific speeds and protocols. For example, if you had a 2400 bps
-Bell 212A modem then you simply only dialed in to certain telephone
-numbers that supported that speed and protocol. Once a site obtained
-modems that could support a wider variety of speeds and protocols,
-then there was no need to have different groups of phone lines.
-
-
-
-
-!!26.7 Modem-to-serial_port Speed
-
-
-!Same speed required
-
-
- For old modems (mostly under 9600 bps) the modem-to-serial_port
-speed had to be the same as the modem-to-modem speed. This was
-because data flowed straight thru the modem without "speed buffering"
-(storing bytes) inside the modem. This meant that both the modem's
-serial port and the computer's serial port had to be set to this
-speed. That is, both ends of the serial cable had to be set for this
-speed.
-
-
-One might erroneously reason that if the serial port speed was higher
-than the modem-to-modem speed, all would work OK since then there
-would be no bottleneck in the serial line. This works OK in the
-direction from the modem to the PC since a higher speed line can have
-a lower thruput speed due to time spacing between bytes. But disaster
-strikes for the flow from the PC to the modem since it would flow at a
-speed faster than the modem could transmit the data. Data would be
-lost since there is no speed buffering.
-
-
-
-
-!Equalizing speed
-
-
-If a modem had only one modem-to-modem speed (or was set by
-software or physical switches to only operate at one speed), then this
-wasn't a problem since one would just set the PCs serial port for this
-speed. Even if the modem had various modem-to-modem speeds which were
-set by negotiations with the other modem, there was no problem in
-setting the modem's serial port speed correctly. It would simply set
-this port speed to it's current modem-to-modem speed. Another way
-make the speeds equal is for the modem to detect the PC's serial port
-speed and then set it's modem-to-modem speed the same. This will be
-explained later.
-
-
-But setting the computer's serial port to the modem-to-modem speed was
-a problem since the modem has no way to directly give commands to the
-PCs serial port to change it's speed. Only system software can do
-that. The modem finds out what speed to use based on negotiations
-with the other modem and thus the change of this serial port speed
-can't be done in advance. How does the modem communicate its
-chosen modem-to-modem speed to the system software?
-
-
-
-
-!Use "CONNECT" message to set speed
-
-
-Here's one way to do it. Consider the case of a dial-in modem that
-others dial into. A getty program will be used to send login prompt
-thru the modems to users. Getty will also be the system software that
-changes the speed of the serial port and the modem will tell getty
-what modem-to-modem speed it's using. The modem will do this by
-sending getty a "CONNECT" message giving the modem-to-modem speed.
-
-
-But there's one problem here. How does one insure that the "CONNECT"
-message, which the modem sends to getty via the serial port, is sent
-at the same speed as the PC's serial port? Here's how it's done.
-
-
-When the modem is first sent an init string, the modem detects the
-speed of the computer's serial port and sets it's modem-to-serial_port
-speed to this value. Now it can communicate with getty. The modem
-senses the serial speed by examining the "AT" at the beginning of the
-string. This is sometimes also called autobauding. For modern
-modems, this same modem-to-serial port speed is always retained, even
-after the modem connects to another modem and regardless of what the
-modem-to-modem speed is. But for our old modem this serial speed
-needs to be equal the modem-to-modem speed.
-
-
-So now, for example, getty gets a CONNECT 2400 from the modem and
-switches the PC's serial port speed to 2400. The modem also switches
-its serial port speed to 2400. Now both ends of the modem serial
-cable are at 2400 and there is no speed mismatch. Then getty sends a
-login prompt out over the phone line thru the modems. The 2400 bps is
-now both the modem-to-modem speed and the modem-to-serial_port speed.
-Problem solved. Mgetty can do this by configuring it for
-"autobauding".
-
-
-For dialing out, the same method is used, but now the communication
-software must handle it instead of getty.
-
-
-
-
-!Setting modem-to-modem speeds by the serial speed
-
-
-Another way to switch modem-to-modem speed was by using a
-modem feature where the modem would set its modem-to-modem speed to be
-the same as the modem-to-serial port speed it detected. The Bn AT
-commands would enable this and determine what protocol to use for each
-speed. So with this enabled, setting the serial speed by the computer
-would also set the modem-to-modem speed to be the same. This should
-result in this modem being inflexible in any speed negotiations
-between the modems.
-
-
-
-
-!Manual bauding
-
-
-Another (but cruder) way to solve the serial speed problem when
-dialing in to a site was to get the remote site to change it's
-modem-to-modem speed to match your serial port speed. It works like
-this: The person trying to login over a modem connection doesn't see
-any login prompt because of a speed mismatch. So the person trying to
-login hits a "break" key to send a break signal over the phone line
-(via modem) to getty on the remote machine. A break signal will
-always get through even if there is a speed mismatch in a serial line.
-
-
-The remote getty gets this break signal and switches the remote's
-serial port to the next speed as specified in its getty configuration
-file. This new remote serial port speed causes the remote modem to
-switch to the same modem-to-modem speed as previously configured by
-the ATB command. Then the local modem would transmit the login prompt
-over the local's serial line at this speed. If one doesn't see a
-login prompt, then they hit the break key again and a new speed is
-tried. This continues until the remote getty finally gets the speed
-correct (equal to the serial speed set on the local PC) and a login
-prompt finally displays. Note that PC keyboards have no "break" key
-but dumb terminal keyboards did. Mgetty, agetty, and uugetty can do
-this obsolete break method and it's called "manual bauding".
-
-
-
-
-!Unsupported speeds
-
-
-In Linux, there's a problem if the speed is set to a speed not
-supported by Linux's serial port (for example 7200 bps). You may dial
-out and connect at 7200 bps (both modem-to-modem and
-modem-to-serial_port speed) but you only see garbage since Linux
-doesn't support 7200 on the serial port. Once you connect there is no
-simple way to hang up because even the +++ escape sequence can't be
-sent to the modem over a 7200 baud interface.
-
-
-
-
-!Modern modems, speed buffering
-
-
-To dial out by the antique method using some modern modems set
-&Q0 N0 and S17=5 (if you want 1200 bps). Some of the S17 settings
-vary with the make of modem. S17=0 is the default that connects the
-modern way at the highest speed supported.
-
-
-Modern modems can use almost any serial port speed and it doesn't
-depend at all on modem-to-modem speed. To do this they employ speed
-buffering and flow control. Speed buffering means that modems have
-buffers so that there can be a difference between the modem-to-modem
-speed and the modem-to-serial_port speed. If the flow entering the
-modem is faster than the flow exiting it, the excess flow is simply
-stored in a buffer in the modem. Then to prevent the buffer from
-overflowing, the modem sends a flow control signal to stop the input
-flow to the modem. This is true for either direction of flow. See
-Flow Control for more details.
-
-
-
-
-!!26.8 Before AT Commands
-
-
-
- Hayes introduced the AT command set and other modem manufacturers
-adopted it as a standard. Before the AT commands, many modems used
-dip switches to configure the modem. Another command set is the CCITT
-V.25bis command set. Some modems supported both CCITT and AT
-commands. The CCITT V.25bis also specifies how Synchronous
-modem-to-serial_port communication is to take place using either the
-ASCII or 8-bit EBCDIC character sets.
-
-
-
-
-!!26.9 Data Compression and Error Correction
-
-
-
- MNP 2, 3, or 4 were used for error correction. MNP 5 was
-compression. Modern modems generally use V42 (error correction) and
-V42bis (compression). Many modems support both MNP and V42
.
-
-
-END OF Modem-HOWTO
-----
+Describe [HowToModemHOWTO]
here.