This commit is contained in:
gferg 2011-02-10 20:22:17 +00:00
parent 6d4a3642a5
commit 8d99c74588
3 changed files with 323 additions and 283 deletions

View File

@ -4032,7 +4032,7 @@ Addresses Linux localization issues specific to Serbian users
Serial-HOWTO</ULink>,
<CiteTitle>Serial HOWTO</CiteTitle>
</Para><Para>
<CiteTitle>Updated: Nov 2010</CiteTitle>.
<CiteTitle>Updated: Feb 2011</CiteTitle>.
Describes serial port features other than those which should be
covered by other HOWTOs. Lists information on multiport serial cards
and contains detailed technical information about the serial port

View File

@ -1166,7 +1166,7 @@ writers may need to know. </Para>
Serial-HOWTO</ULink>,
<CiteTitle>Serial HOWTO</CiteTitle>
</Para><Para>
<CiteTitle>Updated: Nov 2010</CiteTitle>.
<CiteTitle>Updated: Feb 2011</CiteTitle>.
Describes serial port features other than those which should be
covered by other HOWTOs. Lists information on multiport serial cards
and contains detailed technical information about the serial port

View File

@ -1,12 +1,16 @@
<!doctype linuxdoc system>
<article>
<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.26 November 2010
<date> v2.27 February 2011
<!-- Change log:
2.26 Nov. 2010 Changed EIA-232 to RS-232. PCI-e bus is serial. No
2.27 Feb. 2011: The serial port is still widely used in embedded
systems, etc., and is not really obsolete. Better definition of
input, output. Deleted devfs names such as tts.
2.26 Nov. 2010: Changed EIA-232 to RS-232. PCI-e bus is serial. No
serial port on new PCs since it's obsolete and this HOWTO is now
mainly of historical interest.
2.25 Jan. 2007 picocom. devfs is obsolete. ser2net. Revised parts on
@ -64,50 +68,51 @@ v1.0: 6 Jan. 1994: first Serial-HOWTO by Greg Hankins
v1.0: June 1993: was called Serial FAQ, by Greg Hankins
-->
<abstract>
This document describes the now obsolete UART serial port features
other than those which should be covered by Modem-HOWTO, PPP-HOWTO,
Serial-Programming-HOWTO, or Text-Terminal-HOWTO. It lists info on
multiport serial cards. It contains technical info about the serial
port itself in more detail than found in the above HOWTOs and should
be best for troubleshooting when the problem is the serial port
itself. If you are dealing with a Modem, PPP (used for Internet
access on a phone line), or a Text-Terminal, those HOWTOs should be
consulted first. </abstract>
This document is for the UART serial port. This port has mostly
disappeared from desktops and laptops is still used elsewhere such as
for embedded systems. It covers information other than that which
should be covered by Modem-HOWTO, PPP-HOWTO, Serial-Programming-HOWTO,
or Text-Terminal-HOWTO. It lists info on multiport serial cards. It
contains technical info about the serial port itself in more detail
than found in the above HOWTOs and should be best for troubleshooting
when the problem is the serial port itself. If you are dealing with a
Modem, PPP (used for Internet access on a phone line), or a
Text-Terminal, those HOWTOs should be consulted first. </abstract>
<toc>
<sect>Introduction
<p> This HOWTO covers basic info on the now obsolete serial port and
multiport serial cards. It was written when the serial port was a
major port for connecting a PC to other devices and the style of this
article reflects this. It is mostly in the present tense but due to
the historical nature of the serial port it probably should be in the
past tense. It thus hasn't been modified to have the tone of a
historical document. It contains much more information in it than
most people needed to know and most people were able to use the serial
port without reading this HOWTO. But if you're having problems with
it or just want to understand how it worked this is one place to find
out about it.
<p> This HOWTO covers basic info on the serial port which is missing
on newer personal computers but is being used in recent
embedded systems as well as for routers, point-of-sale equipment, etc.
It includes multiport serial cards. It was written when the serial
port was a major port for connecting a PC to modems and printers, etc.
and the style of this article reflects this. If you're having
problems with the serial port, want to understand how it works, or
need a detailed introduction to it before studying serial programming,
this is one place to find out about it.
This HOWTO is about the slow original serial port which uses a UART
This HOWTO is about the original serial port which uses a UART
chip and is sometimes called a "UART serial port" to differentiate it
from the newer types of serial devices: Universal Serial Bus or
Firewire. Information specific to devices which use serial ports:
modems, text-terminals, infrared devices, and a few printers are found
in Modem-HOWTO, Text-Terminal-HOWTO, Infrared-HOWTO, and
Printing-HOWTO. Info on getty (the program that runs the login
process or the like) has been also moved to other HOWTOs since mgetty
and uugetty are best for modems while agetty is best for
text-terminals. If you are dealing with a modem, text terminal,
infrared device, or printer, then you may not need to consult this
HOWTO. But if you are using the serial port for some other device,
using a multiport serial card, trouble-shooting the serial port
itself, or want to understand more technical details of the serial
port, then you may want to use this HOWTO as well as some of the other
HOWTOs. (See <ref id="related_howtos" name="Related HOWTO's">) This
HOWTO lists info on various multiport serial cards. This HOWTO
addresses Linux running on PCs (ISA and/or PCI buses), although it
might be valid for other architectures.
Firewire. It's <ref id="slow_" name="slow">
compared to newer serial devices but can send text several times
faster than you can read it. Information specific to devices which
use serial ports: analog modems, text-terminals, infrared devices, and
a few printers are found in Modem-HOWTO, Text-Terminal-HOWTO,
Infrared-HOWTO, and Printing-HOWTO. Info on getty (the program that
runs the login process or the like) has been also moved to other
related HOWTOs since mgetty and uugetty are best for modems while
agetty is best for text-terminals. If you are dealing with a modem,
text terminal, infrared device, or printer, then you may not need to
consult this HOWTO. But if you are using the serial port for some
other device, using a multiport serial card, trouble-shooting the
serial port itself, or want to understand more technical details of
the serial port, then you may want to use this HOWTO as well as some
of the other HOWTOs. (See <ref id="related_howtos" name="Related
HOWTO's">) This HOWTO lists info on various multiport serial cards.
This HOWTO addresses Linux running on PCs (ISA and/or PCI buses),
although it might be valid for other architectures.
<sect1> Copyright, Disclaimer, & Credits
<sect2>Copyright
@ -162,23 +167,27 @@ helpful. In Jan. 2006 "Charles Brockman" reviewed it for typos which
resulted in many typos being fixed.
<sect1> New Versions of this Serial-HOWTO
<p> New versions will be issued infrequently (if at all) due to the
obsolesence of the serial port. They will be available to browse
and/or download at LDP mirror sites see: <url
<p> New versions will be issued perhaps every year or two. They will be
available to browse and/or download at LDP mirror sites see: <url
url="http://www.tldp.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://www.tldp.org/HOWTO/Serial-HOWTO.html"> and compare it to
this version: v2.26 November 2010 .
this version: v2.27 February 2011 .
<sect1>New in Recent Versions <p> For a full revision history going
back to the time I started maintaining this HOWTO, see the source file
(in linuxdoc format): <url
url="http://cvs.tldp.org/go.to/LDP/LDP/howto/linuxdoc/Serial-HOWTO.sgml?view=markup"
name="(cvs) Serial-HOWTO.sgml"> <itemize>
name="(cvs) Serial-HOWTO.sgml">
<itemize>
<item> TO do: explain use of udev for serial port for setting names
and permissions. Fix dead links.
<item>2.27 Feb. 2011: The serial port is still widely used in embedded
systems, etc., and is not really obsolete. Better definition of
input, output. Deleted devfs names such as tts.
<item>2.26 Nov. 2010 Changed EIA-232 to RS-232. PCI-e bus is serial. No
serial port on new PCs since it's obsolete and this HOWTO is now
mainly of historical interest.
serial port on new PCs. I incorrectly wrote in this update that the serial port was obsolete and that this HOWTO is now mainly of historical interest.
<item>2.25 Jan. 2007 picocom. devfs is obsolete. ser2net. Revised
parts on drivers as modules vs. built into kernel. Serial Programming
wikibook.
@ -199,8 +208,8 @@ explained above.
on the Internet
<item><tt>Serial-Programming-HOWTO</tt> helps you write
C programs that read and write to the serial port
and/or check/set its state. A version written by Vern
Hoxie but not submitted to LDP is at <ref id="vern_" name="Internet">.
and/or check/set its state. A version written by Vern Hoxie but not
submitted to LDP is at <ref id="vern_" name="Internet section">.
<item><tt>Text-Terminal-HOWTO</tt> is about how they work, how to install
configure, and repair them. It includes a section on "Make a
Terminal the Console" which is useful for using a remote terminal to
@ -226,9 +235,9 @@ which is on all modern PCs.
Each serial port has a "file" associated with it in the /dev
directory. It isn't really a file but it seems like one. For
example, /dev/ttyS0 (or /dev/tts/0 for the Device File System). Other
serial ports are /dev/ttyS1, /dev/ttyS2, etc. But ports on the USB
bus, multiport cards, etc. have different names.
example, /dev/ttyS0. Other serial ports are /dev/ttyS1, /dev/ttyS2,
etc. But ports on the USB bus, multiport cards, etc. have different
names.
The common specification for the conventional serial port is RS-232
(or RS-232). So it's often called a "RS-232 serial port". The
@ -246,7 +255,7 @@ The UART (Universal Asynchronous Receiver-Transmitter) chip does most
of the work. Today, the functionality of this chip is usually built
into another chip. See <ref id="uart_" name="What Are UARTs?"> These
have improved over time and old models (prior to say 1994) are usually
obsolete.
very obsolete.
The serial port was originally designed for connecting external modems
to a PC but it's used to connect many other devices also such as mice,
@ -282,7 +291,9 @@ need to reserve.
For serial ports to be found, either the kernel must have been
compiled with serial support, or serial support must be provided by a
module.
module. To check this look in the file /boot/config-2.6... and search
for SERIAL. =m means it's a module and you may check to see the
modules that are being used by typing: lsmod.
<sect> How the Hardware Transfers Bytes <label id="how_hdw_xfers">
@ -291,16 +302,17 @@ treatment of it see <ref id="fifo_" name="FIFOs">.
<sect1> Transmitting
<p> Transmitting is sending bytes out of the serial port away from the
computer. Once you understand transmitting, receiving is easy to
understand since it's similar. The first explanation given here will
be grossly oversimplified. Then more detail will be added in later
explanations. When the computer wants to send a byte out the serial
port (to the external cable) the CPU sends the byte on the bus inside
the computer to the I/O (Input Output) address of the serial port.
I/O is often written as just IO. The serial port takes the byte, and
sends it out one bit at a time (a serial bit-stream) on the transmit
pin of the serial cable connector. For what a bit (and byte) look
like electrically see <ref id="volt_shape" name="Voltage Waveshapes">.
computer (output). Once you understand transmitting, receiving
(input) is easy to understand since it's similar. The first
explanation given here will be grossly oversimplified. Then more
detail will be added in later explanations. When the computer wants
to send a byte out the serial port (to the external cable) the CPU
sends the byte on the bus inside the computer to the I/O (Input
Output) address of the serial port. I/O is often written as just IO.
The serial port takes the byte, and sends it out one bit at a time (a
serial bit-stream) on the transmit pin of the serial cable connector.
For what a bit (and byte) look like electrically see <ref
id="volt_shape" name="Voltage Waveshapes">.
Here's a replay of the above in a little more detail (but still very
incomplete). Most of the work at the serial port is done by the UART
@ -310,7 +322,7 @@ address. This byte gets into a 1-byte "transmit shift register" in
the serial port. From this shift register bits are taken from the
byte one-by-one and sent out bit-by-bit on the serial line. Then when
the last bit has been sent and the shift register needs another byte
to send it could just ask the CPU to send it another byte. Thus would
to send, it could just ask the CPU to send it another byte. Thus would
be simple but it would likely introduce delays since the CPU might not
be able to get the byte immediately. After all, the CPU is usually
doing other things besides just handling the serial port.
@ -352,7 +364,7 @@ register and is still being transmitted bit-by-bit.
In review, when a byte has been fully transmitted out the transmit
wire of the serial port and the shift register is now empty the
following 3 things happen almost simultaneously:
following 3 things happen in rapid succession:
<enum>
<item> The next byte is moved from the transmit buffer into
@ -365,7 +377,7 @@ yet another byte to the now empty transmit buffer
Thus we say that the serial port is interrupt driven. Each time the
serial port issues an interrupt, the CPU sends it another byte. Once
a byte has been sent to the transmit buffer by the CPU, then the CPU
is free to pursue some other activity until it gets the next
is free to pursue some other activities until it gets the next
interrupt. The serial port transmits bits at a fixed rate which is
selected by the user (or an application program). It's sometimes
called the baud rate. The serial port also adds extra bits to each
@ -409,8 +421,8 @@ bytes from the port. For an interrupt sent when the 14th byte has
been received, there could be 16 bytes to get if 2 more bytes have
arrived since the interrupt. But if 3 more bytes should arrive
(instead of 2), then the 16-byte buffer will overrun. It also may
pick up less than 14 bytes by setting it that way or due to timeouts.
See <ref id="fifo_" name="FIFOs"> for more details.
pick up less than 14 bytes by setting it up that way or due to
timeouts. See <ref id="fifo_" name="FIFOs"> for more details.
<sect1> The Large Serial Buffers
<p> We've talked about small 16-byte serial port hardware
@ -419,11 +431,20 @@ the CPU takes some bytes out of the receive buffer of the hardware, it
puts them into a much larger (say 8k-byte) receive buffer in main
memory. Then a program that is getting bytes from the serial port
takes the bytes it's receiving out of that large buffer (using a
"read" statement in the program). A similar situation exists for
bytes that are to be transmitted. When the CPU needs to fetch some
bytes to be transmitted it takes them out of a large (8k-byte)
transmit buffer in main memory and puts them into the small 16-byte
transmit buffer in the hardware.
"read" statement in the program).
A similar situation exists for bytes that are to be transmitted. When
the CPU needs to fetch some bytes to be transmitted it takes them out
of a large (8k-byte) transmit buffer in main memory and puts them into
the small 16-byte transmit buffer in the hardware. And when a program
wants to send bytes out the serial port, it writes them to this large
transmit buffer.
Both of these buffers are managed by the serial driver. But the
driver does more than just dealing with these buffers. It also does
limited filtering (minor modifications) of data passing thru these buffers
and listens for control certain characters. All this is configurable
using the <ref id="stty_" name="Stty"> program.
<sect> Serial Port Basics <label id="basics_">
<!-- basics.D begin <sect> Serial Port and Modem Basics
@ -455,15 +476,15 @@ name="How the Hardware Transfers Bytes"> but in greater detail.
<!-- ifdef SERIAL_ -->
An I/O device is just a way to get data into and out of a computer.
There are many types of I/O devices such as serial ports, parallel
ports, disk drive controllers, ethernet boards, universal serial
buses, etc.
There are many types of I/O devices such as the older serial ports and
parallel ports, network cards, universal serial buses (USB), and
firewire etc.
<!-- ifdef SERIAL_ end -->
Most PC's have one or two serial ports. Each has a 9-pin connector
(sometimes 25-pin) on the back of the computer. Computer programs can
send data (bytes) to the transmit pin (output) and receive bytes from
the receive pin (input). The other pins are for control purposes and
ground.
Most pre-2007 PC's have a serial port or two (on older PC's). Each
has a 9-pin connector (sometimes 25-pin) on the back of the computer.
Computer programs can send data (bytes) to the transmit pin (output)
and receive bytes from the receive pin (input). The other pins are
for control purposes and ground.
The serial port is much more than just a connector. It converts the
data from parallel to serial and changes the electrical representation
@ -483,8 +504,8 @@ things.
<sect2> Pins and Wires
<p> Old PC's used 25 pin connectors but only about 9 pins were
actually used so today most connectors are only 9-pin. Each of the 9
pins usually connects to a wire. Besides the two wires used for
actually used so later on most connectors were only 9-pin. Each of
the 9 pins usually connects to a wire. Besides the two wires used for
transmitting and receiving data, another pin (wire) is signal ground.
The voltage on any wire is measured with respect to this ground. Thus
the minimum number of wires to use for 2-way transmission of data is
@ -496,8 +517,8 @@ only and not for sending bytes. All of these signals could have been
shared on a single wire, but instead, there is a separate dedicated
wire for every type of signal. Some (or all) of these control wires
are called "modem control lines". Modem control wires are either in
the asserted state (on) of +12 volts or in the negated state (off) of
-12 volts. One of these wires is to signal the computer to stop
the asserted state (on) of +5 volts or in the negated state (off) of
-5 volts. One of these wires is to signal the computer to stop
sending bytes out the serial port cable. Conversely, another wire
signals the device attached to the serial port to stop sending bytes
to the computer. If the attached device is a modem, other wires may
@ -517,12 +538,11 @@ Industries Association) and later EIA/TIA after EIA merged with TIA
(Telecommunications Industries Association). The EIA-232 spec
provides also for synchronous (sync) communication but the hardware to
support sync is almost always missing on PC's. The RS designation is
obsolete but is still widely used and will be used in this howto for
RS-232. Other documents may use the full EIA/TIA designation, or just
EIA or TIA. For info on other (non-RS-232) serial ports see the
section <ref id="non_rs232" name="Other Serial Devices (not async
RS-232)">
was intended to become obsolete but is still widely used and will be
used in this howto for RS-232. Other documents may use the full
EIA/TIA designation, or just EIA or TIA. For info on other
(non-RS-232) serial ports see the section <ref id="non_rs232"
name="Other Serial Devices (not async RS-232)">
<!-- ifdef SERIAL_ end -->
<sect1> IO Address & IRQ
@ -976,28 +996,29 @@ See <ref id="set_serial" name="What is Setserial"> for more info on
<!-- basics.D end -->
<sect> The Serial Port is Now Obsolete
<sect1> Introduction
<p> The serial port is today (2010) obsolete (and often called a "legacy"
device) but it is still in use on some older computers, especially for
Linux. The serial port has many shortcomings and after about 2005
most new PC's no longer had them. Most laptops and Macs discontinued
them even earlier. During the era when some new PC's came with serial
ports and others didn't, the PC's that didn't have serial ports were
called "legacy-free". However, while PC's today no longer have serial
ports, some do have them built into a modem (which plugs into a
telephone line). Such a serial port only works with the modem and
can't be used for any other device. The reason they have such a
"built in" serial port is that analog modems are designed to only work
thru a serial port.
<sect1> The Serial Port is Now Obsolete on PCs <p> The serial port is
today (2011) sort of obsolete on PCs (and often called a "legacy"
device) but it is still in use on some older computers and is used in
imbedded systems, for communication with routers and point-of-sale
equipment, etc. The serial port is <ref id="slow_" name="slow">
and after about 2005 most new PC's no longer had them. Most laptops
and Macs discontinued them even earlier. During the era when some new
PC's came with serial ports and others didn't, the PC's that didn't
have serial ports were euphemistically called "legacy-free". However,
while PC's today no longer have serial ports, some do have them built
into a "legacy" modem (which plugs into a telephone line). Such a serial port
only works with the modem and can't be used for any other device. The
reason they have such a "built in" serial port is that analog modems
are designed to only work thru a serial port.
The physical serial port on the back of an old PC, must pass data between
the computer and an external cable. Thus it has two interfaces: the
serial-port-to cable and the serial-port-to-computer-bus. Both of
these interfaces are slow. First we'll consider the interface via
external cable to the outside world.
The physical serial port on the back of a PC (including the chip its
connected to inside the PC), must pass data between the computer and
an external cable. Thus it has two interfaces: the serial-port-to
cable and the serial-port-to-computer-bus. Both of these interfaces
are slow. First we'll consider the interface via external cable to
the outside world.
<sect1> RS-232 Cable Is Low Speed & Short Distance
<sect1> RS-232 Cable Is Low Speed & Short Distance <label id="slow_">
<p> The conventional RS-232 serial port is inherently low speed and
is severely limited in distance. Ads often read "high speed" but it
can only work at "high speed" over very short distances such as to a
@ -1023,7 +1044,7 @@ transmission was apparently not recognized. The result was that since
the serial port couldn't handle high speeds, new types of serial
interfaces were devised that could: Ethernet, USB, Firewire, etc.
The final outcome was the demise of the serial port which due to it's
ancient technology became obsolete.
ancient technology became obsolete for high speed uses.
<sect1> Inefficient PCI Interface to the Computer (in some cases)
@ -1088,15 +1109,20 @@ supplied as a module. For the 2.6 kernels on, most drivers are
supplied both ways: as a module or it can be built into the kernel.
Take care not to both build support into the kernel and force the
module to load for a certain serial card. For older kernels, there
were often no modules for dumb serial multiport boards.
were often no modules for dumb serial multiport boards so support was
built into the kernel.
<sect2> Build support into the kernel?
<sect2> Build (compile) support into the kernel?
<p>A pre-compiled kernel may not have a driver for your multiport card
built in. So then you must either compile the kernel yourself and
build in the right driver, or insure that the module is available and
loads. Of course if the driver doesn't come both ways (as a
compile-time option and as a module) you have no such choice.
If you want to see what has already been compiled into an existing
working kernel, go the the /boot directory (or wherever the compiled
kernel(s) reside) and look in the config... file.
In the 2.6 kernel there are many options to select from in the
configuration file for compiling. Adding support for certain
multiport cards is listed under the headings "Character devices" or
@ -1104,7 +1130,7 @@ multiport cards is listed under the headings "Character devices" or
serial driver and are found under "Serial Drivers". More advanced
cards have their own driver found under "Character devices"
For kernel 2.6 you should select "CONFIG_SERIAL_8250_EXTENDED". (or
For compiling kernel 2.6 you should select "CONFIG_SERIAL_8250_EXTENDED". (or
just "CONFIG_SERIAL_EXTENDED" for 2.4). Then you will be asked more
questions about your serial ports with more options to select. If the
resulting configuration is not quite right, then you may need to edit
@ -1113,14 +1139,15 @@ the kernel configuration file manually.
<sect2> Using module support <label id="modules_">
<p>A pre-compiled kernel may come with a pre-compiled module for the
board so that you don't need to recompile the kernel. This module
must be loaded in order to use it, but the kernel may automatically do
this for you if a program is trying to use a device on the smart board
(provided there exists a table showing which module to load for the
device). This table may be in /etc/modules.conf and/or be internal to
the kernel. Also certain parameters may need to be passed to the
driver (via lilo's "append" command, via grub's "kernel" command, or
via /etc/modules.conf). For kernel 2.6 (and 2.4) the modules should
be found in <tt>/lib/modules/.../kernel/drivers/char.</tt>
must be loaded in order to use it and if there is installation
software for the driver, it should also set up Linux to load the
module (probably at boottime). Some of the modules to load at
boottime are listed in /etc/modules or /etc/modules.conf
Also certain parameters may need to be passed
to the driver via entries in these files or via lilo's "append"
command or via grub's "kernel" command. For kernel 2.6 (and 2.4) the
(unloaded) modules should be found in
<tt>/lib/modules/.../kernel/drivers/char.</tt>
<sect2> Getting info on multiport boards
<p> The board's manufacturer should have info on their website.
@ -1139,9 +1166,9 @@ The serial ports your multiport board uses depends on what kind of
board you have. Some have their own device names like /dev/ttyE27
(Stallion) or /dev/ttyD2 (Digiboard), etc. For various other brands,
see see devices.txt in the kernel documentation. Some use the
standard names like /dev/ttyS14 (/dev/tts/14) and may be found in
configuration files that used as arguments to <tt>setserial</tt>.
Such files may be included in a setserial or serial package.
standard names like /dev/ttyS14 and may be found in configuration
files that used as arguments to <tt>setserial</tt>. Such files may be
included in a setserial or serial package.
<sect1> Making Legacy Multiport Devices in the /dev Directory
<label id="make_multi">
@ -1182,15 +1209,15 @@ linux# mknod -m 666 /dev/ttyS17 c 4 81
<sect1>Standard PC Serial Cards
<p> In olden days, PCs came with a serial card installed. Later on,
the serial function was put on the hard-drive interface card. Today,
one or two serial ports are usually built into the motherboard
(on-board). Most of them (as of 2002) use a 16550 but some use 16650
(32-byte FIFOs). But one may still buy the individual PC serial cards
if they need more serial ports. They can be used to connect external
serial devices (modems, serial mice, etc...). Only a tiny percentage
of retail computer stores carry such cards. But one can purchase them
on the Internet. Before getting one for the PCI bus, make sure Linux
supports it.
the serial function was put on the hard-drive interface card. In the
1990s and early 2000s one or two serial ports were usually built into
the motherboard (on-board). Most of them (as of 2002) use a 16550 but
some use 16650 (32-byte FIFOs). But one may still buy the individual
PC serial cards if they need more serial ports. They can be used to
connect external serial devices (modems, serial mice, etc...). Only a
tiny percentage of retail computer stores carry such cards. But one
can purchase them on the Internet. Before getting one for the PCI
bus, make sure Linux supports it.
Here's a list of a few popular brands:
<itemize>
@ -1201,9 +1228,9 @@ Here's a list of a few popular brands:
</itemize>
<p>
Note: due to address conflicts, you may not be able to use /dev/ttyS3
(tts/3) with a IBM8514 video card (and some others) simultaneously.
See <ref id="video_8514" name="Avoiding IO Address Conflicts with Certain
Video Boards">
with a IBM8514 video card (and some others) simultaneously. See <ref
id="video_8514" name="Avoiding IO Address Conflicts with Certain Video
Boards">
<sect1>Dumb Multiport Serial Boards (with standard UART chips)
<p> They are also called "serial adapters". Each port has its own
@ -1237,6 +1264,7 @@ configuring<newline>
url="http://digital.natinst.com/manuals.nsf/web%2Fbyproductcurrent?OpenView&amp;Start=1&amp;Count=500&amp;Expand=15.1#15.1" name="NI-SERIAL"> by National Instruments
<item>NetBus (2 ports)<url url="http://www.netbus.com"> using patch from
<url url="http://lists.insecure.org/linux-kernel/2001/Feb/2809.html">
Discontinued.
<item>PC-COMM (4 ports) <item><url url="http://www.sealevel.com"
name="Sealevel Systems">
COMM-2 (2 ports), COMM-4 (4 ports) and COMM-8 (8 ports)
@ -1269,7 +1297,7 @@ COM8=0x268.
<p>
Make sure that a Linux-compatible driver is available and read the
information that comes with it. These boards use special devices (in
the /dev directory), and not the standard tts ones. This information
the /dev directory), and not the standard ttyS ones. This information
varies depending on your hardware. If you have updated info which
should be shown here please email it to me.
@ -1282,21 +1310,22 @@ find instructions on this (possibly in the source code tree).
There are many different brands, each of which often offers many
different cards. No attempt is currently being made to list all the
cards here (and many listed are obsolete). But all major brands and
websites should be shown here so it something is missing let me know.
Go to the webpage shown for more information. These websites often
also have info (ads) on related hardware such as modem pools, remote
access servers (RASs), and terminal servers. Where there is no
webpage, the cards are likely obsolete. If you would like to put
together a better list, let me know.
cards here (and many listed are obsolete and have bad internet links
to them which need to be fixed). But all major brands and websites
should be shown here so it something is missing let me know. Go to
the webpage shown for more information. These websites often also
have info (ads) on related hardware such as modem pools, remote access
servers (RASs), and terminal servers. Where there is no webpage, the
cards are likely obsolete. If you would like to put together a better
list, let me know.
<itemize>
<item>Chase Research, now Perle Systems Ltd (UK based, ISA/PCI cards)<newline>
webpage: <tt><url url="http://www.perle.com"></tt><newline>
driver status: included in kernel 2.4+ for PCI only; otherwise supported by
Perle<newline>
driver location: <url
url="http://www.perle.com/downloads/multi_port.html"> <newline>
driver and manual location: <url
url="http://www.perle.com/downloads/multi_port.shtml"> <newline>
<item>Comtrol RocketPort (36MHz ASIC; 4, 8, 16, 32, up to 128 ports)<newline>
webpage: <tt><htmlurl url="http://www.comtrol.com"
@ -1392,8 +1421,8 @@ url="http://www.perle.com/downloads/multi_port.html"> <newline>
name="http://www.nyx.net/&tilde;arobinso"></tt>
<item>Intelligent Serial Interface by Multi-Tech Systems<newline>
PCI: 4 or 8 port. ISA 8 port. DTE speed 460.8k<newline>
webpage: <url url="http://www.multitech.com/products/">
PCI: 4 or 8 port. ISA 8 port. DTE speed 460.8k. Discontinued<newline>
webpage: <url url="http://www.multitech.com/en_US/products/">
<item>Maxpeed SS (Toshiba; 4, 8 and 16 ports)<newline>
website: <tt><htmlurl url="http://www.maxpeed.com"
@ -1449,33 +1478,31 @@ url="http://www.perle.com/downloads/multi_port.html"> <newline>
driver location: <tt><htmlurl
url="ftp://ftp.stallion.com/drivers/ata5/Linux"
name="ftp://ftp.stallion.com/drivers/ata5/Linux"></tt> and
included in linux kernel since 1.3.27
included in linux kernel since 1.3.27. Moved: it's now at ?.
moved; it's now at
<item>System Base
<item>System Base
website: <url url="http://www.sysbas.com/">
</itemize>
<p>A review of Comtrol, Cyclades, Digi, and Stallion products was
printed in the June 1995 issue of the <EM/Linux Journal/. The article
is available at <tt><url url="
http://www.linuxjournal.com/article.php?sid=1097">
name="http://www.ssc.com/lj/issue14"></tt>.
Besides the listing of various brands of multiports found above in
this HOWTO there is <url url="http://eupedia.org/serialcards.html"
name="Gary's Encyclopedia - Serial Cards">. It's not as complete, but
may have some different links.
is available at <url url= "http://m.linuxjournal.com/article/1097"
name="Review: Intelligent Multiport Serial Boards"> Besides the
listing of various brands of multiports found above in this HOWTO
there is <url url="http://eupedia.org/serialcards.html" name="Gary's
Encyclopedia - Serial Cards">. It's not as complete, but may have
some different links.
<sect1> Unsupported Multiport Boards
<p> The following boards don't mention any Linux support as of 1 Jan.
2000. Let me know if this changes.
<p> The following brands that formerly made boards for with Linux
support don't mention any Linux support as of 1 Jan. 2000. Let me
know if this changes.
<itemize>
<item> Aurora (PCI only) <url url="www.auroratech.com">
<item> <url url="http://sie-cs.com/en/browse/product/serial-io"
name="Aurora (PCI only)">
</itemize>
<sect>Servers for Serial Ports
<p>A computer that has many serial ports (with many serial cables
connected to it) is often called a server. Of course, most servers
@ -1540,14 +1567,16 @@ the port (such as a modem or printer).
Resource allocation (locating the hardware or low-level configuring)
is assigning each port an IO address, IRQ, and name (such as ttyS2).
This IO-IRQ pair must be set in both the hardware and told to the
serial. We might just call this "io-irq" configuring for short. The
"setserial" program is sometimes used to tell the driver. PnP
methods, jumpers, etc, are used to set the IO and IRQ in the hardware.
Details will be supplied later. If you need to configure but don't
understand certain details it's easy to get into trouble. See <ref
id="locate_port" name="Locating the Serial Port: IO address IRQs">
<ref id="set_serial" name="What is Setserial">
This IO-IRQ pair must be set in both the hardware and
become known to the serial driver. We might just call this "io-irq"
configuring for short. The "setserial" program is sometimes used to
tell the driver io-irq info that an administrator has put in a
configuration file or given as parameters to the setserial command.
PnP methods, jumpers, etc, are used to set the IO and IRQ in the
hardware. Details will be supplied later. If you need to configure
but don't understand certain details it's easy to get into trouble.
See <ref id="locate_port" name="Locating the Serial Port: IO address
IRQs"> <ref id="set_serial" name="What is Setserial">
The second part (high-level configuring) is assigning it a speed (such
as 115.2k bits/sec), selecting flow control, etc. This is often
@ -1626,7 +1655,7 @@ driver but sometimes you have to do it yourself. What follows repeats
what was said above but in more detail.
The low-level configuring consists of assigning an IO address, IRQ,
and names (such as ttyS2 = tts/2). This IO-IRQ pair must be set in
and names (such as ttyS2) . This IO-IRQ pair must be set in
both the hardware and told to the serial driver. And the driver needs
to call this pair a name (such as ttyS2). We could call this "io-irq"
configuring for short. The modern way to do this is for the driver to
@ -1724,7 +1753,6 @@ message (use <tt/dmesg/ to see it). But if you don't have a "file"
/dev/ttyS4 then the port will not work. So you will then need to
create it, using<newline>
<tt>cd /dev; ./MAKEDEV ttyS4</tt><newline>
For the device filesystem, the driver should create the device <tt>tts/1</tt>
<!--
<sect2> Requesting that future drivers support your serial port
@ -2304,8 +2332,8 @@ stty crtscts < /dev/ttyS2
the serial port for hardware flow control. Note that RTS+CTS almost
spells: <tt/crtscts/ and the initial "c" means "control".
<sect> Serial Port Devices /dev/tts/2 = /dev/ttyS2, etc. <label id="ttySN_">
<!-- dev_names.D begin
<sect> Serial Port Devices /dev/ttyS2, etc. <label id="ttySN_">
<!-- serial_names.D begin
in Modem and Serial HOWTOs
Nov. 2003: rewrite
May 2003: PCI uses higher numbers
@ -2313,14 +2341,15 @@ Nov. 2004: All-PCI slot motherboards may not use PCI serial ports
Apr. 2006: ttyS2 may be used on PCI cards instead of ttyS4 or ttyS14.
Aug. 2006: udev uses old names
Dec. 2006: cleaned up on above
Feb. 2010: moved devfs info to obsolete section of Serial-Howto
<sect> Serial Port Devices /dev/ttyS2, etc. -->
<sect1>Serial Port Names: ttyS4, etc
<p>Once upon a time the names of the serial ports were simple. Except
for some multiport serial cards they were named /dev/ttyS0,
/dev/ttyS1, etc. Then around the year 2000 came the USB bus with
names like /dev/ttyUSB0 and /dev/ttyACM1 (for the ACM modem on the USB
bus).
<p>Common serial port names are /dev/ttyS0, /dev/ttyS1, etc. Then
around the year 2000 came the USB bus with names like /dev/ttyUSB0 and
/dev/ttyACM1 (for the ACM modem on the USB bus). Multiport serial
card used somewhat differnt names (depending on the brand) such as
/dev/ttyE5.
<sect1>The PCI Bus
<p>Since DOS provided for 4 serial ports on the old ISA bus:
@ -2403,57 +2432,7 @@ discouraged since lock files might not realize that it was really say
<tt>/dev/ttyS2</tt>. The newer lock file system doesn't fall into
this trap so it's now OK to use such links.
<sect1>Devfs (The Improved but Obsolete Device File System)
<p>Kernel 2.4 introduced the now obsolete optional "device file system"
(devfs) with a whole new set of names for everything. But in 2003-4,
it was claimed that devfs had unsolvable problems and starting with
kernel 2.6.12 it was replaced with "udev" (kernels prior to 2.6.12
also could use udev but with some problems). Although udev doesn't
provide all the functionality of devfs, it does handle hot plugging.
Also, the use of udev isn't required to run Linux so some people don't
use it. But many distributions install it by default.
Devfs was a good idea and was claimed to be more efficient than udev.
But unfortunately, the author of devfs didn't maintain it for long and
it allegedly became not too well maintained. So for better or worse
we now have udev instead although the debate of devfs vs. udev still
continues. For a detailed description of devfs see: <url
url="http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.html"> Also see
the kernel documentation tree: filesystems/devfs.
The names of devices for the devfs can be used in udev, but usually
are not and may not be simple to activate. Here's the devfs names for
serial devices: ttyS1 becomes tts/1, ttyUSB1 becomes /usb/tts/1, and
ttyACM1 is /usb/acm/1. Note that the number 1 above is just an
example. It could be replaced by 0, 2, 3, 4, etc. Some more examples
of udev names: ttyS2 becomes tts/2 (Serial port), tty3 becomes vc/3
(Virtual Console), ptyp1 becomes pty/m1 (PTY master), ttyp2 becomes
pty/s2 (PTY slave). "tts" looks like a directory which contains
devices "files": 0, 1, 2, etc. All of these new names should still be
in the /dev directory although optionally one may put them elsewhere.
For devfs device names in the /dev directory are created automatically
by the corresponding driver. Thus, if serial support comes from a
module and that module isn't loaded yet, there will not be any serial
devices in the /dev directory. This can be confusing: you physically
have serial ports but don't see them in the /dev directory. However,
if a device name is told to a communication program and the serial
module isn't loaded, the kernel is supposed to try to find a driver
for it and create a name for it in the /dev directory.
This works OK if it finds a driver. But suppose there is no driver
found for it. For example, if you try to use "setserial" to configure
a port that the driver failed to detect, it claims there is no such
port. How does one create a devfs port in this case?
For multiport devices for example, /dev/ttyF9 becomes /dev/ttf/9, or
in a later version /dev/tts/F9. Substitute for F (or f) whatever
letter(s) your multiport board uses for this purpose. A multiport
driver is supposed to create a devfs name similar to the above and put
it into the /dev directory
<!-- dev_names.D end -->
<!-- serial_names.D end -->
<sect1> Which Connector on the Back of my PC is ttyS1, etc? <label
@ -2585,9 +2564,9 @@ Text-Terminal-HOWTO.
control lines and indicate if they are positive (1 or green) or
negative (0 or red).
<itemize>
<item> <url url="http://serlook.sunsite.dk/" name="serlook"> can snoop
on serial line traffic (via a wiretap) and also send/receive on a
serial line.
<item> <url url="http://sourceforge.net/projects/serlook/files/"
name="serlook"> can snoop on serial line traffic (via a wiretap) and
also send/receive on a serial line.
<item> The "file": /proc/tty/driver/serial lists those that are
asserted (positive voltage)
<item> modemstat (Only works correctly on Linux PC consoles.) Status
@ -3086,7 +3065,8 @@ you may not need to use it much. It's handy if you're having problems
or want to see how the port is set up. Try typing ``stty -a'' at your
terminal/console to see how it's now set. Also try typing it without
the -a (all) for a short listing which shows how it's set different
than normal. Don't try to learn all the setting unless you want to
than "normal" which is how it's set using the command <tt>"stty
sane"</tt>. Don't try to learn all the setting unless you want to
become a serial historian since many of the settings are only for slow
antique dumb terminals of the 1970's. Most of the defaults should
work OK.
@ -3094,9 +3074,23 @@ work OK.
<tt/stty/ is documented in the man pages with a more detailed account
in the info pages. Type <tt>"man stty"</tt> or <tt>"info stty"</tt>.
Many of the stty options start with an "o" (output) or an "i" (input).
For example: <tt/onlcr/. Output is the flow of bytes out of the
computer while input is the flow of bytes into the computer. The
"point of view" is the computer, not the serial port or the device
connected to the serial port. For example, received input data comes
in on a cable and goes to the serial port chip. This chip, after
converting the bits from the serial to parallel representation, then
sends it (via a program read) to the large serial port buffer in main
computer memory. Thus the chip has both input and output but since
it's input data to the computer, its output is considered to be input.
The situation is similar for output flowing thru this chip. The
"input" and "output" refer to the direction of flow with respect to the
computer and not the serial port hardware (the chip).
Whereas <tt/setserial/ only deals with actual serial ports, stty is
used both for serial ports and for virtual terminals such as the standard
Linux text interface at a PC monitor. For the PC monitor, many of the
Linux text interface on a PC monitor. For the PC monitor, many of the
stty settings are meaningless. Changing the baud rate, etc. doesn't
appear to actually do anything.
@ -3554,16 +3548,6 @@ still present in 2005. For dumb terminals, lockfiles are not used
since this would not permit someone else to send a message to your
terminal using the write or talk program.
<sect1>Lock-Files if you use devfs
<p> The abandoned device-filesystem (devfs) has the /dev directory with
subdirectories. As of late 2001, there were problems with lockfiles.
For example, the lockfile mechanism considered dev/usb/tts/0 and
/dev/tts/0 to be the same device with name "0". Ditto for all other
devices that had the same "leaf" name.
Also, if some applications use the old name for a device and other
applications use the devfs name for the same device, then the
lockfiles will have different names. But the serial driver should
know they are the same.
<sect1> Change Owners, Groups, and/or Permissions of Device Files
<p> In order to use a device, you (or the program you run if you have
@ -3659,10 +3643,10 @@ But sometimes you need to configure Linux to load certain modules or
gives parameters to the module or to the kernel.
Such parameters may be supplied to certain modules on the command line
for the kernel or in /etc/modules.conf or /etc/modprobe.conf. Since
kernel 2.2 you don't edit this file but use the program update-modules
to change it. The info that is used to update modules.conf is put in
/etc/modutils/.
for the kernel or in /etc/modules, /etc/modules.conf or
/etc/modprobe.conf. Since kernel 2.2 you don't edit the modprobe.conf
file but use the program update-modules to change it. The info that
is used to update modules.conf is put in /etc/modutils/.
The Debian/GNU Linux has a file named /etc/modutils/setserial which
runs the serial script in /etc/init.d/ every time the serial module is
@ -4169,8 +4153,8 @@ is Setserial">
<p> This is an overrun of the hardware FIFO buffer and you can't
increase its size. Bug note (reported in 2002): Due to a bug in some
kernel 2.4 versions, the port number may be missing and you will only
see "ttyS" (no port number). But if devfs notation such as "tts/2" is
being used, there is no bug. See <ref id="higher_thruput" name="Higher Serial Thruput">.
see "ttyS" (no port number). But if devfs notation such as "tts/2"
was being used, there was no bug. See <ref id="higher_thruput" name="Higher Serial Thruput">.
@ -4917,12 +4901,11 @@ the next byte.
<p> A number of EIA (or RS) standards have been established for higher
speeds and longer distances using twisted-pair (balanced) technology.
Balanced transmission make possible higher speeds, and can be a
hundred times faster than unbalanced RS-232. For a given speed, the
thousand times faster than unbalanced RS-232. For a given speed, the
distance (maximum cable length) may be many times longer with twisted
pair. But PC's keep being made with the "obsolete" RS-232 since it
works OK with modems and mice since the cable length is short. If
this appears in the latest version of this HOWTO, please let me know
if any of the non-RS-232 listed below are supported by Linux.
pair. But PC's, prior to about 2004??, kept being made with the
quasi-obsolete RS-232 since it works OK with modems and mice since the
cable length is short.
High speed serial ports (over 460.8 kbps) will often support both
RS-232 and EIA-485/EIA-422 (RS-485/RS-422) modes . (Note that for
@ -5030,7 +5013,7 @@ and look at the file: usb-serial.txt. The modules that support usb
serial devices are found in the modules tree:
kernel/drivers/usb/serial. It would be nice to have a HOWTO on the
USB. See also <url url="http://www.linux-usb.org"> and/or <url
url="http://.www.qbik.ch/usb/">.
url="http://www.qbik.ch/usb/">.
<sect1> Firewire
<p> Firewire (IEEE 1394) is something like the USB only faster (800
@ -5159,7 +5142,7 @@ Notes re books:
<url url="http://www.ibiblio.org/pub/Linux/system/serial/"
name="Serial Software"> for Linux software for the serial ports
including getty and port monitors.<newline>
<url url="http://www.ibiblio.org/pub/Linux/apps/serialcomm"
<url url="http://www.ibiblio.org/pub/Linux/system/serial/"
name="Serial Communications"> for communication programs.
<itemize>
@ -5176,7 +5159,7 @@ Monitoring/Diagnostics">
<p>
<itemize>
<item>man pages for: <tt>setserial</tt> and <tt/stty/
<item> <url url="www.gnu.org/manual/glibc/html_chapter/libc_12.html"
<item> <url url="http://www.gnu.org/manual/glibc/html_chapter/libc_12.html"
name="Low-Level Terminal Interface"> part of "GNU C Library Reference
manual" (in libc (or glibc) docs package). It covers the detailed
meaning of "stty" commands, etc.
@ -5189,16 +5172,6 @@ meaning of "stty" commands, etc.
<item>UUCP-HOWTO: for information on setting up UUCP
</itemize>
<sect1> Usenet newsgroups:
<p>
<itemize>
<item> comp.os.linux.answers
<item> comp.os.linux.hardware: Hardware compatibility with the Linux
operating system.
<item> comp.os.linux.networking: Networking and communications under Linux.
<item> comp.os.linux.setup: Linux installation and system administration.
</itemize>
<sect1> Serial Mailing List
<p>
The Linux serial mailing list. To join, send email to <tt><htmlurl
@ -5212,11 +5185,12 @@ meaning of "stty" commands, etc.
<sect1> Internet
<p>
<itemize>
<item> <url url="http://en.wikipedia.org/wiki/Serial_port" name
="Serial port - Wikipedia">
<item> <url url="http://serial.sourceforge.net/" name="Linux Serial
Driver home page"> Includes info about PCI support.
<!--
<item> <label id="vern_"> Serial Suite by
Vern Hoxie was a collection of blurbs about the
<item> Serial Suite by Vern Hoxie was a collection of blurbs about the
care and feeding of the Linux serial port plus some simple programs.
Not available.
-->
@ -5250,12 +5224,12 @@ name="Serial and UART Tutorial (FreeBSD)">
modern 16550As (usually called just 16550's) with FIFOs. If you have
something really old (pre 1990), the chip may unplug so that you may
be able to upgrade by finding a plug-in 16550A chip and replacing your
existing 16450 UART. If the functionality has been built into another
type of chip, you are out of luck. If the UART is socketed, then
upgrading would be easy if you could find a replacement. The new and
old are pin-to-pin compatible. It may be more feasible to just buy a
new serial card on the Internet (few retail stores stock them today)
or find a used one.
old existing 16450 UART. If the functionality has been built into
another type of chip, you are out of luck. If the UART is socketed,
then upgrading would be easy if you could find a replacement. The new
and old are pin-to-pin compatible. It may be more feasible to just
buy a new serial card on the Internet (few retail stores stock them
as of 2000) or find a used one.
<sect1>Two Ports with the Same IO address
<p>Modern kernels should not allow the opening of ports with the same
@ -5297,4 +5271,70 @@ analogous to the lower cost of an internal modem for a desktop PC as
compared to the higher cost (and more cabling) for an external modem.
See Modem-HOWTO: Modem Pools, Digital Modems.
<sect1>Lock-Files if you used the depreciated devfs
<p> The abandoned device-filesystem (devfs) has the /dev directory
with subdirectories. As of late 2001, there were problems with
lockfiles. For example, the lockfile mechanism considered
dev/usb/tts/0 and /dev/tts/0 to be the same device with name "0".
Ditto for all other devices that had the same "leaf" name. Also, if
some applications use the old name for a device and other applications
use the devfs name for the same device, then the lockfiles will have
different names. But the serial driver should know they are the same.
<!-- serial_port_names.D
in Modem and Serial HOWTOs
Feb 2010: moved devfs part of this file to the Obsolete section of
Serial-HOWTO -->
<sect1>Devfs (The deprecated Device File System. History)
<p>Kernel 2.4 introduced the now obsolete optional "device file system"
(devfs) with a whole new set of names for everything. Some people
used it but the majority probably didn't. But in 2003-4, it was
claimed that devfs had unsolvable problems and starting with kernel
2.6.12 it was replaced with "udev" (kernels prior to 2.6.12 also could
use udev but with some problems). Although udev doesn't provide all
the functionality of devfs, it does handle hot plugging. Also, the
use of udev isn't required to run Linux so some people don't use it.
But many distributions install it by default.
Devfs was a good idea and was claimed to be more efficient than udev.
But unfortunately, the author of devfs didn't maintain it for long and
it allegedly became not too well maintained. So for better or worse
we now have udev instead although the debate of devfs vs. udev still
continues. For a detailed description of devfs see: <url
url="http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.html"> Also see
the kernel documentation tree: filesystems/devfs.
The names of devices for the devfs can be used in udev, but usually
are not and may not be simple to activate. Here's the devfs names for
serial devices: ttyS1 becomes tts/1, ttyUSB1 becomes /usb/tts/1, and
ttyACM1 is /usb/acm/1. Note that the number 1 above is just an
example. It could be replaced by 0, 2, 3, 4, etc. Some more examples
of udev names: ttyS2 becomes tts/2 (Serial port), tty3 becomes vc/3
(Virtual Console), ptyp1 becomes pty/m1 (PTY master), ttyp2 becomes
pty/s2 (PTY slave). "tts" looks like a directory which contains
devices "files": 0, 1, 2, etc. All of these new names were put in the
/dev directory although optionally one may put them elsewhere.
For devfs, device names in the /dev directory are created automatically
by the corresponding driver. Thus, if serial support comes from a
module and that module isn't loaded yet, there will not be any serial
devices in the /dev directory. This can be confusing: you physically
have serial ports but don't see them in the /dev directory. However,
if a device name is requested (attempt to open it) by a communication
program and the serial module isn't loaded, the kernel is supposed to
try to find a driver for it and create a name for it in the /dev
directory.
This works OK if it finds a driver. But suppose there is no driver
found for it. For example, if you try to use "setserial" to configure
a port that the driver failed to detect, it claims there is no such
port. How does one create a devfs port in this case?
For multiport devices for example, /dev/ttyF9 becomes /dev/ttf/9, or
in a later version /dev/tts/F9. Substitute for F (or f) whatever
letter(s) your multiport board uses for this purpose. A multiport
driver is supposed to create a devfs name similar to the above and put
it into the /dev directory
<p> END OF Serial-HOWTO </article>