Next Previous Contents

4. General - Running

4.1 Which kernel do I need ?

Any kernel should do. The real time stuff may not exist in older kernels (1.2.13 and before), but just compile without it.

If you have new hardware, you may need a later kernel anyway.

Note that more and more drivers in newer kernels carry out their own PnP activity, so some ISA PnP cards may not even require isapnptools to configure, though isapnptools can still be useful for diagnosing things.

Version 2.4.x of the kernel will basically have the functionality of isapnptools built in.

4.2 I get "Permission denied" when trying to run the programs.

You must be root to run isapnp and pnpdump because the program requires direct access to the IO ports.

4.3 The program crashes with a "Segmentation fault"

If you compiled the program using gcc2.8.0 this is very likely due to a bug in the compiler's IO port handling.

Recompile using gcc2.7.2.

If you really must use gcc.2.8.x (like egcs) then you can try recompiling the KERNEL with the ioport.c from one of the later 2.1.xxx kernels, or 2.2.x kernels.

Another cause would appear to be using a binary from one linux distribution on another. In this case (and as I recommend everywhere), simply download the latest version and compile it yourself. It really isn't that difficult.

See also Making a static binary.

4.4 Where can I get example configuration files ?

The output of pnpdump should give you the examples you need for your hardware. If you run it with the -c (--config) flag, it should even show how to configure your hardware in the output. The output of pnpdump is supposed to be used as the input to isapnp after editing.

See also README.modules and INSTALL.

4.5 How can I find out how the card is configured ?

Use the -di options with pnpdump.

The output dumps all the configuration registers for each device, you will have to interpret the results against the PnP spec, but it's mostly obvious.

If you do this before running isapnp you can see the BIOS/power up defaults.

Note that unused registers generally return all zeros. Unused DMA slots should return 4, though some devices erroneously return 0 (which is a valid used DMA channel).

4.6 Isapnp fails with error "Error occurred executing request 'ISOLATE' on or around line 13 --- further action aborted"

This means no boards were found.

If you have just added a new card into an ISA bus slot, it may be conflicting with the readport address in your /etc/isapnp.conf file. You will need to check the resource assignments in your configuration file to make sure they don't clash with the new card.

Try re-running pnpdump to see if it comes up with a different readport address, then use the new readport address in you configuration file. If the new card is also PnP, you may also need to copy the configuration instructions across too.

Similarly, if you have changed your motherboard, it may have something clashing with your readport address.

See also Pnpdump reports "No boards found"

4.7 What is a good readport address to use ?

A popular READPORT address seems to be 0x273 or 0x277. You shouldn't need to explicitly specify one though as pnpdump can find one automatically.

4.8 Pnpdump doesn't find all the PnP boards in the system.

Are you sure the missing board is configured as PnP ? Many PnP boards come with a DOS utility which allows them to be configured as non PnP, or has jumpers which can be used instead of PnP.

See also Pnpdump reports "No boards found"

4.9 Pnpdump doesn't find a particular board in the system.

Are you sure the board is ISA PnP ? If the board is PCI, it won't be found, neither will it be found if it is not PnP, which could well be the case for older boards. Note that for some cards with similar names, one could be ISA PnP, and one not.

See also Pnpdump doesn't find all the PnP boards in the system.

See also Pnpdump reports "No boards found"

4.10 Pnpdump messes up with more than one PnP board.

There was a bug in pnpdump somewhere between isapnptools version 1.9 and 1.15 which resulted in incorrect handling of multiple boards (the logical device count for each board was not reset, so only the first board found was correct). I suggest you upgrade to the lastest version.

4.11 Pnpdump cannot see the boards after using the -r option.

Use the -i (--ignorecsum) flag to pnpdump. This flag was added in version 1.18 of isapnptools.

See also Pnpdump reports "No boards found"

4.12 Pnpdump reports "No boards found"

This means that you have no ISA PnP boards in your system. That's easy then, you don't need isapnptools...

If, in fact, you think you should have some ISA PnP boards, there are a few possibilities:

See also I've got a ..., which runs fine under Win95, how can I find out the port settings and Examining Win95 resource settings.

4.13 Pnpdump reports "Ident Byte x, (..) differs from resource data (..)"

and goes on .. "Assuming the card is broken".

What is supposed to happen, is that when reading the resource data, the first few bytes should be the same as the serial identifier (see section 4.5 of the PnP spec). (In the hardware they come from the same eeprom).

Some cards are broken, and don't reset the eeprom read pointer when reading after the sleep state, in this case (detected by the ident byte 0 differs from resource data), we assume the ident stuff has been skipped and we are into resource data proper.

4.14 Pnpdump reports "Unknown tag .., Resource data dump aborted"

This often comes after Pnpdump reports "Ident Byte x, (..) differs from resource data (..)".

This means that an invalid tag was encountered in the board's resource data. There is no mechanism for re-synchronising, so the resource data dump for that card has been aborted.

There's not much you can do about this. See also What does "End tag checksum 0xb8 (BAD)" mean (in the pnpdump output) ?.

4.15 What does "Don't know what to do with ... on or around line x" mean ?

If the word is a valid one, then it could just be that the braces are mismatched in your configuration file. The best solution is to strip out all the comments and examine what is left (the problem may then be obvious). You can do this easily:

cat isapnp.conf | grep -v '^#' | sed '/^$/d' | less

4.16 What does "Error occurred executing request 'LD 2' on or around line..." mean ?

This means that attempting to read back the logical device number failed. The specification is rather unclear on whether this is guaranteed to work, and in any event, it doesn't appear to work with some devices.

There are two solutions:

  1. Get isapnp version 1.10 or later which supports VERIFYLD.
  2. Use direct register access to select the logical device. So instead of configuring each logical device as normal:
    (CONFIGURE CTL009c/481377 (LD 0
    ... LD 0 settings
    (ACT Y))
    (LD 1
    ... LD 1 settings
    (ACT Y))
    (LD 2
    ... LD 2 settings
    (ACT Y))
    (LD 3
    ... LD 3 settings
    (ACT Y))
    )
    
    pretend they are all logical device 0, and then change the logical device by directly POKEing the logical device register (REGister 7).
    (CONFIGURE CTL009c/481377 (LD 0
    ... LD 0 settings
    (ACT Y)
    (REG 7 (POKE 1) (PEEK)) # Set logical device 1, but no check
    ... LD 1 settings
    (ACT Y)
    (REG 7 (POKE 2) (PEEK)) # Set logical device 2, but no check
    ... LD 2 settings
    (ACT Y)
    (REG 7 (POKE 3) (PEEK)) # Set logical device 3, but no check
    ... LD 3 settings
    (ACT Y)
    ))
    

4.17 What does "End tag checksum 0xb8 (BAD)" mean (in the pnpdump output) ?

It means that the resource data read from the board was corrupt, which in turn means that the resource data dump may be wrong. If you know what the card resources really are, you can still configure it with isapnp.

The resource data is often stored in EEPROM, and can be written to via the appropriate accesses. It can be corrupted by a faulty windows 95 driver, or driver crash for example.

See also NT,WIN95,... works ok now, will running isapnp screw it up ?.

4.18 What does "IO range check attempted while device activated" mean (from isapnp) ?

This means you have attempted to CHECK the device resource allocation for conflicts using the IO range feature, but the device has already been activated. Either remove the check, or put (ACT N) before the IO allocation.

Note that activated here means the board has been configured and is available for use, it does not mean it is in use. It may or may not have a driver installed in the kernel to use it, and there is no easy way to find out.

If you rerun isapnp, this is very likely to occur. You must first deactivate any drivers using the board. Then, when you rerun isapnp, make sure there is an (ACT N) at the beginning of the device configuration, configure and check the settings, then (ACT Y) and the end to reactivate it. You can then restart the drivers for the board.

4.19 What does "IO range check failed for n bytes of IO at addr" mean (from isapnp) ?

This means you have attempted to CHECK the device resource allocation for conflicts using the IO range feature, but the check failed. Either: the device doesn't support IO range checks (which you can find out from the pnpdump output), in which case remove the check; or the device SIZE is too large, in which case correct it; or the test has failed due to a resource conflict, in which case change the IO BASE address.

In versions of isapnp in isapnptools-1.18 and earlier, there was a bug which caused this to occur anyway. A patch to fix it was produced in June 1999. Later versions should work properly.

4.20 I think I've configured the board correctly, but the driver still can't find it.

The configuration file must end in WAITFORKEY.

pnpdump from isapnptools 1.9 neglected to put this at the end of the generated configuration script.

4.21 What does "/proc/bus/pci/devices not found, so PCI resource conflict not checked" mean ?

This message occurs if running kernels before the later 2.1.xxx series. /proc/bus/pci/devices appears in later kernels to allow the PCI device information to be read. If you have disabled the proc filesystem, or are running an older kernel, then the isapnptools programs cannot check resource allocations against those assigned to PCI devices.

This is unlikely to be a problem, because the resources are likely to be shown used in /proc/interrupts and /proc/ioports etc if a driver is using them. If this isn't good enough, and you still get a problem with resource clashes, just add the PCI resources used to the /etc/isapnp.gone file.

4.22 What causes lots of errors running the script generated by pnpdump -s ?

Running a shell script generated by pnpdump -s gives lots of errors like:

./pnp.sh: dev_ids[0]=CTL0043: command not found
./pnp.sh: irq[0]=9: command not found
./pnp.sh: irq_flags[0]=0x0a: command not found
./pnp.sh: dma[0]=0: command not found
./pnp.sh: dma_flags[0]=0x08: command not found
./pnp.sh: io_start[0]=0x0240: command not found
./pnp.sh: io_len[0]=16: command not found
./pnp.sh: io_flags[0]=0x01: command not found
./pnp.sh: ${dev_ids[$i]}: bad substitution

This is due to the shell not understanding array variables. You need a newer shell, such as bash 2.0.x.

4.23 Do I have to reboot after running isapnp or pnpdump ?

No. You won't normally need to reboot. Only if you do something silly like reset the PnP hardware while a driver is trying to use it.

The thing to do is to do all your experimenting with the programs and configuration files first. Only when you have the right settings, load the kernel drivers etc. If you want to experiment some more, unload the drivers first.


Next Previous Contents