Linux Step By Steps
Installing a Creative Labs AWE64 ISA Sound Blaster Card in eD2.4
By Tony Alfrey (tonyalfrey@earthlink.net)
April 6, 2000

applicable to COL2.4 (see comments by Mike Andrew at bottom of steps)

Overview of the process.

This document looks VERY LONG but do not be intimidated.  We've made it very detailed and not left out any tiny steps and have assumed very little about the linux skills of the user.  We've also listed the outputs of several files and diagnostic steps that make the document long, but they will help you check for problems along the way.  We suggest you read the whole procedure first so you will be ready with all of the 'parts' you need as you progress.

It is important to not skip steps, change the order or ignore nasty error messages along the way. There are actually only a few basic steps to the procedure and they are:

Step 00.  Is your BIOS selected for "OS is PNP-aware"?
Step 0.  Are you plugged in?
Step 1.  The AEW64 is a plug-and-play card (PNP) and must be configured from software during boot-up to function.  You will create a ispnp.conf file to allow setting the addresses and IRQ of each pnp card, and specifically the AWE64 card, on boot-up.
Step 2.  You will check the completed isapnp.conf file by using the isapnp command to configure the AWE64 card.
Step 3.  You will derive a set of parameters for the proper installation of the sound modules (loadable kernel modules).
Step 4.  You will collect some necessary files.
Step 5.  You will install the sound modules.
Step 6.  Finally you will reboot and check the configuration.

Here we go!!
 

Step 00.  Is your BIOS selected for "OS is PNP-aware"?

Your BIOS configuration setup may have the option to select "OS is/is not PNP aware" (by the way, the Phoenix 4.0 Release 6.0 BIOS on my
Intel 440 BX motherboard does not).  You will want to make sure that "OS is PNP aware" is selected. In other words, you want the exectuable
isapnp (part of your 'OS' ) to set the IRQ for your soundcard as you boot up. Otherwise, if you select "OS is not PNP aware", your BIOS will set
the IRQ for your sound card for you in opposition to what you want to do in upcoming sections of this SxS. (Thanks to the users of the Caldera list
for motivating this addition !)

Step 0.  Plug in!

I'm assuming your card is already plugged into an ISA slot, and possibly (but not necessarily) already working in Windows.  Plug the card into speakers or an amplifier as per its installation instructions, with the volume adjusted to some modest level. This will help a little later because you will be able to hear a "click" from your speakers when your sound module sb gets properly loaded.  More on this later...

Step 1.  Configuring Your PNP Sound Card.

1.1  At a console window in Linux, type the command
 

pnpdump > /etc/isapnp.conf

to generate the file  /etc/isapnp.conf.

1.2  Back up this file for safety as something like isapnp.confOLD.

1.3  Using your favorite text editor, open the file /etc/isapnp.conf and add the line

(VERIFYLD N)

in the first block of statements (just before (READPORT 0x****) is a good place).

1.4  Edit the isapnp.conf file by un-commenting the appropriate lines for configuration of three logical devices. No actual writing of statements is necessary (with one exception for the last logical device of the sound card), just un-commenting of statements already prepared for you. Following is the completed file, formed by uncommenting the blocks of statements for each logical device (LD 0, LD 1, LD 2, etc.) detected for MY system.  Note: The unused possible configurations provided by pnpdump have been removed for clarity from the file shown below.  Since the unused configurations are
commented out, you may retain them if you wish.

 # My isapnp.conf File

 # Trying port address 0203
 # Board 1 has serial identifier e3 17 d9 63 7a c5 00 8c 0e

 # (DEBUG)
 (VERIFYLD N)
 (READPORT 0x0203)
 (ISOLATE PRESERVE)
 (IDENTIFY *)
 (VERBOSITY 2)
 (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING

 # Card 1: (serial identifier e3 17 d9 63 7a c5 00 8c 0e)
 # Vendor Id CTL00c5, Serial Number 400122746, checksum 0xE3.
 # Version 1.0, Vendor version 1.0
 # ANSI string -->Creative SB AWE64 PnP<--
 # Vendor defined tag:  73 02 45 01
 #
 # Logical device id CTL0045
 #     Device supports vendor reserved register @ 0x39
 #     Device supports vendor reserved register @ 0x3a
 #     Device supports vendor reserved register @ 0x3c
 #     Device supports vendor reserved register @ 0x3d
 #

 (CONFIGURE CTL00c5/400122746 (LD 0
 #     ANSI string -->Audio<--
  (INT 0 (IRQ 9 (MODE +E)))
  (DMA 0 (CHANNEL 1))
  (DMA 1 (CHANNEL 5))
  (IO 0 (SIZE 16) (BASE 0x0220))
  (IO 1 (SIZE 2) (BASE 0x0330))
  (IO 2 (SIZE 4) (BASE 0x0388))
  (NAME "CTL00c5/400122746[0]{Audio               }")
  (ACT Y)
 ))
 

 (CONFIGURE CTL00c5/400122746 (LD 1
 #     Compatible device id PNPb02f
 #     ANSI string -->Game<--
  (IO 0 (SIZE 8) (BASE 0x0200))
  (NAME "CTL00c5/400122746[1]{Game                }")
  (ACT Y)
 ))
 

 (CONFIGURE CTL00c5/400122746 (LD 2
 #     ANSI string -->WaveTable<--
 # Carefully note extra parts added to the next line !!
  (IO 0  (SIZE 4) (BASE 0x0620))(IO 1 (BASE 0x0A20))(IO 2 (BASE 0x0E20))
  (NAME "CTL00c5/400122746[2]{WaveTable           }")
  (ACT Y)
 ))

 (WAITFORKEY)

IMPORTANT!!  Note that extra components have been added to the configuration for the last logical device LD 2.

Step 2  Check the isapnp.conf File

Save the file isapnp.conf and type
 

isapnp /etc/isapnp.conf

to configure the pnp card.  It will give you mesages about the success of your configuration and tell you which, if any, of the configurations failed.  If you make a mistake and get errors when you command isapnp, you will have to edit and save isapnp.conf.  Then, after correcting isapnp.conf, you may have to reboot before running isapnp again to test your isapnp.conf file. see comments

You must get an error-free result from the running of isapnp at this step.

Step 3.  Derive Parameters for Loading Modules

Examine the configuration for the first logical device (LD 0).  Here is mine for comparison

 (CONFIGURE CTL00c5/400122746 (LD 0
 #     ANSI string -->Audio<--
  (INT 0 (IRQ 9 (MODE +E)))
  (DMA 0 (CHANNEL 1))
  (DMA 1 (CHANNEL 5))
  (IO 0 (SIZE 16) (BASE 0x0220))
  (IO 1 (SIZE 2) (BASE 0x0330))
  (IO 2 (SIZE 4) (BASE 0x0388))
  (NAME "CTL00c5/400122746[0]{Audio               }")
  (ACT Y)
 ))

Extract from this configuration a "list of parameters" consisting of
the following items:

the first i/o port address = 0x220
the IRQ = 9
the channel # for DMA = 1  (same as DMA 0)
the channel # for DMA16 = 5 (same as DMA 1)

The numbers I have listed are for MY system; they will very likely be different for yours.

A "list of parameters"

 io=0x220 irq=9 dma=1 dma16=5

is thus formed, which will be used later in several places.  Especially important is the selection of the correct IRQ so that there are no conflicts between devices. At a console, the command

sysinfo>/tmp/sysinfo

will print a file to /tmp/sysinfo that will list the interrupts that are active at the time, and will PROBABLY tell you which IRQs are already spoken for.

In my specific case, I had an earlier installation of the sound driver OSS from 4Front Technologies on my COL2.3 installation.  This allowed me to run the soundconf script to get the i/o port and IRQ information from COL2.3

 i/o port = 220
 IRQ = 9
 DMA(A) = 1  (same as DMA=1)
 DMA(B) = 5  (same as DMA16 = 5)
 MIDI port = 330
 OPL3 FM synthesizer port = 388

Step 4.  Collecting and Installing Necessary Files.

4.1  You will need a copy of the file "synthgm.sbk".  If you are running a dual-boot Windows system, it is available from your Windows disk. Get synthgm.sbk from Windows or from the web:
 a)  copy from windows/system/synthgm.sbk to /usr/bin or....
 b)  copy to /usr/bin from http://members.xoom.com/yar/synthgm.sbk.gz

after un-zipping the file using the command

gunzip synthgm.sbk.gz

4.2  You will need a copy of the program awesfx (awesfx-0.4.3c-1.i386.rpm).  Get this program from  http://members.tripod.de/iwai/awedrv.html#Driver
Select the rpm from the list and load it so that the program sfxload goes to /usr/bin The easiest way to do this is to download the rpm into your /home directory, click on the rpm and the kpackage window will appear.  Click on "install".  Look in /usr/bin to make sure sfxload arrived.
 
 

Step 5.  Installing Sound Modules

Now you are ready to actually install the loadable kernel modules.

Normally we would use COAS to add the proper sound modules, but I encountered buggy behavior in COAS, so we will work around it.  This is better, because you get to find out a little about what goes on behind the scenes!

5.1  Using your favorite text editor, insert the following line into the file /etc/modules.conf

post-install awe_wave /usr/bin/sfxload /usr/bin/synthgm.sbk

5.2  At a console, type the command lsmod.  A list of loaded modules will appear.  You should see several sound-like modules loaded.  They will have names like
 sound
 soundcore
 soundlow
 uart401
 sb
 awe_wave

We will remove and reinstall some modules, so that they are loaded with the correct configuration information matching your sound card.
IN THE FOLLOWING ORDER, at a console, command

rmmod sb
rmmod awe_wave
rmmod uart401
rmmod sound

DO NOT REMOVE soundcore and soundlow

5.3  Using the earlier derived parameters list in step 3, activate a console and load the module sb by commanding

modprobe sb list-of-parameters

Examplemodprobe sb io=0x220 irq=9 dma=1 dma16=5

You most likely heard a "click" in your speakers at this point, but don't fret if not.

5.4.  Activate a console window and load the module awe_wave by commanding

modprobe awe_wave

sfxload will activate as a result

5.5  Edit the file /etc/modules/default by inserting the lines
 sb
 awe_wave
This will autoload awe_wave and sfxload on the next boot
Note:  Look for "hidden files" when you examine /etc/modules.  You may find a file ~/.default (with the 'dot').  If you have it, THIS is the file to edit. See comments

5.6 Command kedit /etc/modules/options/sb to create a new file and enter a single line in here with the same parameters as for modprobe:

io=0x220 irq=9 dma=1 dma16=5   (your system may look different, see step 3)

(This is the same as if you typed modprobe sb, the above /options/sb file would be the collection of parameters passed transparently for you)
 

Step 6.  Reboot and Final Test

6.1  Reboot

6.2 Command cat /dev/sndstat  to observe the configured devices and card configuration.  It should look something like:

 OSS/Free:3.8s2++-971130
 Load type: Driver loaded as a module
 Kernel: Linux noname.nodomain.nowhere 2.2.14 #1 SMP Thu Feb 17
 11:49:42 MST 2000 i686 Config options: 0

 Installed drivers:

 Card config:

 Audio devices:
 0: Sound Blaster 16 (4.16) (DUPLEX)

 Synth devices:
 0: AWE32-0.4.3 (RAM512k)

 Midi devices:
 0: AWE Midi Emu

 Timers:
 0: System clock

 Mixers:
 0: Sound Blaster

6.3  Click K->Multimedia->Sound Mixer Panel to make sure it is activated and that no sources are muted.

6.4  Assuming your sound card is plugged into speakers or an external amplifier/stereo system, click K->Multimedia->CD Player, insert a CD and start it with the > button.

6.5  Click on KDE Control Center->Sound->System Sounds->enable system sounds

6.6  If your CD player works, but not system sounds, your problem is most likely an incorrect IRQ selection way back in isapnp.conf.
 


COMMENTS

isapnp is a 'one shot' process. It is quite likely that for you to issue isapnp again, you will have to use the three fingured salute.

The reason for this is that isapnp is too smart for it's own good. IF an interrupt (or other resource) is detected by isapnp as 'used' by the system, it will NOT load the pnp configuration. Purely as an eg, this can occur if you were someway succesfull in loading sound. The interrupt(s) that sound uses will be detected by the kernel and listed in /proc/interrupts as having BEEN used. This causes isapnp to fail on any subsequent attempt to reload isapnp.

----
/etc/modules/default as mentioned above for coas is applicable to col2.4 and some revisions of col2.3

it is in fact the preferred location for this file.

Early incantations of this file (beginning with Col2.2) were

/etc/modules/<version>/<date>/(dot)default
/etc/modules/<version>/<date>/default
/etc/modules/<version>/(dot)default
/etc/modules/<version>/default
/etc/modules/(dot)default
/etc/modules/default

During boot-initialisation, /etc/rc.d/rc.modules hunts for this file. To accomodate compatibility with earlier upgrades, it checks for this file in the above locations in the above order. Therefore, use caution with which 'default' file you actually need to edit (or preferably delete altogether) and, be aware that (dot) files are not normally listed (you wont see them by default unless you specifically unhide them)