Sound - Ensoniq SoundScape and linux

This document will talk you through setting up sound for your linux system using an Ensoniq SoundScape. It is not however a replacement of the Sound-HOWTO merely an additional guide. I hope you find it useful

Linux comes with support for a whole range of soundcards but I have an Ensoniq SoundScape Plug and Play card so I guessed I would be in trouble with it. Luckily there is a collection of ISA Plug and Play tools available for linux. You may find that these came with your distribution. Check before you download them. (They do come with Redhat 5.2 for instance)

Basically like the documentation in /usr/src/linux/drivers/sound (which I would suggest you read as well as the sound-HOWTO) says you need to initialise your PnP sound card before it will work.

However, I have found that using IsaPnP that just isn't necessary... YMMV.

It is important that you know what IRQs, DMAs and I/O addresses your soundcard uses under DOS. You can check this with your Ensoniq SoundScape by running the ssconfig program which should have been installed when you installed the drivers.
This reports all the information you need to know both for isapnp and for the kernel configuration. That should show you exactly what settings your SoundScape is using. Write them down on a bit of paper (the marvels of modern technology) and then reboot into linux.

Once you are safely back in linux, you need to use the pnpdump utility to show what your PnP cards are doing. Do this using:

pnpdump >/isapnp.conf
vim /isapnp.conf

If you don't like using vim as your editor use something else. When you edit the isapnp.conf file you need to uncomment the lines which refer to your soundcard. This task seems a bit daunting at first as there are numerous configurations (there were five for my Ensoniq SoundScape alone) and the lines seem to be in a foreign language. DON'T PANIC !

Instead try to find the section which identifies most with your configuration as shown by ssconfig (you know that bit of paper you just chucked out). My SoundScape uses the base address of 0x330 so first look for your base address first. Then narrow down the config by checking for the address for wave functions. For me this was 534 but the isapnp thought it was 0x530. It works when it is set to 0x530 so that is what mine is set to. Basically once you have found a configuration that looks about right, remove the #'s at the start of all the lines with data on them but not the comments. EVEN the ones that look odd and aren't even referenced by ssconfig. Isapnp does know what it is doing when it reports things.

The only caveat is that I have had to change the DMA 0 to be CHANNEL 0 as opposed to CHANNEL 1 which it started out as. For reference I have included the right section from my isapnp.conf.

If you are using Redhat 5.2 (as I am) then all you need to do is mv /isapnp.conf /etc/isapnp.conf (as root) and either restart your computer or remove any modules that may be using devices referenced by the isapnp.conf and then do /sbin/isapnp /etc/isapnp.conf. The startup sequence sees the file there and runs isapnp for you. (In case you are interested the file that does this is /etc/rc.d/rc.sysinit)

If you are using another distribution which doesn't do this automagically then you should insert the line /sbin/isapnp /etc/isapnp.conf into your startup sequence. If you reboot you should see a line from isapnp saying that it has correctly initialised your soundcard and you should hear a click as it does so, if not check your isapnp.conf again. (NB you'll only hear a click if the speakers are on (yes it does seem obvious but you never know...))

Kernel Configuration

You will need to recompile the kernel to enable sound support for programs. I would take this opportunity of recommending reading the Kernel-HOWTO to ensure that you know what you are doing when compiling the kernel. I will give only brief instructions here.

The following is true for 2.2.x

The bits you should enable in the kernel are:

Then after having selected any other options, do your compile: make dep; make clean; make zImage

Make sure if (as I did) you compiled sound as a module, that you remove any modules from previous kernels in /lib/modules and then do: make modules; make modules_install (as root for the last bit). You will need to do a depmod -a (as root) to update the module dependencies for the new modules.

To get the module to load with the right options I use:
options sscape io=0x534 irq=5 dma=0 mpu_io=0x330 mpu_irq=9
alias sound-slot-0 sscape
alias sound-service-0-3 sscape

In /etc/conf.modules

You should now just be able to use sox (or play the frontend) to play wav files etc. or use cat aufile.au >/dev/audio

If these fail then something is wrong with your setup. Check your isapnp.conf and that the IRQ and DMA match up with those used in your conf.modules. Try looking at the output of cat /dev/sndstat. Make sure you are running the kernel you just compiled. uname -a should help there.

If it still doesn't work, email me huggie-spam-me-harder@earth.li.


Last updated: Tue Jun 17 11:03:52 BST 2003