Isapnp, what is it and how to use it

Perhaps one of the problems of getting started with Linux is the fact that hardware that works perfectly in Windows does not seem to work at all in Linux. If you have missed the point made earlier about Win-hardware and installed Linux on a system with US Robotics Winmodem, well......sorry about that. Go get a real modem. But if you are positive that it should work, read on.

PnP is what's causing you problems, if you suddenly can not find that modem, which should have been on COM3. How to get around it? Well, we certainly can not turn the PnP off, so there was a program written called isapnp, which allows you to configure the PnP devices that are located in your computer's ISA slots. Typically devices like that would be modems and soundcards. NIC too, perhaps, but I havent had the experience with network setup in Linux yet. Anyway.

When you download the isapnp and install it, the process of configuring your hardware is not too tough. First of all, you need to know what settings you want your modem to use. More specifically, which IRQ to assign to it.

 To find out which IRQ to use do
cat /proc/interrupts
to see which IRQs are being used by your system. 
Note: Doing that will NOT show the IRQ assigned to a device which is currently not being used.

In your computer the modem will remain in the same COM port as it is in Windows. Only in Linux COM port is not COM port, it's called /dev/ttyS*

/dev/ttyS0 is COM 1
/dev/ttyS1 is COM 2
/dev/ttyS2 is COM 3
/dev/ttyS3 is COM 4

So. To the configuration part.

Do
pnpdump 0x300 > /etc/isapnp.conf
What this will do is scan a port 0x300 and put the results of the scan
into file /etc/isapnp.conf

This is what it looks like on my machine, with just one card to configure:

isapnp.conf
What that file contains is all the settings possible for the card
you want to  configure. So, suppose you want to put it on
IO base 3e8, with IRQ of 5. Then you go ahead and uncomment the 
following lines:
 (IO 0 (BASE 0x03e8))
 (INT 0 (IRQ 5 (MODE +E)))
Then uncomment the 
(ACT Y)
line in the end of file, and you should be set.
Now do
isapnp /etc/isapnp.conf
And if you did not do any mistakes, it will work.
This is what your final version of isapnp.conf may look like:
/etc/isapnp.conf

Note: I've erased all the lines I did not need.

One more note: Isapnp will be initialized at the boot time, and will attempt to configure cards using the information stored ONLY in /etc/isapnp.conf. So you need to have that file there in order for isapnp to work.

A bit about sound: I was not able to get my sound card to work, but if you have a pnp soundcard, what you should do is compile the kernel with Sound support in a module. Reason being that sound initialization occures before isapnp gets a chance to configure cards. So when at the boot your kernel tries to initializa sound, it will not find any soundcards, because they are being initialized later on.

Back to index