old-www/HOWTO/Soundblaster-AWE-3.html

264 lines
11 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>Sound Blaster AWE 32/64 HOWTO: How to install SB AWE sound support</TITLE>
<LINK HREF="Soundblaster-AWE-4.html" REL=next>
<LINK HREF="Soundblaster-AWE-2.html" REL=previous>
<LINK HREF="Soundblaster-AWE.html#toc3" REL=contents>
</HEAD>
<BODY>
<A HREF="Soundblaster-AWE-4.html">Next</A>
<A HREF="Soundblaster-AWE-2.html">Previous</A>
<A HREF="Soundblaster-AWE.html#toc3">Contents</A>
<HR>
<H2><A NAME="s3">3. How to install SB AWE sound support</A></H2>
<P>
<P>
<H2><A NAME="ss3.1">3.1 Things you will need</A>
</H2>
<P>
<P>These are the requirements for SB AWE support under Linux:
<P>
<UL>
<LI>a functional Linux system (e.g. the Debian GNU/Linux distribution),</LI>
<LI>a SB AWE 32 or compatible card (e.g. SB32, SB32 PnP, SB AWE64, ...),</LI>
<LI>the sources of the Linux kernel, including the sound driver OSS/Free
(normally included, check in <CODE>/usr/src/Linux/drivers/sound/Readme</CODE>),</LI>
<LI>the AWE 32 sound driver extensions.</LI>
</UL>
<P>If you have a PnP card, you will also need:
<P>
<UL>
<LI>the isapnptools software package. </LI>
</UL>
<P>Look in section
<A HREF="Soundblaster-AWE-6.html#sources">Sources</A> for information where you
can obtain these programs.
<P>If you have a Debian GNU/Linux system, this means that you will need
the packages <CODE>kernel-source-&lt;version&gt;</CODE>, <CODE>awe-drv</CODE>
and perhaps the package <CODE>isapnptools</CODE>.
You will want some of the other <CODE>awe-*</CODE> packages
although they are not essential. I strongly recommend the
<CODE>kernel-package</CODE> for easy kernel compiling and installing.
<P>
<P>
<H2><A NAME="isapnp"></A> <A NAME="ss3.2">3.2 Getting started</A>
</H2>
<P>
<P>Let's assume you have properly installed your card in a socket on your
motherboard and perhaps already tested it under a DOS or Windows environment.
<P>The next step is to initialize the card at boot time if and only if it is a
PnP card. Follow the documentation in the source package to compile and
install <CODE>isapnptools</CODE> (or just use the Debian binary package), and make a
<P>
<BLOCKQUOTE><CODE>
<PRE>
# pnpdump > /etc/isapnp.conf
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>as root. This will generate a hopefully proper configuration file for your
PnP cards, but with all devices commented out. Please edit this file
carefully, and compare the values for DMA channels, IO bases and interrupts
with the configuration of the cards under an DOS or Window environment if
possible (with Win95, look at the resources used by the card under
<CODE>resources</CODE> in the <CODE>device manager</CODE>). If you have problems,
read the documentation that ships with the <CODE>isapnptools</CODE> carefully.
<P><EM>CAUTION:</EM> <CODE>isapnptools</CODE> often fails to detect all three I/O ports
of the SB AWE Wave Table device. Please check carefully the <CODE>WaveTable</CODE>
entry in your <CODE>isapnp.conf</CODE> against the example at the end of this HOWTO.
Adjust the I/O base addresses if necessary.
<P>
<P><EM>CAUTION:</EM> According to the <CODE>isapnp-faq</CODE>, sometimes <CODE>isapnp</CODE>
fails to program the number of the logical device. If you encounter error
messages like the following:
<P>
<BLOCKQUOTE><CODE>
<PRE>
Error occurred executing request 'LD 2' on or around line...
</PRE>
</CODE></BLOCKQUOTE>
<P>then try adding <CODE>(VERIFYLD N)</CODE> at the top of <CODE>isapnp.conf</CODE>. You have
to use at least version 1.10 for this to work. If you can't use version 1.10
or newer, you can also POKE the logical device numbers directly. Please
refer to the <CODE>isapnp-faq</CODE> for more information on this approach. If it
doesn't work for you, please contact me (and the <CODE>isapnp</CODE> people
will be interested, too, I would think).
<P><EM>CAUTION:</EM> Make sure that the last line is <CODE>(WAITFORKEY)</CODE>,
that will sometimes be omitted by older versions of <CODE>pnpdump</CODE>.
<P>A sample <CODE>isapnp.conf</CODE> for only one PnP card (the sound card) can be found at
the end of the document (see section
<A HREF="Soundblaster-AWE-6.html#isapnpconf">Sample &lt;tt>isapnp.conf&lt;/tt></A>).
<P>If you have a Debian system, no further adjustments are necessary.
<CODE>isapnp</CODE> will be started at boot time in <CODE>/etc/init.d/boot</CODE> with
this snippet of script code, that you may want to include in your boot scripts:
<HR>
<PRE>
# Configure the isa plug and play boards before loading
# modules. Need to do this before loading modules to get
# a chance of configuring and starting PnP boards before
# the drivers mess all this up.
#
if [ -x /etc/init.d/isapnp ]
then
/etc/init.d/isapnp start
fi
</PRE>
<HR>
where <CODE>/etc/init.d/isapnp</CODE> is
<HR>
<PRE>
#! /bin/sh
# /etc/init.d/isapnp: configure Plug and Play boards
test -x /sbin/isapnp || exit 0
/sbin/isapnp /etc/isapnp.conf
exit 0
</PRE>
<HR>
<P>If you have another Linux distribution, you are on your own. I don't know
what to do (anybody willing to submit more specific information?). Just make
sure that isapnp gets started <EM>before</EM> the modules will be loaded (see
below).
<P>
<P>
<H2><A NAME="ss3.3">3.3 Compiling the kernel</A>
</H2>
<P>
<P>Before recompiling the kernel, you have to apply the AWE Driver Extension to
the sound driver. Even if your kernel source tree already includes the
<CODE>awedrv</CODE> extension (check <CODE>/drivers/sound/lowlevel/</CODE> for that), you
may want to upgrade the <CODE>awedrv</CODE> software. Follow the installation
instructions in the <CODE>awedrv</CODE> source directory. In brief, you have to run
an installation script that applies the patches to the kernel sources.
<P>Be careful if you have upgraded the kernel source tree after running the
install script. The script just checks if a certain file exists - if it
exists, it does not apply the necessary patch. You are well advised to
remove the file <CODE>drivers/sound/lowlevel/awe_wav.c</CODE> before running the
script after upgrading the kernel source.
<P>Next you have to configure the kernel for sound support. I hope you know a
bit about kernel compiling; see the Sound HOWTO and the Kernel HOWTO for
details. Go in the source directory of your kernel sources
(<CODE>/usr/src/linux</CODE> for example), and do
<P>
<BLOCKQUOTE><CODE>
<PRE>
# make config
</PRE>
</CODE></BLOCKQUOTE>
<P>or <CODE>make menuconfig</CODE> or <CODE>make xconfig</CODE>. Then you have to
configure your kernel in the standard way. Use this opportunity to make
a small and powerful kernel, especially designed for your system. Be sure
to answer <CODE>Enable loadable module support</CODE> with <CODE>Y</CODE>, if you want to
install the sound driver as a loadable module (a <EM>must</EM> if you
have a PnP card), but I'm sure you want to do it anyway.
<P>At one point, you will be asked if you want sound card support. You are free
to answer with <CODE>Y</CODE> or with <CODE>M</CODE> if you have <EM>not</EM> a PnP card.
You <EM>must</EM> answer with <CODE>M</CODE>, for module, if you have a PnP card.
You have to compile sound card support as a module if you have a PnP
card because the PnP card has to be initialized before the module gets loaded.
<P>The following questions you should answer with <CODE>Y</CODE>, all other with
<CODE>N</CODE>:
<P>
<HR>
<PRE>
Sound Blaster (SB, SBPro, SB16, clones) support (CONFIG_SB) [Y/n/?]
Generic OPL2/OPL3 FM synthesizer support (CONFIG_ADLIB) [Y/n/?]
/dev/dsp and /dev/audio support (CONFIG_AUDIO) [Y/n/?]
MIDI interface support (CONFIG_MIDI) [Y/n/?]
FM synthesizer (YM3812/OPL-3) support (CONFIG_YM3812) [Y/n/?]
lowlevel sound driver support [Y/n/?]
AWE32 support (CONFIG_AWE32_SYNTH) [Y/n/?]
</PRE>
<HR>
<P>Only the latter is actually for the Wave Table synthesis. The others are SB 16
options from the OSS/Free sound driver.
<P>In addition, you have to configure the sound card I/O port. Look at the
<CODE>isapnp.conf</CODE> file for hints, if you have one. For me, the following default
values are sufficient. Note that the default value from the kernel
configuration script may be wrong (especially the values <CODE>SBC_IRQ</CODE> and
<CODE>SB_MPU_BASE</CODE> seem to be incorrect for most cards).
<P>
<HR>
<PRE>
I/O base for SB Check from manual of the card (SBC_BASE) [220]
Sound Blaster IRQ Check from manual of the card (SBC_IRQ) [5]
Sound Blaster DMA 0, 1 or 3 (SBC_DMA) [1]
Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 or 7
(use 1 for 8 bit cards) (SB_DMA2) [5]
MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of the card
(SB_MPU_BASE) [330]
SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (SB_MPU_IRQ) [-1]
</PRE>
<HR>
<P>Now recompile the kernel. Debian users should use the
<CODE>kernel-package</CODE>. This package makes the kernel compile as easy as
installing a debian package. Look at the documentation in
<CODE>/usr/doc/kernel-package/</CODE>. Here is a hint:
<P>
<BLOCKQUOTE><CODE>
<PRE>
# make-kpkg clean
# make-kpkg -revision custom.1.0 kernel_image
</PRE>
</CODE></BLOCKQUOTE>
<P>and then <CODE>dpkg -i /usr/src/kernel-image-2.0.29_custom.1.0_i386.deb</CODE>.
<P>If you have another Linux distribution, follow the standard way for
compiling a new kernel. Don't forget <CODE>make modules</CODE> and <CODE>make
modules_install</CODE>. Look at the Sound HOWTO and perhaps the Kernel HOWTO
for more information.
<P>
<P>
<H2><A NAME="ss3.4">3.4 Reboot</A>
</H2>
<P>
<P>After installing the new kernel, you should do a reboot (be sure to have a
functional boot disk at hand). Cross you fingers.
<P>If you have a PnP card be sure to launch isapnp either in a boot script (as
described above) or manually:
<P>
<BLOCKQUOTE><CODE>
<PRE>
# /sbin/isapnp /etc/isapnp.conf
Board 1 has Identity 74 00 00 e3 10 48 00 8c 0e: CTL0048 Serial No 58128
[checksum 74]
</PRE>
</CODE></BLOCKQUOTE>
<P>Now you can install the sound driver, if you have compiled it as a module:
<P>
<BLOCKQUOTE><CODE>
<PRE>
# modprobe -a sound
AWE32 Sound Driver v0.3.3e (DRAM 2048k)
</PRE>
</CODE></BLOCKQUOTE>
<P>If you think the memory detection was not correct (I have a report of one
who has a AWE64 with 4096k, and ``detected'' have been 28672k), try either
to upgrade the <CODE>awedrv</CODE> software or to specify the amount of memory in the file
<CODE>/usr/src/linux/drivers/sound/lowlevel/awe_config.h</CODE>, for example:
<P>
<BLOCKQUOTE><CODE>
<PRE>
#define AWE_DEFAULT_MEM_SIZE 4096 /* kbytes */
</PRE>
</CODE></BLOCKQUOTE>
<P>Sorry, you have to recompile the kernel then (perhaps compiling the modules
will be sufficient, but I don't know for sure).
<P>If it works, you may want to have the sound module loaded automatically.
You can use <CODE>kerneld</CODE> (why this is a bad idea is explained in section 1.4) or
append a single line containing <CODE>sound</CODE> to your <CODE>/etc/modules</CODE> (in Debian)
or add <CODE>/sbin/modprobe -a sound</CODE> to your start-up script.
<P>
<HR>
<A HREF="Soundblaster-AWE-4.html">Next</A>
<A HREF="Soundblaster-AWE-2.html">Previous</A>
<A HREF="Soundblaster-AWE.html#toc3">Contents</A>
</BODY>
</HTML>