I have noticed a couple postings in recent weeks regarding getting
an Ensoniq Soundscape PnP card to work under Linux. The following
are the steps that I went through to get my card to work. Nothing
tricky about any of the steps, just a matter of putting things
together from a number of different sources.
First, I have a Gateway P133, with the OEM Ensoniq Soundscape VIVO
PnP card. I am running the 1.2.13 kernel, RedHat (via Caldera)
release. The card works fine with RealAudio, WorkMan, Xanim, and
Lsox. I have not tried the MIDI interface or the mixer.
The first catch-22 I had to deal with was the fact that I needed
to configure the PnP card before the kernel loaded, or the loading
of the sound driver failed. As was suggested by some others, my first
attempts were to configure the card under Win95 and "warm boot" into
Linux. For some reason this didn't work for me... the card seemed
to lose its configuration somewhere in the process. Plan B. The
3.01 version of the sound driver has module support. So I compiled
the sound driver as a module, used isapnp to configure the card,
then used insmod to activate the module. It worked, but there were
a few "gotchas" along the way... here it is step by step:
1) Download the latest version of isapnp. Use pnpdump to dump the
soundcard's potential set-ups. I found the first one worked fine
for me. Place this info in the file /etc/isapnp.conf, following the
directions provided with the isapnp package (e-mail me if you'd like
a copy of my config file).
You should now be able to run "/sbin/isapnp /etc/isapnp.conf"
successfully. It should come back with something along the lines:
-------
Board 1 has Identity df 01 23 ab cd 80 40 d3 15: ENS4080 Serial No 19114957 [checksum df]
-------
2) Use the VoxWare sound driver 3.01. This version has some support
for the Ensoniq cards, although it says it doesn't work with the VIVO
version... turns out it really does.
a) I originally had 16M of memory. As stated in the Readme.modules
found with the sound driver, I had to add the line
#define KMALLOC_DMA_BROKEN 1
to the file soundcard.c, to work around some kind of kmalloc problem.
I later added more RAM to my system and found I had to _remove_ this
workaround (don't claim to understand why).
b) To build sound support as a module...
- in /usr/src/linux, run "make config", just as if you were building
a new kernel. When you get to the sound prompt, answer "y" to sound
support. When prompted for specific sound cards, answer "n" to all
except for Ensoniq, then answer "y". The rest of the configuration
came from the default PnP setup, with a little trial and error for
the DMA channels... this is what worked for me:
I/O base: 330
Spea/Reveal? n
IRQ for soundscape: 9
DMA for soundscape: 0
MSS I/O base: 534
IRQ for MSS: 5
DMA for MSS: 1
DMA buffer size: 16384
According to the documentation, 16K is the largest buffer size you
can use if the "KMALLOC_DMA_BROKEN" fix is used.
- make dep; make clean
- make modules... the sound driver (sound.o) should then wind up in
/usr/src/linux/modules
- run "make config" again, this time disabling kernel sound support.
Continue building and installing the "soundless" kernel normally.
c) Make sure all the devices in the /dev directory are set up properly
(this board needs to use /dev/dsp1). There is a script at the end of
the sound driver's linux/Readme file to do this.
d) You can now try inserting the sound module via
/sbin/insmod /usr/src/linux/modules/sound.o memsize=16384
If it works, "cat /dev/sndstat" should show a setup similar to:
-------
VoxWare Sound Driver:3.0.1-950812 (Tue Aug 27 22:29:18 EDT 1996 root,
Linux genesis.lake.com 1.2.13 #35 Thu Aug 22 22:02:39 EDT 1996 i586)
Config options: 250400
Installed drivers:
Type 12: Ensoniq Soundscape
Type 15: MS Sound System (SoundScape)
Card config:
Ensoniq Soundscape at 0x330 irq 9 drq 0
MS Sound System (SoundScape) at 0x534 irq 5 drq 1
Audio devices:
0: Not functional
1: SoundScape (AD1845)
Synth devices:
Midi devices:
0: MPU-401 0.0 Midi interface #1
Timers:
0: System Timer
Mixers:
0: AD1848/CS4248/CS4231
-------
e) The sound driver documentation says that the Ensoniq card needs
to be initialized via the ssinit program provided. This is NOT the
case with the VIVO card.
The card should now work! You can test this by sending an audio file
to /dev/audio (which should be linked to /dev/audio1... similarly
/dev/dsp should be a link to /dev/dsp1). I added the "isapnp" line
to my rc.sysinit file, and set up the appropriate directory entries
to get the sound module to load with the rest of my kernel modules
(although you could just add the "insmod" command at any point after
the "isapnp").
Hope someone finds this useful... e-mail me if there's anything I left
out (or just to say if it worked/didn't for you).
JMKeil