Next Previous Contents

5. Multiport Serial Boards/Cards/Adapters

5.1 Intro to Multiport Serial

Multiport serial cards install in a slot in a PC on the ISA or PCI bus. Instead of being called "... cards" they are also called "... adapters" or "... boards". Each such card provides you with many serial ports. They were commonly used for connecting up many terminals/modems to serial ports but are now obsolete for use with modems. For modem communication today, many modem chips are mounted on a single card and connect up to phone lines that carry multiple calls (in digital format) on a single circuit. Such modems are called "digital modems" and the phone line interface is called a "... concentrator". Such systems are either stand-alone proprietary servers or are implemented in a PC by special cards (no longer called "multiport"). Digi calls one such card a "remote access server concentrator adapter". Brief mention of multiport modem cards may be found in Modem-HOWTO but concentrators are not covered.

Now back to the multiport serial cards. Each card has a number of external connecters (DB-25 or RJ45 (telephone-like)) so that one may connect up a number of devices (modems, terminals, etc.). Each such physical device would then be connected to its own serial port. Since the space on the external-facing part of the card is limited there is often not enough room for all the serial port connectors. To solve this problem, the connectors may be on the ends of cables which come out (externally) from the card (octopus cable). They may also be on little boxes which are connected by cable to the multiport card.

Dumb ones are not too much different than ordinary serial ports. They are interrupt driven and the CPU of the computer does most all the work servicing them. They usually have a system of sharing a single interrupt for all the ports. For this they usually require special drivers that you must put into the kernel or activate by modifying source code.

Smart boards may use ordinary UARTs but handle most interrupts from the UARTs internally within the board. This frees the CPU from the burden of handling all these interrupts. The board may save up bytes in its large internal FIFOs and transfer perhaps 1K bytes at a time to the serial buffer in main memory. It may use the full bus width of 32 bits for making data transfers to main memory (instead of transferring only 8-bit bytes like dumb serial cards do). Not all "smart" boards are equally efficient. Many boards today are Plug-and-Play.

For a smart board to work, a special driver for it must be used. Sometimes this driver is built into the kernel source code or supplied as a module. Even in such cases, you must still do something to activate it. This includes selecting it when you compile the kernel (or making sure that a pre-compiled kernel has done this). The "make config" or "make menuconf" commands may display an option for this. In some cases there is a special module to load or certain parameters to pass to the kernel (via lilo's append command). The board's manufacturer should have info on this on their website. Unfortunately, info for old boards is sometimes not there but might be found somewhere else on the Internet (including discussion groups).

5.2 Making "devices" in the /dev directory

The serial ports your multiport board uses depends on what kind of board you have. Some of these may be listed in detail in rc.serial or in 0setserial. These files may be included in a >setserial or serial package. I highly recommend getting the latest version of setserial if you are trying to use multiport boards. You will probably need to create these devices. Either use the mknod command, or the MAKEDEV script. Devices (in the /dev directory) for serial ports are made by adding ``64 + port number''. So, if you wanted to create devices for ttyS17, you would type:

linux# mknod -m 666 /dev/cua17 c 5 81
linux# mknod -m 666 /dev/ttyS17 c 4 81
Note that ``64 + 17 = 81''. Using the MAKEDEV script, you would type:
linux# cd /dev
linux# ./MAKEDEV ttyS17

Besides the listing of various brands of multiports found in this HOWTO there is Gary's Encyclopedia - Serial Cards. It's not as complete, but may have some different links.

5.3 Standard PC Serial Boards

Standard PC serial boards (COM1 - COM4) can be used to, to connect external serial devices (modems, serial mice, etc...). Since PC's no longer come with them (but have the chips for this purpose mounted on the motherboard), they are hard to find in retail stores. An internal modem for the ISA bus may include a built-in serial port.

Note: due to address conflicts, you may not be able to use COM4 and IBM8514 video board (or clones) simultaneously. See Avoiding IO Address Conflicts with Certain Video Boards

5.4 Dumb Multiport Serial Boards (with 8250/16450/16550A UART's)

They are also called "serial adapters".
* => The file that ran setserial in Debian shows some details of configuring # => See note below for this board

In general, Linux will support any serial board which uses a 8250, 16450, 16550, 16550A, 16650, etc. UART. See the latest man page for "setserial" for a more complete list.

Notes:

AST Fourport: You might need to specify skip_test in rc.serial.

BB-1004 and BB-1008 do not support DCD and RI lines, and thus are not usable for dialin modems. They will work fine for all other purposes.

Digi PC/8 Interrupt Status Register is at 0x140.

SIIG IO1812 manual for the listing for COM5-COM8 is wrong. They should be COM5=0x250, COM6=0x258, COM7=0x260, and COM8=0x268.

5.5 Intelligent Multiport Serial Boards

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 ones. This information varies depending on your hardware. If you have updated info which should be shown here please email it to me.

A review of Comtrol, Cyclades, Digi, and Stallion products was printed in the June 1995 issue of the Linux Journal. The article is available at http://www.ssc.com/lj/issue14.


Next Previous Contents