mirror of https://github.com/tLDP/LDP
updated
This commit is contained in:
parent
01a9ceb0c9
commit
884071f8fb
|
@ -3,11 +3,12 @@
|
|||
<title> Modem-HOWTO </title>
|
||||
<author>David S.Lawyer
|
||||
<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
|
||||
|
||||
v0.20 August 2001: fixed typo: done->down, more linmodems
|
||||
v0.19 July 2001: Dialing Out while Waiting for a Call. Antique modems
|
||||
using "CONNECT" to set DTE speed.
|
||||
v0.18 June 2001 new section: modem doubling (bonding, teaming, multilink)
|
||||
|
@ -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
|
||||
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">
|
||||
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:
|
||||
<url url="http://www.linuxdoc.org/HOWTO/Modem-HOWTO.html">
|
||||
|
||||
<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.
|
||||
v0.18 June 2001 new section: modem doubling (bonding, teaming,
|
||||
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"
|
||||
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
|
||||
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">.
|
||||
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
|
||||
|
@ -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
|
||||
and push the card all the way down into the slot. Attach the card
|
||||
with a mounting screw (usually 3mm, .5mm pitch --don't use the wrong
|
||||
size).
|
||||
size).
|
||||
|
||||
If you have a modem that is not a winmodem (see <ref id="soft_modem"
|
||||
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
|
||||
"isapnp". Use the "pnpdump" to see what changes are possible.
|
||||
|
||||
<sect2> PCI Modems: What IOs and IRQs have been set?
|
||||
<p> For PCI, the BIOS almost always sets the IRQ and may set the
|
||||
IO address as well. To see how it's set use "lspci -v" or look in
|
||||
/proc/bus/pci. If more than one IO address is shown, the first one is
|
||||
<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 IO
|
||||
address as well. To see how it's set use "lspci -v" (best) or look in
|
||||
/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
|
||||
"setpci") If you must, change the IO address with "setpci" by
|
||||
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
|
||||
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"
|
||||
name="Speed Table"> for the "best" speeds to use. Tell it the full
|
||||
name of your serial port such as /dev/ttyS1. Set hardware flow
|
||||
control (RTS/CTS).
|
||||
name="Speed Table"> for more details on the "best" speeds to use.
|
||||
Tell it the full name of your serial port such as /dev/ttyS1. Set
|
||||
hardware flow control (RTS/CTS).
|
||||
|
||||
Minicom is the easiest to set up and to use to test your modem. But
|
||||
if you are lucky you may get ppp to work the first time and not need
|
||||
to bother with minicom. With minicom you may simply type the command:
|
||||
AT and hit enter (before dialing) to check that your modem is there
|
||||
and responds with OK.
|
||||
to bother with minicom. With minicom you may check to see if your
|
||||
modem is there (and ready to dial). Once you've set up minicom,
|
||||
type the command: AT, hit enter and you should see an "OK" response
|
||||
which comes direct from the modem.
|
||||
|
||||
<sect> Modems for a Linux PC
|
||||
<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
|
||||
power supply when not in use and thus are likely to consume a little
|
||||
electricity even when turned off (unless you unplug the power supply
|
||||
from the wall). Each watt they draw costs you about $1/yr. Another
|
||||
possible disadvantage of an external is that you will be forced to use
|
||||
an existing serial port which may not support a speed of over 115,200
|
||||
bps (although as of late 1998 and late 2000 most new internal modems
|
||||
don't either --but some do). If a new internal modem had say a 16650
|
||||
UART it would put less load on the CPU.
|
||||
from the wall). Each watt they draw usually costs you over $1/yr.
|
||||
Another possible disadvantage of an external is that you will be
|
||||
forced to use an existing serial port which may not support a speed of
|
||||
over 115,200 bps (although as of late 1998 and late 2000 most new
|
||||
internal modems don't either --but some do). If a new internal modem
|
||||
had say a 16650 UART it would put less load on the CPU.
|
||||
|
||||
Internal modems present a special problem for Linux, but will work
|
||||
just as well as external modems provided you avoid the high percentage
|
||||
of them that will work only for MS Windows, and also provided that you
|
||||
spend time (sometimes a lot of time) to configure them correctly.
|
||||
Some of the modems which will work only under MS Windows are,
|
||||
unfortunately, not labeled as such. If you buy a new one, make sure
|
||||
that you can return it for a refund if it will not work under Linux.
|
||||
just as well as external modems provided you avoid the ones that will
|
||||
work only for MS Windows. Configuring them ranges from very easy
|
||||
(automatically) to difficult depending on both the modem, your skills,
|
||||
and how easy it is to find info about your modem --info that is not
|
||||
all in this HOWTO. Some of the modems which will work only under MS
|
||||
Windows due to lack of Linux drivers (for software modems). If you
|
||||
buy a new one that you're not sure will work under Linux, try to get
|
||||
an agreement that you can return it for a refund if it doesn't work
|
||||
out.
|
||||
|
||||
While most new modems are plug-and-play you have various ways to deal
|
||||
with the PnP configuring:
|
||||
|
@ -358,19 +366,17 @@ with the PnP configuring:
|
|||
<item> Use the "isapnp" program
|
||||
<item> Let a PnP BIOS do the configuring
|
||||
</itemize>
|
||||
Each of the above has shortcomings. Isapnp documentation is difficult
|
||||
to understand although reading the Plug-and-Play-HOWTO (long) will aid
|
||||
in understanding it. If you want the PnP BIOS to do the configuring,
|
||||
all you need to do is to make sure that it knows you don't have a PnP
|
||||
operating system. But it may not do it correctly and you may need to
|
||||
find out what it's done see <ref id="io-irq_in_hdw" name="What is set
|
||||
in my serial port hardware?">.
|
||||
The last 2 items of the above have shortcomings. Isapnp documentation
|
||||
is difficult to understand although reading the Plug-and-Play-HOWTO
|
||||
(long) will aid in understanding it. If you want the PnP BIOS to do
|
||||
the configuring, all you need to do is to make sure that it knows that
|
||||
you don't have a PnP operating system. But it may not do it correctly
|
||||
and you may need to find out what it's done see <ref
|
||||
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
|
||||
get an external modem and plug it in. But since new peripherals are
|
||||
PnP today, you will sometime need to deal with it, so why delay the
|
||||
inevitable? Still, the most expedient (and expensive) solution is an
|
||||
external modem (if you have a free serial port).
|
||||
In the late 1990s many Linux users said that it's a lot simpler just
|
||||
to get an external modem and plug it in. But if you get the right
|
||||
internal modem it may be just as easy.
|
||||
|
||||
<sect1> 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
|
||||
can be read (thru the serial port) by a PnP operating system. Such an
|
||||
operating system would then know that you have a modem on a certain
|
||||
port and would also know the 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
|
||||
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
|
||||
manually by giving it the /dev id (such as /dev/ttyS2).
|
||||
operating system you may need to configure your application program
|
||||
manually by giving it the /dev id (such as /dev/ttyS2). Some programs
|
||||
can probe for a modem on various ports.
|
||||
|
||||
<sect2> Cabling & Installation
|
||||
<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
|
||||
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>
|
||||
<itemize>
|
||||
<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
|
||||
commands to them over the bus inside the computer. Such configuration
|
||||
commands can be sent by a PnP BIOS, by the isapnp program (for the ISA
|
||||
bus only), or by newer serial device drivers for certain modems. Under
|
||||
Linux you have a choice of how to configure the ones that don't get
|
||||
io-irq configured by the serial driver.
|
||||
bus only), or by newer serial device drivers for certain modems.
|
||||
Under Linux you may have a choice of how to configure the ones that
|
||||
don't get io-irq configured by the serial driver.
|
||||
|
||||
<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
|
||||
IRQ
|
||||
</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)
|
||||
<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
|
||||
|
@ -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)
|
||||
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
|
||||
work only for MS Windows.
|
||||
work only for MS Windows. That situation is changing.
|
||||
|
||||
<sect2> Linmodems
|
||||
<p> Finally in late 1999 two software-based modems appeared that could
|
||||
work under Linux and were sometimes called "linmodems". Lucent
|
||||
Technologies (LT) unofficially released a Linux binary-only code to
|
||||
support its PCI modems. PC-TEL (includes "Zoltrix") introduced a new
|
||||
software-based modem for Linux. There is a GPL'ed driver being
|
||||
developed for the Modem Silicon Operation MD563X HaM chipset (nee
|
||||
support most of its PCI modems. PC-TEL (includes "Zoltrix")
|
||||
introduced a new software-based modem for Linux. There is a GPL'ed
|
||||
driver for Intel's (Modem Silicon Operations) MD563x HaM chipset (nee
|
||||
Ambient division of Cirrus Logic). Will other companies follow these
|
||||
leads and thus create "linmodems"? For a list of modems which
|
||||
work/don't_work under Linux see <url
|
||||
leads and thus create "linmodems"? Yes. As of mid-2001 there are
|
||||
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">.
|
||||
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">.
|
||||
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
|
||||
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
|
||||
these digital waveshapes are processed (generated and interpreted).
|
||||
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
|
||||
done in the modem but all other digital work is done by the CPU (data
|
||||
compression, AT-commands, etc.) For example the Rockwell HCF (Host
|
||||
Controlled Family) does this. If the software that does these tasks
|
||||
could be ported to Linux and then there wouldn't be a major problem.
|
||||
using a Host Signal Processor (HSP). In the controllerless modem
|
||||
it's done in the modem but all other digital work is done by the CPU
|
||||
(data compression, AT-commands, etc.) For example the Rockwell HCF
|
||||
(Host Controlled Family) does this. If the software that does these
|
||||
tasks could be ported to Linux and then there wouldn't be a major
|
||||
problem.
|
||||
|
||||
<sect2> Is this modem a software modem?
|
||||
<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
|
||||
486 CPU (or better) then it's likely a host-controlled modem that will
|
||||
work only if there exists a Linux driver for it. Saying that it only
|
||||
works with Windows is also bad news.
|
||||
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?
|
||||
<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
|
||||
cons of software modems? Since the software modem uses the CPU to do
|
||||
much of its work, the software modem requires less on-board
|
||||
electronics and thus costs less. At the same time, the CPU is heavily
|
||||
loaded by the modem which may result in slower operation. This is
|
||||
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
|
||||
Besides the problems of getting a driver, what are the pros and cons
|
||||
of software modems? Since the software modem uses the CPU to do some
|
||||
(or all) of its work, the software modem requires less on-board
|
||||
electronics and thus costs less. At the same time, the CPU work load
|
||||
is increased by the modem which may result in slower operation.
|
||||
|
||||
The percentage of loading of the CPU by the modem depends on both what
|
||||
CPU you have and whether or not it's an all-software modem. For a
|
||||
modern CPU and a modem that only uses the CPU as a controller, there's
|
||||
little loss of performance. In most other cases, you will not suffer
|
||||
a loss of performance if there are no other CPU-intensive tasks are
|
||||
running at the same time. Of course, when you're not using the
|
||||
software modem there is no degradation in performance at all.
|
||||
|
||||
Is the cost savings worth it? In some cases yes, especially if you
|
||||
seldom use the modem and/or are not running any other CPU intensive tasks
|
||||
when the modem is in use. Thus there are cases where use of a
|
||||
software modem is economically justified. The savings in modem cost
|
||||
Is the cost savings worth it? In many cases yes, especially if you
|
||||
don't use the modem much and/or are not running any other CPU
|
||||
intensive tasks when the modem is in use. The savings in modem cost
|
||||
could be used for a better CPU which would speed things up a little.
|
||||
But the on-board electronics of a modem can do the job more
|
||||
efficiently than a general purpose CPU (except that it's not efficient
|
||||
|
@ -578,20 +616,30 @@ CPU :-).
|
|||
|
||||
<sect1> PCI Modems <label id="PCIm">
|
||||
<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
|
||||
Linux (no driver available) other PCI modems mostly work under Linux.
|
||||
motherboard of a PC. While many PCI winmodems will not work under
|
||||
Linux (no driver available) other PCI modems will work under Linux.
|
||||
The Linux serial driver is being modified to support certain PCI modem
|
||||
cards (but not winmodems). If the Linux serial driver supports it
|
||||
then the driver will set up the PnP configuration for you. See <ref
|
||||
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.
|
||||
|
||||
<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">
|
||||
<p>
|
||||
<itemize>
|
||||
<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
|
||||
you first start Windows/Dos each time you power on your PC
|
||||
<item> Modems with <ref id="rpi_" name="RPI (Rockwell)"> drivers work
|
||||
|
@ -599,19 +647,22 @@ have to do some work to configure it.
|
|||
</itemize>
|
||||
|
||||
<sect2> MWave and DSP Modems <label id="dsp_">
|
||||
<p> Such modems use DSP's (Digital Signal Processors) which are
|
||||
programmed by driver which must be downloaded from the hard disk to
|
||||
the DSP's memory just before using the modem. Unfortunately, such
|
||||
downloading is normally done by Dos/Windows programs (which doesn't
|
||||
work for Linux). But there has been substantial success in getting
|
||||
some of these modems to work with Linux. For example, there is a
|
||||
Linux driver available to run a Lucent (DSP) modem.
|
||||
<p> Note that there's now a Linux driver for the ACP (Mwave) modem
|
||||
used in IBM Thinkpads 600+. See the mini-HOWTO: ACP-Modem.
|
||||
|
||||
Such modems use DSPs (Digital Signal Processors) which are programmed
|
||||
by driver which must be downloaded from the hard disk to the DSPs
|
||||
memory just before using the modem. Unfortunately, such downloading
|
||||
is normally done by Dos/Windows programs (which doesn't work for
|
||||
Linux). But there has been substantial success in getting some of
|
||||
these modems to work with Linux. For example, there is a Linux driver
|
||||
available to run a Lucent (DSP) modem.
|
||||
|
||||
Ordinary modems that work fine with Linux (without needing a driver
|
||||
for the modem) often have a DSP too (and may mention this on the
|
||||
packaging), but the program that runs the DSP is stored inside the
|
||||
modem. 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
|
||||
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
|
||||
Sept. '00: data flow diagram
|
||||
Dec. '00 flow control +
|
||||
July "01 done -> down
|
||||
-->
|
||||
<!-- ifdef MODEM_ -->
|
||||
<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">
|
||||
<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
|
||||
restart the flow without any loss of bytes. Flow control is needed
|
||||
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
|
||||
kernel 2.4, these will be built into the serial driver.
|
||||
|
||||
One crude method is try probing with setserial using the "autoconfig"
|
||||
option. You'll need to guess the addresses to probe at. See <ref
|
||||
id="set_serial" name="What is Setserial">. For a PCI serial port, use
|
||||
the "lspci" command (for kernels <2.2 look at /proc/pci). If your
|
||||
serial port is is Plug-and-Play see the next two subsections.
|
||||
Using "scanport" will probe all I/O ports and will indicate what it
|
||||
thinks may be serial port. After this you could try probing with
|
||||
setserial using the "autoconfig" option. You'll need to guess the
|
||||
addresses to probe at (using clues from "scanport"). See <ref
|
||||
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
|
||||
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
|
||||
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 <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
|
||||
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
|
||||
|
||||
For PnP ports checking on how it's configured under DOS/Windows may not
|
||||
be of much help. Windows stores its configuration info in its
|
||||
Registry which is not used by Linux. It may supply the BIOS's
|
||||
non-volatile memory with some info but it may not be kept in sync with
|
||||
the current Window configuration in the Registry ?? If you let a PnP
|
||||
BIOS automatically do the configuring when you start Linux (and have
|
||||
told the BIOS that you don't have a PnP operating system when running
|
||||
For PnP ports, checking on how it's configured under DOS/Windows may
|
||||
(or may not) imply how it's under Linux. Windows stores its
|
||||
configuration info in its Registry which is not used by Linux so they
|
||||
are not necessarily configured the same. If you let a PnP BIOS
|
||||
automatically do the configuring when you start Linux (and have told
|
||||
the BIOS that you don't have a PnP operating system when starting
|
||||
Linux) then Linux should use whatever configuration is in the BIOS's
|
||||
non-volatile memory.
|
||||
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">
|
||||
|
||||
|
@ -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.
|
||||
Then the next time you type "setserial ..." it will display these
|
||||
bogus values without complaint. They will also be officially
|
||||
registered with the kernel as seen by the "scanport" command.
|
||||
Of course the serial port driver will not work correctly (if at all)
|
||||
if you attempt to use such a port. Thus when giving parameters to
|
||||
"setserial" anything goes. Well almost. If you assign one port a
|
||||
base address that is already assigned (such as 3e8) it will not accept
|
||||
it. But if you use 3e9 it will accept it. Unfortunately 3e9 is
|
||||
already assigned since it is within the range starting at base address
|
||||
3e8. Thus the moral of the story is to make sure your data is correct
|
||||
before assigning resources with setserial.
|
||||
registered with the kernel as displayed (at the top of the screen) by
|
||||
the "scanport" command. Of course the serial port driver will not
|
||||
work correctly (if at all) if you attempt to use such a port. Thus
|
||||
when giving parameters to "setserial" anything goes. Well almost. If
|
||||
you assign one port a base address that is already assigned (such as
|
||||
3e8) it will not accept it. But if you use 3e9 it will accept it.
|
||||
Unfortunately 3e9 is already assigned since it is within the range
|
||||
starting at base address 3e8. Thus the moral of the story is to make
|
||||
sure your data is correct before assigning resources with setserial.
|
||||
|
||||
While assignments made by setserial are lost when the PC is powered
|
||||
off, a configuration file may restore them (or a previous
|
||||
|
@ -2395,7 +2451,13 @@ name="Configuration Scripts/Files">
|
|||
|
||||
<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
|
||||
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
|
||||
|
@ -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
|
||||
faster ways to attempt it such as wvdialconf to detect modems, looking
|
||||
at very early boot-time messages, or using <tt>pnpdump
|
||||
--dumpregs</tt>. To try to detect the physical hardware use the -v
|
||||
(verbose) and <tt/autoconfig/ command to <tt/setserial/. If the
|
||||
resulting message shows a uart type such as 16550A, then you're 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
|
||||
--dumpregs</tt>. To try to detect the physical hardware use for
|
||||
example :<newline>
|
||||
<tt>setserial /dev/ttyS2 -v autoconfig</tt><newline>
|
||||
If the resulting message shows a uart type such as 16550A, then you're
|
||||
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
|
||||
"<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
|
||||
gave the wrong irq but when the command was repeated it found the
|
||||
correct irq. In versions of setserial >= 2.15, the results of your
|
||||
last probe test may be saved and put into the configuration file
|
||||
<tt>/etc/serial.conf</tt> which will be used next time you start
|
||||
Linux. At boot-time when the serial module loads (or the like), a
|
||||
probe for UARTs is made automatically and reported on the screen. But
|
||||
the IRQs shown may be wrong. The second report of the same is the
|
||||
result of a script which usually does no probing and thus provides no
|
||||
reliable information as to how the hardware is actually set. It only
|
||||
shows configuration data someone wrote into the script or data that
|
||||
got saved in /etc/serial.conf.
|
||||
last probe test could be automatically saved and put into the
|
||||
configuration file <tt>/etc/serial.conf</tt> which will be used next
|
||||
time you start Linux. At boot-time when the serial module loads (or
|
||||
the like), a probe for UARTs is made automatically and reported on the
|
||||
screen. But the IRQs shown may be wrong. The second report of the
|
||||
same is the result of a script which usually does no probing and thus
|
||||
provides no reliable information as to how the hardware is actually
|
||||
set. It only shows configuration data someone wrote into the script
|
||||
or data that got saved in /etc/serial.conf.
|
||||
|
||||
It may be that two serial ports both have the same IO address set in
|
||||
the hardware. Of course this is not permitted but it sometimes
|
||||
|
@ -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
|
||||
<tt/setserial/ to give the IRQ a ficticious value.
|
||||
|
||||
|
||||
<sect2> Boot-time Configuration <label id="sets_boot_time">
|
||||
<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
|
||||
|
@ -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
|
||||
section is unique to each HOWTO.
|
||||
-->
|
||||
<p> You need to find out the highest speed supported by your hardware.
|
||||
As of late 1998 most serial ports only supported speeds up to 115.2k
|
||||
bps but as of 2001, most support higher speeds. Some 56k internal
|
||||
modems support 230.4k bps (but it may be hard to find out which ones
|
||||
do). Recent Linux kernels support high speeds (over 115.2k) but you
|
||||
might have some problems using it because of one or both of the
|
||||
following reasons:
|
||||
<sect2> Speeds over 115.2k
|
||||
<p> The top speed of 115.2k has been the standard speed since the
|
||||
mid 1990's. By the year 2000, many serial ports supported higher
|
||||
speeds but Linux seldom used them due to lack of drivers. These
|
||||
high-speed ports by default only support 115.2k and must have special
|
||||
software to enable the higher speeds. Today (2001) almost all new
|
||||
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>
|
||||
<item> It may require a special driver or a patch to the serial driver
|
||||
<item> Older versions of an application program (or stty) may not
|
||||
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>
|
||||
For internal modems, only a minority of them advertise that they
|
||||
support speeds of over 115.2k for their built-in serial ports.
|
||||
Will shsmod support these ??
|
||||
|
||||
To support the higher speeds you may get a shsmod (Super High Speed)
|
||||
patch for the serial driver. There is also a module for the VIA
|
||||
VT82C686 chip <url url="www.kati.fi/viahss/">.
|
||||
The patch to support high-speed is called shsmod (Super High Speed).
|
||||
There are both Windows and Linux versions of this patch. See <url
|
||||
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
|
||||
id="divisor_">
|
||||
|
@ -3752,12 +3816,11 @@ lower so long as it's above the modem speed.
|
|||
|
||||
<sect>Communications Programs And Utilities<label id="comms">
|
||||
<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
|
||||
dial a phone number. When the other side answers the phone then 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.
|
||||
Dialer programs for ppp include wvdial, chap scripts, kppp, and
|
||||
gnome-ppp.
|
||||
program (or script) that will work with PPP. Such a dialer program
|
||||
will dial a phone number. When the other side answers the phone then
|
||||
three things happen: PPP is started at both ends and you get logged in
|
||||
automatically. The exact sequence of these 3 events may vary. Dialer
|
||||
programs for ppp include wvdial, chap scripts, kppp, and gnome-ppp.
|
||||
|
||||
There are also other dialer programs which can dial out directly (thru
|
||||
a modem) to local libraries, etc. This isn't the Internet.
|
||||
|
|
|
@ -3,10 +3,11 @@
|
|||
<title> Plug-and-Play-HOWTO </title>
|
||||
<author>David S.Lawyer
|
||||
<tt><url url="mailto:dave@lafn.org"></tt>
|
||||
<date> v1.02, July 2001
|
||||
<date> v1.03, August 2001
|
||||
|
||||
<!--
|
||||
Change log:
|
||||
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-resouces, clarity in sect. 2,
|
||||
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
|
||||
version look at: <url
|
||||
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
|
||||
<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
|
||||
"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
|
||||
kernel is doing more in helping device drivers set up PnP. Kernel 2.4
|
||||
|
@ -1155,10 +1160,10 @@ name="PnP driver project">
|
|||
<sect1> Introduction
|
||||
<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.
|
||||
At one extreme is the case where you must hard-code the bus-resources into
|
||||
the kernel and recompile. At the other extreme, the driver does
|
||||
everything automatically and you have nothing to do. It may even set
|
||||
the bus-resources in the hardware using PnP methods.
|
||||
At one extreme is the case where you must hard-code the bus-resources
|
||||
into the kernel (or a module) and recompile. At the other extreme,
|
||||
the driver does everything automatically and you have nothing to do.
|
||||
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
|
||||
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
|
||||
some of the files in the /proc directory.
|
||||
|
||||
One may need to give the bus-resources as a parameter to the kernel or to
|
||||
a loadable module. See /usr/lib/modules_help/descr.gz for a list of
|
||||
possible parameters. The module to load is listed in /etc/modules
|
||||
along with its parameters. In some other case the bus-resources may be
|
||||
given as parameters to the kernel. These are put into the lilo.conf
|
||||
file as append="...". Then the lilo program must be run to save this
|
||||
in the kernel boot code.
|
||||
One may need to "manually" tell a driver what bus-resources it should
|
||||
use. You give such bus-resources as a parameter to the kernel or to a
|
||||
loadable module. If the driver is built into the kernel, you pass the
|
||||
parameters to the kernel via the "boot-prompt". See The
|
||||
Boot-Prompt-HOWTO which describes some of the bus-resource and other
|
||||
parameters. Once you know what parameters to give to the kernel, one
|
||||
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
|
||||
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
|
||||
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_">
|
||||
<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
|
||||
|
|
|
@ -4,9 +4,11 @@
|
|||
<author>David S.Lawyer
|
||||
<tt><htmlurl url="mailto:dave@lafn.org" name="dave@lafn.org"></tt>
|
||||
original by Greg Hankins
|
||||
<date>v2.12, July 2001
|
||||
<date> v2.13 August 2001
|
||||
|
||||
<!-- 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.11 May 2001: stty 0 => hangup (was ok in v2.08. )
|
||||
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
|
||||
date of the latest version look at <url
|
||||
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.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
|
||||
|
||||
<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
|
||||
(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.
|
||||
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
|
||||
EIA-232 specification. See <ref id="volt_shape" name="Voltage
|
||||
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
|
||||
Sept. '00: data flow diagram
|
||||
Dec. '00 flow control +
|
||||
July "01 done -> down
|
||||
-->
|
||||
|
||||
|
||||
|
@ -542,7 +547,7 @@ be reduced.
|
|||
<!-- ifdef SERIAL_ end -->
|
||||
|
||||
<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
|
||||
restart the flow without any loss of bytes. Flow control is needed
|
||||
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
|
||||
kernel 2.4, these will be built into the serial driver.
|
||||
|
||||
One crude method is try probing with setserial using the "autoconfig"
|
||||
option. You'll need to guess the addresses to probe at. See <ref
|
||||
id="set_serial" name="What is Setserial">. For a PCI serial port, use
|
||||
the "lspci" command (for kernels <2.2 look at /proc/pci). If your
|
||||
serial port is is Plug-and-Play see the next two subsections.
|
||||
Using "scanport" will probe all I/O ports and will indicate what it
|
||||
thinks may be serial port. After this you could try probing with
|
||||
setserial using the "autoconfig" option. You'll need to guess the
|
||||
addresses to probe at (using clues from "scanport"). See <ref
|
||||
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
|
||||
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
|
||||
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 <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
|
||||
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
|
||||
|
||||
For PnP ports checking on how it's configured under DOS/Windows may not
|
||||
be of much help. Windows stores its configuration info in its
|
||||
Registry which is not used by Linux. It may supply the BIOS's
|
||||
non-volatile memory with some info but it may not be kept in sync with
|
||||
the current Window configuration in the Registry ?? If you let a PnP
|
||||
BIOS automatically do the configuring when you start Linux (and have
|
||||
told the BIOS that you don't have a PnP operating system when running
|
||||
For PnP ports, checking on how it's configured under DOS/Windows may
|
||||
(or may not) imply how it's under Linux. Windows stores its
|
||||
configuration info in its Registry which is not used by Linux so they
|
||||
are not necessarily configured the same. If you let a PnP BIOS
|
||||
automatically do the configuring when you start Linux (and have told
|
||||
the BIOS that you don't have a PnP operating system when starting
|
||||
Linux) then Linux should use whatever configuration is in the BIOS's
|
||||
non-volatile memory.
|
||||
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">
|
||||
|
||||
|
@ -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.
|
||||
Then the next time you type "setserial ..." it will display these
|
||||
bogus values without complaint. They will also be officially
|
||||
registered with the kernel as seen by the "scanport" command.
|
||||
Of course the serial port driver will not work correctly (if at all)
|
||||
if you attempt to use such a port. Thus when giving parameters to
|
||||
"setserial" anything goes. Well almost. If you assign one port a
|
||||
base address that is already assigned (such as 3e8) it will not accept
|
||||
it. But if you use 3e9 it will accept it. Unfortunately 3e9 is
|
||||
already assigned since it is within the range starting at base address
|
||||
3e8. Thus the moral of the story is to make sure your data is correct
|
||||
before assigning resources with setserial.
|
||||
registered with the kernel as displayed (at the top of the screen) by
|
||||
the "scanport" command. Of course the serial port driver will not
|
||||
work correctly (if at all) if you attempt to use such a port. Thus
|
||||
when giving parameters to "setserial" anything goes. Well almost. If
|
||||
you assign one port a base address that is already assigned (such as
|
||||
3e8) it will not accept it. But if you use 3e9 it will accept it.
|
||||
Unfortunately 3e9 is already assigned since it is within the range
|
||||
starting at base address 3e8. Thus the moral of the story is to make
|
||||
sure your data is correct before assigning resources with setserial.
|
||||
|
||||
While assignments made by setserial are lost when the PC is powered
|
||||
off, a configuration file may restore them (or a previous
|
||||
|
@ -2164,7 +2173,13 @@ name="Configuration Scripts/Files">
|
|||
|
||||
<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
|
||||
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
|
||||
|
@ -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
|
||||
faster ways to attempt it such as wvdialconf to detect modems, looking
|
||||
at very early boot-time messages, or using <tt>pnpdump
|
||||
--dumpregs</tt>. To try to detect the physical hardware use the -v
|
||||
(verbose) and <tt/autoconfig/ command to <tt/setserial/. If the
|
||||
resulting message shows a uart type such as 16550A, then you're 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
|
||||
--dumpregs</tt>. To try to detect the physical hardware use for
|
||||
example :<newline>
|
||||
<tt>setserial /dev/ttyS2 -v autoconfig</tt><newline>
|
||||
If the resulting message shows a uart type such as 16550A, then you're
|
||||
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
|
||||
"<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
|
||||
gave the wrong irq but when the command was repeated it found the
|
||||
correct irq. In versions of setserial >= 2.15, the results of your
|
||||
last probe test may be saved and put into the configuration file
|
||||
<tt>/etc/serial.conf</tt> which will be used next time you start
|
||||
Linux. At boot-time when the serial module loads (or the like), a
|
||||
probe for UARTs is made automatically and reported on the screen. But
|
||||
the IRQs shown may be wrong. The second report of the same is the
|
||||
result of a script which usually does no probing and thus provides no
|
||||
reliable information as to how the hardware is actually set. It only
|
||||
shows configuration data someone wrote into the script or data that
|
||||
got saved in /etc/serial.conf.
|
||||
last probe test could be automatically saved and put into the
|
||||
configuration file <tt>/etc/serial.conf</tt> which will be used next
|
||||
time you start Linux. At boot-time when the serial module loads (or
|
||||
the like), a probe for UARTs is made automatically and reported on the
|
||||
screen. But the IRQs shown may be wrong. The second report of the
|
||||
same is the result of a script which usually does no probing and thus
|
||||
provides no reliable information as to how the hardware is actually
|
||||
set. It only shows configuration data someone wrote into the script
|
||||
or data that got saved in /etc/serial.conf.
|
||||
|
||||
It may be that two serial ports both have the same IO address set in
|
||||
the hardware. Of course this is not permitted but it sometimes
|
||||
|
@ -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
|
||||
<tt/setserial/ to give the IRQ a ficticious value.
|
||||
|
||||
|
||||
<sect2> Boot-time Configuration <label id="sets_boot_time">
|
||||
<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
|
||||
|
@ -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
|
||||
section is unique to each HOWTO.
|
||||
-->
|
||||
<p> You need to find out the highest speed supported by your hardware.
|
||||
As of late 1998 most serial ports only supported speeds up to 115.2k
|
||||
bps but as of 2001, most support higher speeds. Some 56k internal
|
||||
modems support 230.4k bps (but it may be hard to find out which ones
|
||||
do). Recent Linux kernels support high speeds (over 115.2k) but you
|
||||
might have some problems using it because of one or both of the
|
||||
following reasons:
|
||||
<sect2> Speeds over 115.2k
|
||||
<p> The top speed of 115.2k has been the standard speed since the
|
||||
mid 1990's. By the year 2000, many serial ports supported higher
|
||||
speeds but Linux seldom used them due to lack of drivers. These
|
||||
high-speed ports by default only support 115.2k and must have special
|
||||
software to enable the higher speeds. Today (2001) almost all new
|
||||
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>
|
||||
<item> It may require a special driver or a patch to the serial driver
|
||||
<item> Older versions of an application program (or stty) may not
|
||||
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>
|
||||
For internal modems, only a minority of them advertise that they
|
||||
support speeds of over 115.2k for their built-in serial ports.
|
||||
Will shsmod support these ??
|
||||
|
||||
To support the higher speeds you may get a shsmod (Super High Speed)
|
||||
patch for the serial driver. There is also a module for the VIA
|
||||
VT82C686 chip <url url="www.kati.fi/viahss/">.
|
||||
The patch to support high-speed is called shsmod (Super High Speed).
|
||||
There are both Windows and Linux versions of this patch. See <url
|
||||
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
|
||||
id="divisor_">
|
||||
|
@ -4087,34 +4104,41 @@ the basic concepts.
|
|||
|
||||
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
|
||||
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
|
||||
intervals between bytes (like someone typing characters at a
|
||||
keyboard). When a file is being sent thru the async serial port, the
|
||||
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.
|
||||
keyboard).
|
||||
|
||||
There are certain situations that need to be classified as either
|
||||
sync or async. The async serial port often sends out bytes in a
|
||||
steady stream which would make this a synchronous case but since they
|
||||
still have the start/stop bits (which makes it possible to send them
|
||||
out erratically) it's called async. 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 must be transmitted synchronously.
|
||||
When a file is being sent thru the async serial port, the 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. Is this sync or async? Ignoring the flow control stops, it
|
||||
might seem like sync since it's a steady flow. But it's not because
|
||||
there is no clock signal and the bytes could have been sent
|
||||
erratically since they are framed by start/stop bits.
|
||||
|
||||
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
|
||||
<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
|
||||
synchronous communication which is seldom implemented on PC's. There
|
||||
are pins for sync timing signals as well as for a sync reverse
|
||||
channel. The EIA-232 spec provides for both sync and async but PC's
|
||||
use a UART (Universal Asynchronous Receiver/Transmitter) chip such as
|
||||
a 16450, 16550A, or 16650 and can't deal with sync. For sync one
|
||||
needs a USART chip or the equivalent where the "S" stands for
|
||||
Synchronous. Since sync is a niche market, a sync serial port is
|
||||
likely to be quite expensive.
|
||||
synchronous communication which is seldom implemented in chips for
|
||||
PC's. There are pins for sync timing signals as well as for a sync
|
||||
reverse channel. The EIA-232 spec provides for both sync and async
|
||||
but PC's use a UART (Universal Asynchronous Receiver/Transmitter) chip
|
||||
such as a 16450, 16550A, or 16650 and can't deal with sync. For sync
|
||||
one needs a USRT chip or the equivalent where the "S" stands for
|
||||
Synchronous. A USART chip supports both synchronous and asynchronous.
|
||||
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
|
||||
synchronous standards. For EIA-232, 3 pins of the connector are
|
||||
|
|
|
@ -2,10 +2,13 @@
|
|||
<article>
|
||||
<title> Text-Terminal-HOWTO
|
||||
<author> David S. Lawyer <url url="mailto:dave@lafn.org">
|
||||
<date> v1.23, July 2001
|
||||
<date> v1.24, August 2001
|
||||
|
||||
<!--
|
||||
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.22 May 2001 Clarity: 8-bit, ASCII, national replacement characters,
|
||||
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
|
||||
version look at <url
|
||||
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>
|
||||
v1.23 July 2001: 10-cond. is not RJ45/48 ?, corrupted character
|
||||
attributes<newline>
|
||||
v1.22 Clarity: 8-bit, ASCII, national replacement characters,
|
||||
CP1252=MS-ANSI<newline>
|
||||
v1.21 More on mgetty, getty-login sequence, agetty parity
|
||||
v1.24 Aug. 2001 Respawning too fast due to no such device, block mode
|
||||
obsolete, troubleshooting: displays escape sequences, detective work
|
||||
for repair
|
||||
v1.23 July 2001: 10-cond. is not RJ45/48 ?, corrupted character attributes
|
||||
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
|
||||
chars., Correction: PCTerm doesn't work with MS DOS, troubleshooting:
|
||||
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
|
||||
sending. The terminal "locks" its keyboard and a message or light
|
||||
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 computer is told to stop sending to a terminal. The keyboard is
|
||||
|
@ -1922,17 +1939,18 @@ doesn't yet (2000).
|
|||
|
||||
<tscreen><verb>
|
||||
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
|
||||
RxD Receive Data 3 <-- 2 TxD Transmit Data
|
||||
RTS Request To Send 4 --> 5 CTS Clear 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
|
||||
6 DSR Data Set Ready
|
||||
|
|
||||
DTR Data Terminal Ready 20 --> 8 DCD Carrier Detect
|
||||
|
|
||||
6 DSR Data Set Ready
|
||||
|
||||
</verb></tscreen>
|
||||
<label id="DB_pin-out">
|
||||
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
|
||||
RTS Request To Send 7 --> 5 CTS Clear 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>
|
||||
(Yes, the pins 2 and 3 really do have opposite meanings for DB9 and
|
||||
DB25 connectors!)
|
||||
|
@ -2295,9 +2313,9 @@ Pin Signal Signal Pin
|
|||
4 SG (RxD)--------------------|
|
||||
5 RxD <--------------------------- TxD 3
|
||||
6 DSR <--------------------------- RTS 7
|
||||
|--- DTR 4
|
||||
|--> DTR 4
|
||||
|--> CD 1
|
||||
RI 9
|
||||
(no connection) RI 9
|
||||
</verb></tscreen>
|
||||
<sect3> 8-conductors and 10-conductors
|
||||
<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.
|
||||
Then the next time you type "setserial ..." it will display these
|
||||
bogus values without complaint. They will also be officially
|
||||
registered with the kernel as seen by the "scanport" command.
|
||||
Of course the serial port driver will not work correctly (if at all)
|
||||
if you attempt to use such a port. Thus when giving parameters to
|
||||
"setserial" anything goes. Well almost. If you assign one port a
|
||||
base address that is already assigned (such as 3e8) it will not accept
|
||||
it. But if you use 3e9 it will accept it. Unfortunately 3e9 is
|
||||
already assigned since it is within the range starting at base address
|
||||
3e8. Thus the moral of the story is to make sure your data is correct
|
||||
before assigning resources with setserial.
|
||||
registered with the kernel as displayed (at the top of the screen) by
|
||||
the "scanport" command. Of course the serial port driver will not
|
||||
work correctly (if at all) if you attempt to use such a port. Thus
|
||||
when giving parameters to "setserial" anything goes. Well almost. If
|
||||
you assign one port a base address that is already assigned (such as
|
||||
3e8) it will not accept it. But if you use 3e9 it will accept it.
|
||||
Unfortunately 3e9 is already assigned since it is within the range
|
||||
starting at base address 3e8. Thus the moral of the story is to make
|
||||
sure your data is correct before assigning resources with setserial.
|
||||
|
||||
While assignments made by setserial are lost when the PC is powered
|
||||
off, a configuration file may restore them (or a previous
|
||||
|
@ -3672,7 +3690,13 @@ name="Configuration Scripts/Files">
|
|||
|
||||
<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
|
||||
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
|
||||
|
@ -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
|
||||
faster ways to attempt it such as wvdialconf to detect modems, looking
|
||||
at very early boot-time messages, or using <tt>pnpdump
|
||||
--dumpregs</tt>. To try to detect the physical hardware use the -v
|
||||
(verbose) and <tt/autoconfig/ command to <tt/setserial/. If the
|
||||
resulting message shows a uart type such as 16550A, then you're 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
|
||||
--dumpregs</tt>. To try to detect the physical hardware use for
|
||||
example :<newline>
|
||||
<tt>setserial /dev/ttyS2 -v autoconfig</tt><newline>
|
||||
If the resulting message shows a uart type such as 16550A, then you're
|
||||
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
|
||||
"<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
|
||||
gave the wrong irq but when the command was repeated it found the
|
||||
correct irq. In versions of setserial >= 2.15, the results of your
|
||||
last probe test may be saved and put into the configuration file
|
||||
<tt>/etc/serial.conf</tt> which will be used next time you start
|
||||
Linux. At boot-time when the serial module loads (or the like), a
|
||||
probe for UARTs is made automatically and reported on the screen. But
|
||||
the IRQs shown may be wrong. The second report of the same is the
|
||||
result of a script which usually does no probing and thus provides no
|
||||
reliable information as to how the hardware is actually set. It only
|
||||
shows configuration data someone wrote into the script or data that
|
||||
got saved in /etc/serial.conf.
|
||||
last probe test could be automatically saved and put into the
|
||||
configuration file <tt>/etc/serial.conf</tt> which will be used next
|
||||
time you start Linux. At boot-time when the serial module loads (or
|
||||
the like), a probe for UARTs is made automatically and reported on the
|
||||
screen. But the IRQs shown may be wrong. The second report of the
|
||||
same is the result of a script which usually does no probing and thus
|
||||
provides no reliable information as to how the hardware is actually
|
||||
set. It only shows configuration data someone wrote into the script
|
||||
or data that got saved in /etc/serial.conf.
|
||||
|
||||
It may be that two serial ports both have the same IO address set in
|
||||
the hardware. Of course this is not permitted but it sometimes
|
||||
|
@ -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
|
||||
<tt/setserial/ to give the IRQ a ficticious value.
|
||||
|
||||
|
||||
<sect2> Boot-time Configuration <label id="sets_boot_time">
|
||||
<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
|
||||
|
@ -4676,7 +4702,7 @@ the previous section.
|
|||
<sect2> Symptoms and some fixes <label id="symptoms_">
|
||||
<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
|
||||
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
|
||||
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
|
||||
|
@ -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
|
||||
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
|
||||
display a message telling you that they can't edit binary. But using
|
||||
"cat ...." or "cp .... /dev/tty.." where .... is a binary file, will
|
||||
send the binary to the terminal and likely corrupt things.
|
||||
display a message telling you that they can't edit binary. But you're
|
||||
likely to corrupt things if you: "cat ...." or "cp .... /dev/tty.." or
|
||||
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
|
||||
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">
|
||||
|
||||
<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
|
||||
see <ref id="keyboards_" name="Keyboards">. If the problem involves
|
||||
the serial port itself see the Serial-HOWTO.
|
||||
id="repair_" name="Repair and Diagnose"> section. If it's the
|
||||
keyboard see <ref id="keyboards_" name="Keyboards">. If it responds
|
||||
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:
|
||||
<itemize>
|
||||
|
@ -5228,12 +5257,13 @@ Here is a list of possible problems:
|
|||
Suspect the terminal is defective.
|
||||
<item><ref id="display_freezes" name="Display Freezes (hung
|
||||
terminal)">
|
||||
<item><ref id="displays_garbage" name="Displays Garbage"> Characters you
|
||||
type or see are "foreign" letters/symbols.
|
||||
<item><ref id="displays_foreign" name="Displays Foreign/Weird
|
||||
Characters/Symbols">
|
||||
<item><ref id="displays_esc-seqs" name="Displays Escape Sequences">
|
||||
<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
|
||||
a Key a Few Times">
|
||||
a Key a Few Times">
|
||||
<item><ref id="stopped_" name="If getty run from command line: Programs
|
||||
get stopped"> with message "Stopped"
|
||||
<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
|
||||
easy to find the problem. That's because (except for hardware
|
||||
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
|
||||
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.
|
||||
|
||||
<sect1> Is the Terminal OK ? <label id="term_OK">
|
||||
<p> Many terminals will start up with some words on the
|
||||
screen. If these words convey no error message, it's probably
|
||||
OK. If there is no sign of power (a dark screen, etc.) re-plug in the
|
||||
computer power cord at both ends. Make sure there is power at the
|
||||
wall jack (or at the extension cord end). Try another power cord if
|
||||
you have one. Make sure the terminal is turned on and that its fuse
|
||||
is not blown. A blank (or dim) screen may sometimes be fixed by just
|
||||
turning up the brightness and contrast using knobs or a keyboard key
|
||||
in set-up mode.
|
||||
<p> Many terminals will start up with some words on the screen. If
|
||||
these words convey no error message, it's probably OK. If there is no
|
||||
sign of power (a dark screen, etc.) re-plug in the computer power cord
|
||||
at both ends. Make sure there is power at the wall jack (or at the
|
||||
extension cord end). Try another power cord if you have one. Make
|
||||
sure the terminal is turned on and that its fuse is not blown. A
|
||||
blank (or dim) screen may sometimes be fixed by just turning up the
|
||||
brightness and contrast using knobs or a keyboard key in set-up mode.
|
||||
|
||||
A terminal that's been stored for a long time may
|
||||
take a while to "warm up" as the electrolytic capacitors heal
|
||||
themselves under voltage. If it still won't work See <ref
|
||||
id="repair_" name="Repair & Diagnose"> for tips on repairing it.
|
||||
A terminal that's been stored for a long time may take a while to
|
||||
"warm up" as the electrolytic capacitors heal themselves under
|
||||
voltage. If it still won't work See <ref id="repair_" name="Repair &
|
||||
Diagnose"> for tips on repairing it.
|
||||
|
||||
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
|
||||
|
@ -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.
|
||||
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
|
||||
<p> If getty can't open and/or use a port because of the lack of a
|
||||
positive modem control voltage on one of the pins, then getty might
|
||||
be killed. Then, per the instructions in inittab, getty respawns and
|
||||
tries again, only to be killed again, etc., etc. You may see an error
|
||||
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
|
||||
/etc/inittab from where from where getty was called. Try using
|
||||
the "local" option with getty and/or check the modem control settings
|
||||
and voltages.
|
||||
<p> If the terminal doesn't send the PC a CD signal on one of the pins
|
||||
of the serial port, getty will be killed unless the "local" option has
|
||||
been used with getty. So a quick fix is to just use a "local" option
|
||||
(-L for agetty, "CLOCAL" in /etc/gettydefs for ps_getty).
|
||||
|
||||
Another approach is to determine why CD is not being asserted. In
|
||||
many cases the cable to the terminal simply doesn't have a wire for
|
||||
the CD pin so you must use the "local" option. If there is a wire for
|
||||
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
|
||||
<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
|
||||
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">
|
||||
<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"
|
||||
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).
|
||||
|
||||
<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
|
||||
serial port and see if it works OK.
|
||||
|
||||
<sect1> Displays Garbage <label id="displays_garbage">
|
||||
|
||||
<p> If what you type or see on the screen is not what's expected but
|
||||
looks like a foreign alphabet, math symbols, line-drawing character,
|
||||
etc. then it could be that the many of bytes that are sent to your
|
||||
terminal have the high order bit set (when it shouldn't be). You are
|
||||
looking at the character set (or part of a character set) which has
|
||||
the high order bit set. This may happen if you have the baud rate
|
||||
wrong or parity set wrong (per stty). If you have parity set per stty
|
||||
but inside the terminal it's 8-bit no-parity, then the high order bit
|
||||
(= parity bit) will often be erroneously set. Try stty -F /dev/ttyS?
|
||||
from another terminal to check if the baud rate and parity are
|
||||
correct.
|
||||
<sect1> Displays Foreign/Weird Characters/Symbols
|
||||
<label id="displays_foreign">
|
||||
<p> Don't confuse this with <ref id="displays_esc-seqs" name="Displays
|
||||
Escape Sequences">. If what you type or see on the screen is not
|
||||
what's expected but looks like a foreign alphabet, math symbols,
|
||||
line-drawing character, etc. then it could be that the many of bytes
|
||||
that are sent to your terminal have the high order bit set (when it
|
||||
shouldn't be). You are looking at the character set (or part of a
|
||||
character set) which has the high order bit set. This may happen if
|
||||
you have the baud rate wrong or parity set wrong (per stty). If you
|
||||
have parity set per stty but inside the terminal it's 8-bit no-parity,
|
||||
then the high order bit (= parity bit) will often be erroneously set.
|
||||
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
|
||||
erroneous escape sequence sent to the terminal could have switched
|
||||
character sets. If you are using the mapchan program to change the
|
||||
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
|
||||
<p> You likely have mis-set interrupts> See the Serial-HOWTO section
|
||||
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
|
||||
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
|
||||
symptoms, one may often isolate the trouble to one of the following:
|
||||
bad keyboard, CRT dead, terminal digital electronics failure. It's
|
||||
best to have a service manual, but even if you don't have one, many
|
||||
terminals may still be repaired.
|
||||
will display on the screen. By the symptoms, one may often isolate
|
||||
the trouble to one of the following: bad keyboard, CRT dead, power
|
||||
electronics failure, or digital electronics failure. It's best to
|
||||
have a service manual, but even if you don't have one, you can
|
||||
often still repair it.
|
||||
|
||||
<sect1> Repair Books & Websites <label id="repair_info">
|
||||
<sect2> Books
|
||||
|
@ -5752,40 +5851,43 @@ such names:
|
|||
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
|
||||
small display rectangle on the screen surrounded by a large black
|
||||
border. If it's difficult to adjust, wait a while before adjusting it
|
||||
since it will likely recover some with use (the black borders will
|
||||
shrink).
|
||||
Before adjusting it, leave the terminal on for a while since it will
|
||||
likely recover some with use (the black borders will shrink).
|
||||
|
||||
<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
|
||||
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
|
||||
terminal off to prevent further damage. The problem is likely in the
|
||||
high voltage power supply of several thousand volts. Remove the cover
|
||||
and if the bad spot is not evident, turn it on again for a short time
|
||||
in a dimly lit room to look for arcing. 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.
|
||||
you hear a noise or see/smell smoke, immediately turn the terminal off
|
||||
to prevent further damage. A pop noise may be a capacitor exploding
|
||||
or a fuse blowing. A buzzing noise is likely due to arcing. The
|
||||
problem may be in the high voltage power supply of several thousand
|
||||
volts.
|
||||
|
||||
Remove the cover. Look for discoloration and bulging/cracked
|
||||
capacitors. If the bad spot is not evident, turn it on again for a
|
||||
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
|
||||
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
|
||||
track down the noise you may use a piece of small rubber tubing (such
|
||||
as used in automobiles) as a stethoscope to listen to it. But while
|
||||
you are listening for the noise, the terminal is suffering more damage
|
||||
so try find it fast (but not so fast as to risk getting shocked).
|
||||
terminal off for a while and then turn it back on again. To track
|
||||
down the noise you may use a piece of small rubber tubing (such as
|
||||
used in automobiles) as a stethoscope to listen to it. But while you
|
||||
are listening for the noise, the terminal is suffering more damage so
|
||||
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.
|
||||
Replacing a blown fuse may not solve the problem as the same short may
|
||||
blow the fuse again. Inspect for any darkened spots due to high heat
|
||||
and test those components. Shorted power transistors may cause the
|
||||
fuse to blow. They may be tested with a transistor checker or even
|
||||
with an ohm-meter. Use the low ohm scale on an ohm-meter so that the
|
||||
voltage applied by the meter is low. This will reduce the possible
|
||||
damage to good components caused by this test voltage.
|
||||
A shorted power supply may cause a fuse to blow. Replacing a blown
|
||||
fuse may not solve the problem as the same short may blow the fuse
|
||||
again. Inspect for any darkened spots due to high heat and test those
|
||||
components. Shorted power transistors may cause the fuse to blow.
|
||||
They may be tested with a transistor checker or even with an
|
||||
ohm-meter. Use the low ohm scale on an ohm-meter so that the voltage
|
||||
applied by the meter is low. This will reduce the possible damage to
|
||||
good components caused by this test voltage.
|
||||
|
||||
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
|
||||
|
@ -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
|
||||
terminal.
|
||||
|
||||
By carefully inspecting the circuitry, one may often find the cause of
|
||||
the problem. Look for discoloration, cracks, etc. An intermittent
|
||||
<sect1> Detective work
|
||||
<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
|
||||
ball-point pen (not the metal tip of course). A break in the
|
||||
conductor of a printed circuit board may sometimes be revealed by
|
||||
flexing the board. Solder that looks like it formed a drop or a
|
||||
solder joint with little solder may need re-soldering. Soldering may
|
||||
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
|
||||
newsgroup postings on the Internet to find out what the most frequent
|
||||
types of problems are for your terminal and perhaps information on how
|
||||
to fix them.
|
||||
If you have a common brand of terminal, you may be able to search the
|
||||
Internet (including newsgroup postings) to find out what the most
|
||||
frequent types of problems are for your terminal and perhaps
|
||||
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)
|
||||
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
|
||||
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_">
|
||||
<sect2> Interchangeability
|
||||
<p> The keyboards for terminals are not the same as keyboards for
|
||||
|
@ -6584,38 +6699,42 @@ phone line.
|
|||
|
||||
<sect1> Block Mode <label id="block">
|
||||
|
||||
<sect2> Intro to Block Mode
|
||||
<p> Block mode is seldom used with Linux. In block mode when one types
|
||||
at a terminal, the results are saved in the terminal memory and are
|
||||
not sent just yet to the host computer. Such terminals often have
|
||||
built-in editing capabilities. When the user presses certain keys
|
||||
(such as the send key) what has been saved in the terminal memory is
|
||||
sent to the host computer. Now the Linux editors vi and emacs, react
|
||||
instantly to pressing certain keys but in the above situation such
|
||||
keys will be pressed and nothing will happen since nothing is sent
|
||||
when a key is pressed. Thus using a block mode terminal will not
|
||||
allow the use of such interactive programs. 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> Introduction to Block Mode
|
||||
<p> Block mode is seldom used with Linux and is mainly of historical
|
||||
interest. In block mode, when one types at a terminal the results are
|
||||
saved in the terminal memory and are not sent just yet to the host
|
||||
computer. Such terminals often have built-in editing capabilities.
|
||||
When the user presses certain keys (such as the send key) what has
|
||||
been saved in the terminal memory is sent to the host computer. Now
|
||||
the Linux editors vi and emacs, must react instantly to typing certain
|
||||
keys so block mode isn't feasible. Such editors and other interactive
|
||||
programs can't permit the long delay in sending a keystroke to the
|
||||
computer which is inherent in block mode. So they can't use block
|
||||
mode.
|
||||
|
||||
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
|
||||
<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
|
||||
both block transmission modes and conventional character modes and may
|
||||
be switched from one mode to another. Async terminals which have
|
||||
block modes include HP2622A, VT130, VT131, VT330, VT340, and
|
||||
Visual500. Many later model terminals can emulate block mode. Block
|
||||
modes may include a forms capability where the host computer sends a
|
||||
form to the terminal. Then the user fills it out and hits the send
|
||||
key which sends only the data in the form back to the host computer.
|
||||
The form itself (not the data) is displayed on the screen in protected
|
||||
fields which don't get transmitted to the host.
|
||||
block modes include HP2622A, Wyse60, VT130, VT131, VT330, VT340, and
|
||||
Visual500. Many later model terminals can emulate block mode. But
|
||||
the Linux console can't. Block modes may include a forms capability
|
||||
where the host computer sends a form to the terminal. Then the user
|
||||
fills it out and hits the send key which sends only the data in the
|
||||
form back to the host computer. The form itself (not the data) is
|
||||
displayed on the screen in protected fields which don't get
|
||||
transmitted to the host.
|
||||
|
||||
<sect2> Efficiency
|
||||
<p> Block mode takes a great deal of load off the host computer,
|
||||
especially if the host computer's hardware is designed for block modes
|
||||
(as IBM mainframes were). In character mode every character typed is sent
|
||||
<p> Block mode takes load off the host computer, especially if the
|
||||
host computer's hardware is designed for block modes (as IBM
|
||||
mainframes were). In character mode every character typed is sent
|
||||
immediately to the serial port and usually causes an interrupt at the
|
||||
host computer. The host that receives the byte must stop whatever it
|
||||
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
|
||||
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">
|
||||
<p> (Note: The first book covers much more than just EIA-232.)
|
||||
<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
|
||||
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
|
||||
<p> Display adjustments (must remove cover): Brightness VR202, Height
|
||||
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">
|
||||
|
||||
<sect2> Wyse 85
|
||||
<p> Can emulate VT52/VT100/VT200. Press F3 for setup. Scroll thru
|
||||
setup with up/down keys.
|
||||
<p> Can emulate VT52/VT100/VT200. Press F3 for setup. After moving
|
||||
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
|
||||
<p> Here is the setup Menus of the Wyse99GT (late 1980's). Note that
|
||||
|
|
Loading…
Reference in New Issue