This commit is contained in:
gferg 2001-08-14 22:45:16 +00:00
parent 01a9ceb0c9
commit 884071f8fb
4 changed files with 677 additions and 410 deletions

View File

@ -3,11 +3,12 @@
<title> Modem-HOWTO </title> <title> Modem-HOWTO </title>
<author>David S.Lawyer <author>David S.Lawyer
<tt><url url="mailto:dave@lafn.org"></tt> <tt><url url="mailto:dave@lafn.org"></tt>
<date> v0.19, July 2001 <date> v0.20, August 2001
<!-- <!--
Change log: + => added more info ++ => added new topic Change log: + => added more info ++ => added new topic
v0.20 August 2001: fixed typo: done->down, more linmodems
v0.19 July 2001: Dialing Out while Waiting for a Call. Antique modems v0.19 July 2001: Dialing Out while Waiting for a Call. Antique modems
using "CONNECT" to set DTE speed. using "CONNECT" to set DTE speed.
v0.18 June 2001 new section: modem doubling (bonding, teaming, multilink) v0.18 June 2001 new section: modem doubling (bonding, teaming, multilink)
@ -164,12 +165,14 @@ modem situation is rapidly changing (and since I'm still learning).
Your problem might be solved in the latest version. It will be 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 available to browse and/or download at LDP mirror sites. For a list
of such sites see: <url url="http://www.linuxdoc.org/mirrors.html"> of such sites see: <url url="http://www.linuxdoc.org/mirrors.html">
If you only want to quickly compare the date of this the version v0.19, July 2001 If you only want to quickly compare the date of this the version v0.20, August 2001
with the date of the latest version go to: with the date of the latest version go to:
<url url="http://www.linuxdoc.org/HOWTO/Modem-HOWTO.html"> <url url="http://www.linuxdoc.org/HOWTO/Modem-HOWTO.html">
<sect1> New in Recent Versions <sect1> New in Recent Versions
<p>v0.19 July 2001: Dialing Out while Waiting for a Call. Antique modems <p>
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. using "CONNECT" to set DTE speed.
v0.18 June 2001 new section: modem doubling (bonding, teaming, v0.18 June 2001 new section: modem doubling (bonding, teaming,
multilink)<newline> multilink)<newline>
@ -227,9 +230,9 @@ need to check the BIOS setup menu to determine this. Plug in the
power cord to provide power to the modem. See <ref id="all_modems" power cord to provide power to the modem. See <ref id="all_modems"
name="All Modems"> for further instructions. name="All Modems"> for further instructions.
<sect2> Internal Modems (Both ISA and PCI) <sect2> Internal Modems (ISA, PCI and AMR)
<p> The first thing to do is to make sure that the modem will work <p> The first thing to do is to make sure that the modem will work
under Linux since (as of late 2000) most newer modems don't. See <url under Linux since (as of 2001) many modems don't. See <url
url="http://www.idir.net/~gromitkc/winmodem.html" name="modem list">. url="http://www.idir.net/~gromitkc/winmodem.html" name="modem list">.
If the modem is both PnP and directly supported by the serial driver 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 (kernel 2.4 +) then there is no configuring for you to do since the
@ -243,7 +246,7 @@ 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 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 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 with a mounting screw (usually 3mm, .5mm pitch --don't use the wrong
size). size).
If you have a modem that is not a winmodem (see <ref id="soft_modem" If you have a modem that is not a winmodem (see <ref id="soft_modem"
name="Software-based Modems (winmodems)">) the serial driver may name="Software-based Modems (winmodems)">) the serial driver may
@ -273,10 +276,11 @@ 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 --dumpregs" should show it. If you need to set or change them use
"isapnp". Use the "pnpdump" to see what changes are possible. "isapnp". Use the "pnpdump" to see what changes are possible.
<sect2> PCI Modems: What IOs and IRQs have been set? <sect2> PCI (and AMR) Modems: What IOs and IRQs have been set?
<p> For PCI, the BIOS almost always sets the IRQ and may set the <p> For PCI, the BIOS almost always sets the IRQ and may set the IO
IO address as well. To see how it's set use "lspci -v" or look in address as well. To see how it's set use "lspci -v" (best) or look in
/proc/bus/pci. If more than one IO address is shown, the first one is /proc/bus/pci. The modem's serial port is 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 more likely to be it. You can't change the IRQ (at least not with
"setpci") If you must, change the IO address with "setpci" by "setpci") If you must, change the IO address with "setpci" by
changing the BASE_ADDRESS_0 or the like. The _0 (or _1) after changing the BASE_ADDRESS_0 or the like. The _0 (or _1) after
@ -307,15 +311,16 @@ that came with the modem.
communication program such as minicom or a ppp program (such as 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 wvdial). Set the serial port speed to a baud rate a few times higher
than the bit rate of your modem. See <ref id="speed_table" than the bit rate of your modem. See <ref id="speed_table"
name="Speed Table"> for the "best" speeds to use. Tell it the full name="Speed Table"> for more details on the "best" speeds to use.
name of your serial port such as /dev/ttyS1. Set hardware flow Tell it the full name of your serial port such as /dev/ttyS1. Set
control (RTS/CTS). hardware flow control (RTS/CTS).
Minicom is the easiest to set up and to use to test your modem. But 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 if you are lucky you may get ppp to work the first time and not need
to bother with minicom. With minicom you may simply type the command: to bother with minicom. With minicom you may check to see if your
AT and hit enter (before dialing) to check that your modem is there modem is there (and ready to dial). Once you've set up minicom,
and responds with OK. type the command: AT, hit enter and you should see an "OK" response
which comes direct from the modem.
<sect> Modems for a Linux PC <sect> Modems for a Linux PC
<sect1> External vs. Internal <label id="int_vs_ext"> <sect1> External vs. Internal <label id="int_vs_ext">
@ -336,20 +341,23 @@ computer.
Unfortunately most external modems have no switch to turn off the 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 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 electricity even when turned off (unless you unplug the power supply
from the wall). Each watt they draw costs you about $1/yr. Another from the wall). Each watt they draw usually costs you over $1/yr.
possible disadvantage of an external is that you will be forced to use Another possible disadvantage of an external is that you will be
an existing serial port which may not support a speed of over 115,200 forced to use an existing serial port which may not support a speed of
bps (although as of late 1998 and late 2000 most new internal modems over 115,200 bps (although as of late 1998 and late 2000 most new
don't either --but some do). If a new internal modem had say a 16650 internal modems don't either --but some do). If a new internal modem
UART it would put less load on the CPU. had say a 16650 UART it would put less load on the CPU.
Internal modems present a special problem for Linux, but will work Internal modems present a special problem for Linux, but will work
just as well as external modems provided you avoid the high percentage just as well as external modems provided you avoid the ones that will
of them that will work only for MS Windows, and also provided that you work only for MS Windows. Configuring them ranges from very easy
spend time (sometimes a lot of time) to configure them correctly. (automatically) to difficult depending on both the modem, your skills,
Some of the modems which will work only under MS Windows are, and how easy it is to find info about your modem --info that is not
unfortunately, not labeled as such. If you buy a new one, make sure all in this HOWTO. Some of the modems which will work only under MS
that you can return it for a refund if it will not work under Linux. 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 While most new modems are plug-and-play you have various ways to deal
with the PnP configuring: with the PnP configuring:
@ -358,19 +366,17 @@ with the PnP configuring:
<item> Use the "isapnp" program <item> Use the "isapnp" program
<item> Let a PnP BIOS do the configuring <item> Let a PnP BIOS do the configuring
</itemize> </itemize>
Each of the above has shortcomings. Isapnp documentation is difficult The last 2 items of the above have shortcomings. Isapnp documentation
to understand although reading the Plug-and-Play-HOWTO (long) will aid is difficult to understand although reading the Plug-and-Play-HOWTO
in understanding it. If you want the PnP BIOS to do the configuring, (long) will aid in understanding it. If you want the PnP BIOS to do
all you need to do is to make sure that it knows you don't have a PnP the configuring, all you need to do is to make sure that it knows that
operating system. But it may not do it correctly and you may need to you don't have a PnP operating system. But it may not do it correctly
find out what it's done see <ref id="io-irq_in_hdw" name="What is set and you may need to find out what it's done see <ref
in my serial port hardware?">. id="io-irq_in_hdw" name="What is set in my serial port hardware?">.
There are many Linux users that say that it's a lot simpler just to In the late 1990s many Linux users said that it's a lot simpler just
get an external modem and plug it in. But since new peripherals are to get an external modem and plug it in. But if you get the right
PnP today, you will sometime need to deal with it, so why delay the internal modem it may be just as easy.
inevitable? Still, the most expedient (and expensive) solution is an
external modem (if you have a free serial port).
<sect1> External Modems <sect1> External Modems
<sect2> PnP External Modems <sect2> PnP External Modems
@ -386,11 +392,12 @@ 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 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 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 operating system would then know that you have a modem on a certain
port and would also know the model number. Then you might not need to port and would also know the id number. Then you might not need to
configure application programs by telling them what port the modem is configure application programs by telling them what port the modem is
on (such as /dev/ttyS2 or COM3). But since you don't have such a PnP on (such as /dev/ttyS2 or COM3). But since you don't have such a PnP
operating system you will need to configure your application program operating system you may need to configure your application program
manually by giving it the /dev id (such as /dev/ttyS2). manually by giving it the /dev id (such as /dev/ttyS2). Some programs
can probe for a modem on various ports.
<sect2> Cabling & Installation <sect2> Cabling & Installation
<p> Connecting an external modem is simple compared to connecting <p> Connecting an external modem is simple compared to connecting
@ -403,7 +410,7 @@ 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 you connect it to, then you are ready to start your communication
program and configure the modem itself. program and configure the modem itself.
<sect2> What the Lights (LED's) Mean (for some modems) <sect2> What the Lights (LED's) Mean (for some external modems)
<p> <p>
<itemize> <itemize>
<item> TM Test Modem <item> TM Test Modem
@ -435,17 +442,19 @@ modems (actually the serial port part of the modems) don't use jumpers
for setting these but instead are configured by sending configuration for setting these but instead are configured by sending configuration
commands to them over the bus inside the computer. Such 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 commands can be sent by a PnP BIOS, by the isapnp program (for the ISA
bus only), or by newer serial device drivers for certain modems. Under bus only), or by newer serial device drivers for certain modems.
Linux you have a choice of how to configure the ones that don't get Under Linux you may have a choice of how to configure the ones that
io-irq configured by the serial driver. don't get io-irq configured by the serial driver.
<enum> <enum>
<item> Use "isapnp" which may be run automatically at every boot-time <item>ISA bus modems: Use "isapnp" which may be run automatically at
every boot-time
<item> Let a PnP BIOS do it, and then maybe tell setserial the IO and <item> Let a PnP BIOS do it, and then maybe tell setserial the IO and
IRQ IRQ
</enum> </enum>
<sect1> Software-based Modems (winmodems) <label id="soft_modem"> <sect1> Software-based Modems (winmodems, linmodems)
<label id="soft_modem">
<sect2> Introduction software modems (winmodems) <sect2> Introduction software modems (winmodems)
<p> Software modems turn over some (or even almost all) of the work of <p> 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 the modem to the main processor (CPU) chip of your computer (such as a
@ -464,22 +473,44 @@ A third name for a software modem (used by MS) is "driver-based
modem". The conventional hardware-based modem (that works with Linux) modem". The conventional hardware-based modem (that works with Linux)
doesn't need a modem driver (but does use the Linux serial driver) doesn't need a modem driver (but does use the Linux serial driver)
After about mid-1998 most new internal modems were winmodems and would After about mid-1998 most new internal modems were winmodems and would
work only for MS Windows. work only for MS Windows. That situation is changing.
<sect2> Linmodems <sect2> Linmodems
<p> Finally in late 1999 two software-based modems appeared that could <p> Finally in late 1999 two software-based modems appeared that could
work under Linux and were sometimes called "linmodems". Lucent work under Linux and were sometimes called "linmodems". Lucent
Technologies (LT) unofficially released a Linux binary-only code to Technologies (LT) unofficially released a Linux binary-only code to
support its PCI modems. PC-TEL (includes "Zoltrix") introduced a new support most of its PCI modems. PC-TEL (includes "Zoltrix")
software-based modem for Linux. There is a GPL'ed driver being introduced a new software-based modem for Linux. There is a GPL'ed
developed for the Modem Silicon Operation MD563X HaM chipset (nee driver for Intel's (Modem Silicon Operations) MD563x HaM chipset (nee
Ambient division of Cirrus Logic). Will other companies follow these Ambient division of Cirrus Logic). Will other companies follow these
leads and thus create "linmodems"? For a list of modems which leads and thus create "linmodems"? Yes. As of mid-2001 there are
work/don't_work under Linux see <url drivers for: Conexant HSF, Motorola SM56, ESS (ISA only), and IBM's
Mwave for Thinkpads 600+.
What percent of winmodems 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 may be some support for
these by the time you read this. So over half the chips seem to be
supported. But what percentages of such chips sold will work with
Linux? I'm guessing it's somewhat over 50%. Let me know if you find
an estimate.
For a list of modems which work/don't_work under Linux see <url
url="http://www.idir.net/~gromitkc/winmodem.html" name="modem list">. url="http://www.idir.net/~gromitkc/winmodem.html" name="modem list">.
Links to "linmodem" drivers may also be found there. A project to get Links to "linmodem" drivers may also be found there. A project to get
winmodems to work under Linux is at <url url="http://linmodems.org">. winmodems to work under Linux is at <url url="http://linmodems.org">.
They also have a mailing list. They also have a mailing list.
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 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.
There is some effort underway at reverse-engineering with at least one There is some effort underway at reverse-engineering with at least one
report of a winmodem that has been made to work under Linux (but not report of a winmodem that has been made to work under Linux (but not
@ -517,11 +548,12 @@ computer.
The difference between the two types of software-based modems is where The difference between the two types of software-based modems is where
these digital waveshapes are processed (generated and interpreted). these digital waveshapes are processed (generated and interpreted).
In the all-software modem this waveshape processing is done in the CPU In the all-software modem this waveshape processing is done in the CPU
using a Host Signal Processor (HSP). In the controllerless modem it's using a Host Signal Processor (HSP). In the controllerless modem
done in the modem but all other digital work is done by the CPU (data it's done in the modem but all other digital work is done by the CPU
compression, AT-commands, etc.) For example the Rockwell HCF (Host (data compression, AT-commands, etc.) For example the Rockwell HCF
Controlled Family) does this. If the software that does these tasks (Host Controlled Family) does this. If the software that does these
could be ported to Linux and then there wouldn't be a major problem. tasks could be ported to Linux and then there wouldn't be a major
problem.
<sect2> Is this modem a software modem? <sect2> Is this modem a software modem?
<p> How do you determine if an internal modem will work under Linux? <p> How do you determine if an internal modem will work under Linux?
@ -543,32 +575,38 @@ 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 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 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 work only if there exists a Linux driver for it. Saying that it only
works with Windows is also bad news. works with Windows is also bad news. However, even in this case there
may be a Linux driver for it.
Otherwise, it may work under Linux (without a driver) 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.
Otherwise, it may work under Linux if it fails to state explicitly
that you must have Windows. By saying it's "designed for Windows" it
may only mean that it fully supports Microsoft's plug-and-play which
is OK since Linux uses the same plug-and-play specs (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.
<sect2> Should I get a software modem? <sect2> Should I get a software modem?
<p> Only if you know there is a Linux driver for it that works OK. <p> 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 Besides the problems of getting a driver, what are the pros and cons
cons of software modems? Since the software modem uses the CPU to do of software modems? Since the software modem uses the CPU to do some
much of its work, the software modem requires less on-board (or all) of its work, the software modem requires less on-board
electronics and thus costs less. At the same time, the CPU is heavily electronics and thus costs less. At the same time, the CPU work load
loaded by the modem which may result in slower operation. This is is increased by the modem which may result in slower operation.
especially true if other CPU-intensive tasks are running at the same
time the modem is being used. Of course when you're not using the 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. software modem there is no degradation in performance at all.
Is the cost savings worth it? In some cases yes, especially if you Is the cost savings worth it? In many cases yes, especially if you
seldom use the modem and/or are not running any other CPU intensive tasks don't use the modem much and/or are not running any other CPU
when the modem is in use. Thus there are cases where use of a intensive tasks when the modem is in use. The savings in modem cost
software modem is economically justified. The savings in modem cost
could be used for a better CPU which would speed things up a little. 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 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 efficiently than a general purpose CPU (except that it's not efficient
@ -578,20 +616,30 @@ CPU :-).
<sect1> PCI Modems <label id="PCIm"> <sect1> PCI Modems <label id="PCIm">
<p> A PCI modem card is one which inserts into a PCI-bus slot on the <p> A PCI modem card is one which inserts into a PCI-bus slot on the
motherboard of a PC. While most PCI winmodems will not work under motherboard of a PC. While many PCI winmodems will not work under
Linux (no driver available) other PCI modems mostly work under Linux. Linux (no driver available) other PCI modems will work under Linux.
The Linux serial driver is being modified to support certain PCI modem The Linux serial driver is being modified to support certain PCI modem
cards (but not winmodems). If the Linux serial driver supports it cards (but not winmodems). If the Linux serial driver supports it
then the driver will set up the PnP configuration for you. See <ref then the driver will set up the PnP configuration for you. See <ref
id="PCI_ser_conf" name="PCI Bus Support Underway"> If no special id="PCI_ser_conf" name="PCI Bus Support Underway"> If no special
support is in the Linux serial driver but it may still work OK but you support is in the Linux serial driver it may still work OK but you
have to do some work to configure it. have to do some work to configure it.
<sect1>AMR Modems
<p>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.
<sect1> Which Internal Modems might not work with Linux <label id="m_to_avoid"> <sect1> Which Internal Modems might not work with Linux <label id="m_to_avoid">
<p> <p>
<itemize> <itemize>
<item> <ref id="soft_modem" name="Software-based Modems (winmodems)"> <item> <ref id="soft_modem" name="Software-based Modems (winmodems)">
only work in rare cases where a Linux driver is available. Only roughly half have a Linux driver available.
<item> <ref id="dsp_" name="MWave and DSP Modems"> might work, but only if <item> <ref id="dsp_" name="MWave and DSP Modems"> might work, but only if
you first start Windows/Dos each time you power on your PC you first start Windows/Dos each time you power on your PC
<item> Modems with <ref id="rpi_" name="RPI (Rockwell)"> drivers work <item> Modems with <ref id="rpi_" name="RPI (Rockwell)"> drivers work
@ -599,19 +647,22 @@ have to do some work to configure it.
</itemize> </itemize>
<sect2> MWave and DSP Modems <label id="dsp_"> <sect2> MWave and DSP Modems <label id="dsp_">
<p> Such modems use DSP's (Digital Signal Processors) which are <p> Note that there's now a Linux driver for the ACP (Mwave) modem
programmed by driver which must be downloaded from the hard disk to used in IBM Thinkpads 600+. See the mini-HOWTO: ACP-Modem.
the DSP's memory just before using the modem. Unfortunately, such
downloading is normally done by Dos/Windows programs (which doesn't Such modems use DSPs (Digital Signal Processors) which are programmed
work for Linux). But there has been substantial success in getting by driver which must be downloaded from the hard disk to the DSPs
some of these modems to work with Linux. For example, there is a memory just before using the modem. Unfortunately, such downloading
Linux driver available to run a Lucent (DSP) modem. 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 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 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 packaging), but the program that runs the DSP is stored inside the
modem. This is not a "DSP modem" in the sense of this section. An modem. This is not a "DSP modem" in the sense of this section. An
example of a DSP modem is IBM's Aptiva MWAVE. example of a DSP modem is the old IBM's Aptiva MWAVE.
If a DSP modem modem simulates a serial port, then it may be usable If a DSP modem modem simulates a serial port, then it may be usable
with Linux provided you're willing/able to boot from DOS. You must with Linux provided you're willing/able to boot from DOS. You must
@ -746,6 +797,7 @@ products here so please do comparison shopping before buying anything.
Nov. '99: 2 serial drivers concurrently NG Nov. '99: 2 serial drivers concurrently NG
Sept. '00: data flow diagram Sept. '00: data flow diagram
Dec. '00 flow control + Dec. '00 flow control +
July "01 done -> down
--> -->
<!-- ifdef MODEM_ --> <!-- ifdef MODEM_ -->
<p> You don't have to understand the basics to use and install a <p> You don't have to understand the basics to use and install a
@ -1066,7 +1118,7 @@ id="speed_" name="What Speed Should I Use">.
<sect1> Flow Control <label id="flow_control"> <sect1> Flow Control <label id="flow_control">
<p> Flow control means the ability to slow done the flow of bytes in a <p> 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 wire. For serial ports this means the ability to stop and then
restart the flow without any loss of bytes. Flow control is needed restart the flow without any loss of bytes. Flow control is needed
for modems to allow a jump in instantaneous flow rates. for modems to allow a jump in instantaneous flow rates.
@ -1624,11 +1676,12 @@ which are from the BIOS. This is how it was before Linux started.
Setserial can't change it but isapnp or pciutils can and starting with Setserial can't change it but isapnp or pciutils can and starting with
kernel 2.4, these will be built into the serial driver. kernel 2.4, these will be built into the serial driver.
One crude method is try probing with setserial using the "autoconfig" Using "scanport" will probe all I/O ports and will indicate what it
option. You'll need to guess the addresses to probe at. See <ref thinks may be serial port. After this you could try probing with
id="set_serial" name="What is Setserial">. For a PCI serial port, use setserial using the "autoconfig" option. You'll need to guess the
the "lspci" command (for kernels &lt;2.2 look at /proc/pci). If your addresses to probe at (using clues from "scanport"). See <ref
serial port is is Plug-and-Play see the next two subsections. id="set_serial" name="What is Setserial">. If your
serial port is is ISA Plug-and-Play or PCI see the next two subsections.
For a port set with jumpers, its how the jumpers were set. If the For a port set with jumpers, its how the jumpers were set. If the
port is not Plug-and-Play (PnP) but has been setup by using a DOS port is not Plug-and-Play (PnP) but has been setup by using a DOS
@ -1643,20 +1696,23 @@ can reach a state where it doesn't have any IO address or IRQ and is
in effect disabled. It should still be possible to find the port in effect disabled. It should still be possible to find the port
using the <tt/pnpdump/ program. using the <tt/pnpdump/ program.
For Plug-and-Play (PnP) on the ISA bus one may try the <tt/pnpdump/ For a PCI serial port, use the "lspci" command (for kernels &lt;2.2
look at /proc/pci).
For an ISA Plug-and-Play (PnP) port one may try the <tt/pnpdump/
program (part of <tt/isapnptools/). If you use the --dumpregs option program (part of <tt/isapnptools/). If you use the --dumpregs option
then it should tell you the actual IO address and IRQ set in the port. then it should tell you the actual IO address and IRQ set in the port.
The address it "trys" is not the device's IO address, but a special The address it "trys" is not the device's IO address, but a special
For PnP ports checking on how it's configured under DOS/Windows may not For PnP ports, checking on how it's configured under DOS/Windows may
be of much help. Windows stores its configuration info in its (or may not) imply how it's under Linux. Windows stores its
Registry which is not used by Linux. It may supply the BIOS's configuration info in its Registry which is not used by Linux so they
non-volatile memory with some info but it may not be kept in sync with are not necessarily configured the same. If you let a PnP BIOS
the current Window configuration in the Registry ?? If you let a PnP automatically do the configuring when you start Linux (and have told
BIOS automatically do the configuring when you start Linux (and have the BIOS that you don't have a PnP operating system when starting
told the BIOS that you don't have a PnP operating system when running
Linux) then Linux should use whatever configuration is in the BIOS's Linux) then Linux should use whatever configuration is in the BIOS's
non-volatile memory. non-volatile memory. Windows also makes use of the same non-volatile
memory but doesn't necessarily configure it that way.
<sect1>Choosing Serial IRQs <label id="choose_IRQ"> <sect1>Choosing Serial IRQs <label id="choose_IRQ">
@ -2374,15 +2430,15 @@ 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. port address, any IRQ, and whatever uart type you would like to have.
Then the next time you type "setserial ..." it will display these Then the next time you type "setserial ..." it will display these
bogus values without complaint. They will also be officially bogus values without complaint. They will also be officially
registered with the kernel as seen by the "scanport" command. registered with the kernel as displayed (at the top of the screen) by
Of course the serial port driver will not work correctly (if at all) the "scanport" command. Of course the serial port driver will not
if you attempt to use such a port. Thus when giving parameters to work correctly (if at all) if you attempt to use such a port. Thus
"setserial" anything goes. Well almost. If you assign one port a when giving parameters to "setserial" anything goes. Well almost. If
base address that is already assigned (such as 3e8) it will not accept you assign one port a base address that is already assigned (such as
it. But if you use 3e9 it will accept it. Unfortunately 3e9 is 3e8) it will not accept it. But if you use 3e9 it will accept it.
already assigned since it is within the range starting at base address Unfortunately 3e9 is already assigned since it is within the range
3e8. Thus the moral of the story is to make sure your data is correct starting at base address 3e8. Thus the moral of the story is to make
before assigning resources with setserial. sure your data is correct before assigning resources with setserial.
While assignments made by setserial are lost when the PC is powered While assignments made by setserial are lost when the PC is powered
off, a configuration file may restore them (or a previous off, a configuration file may restore them (or a previous
@ -2395,7 +2451,13 @@ name="Configuration Scripts/Files">
<sect2> Probing <label id="probing_ss"> <sect2> Probing <label id="probing_ss">
<p> With appropriate options, <tt/setserial/ can probe (at a given I/O <p>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, <tt/setserial/ can probe (at a given I/O
address) for a serial port but you must guess the I/O address. If you 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 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 address it thinks ttyS2 is at (2F8). If you tell setserial that ttyS2
@ -2406,11 +2468,12 @@ 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 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 faster ways to attempt it such as wvdialconf to detect modems, looking
at very early boot-time messages, or using <tt>pnpdump at very early boot-time messages, or using <tt>pnpdump
--dumpregs</tt>. To try to detect the physical hardware use the -v --dumpregs</tt>. To try to detect the physical hardware use for
(verbose) and <tt/autoconfig/ command to <tt/setserial/. If the example :<newline>
resulting message shows a uart type such as 16550A, then you're OK. <tt>setserial /dev/ttyS2 -v autoconfig</tt><newline>
If instead it shows "<tt/unknown/" for the uart type, then there is If the resulting message shows a uart type such as 16550A, then you're
supposedly no serial port at all at that I/O address. Some cheap OK. If instead it shows "<tt/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 serial ports don't identify themselves correctly so if you see
"<tt/unknown/" you still might have a serial port there. "<tt/unknown/" you still might have a serial port there.
@ -2418,15 +2481,15 @@ 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 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 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 correct irq. In versions of setserial >= 2.15, the results of your
last probe test may be saved and put into the configuration file last probe test could be automatically saved and put into the
<tt>/etc/serial.conf</tt> which will be used next time you start configuration file <tt>/etc/serial.conf</tt> which will be used next
Linux. At boot-time when the serial module loads (or the like), a time you start Linux. At boot-time when the serial module loads (or
probe for UARTs is made automatically and reported on the screen. But the like), a probe for UARTs is made automatically and reported on the
the IRQs shown may be wrong. The second report of the same is the screen. But the IRQs shown may be wrong. The second report of the
result of a script which usually does no probing and thus provides no same is the result of a script which usually does no probing and thus
reliable information as to how the hardware is actually set. It only provides no reliable information as to how the hardware is actually
shows configuration data someone wrote into the script or data that set. It only shows configuration data someone wrote into the script
got saved in /etc/serial.conf. or data that got saved in /etc/serial.conf.
It may be that two serial ports both have the same IO address set in 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 the hardware. Of course this is not permitted but it sometimes
@ -2435,6 +2498,7 @@ are two. However if they have different IRQs, then the probe for IRQs
may show IRQ = 0. For me it only did this if I first used may show IRQ = 0. For me it only did this if I first used
<tt/setserial/ to give the IRQ a ficticious value. <tt/setserial/ to give the IRQ a ficticious value.
<sect2> Boot-time Configuration <label id="sets_boot_time"> <sect2> Boot-time Configuration <label id="sets_boot_time">
<p> When the kernel loads the serial module (or if the "module <p> When the kernel loads the serial module (or if the "module
equivalent" is built into the kernel) then only <tt/ttyS{0-3}/ are equivalent" is built into the kernel) then only <tt/ttyS{0-3}/ are
@ -3640,26 +3704,26 @@ different speeds, then they couldn't communicate with each other.
<!-- high_speed.H begin In Serial and Modem HOWTOs but some of the speed <!-- high_speed.H begin In Serial and Modem HOWTOs but some of the speed
section is unique to each HOWTO. section is unique to each HOWTO.
--> -->
<p> You need to find out the highest speed supported by your hardware. <sect2> Speeds over 115.2k
As of late 1998 most serial ports only supported speeds up to 115.2k <p> The top speed of 115.2k has been the standard speed since the
bps but as of 2001, most support higher speeds. Some 56k internal mid 1990's. By the year 2000, many serial ports supported higher
modems support 230.4k bps (but it may be hard to find out which ones speeds but Linux seldom used them due to lack of drivers. These
do). Recent Linux kernels support high speeds (over 115.2k) but you high-speed ports by default only support 115.2k and must have special
might have some problems using it because of one or both of the software to enable the higher speeds. Today (2001) almost all new
following reasons: serial ports support speeds of 230.4k and 460.8k. Some also support
921.6k. Unfortunately, to get these speeds you need to compile the
kernel with a special patch and it seems the patch doesn't support the
2.4 kernels yet.
<enum> For internal modems, only a minority of them advertise that they
<item> It may require a special driver or a patch to the serial driver support speeds of over 115.2k for their built-in serial ports.
<item> Older versions of an application program (or stty) may not Will shsmod support these ??
support the high speed.
<item> Setserial may show the wrong speed unless you use the baud_base
option. Even so, high speed will still work but the reported speed
will be wrong.
</enum>
To support the higher speeds you may get a shsmod (Super High Speed) The patch to support high-speed is called shsmod (Super High Speed).
patch for the serial driver. There is also a module for the VIA There are both Windows and Linux versions of this patch. See <url
VT82C686 chip <url url="www.kati.fi/viahss/">. url="http://www.devdrv.com/shsmod">. For Linux, much of the
documentation is only in Japanese. There is also a module for the
VIA VT82C686 chip <url url="www.kati.fi/viahss/">.
<sect2> How speed is set in hardware: the divisor and baud_base <label <sect2> How speed is set in hardware: the divisor and baud_base <label
id="divisor_"> id="divisor_">
@ -3752,12 +3816,11 @@ lower so long as it's above the modem speed.
<sect>Communications Programs And Utilities<label id="comms"> <sect>Communications Programs And Utilities<label id="comms">
<p> While PPP is used for Internet access you also need a dialer <p> While PPP is used for Internet access you also need a dialer
program that is designed to work with PPP. Such a dialer program will program (or script) that will work with PPP. Such a dialer program
dial a phone number. When the other side answers the phone then three will dial a phone number. When the other side answers the phone then
things happen: PPP is started at both ends and you get logged in three things happen: PPP is started at both ends and you get logged in
(often automatically). The exact sequence of these 3 events may vary. automatically. The exact sequence of these 3 events may vary. Dialer
Dialer programs for ppp include wvdial, chap scripts, kppp, and programs for ppp include wvdial, chap scripts, kppp, and gnome-ppp.
gnome-ppp.
There are also other dialer programs which can dial out directly (thru There are also other dialer programs which can dial out directly (thru
a modem) to local libraries, etc. This isn't the Internet. a modem) to local libraries, etc. This isn't the Internet.

View File

@ -3,10 +3,11 @@
<title> Plug-and-Play-HOWTO </title> <title> Plug-and-Play-HOWTO </title>
<author>David S.Lawyer <author>David S.Lawyer
<tt><url url="mailto:dave@lafn.org"></tt> <tt><url url="mailto:dave@lafn.org"></tt>
<date> v1.02, July 2001 <date> v1.03, August 2001
<!-- <!--
Change log: Change log:
v1.03 August 2001: error messages, boot-prompt parameters
v1.02 July 2001: PCI config regs. v1.02 July 2001: PCI config regs.
v1.01 April 2001: less shortage today of bus-resouces, clarity in sect. 2, v1.01 April 2001: less shortage today of bus-resouces, clarity in sect. 2,
Windows 2000 OK (even if "not a PnP OS" in CMOS) Windows 2000 OK (even if "not a PnP OS" in CMOS)
@ -111,12 +112,16 @@ url="http://linuxdoc.org/mirrors.html">. Various formats are
available. If you only want to quickly check the date of the latest available. If you only want to quickly check the date of the latest
version look at: <url version look at: <url
url="http://linuxdoc.org/HOWTO/Plug-and-Play-HOWTO.html">. The url="http://linuxdoc.org/HOWTO/Plug-and-Play-HOWTO.html">. The
version you are now reading is: v1.02, July 2001 . version you are now reading is: v1.03, August 2001 .
<sect1> New in Recent Versions <sect1> New in Recent Versions
<p> v1.02 July 2001: PCI config regs. v1.01 April 2001: less shortage <p>
v1.03 August 2001: error messages, boot-prompt parameters
v1.02 July 2001: PCI config regs. v1.01 April 2001: less shortage
today of bus-resources, clarity in sect. 2, Windows 2000 OK (even if today of bus-resources, clarity in sect. 2, Windows 2000 OK (even if
"not a PnP OS" in CMOS) "not a PnP OS" in CMOS)
v1.01 April 2001: less shortage today of bus-resources, clarity in sect. 2,
Windows 2000 OK (even if "not a PnP OS" in CMOS)
The version 1.0 (Nov. 2000) was long overdue and recognized that the The version 1.0 (Nov. 2000) was long overdue and recognized that the
kernel is doing more in helping device drivers set up PnP. Kernel 2.4 kernel is doing more in helping device drivers set up PnP. Kernel 2.4
@ -1155,10 +1160,10 @@ name="PnP driver project">
<sect1> Introduction <sect1> Introduction
<p> Just how this is done depends upon the driver. Some drivers have <p> Just how this is done depends upon the driver. Some drivers have
more than one way to find out how their physical device is configured. more than one way to find out how their physical device is configured.
At one extreme is the case where you must hard-code the bus-resources into At one extreme is the case where you must hard-code the bus-resources
the kernel and recompile. At the other extreme, the driver does into the kernel (or a module) and recompile. At the other extreme,
everything automatically and you have nothing to do. It may even set the driver does everything automatically and you have nothing to do.
the bus-resources in the hardware using PnP methods. It may even set the bus-resources in the hardware using PnP methods.
In the middle are cases where you run a program to give the resource In the middle are cases where you run a program to give the resource
info to the driver or put the info in a file. In some cases the info to the driver or put the info in a file. In some cases the
@ -1169,13 +1174,23 @@ driver may use PnP methods to find the device and how the bus-resources
have been set, but will not actually set them. It may also look in have been set, but will not actually set them. It may also look in
some of the files in the /proc directory. some of the files in the /proc directory.
One may need to give the bus-resources as a parameter to the kernel or to One may need to "manually" tell a driver what bus-resources it should
a loadable module. See /usr/lib/modules_help/descr.gz for a list of use. You give such bus-resources as a parameter to the kernel or to a
possible parameters. The module to load is listed in /etc/modules loadable module. If the driver is built into the kernel, you pass the
along with its parameters. In some other case the bus-resources may be parameters to the kernel via the "boot-prompt". See The
given as parameters to the kernel. These are put into the lilo.conf Boot-Prompt-HOWTO which describes some of the bus-resource and other
file as append="...". Then the lilo program must be run to save this parameters. Once you know what parameters to give to the kernel, one
in the kernel boot code. may put them into lilo.conf file as append="...". Then the lilo
program must be run to get this info into the kernel loader.
If the driver is loaded as a module, you may need to give
bus-resources as parameters to the module. In some versions of Linux
/usr/lib/modules_help/descr.gz shows a list of possible module
parameters. Parameters to a module (including ones that automatically
load) may be specified in /etc/modules.conf. There are usually tools
used to modify this file which are distribution-dependent. A comment
in this file should help regarding how to modify it. Also, any module
your put in /etc/modules will get loaded along with its parameters.
While there is great non-uniformity about how drivers find out about While there is great non-uniformity about how drivers find out about
bus-resources, the end goal is the same. If you're having problems bus-resources, the end goal is the same. If you're having problems
@ -1343,7 +1358,21 @@ cases both Windows and Linux simply accept what the BIOS has set. But
where Windows and/or Linux do the configuring, they may do it where Windows and/or Linux do the configuring, they may do it
differently. So don't count on devices being configured the same. differently. So don't count on devices being configured the same.
<sect> Appendix <sect>Error Messages
<sect1> Unexpected Interrupt
<p> This means that an interrupt happened that no driver expected.
It's unlikely that the hardware issued an interrupt by mistake. It's
more likely that the software has a minor bug and doesn't realize that
some software did something to cause the interrupt. In many cases you
can safely ignore this error message, especially if it only happens
once or twice at boot-time. For boot-time messages, look at the
messages which are nearby for a clue as to what is going on. For
example, if probing is going on, perhaps a probe for a physical device
caused that device to issue an interrupt that the driver didn't
expect. Perhaps the driver wasn't listening for the correct IRQ
number.
<sect>Appendix
<sect1> Universal Plug and Play (UPnP) <label id="UPnP_"> <sect1> Universal Plug and Play (UPnP) <label id="UPnP_">
<p> This is actually a sort of network plug-and-play developed by <p> This is actually a sort of network plug-and-play developed by
Microsoft but usable by Linux. You plug something into a network and Microsoft but usable by Linux. You plug something into a network and

View File

@ -4,9 +4,11 @@
<author>David S.Lawyer <author>David S.Lawyer
<tt><htmlurl url="mailto:dave@lafn.org" name="dave@lafn.org"></tt> <tt><htmlurl url="mailto:dave@lafn.org" name="dave@lafn.org"></tt>
original by Greg Hankins original by Greg Hankins
<date>v2.12, July 2001 <date> v2.13 August 2001
<!-- Change log: <!-- Change log:
v.2.13 August 2001: fixed typos: done->down and "is is", USRT chip,
synchronous defined better
v2.12 July 2001 serial printing under LPRng v2.12 July 2001 serial printing under LPRng
v2.11 May 2001: stty 0 => hangup (was ok in v2.08. ) v2.11 May 2001: stty 0 => hangup (was ok in v2.08. )
v2.10 Feb 2001: EIA-485, frame errors on networks, gkermit, firewire v2.10 Feb 2001: EIA-485, frame errors on networks, gkermit, firewire
@ -118,9 +120,11 @@ sites see: <url url="http://metalab.unc.edu/LDP/mirrors.html">.
Various formats are available. If you only want to quickly check the Various formats are available. If you only want to quickly check the
date of the latest version look at <url date of the latest version look at <url
url="http://www.linuxdoc.org/HOWTO/Serial-HOWTO.html"> and compare url="http://www.linuxdoc.org/HOWTO/Serial-HOWTO.html"> and compare
it to this version: v2.12 July 2001 . New in recent versions:<newline> it to this version: v2.13 August 2001 . New in recent versions:<newline>
v.2.13 August 2001: fixed typos: done->down and "is is", USRT chip,
synchronous defined better
v2.12 July 2001: serial printing under LPRng<newline> v2.12 July 2001: serial printing under LPRng<newline>
v2.11 stty 0 => hangup (was ok in v2.08)<newline> v2.11 May 2001: stty 0 => hangup (was ok in v2.08. )
v2.10 EIA-485, frame errors on networks, gkermit, firewire v2.10 EIA-485, frame errors on networks, gkermit, firewire
<sect1> Related HOWTO's re the Serial Port <label id="related_howtos"> <sect1> Related HOWTO's re the Serial Port <label id="related_howtos">
@ -163,7 +167,7 @@ device on the USB.
The common specification for the conventional serial port is RS-232 The common specification for the conventional serial port is RS-232
(or EIA-232). The connector for the serial port is often seen as one (or EIA-232). The connector for the serial port is often seen as one
or two 9-pin connectors (in some cases 25-pin) on the back of a PC. or two 9-pin connectors (in some cases 25-pin) on the back of a PC.
But the serial port is is more than just that. It includes the But the serial port is more than just that. It includes the
associated electronics which must produce signals conforming to the associated electronics which must produce signals conforming to the
EIA-232 specification. See <ref id="volt_shape" name="Voltage EIA-232 specification. See <ref id="volt_shape" name="Voltage
Waveshapes">. One pin is used to send out data bytes and another to Waveshapes">. One pin is used to send out data bytes and another to
@ -333,6 +337,7 @@ transmit buffer in the hardware.
Nov. '99: 2 serial drivers concurrently NG Nov. '99: 2 serial drivers concurrently NG
Sept. '00: data flow diagram Sept. '00: data flow diagram
Dec. '00 flow control + Dec. '00 flow control +
July "01 done -> down
--> -->
@ -542,7 +547,7 @@ be reduced.
<!-- ifdef SERIAL_ end --> <!-- ifdef SERIAL_ end -->
<sect1> Flow Control <label id="flow_control"> <sect1> Flow Control <label id="flow_control">
<p> Flow control means the ability to slow done the flow of bytes in a <p> 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 wire. For serial ports this means the ability to stop and then
restart the flow without any loss of bytes. Flow control is needed restart the flow without any loss of bytes. Flow control is needed
for modems to allow a jump in instantaneous flow rates. for modems to allow a jump in instantaneous flow rates.
@ -1544,11 +1549,12 @@ which are from the BIOS. This is how it was before Linux started.
Setserial can't change it but isapnp or pciutils can and starting with Setserial can't change it but isapnp or pciutils can and starting with
kernel 2.4, these will be built into the serial driver. kernel 2.4, these will be built into the serial driver.
One crude method is try probing with setserial using the "autoconfig" Using "scanport" will probe all I/O ports and will indicate what it
option. You'll need to guess the addresses to probe at. See <ref thinks may be serial port. After this you could try probing with
id="set_serial" name="What is Setserial">. For a PCI serial port, use setserial using the "autoconfig" option. You'll need to guess the
the "lspci" command (for kernels &lt;2.2 look at /proc/pci). If your addresses to probe at (using clues from "scanport"). See <ref
serial port is is Plug-and-Play see the next two subsections. id="set_serial" name="What is Setserial">. If your
serial port is is ISA Plug-and-Play or PCI see the next two subsections.
For a port set with jumpers, its how the jumpers were set. If the For a port set with jumpers, its how the jumpers were set. If the
port is not Plug-and-Play (PnP) but has been setup by using a DOS port is not Plug-and-Play (PnP) but has been setup by using a DOS
@ -1563,20 +1569,23 @@ can reach a state where it doesn't have any IO address or IRQ and is
in effect disabled. It should still be possible to find the port in effect disabled. It should still be possible to find the port
using the <tt/pnpdump/ program. using the <tt/pnpdump/ program.
For Plug-and-Play (PnP) on the ISA bus one may try the <tt/pnpdump/ For a PCI serial port, use the "lspci" command (for kernels &lt;2.2
look at /proc/pci).
For an ISA Plug-and-Play (PnP) port one may try the <tt/pnpdump/
program (part of <tt/isapnptools/). If you use the --dumpregs option program (part of <tt/isapnptools/). If you use the --dumpregs option
then it should tell you the actual IO address and IRQ set in the port. then it should tell you the actual IO address and IRQ set in the port.
The address it "trys" is not the device's IO address, but a special The address it "trys" is not the device's IO address, but a special
For PnP ports checking on how it's configured under DOS/Windows may not For PnP ports, checking on how it's configured under DOS/Windows may
be of much help. Windows stores its configuration info in its (or may not) imply how it's under Linux. Windows stores its
Registry which is not used by Linux. It may supply the BIOS's configuration info in its Registry which is not used by Linux so they
non-volatile memory with some info but it may not be kept in sync with are not necessarily configured the same. If you let a PnP BIOS
the current Window configuration in the Registry ?? If you let a PnP automatically do the configuring when you start Linux (and have told
BIOS automatically do the configuring when you start Linux (and have the BIOS that you don't have a PnP operating system when starting
told the BIOS that you don't have a PnP operating system when running
Linux) then Linux should use whatever configuration is in the BIOS's Linux) then Linux should use whatever configuration is in the BIOS's
non-volatile memory. non-volatile memory. Windows also makes use of the same non-volatile
memory but doesn't necessarily configure it that way.
<sect1>Choosing Serial IRQs <label id="choose_IRQ"> <sect1>Choosing Serial IRQs <label id="choose_IRQ">
@ -2143,15 +2152,15 @@ 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. port address, any IRQ, and whatever uart type you would like to have.
Then the next time you type "setserial ..." it will display these Then the next time you type "setserial ..." it will display these
bogus values without complaint. They will also be officially bogus values without complaint. They will also be officially
registered with the kernel as seen by the "scanport" command. registered with the kernel as displayed (at the top of the screen) by
Of course the serial port driver will not work correctly (if at all) the "scanport" command. Of course the serial port driver will not
if you attempt to use such a port. Thus when giving parameters to work correctly (if at all) if you attempt to use such a port. Thus
"setserial" anything goes. Well almost. If you assign one port a when giving parameters to "setserial" anything goes. Well almost. If
base address that is already assigned (such as 3e8) it will not accept you assign one port a base address that is already assigned (such as
it. But if you use 3e9 it will accept it. Unfortunately 3e9 is 3e8) it will not accept it. But if you use 3e9 it will accept it.
already assigned since it is within the range starting at base address Unfortunately 3e9 is already assigned since it is within the range
3e8. Thus the moral of the story is to make sure your data is correct starting at base address 3e8. Thus the moral of the story is to make
before assigning resources with setserial. sure your data is correct before assigning resources with setserial.
While assignments made by setserial are lost when the PC is powered While assignments made by setserial are lost when the PC is powered
off, a configuration file may restore them (or a previous off, a configuration file may restore them (or a previous
@ -2164,7 +2173,13 @@ name="Configuration Scripts/Files">
<sect2> Probing <label id="probing_ss"> <sect2> Probing <label id="probing_ss">
<p> With appropriate options, <tt/setserial/ can probe (at a given I/O <p>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, <tt/setserial/ can probe (at a given I/O
address) for a serial port but you must guess the I/O address. If you 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 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 address it thinks ttyS2 is at (2F8). If you tell setserial that ttyS2
@ -2175,11 +2190,12 @@ 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 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 faster ways to attempt it such as wvdialconf to detect modems, looking
at very early boot-time messages, or using <tt>pnpdump at very early boot-time messages, or using <tt>pnpdump
--dumpregs</tt>. To try to detect the physical hardware use the -v --dumpregs</tt>. To try to detect the physical hardware use for
(verbose) and <tt/autoconfig/ command to <tt/setserial/. If the example :<newline>
resulting message shows a uart type such as 16550A, then you're OK. <tt>setserial /dev/ttyS2 -v autoconfig</tt><newline>
If instead it shows "<tt/unknown/" for the uart type, then there is If the resulting message shows a uart type such as 16550A, then you're
supposedly no serial port at all at that I/O address. Some cheap OK. If instead it shows "<tt/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 serial ports don't identify themselves correctly so if you see
"<tt/unknown/" you still might have a serial port there. "<tt/unknown/" you still might have a serial port there.
@ -2187,15 +2203,15 @@ 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 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 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 correct irq. In versions of setserial >= 2.15, the results of your
last probe test may be saved and put into the configuration file last probe test could be automatically saved and put into the
<tt>/etc/serial.conf</tt> which will be used next time you start configuration file <tt>/etc/serial.conf</tt> which will be used next
Linux. At boot-time when the serial module loads (or the like), a time you start Linux. At boot-time when the serial module loads (or
probe for UARTs is made automatically and reported on the screen. But the like), a probe for UARTs is made automatically and reported on the
the IRQs shown may be wrong. The second report of the same is the screen. But the IRQs shown may be wrong. The second report of the
result of a script which usually does no probing and thus provides no same is the result of a script which usually does no probing and thus
reliable information as to how the hardware is actually set. It only provides no reliable information as to how the hardware is actually
shows configuration data someone wrote into the script or data that set. It only shows configuration data someone wrote into the script
got saved in /etc/serial.conf. or data that got saved in /etc/serial.conf.
It may be that two serial ports both have the same IO address set in 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 the hardware. Of course this is not permitted but it sometimes
@ -2204,6 +2220,7 @@ are two. However if they have different IRQs, then the probe for IRQs
may show IRQ = 0. For me it only did this if I first used may show IRQ = 0. For me it only did this if I first used
<tt/setserial/ to give the IRQ a ficticious value. <tt/setserial/ to give the IRQ a ficticious value.
<sect2> Boot-time Configuration <label id="sets_boot_time"> <sect2> Boot-time Configuration <label id="sets_boot_time">
<p> When the kernel loads the serial module (or if the "module <p> When the kernel loads the serial module (or if the "module
equivalent" is built into the kernel) then only <tt/ttyS{0-3}/ are equivalent" is built into the kernel) then only <tt/ttyS{0-3}/ are
@ -2638,26 +2655,26 @@ uses the serial port. See <ref id="stty_" name="Stty">
<!-- high_speed.H begin In Serial and Modem HOWTOs but some of the speed <!-- high_speed.H begin In Serial and Modem HOWTOs but some of the speed
section is unique to each HOWTO. section is unique to each HOWTO.
--> -->
<p> You need to find out the highest speed supported by your hardware. <sect2> Speeds over 115.2k
As of late 1998 most serial ports only supported speeds up to 115.2k <p> The top speed of 115.2k has been the standard speed since the
bps but as of 2001, most support higher speeds. Some 56k internal mid 1990's. By the year 2000, many serial ports supported higher
modems support 230.4k bps (but it may be hard to find out which ones speeds but Linux seldom used them due to lack of drivers. These
do). Recent Linux kernels support high speeds (over 115.2k) but you high-speed ports by default only support 115.2k and must have special
might have some problems using it because of one or both of the software to enable the higher speeds. Today (2001) almost all new
following reasons: serial ports support speeds of 230.4k and 460.8k. Some also support
921.6k. Unfortunately, to get these speeds you need to compile the
kernel with a special patch and it seems the patch doesn't support the
2.4 kernels yet.
<enum> For internal modems, only a minority of them advertise that they
<item> It may require a special driver or a patch to the serial driver support speeds of over 115.2k for their built-in serial ports.
<item> Older versions of an application program (or stty) may not Will shsmod support these ??
support the high speed.
<item> Setserial may show the wrong speed unless you use the baud_base
option. Even so, high speed will still work but the reported speed
will be wrong.
</enum>
To support the higher speeds you may get a shsmod (Super High Speed) The patch to support high-speed is called shsmod (Super High Speed).
patch for the serial driver. There is also a module for the VIA There are both Windows and Linux versions of this patch. See <url
VT82C686 chip <url url="www.kati.fi/viahss/">. url="http://www.devdrv.com/shsmod">. For Linux, much of the
documentation is only in Japanese. There is also a module for the
VIA VT82C686 chip <url url="www.kati.fi/viahss/">.
<sect2> How speed is set in hardware: the divisor and baud_base <label <sect2> How speed is set in hardware: the divisor and baud_base <label
id="divisor_"> id="divisor_">
@ -4087,34 +4104,41 @@ the basic concepts.
In theory, synchronous means that bytes are sent out at a constant In theory, synchronous means that bytes are sent out at a constant
rate one after another in step with a clock signal tick. There is rate one after another in step with a clock signal tick. There is
often a separate wire or channel for sending the clock signal. often a separate wire or channel for sending the clock signal. The
clock signal might also be embedded in the transmitted bytes.
Asynchronous bytes may be sent out erratically with various time Asynchronous bytes may be sent out erratically with various time
intervals between bytes (like someone typing characters at a intervals between bytes (like someone typing characters at a
keyboard). When a file is being sent thru the async serial port, the keyboard).
flow of bytes will likely be at the speed of the port (say 115.2k)
which is a constant rate. This flow may frequently start and stop due
to flow control.
There are certain situations that need to be classified as either When a file is being sent thru the async serial port, the flow of
sync or async. The async serial port often sends out bytes in a bytes will likely be at the speed of the port (say 115.2k) which is a
steady stream which would make this a synchronous case but since they constant rate. This flow may frequently start and stop due to flow
still have the start/stop bits (which makes it possible to send them control. Is this sync or async? Ignoring the flow control stops, it
out erratically) it's called async. Another case is where data might seem like sync since it's a steady flow. But it's not because
bytes (without any start-stop bits) are put into packets with possible there is no clock signal and the bytes could have been sent
erratic spacing between one packet and the next. This is called sync erratically since they are framed by start/stop bits.
since the bytes within each packet must be transmitted synchronously.
Another case is where data bytes (without any start-stop bits) are put
into packets with possible erratic spacing between one packet and the
next. This is called sync since the bytes within each packet are
transmitted synchronously.
<sect2> Synchronous Communication <sect2> Synchronous Communication
<p> Did you ever wonder what all the unused pins are for on a 25-pin <p> Did you ever wonder what all the unused pins are for on a 25-pin
connector for the serial port? Most of them are for use in connector for the serial port? Most of them are for use in
synchronous communication which is seldom implemented on PC's. There synchronous communication which is seldom implemented in chips for
are pins for sync timing signals as well as for a sync reverse PC's. There are pins for sync timing signals as well as for a sync
channel. The EIA-232 spec provides for both sync and async but PC's reverse channel. The EIA-232 spec provides for both sync and async
use a UART (Universal Asynchronous Receiver/Transmitter) chip such as but PC's use a UART (Universal Asynchronous Receiver/Transmitter) chip
a 16450, 16550A, or 16650 and can't deal with sync. For sync one such as a 16450, 16550A, or 16650 and can't deal with sync. For sync
needs a USART chip or the equivalent where the "S" stands for one needs a USRT chip or the equivalent where the "S" stands for
Synchronous. Since sync is a niche market, a sync serial port is Synchronous. A USART chip supports both synchronous and asynchronous.
likely to be quite expensive. Since sync is a niche market, a sync serial port is likely to be quite
expensive.
SCC stands for "Serial Communication Controller" or "Serial Controller
Chip". It's likely old terminology and since it doesn't say "sync"
or "async" it might support both.
Besides the sync part of the EIA-232, there are various other EIA Besides the sync part of the EIA-232, there are various other EIA
synchronous standards. For EIA-232, 3 pins of the connector are synchronous standards. For EIA-232, 3 pins of the connector are

View File

@ -2,10 +2,13 @@
<article> <article>
<title> Text-Terminal-HOWTO <title> Text-Terminal-HOWTO
<author> David S. Lawyer <url url="mailto:dave@lafn.org"> <author> David S. Lawyer <url url="mailto:dave@lafn.org">
<date> v1.23, July 2001 <date> v1.24, August 2001
<!-- <!--
Change log: Change log:
v1.24 Aug. 2001 Respawning too fast due to no such device, block mode
obsolete, troubleshooting: diplays escape sequences, detective work
for repair
v1.23 July 2001: 10-cond. is not RJ45/48 ?, corrupted character attributes v1.23 July 2001: 10-cond. is not RJ45/48 ?, corrupted character attributes
v1.22 May 2001 Clarity: 8-bit, ASCII, national replacement characters, v1.22 May 2001 Clarity: 8-bit, ASCII, national replacement characters,
CP1252=MS-ANSI CP1252=MS-ANSI
@ -166,13 +169,15 @@ url="http://linuxdoc.org/mirrors.html">. Various formats are
available. If you only want to quickly check the date of the latest available. If you only want to quickly check the date of the latest
version look at <url version look at <url
url="http://linuxdoc.org/HOWTO/Text-Terminal-HOWTO.html">. The url="http://linuxdoc.org/HOWTO/Text-Terminal-HOWTO.html">. The
version your are currently reading is: v1.23, July 2001 . New in recent version your are currently reading is: v1.24, August 2001 . New in recent
versions:<newline> versions:<newline>
v1.23 July 2001: 10-cond. is not RJ45/48 ?, corrupted character v1.24 Aug. 2001 Respawning too fast due to no such device, block mode
attributes<newline> obsolete, troubleshooting: displays escape sequences, detective work
v1.22 Clarity: 8-bit, ASCII, national replacement characters, for repair
CP1252=MS-ANSI<newline> v1.23 July 2001: 10-cond. is not RJ45/48 ?, corrupted character attributes
v1.21 More on mgetty, getty-login sequence, agetty parity v1.22 May 2001 Clarity: 8-bit, ASCII, national replacement characters,
CP1252=MS-ANSI
v1.21 April 2001 More on mgetty, getty-login sequence, agetty parity
problem, types of "terminal servers", parity set shows upper 128 problem, types of "terminal servers", parity set shows upper 128
chars., Correction: PCTerm doesn't work with MS DOS, troubleshooting: chars., Correction: PCTerm doesn't work with MS DOS, troubleshooting:
no CD signal no CD signal
@ -1690,7 +1695,19 @@ presses control-S. Much less common is the opposite case where the PC
can't keep up with your typing speed and tells the terminal to stop can't keep up with your typing speed and tells the terminal to stop
sending. The terminal "locks" its keyboard and a message or light sending. The terminal "locks" its keyboard and a message or light
should inform you of this. Anything you type at a locked keyboard is should inform you of this. Anything you type at a locked keyboard is
ignored. ignored. When the PC catches up on it's work, then the keyboard
should unlock. When it doesn't, there is likely some sort of deadlock
going on.
Another type of keyboard lock happens when a certain escape sequence
(or just the ^O control character for Wyse 60) is sent to the
terminal. While the previous type of lock is done by the serial
driver, this type of lock is done by the hardware of a real terminal.
It's a catch-22 situation if this happens since you can't type any
commands to escape out of this lock. Going into setup and resetting
might work (but it failed on my Wyse 60 and I had to cycle power to
escape). One could also send an "unlock keyboard" escape sequence
from another terminal.
The term "locked" is also sometimes used for the common case of where The term "locked" is also sometimes used for the common case of where
the computer is told to stop sending to a terminal. The keyboard is the computer is told to stop sending to a terminal. The keyboard is
@ -1922,17 +1939,18 @@ doesn't yet (2000).
<tscreen><verb> <tscreen><verb>
PC male DB25 Terminal DB25 PC male DB25 Terminal DB25
DSR Data Set Ready 6
|
DCD Carrier Detect 8 <-- 20 DTR Data Terminal Ready
TxD Transmit Data 2 --> 3 RxD Receive Data TxD Transmit Data 2 --> 3 RxD Receive Data
RxD Receive Data 3 <-- 2 TxD Transmit Data RxD Receive Data 3 <-- 2 TxD Transmit Data
RTS Request To Send 4 --> 5 CTS Clear To Send RTS Request To Send 4 --> 5 CTS Clear To Send
CTS Clear To Send 5 <-- 4 RTS Request To Send CTS Clear To Send 5 <-- 4 RTS Request To Send
DSR Data Set Ready 6
|
DCD Carrier Detect 8 <-- 20 DTR Data Terminal Ready
SG Signal Ground 7 --- 7 SG Signal Ground SG Signal Ground 7 --- 7 SG Signal Ground
6 DSR Data Set Ready
|
DTR Data Terminal Ready 20 --> 8 DCD Carrier Detect DTR Data Terminal Ready 20 --> 8 DCD Carrier Detect
|
6 DSR Data Set Ready
</verb></tscreen> </verb></tscreen>
<label id="DB_pin-out"> <label id="DB_pin-out">
Alternatively, a full DB9-DB25 null modem cable (will not work Alternatively, a full DB9-DB25 null modem cable (will not work
@ -1950,7 +1968,7 @@ DCD Carrier Detect 1
DSR Data Set Ready 6 <-- 20 DTR Data Terminal Ready DSR Data Set Ready 6 <-- 20 DTR Data Terminal Ready
RTS Request To Send 7 --> 5 CTS Clear To Send RTS Request To Send 7 --> 5 CTS Clear To Send
CTS Clear To Send 8 <-- 4 RTS Request To Send CTS Clear To Send 8 <-- 4 RTS Request To Send
(RI Ring Indicator 9 not needed) (RI Ring Indicator 9 (not needed)
</verb></tscreen> </verb></tscreen>
(Yes, the pins 2 and 3 really do have opposite meanings for DB9 and (Yes, the pins 2 and 3 really do have opposite meanings for DB9 and
DB25 connectors!) DB25 connectors!)
@ -2295,9 +2313,9 @@ Pin Signal Signal Pin
4 SG (RxD)--------------------| 4 SG (RxD)--------------------|
5 RxD <--------------------------- TxD 3 5 RxD <--------------------------- TxD 3
6 DSR <--------------------------- RTS 7 6 DSR <--------------------------- RTS 7
|--- DTR 4 |--> DTR 4
|--> CD 1 |--> CD 1
RI 9 (no connection) RI 9
</verb></tscreen> </verb></tscreen>
<sect3> 8-conductors and 10-conductors <sect3> 8-conductors and 10-conductors
<p> RJ45 and RJ48 are 8-conductor modular telephone plugs. <p> RJ45 and RJ48 are 8-conductor modular telephone plugs.
@ -3651,15 +3669,15 @@ 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. port address, any IRQ, and whatever uart type you would like to have.
Then the next time you type "setserial ..." it will display these Then the next time you type "setserial ..." it will display these
bogus values without complaint. They will also be officially bogus values without complaint. They will also be officially
registered with the kernel as seen by the "scanport" command. registered with the kernel as displayed (at the top of the screen) by
Of course the serial port driver will not work correctly (if at all) the "scanport" command. Of course the serial port driver will not
if you attempt to use such a port. Thus when giving parameters to work correctly (if at all) if you attempt to use such a port. Thus
"setserial" anything goes. Well almost. If you assign one port a when giving parameters to "setserial" anything goes. Well almost. If
base address that is already assigned (such as 3e8) it will not accept you assign one port a base address that is already assigned (such as
it. But if you use 3e9 it will accept it. Unfortunately 3e9 is 3e8) it will not accept it. But if you use 3e9 it will accept it.
already assigned since it is within the range starting at base address Unfortunately 3e9 is already assigned since it is within the range
3e8. Thus the moral of the story is to make sure your data is correct starting at base address 3e8. Thus the moral of the story is to make
before assigning resources with setserial. sure your data is correct before assigning resources with setserial.
While assignments made by setserial are lost when the PC is powered While assignments made by setserial are lost when the PC is powered
off, a configuration file may restore them (or a previous off, a configuration file may restore them (or a previous
@ -3672,7 +3690,13 @@ name="Configuration Scripts/Files">
<sect2> Probing <label id="probing_ss"> <sect2> Probing <label id="probing_ss">
<p> With appropriate options, <tt/setserial/ can probe (at a given I/O <p>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, <tt/setserial/ can probe (at a given I/O
address) for a serial port but you must guess the I/O address. If you 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 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 address it thinks ttyS2 is at (2F8). If you tell setserial that ttyS2
@ -3683,11 +3707,12 @@ 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 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 faster ways to attempt it such as wvdialconf to detect modems, looking
at very early boot-time messages, or using <tt>pnpdump at very early boot-time messages, or using <tt>pnpdump
--dumpregs</tt>. To try to detect the physical hardware use the -v --dumpregs</tt>. To try to detect the physical hardware use for
(verbose) and <tt/autoconfig/ command to <tt/setserial/. If the example :<newline>
resulting message shows a uart type such as 16550A, then you're OK. <tt>setserial /dev/ttyS2 -v autoconfig</tt><newline>
If instead it shows "<tt/unknown/" for the uart type, then there is If the resulting message shows a uart type such as 16550A, then you're
supposedly no serial port at all at that I/O address. Some cheap OK. If instead it shows "<tt/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 serial ports don't identify themselves correctly so if you see
"<tt/unknown/" you still might have a serial port there. "<tt/unknown/" you still might have a serial port there.
@ -3695,15 +3720,15 @@ 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 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 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 correct irq. In versions of setserial >= 2.15, the results of your
last probe test may be saved and put into the configuration file last probe test could be automatically saved and put into the
<tt>/etc/serial.conf</tt> which will be used next time you start configuration file <tt>/etc/serial.conf</tt> which will be used next
Linux. At boot-time when the serial module loads (or the like), a time you start Linux. At boot-time when the serial module loads (or
probe for UARTs is made automatically and reported on the screen. But the like), a probe for UARTs is made automatically and reported on the
the IRQs shown may be wrong. The second report of the same is the screen. But the IRQs shown may be wrong. The second report of the
result of a script which usually does no probing and thus provides no same is the result of a script which usually does no probing and thus
reliable information as to how the hardware is actually set. It only provides no reliable information as to how the hardware is actually
shows configuration data someone wrote into the script or data that set. It only shows configuration data someone wrote into the script
got saved in /etc/serial.conf. or data that got saved in /etc/serial.conf.
It may be that two serial ports both have the same IO address set in 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 the hardware. Of course this is not permitted but it sometimes
@ -3712,6 +3737,7 @@ are two. However if they have different IRQs, then the probe for IRQs
may show IRQ = 0. For me it only did this if I first used may show IRQ = 0. For me it only did this if I first used
<tt/setserial/ to give the IRQ a ficticious value. <tt/setserial/ to give the IRQ a ficticious value.
<sect2> Boot-time Configuration <label id="sets_boot_time"> <sect2> Boot-time Configuration <label id="sets_boot_time">
<p> When the kernel loads the serial module (or if the "module <p> When the kernel loads the serial module (or if the "module
equivalent" is built into the kernel) then only <tt/ttyS{0-3}/ are equivalent" is built into the kernel) then only <tt/ttyS{0-3}/ are
@ -4676,7 +4702,7 @@ the previous section.
<sect2> Symptoms and some fixes <label id="symptoms_"> <sect2> Symptoms and some fixes <label id="symptoms_">
<p> When the display doesn't look right, or when what you type doesn't <p> When the display doesn't look right, or when what you type doesn't
display correctly (if at all), or nothing happens when you type a display correctly (if at all), or nothing happens when you type a
command, you may have a corrupted terminal interface. In rare cases command, you may have a corrupted terminal interface. In rare cases,
when the serial port hardware gets itself corrupted, the only fix may when the serial port hardware gets itself corrupted, the only fix may
be to cycle power (turn off the PC and reboot). In some cases just be to cycle power (turn off the PC and reboot). In some cases just
cycling power for the terminal will fix it. Sometimes logging in again cycling power for the terminal will fix it. Sometimes logging in again
@ -4713,9 +4739,10 @@ may put your terminal into some strange mode of operation or even make
it unusable. Always view or edit a binary file with programs designed it unusable. Always view or edit a binary file with programs designed
for that purpose so that this doesn't happen. Most editors and pagers for that purpose so that this doesn't happen. Most editors and pagers
will handle binary OK so as not to corrupt the interface. Some may will handle binary OK so as not to corrupt the interface. Some may
display a message telling you that they can't edit binary. But using display a message telling you that they can't edit binary. But you're
"cat ...." or "cp .... /dev/tty.." where .... is a binary file, will likely to corrupt things if you: "cat ...." or "cp .... /dev/tty.." or
send the binary to the terminal and likely corrupt things. run a program which sends binary output to "standard output" (unless
you redirect such output with >, etc.).
Corruption it can also happen when using a communications program where Corruption it can also happen when using a communications program where
a remote computer may send binary to your screen. There are numerous a remote computer may send binary to your screen. There are numerous
@ -5218,9 +5245,11 @@ stty rows 24
<sect> Trouble-Shooting <label id="trouble_shoot"> <sect> Trouble-Shooting <label id="trouble_shoot">
<p> If you suspect that the problem is a hardware problem, see the <ref <p> If you suspect that the problem is a hardware problem, see the <ref
id="repair_" name="Repair and Diagnose"> section. If it's the keyboard id="repair_" name="Repair and Diagnose"> section. If it's the
see <ref id="keyboards_" name="Keyboards">. If the problem involves keyboard see <ref id="keyboards_" name="Keyboards">. If it responds
the serial port itself see the Serial-HOWTO. incorrectly (if at all) to what you type. see <ref
id="corrupt_interface" name="Corrupted Terminal Interface">. If the
problem involves the serial port itself see the Serial-HOWTO.
Here is a list of possible problems: Here is a list of possible problems:
<itemize> <itemize>
@ -5228,12 +5257,13 @@ Here is a list of possible problems:
Suspect the terminal is defective. Suspect the terminal is defective.
<item><ref id="display_freezes" name="Display Freezes (hung <item><ref id="display_freezes" name="Display Freezes (hung
terminal)"> terminal)">
<item><ref id="displays_garbage" name="Displays Garbage"> Characters you <item><ref id="displays_foreign" name="Displays Foreign/Weird
type or see are "foreign" letters/symbols. Characters/Symbols">
<item><ref id="displays_esc-seqs" name="Displays Escape Sequences">
<item><ref id="flow_ctrl_ng" name="Missing Text"> Either skips <item><ref id="flow_ctrl_ng" name="Missing Text"> Either skips
over some text or displays some text OK and hangs. over some text or displays some text OK and hangs.
<item><ref id="keys_erratic" name="All Keys Work Erratically; Must Hit <item><ref id="keys_erratic" name="All Keys Work Erratically; Must Hit
a Key a Few Times"> a Key a Few Times">
<item><ref id="stopped_" name="If getty run from command line: Programs <item><ref id="stopped_" name="If getty run from command line: Programs
get stopped"> with message "Stopped" get stopped"> with message "Stopped"
<item><ref id="rapid_respawn" name="Getty Respawning Too Rapidly"> <item><ref id="rapid_respawn" name="Getty Respawning Too Rapidly">
@ -5255,7 +5285,7 @@ the next section.
<p> When a formerly working terminal suddenly goes bad it is often <p> When a formerly working terminal suddenly goes bad it is often
easy to find the problem. That's because (except for hardware easy to find the problem. That's because (except for hardware
failures) the problem is likely due to something that you did (or failures) the problem is likely due to something that you did (or
something the software you used did). something the software that you used did).
The problem may be obvious such as an error message when the terminal The problem may be obvious such as an error message when the terminal
is first turned on. If it makes a strange noise it likely needs is first turned on. If it makes a strange noise it likely needs
@ -5298,20 +5328,19 @@ causes. You should deviate a little from this method based on hunches
and clues. and clues.
<sect1> Is the Terminal OK ? <label id="term_OK"> <sect1> Is the Terminal OK ? <label id="term_OK">
<p> Many terminals will start up with some words on the <p> Many terminals will start up with some words on the screen. If
screen. If these words convey no error message, it's probably these words convey no error message, it's probably OK. If there is no
OK. If there is no sign of power (a dark screen, etc.) re-plug in the sign of power (a dark screen, etc.) re-plug in the computer power cord
computer power cord at both ends. Make sure there is power at the at both ends. Make sure there is power at the wall jack (or at the
wall jack (or at the extension cord end). Try another power cord if extension cord end). Try another power cord if you have one. Make
you have one. Make sure the terminal is turned on and that its fuse sure the terminal is turned on and that its fuse is not blown. A
is not blown. A blank (or dim) screen may sometimes be fixed by just blank (or dim) screen may sometimes be fixed by just turning up the
turning up the brightness and contrast using knobs or a keyboard key brightness and contrast using knobs or a keyboard key in set-up mode.
in set-up mode.
A terminal that's been stored for a long time may A terminal that's been stored for a long time may take a while to
take a while to "warm up" as the electrolytic capacitors heal "warm up" as the electrolytic capacitors heal themselves under
themselves under voltage. If it still won't work See <ref voltage. If it still won't work See <ref id="repair_" name="Repair &
id="repair_" name="Repair & Diagnose"> for tips on repairing it. Diagnose"> for tips on repairing it.
If the terminal starts up OK, but you suspect that something may be If the terminal starts up OK, but you suspect that something may be
wrong with it, go into "local mode" where is works like a typewriter wrong with it, go into "local mode" where is works like a typewriter
@ -5369,32 +5398,59 @@ terminal nor the gpm mouse program uses lockfiles. Since others may
need to write to your terminal, it's reasonable not to use lockfiles. need to write to your terminal, it's reasonable not to use lockfiles.
See Lock-Files in the Serial-HOWTO. See Lock-Files in the Serial-HOWTO.
<sect1> Getty Respawning Too Rapidly <label id="rapid_respawn"> <sect1> ... respawning too fast: disabled for 5 minutes
<label id="rapid_respawn">
<sect2>What's happening
<p>You see a message on the console like: "Getty respawning too fast:
disabled for 5 minutes". Instead of "Getty" it may display a label
(such as "S2") for the line in /etc/inittab from where from where getty
was called.
When getty starts up, it tries to send a login message to the serial
port. But if there is something seriously wrong, getty will be
immediately killed. Since the /etc/inittab file line for getty says
to "respawn", getty is started again, only to be killed again, etc.
Thus getty respawns over and over. But the operating system
intervenes and stops this nonsense (for 5 minutes). The following
sections show possible causes and fixes.
<sect2> No modem control signal <sect2> No modem control signal
<p> If getty can't open and/or use a port because of the lack of a <p> If the terminal doesn't send the PC a CD signal on one of the pins
positive modem control voltage on one of the pins, then getty might of the serial port, getty will be killed unless the "local" option has
be killed. Then, per the instructions in inittab, getty respawns and been used with getty. So a quick fix is to just use a "local" option
tries again, only to be killed again, etc., etc. You may see an error (-L for agetty, "CLOCAL" in /etc/gettydefs for ps_getty).
message like: Getty respawning too fast: disabled for 5 minutes.
Instead of "Getty" it may give the label (such as S2) of the line in Another approach is to determine why CD is not being asserted. In
/etc/inittab from where from where getty was called. Try using many cases the cable to the terminal simply doesn't have a wire for
the "local" option with getty and/or check the modem control settings the CD pin so you must use the "local" option. If there is a wire for
and voltages. the CD pin then there may not be any signal on it until the terminal
is powered on. Note that the CD pin signal is sometimes supplied by
the DTR pin of the terminal (or the PC) by using jumper wires inside
the connector.
<sect2> No such serial device
<p>If the device (such as /dev/ttyS2) is bogus (doesn't physically
exist or has been disabled), then getty will be killed. You may use
"scanport" and/or "setserial" to probe for the device or try another
ttyS. Perhaps the device has been disabled in the CMOS. See
"Serial-HOWTO".
<sect2> No serial support <sect2> No serial support
<p> Linux provides serial support either by selecting it when <p> Linux provides serial support either by selecting it when
compiling the kernel or by loading the serial module. This compiling the kernel or by loading the serial module: serial.o. This
"respawning" error happens if serial support has neither been built "respawning" error happens if serial support has neither been built
into the kernel nor provided by a serial module. You many use the into the kernel nor provided by a serial module. You many use the
"lsmod" command to see if the serial module is loaded. "lsmod" command to see if the serial module is loaded. To see if
serial support is built into the kernel, check a kernel configuration
file (in /boot, in the source tree, etc.)
<sect2> Key shorted <label id="key_shorted_getty"> <sect2> Key shorted <label id="key_shorted_getty">
<p> Another possible cause of getty respawning too rapidly is if a <p> Another possible cause of getty respawning too rapidly is if a
keyboard key is shorted, giving the same result as if the key was keyboard key is shorted. This gives the same result as if the key was
continuously held down. With auto-repeat enabled, this "types" continuously held down. With auto-repeat enabled, this "types"
thousands of characters to the login prompt. Look for a screen filled thousands of characters to the login prompt. Look for a screen filled
with all the same character (in some cases with 2 or more different with all the same character (in some cases, with 2 or more different
characters). characters).
<sect1> Fails Just After Login <label id="after_login"> <sect1> Fails Just After Login <label id="after_login">
@ -5536,25 +5592,68 @@ you could get a false high AC reading when looking at the idle DC of
good device (such as another terminal or an external modem) to the good device (such as another terminal or an external modem) to the
serial port and see if it works OK. serial port and see if it works OK.
<sect1> Displays Garbage <label id="displays_garbage"> <sect1> Displays Foreign/Weird Characters/Symbols
<label id="displays_foreign">
<p> If what you type or see on the screen is not what's expected but <p> Don't confuse this with <ref id="displays_esc-seqs" name="Displays
looks like a foreign alphabet, math symbols, line-drawing character, Escape Sequences">. If what you type or see on the screen is not
etc. then it could be that the many of bytes that are sent to your what's expected but looks like a foreign alphabet, math symbols,
terminal have the high order bit set (when it shouldn't be). You are line-drawing character, etc. then it could be that the many of bytes
looking at the character set (or part of a character set) which has that are sent to your terminal have the high order bit set (when it
the high order bit set. This may happen if you have the baud rate shouldn't be). You are looking at the character set (or part of a
wrong or parity set wrong (per stty). If you have parity set per stty character set) which has the high order bit set. This may happen if
but inside the terminal it's 8-bit no-parity, then the high order bit you have the baud rate wrong or parity set wrong (per stty). If you
(= parity bit) will often be erroneously set. Try stty -F /dev/ttyS? have parity set per stty but inside the terminal it's 8-bit no-parity,
from another terminal to check if the baud rate and parity are then the high order bit (= parity bit) will often be erroneously set.
correct. Try stty -F /dev/ttyS? from another terminal to check if the baud
rate and parity are correct.
Perhaps the wrong character set (font) has been installed. An Perhaps the wrong character set (font) has been installed. An
erroneous escape sequence sent to the terminal could have switched erroneous escape sequence sent to the terminal could have switched
character sets. If you are using the mapchan program to change the character sets. If you are using the mapchan program to change the
keyboard mapping, it could be incorrect. keyboard mapping, it could be incorrect.
<sect1> Displays Escape Sequences <label id="displays_esc-seqs">
<p>You may see something like "5;35H22,1" or "3;4v" or "1;24r" or
"^[[21;6H", etc., etc. Of course, the numbers and letters will be
different. They will be scattered about (either randomly or in a
strange sense of order). The display will look a mess and will likely
have other defects. Some application and commands will result in
corrupted displays.
What you see are escape sequences (or fragments of them) that were
sent to your terminal in order to control it, but your terminal didn't
recognize them and passed them on to the screen. It's likely that the
program you're using erroneously thinks you are using another type of
terminal. Thus it sends escape sequences that your terminal doesn't
understand. This can sometimes do strange things to your display.
Check that the TERM environment variable is set correctly (type: echo
$TERM).
<sect2>Telnet
<p>The problem of getting TERM right can be a bit more complex if you use
telnet. Telnet doesn't emulate a terminal but passes the value of
your TERM variable to the remote computer. If the remote computer
doesn't support your type of terminal, or changes the value of TERM to
a wrong value (on the remote) then there's trouble. Telnet
should initially set the value of TERM correctly on the remote. But
changes to the value of TERM (on the remote) could be caused by an
incorrect shell configuration file there. The first thing to do is to
check the value of TERM, both on your computer and on the remote. The
above is overly simplified since it's possible for your telnet client
to present the remote server with a list of possible TERM values which
your computer supports (if it can emulate more than one terminal
type).
<sect2>Terminal set to display escape sequences
<p>Another possible cause is that your terminal happens to be in a
special mode where it displays the escape sequences instead of
executing them. Then you'll also see them on the screen but they will
display in an orderly fashion. This mode is more precisely, one that
displays control codes. But since each escape sequence starts with a
control code (the "escape" character), the whole escape sequence is
not recognized by the terminal and is passed along to the screen. See
<ref id="control_codes" name="Control Codes">.
<sect1> Slow: pauses of several seconds between bursts of characters <sect1> Slow: pauses of several seconds between bursts of characters
<p> You likely have mis-set interrupts> See the Serial-HOWTO section <p> You likely have mis-set interrupts> See the Serial-HOWTO section
starting with "Slow:" starting with "Slow:"
@ -5670,11 +5769,11 @@ flashlight batteries first so you will know what taste to expect.
<p> Repairing a terminal has much in common with repairing a monitor <p> Repairing a terminal has much in common with repairing a monitor
and/or keyboard. Sometimes the built-in diagnostics of the terminal and/or keyboard. Sometimes the built-in diagnostics of the terminal
will tell you what is wrong on the screen. If not, then by the will display on the screen. By the symptoms, one may often isolate
symptoms, one may often isolate the trouble to one of the following: the trouble to one of the following: bad keyboard, CRT dead, power
bad keyboard, CRT dead, terminal digital electronics failure. It's electronics failure, or digital electronics failure. It's best to
best to have a service manual, but even if you don't have one, many have a service manual, but even if you don't have one, you can
terminals may still be repaired. often still repair it.
<sect1> Repair Books & Websites <label id="repair_info"> <sect1> Repair Books & Websites <label id="repair_info">
<sect2> Books <sect2> Books
@ -5752,40 +5851,43 @@ such names:
Changing linearity may change the size so that it will need to be Changing linearity may change the size so that it will need to be
readjusted. A terminal that has been stored for some time may have a readjusted. A terminal that has been stored for some time may have a
small display rectangle on the screen surrounded by a large black small display rectangle on the screen surrounded by a large black
border. If it's difficult to adjust, wait a while before adjusting it Before adjusting it, leave the terminal on for a while since it will
since it will likely recover some with use (the black borders will likely recover some with use (the black borders will shrink).
shrink).
<sect1> Diagnose <sect1> Diagnose
<sect2> Terminal Made a Noise <sect2> Terminal Made a Noise or Smoked
<p> If the terminal made some noise just before it failed (or when you <p> If the terminal made some noise just before it failed (or when you
turn it on after it failed) that noise is a clue to what is wrong. If turn it on after it failed) that noise is a clue to what is wrong. If
you hear a sparking noise or see/smell smoke, immediately turn the you hear a noise or see/smell smoke, immediately turn the terminal off
terminal off to prevent further damage. The problem is likely in the to prevent further damage. A pop noise may be a capacitor exploding
high voltage power supply of several thousand volts. Remove the cover or a fuse blowing. A buzzing noise is likely due to arcing. The
and if the bad spot is not evident, turn it on again for a short time problem may be in the high voltage power supply of several thousand
in a dimly lit room to look for arcing. The high voltage volts.
cable (runs between the flyback transformer and the side of the
picture tube) may have broken insulation that arcs to ground. Fix it Remove the cover. Look for discoloration and bulging/cracked
with high-voltage insulating dope, or special electrical tape designed capacitors. If the bad spot is not evident, turn it on again for a
say for 10,000 volts. short time and look for smoking/arcing. For arcing, a dimly lit room
will help find it. The high voltage cable (runs between the flyback
transformer and the side of the picture tube) may have broken
insulation that arcs to ground. Fix it with high-voltage insulating
dope, or special electrical tape designed say for 10,000 volts.
The flyback transformer (high voltage) may make only a faint clicking The flyback transformer (high voltage) may make only a faint clicking
or sparking noise if it fails. You may not hear it until you turn the or sparking noise if it fails. You may not hear it until you turn the
terminal off for a while to rest and then turn it back on again. To terminal off for a while and then turn it back on again. To track
track down the noise you may use a piece of small rubber tubing (such down the noise you may use a piece of small rubber tubing (such as
as used in automobiles) as a stethoscope to listen to it. But while used in automobiles) as a stethoscope to listen to it. But while you
you are listening for the noise, the terminal is suffering more damage are listening for the noise, the terminal is suffering more damage so
so try find it fast (but not so fast as to risk getting shocked). try find it fast (but not so fast as to risk getting shocked).
A short in the power supply may cause a fuse to blow with a pop. A shorted power supply may cause a fuse to blow. Replacing a blown
Replacing a blown fuse may not solve the problem as the same short may fuse may not solve the problem as the same short may blow the fuse
blow the fuse again. Inspect for any darkened spots due to high heat again. Inspect for any darkened spots due to high heat and test those
and test those components. Shorted power transistors may cause the components. Shorted power transistors may cause the fuse to blow.
fuse to blow. They may be tested with a transistor checker or even They may be tested with a transistor checker or even with an
with an ohm-meter. Use the low ohm scale on an ohm-meter so that the ohm-meter. Use the low ohm scale on an ohm-meter so that the voltage
voltage applied by the meter is low. This will reduce the possible applied by the meter is low. This will reduce the possible damage to
damage to good components caused by this test voltage. good components caused by this test voltage.
If the terminal has been exposed to dampness such as being stored in a If the terminal has been exposed to dampness such as being stored in a
damp place or near a kitchen with steam from cooking, a fix may be to damp place or near a kitchen with steam from cooking, a fix may be to
@ -5813,20 +5915,28 @@ in local, then the problem is likely in the connection to the host
computer (or incorrect interface) or in the UART chips of the computer (or incorrect interface) or in the UART chips of the
terminal. terminal.
By carefully inspecting the circuitry, one may often find the cause of <sect1> Detective work
the problem. Look for discoloration, cracks, etc. An intermittent <p>By carefully inspecting the circuitry, one may often find the cause
of the problem. Look for discoloration, cracks, etc. An intermittent
problem may sometimes be found by tapping on components with a problem may sometimes be found by tapping on components with a
ball-point pen (not the metal tip of course). A break in the ball-point pen (not the metal tip of course). A break in the
conductor of a printed circuit board may sometimes be revealed by conductor of a printed circuit board may sometimes be revealed by
flexing the board. Solder that looks like it formed a drop or a flexing the board. Solder that looks like it formed a drop or a
solder joint with little solder may need re-soldering. Soldering may solder joint with little solder may need re-soldering. Soldering may
heat up transistors (and other components) and damage them so use a heat up transistors (and other components) and damage them so use a
heat sink if feasible. heat sink if feasible. One failure may cause others, so unless you
find the original cause, the failure may reoccur.
If you have a common brand of terminal, you may be able to search If you have a common brand of terminal, you may be able to search the
newsgroup postings on the Internet to find out what the most frequent Internet (including newsgroup postings) to find out what the most
types of problems are for your terminal and perhaps information on how frequent types of problems are for your terminal and perhaps
to fix them. information on how to fix it. If you find that a certain component
is bad you may search for this component (for example R214 wyse) and
hopefully find a report by someone else who had the same problem.
Such a report may indicate other components that failed at the same
time. If a component is damaged so badly that its value can't be
read, then you might find it on the Internet. The manufacturer may
have on-line data that search engines don't index.
To see if the digital electronics work, try (using a good keyboard) To see if the digital electronics work, try (using a good keyboard)
typing at the bad terminal. Try to read this typing at a typing at the bad terminal. Try to read this typing at a
@ -5867,6 +5977,11 @@ leaving the terminal on for a while will help partially restore them.
If you can, exercise any terminals you have in storage by turning them If you can, exercise any terminals you have in storage by turning them
on for a while every year or two. on for a while every year or two.
Note that cheap electrolytic capacitors designed for use in audio
circuits may fail if used in high frequency horizontal circuitry. For
this, you need low resistance (low ESR) capacitors. Replace
non-polarized capacitors (NP) with the same (or with "bi-polar").
<sect1> Keyboards <label id="keyboards_"> <sect1> Keyboards <label id="keyboards_">
<sect2> Interchangeability <sect2> Interchangeability
<p> The keyboards for terminals are not the same as keyboards for <p> The keyboards for terminals are not the same as keyboards for
@ -6584,38 +6699,42 @@ phone line.
<sect1> Block Mode <label id="block"> <sect1> Block Mode <label id="block">
<sect2> Intro to Block Mode <sect2> Introduction to Block Mode
<p> Block mode is seldom used with Linux. In block mode when one types <p> Block mode is seldom used with Linux and is mainly of historical
at a terminal, the results are saved in the terminal memory and are interest. In block mode, when one types at a terminal the results are
not sent just yet to the host computer. Such terminals often have saved in the terminal memory and are not sent just yet to the host
built-in editing capabilities. When the user presses certain keys computer. Such terminals often have built-in editing capabilities.
(such as the send key) what has been saved in the terminal memory is When the user presses certain keys (such as the send key) what has
sent to the host computer. Now the Linux editors vi and emacs, react been saved in the terminal memory is sent to the host computer. Now
instantly to pressing certain keys but in the above situation such the Linux editors vi and emacs, must react instantly to typing certain
keys will be pressed and nothing will happen since nothing is sent keys so block mode isn't feasible. Such editors and other interactive
when a key is pressed. Thus using a block mode terminal will not programs can't permit the long delay in sending a keystroke to the
allow the use of such interactive programs. The old IBM mainframe computer which is inherent in block mode. So they can't use block
interface uses block mode (see <ref id="ibm_" name="IBM Terminals "> mode.
so many IBM terminals are block-mode only and also synchronous (see
Section <ref id="sync" name="Synchronization & Synchronous">). The old IBM mainframe interface uses block mode (see <ref id="ibm_"
name="IBM Terminals "> so many IBM terminals are block-mode only and
also synchronous (see Section <ref id="sync" name="Synchronization &
Synchronous">).
<sect2> Types of Block Modes, Forms <sect2> Types of Block Modes, Forms
<p> Block mode may itself have various sub-modes such as "page" (a <p> Block mode may itself have various sub-modes such as "page" (a
page at a time) and "line" (a line at a time). Some terminals have page at a time) and "line" (a line at a time). Some terminals have
both block transmission modes and conventional character modes and may both block transmission modes and conventional character modes and may
be switched from one mode to another. Async terminals which have be switched from one mode to another. Async terminals which have
block modes include HP2622A, VT130, VT131, VT330, VT340, and block modes include HP2622A, Wyse60, VT130, VT131, VT330, VT340, and
Visual500. Many later model terminals can emulate block mode. Block Visual500. Many later model terminals can emulate block mode. But
modes may include a forms capability where the host computer sends a the Linux console can't. Block modes may include a forms capability
form to the terminal. Then the user fills it out and hits the send where the host computer sends a form to the terminal. Then the user
key which sends only the data in the form back to the host computer. fills it out and hits the send key which sends only the data in the
The form itself (not the data) is displayed on the screen in protected form back to the host computer. The form itself (not the data) is
fields which don't get transmitted to the host. displayed on the screen in protected fields which don't get
transmitted to the host.
<sect2> Efficiency <sect2> Efficiency
<p> Block mode takes a great deal of load off the host computer, <p> Block mode takes load off the host computer, especially if the
especially if the host computer's hardware is designed for block modes host computer's hardware is designed for block modes (as IBM
(as IBM mainframes were). In character mode every character typed is sent mainframes were). In character mode every character typed is sent
immediately to the serial port and usually causes an interrupt at the immediately to the serial port and usually causes an interrupt at the
host computer. The host that receives the byte must stop whatever it host computer. The host that receives the byte must stop whatever it
is doing and fetch that character from the port hardware. Even with is doing and fetch that character from the port hardware. Even with
@ -6636,6 +6755,27 @@ character (byte) typed is sent in its own packet including all the
overhead bytes (40 in a TCP/IP packet as used on the Internet). With overhead bytes (40 in a TCP/IP packet as used on the Internet). With
block mode, a large number of characters are sent in a single packet. block mode, a large number of characters are sent in a single packet.
<sect2> Problems with block mode
<p>While block mode is more efficient, it is nearly extinct, and for
good reason. Faster and cheaper computers made the higher efficiency
less important. For example, a 56k modem results in hundreds of
interrupts per second (every 14 characters) while typing at a terminal
only causes a few interrupts per second (one for each character
typed). So the number of interrupts caused by typing at a terminal
is not very significant (unless you have hundred of terminals
connected to the same computer).
Another point is that the efficiency is not of much significance where
the user doesn't type in very much. Editors are a primary example of
where the user types in a lot. But if you use block mode for
editing, you must then use the crude editor built into terminal. Modern
editors like vim and emacs are much better but can't use block mode.
Even in the days of mainframes with terminals, block mode wasn't used
much except by IBM. A major reason was that software to utilize it
was not widely available (except for IBM). The terminfo data base
doesn't seem to include it and this would complicate writing software
for it.
<sect1> EIA-232 (RS-232) Books <label id="RS232_books"> <sect1> EIA-232 (RS-232) Books <label id="RS232_books">
<p> (Note: The first book covers much more than just EIA-232.) <p> (Note: The first book covers much more than just EIA-232.)
<itemize> <itemize>
@ -6760,6 +6900,15 @@ will also lead to some FAQ's for terminal numbers under 100 (such as
WY60). For the specs on more recent terminals see See <url WY60). For the specs on more recent terminals see See <url
url="http://www.wyse.com/products/gpt/index.htm" name="Wyse terminals">. url="http://www.wyse.com/products/gpt/index.htm" name="Wyse terminals">.
Wyse terminals were lower in cost than other brands and they captured
a major share of the market. There were concerns about the quality
of these terminals, especially the Wyse 50. One reason for the large
number of reports of Wyse failures may be because there were so many
of them out there.
<sect2> Wyse 50
<p>Reported not to last very long.
<sect2> Wyse 60 <sect2> Wyse 60
<p> Display adjustments (must remove cover): Brightness VR202, Height <p> Display adjustments (must remove cover): Brightness VR202, Height
VR302, Width VR101 (also affects height). If you want to use it in VR302, Width VR101 (also affects height). If you want to use it in
@ -6771,8 +6920,10 @@ edit /etc/inputrc so that the arrow keys will work in Bash. See <ref
id="bash_bug" name="Bugs in Bash"> id="bash_bug" name="Bugs in Bash">
<sect2> Wyse 85 <sect2> Wyse 85
<p> Can emulate VT52/VT100/VT200. Press F3 for setup. Scroll thru <p> Can emulate VT52/VT100/VT200. Press F3 for setup. After moving
setup with up/down keys. left/right to go the a menu "icon", press space to select it. Scroll
thru setup menus with up/down keys. Press F3 at any time to reenter
setup (without loosing any settings).
<sect2> Wyse 99-GT <sect2> Wyse 99-GT
<p> Here is the setup Menus of the Wyse99GT (late 1980's). Note that <p> Here is the setup Menus of the Wyse99GT (late 1980's). Note that