Next Previous Contents

4. Setting up a PnP BIOS

When the computer is first turned on, the BIOS runs before the operating system is loaded. Modern BIOSs are PnP and can configure some or all of the PnP devices. Old PCI BIOS will only configure for the PCI bus. Here are some of the choices which may exist in your BIOS's CMOS menu:

4.1 Do you have a PnP operating system?

In any case the PnP BIOS will PnP-configure the hard-drive, video card, and keyboard to make the system bootable. If you said you had a PnP OS it will leave it up to the operating system (or device drivers) to finish the configuration job. If you said no PnP OS then the BIOS should configure everything. If you only run Linux on your PC, you should probably tell it that you don't have a PnP operating system. If you also run MS Windows on your PC and said it was a PnP OS when you installed Windows, then you might try saying that you have a PnP OS to keep Windows 95/98 happy (but it might cause problems for Linux. For Windows 2000 it's claimed that Windows worked OK even if you say you don't have a PnP OS. In this case Windows 2000 will report finding new hardware (even though it already knew about the hardware but didn't know how the BIOS Pnp-configured it).

If you say you have a PnP OS then you rely on the Linux device drivers and possibly the program isapnp to take care of the bus-resource configuring. This often works OK but sometimes doesn't. Doing it this way has sometimes actually fixed problems. This could be because the BIOS didn't do it's job right but Linux did.

If you tell the BIOS you don't have a PnP OS, then the BIOS will do the configuring itself. Unless you have added new PnP devices, it should use the configuration which it has stored in its non-volatile memory (ESCD). See The BIOS's ESCD Database. If the last session on your computer was with Linux, then there should be no change in configuration. See BIOS Configures PnP. But if the last session was with Windows9x (which is PnP) then Windows could have modified the ESCD. It supposedly does this only if you "force" a configuration or install a legacy device. See Using Windows to set ESCD. Device drivers that do configuring may modify what the BIOS has done. So will the isapnp or PCI Utilities programs.

Interoperability with Windows

If you are running both Linux and Windows on the same PC, how do you answer the BIOS's question: Do you have a PnP OS? In the 1990's Windows suggested a yes answer and since Linux wasn't much of a PnP OS your could say no for Linux. Having different answers for Windows and Linux means that you would have to set up the BIOS's CMOS menu manually each time you want to switch OSs. This is a lot of bother, so it's best to have the same answer to the question for both Linux and Windows.

In the 21st century, Windows 2000 and XP both suggest that you say no, it's not a PnP OS. But Linux has become more PnP-like so you may want to say yes. The situation is now sort of reversed from what it was. If you have no idea what to say, you might as well just say no (it's not a PnP OS). Then if you have problems you might change the no to a yes. Both Windows 2000/XP and Linux have become more tolerant about this and in many cases everything will work fine regardless of how you answer. But if you want the BIOS to configure for Linux (and Windows), you would say no.

I have a PnP OS

If you say that you have a PnP OS, then Linux may work OK if all the drivers and isapnp (if you use it) are able to configure OK. Perhaps updating of the Linux OS and/or drivers will help. Windows 95 and 98 should work OK too. Windows 2000 and XP will probably work OK too, but they might not.

I don't have a PnP OS: Windows 2000 and XP

See the next section for Window 9x. If you have Windows 2000 or XP it should work out OK (even if you said it was a PnP-OS when you first installed Windows 2000). When you change to "not a PnP-OS", Windows 2000 (and XP ??) will automatically PnP-reconfigure it's devices and tell you that it's finding new hardware and installing new devices. What it really means is that it's finding hardware which is already configured by the BIOS whereas before it found hardware that wasn't configured by the BIOS. Perhaps it considers the hardware to be "new" since Windows 2000 may be finding it at a different address/irq than it has recorded in its registry.

I don't have a PnP OS: Windows 95/98:

Now you are fibbing to Windows9x. Since one might expect Windows be more sophisticated at handling PnP than Linux, one would expect Windows9x to be able to cope with with hardware that has been fully configured by the BIOS. But it can't (although Windows 2000/XP can).

What Windows9x seems to do when it finds hardware that is already configured by the BIOS is to just leave it alone and not reconfigure it. Now Windows9x keeps a record of the bus-resource configuration in its registry. If the BIOS configuration is different, it should either correct what's in its registry to conform to what the BIOS has set or reconfigure everything per what's in the registry. Bad news. It seems to do neither.

So it seems that Windows9x may just tell its device drivers what has been stored in the Windows Registry but this info may be wrong. The actual hardware configuration (done by the BIOS) is what was stored in the ESCD and may not be the same as the Registry. This means trouble. So for Windows to work OK you need to get the Registry to contain the bus-resource configuration which the BIOS creates from the ESCD.

One way to try to get the Registry and the ESCD the same is to install (or reinstall) Windows when the BIOS is set for "not a PnP OS". This should present Windows with hardware configured by the BIOS. If this configuration is without conflicts, Windows will hopefully leave it alone and save it in it's Registry. Then the ESCD and the registry are in sync.

Another method is to remove devices that are causing problems in Windows by clicking on "remove" in the Device Manager. Then reboot with "Not a PnP OS" (set it in the CMOS as you start to boot). Windows will then reinstall the devices, hopefully using the bus-resource settings configured by the BIOS. Be warned that Windows will likely ask you to insert the Window installation CD since it sometimes can't find the driver files (and the like) even though they are still there. A workaround for this is to select "skip file" and continue.

As a test I "removed" a NIC card which used a Novell compatible driver. Upon rebooting, Windows reinstalled it with Microsoft Networking instead of Novell. This meant that the Novell Client needed to be reinstalled --a lot of unnecessary work. So it may be better to not fib to Windows95/98 but instead to get Linux to configure bus-resources.

4.2 How are bus-resources to be controlled?

Unless you have old non-pnp ISA cards, just set this to "auto". If set to manual, you manually reserve some IRQ's, etc. for use on "legacy" (non-pnp) ISA cards. The BIOS may or may not otherwise know about such legacy cards. The BIOS will only know about these legacy cards if you ran ICU (or the like) under Windows to tell the BIOS about them. If the BIOS knows about them, then try using "auto". If it doesn't know about them, then manually reserve the IRQ's needed for the legacy ISA cards and let the rest be for the BIOS PnP to allocate.

4.3 Reset the configuration?

Don't try this unless... This will erase the BIOSs ESCD data-base of how your PnP devices should be configured as well as the list of how legacy (non-PnP) devices are configured. Never do this unless you are convinced that this data-base is wrong and needs to be remade. It was stated somewhere that you should do this only if you can't get your computer to boot. If the BIOS loses the data on legacy ISA devices, then you'll need to run ICA again under DOS/Windows to reestablish this data.


Next Previous Contents