  FAQ for isapnptools
  $Author: fox $
  $Date: 1998/05/25 20:48:52 $

  Answers to Frequently Asked Questions about isapnptools.
  ______________________________________________________________________

  Table of Contents

  1. General

     1.1 Where can I get the latest FAQ ?
     1.2 What is a driver (module) ?
     1.3 What is a logical device ?
     1.4 NT,WIN95,...  works ok now, will running isapnp screw it up ?
     1.5 I get lots of link errors
     1.6 Isapnp fails with error "Error occurred executing request 'ISOLATE' on or around line 13 --- further action aborted"
     1.7 Pnpdump reports "No boards found"
     1.8 I've configured my ... using isapnptools, but the kernel doesn't recognise it.
     1.9 I've got the binary distribution and the binaries won't run.
        1.9.1 Linux
        1.9.2 DOS
     1.10 I get "Permission denied" when trying to run the programs.
     1.11 The program crashes with a "Segmentation fault"
     1.12 Problems compiling for 2.1.x kernels
     1.13 What does "Error occurred executing request 'LD 2' on or around line..." mean ?
     1.14 I think I've configured the board correctly, but the driver still can't find it.
     1.15 Isn't there a better way to configure PnP cards ?
     1.16 I'm having trouble getting interrupts to work.
     1.17 The driver for my card cannot be built as a module.
     1.18 Where can I find out more ?
     1.19 Can isapnptools be used with operating systems other than Linux.

  2. Resources

     2.1 Determining resource usage (linux).
     2.2 I've got a ..., which runs fine under Win95, how can I find out the port settings ?
     2.3 Examining Win95 resource settings.
     2.4 The windows CTPNP.CFG file.
     2.5 Common problems

  3. Advanced usage.

     3.1 Common configurations on multiple machines, Version 1.11 and earlier.
     3.2 Common configurations on multiple machines, Version 1.12 and later.
     3.3 Sending a RESET CSN command.

  4. Soundcards.

     4.1 I've got an AWE32/AWE64, but Linux doesn't recognise it.
        4.1.1 The output from pnpdump (before configuration).
        4.1.2 The editted configuration file for isapnp.
        4.1.3 An extract of the bootup script to configure sound.
     4.2 Problems with the Aztech Sound Galaxy 16 III-3D PnP sound card.
     4.3 CD sound doesn't work (one channel or no channels).

  5. Modems.

     5.1 General.
     5.2 I've got a WinModem, and I've followed all the instructions, but it still doesn't work.
     5.3 I've configured the device, but it is really SLOW.
     5.4 What's this about not using /dev/cua1 ?

  6. Network cards.

  7. IDE ports.

  ______________________________________________________________________

  11..  GGeenneerraall

  11..11..  WWhheerree ccaann II ggeett tthhee llaatteesstt FFAAQQ ??

  The latest FAQ is available from the isapnptools home website as a
  text file <http://www.roestock.demon.co.uk/isapnptools/isapnpfaq.txt>,
  a set of html files
  <http://www.roestock.demon.co.uk/isapnptools/isapnpfaq.html.tar.gz>,
  or in the sgml source
  <http://www.roestock.demon.co.uk/isapnptools/isapnpfaq.sgml>.

  11..22..  WWhhaatt iiss aa ddrriivveerr ((mmoodduullee)) ??

  If you don't know what this is, I suggest you start by reading the
  Kernel-HOWTO available from Sunsite
  <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/Kernel-HOWTO> or from
  TSX-11 <ftp://tsx-11.mit.edu/pub/linux/docs/HOWTO/Kernel-HOWTO>, or
  from their respective mirrors.

  11..33..  WWhhaatt iiss aa llooggiiccaall ddeevviiccee ??

  The functionality of a card is split into many different logical
  devices for convenience. The idea is that each logical device is
  independent and has it's own driver.

  This way, the user can decide to use as much or as little of the card
  functionality as required, and also allows common drivers for many
  different boards (the drivers being written for each logical device
  function).

  So for example a soundcard will typically have at least four different
  logical devices:

  1. The basic soundcard

  2. Soundcard extensions such as wave table

  3. A game port

  4. A CD-rom port.

  The logical devices are numbered starting from 0, incrementing by 1.
  The first entry in the resource data applies to logical device 0, the
  next to logical device 1, and so on.

  Each logical device has its own set of resources ( IO
  <isapnp.conf.5.html#IO> addresses, INT
  <isapnp.conf.5.html#INT>errupts, DMA <isapnp.conf.5.html#DMA> channels
  etc) to program, and isapnp <isapnp.8.html> uses the LD
  <isapnp.conf.5.html#LD> command to select the logical device to be
  configured.

  11..44..  NNTT,,WWIINN9955,,......  wwoorrkkss ookk nnooww,, wwiillll rruunnnniinngg iissaappnnpp ssccrreeww iitt uupp ??

  No. isapnp <isapnp.8.html> only configures the cards for Linux. When
  you reboot, the BIOS will restore the card's settings.

  11..55..  II ggeett lloottss ooff lliinnkk eerrrroorrss

  Linking gives loads of errors such as

       pnpdump.o: In function `dumpdata':
       pnpdump.o(.text+0x11b0): undefined reference to `__outbc'
       pnpdump.o(.text+0x11c4): undefined reference to `__outb'
       pnpdump.o(.text+0x11db): undefined reference to `__outbc'
       pnpdump.o(.text+0x11ef): undefined reference to `__outb'
       pnpdump.o(.text+0x1374): undefined reference to `__outbc'
       pnpdump.o(.text+0x1388): undefined reference to `__outb'

  Chances are the -O2 compiler option is missing.

  11..66..  IIssaappnnpp ffaaiillss wwiitthh eerrrroorr ""EErrrroorr ooccccuurrrreedd eexxeeccuuttiinngg rreeqquueesstt ''IISSOO--
  LLAATTEE'' oonn oorr aarroouunndd lliinnee 1133 ------ ffuurrtthheerr aaccttiioonn aabboorrtteedd""

  This means no boards were found. Most of the comments in the next
  section apply.

  11..77..  PPnnppdduummpp rreeppoorrttss ""NNoo bbooaarrddss ffoouunndd""

  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:

  +o  The board is broken --- unlikely.

  +o  There is a conflict in the system resulting in no suitable READPORT
     <isapnp.conf.5.html#READPORT> address being available --- unlikely.

  +o  You specified two arguments to pnpdump <pnpdump.8.html>, and the
     READPORT <isapnp.conf.5.html#READPORT> address didn't match the
     value used by the earlier PnP isolator.

     If you did this, and you used two arguments to prevent pnpdump
     <pnpdump.8.html> from resetting some device's configuration,
     upgrade to Version 1.13 of isapnptools, which will do it's own
     isolation without resetting any device's configuration, even with
     less than two arguments.

     Alternatively, if you are running the DOS version under windows 95,
     see the  <README.DOS> file in the distribution.

     If you don't care if the boards configuration is reset, just run
     pnpdump <pnpdump.8.html> with fewer arguments.

  +o  The board's PnP capability is configurable. This feature is
     provided by some boards to support legacy systems. It allows a
     board to be set to fixed address/interrupt settings, or it can be
     set to PnP mode allowing standard software reconfiguration.
     If the board has been configured to a fixed setting, pnpdump
     <pnpdump.8.html> won't find it. The thing to do is to find the (DOS
     based probably) configuration software and run it to check the
     board settings.

     If the board is this type, there are two courses of action:

     1. Use the configuration software to set the board to a suitable
        set of addresses and interrupts. This will allow the use of
        built-in kernel drivers as the board will be present at power
        up.

     2. Use the configuration software to set the board to PnP mode,
        then use isapnptools to configure the board after the kernel is
        running.

  +o  Bug in pnpdump <pnpdump.8.html> or isapnp <isapnp.8.html> --- there
     is a suspicion that such a beast may exist. The problem being
     insufficient resetting of the card before trying each address, so
     having failed on the first address, the card never realises another
     isolation sequence is starting. As a work-around, try setting the
     address manually, or change the value of MIN_READ_ADDR in pnp.h.
     The resetting has been improved in isapnptools-1.12 on, so this is
     less likely now.

  +o  The board disappears after being configured (by the BIOS). Try the
     --reset option to pnpdump <pnpdump.8.html>.

  +o  You have a new computer, like my recent motherboard upgrade, and
     the BIOS lists the card during bootup, but isapnp <isapnp.8.html>
     can't see it.

     I've got this too, and haven't been able to find out why yet. Any
     help gratefully received !

  11..88..  II''vvee ccoonnffiigguurreedd mmyy ...... uussiinngg iissaappnnppttoooollss,, bbuutt tthhee kkeerrnneell ddooeessnn''tt
  rreeccooggnniissee iitt..

  There are lots of possibilities for this, just remember:

  1. isapnp <isapnp.8.html> must be run before the driver initialises,
     unless a separate program is available to initialise drivers later
     (eg. _s_e_t_s_e_r_i_a_l).  (See the  <README.modules> file provided with the
     distribution).

  2. The settings for the board specified to isapnp <isapnp.8.html> must
     match those of the driver for the board.

  3. You must load a driver for the card. It is not sufficient to have
     an entry in dev/.

  11..99..  II''vvee ggoott tthhee bbiinnaarryy ddiissttrriibbuuttiioonn aanndd tthhee bbiinnaarriieess wwoonn''tt rruunn..

  11..99..11..  LLiinnuuxx

  If you get messages such as:

  bash: ./sbin/pnpdump: No such file or directory

  or

       bash: ./isapnp: No such file or directory.

  when attempting to run the precompiled binaries, then chances are you
  haven't got the required C libraries.

  To check this, change to the sbin directory and type

       ldd pnpdump
       ldd isapnp

  You should get something like

               libc.so.5 => /lib/libc.so.5.3.12

  for each one. If you get "not found" then you will have to recompile.

  The best thing to do is to delete the binaries in the distribution and
  try to compile your own anyway.

  11..99..22..  DDOOSS

  If you get a complaint along the lines of cannot find DPMI, then you
  need to get hold of a DPMI host software. See the djgpp FAQ
  <http:://www.delorie.com/djgpp/v2faq/index.html> for details (follow
  the path through Running --- Distributing).  This is most likely to
  occur on a pure DOS machine. Win95 for example includes a DPMI host.

  The free DPMI server (cwsdpmi) is normally part of the djgpp
  distribution. For example, my ISP mirrors it in the
  <ftp://ftp.demon.co.uk/pub/mirrors/coast/vendors/djgpp/v2misc/> and
  <ftp://ftp.demon.co.uk/pub/mirrors/simtelnet/gnu/djgpp/v2misc/>
  directories.

  11..1100..  YYoouu mmuusstt bbee rroooott ttoo rruunniissaappnnpp <<isapnp.8.html> andpnpdump
  <pnpdump.8.html> because the program requires direct access to the IO
  ports.  I get "Permission denied" when trying to run the programs.

  11..1111..  TThhee pprrooggrraamm ccrraasshheess wwiitthh aa ""SSeeggmmeennttaattiioonn ffaauulltt""

  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.

  11..1122..  PPrroobblleemmss ccoommppiilliinngg ffoorr 22..11..xx kkeerrnneellss

  The latest kernels (2.1.7x ish) have problems with the header files.
  If you are playing with these kernels, you really ought to know how to
  fix this yourself. I've been told that adding a -D__KERNEL__ to the
  Makefile fixes it.

  11..1133..  WWhhaatt ddooeess ""EErrrroorr ooccccuurrrreedd eexxeeccuuttiinngg rreeqquueesstt ''LLDD 22'' oonn oorr aarroouunndd
  lliinnee......"" mmeeaann ??

  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 <isapnp.8.html> version 1.10 or later which supports
     VERIFYLD <isapnp.conf.5.html#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 <isapnp.conf.5.html#POKE> 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)
  ))

  11..1144..  II tthhiinnkk II''vvee ccoonnffiigguurreedd tthhee bbooaarrdd ccoorrrreeccttllyy,, bbuutt tthhee ddrriivveerr
  ssttiillll ccaann''tt ffiinndd iitt..

  The configuration file must end in WAITFORKEY
  <isapnp.conf.5.html#WAITFORKEY>.

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

  11..1155..  IIssnn''tt tthheerree aa bbeetttteerr wwaayy ttoo ccoonnffiigguurree PPnnPP ccaarrddss ??

  Well, I quite like isapnptools as it is predictable, and doesn't make
  the kernel any bigger. However, you may want to check out a
  configuration manager for linux which now supports 2.0.30: CM for
  linux <http://lucifer.hemmet.s-hem.chalmers.se/~dwh>.

  You also might want to look at Tom Lees' kernel PnP suite at
  <http://www-jcr.lmh.ox.ac.uk/~pnp/>, the files are in
  <ftp.lmh.ox.ac.uk:/pub/linux/pnp/>.

  11..1166..  II''mm hhaavviinngg ttrroouubbllee ggeettttiinngg iinntteerrrruuppttss ttoo wwoorrkk..

  A bug has been discovered in isapnp for Version 1.11 of isapnptools,
  relating to the setting of interrupt edges. This is unlikely to be a
  problem for most hardware because the hardware doesn't allow anything
  other that +ve edge interrupts, however, as Kevin Bowman has pointed
  out, some hardware, such as that using the Fujitsu MB86701 does allow
  the interrupt line to be programmed. In this case, try upgrading to
  Version 1.13 or later.

  11..1177..  TThhee ddrriivveerr ffoorr mmyy ccaarrdd ccaannnnoott bbee bbuuiilltt aass aa mmoodduullee..

  If the driver you want to use can only be built into the kernel, then
  you may want to consider using the DOS version of isapnptools, then
  booting Linux via loadlin. See  <README.DOS> in the distribution for
  details.

  11..1188..  WWhheerree ccaann II ffiinndd oouutt mmoorree ??

  A good place to find out more about PC hardware in general is the pc-
  hardware-faq, regularly posted to the newsgroups:
  comp.sys.ibm.pc.hardware.video, comp.sys.ibm.pc.hardware.comm,
  comp.sys.ibm.pc.hardware.storage, comp.sys.ibm.pc.hardware.cd-rom,
  comp.sys.ibm.pc.hardware.systems, comp.sys.ibm.pc.hardware.networking,
  comp.sys.ibm.pc.hardware.chips, comp.sys.ibm.pc.hardware.misc,
  comp.answers, news.answers.

  A good place to find out about Linux configuration etc are the HOWTOs
  and mini-HOWTOS. These can be found on Sunsite
  <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/> or from TSX-11
  <ftp://tsx-11.mit.edu/pub/linux/docs/HOWTO/>,

  11..1199..  CCaann iissaappnnppttoooollss bbee uusseedd wwiitthh ooppeerraattiinngg ssyysstteemmss ootthheerr tthhaann
  LLiinnuuxx..

  No, or at least not easily. Issues that require addressing include

  1. Isapnptools needs to be able to get direct IO access privileges.

  2. Some mechanism is needed to start up the device driver after isapnp
     <isapnp.8.html> has run.

  22..  RReessoouurrcceess

  It is very important that the resource settings you specify in the
  isapnp.conf file avoid conflict with any other devices, Plug and Play
  or otherwise. If you fail to do this, the system may fail to work
  properly, crash, or lock up.

  22..11..  DDeetteerrmmiinniinngg rreessoouurrccee uussaaggee ((lliinnuuxx))..

  The easiest way to avoid conflict is to make a list of all the devices
  in your system and the resources they use.

  To help in this task, try booting the system with no PnP devices
  configured, then examine the resources the kernel is using via the
  proc filesystem (which must be mounted, obviously).

  You can also follow these instructions after configuring the PnP
  hardware and loading the appropriate driver modules to check that the
  drivers have been configured properly.

  To check the proc file system is mounted, type mount at the shell
  prompt, and somewhere in the response should be a line similar to the
  one in the example below:

       $ mount
       ...
       /proc on /proc type proc (rw)
       ...
       $

  From now on, I shall assume you have the proc filesystem is mounted on
  proc/. In addition, if you use driver modules you should ensure that
  they are all loaded so that they grab the resources they require. You
  may want to print the results obtained below:

  To see what IIOO aaddddrreesssseess are used, type "catproc/ioports/". This will
  provide a list of IO ports and the drivers that use them.

  To see what iinntteerrrruuppttss are used, type "catproc/interrupts/". This must
  be done with all your devices in use, (for example, mount a floppy
  disk so that the floppy disk interrupt is in use, and open all the
  serial ports, for example using the command "(cat < dev/ttyS1) &/").

  To see what DDMMAA cchhaannnneellss are used, type "catproc/dma/".

  Another useful command to try is

       dmesg | grep -i irq

  which will trawl through the kernel bootup messages for lines
  containing irq.  This finds resources used by kernel drivers.

  These commands will give a good idea of which resources are in use,
  but they may miss something if the device doesn't have a driver for
  example, or the BIOS has allocated the resources for some other
  purpose. So it is a good idea to check the BIOS settings when
  rebooting - particularly look for interrupt lines allocated to PCI
  devices, you may want to deallocate some of these if your PnP card
  needs a interrupt.

  For further information on standard motherboard resource settings and
  interrupt assignments, see the pc-hardware-faq (posted regularly to
  the comp.sys.ibm.pc.hardware.* news groups).

  22..22..  II''vvee ggoott aa ......,, wwhhiicchh rruunnss ffiinnee uunnddeerr WWiinn9955,, hhooww ccaann II ffiinndd oouutt
  tthhee ppoorrtt sseettttiinnggss ??

  Using the PEEK <isapnp.conf.5.html#PEEK> command in an isapnp
  <isapnp.8.html> script allows the existing configuration register
  settings to be examined. Assuming that the settings don't change
  between booting Win95 and booting Linux, this script can be used to
  find the settings.

  IIff yyoouu bboooott ssttrraaiigghhtt iinnttoo LLiinnuuxx,, ssoommee ddeevviicceess mmaayy nnoott bbee ccoonnffiigguurreedd.

  To find out the card settings, and then to generate a script to
  reproduce them, follow these instructions:

  1. To find out what configuration registers the card has, you must
     first run pnpdump <pnpdump.8.html> with the two optional arguments.
     With pnpdump <pnpdump.8.html> from release 1.12 or later you don't
     need the additional two arguments, though a single argument may be
     useful to set the READPORT <isapnp.conf.5.html#READPORT> address.
     See  <README.DOS> for instructions on how to obtain the READPORT
     address that Win95 uses.

  2. Then examine the output to identify the number of logical devices,
     and the resources used by each one. For this it is best to pipe the
     pnpdump <pnpdump.8.html> output through grep to remove most of the
     comments thus:

       pnpdump 2 0x3bb | grep -v '# [ A-Z]' | grep -v '^#$' | grep -v '^$' > pnpdump.res

  On my system I have two cards, and pnpdump.res looks like this:

       #
       # (DEBUG)
       (READPORT 0x03bb)
       (CSN 2)
       (IDENTIFY *)
       (CONFIGURE EDI0119/236861364 (LD 0
       # (IO 0 (BASE 0x0240))
       # (INT 0 (IRQ 3 (MODE +E)))
       # (MEM 0 (BASE 0x0c0000) (MODE bu) (UPPER 0x0c4000))
       # (MEM 0 (BASE 0x0c0000) (MODE br) (UPPER 0x004000))
       # (ACT Y)
       ))
       (CONFIGURE DFX0000/1493 (LD 0
       # (IO 0 (BASE 0x02f8))
       # (INT 0 (IRQ 3 (MODE +E)))
       # (IO 0 (BASE 0x02f8))
       # (INT 0 (IRQ 3 (MODE +E)))
       # (IO 0 (BASE 0x02f8))
       # (INT 0 (IRQ 3 (MODE +E)))
       # (IO 0 (BASE 0x03e8))
       # (INT 0 (IRQ 3 (MODE +E)))
       # (IO 0 (BASE 0x03e8))
       # (INT 0 (IRQ 3 (MODE +E)))
       # (IO 0 (BASE 0x02e8))
       # (INT 0 (IRQ 3 (MODE +E)))
       # (IO 0 (BASE 0x02e8))
       # (INT 0 (IRQ 3 (MODE +E)))
       # (IO 0 (BASE 0x03f8))
       # (INT 0 (IRQ 4 (MODE +E)))
       # (IO 0 (BASE 0x03f8))
       # (INT 0 (IRQ 3 (MODE +E)))
       # (IO 0 (BASE 0x03f8))
       # (INT 0 (IRQ 3 (MODE +E)))
       # (ACT Y)
       ))
       (CONFIGURE DFX0000/1493 (LD 1
       # (DMA 0 (CHANNEL 3))
       # (DMA 0 (CHANNEL 1))
       # (DMA 0 (CHANNEL 4))
       # (ACT Y)
       ))

  3. Edit this to remove the duplicates, remove the (ACT
     <isapnp.conf.5.html#ACT>) commands, uncomment each resource and
     change the resource assignment commands to (PEEK
     <isapnp.conf.5.html#PEEK>), thus:

       (READPORT 0x03bb)
       (CSN 2)
       (IDENTIFY *)
       (CONFIGURE EDI0119/236861364 (LD 0
       (IO 0 (PEEK))
       (INT 0 (PEEK))
       (MEM 0 (PEEK))
       ))
       (CONFIGURE DFX0000/1493 (LD 0
       (IO 0 (PEEK))
       (INT 0 (PEEK))
       ))
       (CONFIGURE DFX0000/1493 (LD 1
       (DMA 0 (PEEK))
       ))

  This shows the ethernet card (EDI0119/236861364) has a single logical
  device which uses one each IO <isapnp.conf.5.html#IO>, INT
  <isapnp.conf.5.html#INT>, and MEM <isapnp.conf.5.html#MEM> resource,
  while the PnP modem (DFX0000/1493) has two logical devices:

     a. (LD <isapnp.conf.5.html#LD> 0), which uses an IO
        <isapnp.conf.5.html#IO> resource, and an INT
        <isapnp.conf.5.html#INT> resource,

     b. (LD <isapnp.conf.5.html#LD> 1), which uses a single 8 bit DMA
        <isapnp.conf.5.html#DMA> channel.

  4. Run isapnp <isapnp.8.html> on this script, and the following output
     is obtained:

       Board 1 has Identity 13 0e 1e 37 b4 19 01 89 14:  EDI0119 Serial No 236861364 [checksum 13]
       Board 2 has Identity 6e 00 00 05 d5 00 00 d8 10:  DFX0000 Serial No 1493 [checksum 6e]
       Peek(EDI0119/236861364)[0][0x60](IO  0) is 0x0340, (3,64)
       Peek(EDI0119/236861364)[0][0x70](INT 0) is 0x0A02, (10,2)
       Peek(EDI0119/236861364)[0][0x40](MEM 0) is 0x0000000000000000, (0,0,0,0,0,0,0,0)
       Peek(DFX0000/1493)[0][0x60](IO  0) is 0x03E8, (3,232)
       Peek(DFX0000/1493)[0][0x70](INT 0) is 0x0C02, (12,2)
       Peek(DFX0000/1493)[1][0x74](DMA 0) is 0x04, (4)

  From this you can see that the modem card is configured at IO
  <isapnp.conf.5.html#IO> address 0x3E8, and uses interrupt 12.  The 2
  in the bottom half of the INT <isapnp.conf.5.html#INT> register means
  +ve edge trigger and is unlikely to ever be different. The DMA
  <isapnp.conf.5.html#DMA> channel is set to 4, which means DMA not
  used.

  Also you can see that the ethernet card is configured at IO
  <isapnp.conf.5.html#IO> address 0x340, and uses interrupt 10. The MEM
  <isapnp.conf.5.html#MEM> resource is all 0, which means it is not
  used.

  5. So to program these cards like this, use the script:

       (READPORT 0x3bb)
       (CSN 2)
       (IDENTIFY *)
       (CONFIGURE EDI0119/236861364
               (LD 0
                       (IO 0 (BASE 0x0340))
                       (INT 0 (IRQ 10 (MODE +E)))
                       (ACT Y)))
       (CONFIGURE DFX0000/1493
               (LD 0
                       (IO 0 (BASE 0x3e8))
                       (INT 0 (IRQ 12 (MODE +E)))
                       (ACT Y)))
       (WAITFORKEY)

  22..33..  EExxaammiinniinngg WWiinn9955 rreessoouurrccee sseettttiinnggss..

  Alternatively, for the device of interest:

  1. Right click on My Computer

  2. Click on Properties->Device Manager

  3. Select the device of interest, then click on Properties->Resources.

     Make a note of the resources used.

  22..44..  TThhee wwiinnddoowwss CCTTPPNNPP..CCFFGG ffiillee..

  Some machines may have a CTPNP.CFG file containing PnP resource
  information. Have a look. If you've got one, it may be best to use the
  READPORT address in there.

  22..55..  CCoommmmoonn pprroobblleemmss

  The usual source of conflicts in the sound card with something else,
  tyically the network card. This is because network cards like to be at
  addresses 0x300,0x320,0x340,etc, and sound cards use IO addresses all
  over the place, including (in my system) 0x0220-022f, 0x0330-0333,
  0x0388-038b.

  If you have a system with a network card, and then add a sound card
  later, it is quite likely that the network card is using addresses
  0x0320-033f which will be clobbered by the sound card. The solution is
  to move the network card, and in my system I have it at 0x0340-035f.
  33..  AAddvvaanncceedd uussaaggee..

  33..11..  CCoommmmoonn ccoonnffiigguurraattiioonnss oonn mmuullttiippllee mmaacchhiinneess,, VVeerrssiioonn 11..1111 aanndd
  eeaarrlliieerr..

  It is not possible to use the same configuration file on multiple
  machines with these earlier versions of isapnptools.

  However, it is possible to concoct something with a few scripts etc.
  The key is to split off each board's configuration into it's own file,
  then use an empty run of isapnp with just an IDENTIFY
  <isapnp.conf.5.html#IDENTIFY> to discover which board configurations
  need to be used. Here is what I said to someone with this problem:

  I suggest you run isapnp twice (or more!):

  1. The first time, do a probe to find out which cards are present, ie,
     remove all the (CONFIGURE <isapnp.conf.5.html#CONFIGURE>...)
     sections. Use the output of the (IDENTIFY
     <isapnp.conf.5.html#IDENTIFY>) command in the isapnp script to
     choose the next script.

  2. Run the script selected by the above. Note that the second isapnp
     scripts don't need to run (ISOLATE <isapnp.conf.5.html#ISOLATE>),
     just do a (CSN <isapnp.conf.5.html#CSN> x)(IDENTIFY
     <isapnp.conf.5.html#IDENTIFY>) instead.

  If you do this, it may be advisable to fix the READPORT
  <isapnp.conf.5.html#READPORT> in all four scripts.

  Using this method, you could have an individual script for each board,
  and if you named them by the compacted ident, you could get a list of
  files to configure thus:

       BOARDS=`isapnp probe.conf | grep '^Board' | cut -c22,23,25,26,28,29,31,32,34,35,37,38,40,41,43,44,46,47`
       for board in $BOARDS
       do
               isapnp $board.conf
       done

  where probe.conf is little more than

       (READPORT 0x3bb) # or whatever
       (ISOLATE)
       (IDENTIFY *)
       (WAITFORKEY)

  Note that if you were to use this method with isapnptools version 1.12
  or later, you could skip the grep and cut by using an appropriate
  IDENTIFYFORMAT <isapnp.conf.5.html#IDENTIFYFORMAT> command.

  And each of the board scripts fit the following skeleton:

       (READPORT 0x3bb) # or whatever
       (CSN 10)         # or whatever
       (IDENTIFY *)
       (CONFIGURE ....)
       (WAITFORKEY)

  33..22..  CCoommmmoonn ccoonnffiigguurraattiioonnss oonn mmuullttiippllee mmaacchhiinneess,, VVeerrssiioonn 11..1122 aanndd
  llaatteerr..

  With version 1.12 and later, CONFIGURE <isapnp.conf.5.html#CONFIGURE>
  blocks for boards not present will be skipped, so you can just have a
  single file containing the configurations for all boards in all
  systems.

  If you have machines with the same or similar setup of PnP cards, then
  this can be further optimised by having a single configuration for
  each type of card, using #1,#2,etc instead of the real serial numbers.
  Any systems with a non-standard setup could be overridden by a later
  CONFIGURE <isapnp.conf.5.html#CONFIGURE> specifying the card's full
  serial number.

  33..33..  SSeennddiinngg aa RREESSEETT CCSSNN ccoommmmaanndd..

       Is there a way to issue a "Reset CSN Command", as described
       in Section 4.3 (p15) of the "Plug and Play ISA Specification
       1.0a" using isapnptools?

  Sure, just poke the register using the REG <isapnp.conf.5.html#REG>
  command: after selecting a device and logical device (it doesn't
  matter which !) do

       (REG 2 (POKE 4))

  See section A.1 on page 51 also.

  This might be a good use for CSN <isapnp.conf.5.html#CSN>, as in

       (CSN 1 (LD 0 (REG 2 (POKE 4))))

  You may have to reconfigure the cards again afterwards if you want to
  fiddle with the PnP registers.

  44..  SSoouunnddccaarrddss..

  These seem to be the cause of most problems. Just remember that for a
  card to work, the card must be accessible to the kernel (that's what
  isapnp <isapnp.8.html> is for) aanndd it must have the correct driver aanndd
  it mustn't conflict with any other devices.

  If you suspect driver problems etc, you may wish to join the sound
  mailing list at linux-sound@vger.rutgers.edu.

  44..11..  II''vvee ggoott aann AAWWEE3322//AAWWEE6644,, bbuutt LLiinnuuxx ddooeessnn''tt rreeccooggnniissee iitt..

  [According to Stefan Markgraf, the AWE64 suffers the same problem
  described below, where the two ports at 0xA20 and 0xE20 are not
  mentioned in the resource dump.]

  I've had some great feedback from agriffin@cpcug.org on this: (and a
  couple of corrections from Takashi Iwai <http://bahamut.mm.t.u-
  tokyo.ac.jp/~iwai/>)

  I have been able to get my SoundBlaster AWE 32 pnp configured and with
  drivers from Takashi Iwai, I now get some of the best sounds ever.
  (At least on any of the machines here.)

  I have included both the original output from pnpdump <pnpdump.8.html>
  and the conf that I use to get things working.  NNoottee that the dump
  does not detect the I/O ports at 0xA20 and 0xE20.  The manual that
  came with the card lists these ports and a note in one of the
  newsgroups show that all three of the AWE I/O ports need to be
  configured.

  Before adding the two I/O ports, the isapnp <isapnp.8.html>
  /etc/<pnpdump created file editted to activate the card> does not
  report anything unusual, but when I modprobe -a sound, syslog contains
  two lines:

               AWE32 not found
               AWE32: not detected

  and the output from  cat /dev/sndstst in this case is:

  Sound Driver:3.5.4-960630 (Tue Jan 28 21:37:47 EST 1997 root,
  Linux palis 2.1.23 #1 Tue Jan 28 19:29:03 EST 1997 i586)
  Kernel: Linux palis 2.0.28 #3 Tue Jan 28 21:38:48 EST 1997 i586
  Config options: a80002

  Installed drivers:
  Type 1: OPL-2/OPL-3 FM
  Type 2: Sound Blaster
  Type 7: SB MPU-401

  Card config:
  Sound Blaster at 0x220 irq 5 drq 1,5
  SB MPU-401 at 0x330 irq 5 drq 0
  OPL-2/OPL-3 FM at 0x388 drq 0

  Audio devices:
  0: Sound Blaster 16 (4.13)

  Synth devices:
  0: Yamaha OPL-3

  Midi devices:
  0: Sound Blaster 16

  Timers:
  0: System clock

  Mixers:
  0: Sound Blaster

  Now, when the two I/O ports (0xA20 and 0XE20) are included in the
  isapnp.conf,  syslog has:

               AWE32 Sound Driver v0.3.2 (DRAM 2048K)

  and the output from  /dev/sndstat shows:

  Sound Driver:3.5.4-960630 (Tue Jan 28 21:37:47 EST 1997 root,
  Linux palis 2.1.23 #1 Tue Jan 28 19:29:03 EST 1997 i586)
  Kernel: Linux palis 2.0.28 #3 Tue Jan 28 21:38:48 EST 1997 i586
  Config options: a80002

  Installed drivers:
  Type 1: OPL-2/OPL-3 FM
  Type 2: Sound Blaster
  Type 7: SB MPU-401

  Card config:
  Sound Blaster at 0x220 irq 5 drq 1,5
  SB MPU-401 at 0x330 irq 5 drq 0
  OPL-2/OPL-3 FM at 0x388 drq 0

  Audio devices:
  0: Sound Blaster 16 (4.13)

  Synth devices:
  0: Yamaha OPL-3
  1: AWE32 Driver v0.3.2 (DRAM 2048k)

  Midi devices:
  0: Sound Blaster 16

  Timers:
  0: System clock

  Mixers:
  0: Sound Blaster

  44..11..11..  TThhee oouuttppuutt ffrroomm ppnnppdduummpp ((bbeeffoorree ccoonnffiigguurraattiioonn))..

  # This is free software, see the sources for details.
  # This software has NO WARRANTY, use at your OWN RISK
  #
  # For details of this file format, see isapnp.conf(5)
  #
  # Compiler flags: -DREALTIME -DNEEDSETSCHEDULER
  #
  # Trying port address 0203
  # Board 1 has serial identifier 0d 00 00 d5 88 43 00 8c 0e

  # (DEBUG)
  (READPORT 0x0203)
  (ISOLATE)
  (IDENTIFY *)

  # Card 1: (serial identifier 0d 00 00 d5 88 43 00 8c 0e)
  # CTL0043 Serial No 54664 [checksum 0d]
  # Version 1.0, Vendor version 1.0
  # ANSI string -->Creative SB AWE32 PnP<--
  #
  # Logical device id CTL0031
  #
  # Edit the entries below to uncomment out the configuration required.
  # Note that only the first value of any range is given, this may be changed if required
  # Don't forget to uncomment the activate (ACT Y) when happy

  (CONFIGURE CTL0043/54664 (LD 0
  #     ANSI string -->Audio<--

  # Multiple choice time, choose one only !

  #     Start dependent functions: priority preferred
  #       IRQ 5.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 5 (MODE +E)))
  #       First DMA channel 1.
  #             8 bit DMA only
  #             Logical device is not a bus master
  #             DMA may execute in count by byte mode
  #             DMA may not execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 0 (CHANNEL 1))
  #       Next DMA channel 5.
  #             16 bit DMA only
  #             Logical device is not a bus master
  #             DMA may not execute in count by byte mode
  #             DMA may execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 1 (CHANNEL 5))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0220
  #             Maximum IO base address 0x0220
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 16
  # (IO 0 (BASE 0x0220))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0330
  #             Maximum IO base address 0x0330
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 2
  # (IO 1 (BASE 0x0330))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0388
  #             Maximum IO base address 0x0388
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 4
  # (IO 2 (BASE 0x0388))

  #       Start dependent functions: priority acceptable
  #       IRQ 5, 7 or 10.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 5 (MODE +E)))
  #       First DMA channel 0, 1 or 3.
  #             8 bit DMA only
  #             Logical device is not a bus master
  #             DMA may execute in count by byte mode
  #             DMA may not execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 0 (CHANNEL 0))
  #       Next DMA channel 5, 6 or 7.
  #             16 bit DMA only
  #             Logical device is not a bus master
  #             DMA may not execute in count by byte mode
  #             DMA may execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 1 (CHANNEL 5))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0220
  #             Maximum IO base address 0x0280
  #             IO base alignment 32 bytes
  #             Number of IO addresses required: 16
  # (IO 0 (BASE 0x0220))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0300
  #             Maximum IO base address 0x0330
  #             IO base alignment 48 bytes
  #             Number of IO addresses required: 2
  # (IO 1 (BASE 0x0300))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0388
  #             Maximum IO base address 0x0388
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 4
  # (IO 2 (BASE 0x0388))

  #       Start dependent functions: priority acceptable
  #       IRQ 5, 7 or 10.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 5 (MODE +E)))
  #       First DMA channel 0, 1 or 3.
  #             8 bit DMA only
  #             Logical device is not a bus master
  #             DMA may execute in count by byte mode
  #             DMA may not execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 0 (CHANNEL 0))
  #       Next DMA channel 5, 6 or 7.
  #             16 bit DMA only
  #             Logical device is not a bus master
  #             DMA may not execute in count by byte mode
  #             DMA may execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 1 (CHANNEL 5))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0220
  #             Maximum IO base address 0x0280
  #             IO base alignment 32 bytes
  #             Number of IO addresses required: 16
  # (IO 0 (BASE 0x0220))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0300
  #             Maximum IO base address 0x0330
  #             IO base alignment 48 bytes
  #             Number of IO addresses required: 2
  # (IO 1 (BASE 0x0300))

  #       Start dependent functions: priority functional
  #       IRQ 5, 7 or 10.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 5 (MODE +E)))
  #       First DMA channel 0, 1 or 3.
  #             8 bit DMA only
  #             Logical device is not a bus master
  #             DMA may execute in count by byte mode
  #             DMA may not execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 0 (CHANNEL 0))
  #       Next DMA channel 5, 6 or 7.
  #             16 bit DMA only
  #             Logical device is not a bus master
  #             DMA may not execute in count by byte mode
  #             DMA may execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 1 (CHANNEL 5))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0220
  #             Maximum IO base address 0x0280
  #             IO base alignment 32 bytes
  #             Number of IO addresses required: 16
  # (IO 0 (BASE 0x0220))

  #       Start dependent functions: priority functional
  #       IRQ 5, 7 or 10.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 5 (MODE +E)))
  #       First DMA channel 0, 1 or 3.
  #             8 bit DMA only
  #             Logical device is not a bus master
  #             DMA may execute in count by byte mode
  #             DMA may not execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 0 (CHANNEL 0))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0220
  #             Maximum IO base address 0x0280
  #             IO base alignment 32 bytes
  #             Number of IO addresses required: 16
  # (IO 0 (BASE 0x0220))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0300
  #             Maximum IO base address 0x0330
  #             IO base alignment 48 bytes
  #             Number of IO addresses required: 2
  # (IO 1 (BASE 0x0300))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0388
  #             Maximum IO base address 0x0388
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 4
  # (IO 2 (BASE 0x0388))

  #       Start dependent functions: priority functional
  #       IRQ 5, 7 or 10.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 5 (MODE +E)))
  #       First DMA channel 0, 1 or 3.
  #             8 bit DMA only
  #             Logical device is not a bus master
  #             DMA may execute in count by byte mode
  #             DMA may not execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 0 (CHANNEL 0))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0220
  #             Maximum IO base address 0x0280
  #             IO base alignment 32 bytes
  #             Number of IO addresses required: 16
  # (IO 0 (BASE 0x0220))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0300
  #             Maximum IO base address 0x0330
  #             IO base alignment 48 bytes
  #             Number of IO addresses required: 2
  # (IO 1 (BASE 0x0300))

  #       Start dependent functions: priority functional
  #       IRQ 5, 7, 10 or 11.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 5 (MODE +E)))
  #       First DMA channel 0, 1 or 3.
  #             8 bit DMA only
  #             Logical device is not a bus master
  #             DMA may execute in count by byte mode
  #             DMA may not execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 0 (CHANNEL 0))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0220
  #             Maximum IO base address 0x0280
  #             IO base alignment 32 bytes
  #             Number of IO addresses required: 16
  # (IO 0 (BASE 0x0220))

  #     End dependent functions
  # (ACT Y)
  ))
  #
  # Logical device id CTL2011
  #
  # Edit the entries below to uncomment out the configuration required.
  # Note that only the first value of any range is given, this may be changed if required
  # Don't forget to uncomment the activate (ACT Y) when happy

  (CONFIGURE CTL0043/54664 (LD 1
  #     Compatible device id PNP0600
  #     ANSI string -->IDE<--

  # Multiple choice time, choose one only !

  #     Start dependent functions: priority preferred
  #       IRQ 10.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 10 (MODE +E)))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0168
  #             Maximum IO base address 0x0168
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 8
  # (IO 0 (BASE 0x0168))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x036e
  #             Maximum IO base address 0x036e
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 2
  # (IO 1 (BASE 0x036e))

  #       Start dependent functions: priority acceptable
  #       IRQ 11.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 11 (MODE +E)))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x01e8
  #             Maximum IO base address 0x01e8
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 8
  # (IO 0 (BASE 0x01e8))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x03ee
  #             Maximum IO base address 0x03ee
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 2
  # (IO 1 (BASE 0x03ee))

  #       Start dependent functions: priority acceptable
  #       IRQ 10, 11, 12 or 15.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 10 (MODE +E)))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0100
  #             Maximum IO base address 0x01f8
  #             IO base alignment 8 bytes
  #             Number of IO addresses required: 8
  # (IO 0 (BASE 0x0100))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0300
  #             Maximum IO base address 0x03fe
  #             IO base alignment 2 bytes
  #             Number of IO addresses required: 2
  # (IO 1 (BASE 0x0300))

  #       Start dependent functions: priority functional
  #       IRQ 15.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 15 (MODE +E)))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0170
  #             Maximum IO base address 0x0170
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 8
  # (IO 0 (BASE 0x0170))
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0376
  #             Maximum IO base address 0x0376
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 1
  # (IO 1 (BASE 0x0376))

  #     End dependent functions
  # (ACT Y)
  ))
  #
  # Logical device id CTL0021
  #
  # Edit the entries below to uncomment out the configuration required.
  # Note that only the first value of any range is given, this may be changed if required
  # Don't forget to uncomment the activate (ACT Y) when happy

  (CONFIGURE CTL0043/54664 (LD 2
  #     ANSI string -->WaveTable<--

  # Multiple choice time, choose one only !

  #     Start dependent functions: priority preferred
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0620
  #             Maximum IO base address 0x0620
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 4
  # (IO 0 (BASE 0x0620))

  #       Start dependent functions: priority acceptable
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0620
  #             Maximum IO base address 0x0680
  #             IO base alignment 32 bytes
  #             Number of IO addresses required: 4
  # (IO 0 (BASE 0x0620))

  #     End dependent functions
  # (ACT Y)
  ))
  #
  # Logical device id CTL7001
  #
  # Edit the entries below to uncomment out the configuration required.
  # Note that only the first value of any range is given, this may be changed if required
  # Don't forget to uncomment the activate (ACT Y) when happy

  (CONFIGURE CTL0043/54664 (LD 3
  #     Compatible device id PNPb02f
  #     ANSI string -->Game<--
  #     Logical device decodes 16 bit IO address lines
  #         Minimum IO base address 0x0200
  #         Maximum IO base address 0x0200
  #         IO base alignment 1 bytes
  #         Number of IO addresses required: 8
  # (IO 0 (BASE 0x0200))
  # (ACT Y)
  ))
  # End tag... Checksum 0x00 (OK)

  44..11..22..  TThhee eeddiitttteedd ccoonnffiigguurraattiioonn ffiillee ffoorr iissaappnnpp..

  # This is free software, see the sources for details.
  # This software has NO WARRANTY, use at your OWN RISK
  #
  # For details of this file format, see isapnp.conf(5)
  #
  # Compiler flags: -DREALTIME -DNEEDSETSCHEDULER
  #
  # Edited by jag 27 Jan 1997 to add IO Ports A20 and E20
  #
  # Trying port address 0203
  # Board 1 has serial identifier 0d 00 00 d5 88 43 00 8c 0e

  (DEBUG)
  (READPORT 0x0203)
  (ISOLATE)
  (IDENTIFY *)

  # Card 1: (serial identifier 0d 00 00 d5 88 43 00 8c 0e)
  # CTL0043 Serial No 54664 [checksum 0d]
  # Version 1.0, Vendor version 1.0
  # ANSI string -->Creative SB AWE32 PnP<--
  #
  # Logical device id CTL0031
  #

  (CONFIGURE CTL0043/54664 (LD 0
  #     ANSI string -->Audio<--
  <P>
   (INT 0 (IRQ 5 (MODE +E)))
  #       First DMA channel 1.
   (DMA 0 (CHANNEL 1))
  #       Next DMA channel 5.
   (DMA 1 (CHANNEL 5))
   (IO 0 (BASE 0x0220))
   (IO 1 (BASE 0x0330))
   (IO 2 (BASE 0x0388))
  #     End dependent functions
  (ACT Y)
  ))
  #
  # Logical device id CTL0021
  #

  (CONFIGURE CTL0043/54664 (LD 2
  #     ANSI string -->WaveTable<--

  (IO 0 (BASE 0x0620))
  (IO 1 (BASE 0x0A20))
  (IO 2 (BASE 0x0E20))

  #     End dependent functions
  (ACT Y)
  ))
  #
  # Logical device id CTL7001
  #
  (CONFIGURE CTL0043/54664 (LD 3
  #     Compatible device id PNPb02f
  #     ANSI string -->Game<--
  (IO 0 (BASE 0x0200))
  (ACT Y)
  ))
  # End tag... Checksum 0x00 (OK)

  44..11..33..  AAnn eexxttrraacctt ooff tthhee bboooottuupp ssccrriipptt ttoo ccoonnffiigguurree ssoouunndd..

       #######################################################################
       #  Add local action for palis.athena.inc               27 Jan 1997  jag
       #  SoundBlaster AWE 32 pnp initlization
       #  Load sound "fonts". NOTE: the synthgs.sbk from the SB install CDROM
       #  Load sound.o module. This should be loaded before the "fonts".
       #######################################################################

       if [ -f /sbin/isapnp ]; then
               echo "Initializing the SouncBlaster AWE 32 pnp:"
               /sbin/isapnp /etc/isapnp.conf > /dev/null
       else
               echo "No pnp initialization code available.:
               exit 1
       fi
       #
       # According to Takashi IWAI, modprobe must come before sfxload
       #
       /sbin/modprobe -a sound

       if [ -f /usr/local/bin/sfxload ]; then
               echo "Loading Sound Fonts for General Midi:"
               /usr/local/bin/sfxload -Ii /usr/local/lib/awe/synthgs.sbk
       else
               echo "No Sound Font loading available.:
       fi

  44..22..  PPrroobblleemmss wwiitthh tthhee AAzztteecchh SSoouunndd GGaallaaxxyy 1166 IIIIII--33DD PPnnPP ssoouunndd ccaarrdd..

  Stefan Markgraf has reported being unable to get the 16 bit MSS
  compatibility working with this card (Jul 97), and ended up changing
  it for a AWE64.  The 8-bit Sound Blaster pro compatibility, MPU-401
  and OPL-3 functions work fine.

  44..33..  CCDD ssoouunndd ddooeessnn''tt wwoorrkk ((oonnee cchhaannnneell oorr nnoo cchhaannnneellss))..

  There are two orientations for the CD player sound-card signals, try
  reversing the connector on the sound card if the CD player sound
  doesn't work. (From an email from kjcox@students.wisc.edu).

       After much fiddling, I finally got it to work but in the
       strangest manner.  I reversed the cable from the CD-ROM to
       the sound card 180 degrees while the computer was up and
       running.  I had to first remove the white box on the sound
       card into which the cable fits.  I tried it both ways and
       then when I put it back while the computer was running (hey,
       I got desperate) it suddenly decided to work.  It took
       awhile though to get there.

       Anyway, something to add to your FAQ.  Try removing the
       white box and reversing the cord.  You can either turn the
       box around or switch it altogether.

  55..  MMooddeemmss..

  These are the easiest PnP devices to get installed, due to the ability
  to configure devices (using _s_e_t_s_e_r_i_a_l) after the kernel has booted.
  This allows experiments to be made with the settings without having to
  reboot.

  There are a couple of gotchas though:

  Beware of products using phrases such as "Winmodem" or "Specially
  designed to work with Windows or Windows 95". These may well not work
  as standalone products, and require the driver provided with Windows
  to work.

  In a similar way some newer modems may not have the DSP code builtin,
  but rely on a program during boot to download the code into them.
  These will work in Linux if it is booted after running DOS/Windows,
  but they won't work directly after a power up into Linux.

  55..11..  GGeenneerraall..

  See the file  <README.modules> in the distribution for an example of
  how to get a PnP modem card running.

  See also the Serial-HOWTO available from Sunsite
  <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/Serial-HOWTO> or from
  TSX-11 <ftp://tsx-11.mit.edu/pub/linux/docs/HOWTO/Serial-HOWTO>, or
  from their respective mirrors.

  55..22..  II''vvee ggoott aa WWiinnMMooddeemm,, aanndd II''vvee ffoolllloowweedd aallll tthhee iinnssttrruuccttiioonnss,, bbuutt
  iitt ssttiillll ddooeessnn''tt wwoorrkk..

  Unfortunately, a "WinModem" is only half a modem. A significant
  proportion of the modem functionality is in the Windows driver, which
  is not present when trying to use it with Linux.

  The easiest solution at present is to take it back and get a
  traditional type of modem which can be used on Unix systems. (Of
  course, if you have the ability, inclination, and required technical
  information, I'm sure there are many who would like to see a Linux
  driver for these beasts).

  55..33..  II''vvee ccoonnffiigguurreedd tthhee ddeevviiccee,, bbuutt iitt iiss rreeaallllyy SSLLOOWW..

  Very slow activity can be due to interrupt clashes. When the program
  that uses the port is running, what does proc/interrupts/ say ? If the
  interrupt count is always 0 for the serial port, you probably have a
  hardware clash with two devices using the same interrupt line. Check
  your BIOS PCI settings for preallocated interrupt lines too.

  If this is the case, reassign the interrupts so that they no longer
  clash.

  55..44..  WWhhaatt''ss tthhiiss aabboouutt nnoott uussiinngg //ddeevv//ccuuaa11 ??

  It's just something I've read in the mgetty+sendfax documentation. The
  two devices behave differently on file open, and were intended for
  dealing with modems set to auto answer. If you want to send faxes
  and/or allow dialing in, I suggest you get and install mgetty+sendfax,
  it includes an email from the writer of the serial device driver on
  why only ttySx should be used. I've seen hints that the cuax devices
  may be going in future kernels.

  The mgetty program listens to the modem and answers it manually, thus
  preventing a wasted call which would have occurred with an auto-answer
  modem and crashed computer.

  66..  NNeettwwoorrkk ccaarrddss..

  See the file  <README.modules> in the distribution for an example of
  how to get a PnP ethernet card running, using a loadable kernel module
  driver.

  See also the Ethernet-HOWTO available from Sunsite
  <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/Ethernet-HOWTO> or from
  TSX-11 <ftp://tsx-11.mit.edu/pub/linux/docs/HOWTO/Ethernet-HOWTO>, or
  from their respective mirrors.

  77..  IIDDEE ppoorrttss..

  See the file  <README.ide> in the distribution for some ideas on how
  to get a PnP IDE interface running. These are often found on sound
  cards.

  If you are running a 2.1.x kernel, it is apparently possible to rescan
  the IDE interface after boot up, but only if no devices are in use on
  that controller.

  Have a look at archive/latest/872 on the pnp-list archives.

