Linux Step By Steps

Sound Blaster AWE 32 and 64 

From mikea@norfolk.nf

Installing sound correctly in Linux is best described as 'tricky'. These steps work! No ifs no maybes. If sound fails for you afterwards, you have not fully read these steps and cut some corners. Pay careful attention to what is said, do NOT skip ahead because "you've done that before". You haven't. You've done it in the wrong order 

At the completion of theses steps, you will have a garanteed sound system working each time, every time, with no disconcerting failures. Read Carefully.

These notes  apply equally to an SBAWE32 both contain,

     a raw audio device, 
     standard OPL-2/OPL-3 synthesis, 
     an MPU-401 MIDI port and
     32 voice EMU 8000 Wave Table synthesis 
 

The SB AWE 64 has additional Wave Guide synthesis. The 32 additional voices are
software generated and output via the raw wave devices. It is not supported under
linux and so both types of card are handled the same way.

UART401 and OPL3 are assumed to have default values. The modules when loaded will assume this. If this is not the case simply assign further paramaters under step FOUR to these devices


STEP ZERO:

AWE32/64 is  ISAPNP. You *must* go through the isapnp step by step before wasting your time in here.  It cannot be stressed strongly enough, the isapnp will clear up many mysteries to you about what paramaters to assign to which. Do not attempt these steps until isapnp is sorted out.

The awe64 does not supply pnpdump with all values required. /etc/isapnp.conf must be altered to add the following addresses with an example below

"(CONFIGURE CTL044/1132685 (LD 2 (IO 0 (BASE 0x0620)) (IO 1 (BASE 0x0A20)) 
(IO 2 (BASE 0x0E20)) (ACT Y) ))"

Gameport (0x200) and StereoEnhance are not required to be configured.

write down the following paramaters based on /etc/isapnp.conf

io=0x220
irq=9
dma=3
dma16=7

these values are MY values for MY installation. Yours will differ. You will use these in step 3.

If you have not already done so, in a root console type

isapnp /etc/isapnp.conf

isapnp is intelligent, if you retype isapnp at some future date, there is a possibility it will 'fail'. This is because the code inside isapnp sniffs at existing, active ports and interrupts. If the isapnp.conf file contains resources that isapnp knows are active it will complain. It does not know what an active IRQ 7 is used for, only that the kernel reports it as being 'in use'. Typicically, if you run isapnp to get sound up and running, and then, sound does actually run, then interrupts from that get 'reserved'. Hence, re-typing isapnp will fail.

Do not go past step zero until isapnp is 'ok', you are otherwise wasting your time. You *have* been warned.

STEP ONE: Compiling
Ordinarily you can safely skip this step.

Kernel distributions normally come shipped with all modules compiled. In the unlikely event that this is not the case, OR, you have recompiled your kernel, these are the settings you require in "make xconfig" for soundblaster - awe modules.

Sound Blaster (SB, SBPro, SB16, clones) support (CONFIG_SB) 
Generic OPL2/OPL3 FM synthesizer support (CONFIG_ADLIB) 
/dev/dsp and /dev/audio support (CONFIG_AUDIO) 
MIDI interface support (CONFIG_MIDI) 
FM synthesizer (YM3812/OPL-3) support (CONFIG_YM3812)
lowlevel sound driver support
AWE32 support (CONFIG_AWE32_SYNTH) 

The choice of using M (modularised) or 'Y' (monolithic) kernels is up to you.
See recompiling for an SxS on this subject. For modularised kernels it does not matter
if you compile additional sound components apart from the above. They simply wont be used.

STEP TWO AWESFX

This program does NOT come with your distro, the use of the AWE channels is therefore restricted. If you are
dual booting you will experience sound sometimes working, sometimes not. Because the rom tables are not loaded.

Obtain a copy of synthgm.sbk in the following way.

If you have a windoze drive

cp /mnt/dos/windows/system/synthgm.sbk /usr/bin/
or
http://members.xoom.com/yar/synthgm.sbk.gz

grab the entire for awesfx program. 

http://members.tripod.de/iwai/awedrv.html#Driver

follow instructions so that sfxload ends up in /usr/bin
 

insert the following into /etc/modules.conf

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

Step THREE sound module order.

USE COAS.

The coas-kernel-load is broken in this regard, but, you must use it's facilities. This is *foolproof*

1) coas-kernel-load-view-sound
    remove ALL SOUND MODULES except soundcore and soundlow
    if they are not there, install them. 
    exit

2) in a root console type the following magic.

modprobe sb io=0x220 irq=9 dma=3 dma16=7 

If you get failures here, you have got it wrong. do NOT go past this step until you can succesfully modprobe. Don't despair
the only failure you can have is the resource paramaters are wrong, check and double check step zero.

It is essential that modprobe works for a bug in coas to be 'got round'.

3) coas-kernel-load-view-sound(again!)

    two new modules will now be there

        soundcore
        soundlow
        sound
        sb

    UNLOAD sb (yes, unload it)
it will ask if you want it at boot time, answer NO (we need to re-initailise this thing by removing it completely)

    load it again ! with correct paramaters (as above)

install the remaining modules:

            uart401
            awe32
            uart6850
            mpu401
            opl3

exit
-----------

Although not necessary, you can check that all modules are correct for the next boot

/etc/modules/<version>/default must contain

   soundlow
   soundcore
   sound
   opl13
   mpu401
   uart401
   sb
   awe_wave

delete all references to other sound modules and cards (if present)

<version> is tricky to explain without making this SxS large, type "uname -r" to discover which <version> will be looked at
at boot time. For a full explanation (rembember you are just checking here) see modprobe

/etc/modules/options/sb

io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330

STEP FOUR: provide paramaters to /etc/modules.conf

Due to a bug in the boot scripts (a timing race), you should additonally enter values in /etc/modules.conf

alias sound sb
options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330
post-install awe_wave /usr/bin/sfxload /usr/bin/synthgm.sbk

The mpu and opl3 (midi) addresses are set to default of 0x330 and 0x388 respectively.

*remember, these are my paramaters, yours will differ.


TESTING FOR SOUND

cat /dev/sndstat

OSS/Free:3.8s2++-971130
Load type: Driver loaded as a module
Kernel: Linux mikea.nf 2.2.5 #1 Sat Apr 3 21:49:22 MST 1999 i586
Config options: 0

Installed drivers:

Card config:

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

Synth devices:
0: AWE32-0.4.3 (RAM512k)
1: Yamaha OPL3

Midi devices:
0: Sound Blaster 16
1: AWE Midi Emu

Timers:
0: System clock

Mixers:
0: Sound Blaster 

---------

locate *.au

cat *.au > /dev/audio
cat *.au > /dev/dsp
-------