From: Mike Andrew <firstname.lastname@example.org>
TESTED ON: Redhat 5.2, 6.0 and 6.1. Caldera 2.2 and 2.3 using 2.2.x kernels (2.0x for RH5.2)
There seems to be general confusion on ISA PNP. Here's some scribblings regarding common ISA cards (sblaster, AHA scsi and ethernet). If you're comfortable with the idea behind isapnp, skip to the bottom of this document for a five step install.
Because linux is not PNP aware, the temptation is to cripple this feature and pray. Follow this guide for a relatively painless install. The bottom line is, that by using the right tools you can confidently set up ISA PNP cards to work each time, everytime. Note especially, that PNP configuration needs to be done at boot time, every time, and that until this occurs, attempting to "modprobe sb io=0x220" etc. is likely to be very frustrating. Use this document to install PNP configurations, it has *nothing* to do with installing a soundblaster per se, it is the preliminary steps you *must* do before even attempting to work thru the standard HOWTO documents for the specific device. In essence, you are wasting your time, if you skip this basic step.
DOES THIS DOCUMENT AFFECT ME?
Type the following from a command prompt
If you get a lot of garbage ending with the line "no devices found", you do not have ISA PNP and can breathe a sigh of relief, this document does not apply to you (except for BIOS IRQ interrupts)
There are three types of card-slot you can add to a modern
|AGP||Single 'brown slot' for VGA . Nothing to do with ISA PNP|
|PCI||Generally four 'white slots' for newer cards, Nothing to do with ISA PNP|
|ISA||Generally two 'black slots' for 'legacy cards'|
Legacy cards come plain vanilla, or, as plug and play devices (most internal modems), or as cards that can have their PNP features disabled by jumper, on the card, and become plain vanilla.
This scribbling refers to black slotted, plug and play enabled isa cards. If you've purchased a card after 1997, you can be fairly certain it has PNP features.
PNP is a co-operative effort between the BIOS and the operating system. The ultimate goal is to share resources without collisions. Resources include IRQ, DMA and IO addresses.
Windoze is PNP aware, Linux is not. (yet)
1) The CMOS, and what you should know and do,
In the CMOS, when you enable "PNP OS aware" this tells the bios to *disable* the cards and let the operating system dynamically configure and enable them.
Windoze does this, and, Linux can do this simply by supplying the correct configuration file called /etc/isapnp.conf (more on this file later)
If you disable the PNP OS flag, then the bios will configure the cards to suit itself and ENABLE them This it does by restoring values from it's cmos, or randomly if cmos is cleared, or, (in a dual boot system), as windoze preferred it.. You are asking for nightmares by assuming the last configuration was the way Linux likes it.
If enabled as a non-PNP os environment, the resources (particularly interrupts) *may* collide with other PCI style cards. Remember, all this is happening before the hard disk is booted, let alone an OS up and running.
What I am saying here is that the temptation is to set non-PNP os for Linux installs. Don't!, because you will get collisions. (the fact some of you have 'no problems' is your temporary good fortune, so don't flame me how clever you are).
You must prevent collisions in the CMOS, by telling the BIOS that specific interrupts cannot be used for pci/pnp, just isa. IF you have ISA anything then you must change the cmos setting for that ISA IRQ. You need to do this whether you are PNP OS aware or not. You can cripple PNP altogether and force the card itself to non-PNP, but, you *must* change this CMOS setting irregardless., irrespective, and no matter what.
Which IRQ do you change? The short answer is yes.
2) What settings to use.
Kerneld (or kmod) and finally modprobe are the first and final arbiters of what settings must be used in a Linux system. These programs have nothing to do with ISA PNP. Before you get to modprobe, you must configure the card. You do this by editng isapnp.conf (more later).
In a dual boot system, you can use windows device manager to get the *actual* numbers used. Many people prefer to match their windows, and their linux, settings. This is not necessary, windows will configure the way it wants, linux can do the same. But it is nice to remember one set of numbers <grin>
The bottom line to all this, is you must create a file called isapnp.conf. To do so, you type in
this is the first, and only time, you need to do this (until you add/remove/change your hardware). As a sidenote, installing a linux system does NOT include configuring isapnp cards. The Redhat or Caldera distribution hasn't a clue what your specific (ISA) hardware might be. This is the source of great frustration. You installed Linux, no errors. And sound doesn't work! You have to tell Linux where all this is.
What this program (pnpdump) does, is sample all ISA PNP cards on your machine and produce an output that is DISABLED, but configured, for your system. You then need to edit this file and select paramaters (such as IRQ, IO and DMA) according to how you like them). A good move here, to start, is simply configure settings the same way as windoze. It is initially disabled because pnpdump has defined all possible resources, not just one.
Once the file is configured (and it isn't hard to do) you can type in
"isapnp /etc/isapnp.conf" (see addenda at bottom)
this can be run at any time and simply asserts the resources you specified in the file. Importantly (unknown to you) isapnp is pre-configured to run at boot time (during init.d) without you doing one thing further.
You are now ready to continue, and use modprobe the way you always have as in
"modprobe sb io=0x220 irq=9 dma=1 dma16=5" (see addenda at bottom)
The syntax values above (eg a soundblaster at IO 220) MUST match the values you edited in isapnp.conf. It is a personal choice to reflect modprobe against ISA PNP, or vice versa, bottom line, they must match.
Briefly, here are the steps you need to do to get to the "modprobe'' stage. (modprobe is documented in the relevant HOWTO doc for the given card under the hammer)
1) CMOS: configure for "PNP OS aware"
2) CMOS: reserve the IRQ for a ISA PNP (or just plain ISA) card NOT PCI PNP
3) Run "pnpdump >/etc/isapnp.conf"
4) Edit the resulting file and select IRQ and IO according to the list of possibilities (it's your decision to choose one of all the possibilities).
5) Reboot, or simply type in "isapnp /etc/isapnp.conf"
6) Test the result by typing "modprobe <device> io=0x??? irq=??"
Step 6 is beyond the scope of this document. It is pointed out as an illustration of matching the resources declared as used in isapnp.conf and the ?? values you must, ultimately, specify.
Many users have reported that they use
"pnpdump -c >/etc/isanpnp.conf"
The -c option will select a suitable configuration for you so that you can avoid the need to edit the ispnp.conf file. The only drawback is that you MUST then use the resources that it has selected. This means, that rather than configuring isapnp to match modprobe, you must match modprobe against isapnp. For those of you on dual boot systems, it cannot be assumed that windows and linux will have the same resources, using this option.
The use of modprobe is a diagnostic tool only. In a Caldera system (OLX 2.2 and 2.3) and Redhat 6.x the functionality of modprobe is installed in COAS->KERNEL->LOAD->Modules. You use modprobe only to verify that you installation is correct. Once satisfied, copy the paramaters used for modprobe into the COAS.