Hardware manual
When Linux starts, an effort is made to detect and configure (low-level) the serial ports. Exactly what happens
depends on your BIOS, hardware, Linux distribution, kernel version, etc. If the serial ports work OK, there
may be no need for you to do any more low-level configuring.
If you're having problems with the serial ports, then you may need to do low-level configuring. If you have
kernel 2.2 or lower, then you need to do it if you:
Plan to use more than 2 ISA serial ports•
Are installing a new serial port (such as an internal modem)•
One or more of your serial ports have non-standard IRQs or IO addresses•
Starting with kernel 2.2 you may be able to use more than 2 serial ports without doing any low-level
configuring by sharing interrupts. All PCI ports should support this but for ISA it only works for some
hardware. It may be just as easy to give each port a unique interrupt if they are available. See Interrupt sharing
and Kernels 2.2+
The low-level configuring (setting the IRQ and IO address) seems to cause people more trouble than the
high-level stuff, although for many it's fully automatic and there is no configuring to be done. Until the port is
enabled and the serial driver knows the correct IRQ and IO address, the port will not usually not work at all.
A port may be disabled, either by the BIOS or by failure of Linux to find and enable the port. For modern
ports (provided the BIOS hasn't disabled them) manual PnP tools such as lspci should be able to find them.
Applications, and utilities such as "setserial" and "scanport" (Debian only ??) only probe IO addresses, don't
use PnP tools, and thus can't detect disabled ports.
Even if an ISA port can be found by the probing done by the serial driver it may work extremely slow if the
IRQ is wrong. See Extremely Slow: Text appears on the screen slowly after long delays. PCI ports are less
likely to get the IRQ wrong.
IO address, IRQs, etc. are called "resources" and we are thus configuring certain resources. But there are
many other types of "resources" so the term has many other meanings. In summary, the low-level configuring
consists of enabling the device, giving it a name (ttyS2 for example) and putting two values (an IRQ number
and IO address) into two places:
The device driver (done by PnP or "setserial")1.
Configuration registers of the serial port hardware itself, done by PnP software (or jumpers on legacy
hardware).
2.
You may watch the start-up (= boot-time) messages. They are usually correct. But if you're having problems,
your serial port may not show up at all or if you do see a message from "setserial" it may not show the true
configuration of the hardware (and it is not necessarily supposed to). See I/O Address & IRQ: Boot-time
messages.
8.3 PCI Bus Support
Introduction
If you have kernel 2.4 or better, then there should be support for PnP for both the PCI and ISA buses (either
built-in or by modules). Some PCI serial ports can be automatically detected and low-level configured by the
serial driver. Others may not be.
Serial HOWTO
8.2 IO & IRQ Overview 28