Serial Port Slot
The PCI2S1P PCI Serial/Parallel Combo Card turns a PCI slot into two external 16C550 serial ports and one external EPP/ECP parallel port - an all-in-one solution that gives you both parallel and serial connections while taking up only one PCI slot.
NextPreviousContents- Modems used the serial port, but so did some printers and a variety of odd things like personal digital assistants (PDAs) and digital cameras. Most computers had at most two serial ports, and they were very slow in most cases. Devices that needed faster connections came with their own cards, which had to fit in a card slot inside the computer's.
- Data transfer rates of up to 115.2 Kbps for efficient serial device performance The PCI2S550 2 Port 16550 Serial Card can be installed in an available PCI slot to add two RS232 serial ports to your system. A cost-effective solution for connecting any new or legacy serial.
If you need to find a serial port it often helps if you know whatbus it's on. If the serial port is on a card, you may know what busthe card inserts into such as a PCI slot. But if the serial port isbuilt into the motherboard it may not be clear what bus it's on. Forold motherboards that have ISA bus slots, it's likely on the ISA busand may not even be Plug-and-Play. But even if all your slots arePCI, the serial port is likely to be on either an ISA bus or LPC bus(also called a 'LPC interface'). LPC is common on laptop computers.Type 'lspci' to see if it shows 'LPC'. Unfortunately, the LPC bus hasno standard Plug-and-Play method for low-level configuring devices onit. But according to the specs, the BIOS is supposed to do suchconfiguring (using ACPI ??). To see if you have a LPC bus, type'lspci' and look for a LPC bridge or the like.
For a serial port to work properly it first must be given both anIO address and an IRQ. For old hardware (of mid 1990s), jumpers on acard or a saved BIOS setting does it. For newer hardware the BIOSor Linux must set them at boot-time, and the new hardware doesn'tremember how it was set once it's powered down. Enabling the hardware(by using software) gives it both an IRQ and an IO address. Withoutan IO address, it can't be used. Without an IRQ it will need to useinefficient polling methods for which one must set the IRQ to 0 in theserial driver. Using digital signals sent to the hardware by the BIOSor Linux, it all should get configured automatically (provided theBIOS has not been previously set up to disable it). So you onlyneed to read this if you're having problems or if you want tounderstand how it works.
The driver must of course know both the IO address and IRQ so that itcan talk to the serial port chip. Modern serial port drivers (kernel2.4) try to determine this by PnP methods so one doesn't normally needto tell the driver (by using 'setserial'). A driver may also set anIO address or IRQ in the hardware. But unfortunately, there is somePCI serial port hardware that the driver doesn't recognize so youmight need to enable the port yourself. See PCI: Enabling a disabled port
Serial Port Slot Numbers
For the old ISA bus, the driver also probes likely serial portaddresses to see if there are any serial ports there. This works forthe case of jumpers and sometimes works for a ISA PnP port when thedriver doesn't do ISA PnP (prior to kernel 2.4).
Locating the serial port by giving it an IRQ and IO address islow-level configuring. It's often automatically done by the serialdriver but sometimes you have to do it yourself. What follows repeatswhat was said above but in more detail.
The low-level configuring consists of assigning an IO address, IRQ,and names (such as ttyS2) . This IO-IRQ pair must be set inboth the hardware and told to the serial driver. And the driver needsto 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 touse PnP methods to detect/set the IO/IRQ and then remember what itdid. An easy way for a driver to do this is for the driver to ask thekernel to enable the device and then the kernel tells the driver whatIO/IRQ it has used. The old way is using the 'setserial' program totell the driver. For jumpers, there is no PnP but the driver mightdetect the port if the jumpers are set to the usual IO/IRQ. If youneed to configure but don't understand certain details it's easy toget into trouble.
When Linux starts, an effort is made to detect and configure(low-level) the serial ports. Exactly what happens depends on yourBIOS, hardware, Linux distribution, kernel version, etc. If theserial ports work OK, there may be no need for you to do any morelow-level configuring.
If you're having problems with the serial ports, then you may need todo 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 IOaddresses
Starting with kernel 2.2 you may be able to use more than 2 serialports without doing any low-level configuring by sharing interrupts.All PCI ports should support this but for ISA it only works for somehardware. It may be just as easy to give each port a unique interruptif they are available. See Interrupt sharing and Kernels 2.2+
The low-level configuring (setting the IRQ and IO address) seems tocause people more trouble than the high-level stuff, although for manyit's fully automatic and there is no configuring to be done. Untilthe port is enabled and the serial driver knows the correct IRQ and IOaddress, the port will not usually not work at all.
A port may be disabled, either by the BIOS or by failure of Linux tofind and enable the port. For modern ports (provided the BIOS hasn'tdisabled them) manual PnP tools such as lspci should be able to findthem. Applications, and utilities such as 'setserial' and 'scanport'(Debian only ??) only probe IO addresses, don't use PnP tools, andthus can't detect disabled ports.
Even if an ISA port can be found by the probing done by the serialdriver 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 thusconfiguring certain resources. But there are many other types of'resources' so the term has many other meanings. In summary, thelow-level configuring consists of enabling the device, giving it aname (ttyS2 for example) and putting two values (an IRQ number and IOaddress) into two places:
- The device driver (done by PnP or '
setserial
') - Configuration registers of the serial port hardware itself,done by PnP software (or jumpers on legacy hardware).
You may watch the start-up (= boot-time) messages. They are usuallycorrect. But if you're having problems, your serial port may not showup at all or if you do see a message from 'setserial' it may notshow the true configuration of the hardware (and it is not necessarilysupposed to). See I/O Address & IRQ: Boot-time messages.
Introduction
If you have kernel 2.4 or better, then there should be support for PnPfor both the PCI and ISA buses (either built-in or by modules). SomePCI serial ports can be automatically detected and low-levelconfigured by the serial driver. Others may not be.
While kernel 2.2 supported PCI in general, it had no support for PCIserial ports (although some people got them working anyway). Startingwith kernel 2.4, the serial driver will read the id number digitallystored in the serial hardware to determine how to support it (if itknows how). It should assign an I/O address to it, determine itsIRQ, etc. So you don't need to use 'setserial' for it.
There is a possible problem if you don't use the device filesystem.The driver may assign the port to say tt/ttyS4 per a boot-timemessage (use 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 tocreate it, usingcd /dev; ./MAKEDEV ttyS4
More info on PCI
PCI ports are not well standardized. Some use main memory forcommunication with the PC. Some require special enabling of the IRQ.The output of 'lspci -vv' can help determine if one can be supported.If you see a 4-digit IO port, the port might work by just telling'setserial' the IO port and the IRQ. For example, if lspci shows IRQ 10, I/O at 0xecb8 and you decide toname it ttyS2 then the command is:
setserial /dev/ttyS2 irq 10 port 0xecb8 autoconfig
Note that the boot-time message 'Probing PCI hardware' means readingthe PnP configuration registers in the PCI devices which detects infoabout all PCI cards and on-board PCI devices. This is different thanthe probing of IO addresses by the serial driver which means readingcertain IO addresses to see if what's read looks like there's a serialport at that address.
Here are some common mistakes people make:
- setserial command: They run it (without the 'autoconfig' andauto_irq options) and think it has checked the hardware to see ifwhat it shows is correct (it hasn't).
- setserial messages: They see them displayed on the screen atboot-time (or by giving the setserial command) and erroneously thinkthat the result always shows how their hardware is actuallyconfigured.
- /proc/interrupts: When their serial device isn't in use theydon't see its interrupt there, and erroneously conclude that theirserial port can't be found (or doesn't have an interrupt set).
- /proc/ioports and /proc/tty/driver/serial: People think thisshows the actual hardware configuration when it only shows about thesame info (possibly erroneous) as setserial.
There are really two answers to the question 'What is my IO andIRQ?' 1. What the device driver thinks has been set (This is whatsetserial usually sets and shows.). 2. What is actually set in thehardware. Both 1. and 2. above should be the same. If they're not itspells trouble since the driver has incorrect info on the physicalserial port. In some cases the hardware is disabled so it has no IOaddress or IRQ.
If the driver has the wrong IO address it will try to send data to anon-existing serial port --or even worse, to some other device. If ithas the wrong IRQ the driver will not get interrupt service requestsfrom the serial port, resulting in a very slow or no response. SeeExtremely Slow: Text appears on the screen slowly after long delays. If it has the wrong model of UART thereis also apt to be trouble. To determine if both IO-IRQ pairs areidentical you must find out how they are set in both the driver andthe hardware.
Introduction
What the driver thinks is not necessarily how the hardware isactually set. If everything works OK then what the driver thinks islikely correct (set in the hardware) and you don't need to investigate(unless you're curious or want to become a guru). Ways to determinewhat the driver thinks include: boot-time messages I/O Address & IRQ: Boot-time messages, the/proc directory 'files' The /proc directory and setserial, and the 'setserial' command.
I/O Address & IRQ: Boot-time messages
In many cases your ports will automatically get low-levelconfigured at boot-time (but not always correctly). To see what ishappening, look at the start-up messages on the screen. Don't neglectto check the messages from the BIOS before Linux is loaded (noexamples shown here). These BIOS messages may be frozen by pressingthe Pause key (while holding down shift). It's often tricky to freezethem and you may need to hit Ctrl-Alt-Del while Linux is booting tostart rebooting and try again. What these messages display may changeas booting progresses and it's often tricky to freeze it at exactly theright words.
Use Shift-PageUp to scroll back to the messages after they haveflashed by. Shift-PageDown will scroll in the opposite direction.The dmesg
command (or looking at logs in /var/log) will show onlythe first of these two messages. Here's an example of the start-upmessages (as of 2004, almost the same as for 1999). Note that inolder versions ttyS1 was displayed in these messages as ttyS01, etc.
At first you see what was detected (but the irq is only a wild guess):
Note that ttyS0-ttyS2 were detected by probing the standard addresseswhile ttyS4 is a PCI port detected by probing the PCI configuration.Later setserial shows you what was saved in a configuration file(which you may edit), but it's not necessarily correct either:
Note that the configuration file only had ttyS1-2 in it so that ttyS0and ttyS4 were not affected by it. There is also a slightdiscrepancy: The first message shows ttyS2 at irq=4 while the secondshows it at irq=5. In most cases the second message is the correctone. But if you're having trouble, it may be misleading. Before readingthe explanation of all of this complexity in the rest of this section,you might just try using your serial port and see if it works OK. Ifso it may not be essential to read further.
The second message is from the setserial
program being run atboot-time from a script in the /etc directory tree. It shows what thedevice driver thinks is the correct configuration. But this too couldbe wrong. For example, the irq could actually be set to irq=8 in thehardware (both messages wrong). The irq=5 could be there because theconfiguration file is incorrect.
With old jumper-set serial ports Linux sometimes gets IRQs wrongbecause it doesn't by default probe for IRQs. It just assumes the'standard' ones (first message) or accepts what is in a configurationfile (second message). Neither of these is necessarily correct. Ifthe serial driver has the wrong IRQ, the serial port is very slow ordoesn't seem to work at all.
The first message is a result of Linux probing the ISA serial portaddresses but it doesn't probe for IRQs. If a port shows up here itexists but the IRQ may be wrong. Linux doesn't check IRQs becausedoing so is not foolproof. It just assumes the IRQs are as shownbecause they are the 'standard' values. You may check them manuallywith setserial
using the autoconfig
and auto_irq
options but this isn't guaranteed to be correct either.
The data shown by the BIOS messages (which you see at first beforeLinux is booted) are what is initially set in the hardware. If yourserial port is Plug-and-Play (PnP) then it's possible that 'isapnp' or'setpci' will run and change these settings. Look for messages aboutthis after Linux starts. The last serial port message shown in theexample above should agree with the BIOS messages (as possiblymodified by isapnp or setpci). If they don't agree then you eitherneed to change the setting in the port hardware or use setserial totell the driver what is actually set in the hardware.
Also, if you have Plug-and-Play (PnP) serial ports, they can only befound by PnP software unless the IRQ and IO has been set inside thehardware by Plug-and-Play software. Prior to kernel 2.4 this was acommon reason why the start-up messages did not show a serial portthat physically exists. A PnP BIOS may automatically low-levelconfigure them. PnP configuring will be explained later.
The /proc directory and setserial
Type 'setserial -g /dev/ttyS*'. There are some otherways to find this info by looking at 'files' in the /proc directory.Be warned that there is no guarantee that the same is set in thehardware.
/proc/ioports
will show the IO addresses that the drivers are using./proc/interrupts
shows the IRQs that are used by drivers ofcurrently running processes (that have devices open). It shows howmany interrupts have actually be issued./proc/tty/driver/serial
shows much of the above, plus thenumber of bytes that have been received and sent (even if the deviceis not now open).
Note that for the IO addresses and IRQ assignments, you are only seeingwhat the driver thinks and not necessarily what is actually set in thehardware. The data on the actual number of interrupts issued andbytes processed is real however. If you see a large number ofinterrupts and/or bytes then it probably means that the device is (orwas) working. But the interrupts might be from another device. Ifthere are no bytes received (rx:0) but bytes were transmitted (tx:3749for example), then only one direction of flow is working (or beingutilized).
Sometimes a showing of just a few interrupts doesn't mean that theinterrupt is actually being physically generated by any serial port.Thus if you see almost no interrupts for a port that you're trying touse, that interrupt might not be set in the hardware. 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 youview it.
Introduction
If it's PCI or ISA PnP then what's set in the hardware has been doneby PnP methods. Even if nothing has been set or the port disabled,PnP ports may still be found by using 'lspci -v' or 'isapnp--dumpregs'. Ports disabled by jumpers (or hardware failures) arecompletely lost. See ISA PnP ports,PCI: What IOs and IRQs have been set?,PCI: Enabling a disabled port
PnP ports don't store their configuration in the hardware when thepower is turned off. This is in contrast to Jumpers (non-PnP) whichremain the same with the power off. That's why a PnP port is morelikely to be found in a disabled state than an old non-PnP one.
PCI: What IOs and IRQs have been set?
For PCI, the BIOS almost always sets the IRQ and may set the IOaddress as well. To see how it's set use 'lspci -vv' (best) or lookin /proc/bus/pci (or for kernels <2.2 /proc/pci). The modem'sserial port is often called a 'Communication controller'. Look forthis. If lspci shows 'I/O ports at ... [disabled]' then the serialport is disabled and the hardware has no IO address so it's lost andcan't be used. See PCI: Enabling a disabled port for how to enable it.
If more than one IO address is shown, the first one is more likely tobe it. You can't change the IRQ (at least not with 'setpci') Thisis because if one writes an IRQ it it's hardware register no action istaken on it. It's the BIOS that should actually set up the IRQs andthen write the correct value to this register for lspci to view. Ifyou must, change the IO address with 'setpci' by changing theBASE_ADDRESS_0 or the like.
PCI: Enabling a disabled port
If the port communicates via an IO address then 'lspci -vv' shouldshow 'Control: I/O+ ...' with + meaning that the IO address isenabled. If it shows 'I/O-' (and 'I/O ports at ... [disabled]') thenyou may need to use the setpci command to enable it. For example'setpci -d 151f:000 command=101'. 151f is the vendor id, and 000 isthe device id both obtained from 'lspci -n -v' or from /proc/bus/pcior from 'scanpci -v'. The 'command=101' means that 101 is put intothe command register which is the same as the 'Control' registerdisplayed by 'lspci'. The 101h sets two bits: the 1 sets I/O to + andthe 100 part keeps SERR# set to +. In this case only the SERR# bitof the Control register was initially observed to be + when the lspcicommand was run. So we kept it enabled to + by setting bit 8 (wherebit 0 is I/O) to 1 by the first 1 in 101. Some serial cards don't useSERR# so if you see SERR#- then there's no need to enable it so thenuse: command=1. Then you'll need to set up 'setserial' to tell thedriver the IO and IRQ.
Bit 8 is actually the 9th bit since we started counting bits from 0.Don't be alarmed that lspci shows a lot of - signs showing that thecard doesn't have many features available (or enabled). Serial portsare relatively slow and don't need these features.
Another way to enable it is to let the BIOS do it by telling the BIOSthat you don't have a plug-and-play operating system. Then the BIOSshould enable it when you start your PC. If you have MS Windows9x onthe same PC then doing this might cause problems with Windows (seePlug-and-Play-HOWTO).
ISA PnP ports
For an ISA Plug-and-Play (PnP) port one may try the pnpdump
program (part of isapnptools
). If you use the --dumpregs optionthen it should tell you the actual IO address and IRQ set in the port.It should also find an ISA PnP port that is disabled. The address it'trys' is not the device's IO address, but a special address used forcommunicating with PnP cards.
Finding a port that is not disabled (ISA, PCI, PnP, non-PnP)
Perhaps the BIOS messages will tell you some info before Linuxstarts booting. Use the shift-PageUp key to step back thru theboot-time messages and look at the very first ones which are from theBIOS. This is how it was before Linux started. Setserial can'tchange it but isapnp or setpci can. Starting with kernel 2.4, theserial driver can make such changes for many (but not all) serialports.
Using 'scanport' (Debian only ??) will probe all I/O ports and willindicate what it thinks may be serial port. After this you could tryprobing with setserial using the 'autoconfig' option. You'll need toguess the addresses to probe at (using clues from 'scanport'). SeeWhat is Setserial.
For a port set with jumpers, the IO ports and IRQs are set per thejumpers. If the port is not Plug-and-Play (PnP) but has been setup byusing a DOS program, then it's set at whatever the person who ran thatprogram set it to.
Exploring via MS Windows (a last resort)
For PnP ports, checking on how it's configured under DOS/Windowsmay (or may not) imply how it's under Linux. MS Windows stores itsconfiguration info in its Registry which is not used by Linux so theyare not necessarily configured the same. If you let a PnP BIOSautomatically do the configuring when you start Linux (and have toldthe BIOS that you don't have a PnP operating system when startingLinux) then Linux should use whatever configuration is in the BIOS'snon-volatile memory. Windows also makes use of the same non-volatilememory but doesn't necessarily configure it that way.
If you have Plug-and-Play ports then either a PnP BIOS or aserial driver may configure all your devices for you so then you maynot need to choose any IRQs. PnP software determines what it thinksis best and assigns them (but it's not always best). But if youdirectly use isapnp (ISA bus) or jumpers then you have to choose. Ifyou already know what IRQ you want to use you could skip this sectionexcept that you may want to know that IRQ 0 has a special use (see thefollowing paragraph).
IRQ 0 is not an IRQ
While IRQ 0 is actually the timer (in hardware) it has a specialmeaning for setting a serial port with setserial. It tells the driverthat there is no interrupt for the port and the driver then will usepolling methods. Such polling puts more load on the CPU but can betried if there is an interrupt conflict or mis-set interrupt. Theadvantage of assigning IRQ 0 is that you don't need to know whatinterrupt is set in the hardware. It should be used only as atemporary expedient until you are able to find a real interrupt touse.
Interrupt sharing, Kernels 2.2+
Sharing of IRQs is where two devices use the same IRQ. As ageneral rule, this wasn't allowed for the ISA bus. The PCI bus mayshare IRQs but one can't share the same IRQ between the ISA and thePCI bus. Most multi-port boards may share IRQs. Sharing is not asefficient since every time a shared interrupt is given a check must bemade to determine where it came from. Thus if it's feasible, it'snicer to allocate every device its own interrupt.
Prior to kernel 2.2, serial IRQs could not be shared with each otherexcept for most multiport boards. Starting with kernel 2.2 serialIRQs may be sometimes shared between serial ports. In order forsharing to work in 2.2 the kernel must have been compiled withCONFIG_SERIAL_SHARE_IRQ, and the serial port hardware must supportsharing (so that if two serial cards put different voltages on thesame interrupt wire, only the voltage that means 'this is aninterrupt' will prevail). Since the PCI bus specs permit sharing, anyPCI card should allow sharing.
What IRQs to choose?
The serial hardware often has only a limited number of IRQs. Alsoyou don't want IRQ conflicts. So there may not be much of a choice.Your PC may normally come with ttyS0
and ttyS2
at IRQ 4, andttyS1
and ttyS3
at IRQ 3. Looking at/proc/interrupts
will show which IRQs are being used byprograms currently running. You likely don't want to use one ofthese. Before IRQ 5 was used for sound cards, it was often used for aserial port.
Here is how Greg (original author of Serial-HOWTO) set his up in/etc/rc.d/rc.serial. rc.serial is a file (shell script) which runs atstart-up (it may have a different name or location). For versions of'setserial' after 2.15 it's not always done this way anymore but thisexample does show the choice of IRQs.
Standard IRQ assignments:
There is really no Right Thing to do when choosing interrupts. Try tofind one that isn't being used by the motherboard, or any otherboards. 2, 3, 4, 5, 7, 10, 11, 12 or 15 are possible choices. Notethat IRQ 2 is the same as IRQ 9. You can call it either 2 or 9, theserial driver is very understanding. If you have a very old serialboard it may not be able to use IRQs 8 and above.
Make sure you don't use IRQs 1, 6, 8, 13 or 14! These are used byyour motherboard. You will make her very unhappy by taking her IRQs.When you are done you might want to double-check/proc/interrupts
when programs that use interrupts are beingrun and make sure there are no conflicts.
Here's a problem with some old serial cards. The IO address ofthe IBM 8514 video board (and others like it) is allegedly 0x?2e8where ? is 2, 4, 8, or 9. This may conflict with the IO address ofttyS3
at 0x02e8. Your may think that this shouldn't happen sincethe addresses are different in the high order digit (the leading 0 in02e8). You're right, but a poorly designed serial port may ignore thehigh order digit and respond to any address that ends in 2e8. That isbad news if you try to use ttyS3
(ISA bus) at this IO address.
For the ISA bus you should try to use the default addresses shownbelow. PCI cards use different addresses so as not to conflict withISA addresses. The addresses shown below represent the first addressof 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 IOaddresses) needs its own unique address range. There should be nooverlaps (conflicts). Here are the default addresses for commonlyused serial ports on the ISA bus:
Suppose there is an address conflict (as reported by setserial -g/dev/ttyS*
) between a real serial port and another port whichdoes not physically exist (and shows UART: unknown). Such a conflictshouldn't cause problems but it sometimes does in older kernels. Toavoid this problem don't permit such address conflicts or delete/dev/ttySx if it doesn't physically exist.
After it's set in the hardware don't forget to insure that it alsogets set in the driver by using setserial
. For non-PnP serialports they are either set in hardware by jumpers or by running a DOSprogram ('jumperless') to set them (it may disable PnP). The rest ofthis subsection is only for PnP serial ports. Here's a list of thepossible methods of configuring PnP serial ports:
- Using a PnP BIOS CMOS setup menu(usually only for externaldeviceson ttyS0 (Com1) and ttyS1 (Com2))
- Letting a PnP BIOS automatically configure a PnP serial portSee Using a PnP BIOS to IO-IRQ Configure
- Doing nothing if the serial driver recognized your card OK
- Using
isapnp
for a PnP serial port (non-PCI) - Using setpci (pciutils or pcitools) for the PCI bus
The IO address and IRQ must be set (by PnP) in their registers eachtime the system is powered on since PnP hardware doesn't remember howit was set when the power is shut off. A simple way to do this is tolet a PnP BIOS know that you don't have a PnP OS and the BIOS willautomatically do this each time you start. This might cause problemsin Windows (which is a PnP OS) if you start Windows with the BIOSthinking that Windows is not a PnP OS. See Plug-and-Play-HOWTO.
Plug-and-Play (PnP) was designed to automate this io-irq configuring,but for Linux it initially made life much more complicated. In modernLinux (2.4 kernels --partially in 2.2 kernels), each device driver hasto do its own PnP (using supplied software which it may utilize).There is unfortunately no centralized planning for assigning IOaddresses and IRQs as there is in MS Windows. But it usually worksout OK in Linux anyway.
Using a PnP BIOS to IO-IRQ Configure
Serial Port Switch
While the explanation of how to use setpci or isapnp for io-irqconfiguring should come with such software, this is not the case ifyou want to let a PnP BIOS do such configuring. Not all PnP BIOS cando this. The BIOS usually has a CMOS menu for setting up the firsttwo serial ports. This menu may be hard to find. For an 'Award'BIOS it was found under 'chipset features setup' There is oftenlittle to choose from. For ISA serial ports, the first two portsnormally get set at the standard IO addresses and IRQs. See More on Serial Port Names
Serial Port Stopbits
Whether you like it or not, when you start up a PC, a PnP BIOS startsto do PnP (io-irq) configuring of hardware devices. It may do the jobpartially and turn the rest over to a PnP OS (which Linux is in somesense) or if thinks you don't have a PnP OS it may fully configure allthe PnP devices but not configure the device drivers.
If you tell the BIOS that you don't have a PnP OS, then the PnP BIOSshould do the configuring of all PnP serial ports --not just the firsttwo. An indirect way to control what the BIOS does (if you haveWindows 9x on the same PC) is to 'force' a configuration underWindows. See Plug-and-Play-HOWTO and search for 'forced'. It'seasier to use the CMOS BIOS menu which may override what you'forced' under Windows. There could be a BIOS option that can set ordisable this 'override' capability.
If you add a new PnP device, the BIOS should PnP configure it. Itcould even change the io-irq of existing devices if required to avoidany conflicts. For this purpose, it keeps a list of non-PnP devicesprovided that you have told the BIOS how these non-PnP devices areio-irq configured. One way to tell the BIOS this is by running aprogram called ICU under DOS/Windows.
But how do you find out what the BIOS has done so that you set up thedevice drivers with this info? The BIOS itself may provide some info,either in its setup menus of via messages on the screen when you turnon your computer. See What is set in my serial port hardware?. Other ways of finding out is to use lspci forthe PCI bus or isapnp --dumpregs for the ISA bus. The cryptic resultsit shows you may not be clear to a novice.
Once you've set the IRQ and IO address in the hardware (or arrangedfor it to be done by PnP) you also need to insure that the 'setserial'command is run each time you start Linux. See the subsection Boot-time Configuration
NextPreviousContents