Copyright (c) 1998-2001 by David S. Lawyer mailto:firstname.lastname@example.org
Please freely copy and distribute (sell or give away) this document in any format. Send any corrections and comments to the document maintainer. You may create a derivative work and distribute it provided that you:
If you're considering making a derived work other than a translation, it's requested that you discuss your plans with the current maintainer.
While I haven't intentionally tried to mislead you, there are likely a number of errors in this document. Please let me know about them. Since this is free documentation, it should be obvious that I cannot be held legally responsible for any errors.
Any brand names (starts with a capital letter) should be assumed to be a trademark). Such trademarks belong to their respective owners.
Please let me know of any errors in facts, opinions, logic, spelling, grammar, clarity, links, etc. But first, if the date is over a couple of months old, check to see that you have the latest version. Please send me any info that you think belongs in this document.
I haven't studied the code used by various Linux drivers to implement Plug-and-Play. Nor have I looked into the details of how the kernel deals with it. Thus this HOWTO is still incomplete. It needs to explain more about the PCI bus and about "hot swapping". It likely has some inaccuracies (let me know where I'm wrong). In this HOWTO I've sometimes used ?? to indicate that I don't really know the answer.
New versions of the Plug-and-Play-HOWTO should appear every few months or so and will be available to browse and/or download at LDP mirror sites. For a list of mirror sites see: http://linuxdoc.org/mirrors.html. Various formats are available. If you only want to quickly check the date of the latest version look at: http://linuxdoc.org/HOWTO/Plug-and-Play-HOWTO.html. The version you are now reading is: v1.06, September 2002 .
v1.06 September 2002: Revised about telling the BIOS if the OS is PnP v1.05 July 2002 typos: or => of, and => an, A Allocate => Allocate, programs => program; Dell PCs: "Plug and Play Configuration Error", clarity on telling BIOS if your OS is PnP, "Intro to PnP" had truncated sentence, routing IRQs on PCI clarified, Change of emphasis in entire doc: Linux is now a PnP OS (sort of), PCI has almost replaced ISA v1.04 March 2002 finding a device driver, PCI serial ports, v1.04 March 2002 finding a device driver, PCI serial ports, alias example in modules.conf, PnP needed for linmodems v1.03 August 2001: error messages, boot-prompt parameters
The version 1.0 (Nov. 2000) was long overdue and recognized that the kernel is doing more in helping device drivers set up PnP. Kernel 2.4 is significantly improved in this respect. There's still a lot of improvement needed in both this HOWTO and the way that Linux does PnP.
Plug-and-play (PnP) is a system which automatically detects devices such as disks, sound cards, ethernet cards, modems, etc. It also does some low-level configuring of them. To be detected by PnP, the device must be designed for PnP. Non-PnP devices (or PnP devices which have been correctly PnP-configured), can often be detected by non-PnP methods. The modern PCI bus is inherently PnP while the old ISA bus originally wasn't PnP but had PnP support added to it later. So often PnP is used to only mean PnP for the old ISA bus. In this HOWTO, PnP means PnP for both the ISA and the PCI bus.
As time goes by the Linux kernel is becoming better at supporting PnP. In the 20th century, one could say that Linux was not really a PnP OS. But it's becoming a PnP OS even thought it still doesn't have a fully centralized plug-and-play system. It does provide programs that device drivers can call on to do their own plug-and-play. The kernel also reads all configuration registers of all devices and maintains a table of them that device drivers can consult. Many drivers take advantage of this and find your PnP devices OK. The BIOS hardware of your PC likely may also do some plug-and-play work. Thus if everything works OK PnP-wise, you can use your computer without needing to know anything about plug-and-play. But if some devices which are supported by Linux don't work (because they're not discovered or configured correctly by PnP) then you may need to read some of this HOWTO. You'll learn not only about PnP but also learn about how communication takes place inside the computer.
If you're having problems with a device, watch the messages displayed at boot-time (go back thru them using Shift-PageUp). Check to see that you have the right driver for a device, and that the driver is being found and used. If the driver is a module, type "lsmod" (as the root user) to see it it's loaded (in use). If it's not a module then it should be built into the kernel. There should be a file somewhere that tells what drivers are built into the kernel: (such as: /boot/config-2.4-20 in Debian). Sometimes a device name (such as /dev/eth0) doesn't get a driver assigned to it unless the assignment is found in the file: /etc/modules.conf: For example, to assign the "tulip" driver to eth0 you add a line to this file: "alias eth0 tulip".
This HOWTO doesn't cover the problem of finding and installing device drivers. Perhaps it should. One problem is that a certain brand of a card (or other physical device) may not say what kind of chips are used in it. The driver name is often the same as the chip name and not the brand name. One way to start to check on a driver is to see if it is discussed in the kernel documentation, in another HOWTO, or on the Internet. Warning: Such documentation may be out of date.
In this document I mention so many things that can go wrong that one who believes in Murphy's Law (If something can go wrong it will) may become quite alarmed. But for PnP for most people: If something can go wrong it usually doesn't. Remember that sometimes problems which seem to be PnP related are actually due to defective hardware or to hardware that doesn't fully conform to PnP specs.