This commit is contained in:
gferg 2000-07-05 17:23:44 +00:00
parent 7944550e11
commit eda66735c2
10 changed files with 3663 additions and 1334 deletions

View File

@ -16,11 +16,11 @@
<revhistory>
<revision>
<revnumber>v4.17</revnumber>
<date>May 16, 2000</date>
<revnumber>v4.20</revnumber>
<date>June 29, 2000</date>
<authorinitials>vv</authorinitials>
<revremark>
Additions to @home and new provider in Bombay, India
Addition to 21st Century Cable
</revremark>
</revision>
</revhistory>
@ -120,7 +120,7 @@ text of the license can be found at
</sect2>
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
</sect1>
<sect1 id="ethernet">
@ -280,10 +280,10 @@ With a little luck, your ethernet card should be working in Windows
95, and ready to rock in Linux.
</para>
<para>
If you live Hampton Roads, VA or Phoenix, AZ
you should read a little note from Mark Solomon
</para>
<sect3 id="solomon">
<title id="solomon.title">Notes from Hampton Roads, VA and Phoenix,
AZ by Mark Solomon:
</title>
<para>
With the @home service in Hampton Roads, VA, it is absolutly neccessary
@ -307,6 +307,7 @@ Ether Express cards can be found at
<ulink
url="http://www.monmouth.com/~jay/Linux/">http://www.monmouth.com/~jay/Linux/</ulink>
</para>
</sect3>
<sect3>
<title>Notes for Baltimore, MD and Colleyville,TX</title>
@ -467,6 +468,89 @@ words "router", "firewall", or "Linux".
</sect3>
<sect3>
<title>Notes from Mobile, Alabama R. Jason Valentine <email>miracle@procyon.com</email>:
</title>
<para>
In Mobile, Comcast cable provides cable modem service through the @home
network. An RCA cable modem (model DCM205) is issued along with a SMC
EZ-Card (10/100) if you don't already have a cable modem.
</para>
<para>
Static IPs are not given, but rather assigned through DHCP. You need to
make your ethernet card (eth*) use DHCP - linuxconf is the easiest way to
set that up. Next, you'll need to find the following line in /sbin/ifup
</para>
<programlisting>
-----------------------------------------------------------------
if [ -n "$PUMP" ]; then
echo -n "Determining IP information for $DEVICE..."
if /sbin/pump -i $DEVICE; then
echo " done."
else
echo " failed."
exit 1
fi
else ...
-----------------------------------------------------------------
</programlisting>
<para>
and change it to
</para>
<programlisting>
-----------------------------------------------------------------
if [ -n "$PUMP" ]; then
echo -n "Determining IP information for $DEVICE..."
if /sbin/pump -i $DEVICE -h hostname; then
echo " done."
else
echo " failed."
exit 1
fi
else ...
-----------------------------------------------------------------
</programlisting>
<para>
Where hostname is the computer name (cc123456-a - or whatever yours may
be.)
</para>
</sect3>
<sect3>
<title>Notes from Auburn, Alabama by Andrew W. Jones
<email>andywjones@home.com</email>
</title>
<para>
I would like to note that Auburn's @home service supports DHCP. If you
simply issue `dhcpcd -h hostname` all your network settings are taken
care of...
</para>
</sect3>
<sect3>
<title>Notes from Santa Barbara, California by Tim Newsome
<email>nuisance@cmu.edu</email>
</title>
<para>
My provider (Cox@Home, in Santa Barbara, CA) does the same thing as
<link linkend=solomon endterm="solomon.title"></link>. I'm using Debian,
with dhclient version 2.0. I added the following line to my
/etc/dhclient.conf: send host-name "cx803168-a"; Where cx803168-a is the
hostname I've been assigned. It is listed on the purchase order.
</para>
</sect3>
<para>
Information about @Home Service can be found at
<ulink url="http://www.home.com/">http://www.home.com/</ulink>.
@ -488,7 +572,7 @@ url="http://www.oswg.org/oswg-nightly/DHCP.html">http://www.oswg.org/oswg-nightl
</para>
<para>
If this doesn't work out for you you should check out
If this doesn't work out for you you should check out
<ulink
url="http://www.math.uakron.edu/RoadRunner/">http://www.math.uakron.edu/RoadRunner/</ulink>
for Akron, Ohio and
@ -507,18 +591,30 @@ One more thing that might be worth mentioning: you will need a Windows NT,
95, or 98 or Macintosh PC for the RoadRunner installers to configure the
modem. It's not technically necessary, but they will insist, and will not
install on a Linux system. It's also best not to mention the IPFW system
while they're around.
while they're around.
</para>
<para>
Information about RoadRunner Service can be found at
<para>
Additional notes by Phil Baird <email>pjb@rocsoft.com</email> from Rochester, NY:
</para>
<para>
About getting hooked up initially. It is true the RR techs don't want
to talk about Linux. However, they now offer us a "self-install" that is
half the price ($50). Basically, they come out, run the cable, and make
sure the signal gets to the modem. You must supply your own nic card and
do the rest of the setup on your own.
</para>
<para>
Information about RoadRunner Service can be found at
<ulink url="http://www.rr.com/">http://www.rr.com/</ulink>.
</para>
</sect2>
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
<sect2>
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
<sect2>
<title>Rogers@Home</title>
<para>
@ -540,7 +636,7 @@ for Rogers@Home at
http://members.home.net/randal.leavitt/CableModemConnectionNotes.html</ulink>.
</para>
<para>Notes from Greg Jacobs</para>
<para>Notes from Greg Jacobs <email>gregjacobs@home.com</email></para>
<para>
They now only give out dynamic IP's. The techs says its pretty much fixed
@ -942,8 +1038,8 @@ Information about Videotron can be found at
<sect2>
<title>Telekabel (Teleweb), Austria</title>
<para>
According to Andreas Kostyrka:
</para>
There are two approaches to setting up your Telekabel
connection. First one is the approach used by Andreas Kostyrka: </para>
<itemizedlist>
<listitem><para>
@ -973,6 +1069,30 @@ url="ftp://ftp.redhat.com/pub/contrib/readmes/3c5x9utils-1.0-1.README">ftp://ftp
</listitem>
</itemizedlist>
<para>
Second approach is provided by Marcel Ebmer
<email>marcel.ebmer@chello.at</email>
</para>
<itemizedlist>
<listitem><para>
Do NOT bother using dhcpcd or pump!
</para></listitem>
<listitem><para>
In case you don't know, ask the provider for your IP-address, which
is static, for the DNSs, the Gateway and use linuxconf to configure the
network. For Vienna: 960 60 333 is the helpdesk's telephone number They
officially do not support linux, but you need not mention you
are running linux.
</para></listitem>
<listitem><para>
Choose a unique name for your PC....not "localhost"
</para></listitem>
</itemizedlist>
<para>
Information about Telekabel can be found at <ulink
url="http://www.telekabel.at/">http://www.telekabel.at/</ulink>.
@ -1898,6 +2018,29 @@ my Linux box (which I never do really) I can go in and update the IP
address that my web server www.xanderbelly.com and mail server
</para>
<para>
Additional notes:
</para>
<para>
The terms and conditions of 21st Century cable modem contains the
following statement:
</para>
<para>
Distributing unsolicited information in any manner is prohibited on 21st
Century's network and will result in termination of 21st Century
service. (I.e. junk email, etc...) Any use of a server type application
or service on a computer system connected to 21st Century Cable Modem
Service is prohibited and may result in termination of 21st Century
Cable Modem Service (i.e. web, ftp, or game servers, etc...). 21st
Century Cable Modem Service is for client type applications ONLY.
</para>
<para>
Also, technically, each additional dynamic IP address beyond the first
one carries a $4.95 monthly charge.
</para>
</sect2>
@ -2060,7 +2203,7 @@ under a modern linux distribution.
Last thing worth to be said is that Supercable doesn't provide support
for Linux but you can always ask your questions in news.supercable.es in
the Linux area. Their web page is located at <ulink
url="http://www.supercable.es">http://www.supercable.es</ulink>
url="http://www.supercable.es/">http://www.supercable.es/</ulink>
(WARNING: get
ready to download an almost 1MB of useless Macromedia's Flash garbage).
</para>
@ -2196,11 +2339,248 @@ worked. The Cable Modem that was used (provided by Hathway) was a SurfBoard 3100
</para>
</sect2>
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
<sect2>
<title>Siti Cable, Bangalore, India</title>
<para>
This information is provided by Vinay Avasthi <email>vinay@avasthi.com</email>:
</para>
<para>
Zee Telefilms has partnered with Siti Cable in Bangalore, India to
provide cable modem service. I subscribed to this service and it kind of
worked out of the box from linux.
</para>
<para>
I am using Redhat 6.1 on a IBM Thinkpad 600 with Xircom Realport
Ethernet card. On autodetect links mentions that the card will be used
in 10MB/s only.
</para>
<para>
Only problem that I faced was on shutdown, the system will hang while
shutting down pump. To temporarily fix the problem I just put that
particular like in rc-scripts to background.
</para>
<para>
The steps that one needs to perform are as follows.
</para>
<itemizedlist>
<listitem><para>
- Need to have an ethernet card that works with Linux.
</para></listitem>
<listitem><para>
- Enable DHCP by using pump. For some reason dhcpd does not seem to
work.
</para></listitem>
</itemizedlist>
<para>
Only thing that I would suggest is to be careful regarding support since
the tech support do not seem to know much about software.
</para>
</sect2>
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
<sect2>
<title>Com Hem, Sweden</title>
<para>
This information is provided by Zoltan Arpadffy <email>arpadffy@polarfox.com</email>:
</para>
<para>
com hem <ulink url="http://www.comhem.se/">http://www.comhem.se/</ulink>
is a Swedish cable TV/Internet provider, a sub-company
of Telia <ulink url="http://www.telia.com/">http://www.telia.com/</ulink>
the biggest Scandinavian carrier.
com hem does not support any other OS but Windows and Mac-OS (as com hem support
claims ), but it is not so complicate to set up on Linux as well.
</para>
<para>
com hem sells NetGame's cable modem (NeMo). Initial speed is 512 kb/s and it can be
set up to 10Mb/s. You can order it with or without Ethernet card.
com hem internet service is available in the bigger cities all over Sweden.
</para>
<sect3>
<title>1. Setting up a single node</title>
<itemizedlist>
<listitem>
<para>
set up your network card to work properly
(<ulink url="http://www.linuxdoc.org/HOWTO/Ethernet-HOWTO.html">Ethernet HOWTO</ulink>)
</para>
</listitem>
<listitem>
<para>
configure DHCP to that card (DHCP mini-HOWTO)
</para>
</listitem>
<listitem>
<para>
you need some browser what supports Java-script (as Netscape) and go to the login
site <ulink url="http://login1.telia.com/">http://login1.telia.com/</ulink>
</para>
</listitem>
<listitem>
<para>
- fill in your user-name and password (provided by com hem) ... and you're there.
</para>
</listitem>
</itemizedlist>
<programlisting>
Network what you'd become a member is:
IP address: Assigned by com hem
Subnet mask: 255.255.255.0
Default GW: Assigned by com hem
Hostname: Assigned by com hem
Domain name: telia.com
Primary DNS server (nameserver): 10.0.0.1
Secondary DNS server (nameserver): 10.0.0.2
</programlisting>
</sect3>
<sect3><title>
2. Connecting your home LAN (if you have more than one machine)
</title>
<para>
We have to turn one computer to gateway (I did it with an old Pentium 66MHz/16M)
<itemizedlist>
<listitem><para>
install two network cards in your gateway
<ulink url="http://www.linuxdoc.org/HOWTO/NET3-4-HOWTO.html">NET3-4 HOWTO</ulink>
</para></listitem>
<listitem><para>
first set up (and connect) to your LAN
</para></listitem>
<listitem><para>
second network card have to use DHCP
(<ulink url="http://www.oswg.org/oswg-nightly/DHCP.html">DHCP mini-HOWTO</ulink>)
</para></listitem>
<listitem><para>
enable ip forwarding
<programlisting>
net.ipv4.ip_forward = 1 in /etc/sysctl.conf or by
echo "1" > /proc/sys/net/ipv4/ip_forwarding
</programlisting>
</para></listitem>
<listitem><para>
set up IP masquerade
(<ulink url="http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html">IP Masquerade mini-HOWTO</ulink>)
<programlisting>
ipchains -P forward DENY
ipchains -A forward -s your_network_here/24 -j MASQ
</programlisting>
(for me it was ipchains -A forward -s 192.168.10.0/24 -j MASQ)
check your routing table with route command... it should be something like below:
<programlisting>
Destination Gateway Genmask Flags Metric Ref Use Iface
gate.polarfox.h * 255.255.255.255 UH 0 0 0 eth0
telia-net * 255.255.255.0 U 0 0 0 eth1
polarfox-net * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default h2n5fdt22o429.t 0.0.0.0 UG 0 0 0 eth1
</programlisting>
Useful literature for security issues is
<ulink url="http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html">Linux IPCHAINS HOWTO</ulink>
</para></listitem>
<listitem><para>
configure default gateway for all other hosts in your LAN.
On unix nodes it should look something like:
<programlisting>
Destination Gateway Genmask Flags Metric Ref Use Iface
sea.polarfox.ho * 255.255.255.255 UH 0 0 0 eth0
polarfox-net * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default gate.polarfox.h 0.0.0.0 UG 0 0 0 eth0
</programlisting>
Default gateway setup for other OSs you can find a very nice description in IP
Masquerade mini-HOWTO
</para></listitem>
<listitem><para>
configure name server on your gateway DNS HOWTO or just set up your hosts to use
Telia's name server (10.0.0.1)
</para></listitem>
<listitem><para>
log in from any host <ulink url="http://login1.telia.com/">http://login1.telia.com/</ulink>
and you're on the road with all your LAN.
</para></listitem>
</itemizedlist>
</para>
</sect3>
<sect3>
<title>
Problems:
</title>
<itemizedlist>
<listitem>
<para>
If you don't use browser with Java-script support, you can not log in.
Solution: there is no elegant solution. Without it you can not log in and open the
connection.
</para>
</listitem>
<listitem>
<para>
After some network inactivity period (10-15 minutes) your connection will be
terminated and you have to log in again... meanwhile your gateway and all your inner
services will be unreachable from outside as well (if you're running some web server
at home etc).
Solution: start one ping process or even more elegant solution is to submit one cron
job for every 5-10 minutes on the gateway, to "do something" though the network.
</para>
</listitem>
</itemizedlist>
<para>
I did it with /etc/cron.d/keep-alive file when contains:
</para>
<programlisting>
# fake connection in order to keep line alive
# every 5 minutes send some packages
MAILTO=""
*/5 * * * * ping -f -c 5 www.polarfox.com
</programlisting>
</sect3>
</sect2>
</sect1>
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
<sect1 id="hybrid">
<sect1 id="hybrid">
<title>Hybrid Cable modem ISPs</title>
<para>
If you think you have the card recognized you have to now look at the

View File

@ -9,7 +9,7 @@
<article>
<title>BASH Programming - Introduction HOW-TO</title>
<author>by Mike G <tt/mikkey@dynamo.com.ar/</author>
<date>v0.07, 22 June 2000</date>
<date>27 June 2000</date>
<abstract>
This article intends to help you to start programming
basic-intermediate shell scripts. It does not intend to be an
@ -27,11 +27,11 @@
Introduction
<sect1>
Getting the latest version
<sect1>
Getting the latest version
<p>
<htmlurl url="http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html"
<p>
<htmlurl url="http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html"
name="http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html">
@ -90,6 +90,9 @@ Very simple Scripts
to use to run the file.
<P> The second line is the only action performed by this script,
which prints 'Hello World' on the terminal.
<P> If you get something like <it>./hello.sh: Command not found.</it>
Probably the first line '#!/bin/bash' is wrong, issue whereis bash or see
'finding bash' to see how sould you write this line.
</sect1>
<sect1>
A very simple backup script
@ -402,7 +405,7 @@ Conditionals
#!/bin/bash
T1="foo"
T2="bar"
if [ $T1 = $T2 ]; then
if [ "$T1" = "$T2" ]; then
echo expression evaluated as true
else
echo expression evaluated as false
@ -492,7 +495,7 @@ Loops for, while and until
</verb></tscreen>
<P>
<P> This script 'emulates' the well known
(C, Pascal, perl, python, etc) 'for' structure
(C, Pascal, perl, etc) 'for' structure
</sect1>
<!-- until -->
<sect1>
@ -573,10 +576,10 @@ User interfaces
#!/bin/bash
OPTIONS="Hello Quit"
select opt in $OPTIONS; do
if [ $opt = "Quit" ]; then
if [ "$opt" = "Quit" ]; then
echo done
exit
elif [ $opt = "Hello" ]; then
elif [ "$opt" = "Hello" ]; then
echo Hello World
else
clear
@ -596,7 +599,7 @@ User interfaces
<P>
<tscreen><verb>
#!/bin/bash
if [ -z $1 ]; then
if [ -z "$1" ]; then
echo usage: $0 directory
exit
fi
@ -620,7 +623,8 @@ Misc
<!-- Reading user input -->
<sect1>
Reading user input with read
<P> In many ocations you may want to prompt the user for some input, and there are several ways
<P> In many ocations you may want to prompt the user for some input, and
there are several ways
to achive this. This is one of those ways:
<tscreen><verb>
#!/bin/bash
@ -628,7 +632,8 @@ Misc
read NAME
echo "Hi $NAME!"
</verb></tscreen>
<P> As a variant, you can get multiple values with read, this example may clarify this.
<P> As a variant, you can get multiple values with read, this example may
clarify this.
<tscreen><verb>
#!/bin/bash
echo Please, enter your firstname and lastname
@ -756,6 +761,11 @@ Tables
echo "S1('$S1') is equal to S1('$S1')"
fi
</verb></tscreen>
<p> I quote here a note from a mail, sent buy Andreas Beck, refering to use
<it/if [ $1 = $2 ]/.
<p> This is not quite a good idea, as if either $S1 or $S2 is empty, you will
get a parse error. x$1=x$2 or "$1"="$2" is better.
</sect1>
<!-- Arithmetic operators -->
@ -765,7 +775,7 @@ Tables
<P> -
<P> *
<P> /
<P> % (reminder)
<P> % (remainder)
</sect1>
<!-- Arithmetic relational operators -->
@ -785,25 +795,154 @@ Tables
<!-- Useful commands -->
<sect1>
Useful commands
<P>
<P> sed (stream editor - very useful)
<P> gawk
<P> grep (show line matching this or not matching that)
<P> wc (count words, lines)
<P> sort
<P> bc (more than a calculator)
<P> cut (edit columns)
<P> tput (get information from the current terminal)
<P> It it higly recommended to be familiarized with
this programs (at least). There are tons of little
programs that will let you do real magic in a
command line.
<P> This section was re-written by Kees (see thank to...)
<P> Some of these command's almost contain complete programming languages.
From those commands only the basics will be explained. For a more detailed
description, have a closer look at the man pages of each command.
<bf/sed/ (stream editor)
<P> Sed is a non-interactive editor. Instead of altering a file by moving the
cursor on the screen, you use a script of editing instructions to sed, plus the
name of the file to edit. You can also describe sed as a filter. Let's have
a look at some examples:
<tscreen><verb>
$sed 's/to_be_replaced/replaced/g' /tmp/dummy
</verb></tscreen>
<P> Sed replaces the string 'to_be_replaced' with the string 'replaced' and
reads from the /tmp/dummy file. The result will be sent to stdout (normally
the console) but you can also add '> capture' to the end of the line above so
that sed sends the output to the file 'capture'.
<tscreen><verb>
$sed 12, 18d /tmp/dummy
</verb></tscreen>
<P> Sed shows all lines except lines 12 to 18. The original file is not altered by this command.
<bf/awk/ (manipulation of datafiles, text retrieval and processing)
<P> Many implementations of the AWK programming language exist (most known interpreters are GNU's
gawk and 'new awk' mawk.) The principle is simple: AWK scans for a pattern, and for every
matching pattern a action will be performed.
<P> Again, I've created a dummy file containing the following lines:
<P> <it/"test123/
<P> <it/test/
<P> <it/tteesstt"/
<tscreen><verb>
$awk '/test/ {print}' /tmp/dummy
</verb></tscreen>
<P> test123
<P> test
<P> The pattern AWK looks for is 'test' and the action it performs when it found a line in the file
/tmp/dummy with the string 'test' is 'print'.
<tscreen><verb>
$awk '/test/ {i=i+1} END {print i}' /tmp/dummy
</verb></tscreen>
<P> 3
<P> When you're searching for many patterns, you should replace the text between the quotes with '-f
file.awk' so you can put all patterns and actions in 'file.awk'.
<bf/grep/ (print lines matching a search pattern)
<P> We've already seen quite a few grep commands in the previous chapters, that display the lines
matching a pattern. But grep can do more.
<tscreen><verb>
$grep "look for this" /var/log/messages -c
</verb></tscreen>
<P> 12
<P> The string "look for this" has been found 12 times in the file /var/log/messages.
<P> [ok, this example was a fake, the /var/log/messages was tweaked :-)]
<bf/wc/ (counts lines, words and bytes)
<P> In the following example, we see that the output is not what we expected. The dummy file, as used
in this example, contains the following text:
<it/"bash introduction/
<it/ howto test file"/
<tscreen><verb>
$wc --words --lines --bytes /tmp/dummy
</verb></tscreen>
<P> 2 5 34 /tmp/dummy
<P> Wc doesn't care about the parameter order. Wc always prints them in a standard order, which is,
as you can see: <lines><words><bytes><filename>.
<bf/sort/ (sort lines of text files)
<P> This time the dummy file contains the following text:
<P> <it/"b/
<P> <it/c/
<P> <it/a"/
<tscreen><verb>
$sort /tmp/dummy
</verb></tscreen>
<P> This is what the output looks like:
<P> <it/a/
<P> <it/b/
<P> <it/c/
<P> Commands shouldn't be that easy :-)
<bf/bc/ (a calculator programming language)
<P> Bc is accepting calculations from command line (input from file. not from redirector or pipe),
but also from a user interface. The following demonstration shows some of the commands. Note that
<P> I start bc using the -q parameter to avoid a welcome message.
<tscreen><verb>
$bc -q
</verb></tscreen>
<P> <it/1 == 5/
<P> <it/0/
<P> <it/0.05 == 0.05/
<P> <it/1/
<P> <it/5 != 5/
<P> <it/0/
<P> <it/2 ^ 8/
<P> <it/256/
<P> <it/sqrt(9)/
<P> <it/3/
<P> <it/while (i != 9) {/
<P> <it/i = i + 1;/
<P> <it/print i/
<P> <it/}/
<P> <it/123456789/
<P> <it/quit/
<bf/tput/ (initialize a terminal or query terminfo database)
<P> A little demonstration of tput's capabilities:
<tscreen><verb>
$tput cup 10 4
</verb></tscreen>
<P> The prompt appears at (y10,x4).
<tscreen><verb>
$tput reset
</verb></tscreen>
<P> Clears screen and prompt appears at (y1,x1). Note that (y0,x0) is the upper left corner.
<tscreen><verb>
$tput cols
</verb></tscreen>
<it/80/
<P> Shows the number of characters possible in x direction.
<P> It it higly recommended to be familiarized with these programs (at least). There are tons of
little programs that will let you do real magic on the command line.
<P> [some samples are taken from man pages or FAQs]
</sect1>
</sect>
@ -980,16 +1119,20 @@ About the document
<item> Jon Abbott for sending comments about evaluating arithmetic expressions.
<item> Laurent Martelli for translating this document to French (soon here the URL)
<item> Felix Hudson for writing the <it/renna/ script
<item> Kees van den Broek (for sending many corrections)
<item> Kees van den Broek
(for sending many corrections, re-writting usefull comands section)
<item> Mike (pink) made some suggestions about locating bash and testing files
<item> fiesh make a nice suggestion for the loops section.
<item> Fiesh make a nice suggestion for the loops section.
<item> Lion suggested to mention a common error (./hello.sh: Command not found.)
<item> Andreas Beck made several corrections and coments.
</itemize>
</sect1>
<sect1>
History
<p> Added the section usefull commands re-writen by Kess.
<p> More corrections and suggestions incorporated.
<p> Samples added on string comparison.
<p> v0.8 More little additions.
<p> v0.8 droped the versioning, I guess the date is enought.
<p> v0.7 More corrections and some old TO-DO sections written.
<p> v0.6 Minor corrections.
<p> v0.5 Added the redirection section.

File diff suppressed because it is too large Load Diff

View File

@ -40,7 +40,7 @@ C-C++ Beautifier HOW-TO
<author>Al Dev (Alavoor Vasudevan)
<htmlurl url="mailto:alavoor@yahoo.com"
name="alavoor@yahoo.com">
<date>v3.0, 21 April 2000
<date>v4.0, 03 July 2000
<abstract>
This document will help you to format (beautify) the C/C++ programs so
that it is more readable and confirms to your site C/C++ coding standards.
@ -79,12 +79,24 @@ On Linux/Unixes there is a command called <bf>"indent"</bf> and <bf>"cb"</bf>
<bf>cb</bf> work for only "C" programs. For "C++" programs use
<bf>"bcpp"</bf>. Download the beautifier program from one of the following
<itemize>
<item>C++ : BCPP site is at <url url="http://www.clark.net/pub/dickey/bcpp/bcpp.html">
<item>C++ : <url url="http://www.consultix-inc.com/www.consultix-inc.com/c++b.html">
<item>C++ : BCPP site is at
<url url="http://dickey.his.com/bcpp/bcpp.html">
or at
<url url="http://www.clark.net/pub/dickey">
<item>C++ : BCPP ftp site is at
<url url="ftp://dickey.his.com/bcpp/bcpp.tar.gz">
<item>C++ : <url url="http://www.consultix-inc.com/c++b.html">
<item>C : <url url="http://www.chips.navy.mil/oasys/c/">
</itemize>
I used BCPP to format the C++ programs and it worked fine for me. You
may want to check other tools and use the one which you may like the most.
BCPP was written by Steven De Toni at
<htmlurl url="mailto:
steve@alpha.ocbbs.gen.nz
" name="
steve@alpha.ocbbs.gen.nz
">
<!--
*******************************************
************ End of Section ***************
@ -319,7 +331,7 @@ Visit following locators which are related to C, C++ -
<item> <url url="http://metalab.unc.edu/LDP/HOWTO/C++Programming-HOWTO.html" name="C++ Programming HOWTO">
<item> <url url="http://metalab.unc.edu/LDP/HOWTO/CVS-HOWTO.html" name="CVS HOWTO for C++ programs">
<item> Linux goodies main site <url url="http://www.aldev.8m.com">
<item> Linux goodies mirror site <url url="http://www.aldev.webjump.com">
<item> Linux goodies mirror site <url url="http://aldev.webjump.com">
</itemize>
<!--
*******************************************
@ -334,38 +346,55 @@ Visit following locators which are related to C, C++ -
<sect> Other Formats of this Document
<p>
This document is published in 11 different formats namely - DVI, Postscript,
Latex, Adobe Acrobat PDF,
Latex, Adobe Acrobat PDF,
LyX, GNU-info, HTML, RTF(Rich Text Format), Plain-text, Unix man pages and SGML.
<itemize>
<item>
You can get this HOWTO document as a single file tar ball in HTML, DVI,
Postscript or SGML formats from -
<url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/other-formats/">
or
<url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/other-formats/">
<url url="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats/">
<item>Plain text format is in: <url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO">
or
<url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO">
<item>Plain text format is in: <url url="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO">
<item>Translations to other languages like French, German, Spanish,
Chinese, Japanese are in
<url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO">
or <url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO">
<url url="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO">
Any help from you to translate to other languages is welcome.
</itemize>
The document is written using a tool called "SGML tool" which can be got from -
<url url="http://www.xs4all.nl/~cg/sgmltools/">
Compiling the source you will get the following commands like
<itemize>
<item>sgml2html C-C++Beautifier-howto.sgml (to generate html file)
<item>sgml2rtf C-C++Beautifier-howto.sgml (to generate RTF file)
<item>sgml2latex C-C++Beautifier-howto.sgml (to generate latex file)
<item>sgml2html C-C++Beautifier-HOWTO.sgml (to generate html file)
<item>sgml2rtf C-C++Beautifier-HOWTO.sgml (to generate RTF file)
<item>sgml2latex C-C++Beautifier-HOWTO.sgml (to generate latex file)
</itemize>
This document is located at -
LaTeX documents may be converted into PDF files simply by
producing a Postscript output using <bf>sgml2latex</bf> ( and dvips) and running the
output through the Acrobat <bf>distill</bf> (<url url="http://www.adobe.com">) command as follows:
<code>
bash$ man sgml2latex
bash$ sgml2latex filename.sgml
bash$ man dvips
bash$ dvips -o filename.ps filename.dvi
bash$ distill filename.ps
bash$ man ghostscript
bash$ man ps2pdf
bash$ ps2pdf input.ps output.pdf
bash$ acroread output.pdf &
</code>
Or you can use Ghostscript command <bf>ps2pdf</bf>.
ps2pdf is a work-alike for nearly all the functionality of
Adobe's Acrobat Distiller product: it
converts PostScript files to Portable Document Format (PDF) files.
<bf>ps2pdf</bf> is implemented as a very small command script (batch file) that invokes Ghostscript, selecting a special "output device"
called <bf>pdfwrite</bf>. In order to use ps2pdf, the pdfwrite device must be included in the makefile when Ghostscript was compiled;
see the documentation on building Ghostscript for details.
This howto document is located at -
<itemize>
<item> <url url="http://metalab.unc.edu/LDP/HOWTO/C-C++Beautifier-HOWTO.html">
<item> <url url="http://sunsite.unc.edu/LDP/HOWTO/C-C++Beautifier-HOWTO.html">
</itemize>
Also you can find this document at the following mirrors sites -
@ -376,7 +405,7 @@ Also you can find this document at the following mirrors sites -
<item> <url url="http://www.redhat.com/linux-info/ldp/HOWTO/C-C++Beautifier-HOWTO.html">
<item> Other mirror sites near you (network-address-wise) can be found at
<url url="http://metalab.unc.edu/LDP/hmirrors.html">
<url url="http://sunsite.unc.edu/LDP/hmirrors.html">
select a site and go to directory /LDP/HOWTO/C-C++Beautifier-HOWTO.html
</itemize>
@ -384,39 +413,40 @@ select a site and go to directory /LDP/HOWTO/C-C++Beautifier-HOWTO.html
In order to view the document in dvi format, use the xdvi program. The xdvi
program is located in tetex-xdvi*.rpm package in Redhat Linux which can be
located through ControlPanel | Applications | Publishing | TeX menu buttons.
<tscreen><verb>
To read dvi document give the command -
xdvi -geometry 80x90 howto.dvi
And resize the window with mouse. See man page on xdvi.
<tscreen><verb>
xdvi -geometry 80x90 howto.dvi
man xdvi
</verb></tscreen>
And resize the window with mouse.
To navigate use Arrow keys, Page Up, Page Down keys, also
you can use 'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' letter
keys to move up, down, center, next page, previous page etc.
To turn off expert menu press 'x'.
</verb></tscreen>
You can read postscript file using the program 'gv' (ghostview) or
'ghostscript'.
The ghostscript program is in ghostscript*.rpm package and gv
program is in gv*.rpm package in Redhat Linux
which can be located through ControlPanel | Applications | Graphics menu
buttons. The gv program is much more user friendly than ghostscript.
Ghostscript and gv are also available on other platforms like OS/2,
Windows 95 and NT.
<tscreen><verb>
To read postscript document give the command -
gv howto.ps
Also ghostscript and gv are available on other platforms like OS/2,
Windows 95 and NT, you view this document even on those platforms.
<itemize>
<item>Get ghostscript for Windows 95, OS/2, and for all OSes from <url url="http://www.cs.wisc.edu/~ghost">
</itemize>
To use ghostscript give -
To read postscript document give the command -
<tscreen><verb>
gv howto.ps
ghostscript howto.ps
</verb></tscreen>
<itemize>
<item>Get ghostscript for Windows95, OS/2 and all OSes from <url url="http://www.cs.wisc.edu/~ghost">
</itemize>
You can read HTML format document using Netscape Navigator, Microsoft Internet
explorer, Redhat Baron Web browser or any other web browsers.
explorer, Redhat Baron Web browser or any of the 10 other web browsers.
You can read the latex, LyX output using LyX a "X-Windows" front end to latex.
You can read the latex, LyX output using LyX a X-Windows front end to latex.
<!--
*******************************************
************ End of Section ***************

View File

@ -8,8 +8,8 @@
<!-- Title information -->
<title>Linux IPCHAINS-HOWTO
<author>Paul Russell, <tt>ipchains@rustcorp.com</tt>
<date>v1.0.7, 12 March 1999
<author>Rusty Russell
<date>v1.0.8, Tue Jul 4 14:20:53 EST 2000
<abstract>
This document aims to describe how to obtain, install and configure
the enhanced IP firewalling chains software for Linux, and
@ -76,15 +76,19 @@ some functionality that ipchains offers.
<sect1>Where?<label id="intro-where">
<p>
The official page is
<url url="http://www.rustcorp.com/linux/ipchains"
name="The Linux IP Firewall Chains Page">
The official page is in three places:
<url url="http://netfilter.filewatcher.org/ipchains"
name="Thanks to Penguin Computing">
<url url="http://www.samba.org/netfilter/ipchains"
name="Thanks to the SAMBA Team">
<url url="http://netfilter.kernelnotes.org/ipchains"
name="Thanks to Jim Pick">
<p>
There is a mailing list for bug reports, discussion, development and
usage. Join the mailing list by sending a message containing the word
``subscribe'' to ipchains-request at rustcorp.com. To mail to the
list use `ipchains' instead of `ipchains-request'.
``subscribe ipchains-list'' to subscribe at east.balius.com. To mail
to everyone on the list use ipchains-list at east.balius.com.
<sect>Packet Filtering Basics
@ -216,8 +220,8 @@ for how to make sure they are restored the next time Linux is booted.
old IP Firewall code. There is a set of useful scripts available from
the ipchains ftp site:
<url url="ftp://ftp.rustcorp.com/ipchains/ipchains-scripts-1.1.2.tar.gz"
name="ftp://ftp.rustcorp.com/ipchains/ipchains-scripts-1.1.2.tar.gz">
<url url="http://netfilter.filewatcher.org/ipchains/ipchains-scripts-1.1.2.tar.gz"
name="http://netfilter.filewatcher.org/ipchains/ipchains-scripts-1.1.2.tar.gz">
This contains a shell script called <tt>ipfwadm-wrapper</tt> which
@ -262,8 +266,8 @@ case "$1" in
stop)
echo -n "Turning off packet filtering:"
echo 0 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -X
/sbin/ipchains -F
/sbin/ipchains -X
/sbin/ipchains -P input ACCEPT
/sbin/ipchains -P output ACCEPT
/sbin/ipchains -P forward ACCEPT
@ -322,10 +326,10 @@ Use ifconfig to find out, and adjust to taste.
<p>
You can buy off-the-shelf firewalls. An excellent one is WatchGuard's
FireBox. It's excellent because I like it, it's secure, it's
Linux-based, and because they are funding the maintenance of ipchains
as well as the new firewalling code (aimed for 2.3). In short,
WatchGuard are paying for me to eat while I work for you. So please
consider their stuff.
Linux-based, and because they funded the maintenance of ipchains as
well as the new firewalling code (for 2.4). In short, WatchGuard were
paying for me to eat while I work for you. So please consider their
stuff.
<url url="http://www.watchguard.com" name="http://www.watchguard.com">
@ -346,8 +350,8 @@ common. Read carefully, because they are each subtly different.
<p>
In this scenario, packets from the private network never traverse the
Internet, and vice versa. The IP addresses of the private network
should be assigned from the RFC1597 Private Network Allocations
(ie. 10.*.*.*, 172.16.*.* or 192.168.*.*).
should be assigned from the RFC1918 Address Allocation for Private
Internets (ie. 10.*.*.*, 172.16.*.*-172.31.*.* or 192.168.*.*).
<p>
The only way things ever connect to the Internet is by connecting to
@ -411,8 +415,8 @@ is made from 192.168.1.100 (myhost) port 1050, to 192.168.1.1
<p>
In this scenario, packets from the private network never traverse the
Internet, and vice versa. The IP addresses of the private network
should be assigned from the RFC1597 Private Network Allocations
(ie. 10.*.*.*, 172.16.*.* or 192.168.*.*).
should be assigned from the RFC1918 Address Allocation for Private
Internets (ie. 10.*.*.*, 172.16.*.*-172.31.*.* or 192.168.*.*).
<p>
The only way things ever connect to the Internet is by connecting to
@ -485,8 +489,9 @@ proxy.
<p>
In this scenario, packets from the private network never traverse the
Internet without special treatment, and vice versa. The IP addresses
of the private network should be assigned from the RFC1597 Private
Network Allocations (ie. 10.*.*.*, 172.16.*.* or 192.168.*.*).
of the private network should be assigned from the RFC1918 Address
Allocation for Private Internets (ie. 10.*.*.*, 172.16.*.*-172.31.*.*
or 192.168.*.*).
<p>
Instead of using a proxy, we use a special kernel facility called
@ -534,7 +539,7 @@ local port 1050, and asks the web server (port 80) for the web page.
<item> As the packets from myhost (port 1050) to slashdot.org (port
80) pass through the firewall, they are rewritten to come from the PPP
interface of the firewall, port 65000. The firewall has a valid
Internet address (1.2.3.4) so reply packets from www.linuxhq.com get
Internet address (1.2.3.4) so reply packets from slashdot.org get
routed back OK.
<item> As packets from slashdot.org (port 80) to
@ -628,16 +633,13 @@ Internet host to the server.
<sect1>More Information on Masquerading
<p>
David Ranch has written an excellent new HOWTO on Masquerading, which
has a large amount of overlap with this HOWTO. You can currently find
that HOWTO at
<htmlurl url="http://www.ecst.csuchico.edu/~dranch/LINUX/index-LINUX.html#ipmasq" name="http://www.ecst.csuchico.edu/~dranch/LINUX/index-LINUX.html#ipmasq">
<p>
Soon I would expect it to be found under the auspices of the Linux
Documentation Project, at
<url url="http://www.metalab.unc.edu/LDP" name="http://www.metalab.unc.edu/LDP">
<htmlurl url="http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html"
name="http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html">
<p>
The official Masquerading home page is at
@ -802,6 +804,15 @@ The final (and perhaps the most useful) function allows you to check
what would happen to a given packet if it were to traverse a given
chain.
<sect2> What You'll See When Your Computer Starts Up
<p>
Before any ipchains commands have been run (be careful: some
distributions run ipchains in their initialization scripts), there
will be no rules in any of the built-in chains (`input', `forward' and
`output'), and each of the chains will have a policy of ACCEPT. This
is as wide-open as you can get.
<sect2> Operations on a Single Rule
<p>
@ -895,7 +906,7 @@ address such as `127.0.0.1'.
<p>
The third and fourth ways allow specification of a group of IP
addresses, such as `199.95.207.0/24' or `199.95.207.0/255.255.255.0'.
These both specify any IP address from 192.95.207.0 to 192.95.207.255
These both specify any IP address from 199.95.207.0 to 199.95.207.255
inclusive; the digits after the `/' tell which parts of the IP address
are significant. `/32' or `/255.255.255.255' is the default (match
all of the IP address). To specify any IP address at all `/0' can be
@ -916,6 +927,9 @@ preceded by `!' (pronounced `not') to match addresses NOT equal to the
ones given. For example. `-s ! localhost' matches any packet not
coming from localhost.
<p>
Don't forget the spaces around the `!': they really are needed.
<sect3>Specifying Protocol
<p>
@ -1800,7 +1814,7 @@ Minimum delay for web traffic & telnet.
<tscreen><verb>
# ipchains -A ppp-out -p TCP -d proxy.virtual.net.au 8080 -t 0x01 0x10
# ipchains -A ppp-out -p TCP -d 0.0.0.0 telnet -t 0x01 0x10
# ipchains -A ppp-out -p TCP -d 0.0.0.0/0 telnet -t 0x01 0x10
#
</verb></tscreen>
@ -1847,6 +1861,14 @@ be going to a port above 1023, and not the X11 ports around 6000).
#
</verb></tscreen>
<p>
I allow TCP reply packets back in
<tscreen><verb>
# ipchains -A ppp-in -p TCP ! -y -j ACCEPT
#
</verb></tscreen>
<p>
Finally, local-to-local packets are OK:
@ -2106,7 +2128,7 @@ following:
This drops all packets for the duration of the changes.
<p>
If you changes are restricted to a single chain, you might want to
If your changes are restricted to a single chain, you might want to
create a new chain with the new rules, and then replace (`-R') the
rule that pointed to the old chain with one that points to the new
chain: then you can delete the old chain. This replacement will occur
@ -2243,16 +2265,17 @@ patterns.
<p> Michael Hasenstein of SuSE has written a kernel patch which adds
ftp connection tracking to ipchains. It can currently be found at
<url url="http://www.csn.tu-chemnitz.de/~mha/patch.ftp-data-2.gz"
name="http://www.csn.tu-chemnitz.de/~mha/patch.ftp-data-2.gz">
<url url="http://www.suse.de/~mha/patch.ftp-data-2.gz"
name="http://www.suse.de/~mha/patch.ftp-data-2.gz">
<sect1> Future Enhancements
<p>
Firewalling and NAT are being redesigned for 2.3. Plans and
discussions are available on the netdev archive, and ipchains-dev
list. These enhancements should clear up many outstanding usability
issues (really, firewalling and masquerading shouldn't be <em>this
Firewalling and NAT have being redesigned for 2.4. Plans and
discussions are available on the netfilter list (see <url
url="http://lists.samba.org" name="http://lists.samba.org">). These
enhancements should clear up many outstanding usability issues
(really, firewalling and masquerading shouldn't be <em>this
hard</em>), and allow growth for far more flexible firewalling.
<sect> Common Problems
@ -2265,6 +2288,21 @@ You're probably blocking DNS lookups; it will eventually time out.
Try using the `-n' (numeric) flag to ipchains, which suppresses the
lookup of names.
<p>
<sect1> Inverse doesn't work!
<p>
You must put the `!' option by itself, with spaces either side. A
classic mistake (warned about in 1.3.10) is:
<tscreen><verb>
# ipchains -A input -i !eth0 -j DENY
#
</verb></tscreen>
There will never be an interface called `!eth0', but ipchains doesn't
know that.
<p>
<sect1> Masquerading/Forwarding Doesn't Work!
@ -2614,9 +2652,12 @@ don't. Since noone in the internal network should be trying to do
evil things, we log any packets that get denied.
<p>
Note that old versions of Debian called `pop3' `pop-3' in
/etc/services, which disagrees with RFC1700.
<tscreen><verb>
ipchains -A good-dmz -p tcp -d 192.84.219.128 smtp -j ACCEPT
ipchains -A good-dmz -p tcp -d 192.84.219.128 pop-3 -j ACCEPT
ipchains -A good-dmz -p tcp -d 192.84.219.128 pop3 -j ACCEPT
ipchains -A good-dmz -p udp -d 192.84.219.129 domain -j ACCEPT
ipchains -A good-dmz -p tcp -d 192.84.219.129 domain -j ACCEPT
ipchains -A good-dmz -p tcp -d 192.84.218.130 www -j ACCEPT
@ -2684,12 +2725,13 @@ ipchains -A bad-dmz -j DENY
<itemize>
<item> Log violations.
<item> Passive FTP handled by masq. module.
<item> UDP destination ports 33434 and up are used by traceroute.
</itemize>
<tscreen><verb>
ipchains -A good-bad -p tcp --dport www -j MASQ
ipchains -A good-bad -p tcp --dport ssh -j MASQ
ipchains -A good-bad -p udp --dport 33434:33500 -j MASQ
ipchains -A good-bad -p tcp --dport ftp --j MASQ
ipchains -A good-bad -p tcp --dport ftp -j MASQ
ipchains -A good-bad -p icmp --icmp-type ping -j MASQ
ipchains -A good-bad -j REJECT -l
</verb></tscreen>
@ -2721,7 +2763,7 @@ ipchains -A dmz-good -p tcp ! -y -s 192.84.219.129 domain -j ACCEPT
ipchains -A dmz-good -p tcp ! -y -s 192.84.218.130 www -j ACCEPT
ipchains -A dmz-good -p tcp ! -y -s 192.84.218.130 rsync -j ACCEPT
ipchains -A dmz-good -p icmp -j icmp-acc
ipchains -A dmz-bad -j DENY -l
ipchains -A dmz-good -j DENY -l
</verb></tscreen>
</itemize>
@ -2806,13 +2848,14 @@ ipchains -A input -d 192.168.1.250 -j good-if
<item> Access DNS
</itemize>
<item> External interface also receives replies to masqueraded packets,
and ICMP errors for them and PING replies.
<item> External interface also receives replies to masqueraded packets
(masquerading uses source ports 61000 to 65095) and ICMP errors for
them and PING replies.
<tscreen><verb>
ipchains -A bad-if -i ! ppp0 -j DENY -l
ipchains -A bad-if -p TCP --dport 61000:65096 -j ACCEPT
ipchains -A bad-if -p UDP --dport 61000:65096 -j ACCEPT
ipchains -A bad-if -p TCP --dport 61000:65095 -j ACCEPT
ipchains -A bad-if -p UDP --dport 61000:65095 -j ACCEPT
ipchains -A bad-if -p ICMP --icmp-type pong -j ACCEPT
ipchains -A bad-if -j icmp-acc
ipchains -A bad-if -j DENY
@ -3072,7 +3115,7 @@ or directing the standard output of the script to /dev/null.
<p>
If you should find any mistakes in this script, or any changes between
the real ipfwadm and this script, <em>please</em> report a bug to me: send
an EMail to ipchains@rustcorp.com with "BUG-REPORT" in the subject.
an EMail to rusty@linuxcare.com with "BUG-REPORT" in the subject.
Please list your old version of <tt>ipfwadm</tt> (<tt>ipfwadm -h</tt>), your
version of <tt>ipchains</tt> (<tt>ipchains --version</tt>), the version of the
ipfwadm wrapper script (<tt>ipfwadm-wrapper --version</tt>). Also send the
@ -3108,7 +3151,29 @@ Franck Sicard, Kevin Littlejohn, Matt Kemner, John D. Hardin, Alexey
Kuznetsov, Leos Bitto, Jim Kunzman, Gerard Gerritsen, Serge Sivkov,
Andrew Burgess, Steve Schmidtke, Richard Offer, Bernhard Weisshuhn,
Larry Auton, Ambrose Li, Pavel Krauz, Steve Chadsey, Francesco
Potorti` and Alain Knaff.
Potorti`, Alain Knaff, Casper Boden-Cummins and Henry Hollenberg.
<sect1>Translations
<p>
People who do translations should put themselves at the <em>top</em>
of the Thanks page, like so: `Special thanks to XXX, for translating
everything exactly from my English.'. Then tell me about your
translation so I can include it here.
<p>
Arnaud Launay, asl@launay.org:
<url url="http://www.freenix.fr/unix/linux/HOWTO/IPCHAINS-HOWTO.html"
name="http://www.freenix.fr/unix/linux/HOWTO/IPCHAINS-HOWTO.html">
<p>
Giovanni Bortolozzo, borto@pluto.linux.it:
<url url="http://www.pluto.linux.it/ildp/HOWTO/IPCHAINS-HOWTO.html"
name="http://www.pluto.linux.it/ildp/HOWTO/IPCHAINS-HOWTO.html">
<p>
Herman Rodríguez, herman@maristas.dhis.org:
<url url="http://netfilter.kernelnotes.org/ipchains/spanish/HOWTO.html"
name="http://netfilter.kernelnotes.org/ipchains/spanish/HOWTO.html">
</article>

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,19 @@
<!doctype linuxdoc system>
<article>
<title>The Linux Modem-HOWTO </title>
<title>Modem-HOWTO </title>
<author>David S.Lawyer
<tt><url url="mailto:dave@lafn.org"></tt>
<date> v0.10, May 2000
<date> v0.11, June 2000
<!--
Change log: + => added more info ++ => added new topic
v0.10 Modem-Sharing mini-howto, digital modems.
:::::v
v0.11 Winmodems-and-Linux-HOWTO, removed general info re obsolete modems:
dip switches & no stored profiles, "modem busy", "no OK from AT" apt
to be a seial port problem. 2 serial drivers active problem.
v0.10 May 2000 Modem-Sharing mini-howto, digital modems, Newcom modem,
more re "no response to AT" and "can't find modem"
v0.09 +mwave, K->k, fax data, typos
v0.08 Vern's url, leased line modems, finding modem, Lucent winmodem,
multiport modem cards, clarity for 56K sect
@ -44,8 +50,9 @@ v0.00 Dec. 1998 Combined Serial-HOWTO with my own additions
<sect1> DSL, Cable, and ISDN Modems in other HOWTOs
<p> This HOWTO covers conventional modems for PC's, mainly modems on
the ISA bus. However each new version sees more info added about
modems for the PCI bus.
the ISA bus. However each new version usually finds more info added
about modems for the PCI bus.
<itemize>
<item> DSL modems: see the mini-howto: ADSL
<item> Cable-Modems-HOWTO (was once a LDP mini-Howto) <url
@ -106,6 +113,7 @@ cannot be held legally responsible for any errors.
be a trademark). Such trademarks belong to their respective owners.
<!-- copyright.H end -->
"Hayes" is a trademark of Microcomputer Products Inc. I use
"winmodem" to mean any modem which requires MS-Windows and not in the
trademark sense.
@ -139,11 +147,10 @@ available to browse and/or download at LDP mirror sites. For a list
of such sites see: <url url="http://metalab.unc.edu/LDP/mirrors.html">
If you only want to quickly check the date of the latest version go to
<url url="http://metalab.unc.edu/LDP/HOWTO/Modem-HOWTO.html"> and
compare it to the version you are currently reading: v0.10, May 2000
compare it to the version you are currently reading: v0.11, June 2000
<sect1> New in this Version
<p> Modem-Sharing mini-howto, digital modems, Newcom
modem, more re "no response to AT" and "can't find modem".
<p>
<sect1> What is a Modem ? <label id="what_is_modem">
<p> A modem is a device that lets one send digital signals over
@ -378,7 +385,10 @@ Linux drivers for these modems, specs were not made available so this
couldn't be done. Prior to about 2000, no software modem could be
used with Linux due to no drivers for them under Linux.
Then finally in late 1999 two software modems appeared that could work
See the new (April 2000) Winmodems-and-Linux-HOWTO for details of how
to get some winmodems to work under Linux.
Finally in late 1999 two software modems appeared that could work
under Linux. Lucent Technologies unofficially released a Linux
binary-only code to support its PCI software modems but bugs were
reported in early versions. PC-TEL introduced a new software
@ -611,10 +621,9 @@ an ISP?">. Cyclades promotes their own products here so please do
comparison shopping before buying anything.
<p> Before reading this
<sect> Modem & Serial Port
Basics <label id="basics_"> <!-- basics.H begin <sect> Serial Port & Modem Basics -->
<sect> Serial Port and Modem Basics <label id="basics_">
<!-- basics.H begin <sect> Serial Port and Modem Basics
or <sect> Serial Port Basics In SS and MM -->
<!-- Change log: Nov. '99: 2 serial drivers concurrently NG
-->
<!-- ifdef MODEM_ -->
@ -1183,8 +1192,10 @@ always very user friendly. This may create a difficult problem for
you. The next section will go into this in much more detail.
<sect>Configuring the Serial Port
<!-- configure.H begin
<sect>Configuring the Serial Port -->
<!-- configure.H begin (in MM, SS)
<sect>Configuring the Serial Port
Change-log:
-->
<sect1> PCI Bus Support Underway <label id="PCI_">
<p> The kernel 2.2 serial driver contains no special support for the
@ -1412,23 +1423,32 @@ that they only show what the device driver thinks. Some people view
certain "files" in the /proc directory and erroneously think that what
they see is set in the hardware but "it ain't necessarily so".
/proc/ioports will show the IO addresses that the drivers are using.
/proc/interrupts shows the IRQs that are used by drivers of
currently running processes (that have devices open). Note that
in both cases above you are only seeing what the driver thinks and not
necessarily what is actually set in the hardware. /proc/interrupts also
shows how many interrupts have been issued (often thousands) for each
device. You can get a clue from this because if you see a large
number of interrupts that have been issued it means that there is a
piece of hardware somewhere that is using that interrupt. Sometimes a
showing of just a few interrupts doesn't mean that that interrupt is
actually being physically generated by any serial port. Thus if you
see almost no interrupts for a port that you're trying to use, that
interrupt might not be set in the hardware and it implies that the
driver is using the wrong interrupt. To view /proc/interrupts to
check on a program that you're currently running (such as "minicom")
you need to keep the program running while you view it. To do this,
try to jump to a shell without exiting the program.
<tt>/proc/ioports</tt> will show the IO addresses that the drivers are using.
<tt>/proc/interrupts</tt> shows the IRQs that are used by drivers of
currently running processes (that have devices open). It shows how
many interrupts have actually be issued.
<tt>/proc/tty/driver/serial</tt> shows most of the above, plus the
number of bytes that have been received and sent (even if the device
is not now open).
Note that for the IO addresses and IRQ assignments, you are only seeing
what the driver thinks and not necessarily what is actually set in the
hardware. The data on the actual number of interrupts issued and
bytes processed is real however. If you see a large number of
interrupts and/or bytes then it probably means that the device is (or
was in the case of bytes) working. If there are no bytes received
(rx:0) but bytes were transmitted (tx:3749 for example), then only one
direction of flow is working (or being utilized).
Sometimes a showing of just a few interrupts doesn't mean that the
interrupt is actually being physically generated by any serial port.
Thus if you see almost no interrupts for a port that you're trying to
use, that interrupt might not be set in the hardware and it implies
that the driver is using the wrong interrupt. To view
/proc/interrupts to check on a program that you're currently running
(such as "minicom") you need to keep the program running while you
view it. To do this, try to jump to a shell without exiting the
program.
<sect2> What is set in my serial port hardware ? <label
id="io-irq_in_hdw"
@ -1572,18 +1592,20 @@ conflicts.
<sect1> Choosing Addresses --Video card conflict with ttyS3
<p> The IO address of the IBM 8514 video board (and others like it) is
allegedly 0x?2e8 where ? is 2, 4, 8, or 9. This may conflict (but
shouldn't if the serial port is well designed) with the IO address of
<tt/ttyS3/ at 0x02e8 if the serial port ignores the leading 0 hex
digit (many do). That is bad news if you try to use <tt/ttyS3/ at
this IO address.
allegedly 0x?2e8 where ? is 2, 4, 8, or 9. This may conflict with the
IO address of <tt/ttyS3/ at 0x02e8. Your may think that this shouldn't
happen since the addresses are different in the high order digit (the
leading 0 in 02e8). You're right, but a poorly designed serial port
may ignore the high order digit and respond to any address that ends
in 2e8. That is bad news if you try to use <tt/ttyS3/ at this IO
address.
In most cases you should use the default addresses if feasible.
Addresses shown represent the first address of an 8-byte range. For
example 3f8 is really the range 3f8-3ff. Each serial device (as well
as other types of devices that use IO addresses) needs its own unique
address range. There should be no overlaps (conflicts). Here are the
default addresses for the serial ports:
default addresses for commonly used serial ports:
<tscreen><verb>
ttyS0 address 0x3f8
@ -1592,6 +1614,13 @@ ttyS2 address 0x3e8
ttyS3 address 0x2e8
</verb></tscreen>
Suppose there is an address conflict (as reported by <tt>setserial -g
/dev/ttyS*</tt>) between a real serial port and another port which
does not physically exist (and shows UART: unknown). Such a conflict
shouldn't cause problems but it sometimes does in older kernels. To
avoid this problem don't permit such address conflicts or delete
/dev/ttyS? if it doesn't physically exist.
<sect1> Set IO Address & IRQ in the hardware (mostly for PnP)
<label id="io-irq_methods">
@ -1739,22 +1768,23 @@ is used to send data.
Most modems use an AT command set. These are cryptic and short ASCII
commands where all command strings are prefaced by the letters AT.
For example: ATZ&amp;K3 There are two commands here Z and &amp;K3.
For example: ATZ&amp;K3&lt;return&gt There are two commands here: Z
and &amp;K3. The command string is terminated by a return character
(use the &lt;enter&gt key if you are manually typing it).
Unfortunately there are many different variations of the AT command
set so that what works for one modem may or may not work for another
modem. Thus there is no guarantee that the AT commands given in this
section will work on your modem. Another point is that to get the
modem to act on the AT command string, a return character must be sent
at the end of the string.
section will work on your modem.
Such command strings are either automatically sent to the modem by
communication programs or are sent directly by you. Most
communication programs provide a screen where you can type commands
directly to your modem. This is good for setting up the modem as you
can have it remember how it was set even after its powered off.
communication programs or are manually typed in by you. Most
communication programs provide a screen where you may type such
commands. You may type in some commands to create the configuration
you want and then save this this configuration (profile) for later
use. It gets saved inside the modem itself.
If you have a manual for your modem you can likely look up the AT
command set in it. Otherwise, you may try to find it on the Internet.
command set. Otherwise, you may try to find it on the Internet.
One may use a search engine and include some actual commands in the
search terms to avoid finding sites that just talk about such commands
but fail to list them. You might also try a few of the sites listed
@ -1763,80 +1793,80 @@ in the subsection <ref id="web_sites" name="Web Sites">
<sect1> Init Strings: Saving and Recalling
<p> The examples given in this subsection are from the Hayes AT modem
command set. All command strings must be prefaced by the two letters
AT (for example: AT&amp;C1&amp;D3 ). When a modem is powered on, it
automatically configures itself with one of the configurations it has
stored in its non-volatile memory. If this configuration is
satisfactory there is nothing further to do.
AT. For example: AT&amp;C1&amp;D3^M (^M is the return character).
When a modem is powered on, it automatically configures itself with
one of the several configurations it has stored in its non-volatile
memory. If this configuration is satisfactory there is nothing
further to do.
If it's not satisfactory, then one may either alter the stored
configuration or configure the modem each time you use it by sending
it a string of commands known as an "init string" (= initialization
string). Normally a a communication program does this. What it sends
will depend on how you configured the communications program or what
script you wrote for it if you use Kermit. You can usually edit the
init string your communication program uses and change it to whatever
you want. Sometimes the communications program will let you select
the model of your modem and then it will use an init string that it
thinks is best for that modem.
string). Normally, a a communication program does this. What it
sends will depend on how you configured the communications program.
You can usually edit the init string your communication program uses
and change it to whatever you want. Sometimes the communications
program will let you select the model of your modem and then it will
use an init string that it thinks is best for that modem.
The configuration of the modem uses when it's first powered on could
be expressed by an init string. You might think of this as the
default "string" (called a profile). If your communications program
sends the modem another string (the init string), then this string
will modify the default configuration. For example, if the init
string only contains two commands, then only those two items will be
changed. However, some commands will recall a stored profile from
inside the modem so a single such command in the init string can
thereby change everything in the configuration.
The configuration of the modem when it's first powered on may be
expressed by an init string. You might think of this as the default
"string" (called a profile). If your communications program sends the
modem another string (the init string), then this string will modify
the default configuration. For example, if the init string only
contains two commands, then only those two items will be changed.
However, some commands will recall a stored profile from inside the
modem so a single such command in the init string can thereby change
everything in the configuration.
Modern modems have a few different stored profiles to choose from that
are stored in the modem's non-volatile memory (it's still there when
you turn it off). In my modem there are two factory profiles (0 and
1, neither of which you can change) and two user defined profiles (0
and 1) that the user may set and store. Your modem may have more.
Which one of these user-defined profiles is used at power-up depends
on another item stored in the profile. If the command &amp;Y0 is
given then in the future profile 0 will be used at power-on. If it's
a 1 instead of a 0 then profile 1 will be used at power-on.
To view some of these profiles send the command &amp;V.
At power-up one of the user-defined profiles is loaded. For example,
if you type the command &amp;Y0 then in the future profile 0 will be
used at power-on.
There are also commands to recall (use it now) any of the 4 stored
profiles. One may put such a command in an init string. Of course if
it recalls the same profile as was automatically loaded at power-up,
nothing is changed unless the active profile has been modified since
power-up. Since it could have been modified It's a good idea to use
some kind of an init string even if it does nothing more than
recalling a stored profile.
There are also commands to load (activate) any of the stored profiles.
Such a load command may be put in an init string. Of course if it
loads the same profile that was automatically loaded at power-up,
nothing is changed (unless the active profile has been modified since
power-up). Since it could have been modified it's a good idea to use
some kind of an init string even if it does nothing more than load a
stored profile.
Recalling a saved profile (use 1 instead of 0 for profile 1):<newline>
Z0 recalls user-defined profile 0 and resets (hangs up, etc.)<newline>
&amp;F0 recalls factory profile 0
Examples of loading saved profiles:<newline>
Z0 loads user-defined profile 0 and resets (hangs up, etc.)<newline>
&amp;F1 loads factory profile 1
Once you have sent commands to the modem to configure it the way you
want (including recalling a factory profile and modifying it a little)
want (such as loading a factory profile and modifying it a little)
you may save this as a user-defined profile:<newline>
&amp;W0 saves the current configuration to user-profile 0
Many people don't bother saving a good configuration in their modem,
but instead, send the modem a longer init string each time the modem
is used. Another method is to restore the factory default at the
start of the init string and then modify it a little by adding a few
other commands to the end of the init string. By doing it this way no
one can cause problems by modifying the user-defined profile which is
loaded at power-on.
is used. Another method is to restore the factory default by &amp;F1
at the start of the init string and then modify it a little by adding
a few other commands to the end of the init string. By doing it this
way no one can cause problems by modifying the user-defined profile
which is loaded at power-on.
You may pick an init string supplied by someone else that they think
You may choose an init string supplied by someone else that they think
is right for your modem. Some communication programs have a library
of init strings to select from. The most difficult method (and one
which will teach you the most about modems) is to study the modem
manual and write one yourself. You could save this configuration
inside the modem so that you don't need an init string. A third
alternative is to start with an init string someone else wrote, but
modify it to suit your purposes.
alternative is to start with an init string that someone else wrote,
but modify it to suit your purposes.
Now if you look at init strings used by communication programs you may
see symbols which are not valid modem commands. These symbols are
commands to the communication program itself (such as ~ meaning to
pause briefly) and will not be sent to the modem.
If you look at init strings used by communication programs you may see
symbols which are not valid modem commands. These symbols are
commands to the communication program itself and will not be sent to
the modem. For example, ~ means to pause briefly.
<sect1> Other Modem Commands <label id="modem_commands">
<p> Future editions of Modem-HOWTO may contain more AT commands but
@ -1848,22 +1878,18 @@ default or by a saved configuration).
<tscreen><verb>
E1 command echo ON
Q0 result codes are reported
V1 verbose ON
V1 result codes are verbose
S0=0 never answer (uugetty does this with the WAITFOR option)
</verb></tscreen>
Here's some more codes concerning modem control lines DCD and DSR:
<tscreen><verb>
&ero;C1 DCD is on after connect only
&ero;C1 DCD is on only after connect
&ero;S0 DSR is always on
</verb></tscreen>
These affect what your modem does when calls start and end.
What DTR does may also be set up but it's more complicated.
<p> If your modem does not support a stored profile, you can set these
through the <tt/INIT/ string in a config file (or the like). Some
older modems come with DIP switches that affect register settings. Be
sure these are set correctly, too.
What DTR does may also be set up but it's more complicated since it
depends on both the &amp;D and &amp;Q commands.
<p> Greg Hankins has a collection of modem setups for different types
of modems. If you would like to send him your working configuration,
@ -1955,15 +1981,18 @@ even when the modem fails to assert DCD (since no one has called into
it and there's no carrier). That's why cua was once used for dial-out
and ttyS used for dial-in.
Starting with Linux kernel 2.2, a warning message will be put in the
kernel log when one uses cua. This is an omen that cua is on the way
out.
Starting with Linux kernel 2.2, a warning message is put in the
kernel log when one uses cua. This is an omen that cua is defunct and
should be avoided if possible.
<sect>Interesting Programs You Should Know About
<sect1>What is setserial ? <label id="set_serial">
<!-- setserial.H begin (in MM TT SS)
<sect1>What is Setserial ? <label id="set_serial"> -->
<sect1>What is Setserial ? <label id="set_serial">
Change Log:
May 2000: <sect2> IRQs near end ttyS0 -> ttyS1 + clarity
-->
<p> This part is in 3 HOWTOs: Modem, Serial, and Text-Terminal. There
are some minor differences, depending on which HOWTO it appears in.
@ -1975,8 +2004,8 @@ set in the port's hardware, what type of UART you have, etc. It can
also show how the driver is currently set. In addition, it can be
made to probe the hardware and try to determine the UART type and IRQ,
but this has severe limitations. See <ref id="probing_ss"
name="Probing">. Note that it can't set the IRQ, etc in the hardware
of PnP serial ports.
name="Probing">. Note that it can't set the IRQ or the port address
in the hardware of PnP serial ports.
If you only have one or two built-in serial ports, they will usually
get set up correctly without using setserial. Otherwise (or if there
@ -1993,10 +2022,10 @@ equivalent was compiled into your kernel). If you should (for some
reason) unload the serial module later on, the changes previously made
by <tt/setserial/ will be forgotten by the kernel. So <tt/setserial/
must be run again to reestablish them. In addition to running via a
start-up script, something akin to <tt/setserial/ also runs when the
serial module is loaded (or the like). Thus when you watch the
start-up messages on the screen it may look like it ran twice, and in
fact it has.
start-up script, something akin to <tt/setserial/ also runs earlier
when the serial module is loaded (or the like). Thus when you watch
the start-up messages on the screen it may look like it ran twice, and
in fact it has.
Setserial can set the time that the port will keep operating after
it's closed (in order to output any characters still in its buffer in
@ -2021,7 +2050,14 @@ Note that setserial calls an IO address a "port". If you type:
setserial -g /dev/ttyS*
</verb></tscreen>
you'll see some info about how that device driver is configured for
your ports. Add a -a to the option -g to see more info although few
your ports. Note that where it says <tt>"UART: unknown"</tt> it
probably means that no uart exists. In other words you probably have
no such serial port and the other info shown about the port is
meaningless and should be ignored. If you really do have such a
serial port, setserial doesn't recognize it and that needs to be
fixed.
If you add -a to the option -g you will see more info although few
people need to deal with (or understand) this additional info since
the default settings you see usually work fine. In normal cases the
hardware is set up the same way as "setserial" reports, but if you are
@ -2030,7 +2066,11 @@ 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. Of course the serial port driver will
not work correctly (if at all) with such bogus values.
not work correctly (if at all) if you attempt to use such a port.
Thus when giving parameters to "setserial" anything goes. It gives
you no warning if what you tell it is incorrect and will allow you to
create conflicts in IRQs and I/O port addresses that will have
disastrous results later on.
While assignments made by setserial are lost when the PC is powered
off, a configuration file may restore them (or a previous
@ -2243,10 +2283,11 @@ Debian labeled obsolete files with "...pre-2.15".
<sect2> IRQs
<p> By default, both ttyS0 and ttyS2 share IRQ 4, while ttyS0 and
ttyS3 share IRQ 3. But sharing serial interrupts is not permitted
unless you: 1. have kernel 2.2 or better, and 2. you've complied in
support for this, and 3. your serial hardware supports it. See
<p> By default, both ttyS0 and ttyS2 will share IRQ 4, while ttyS1 and
ttyS3 share IRQ 3. But actually sharing serial interrupts (using them
in running programs) is not permitted unless you: 1. have kernel 2.2
or better, and 2. you've complied in support for this, and 3. your
serial hardware supports it. See
<ref id="int_share-2.2" name="Interrupt sharing and Kernels 2.2+">
@ -2320,12 +2361,12 @@ you may use stty again.
<sect1> Are You Ready to Dial Out ?
<p> Once you've plugged in your modem and know which serial port it's
on you're ready to try using it. Before you try to get the Internet
on it or have people call in to you, first try something simpler like
dialing out to some number to see if your modem is working OK. Find a
phone number that is connected to a modem. It you don't know what
number to call, ask at computer stores for such phone numbers of bulletin
boards, etc. or see if a local library has a phone number for their
on-line catalog.
on it or have people call in to you, you could first try something
simpler like dialing out to some number to see if your modem is
working OK. Find a phone number that is connected to a modem. If you
don't know what number to call, ask at computer stores for such phone
numbers of bulletin boards, etc. or see if a local library has a phone
number for their on-line catalog.
Then make sure you are ready to phone. Do you know what serial port
(such as ttyS2) your modem is on? You should have found this out when
@ -2962,7 +3003,7 @@ speed. The reason the crystal frequency needs to be higher is so that
this high crystal speed can be used to take a number of samples of
each bit to determine if it's a 1 or a 0.
<!-- high_speed.H end -->
<sect1> Speed Table <label id="speed_table">
<p> It's best to have at least a 16650 UART for a 56k modem but few
@ -3269,7 +3310,7 @@ Minicom). If you have installed an internal modem (serial port is
builtin) or are using an external one and don't know what serial port
it's connected to then the problem is to find the serial port. See
<ref id="cant_find_port" name="My Serial Port is Physically There but
Can't be Found"> This section is about finding out which serial port
Can't be Found">. This section is about finding out which serial port
has the modem on it.
There's a program that looks for modems on commonly used serial ports
@ -3287,7 +3328,7 @@ will not detect modems on them. Thus "wvdialconf" is best to try
first.
Another way try to find out if there's a modem on a port is to start
"minicom" on the port (after first setting up minicon for the correct
"minicom" on the port (after first setting up minicom for the correct
serial port --you will need to save the setup and then exit minicom
and start it again). Then type "AT" and you should see OK (or 0 if
it's set for "digit result codes"). The results may be:
@ -3297,7 +3338,7 @@ it's set for "digit result codes"). The results may be:
(including only the cursor moving down one line). See <ref id="slow_"
name="Extremely Slow: Text appears on the screen slowly after long
delays">
<item> Some stange characters appear but they are not in response to
<item> Some strange characters appear but they are not in response to
AT. This likely means that your modem is still connected to something
at the other end of the phone line which is sending some cryptic
packets or the like.
@ -3306,24 +3347,28 @@ packets or the like.
<sect2> No response to AT <label id="no_AT">
<p> The modem should send you "OK" in response to your "AT" which you
type to the modem (using minicom or the like). If you don't see "OK"
(and in most cases don't even see the "AT" you typed either) the modem
is not responding (assuming there is really a modem on the port you
are typing to).
(and in most cases don't even see the "AT" you typed either) then the
modem is not responding (often because what you type doesn't even get
to the modem).
One reason that a real modem doesn't respond is that it is in
"online data" mode where it can't accept any AT commands. It may be
in use by another process. If such a process is running on the port you
may see it by typing "ps -t ttyS2" or the like. However the process
that's using the serial port (where the modem is) may be running on a
terminal such at /dev/tty1 and will not be found using the above command.
A common cause is that there is no modem on the serial port you are
typing to. For the case of an internal modem, that serial port likely
doesn't exist either. That's because the PnP modem card (which has a
built-in serial port) has either not been configured (by isapnp or the
like) or has been configured incorrectly. See <ref
id="cant_find_port" name="My Serial Port is Physically There but Can't
be Found">.
You may have been using the modem and then abruptly disconnected (such
as killing the process with signal 9). In that case your modem did
not get reset to "command mode" where it can interact to AT commands.
Thus the message from minicom "You are already online. Hangup first."
Well, you are sort of online but you are may not be connected to
anything over the phone line. wvdial will report "modem not
responding" for the same situation.
If what you type is really getting thru to a modem, then the lack of
response could be due to the modem being in "online data" mode where
it can't accept any AT commands. You may have been using the modem
and then abruptly disconnected (such as killing the process with
signal 9). In that case your modem did not get reset to "command
mode" where it can interact to AT commands. Thus the message from
minicom "You are already online. Hangup first." Well, you are sort
of online but you are may not be connected to anything over the phone
line. Wvdial will report "modem not responding" for the same
situation.
To fix this as a last resort you could reboot the computer. Another
way to try to fix this is to send +++ to the modem to tell it to
@ -3332,13 +3377,24 @@ of the +++ sequence there must be about 1 second of delay (nothing
sent during "guard time"). This may not work if another process is
using the modem since the +++ sequence could wind up with other
characters inserted in between them or after the +++ (during the guard
time). Ironically, even if the modem line is idle, putting an
unexpected +++ is likely to set off an exchange of packets (or the
like) that will violate the required guard time so that the +++
doesn't do what you wanted. +++ is usually in the string that is
named "hangup string" so if you command minicom (or the like) to
hangup it might work. Another way to do this is to just exit minicom
and then run minicom again.
time). Ironically, even if the modem line is idle, typing an
unexpected +++ is likely to set off an exchange of control packets
(that you never see) that will violate the required guard time so
that the +++ doesn't do what you wanted. +++ is usually in the string
that is named "hangup string" so if you command minicom (or the like)
to hangup it might work. Another way to do this is to just exit
minicom and then run minicom again.
<sect1> "Modem busy"
<p> The modem could actually be in use (busy). Another cause reported
for the SuSE distribution is that there may be two serial drivers
present instead of one. Both try to work at the same time with
confusing results. One driver may run ahead of the other and the
second driver finds the modem "busy" since the first driver is trying
(in vain) to use it. If serial driver support is built-in, don't also
compile it in. Also, don't let the serial module load if serial
support is already built-in (or compiled-in). There are likely other
causes for a false "modem busy".
<sect1> I can't get near 56k on my 56k modem
<p> There must be very low noise on the line for it to work at even
@ -3438,8 +3494,10 @@ it.
<!-- <sect>Troubleshooting started above -->
<!-- troubleshooting.H begin
Change Log:
Apr. 00: 2 ports on same address -->
<sect1> The following subsections are in both the Serial and Modem HOWTOs:
Apr. 00: 2 ports on same address
May 00: address conflict
-->
<sect1>(The following subsections are in both the Serial and Modem HOWTOs)
<sect1> My Serial Port is Physically There but Can't be Found
<label id="cant_find_port">
@ -3447,25 +3505,28 @@ Apr. 00: 2 ports on same address -->
serial port that it's on has been found. If it doesn't work at all, then
you need to make sure your serial port can be found.
Check the BIOS menus and BIOS messages. For the PCI bus use lspci.
If it's an ISA bus PnP serial port, try "pnpdump --dumpregs" and/or
see Plug-and-Play-HOWTO. Using "scanport" will scan all ISA bus ports
and may discover an unknown port that could be a serial port (but it
doesn't probe the port). It could hang your PC. You may try probing
with setserial. See <ref id="probing_ss" name="Probing">. If
Check the BIOS menus and BIOS messages. For the PCI bus use lspci or
scanpci. If it's an ISA bus PnP serial port, try "pnpdump --dumpregs"
and/or see Plug-and-Play-HOWTO. Using "scanport" will scan all ISA
bus ports and may discover an unknown port that could be a serial port
(but it doesn't probe the port). It could hang your PC. You may try
probing with setserial. See <ref id="probing_ss" name="Probing">. If
nothing seems to get thru the port it may be accessible but have a bad
interrupt. See <ref id="slow_" name="Extremely Slow: Text appears on
the screen slowly after long delays">.
the screen slowly after long delays">. Use <tt>setserial -g</tt> to
see what the serial driver thinks and check for IRQ and I0 address
conflicts. Even if you see no conflicts the driver may have incorrect
information and conflicts may still exist.
If two ports have the same IO address then probing it will erroneously
indicate only one port. Plug-and-play detection will find both ports
so this should only be a problem if at least one port is not
plug-and-play. All sorts of errors may be reported/observed for
devices on "sharing" a port but the fact that there are two devices on
the same a port doesn't seem to get detected (except hopefully by
you). If the IRQs are different then probing for IRQs with setserial
might "detect" this situation by failing to detect an IRQ. See <ref
id="probing_ss" name="Probing">.
devices illegally "sharing" a port but the fact that there are two
devices on the same a port doesn't seem to get detected (except
hopefully by you). In the above case, if the IRQs are different then
probing for IRQs with setserial might "detect" this situation by
failing to detect any IRQ. See <ref id="probing_ss" name="Probing">.
<sect1> Extremely Slow: Text appears on the screen slowly after long delays
<label id="slow_">
@ -3615,11 +3676,15 @@ start the second device (without quitting the first device) you get a
keeps track of what IRQs are actually in use and conflicts don't
happen unless the devices are in use (open).
There are two cases. There may be a real interrupt conflict that is
being avoided. But if setserial has it wrong, there may be no reason
why <tt/ttyS2/ can't be used, except that setserial erroneously predicts a
conflict. What you need to do is to find the interrupt setserial
thinks <tt/ttyS2/ is using. This is easier said than done since you can't
There are two possible cases when you see this message:
<enum>
<item> There may be a real interrupt conflict that is being avoided.
<item> Setserial has it wrong and the only reason <tt/ttyS2/ can't be
used is that setserial erroneously predicts a conflict.
</enum>
What you need to do is to find the interrupt setserial thinks
<tt/ttyS2/ is using. This is easier said than done since you can't
use the "setserial" command for <tt/ttyS2/ since the IRQ for ttyS2 is
supposedly "busy" and you will get the same "... busy" error message.
To fix this either reboot or: exit or gracefully kill all likely
@ -3629,14 +3694,14 @@ messages for the serial ports. 2. Hope that the file that runs
again.
If you think you know what IRQ <tt/ttyS2/ is using then you may look
at /proc/interrupts to find what else is currently using this IRQ.
You might also want to double check that any suspicious IRQs shown
here (and by "setserial") are correct (the same as set in the
hardware). A way to test whether or not it is a potential interrupt
conflict is to set the IRQ to 0 (polling) using "setserial". Then if
the busy message goes away, it was likely a potential interrupt
conflcit. It's not a good idea to leave it permanently set at 0 since
more CPU resources will be used.
at /proc/interrupts to find what else (besides another serial port) is
currently using this IRQ. You might also want to double check that
any suspicious IRQs shown here (and by "setserial") are correct (the
same as set in the hardware). A way to test whether or not it is a
potential interrupt conflict is to set the IRQ to 0 (polling) using
"setserial". Then if the busy message goes away, it was likely a
potential interrupt conflcit. It's not a good idea to leave it
permanently set at 0 since more CPU resources will be used.
This paragraph is mainly for the case when a modem is used for both
dial-in and dial-out. If the DCD signal is sent to a port, that port

View File

@ -4,11 +4,12 @@
<author>David S.Lawyer
<tt><url url="mailto:dave@lafn.org"></tt>
<date> v0.11, May 2000
<date> v0.12, June 2000
<!--
Change log:
v0.11 scanport utility, many typos fixed.
v0.12 scanpci, workaround for Dos zeroing PCI IRQs.
v0.11 May 2000 scanport utility, many typos fixed, setpci hard to use
v0.10 2 March 2000 typo: /bus/pnp/devices, lspci+, book "Programming
..."
v0.09 /proc/bus/pci/devices too cryptic,
@ -72,7 +73,13 @@ be a trademark). Such trademarks belong to their respective owners.
<sect2> Credits
<p> Daniel Scott proofread this in March 2000 and found many typos, etc.
<p>
<itemize>
<item> Daniel Scott proofread this in March 2000 and found many
typos, etc.
<item> Pete Barrett gave a workaround to prevent Windows from zeroing
PCI IRQs.
</itemize>
<sect1> Future Plans; You Can Help
<p> Please let me know of any errors in facts, opinions, logic,
@ -95,9 +102,8 @@ 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: v0.11, May 2000 . New is this version are:
scanport utility, many typos fixed, setpci hard to
use .
The version you are now reading is: v0.12, June 2000 . New is this version are:
scanpci, workaround for Dos zeroing PCI IRQs. .
<sect> What PnP Should Do: Allocate "Bus-Resources"
<sect1> What is Plug-and-Play (PnP)?
@ -108,8 +114,9 @@ is to match up physical devices with the software (device drivers)
that operates them and to establish channels of communication between
each device and its driver. In order to achieve this, PnP allocates
the following "bus-resources" to both drivers and hardware: I/O
addresses, IRQs, DMA channels (ISA bus only), and memory regions. If
you don't understand what these 4 bus-resources are, read the following
addresses, IRQs, DMA channels (ISA bus only), and memory regions.
These 4 things are sometimes called 1st order resources. If you don't
understand what these 4 bus-resources are, read the following
subsections of this HOWTO: I/O Addresses, IRQs, DMA Channels, Memory
Regions. An article in Linux Gazette about 3 of these bus-resources
is <htmlurl url="http://www.linuxgazette.com/issue38/blanchard.html"
@ -231,26 +238,28 @@ direction? Suppose the device needs to tell its device driver
something immediately? For example, the device may have just received
a lot of bytes destined for main memory and the device needs to call
its driver to fetch these bytes at once and transfer them from the
device's nearly full buffer into main memory.
device's nearly full buffer into main memory. Another example is to
signal the driver that the device has finished sending a bunch of
bytes and is now waiting for some more bytes to send.
How should the device call for help? It can't use the main data bus
since it's likely already in use. Instead it puts a voltage on a
How should the device signal its driver? It can't use the main data
bus since it's likely already in use. Instead it puts a voltage on a
dedicated interrupt wire (part of the bus) which is often reserved for
that device alone. This signal is called an interrupt. There are the
equivalent of 16 such wires in a PC and each wire leads (indirectly) to
a certain device driver. Each wire has a unique IRQ (Interrupt
equivalent of 16 such wires in a PC and each wire leads (indirectly)
to a certain device driver. Each wire has a unique IRQ (Interrupt
ReQuest) number. The device must put its interrupt on the correct
wire and the device driver must listen for the interrupt on the
correct wire. Which wire it's put on is determined by the IRQ number
stored in the device. This same IRQ number must be known to the
device driver so that the device driver knows which IRQ line to listen
to.
correct wire. Which wire the device uses is determined by the IRQ
number stored in the device. This same IRQ number must be known to
the device driver so that the device driver knows which IRQ line to
listen to.
Once the device driver gets the interrupt (a call for help) it must
find out why the interrupt was issued and take appropriate action to
Once the device driver gets the interrupt from the device it must find
out why the interrupt was issued and take appropriate action to
service the interrupt. On the ISA bus each device needs its own
unique IRQ number. For the PCI bus and other special cases the sharing of IRQs
is allowed.
unique IRQ number. For the PCI bus and other special cases the
sharing of IRQs is allowed.
<sect1> DMA Channels <label id="dma_">
<p> DMA channels are only for the ISA bus. DMA stands for "Direct Memory
@ -485,10 +494,10 @@ rest of the PnP configuring of devices (but not their drivers).
faster bus from Intel. The PCI bus was designed for what is today
called PnP. It makes it easy (as compared to the ISA bus) to find out
how PnP bus-resources have been assigned to hardware devices. To see
what has happened use the <tt/lspci/ command and/or look at
<tt>/proc/pci</tt> or possibly <tt>/proc/bus/pci</tt>. The boot-up
messages on your display are useful (use shift-PageUp to back up).
See <ref id="boot_time_msgs" name="Boot-time Messages">
what has happened use the commands <tt/lspci/ or scanpci (Xwindows)
and/or look at <tt>/proc/pci</tt> or possibly <tt>/proc/bus/pci</tt>.
The boot-up messages on your display are useful (use shift-PageUp to
back up). See <ref id="boot_time_msgs" name="Boot-time Messages">
For the ISA bus there is a real problem with implementing PnP since no
one had PnP in mind when the ISA bus was designed and there are almost
@ -522,8 +531,8 @@ while the purpose of PnP was to make it simple.
In a sense, Linux is already somewhat PnP for the PCI bus. When the
PC starts up you may note from the messages on the screen that some
Linux device drivers often find their hardware devices (and the
bus-resources the BIOS has assigned them). But there are situations that
a PnP operating system could handle better:
bus-resources the BIOS has assigned them). But there are situations
that a PnP operating system could handle better:
<itemize>
<item>A shortage of bus-resources
<item>More than one driver for a physical device
@ -604,8 +613,8 @@ are in sync. If this works for you (and this is the latest version of
this HOWTO), let me know as I only have one report of this working out
OK.
Another method is to "remove" devices that are causing problems in
Windows by clicking on remove in the Device Manager. Then reboot with
Another method is to remove devices that are causing problems in
Windows by clicking on "remove" in the Device Manager. Then reboot with
"Not a PnP OS" (set it in the CMOS as you start to boot). Windows
will then reinstall the devices, hopefully using the bus-resource
settings configured by the BIOS. Be warned that Windows will likely
@ -802,15 +811,15 @@ another (perhaps about the same) stored on the hard disk. To look at
(the one in memory?) this indirectly in Windows98 or to force changes
you use the Device Manager.
In Windows98 There are 2 ways to get to the Device Manager: 1. My
In Windows98 there are 2 ways to get to the Device Manager: 1. My
Computer --> Control Panel --> System Properties --> Device Manager.
2. (right-click) My Computer --> Properties --> Device Manager. Then
in Device Manager you select a device (sometimes a multi-step process
if there are a few devices of the same class). Then click on
Properties and then on Resources. To attempt to change the resource
configuration manually, uncheck "Use automatic settings" and then
click on "Change Settings". Now try to change the setting, but it
may not let you change it. If it does let you, you have "forced" a
"Properties" and then on "Resources". To attempt to change the
resource configuration manually, uncheck "Use automatic settings" and
then click on "Change Settings". Now try to change the setting, but
it may not let you change it. If it does let you, you have "forced" a
change. A message should inform you that it's being forced. If you
want to keep the existing setting shown by Windows but make it
"forced" then you will have to force a change to something else and
@ -821,7 +830,7 @@ hardware" list: Start --> Programs --> Accessories --> System Tools
--> System Information --> Hardware Resources --> Forced Hardware.
When you "force" a change of bus-resources in Windows, it should put
your change into the ESCD (provided you exit Windows normally).
From the "System Information" window you may also inspect how IRQs and
>From the "System Information" window you may also inspect how IRQs and
IO ports have been allocated under Windows.
Even if Windows shows no conflict of bus-resources, there may be a
@ -886,13 +895,13 @@ A single card may contain several physical devices but the above
explanation was for just one of these devices.
<sect1> PCI Utilities <label id="pciutils_">
<p> The new package PCI Utilities (= pciutils, incorrectly called
<p> The package PCI Utilities (= pciutils, incorrectly called
"pcitools"), should let you manually PnP-configure the PCI bus.
"lspci" lists bus-resources while "setpci" sets resource allocations
in the hardware devices. It appears that setpci is mainly intended
for use in scipts and presently one needs to know the details of the
PCI configuation registers in order to use it. That's a topic not
explained here nor in the manual page for setpci.
"lspci" or "scanpci" (Xwindows) lists bus-resources while "setpci"
sets resource allocations in the hardware devices. It appears that
setpci is mainly intended for use in scripts and presently one needs to
know the details of the PCI configuration registers in order to use it.
That's a topic not explained here nor in the manual page for setpci.
<sect1> Patch the Kernel to Make Linux PnP <label id="patch_kernel">
<p> David Howells has created a patch to do this called "Linux Kernel
@ -914,9 +923,42 @@ url="http://www.astarte.free-online.co.uk">
<sect1> Windows Configures <label id="windows_conf">
<p> If you have Windows9x (or 2k) on the same PC, then just start
Windows and let it configure PnP. Then start Linux from Windows (or
DOS). It has been reported that Windows erased the IRQs from PCI
devices registers. Then Linux complained that it found a zero IRQ.
Thus you may not be able to use this method.
DOS). But there may be a problem with IRQs for PCI devices. As
Windows shuts down to make way for Linux, it may erase (zero) the IRQ
which is stored in one of the PCI device's configuration registers.
Linux will complain that it has found an IRQ of zero.
The above is reported to happen if you start Linux using a shortcut
(PIF file). But a workaround is reported where you still use the
shortcut PIF. A shortcut is something like a symbolic link in Linux
but it's more than that since it may be "configured". To start Linux
(from DOS you create a batch file (script) which starts Linux. (The
program that starts Linux is in the package called "loadlin"). Then
create a PIF shortcut to that batch file and get to the "Properties"
dialog box for the shortcut. Select "Advanced" and then check "MS-DOS
mode" to get it to start in genuine MS-DOS.
Now here's the trick to prevent zeroing the PCI IRQs. Check "Specify
a new MS-DOS configuration". Then either accept the default
configuration presented to you or click on "Configuration" to change
it. Now when you start Linux by clicking on the shortcut, new
configuration files (Config.sys and Autoexec.bat) will be created per
your new configuration. The old files are stored as "Config.wos and
Autoexec.wos". Windows would normally restore these files to their
original names if Windows were to be entered again and shut down. But
after Linux boots you don't get back to Windows again so you should
enter commands in the batch file to rename these files to their *.bat
and *.sys names. Put the renaming commands into the batch file before
the line that loads Linux. This will permit Windows (and not Linux)
to start the next time the PC is powered on.
Also it's reported that you should click on the "General" tab (of the
"Properties" dialog) and check "Read-only". Otherwise Windows may
reset the "Advanced Settings" to "Use current MS-DOS configuration"
and PCI IRQs get zeroed. Thus Windows erases the IRQs when you use the
current MS-DOS configuration but doesn't erase when you use a new
configuration (which may actually configure things identical to
the old configuration). Windows does not seem to be very consistent.
<sect1> Device Driver Configures <label id="dev_d_conf">
<p> A few device drivers will use PnP methods to set the bus-resources in
@ -1098,11 +1140,11 @@ the kernel) may still issue some interrupts for various reasons.
<sect1> How Are My Hardware Devices Configured?
<p> It's easy to find out what bus-resources have been assigned to
devices on the PCI bus with the "lspci" command. For for kernels &lt
2.2: see <tt>/proc/pci</tt> or <tt>/proc/bus/pci</tt>. Note that IRQs
for <tt>/proc/pci</tt> are in hexadecimal. Don't bother trying to
decipher <tt>/proc/bus/pci/devices</tt> since "lspci" will do that for
you.
devices on the PCI bus with the "lspci" or "scanpci" commands. For
for kernels &lt 2.2: see <tt>/proc/pci</tt> or <tt>/proc/bus/pci</tt>
for later kernels. Note that IRQs for <tt>/proc/pci</tt> are in
hexadecimal. Don't bother trying to decipher
<tt>/proc/bus/pci/devices</tt> since "lspci" will do that for you.
For the ISA bus you may try running <tt>pnpdump --dumpregs</tt>
but it's not a sure thing. The results may be seem cryptic but they
@ -1240,9 +1282,10 @@ starting with Kernel 2.2) it's possible for two (or more) devices to
share the same IRQ number. When such an interrupt is issued, the CPU
runs all interrupt service routines for all devices using that
interrupt. The first thing the first service routine does is to check
to see if an interrupt actually happened for its device. If there was
no interrupt (false alarm) it likely will exit and the next service
routine starts, etc.
the device registers to see if an interrupt actually happened for its
device. If it finds that its device didn't issue an interrupt (a false
alarm) it likely will immediately exit and the next service routine
starts, etc.
<sect1> PCI Interrupts
<p> PCI interrupts are different but since they are normally mapped to

View File

@ -1,14 +1,15 @@
<!doctype linuxdoc system>
<article>
<title>The Linux Serial HOWTO
<title> Serial HOWTO
<author>David S.Lawyer
<tt><htmlurl url="mailto:dave@lafn.org" name="dave@lafn.org"></tt>
original by Greg Hankins
<date> v2.07 May 2000
<date> v2.08 June 2000
<!-- Change log:
v2.07 Apr. locking methods, clarity re uart protocol, sticky parity
v2.08 /proc/tty, fixed link to Gary's Encyclopedia.
v2.07 May 2000. locking methods, clarity re uart protocol, sticky parity
v2.06 2 March 2000 more on multiport, not 3-3 for null modem,
butter -> buffer,
v2.05 Vern's & my url, ref to multiport modem cards
@ -108,21 +109,6 @@ to Ted Ts'o for answering questions about the serial drivers.
Approximately half of v2.00 was from Greg Hankins HOWTO and the other
half is by David Lawyer. Ted Ts'o has continued to be helpful.
<sect1> Release Notes
<p> 2.00 was a major revision which has removed info on Terminals and
Modems from the old Serial-HOWTO and put such info into:
<itemize>
<item> Text-Terminal-HOWTO
<item> Modem-HOWTO
</itemize>
2.01: Added info on Plug-and-Play from Modem-HOWTO and more. Info on
setserial and stty has been updated. I still haven't checked out all
the info on multiport cards to see if it's up-to-date. The fact that
this HOWTO was pieced together from various sources has resulted in a
certain lack of integration. This may be improved on in future
versions.
<sect1> New Versions of this Serial-HOWTO
<p> New versions of the Serial-HOWTO will be available to
browse and/or download at LDP mirror sites. For a list of mirror
@ -130,8 +116,7 @@ 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://metalab.unc.edu/LDP/HOWTO/Serial-HOWTO.html"> and compare
it to this version: v2.07 May 2000 . New in this version is: locking methods, clarity re uart protocol,
sticky parity.
it to this version: v2.08 June 2000 . New in this version is: /proc/tty, fixed link to Gary's Encyclopedia.
<sect1> Related HOWTO's re the Serial Port <label id="related_howtos">
<p> Modems, Text-Terminals, some printers, and other peripherals often
@ -143,9 +128,12 @@ explained above.
<item><tt>Printing-HOWTO</tt> has info on using a serial printer
<item><tt>Serial-Programming-HOWTO</tt> helps you write
C programs (or parts of them) that read and write to the serial port
and/or check/set its state. A new version is expected soon.
and/or check/set its state. A new version has been written by Vern
Hoxie but not submitted. A copy is at <ref id="vern_" name="Internet">.
<item><tt>Text-Terminal-HOWTO</tt> is about how they work, how to install
configure, and repair them.
configure, and repair them. It includes a section on "Make a
Terminal the Console" which is useful for using a remote terminal to
control a server (via the serial port).
</itemize>
<sect1>Feedback
@ -327,7 +315,8 @@ transmit buffer in main memory and puts them into the small 16-byte
transmit buffer in the hardware.
<sect> Serial Port Basics <label id="basics_">
<!-- basics.H begin <sect> Serial Port & Modem Basics -->
<!-- basics.H begin <sect> Serial Port and Modem Basics
or <sect> Serial Port Basics In SS and MM -->
<!-- Change log: Nov. '99: 2 serial drivers concurrently NG
-->
@ -908,7 +897,7 @@ linux# ./MAKEDEV ttyS17
Besides the listing of various brands of multiports found in this
HOWTO there is <url
url="http://members.aa.net/~swear/serialcards.html" name="Gary's
url="http://members.aa.net/~swear/pedia/serialcards.html" name="Gary's
Encyclopedia - Serial Cards">. It's not as complete, but may have
some different links.
@ -1185,8 +1174,10 @@ name="http://www.ssc.com/lj/issue14"></tt>.
</itemize>
<sect>Configuring the Serial Port
<!-- configure.H begin
<sect>Configuring the Serial Port -->
<!-- configure.H begin (in MM, SS)
<sect>Configuring the Serial Port
Change-log:
-->
<sect1> PCI Bus Support Underway <label id="PCI_">
<p> The kernel 2.2 serial driver contains no special support for the
@ -1414,23 +1405,32 @@ that they only show what the device driver thinks. Some people view
certain "files" in the /proc directory and erroneously think that what
they see is set in the hardware but "it ain't necessarily so".
/proc/ioports will show the IO addresses that the drivers are using.
/proc/interrupts shows the IRQs that are used by drivers of
currently running processes (that have devices open). Note that
in both cases above you are only seeing what the driver thinks and not
necessarily what is actually set in the hardware. /proc/interrupts also
shows how many interrupts have been issued (often thousands) for each
device. You can get a clue from this because if you see a large
number of interrupts that have been issued it means that there is a
piece of hardware somewhere that is using that interrupt. Sometimes a
showing of just a few interrupts doesn't mean that that interrupt is
actually being physically generated by any serial port. Thus if you
see almost no interrupts for a port that you're trying to use, that
interrupt might not be set in the hardware and it implies that the
driver is using the wrong interrupt. To view /proc/interrupts to
check on a program that you're currently running (such as "minicom")
you need to keep the program running while you view it. To do this,
try to jump to a shell without exiting the program.
<tt>/proc/ioports</tt> will show the IO addresses that the drivers are using.
<tt>/proc/interrupts</tt> shows the IRQs that are used by drivers of
currently running processes (that have devices open). It shows how
many interrupts have actually be issued.
<tt>/proc/tty/driver/serial</tt> shows most of the above, plus the
number of bytes that have been received and sent (even if the device
is not now open).
Note that for the IO addresses and IRQ assignments, you are only seeing
what the driver thinks and not necessarily what is actually set in the
hardware. The data on the actual number of interrupts issued and
bytes processed is real however. If you see a large number of
interrupts and/or bytes then it probably means that the device is (or
was in the case of bytes) working. If there are no bytes received
(rx:0) but bytes were transmitted (tx:3749 for example), then only one
direction of flow is working (or being utilized).
Sometimes a showing of just a few interrupts doesn't mean that the
interrupt is actually being physically generated by any serial port.
Thus if you see almost no interrupts for a port that you're trying to
use, that interrupt might not be set in the hardware and it implies
that the driver is using the wrong interrupt. To view
/proc/interrupts to check on a program that you're currently running
(such as "minicom") you need to keep the program running while you
view it. To do this, try to jump to a shell without exiting the
program.
<sect2> What is set in my serial port hardware ? <label
id="io-irq_in_hdw"
@ -1574,18 +1574,20 @@ conflicts.
<sect1> Choosing Addresses --Video card conflict with ttyS3
<p> The IO address of the IBM 8514 video board (and others like it) is
allegedly 0x?2e8 where ? is 2, 4, 8, or 9. This may conflict (but
shouldn't if the serial port is well designed) with the IO address of
<tt/ttyS3/ at 0x02e8 if the serial port ignores the leading 0 hex
digit (many do). That is bad news if you try to use <tt/ttyS3/ at
this IO address.
allegedly 0x?2e8 where ? is 2, 4, 8, or 9. This may conflict with the
IO address of <tt/ttyS3/ at 0x02e8. Your may think that this shouldn't
happen since the addresses are different in the high order digit (the
leading 0 in 02e8). You're right, but a poorly designed serial port
may ignore the high order digit and respond to any address that ends
in 2e8. That is bad news if you try to use <tt/ttyS3/ at this IO
address.
In most cases you should use the default addresses if feasible.
Addresses shown represent the first address of an 8-byte range. For
example 3f8 is really the range 3f8-3ff. Each serial device (as well
as other types of devices that use IO addresses) needs its own unique
address range. There should be no overlaps (conflicts). Here are the
default addresses for the serial ports:
default addresses for commonly used serial ports:
<tscreen><verb>
ttyS0 address 0x3f8
@ -1594,6 +1596,13 @@ ttyS2 address 0x3e8
ttyS3 address 0x2e8
</verb></tscreen>
Suppose there is an address conflict (as reported by <tt>setserial -g
/dev/ttyS*</tt>) between a real serial port and another port which
does not physically exist (and shows UART: unknown). Such a conflict
shouldn't cause problems but it sometimes does in older kernels. To
avoid this problem don't permit such address conflicts or delete
/dev/ttyS? if it doesn't physically exist.
<sect1> Set IO Address & IRQ in the hardware (mostly for PnP)
<label id="io-irq_methods">
@ -1817,12 +1826,14 @@ the use of getty with directly connected terminals now found in
Text-Terminal-HOWTO.
<sect1> Serial Monitoring/Diagnostics Programs <label id="serial_mon">
<p> A few Linux programs will monitor various modem control lines and
indicate if they are positive (1 or green) or negative (0 or red).
<p> A few Linux programs (and one "file") will monitor various modem
control lines and indicate if they are positive (1 or green) or
negative (0 or red).
<itemize>
<item> The "file": /proc/tty/driver/serial lists those that are positive
<item> modemstat (Only works correctly on Linux PC consoles. Status
monitored in a tiny window. Color-coded and compact. Must kill
process to quit.)
it (a process) to quit.
<item> statserial (Info displayed on entire screen)
<item> serialmon (Doesn't monitor RTS, CTS, DSR but logs other
functions)
@ -1842,7 +1853,10 @@ for the serial port.
<sect1>What is Setserial ? <label id="set_serial">
<!-- setserial.H begin (in MM TT SS)
<sect1>What is Setserial ? <label id="set_serial"> -->
<sect1>What is Setserial ? <label id="set_serial">
Change Log:
May 2000: <sect2> IRQs near end ttyS0 -> ttyS1 + clarity
-->
<p> This part is in 3 HOWTOs: Modem, Serial, and Text-Terminal. There
are some minor differences, depending on which HOWTO it appears in.
@ -1854,8 +1868,8 @@ set in the port's hardware, what type of UART you have, etc. It can
also show how the driver is currently set. In addition, it can be
made to probe the hardware and try to determine the UART type and IRQ,
but this has severe limitations. See <ref id="probing_ss"
name="Probing">. Note that it can't set the IRQ, etc in the hardware
of PnP serial ports.
name="Probing">. Note that it can't set the IRQ or the port address
in the hardware of PnP serial ports.
If you only have one or two built-in serial ports, they will usually
get set up correctly without using setserial. Otherwise (or if there
@ -1872,10 +1886,10 @@ equivalent was compiled into your kernel). If you should (for some
reason) unload the serial module later on, the changes previously made
by <tt/setserial/ will be forgotten by the kernel. So <tt/setserial/
must be run again to reestablish them. In addition to running via a
start-up script, something akin to <tt/setserial/ also runs when the
serial module is loaded (or the like). Thus when you watch the
start-up messages on the screen it may look like it ran twice, and in
fact it has.
start-up script, something akin to <tt/setserial/ also runs earlier
when the serial module is loaded (or the like). Thus when you watch
the start-up messages on the screen it may look like it ran twice, and
in fact it has.
Setserial can set the time that the port will keep operating after
it's closed (in order to output any characters still in its buffer in
@ -1900,7 +1914,14 @@ Note that setserial calls an IO address a "port". If you type:
setserial -g /dev/ttyS*
</verb></tscreen>
you'll see some info about how that device driver is configured for
your ports. Add a -a to the option -g to see more info although few
your ports. Note that where it says <tt>"UART: unknown"</tt> it
probably means that no uart exists. In other words you probably have
no such serial port and the other info shown about the port is
meaningless and should be ignored. If you really do have such a
serial port, setserial doesn't recognize it and that needs to be
fixed.
If you add -a to the option -g you will see more info although few
people need to deal with (or understand) this additional info since
the default settings you see usually work fine. In normal cases the
hardware is set up the same way as "setserial" reports, but if you are
@ -1909,7 +1930,11 @@ 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. Of course the serial port driver will
not work correctly (if at all) with such bogus values.
not work correctly (if at all) if you attempt to use such a port.
Thus when giving parameters to "setserial" anything goes. It gives
you no warning if what you tell it is incorrect and will allow you to
create conflicts in IRQs and I/O port addresses that will have
disastrous results later on.
While assignments made by setserial are lost when the PC is powered
off, a configuration file may restore them (or a previous
@ -2122,10 +2147,11 @@ Debian labeled obsolete files with "...pre-2.15".
<sect2> IRQs
<p> By default, both ttyS0 and ttyS2 share IRQ 4, while ttyS0 and
ttyS3 share IRQ 3. But sharing serial interrupts is not permitted
unless you: 1. have kernel 2.2 or better, and 2. you've complied in
support for this, and 3. your serial hardware supports it. See
<p> By default, both ttyS0 and ttyS2 will share IRQ 4, while ttyS1 and
ttyS3 share IRQ 3. But actually sharing serial interrupts (using them
in running programs) is not permitted unless you: 1. have kernel 2.2
or better, and 2. you've complied in support for this, and 3. your
serial hardware supports it. See
<ref id="int_share-2.2" name="Interrupt sharing and Kernels 2.2+">
@ -2523,7 +2549,6 @@ available via FTP, if they didn't come with your distribution.
portable, scriptable, serial and TCP/IP communications including file
transfer, character-set translation, and zmodem support
<item><tt/minicom/ - <tt/telix/-like communications program
<item><tt/procomm/ - <tt/procomm/-like communications program with zmodem
<item><tt/seyon/ - X based communication program
<item><tt/xc/ - xcomm communication package
@ -2666,8 +2691,10 @@ id="serial_mon" name="Serial Monitoring/Diagnostics">
<!-- currently in <sect>Troubleshooting -->
<!-- troubleshooting.H begin
Change Log:
Apr. 00: 2 ports on same address -->
<sect1> The following subsections are in both the Serial and Modem HOWTOs:
Apr. 00: 2 ports on same address
May 00: address conflict
-->
<sect1>(The following subsections are in both the Serial and Modem HOWTOs)
<sect1> My Serial Port is Physically There but Can't be Found
<label id="cant_find_port">
@ -2675,25 +2702,28 @@ Apr. 00: 2 ports on same address -->
serial port that it's on has been found. If it doesn't work at all, then
you need to make sure your serial port can be found.
Check the BIOS menus and BIOS messages. For the PCI bus use lspci.
If it's an ISA bus PnP serial port, try "pnpdump --dumpregs" and/or
see Plug-and-Play-HOWTO. Using "scanport" will scan all ISA bus ports
and may discover an unknown port that could be a serial port (but it
doesn't probe the port). It could hang your PC. You may try probing
with setserial. See <ref id="probing_ss" name="Probing">. If
Check the BIOS menus and BIOS messages. For the PCI bus use lspci or
scanpci. If it's an ISA bus PnP serial port, try "pnpdump --dumpregs"
and/or see Plug-and-Play-HOWTO. Using "scanport" will scan all ISA
bus ports and may discover an unknown port that could be a serial port
(but it doesn't probe the port). It could hang your PC. You may try
probing with setserial. See <ref id="probing_ss" name="Probing">. If
nothing seems to get thru the port it may be accessible but have a bad
interrupt. See <ref id="slow_" name="Extremely Slow: Text appears on
the screen slowly after long delays">.
the screen slowly after long delays">. Use <tt>setserial -g</tt> to
see what the serial driver thinks and check for IRQ and I0 address
conflicts. Even if you see no conflicts the driver may have incorrect
information and conflicts may still exist.
If two ports have the same IO address then probing it will erroneously
indicate only one port. Plug-and-play detection will find both ports
so this should only be a problem if at least one port is not
plug-and-play. All sorts of errors may be reported/observed for
devices on "sharing" a port but the fact that there are two devices on
the same a port doesn't seem to get detected (except hopefully by
you). If the IRQs are different then probing for IRQs with setserial
might "detect" this situation by failing to detect an IRQ. See <ref
id="probing_ss" name="Probing">.
devices illegally "sharing" a port but the fact that there are two
devices on the same a port doesn't seem to get detected (except
hopefully by you). In the above case, if the IRQs are different then
probing for IRQs with setserial might "detect" this situation by
failing to detect any IRQ. See <ref id="probing_ss" name="Probing">.
<sect1> Extremely Slow: Text appears on the screen slowly after long delays
<label id="slow_">
@ -2841,11 +2871,15 @@ start the second device (without quitting the first device) you get a
keeps track of what IRQs are actually in use and conflicts don't
happen unless the devices are in use (open).
There are two cases. There may be a real interrupt conflict that is
being avoided. But if setserial has it wrong, there may be no reason
why <tt/ttyS2/ can't be used, except that setserial erroneously predicts a
conflict. What you need to do is to find the interrupt setserial
thinks <tt/ttyS2/ is using. This is easier said than done since you can't
There are two possible cases when you see this message:
<enum>
<item> There may be a real interrupt conflict that is being avoided.
<item> Setserial has it wrong and the only reason <tt/ttyS2/ can't be
used is that setserial erroneously predicts a conflict.
</enum>
What you need to do is to find the interrupt setserial thinks
<tt/ttyS2/ is using. This is easier said than done since you can't
use the "setserial" command for <tt/ttyS2/ since the IRQ for ttyS2 is
supposedly "busy" and you will get the same "... busy" error message.
To fix this either reboot or: exit or gracefully kill all likely
@ -2855,14 +2889,14 @@ messages for the serial ports. 2. Hope that the file that runs
again.
If you think you know what IRQ <tt/ttyS2/ is using then you may look
at /proc/interrupts to find what else is currently using this IRQ.
You might also want to double check that any suspicious IRQs shown
here (and by "setserial") are correct (the same as set in the
hardware). A way to test whether or not it is a potential interrupt
conflict is to set the IRQ to 0 (polling) using "setserial". Then if
the busy message goes away, it was likely a potential interrupt
conflcit. It's not a good idea to leave it permanently set at 0 since
more CPU resources will be used.
at /proc/interrupts to find what else (besides another serial port) is
currently using this IRQ. You might also want to double check that
any suspicious IRQs shown here (and by "setserial") are correct (the
same as set in the hardware). A way to test whether or not it is a
potential interrupt conflict is to set the IRQ to 0 (polling) using
"setserial". Then if the busy message goes away, it was likely a
potential interrupt conflcit. It's not a good idea to leave it
permanently set at 0 since more CPU resources will be used.
@ -3726,7 +3760,7 @@ Monitoring/Diagnostics">
of mailing lists.
<sect1> Internet
<p>
<p> <label id="vern_">
<itemize>
<item> <url url="ftp://scicom.alphacdc.com/pub/linux" name="Serial
Suite"> by Vern Hoxie is a collection of blurbs about the care and

View File

@ -3,10 +3,11 @@
<title> Text-Terminal-HOWTO </title>
<author> David S. Lawyer <url url="mailto:dave@lafn.org">
<date> v1.12, May 2000
<date> v1.13, June 2000
<!--
Change log:
v1.12 lilo.conf for serial console, reset -> setterm -reset (due to
v1.13 killing getty permanently, reset bug+, man lilo
v1.12 May 2000 lilo.conf for serial console, reset -> setterm -reset (due to
bug), scrolling region 25-line problem, sharing+, JavaStation-HOWTO.
v1.11 2 March 2000 New link to vtprint, links to char-sets +, typos
v1.10 Modem status interrupts work, Rubini said no. DoubleVision.
@ -138,10 +139,8 @@ sites see: <url 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.12, May 2000 . New in this version
is: lilo.conf for serial console, reset -> setterm -reset
(due to bug), scrolling region 25-line problem, sharing+,
JavaStation-HOWTO .
version your are currently reading is: v1.13, June 2000 . New in this version
is: killing getty permanently, reset bug+, man lilo. .
<sect1> Related HOWTO's <label id="related_howtos">
<p> Go to the websites shown above to get these.
@ -1893,16 +1892,15 @@ everything works OK because each inline coupler is also a null-modem
adapter. Two null-modem devices in series result in a straight-thru
connection.
RJ45 and RJ48 are 8-conductor (or 10-conductor for some computer
applications) telephone plugs. The 10-conductor ones are allegedly
wider and will not mate with 8-conductor ones. They are used for both
flat telephone cable and round twisted pair cable. The cable end of
the connector may be different for round and flat cable and both RJ45
and RJ48 may be 8 or 10 conductor so make sure you get the right one.
RJ48 has an extra tab so that a RJ48 plug will not push into a RJ45
jack (but a RJ45 plug will mate with a RJ48 jack). They're used on
some multiport serial cards and networks. Heres the pin numbers for
an 8-conductor:
RJ45 and RJ48 are usually 8-conductor modular telephone plugs.
However some are 10-conductor and are allegedly wider and will not
mate with 8-conductor ones. They are used for both flat telephone
cable and round twisted pair cable. The cable end of the connector
may be different for round and flat cable and both RJ45 and RJ48 may
be 8 or 10 conductor so make sure you get the right one. RJ48 has an
extra tab so that a RJ48 plug will not push into a RJ45 jack (but a
RJ45 plug will mate with a RJ48 jack). They're used on some multiport
serial cards and networks. Heres the pin numbers for an 8-conductor:
<tscreen><verb>
Plug Jack
@ -2998,7 +2996,10 @@ which runs <tt/stty/ since on seldom need it.
<sect1> Setserial <label id="set_serial">
<!-- setserial.H begin (in MM TT SS)
<sect1>What is Setserial ? <label id="set_serial"> -->
<sect1>What is Setserial ? <label id="set_serial">
Change Log:
May 2000: <sect2> IRQs near end ttyS0 -> ttyS1 + clarity
-->
<p> This part is in 3 HOWTOs: Modem, Serial, and Text-Terminal. There
are some minor differences, depending on which HOWTO it appears in.
@ -3010,8 +3011,8 @@ set in the port's hardware, what type of UART you have, etc. It can
also show how the driver is currently set. In addition, it can be
made to probe the hardware and try to determine the UART type and IRQ,
but this has severe limitations. See <ref id="probing_ss"
name="Probing">. Note that it can't set the IRQ, etc in the hardware
of PnP serial ports.
name="Probing">. Note that it can't set the IRQ or the port address
in the hardware of PnP serial ports.
If you only have one or two built-in serial ports, they will usually
get set up correctly without using setserial. Otherwise (or if there
@ -3028,10 +3029,10 @@ equivalent was compiled into your kernel). If you should (for some
reason) unload the serial module later on, the changes previously made
by <tt/setserial/ will be forgotten by the kernel. So <tt/setserial/
must be run again to reestablish them. In addition to running via a
start-up script, something akin to <tt/setserial/ also runs when the
serial module is loaded (or the like). Thus when you watch the
start-up messages on the screen it may look like it ran twice, and in
fact it has.
start-up script, something akin to <tt/setserial/ also runs earlier
when the serial module is loaded (or the like). Thus when you watch
the start-up messages on the screen it may look like it ran twice, and
in fact it has.
Setserial can set the time that the port will keep operating after
it's closed (in order to output any characters still in its buffer in
@ -3057,7 +3058,14 @@ Note that setserial calls an IO address a "port". If you type:
setserial -g /dev/ttyS*
</verb></tscreen>
you'll see some info about how that device driver is configured for
your ports. Add a -a to the option -g to see more info although few
your ports. Note that where it says <tt>"UART: unknown"</tt> it
probably means that no uart exists. In other words you probably have
no such serial port and the other info shown about the port is
meaningless and should be ignored. If you really do have such a
serial port, setserial doesn't recognize it and that needs to be
fixed.
If you add -a to the option -g you will see more info although few
people need to deal with (or understand) this additional info since
the default settings you see usually work fine. In normal cases the
hardware is set up the same way as "setserial" reports, but if you are
@ -3066,7 +3074,11 @@ 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. Of course the serial port driver will
not work correctly (if at all) with such bogus values.
not work correctly (if at all) if you attempt to use such a port.
Thus when giving parameters to "setserial" anything goes. It gives
you no warning if what you tell it is incorrect and will allow you to
create conflicts in IRQs and I/O port addresses that will have
disastrous results later on.
While assignments made by setserial are lost when the PC is powered
off, a configuration file may restore them (or a previous
@ -3279,10 +3291,11 @@ Debian labeled obsolete files with "...pre-2.15".
<sect2> IRQs
<p> By default, both ttyS0 and ttyS2 share IRQ 4, while ttyS0 and
ttyS3 share IRQ 3. But sharing serial interrupts is not permitted
unless you: 1. have kernel 2.2 or better, and 2. you've complied in
support for this, and 3. your serial hardware supports it. See
<p> By default, both ttyS0 and ttyS2 will share IRQ 4, while ttyS1 and
ttyS3 share IRQ 3. But actually sharing serial interrupts (using them
in running programs) is not permitted unless you: 1. have kernel 2.2
or better, and 2. you've complied in support for this, and 3. your
serial hardware supports it. See
Serial-HOWTO: Interrupt sharing and Kernels 2.2+.
@ -3837,7 +3850,8 @@ commands commonly used at the terminal are:
<itemize>
<item> clear (to clear the screen)
<item> setterm -reset (to reset the terminal)
<item> reset (to reset the terminal
<item> setterm -reset (alternative for "reset" in case of bug)
</itemize>
<sect1> Starting Up the Terminal
@ -3948,7 +3962,7 @@ leave some temporary files lying around as well as a corrupted
interface. Killing the login shell should result in a startup of
getty with a new login prompt.
<label id="ctrl-s">
<label id="ctrl_s">
People new to Linux may unintentionally press Ctrl-S (^S) (or the "No
Scroll" key) which mysteriously freezes the screen (although that is
what this key is supposed to do if you use software flow-control). To
@ -3962,23 +3976,29 @@ using hardware flow-control is to prevent such freezes.
<p> This includes the case of a "frozen display" = "hung terminal" of
the previous section.
<sect2> Symptoms
<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
when the serial port hardware gets itself corrupted, the only fix may
be to cycle power (turn off the PC and reboot). The corruption may be
due to things such as bug in the program you're using, a hardware
failure (including an obscure hardware defect that you can normally
live with), or possibly an incorrect configuration. If everything was
working normally but it suddenly goes bad, it may be that the
interface got corrupted by something you did. Three mistakes you
might have made to corrupt the interface are:
be to cycle power (turn off the PC and reboot). Sometimes logging in
again will solve the problem. To do this kill the shell process
running on the terminal (or kill getty if it's running). You do this
from another terminal. Once killed, a new getty process respawns
which hopefully will end the corruption. Recycling power (or
resetting) for the terminal may help too.
The corruption may be due to things such as bug in the program you're
using, a hardware failure (including an obscure hardware defect that
you can normally live with), or possibly an incorrect configuration.
If everything was working normally but it suddenly goes bad, it may be
that the interface got corrupted by something you did. Three mistakes
you might have made to corrupt the interface are:
<itemize>
<item> <ref id="sent_bin" name="Sent Terminal Binary">
<item> <ref id="abnormal_exit" name="Abnormally Exited a Program">
<item> <ref id="ctrl-s" name="Typed ctrl-S by mistake">
<item> <ref id="ctrl_s" name="Typed ctrl-S by mistake">
</itemize>
<sect2> Sent Terminal Binary Characters <label id="sent_bin">
@ -3998,17 +4018,28 @@ a remote computer may send binary to your screen. There are numerous
other ways it can happen so be prepared for it. Even a supposed ASCII
file may contain unwanted control codes.
To fix this problem reset the terminal. You may try typing "setterm
-reset" (although you may not be able to see what you're typing).
This will send the reset string from the terminfo entry to the
terminal. If the correct set-up has been saved inside the terminal,
then pressing a special key(s) (perhaps in setup mode) may restore
this setting. Then you might still need to use "tset" to send the
init string if you use it to set up your terminal. Note that the
"reset" command appears to be broken for terminals that have been set
to "clocal" with stty or the like. I've substituted "setterm -reset"
for it and submitted a bug report in Mar. 2000.
To fix this problem reset the terminal. Type either just "reset" (may
be broken) or "setterm -reset" (followed by a &lt;return&gt of
course). You may not be able to see what you're typing. This will
send the reset string from the terminfo entry to the terminal. As an
alternative to this, if the correct set-up has been saved inside the
terminal then pressing a special key(s) (perhaps in setup mode) may
restore the settings. Then you might still need to use "tset" to send
the init string if you use it to set up your terminal.
Note that the "reset" command appears to be broken for terminals that
need "clocal" set since "reset" seems to unset "clocal". In this case
instead of fixing the problem, "reset" only compounds it by disabling
communication between the terminal and computer. You will likely need
to log in again and hope the getty sets "clocal". If you see a login
prompt without asking for it, you're in luck. Otherwise see <ref
id="symptoms_" name="Symptoms and Some Fixes"> for how to get a login
prompt. You should try out "reset" before you need it and use
"setterm -reset" if "reset" logs you out or otherwise doesn't work
right. I submitted a bug report in Mar. 2000 so "reset" could be
fixed by now.
<ref id="symptoms_" name="Symptoms and Some Fixes">
<sect2> Abnormally Exited a Program <label id="abnormal_exit">
<p> Large application programs (such as editors) often use the stty
command (or the like) in their code to temporarily change the stty
@ -4195,16 +4226,19 @@ file that runs each time you login or start up the computer.
system are normally only sent to the console (the PC monitor). Some
of the messages sent to the console at boot-time may also be seen on
any terminal after the boot succeeds by typing the command: dmesg. If
the boot fails this will not be of any use. It's possible to modify
the Linux kernel so as to make a terminal serve as the console and
receive all the messages from Linux intended for the console.
Unfortunately, the messages from the BIOS (which display on the
monitor when a PC is first started) will not display on this terminal.
the boot failed this will not be of any use since the terminal can't
work without an operating system. It's possible to modify the Linux
kernel so as to make a terminal serve as the console and receive all
the messages from Linux intended for the console. Unfortunately, the
messages from the BIOS (which display on the monitor when a PC is
first started) will not display on this terminal (but still display on
the monitor).
Some people do this when they run a PC without a monitor or keyboard.
Normally a PC will not start up without a keyboard and monitor but
some BIOSs permit one to do it. You will likely need to set this up
in the BIOS using the CMOS menus when you start your PC.
Normally, a PC will not start up without a keyboard and video card but
some BIOSs permit it. If you are lucky enough to have such a BIOS
that supports "console re-direct" you will likely then need to setup
the BIOS using the CMOS menus when you start your PC.
<sect2> For Kernels 2.2 or higher
<p> The instructions for creating a serial-console are included with
@ -4213,9 +4247,10 @@ the device /dev/console is linked to tty0 (the PC console). For a
serial-console you create a new /dev/console which is a true device
(and not linked to something else). You must also put a statement
regarding the serial-console into /etc/lilo.conf and then run lilo.
This is because the equivalent of "setserial" needs to be run to set up
your serial-console before the kernel is loaded. See the above
mentioned documentation for more details.
This is because the equivalent of "setserial" needs to be run to set
up your serial-console before the kernel is loaded. See the above
mentioned documentation and the man page for lilo.conf for more
details.
Here is an example <tt>/etc/lilo.conf</tt> file contents (for ttyS0):
<tscreen><verb>
@ -4391,16 +4426,16 @@ the next section.
<sect1> Terminal Was Working OK <label id="term_was_ok">
<p> When a formerly working terminal suddenly goes bad it is often
easy to find the problem. That's because if you think about what
recently happened it will likely give a clue to the cause of the
problem.
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).
The problem may be obvious such as an error message when the terminal
is first turned on. If it makes a noise it likely needs repair. See
<ref id="repair_" name="Repair & Diagnose">. First, think about what
has been done or changed recently as it's likely the cause of the
problem. Did the problem happen just after new system software was
installed or after a change in the configuration?
is first turned on. If it makes a strange noise it likely needs
repair. See <ref id="repair_" name="Repair & Diagnose">. First,
think about what has been done or changed recently as it's likely the
cause of the problem. Did the problem happen just after new system
software was installed or after a change in the configuration?
If the terminal isn't responding correctly (if at all) to what you
type to it, you may have a <ref id="corrupt_interface" name="Corrupted
@ -5780,6 +5815,10 @@ See <url url="http://www.wyse.com/terminal/">.
<p> Display adjustments (must remove cover): Brightness VR202, Height
VR302, Width VR101 (also affects height).
<sect2> Wyse 85
<p> Can emulate VT52/T100/VT200. Press F3 for setup. Scroll thru
setup with up/down keys.
<sect2> Wyse 99-GT
<p> Here is the setup Menus of the Wyse99GT (late 1980's). Note that
TERM means "termination" (character) and not "terminal".