253 lines
8.1 KiB
Text
253 lines
8.1 KiB
Text
Sound Driver version 2.4 for Linux
|
|
----------------------------------
|
|
|
|
NOTE! The sound driver is now a part of the Linux kernel distribution.
|
|
Check that your kernel doesn't have more recent version than this
|
|
when installing a separately distributed sound driver. The
|
|
version number of this driver is defined in the makefile.
|
|
|
|
Installation
|
|
------------
|
|
|
|
- Since this driver is a part of the Linux kernel distribution, no
|
|
special steps are required to build the driver itself.
|
|
|
|
- In case you are installing a separately distributed sound driver,
|
|
you have to do some additional steps.
|
|
- Remove all files from the linux/drivers/sound. Old files could
|
|
sometimes cause trouble.
|
|
- cd linux/drivers.
|
|
- gunzip -c snd-driv-X.Y.tar.gz|tar xvf -
|
|
- cd ./sound
|
|
- cp soundcard.h ultrasound.h /usr/include/linux
|
|
|
|
- To build the device files for this driver, you need to run the enclosed
|
|
shell script (at the end of this file).
|
|
|
|
- Create /usr/include/sys/soundcard.h whic contains just a line:
|
|
#include <linux/soundcard.h>
|
|
|
|
- Create /usr/include/sys/ultrasound.h whic contains just a line:
|
|
#include <linux/ultrasound.h>
|
|
|
|
Boot time configuration (using lilo)
|
|
------------------------------------
|
|
|
|
This version of the sound driver has capability to accept the configuration
|
|
parameters from the boot loader (for example lilo). By default the
|
|
driver is booted using the parameters given before compiling the driver
|
|
('make config' or 'make soundconf'). If the kernel is booted using lilo and
|
|
the boot command is given manually, it's possible to give the configuration
|
|
parameters on the command line. Just hold down the <Alt> key when lilo
|
|
starts. Then give the boot command manually and append a sound= argument
|
|
to the boot command line. For example:
|
|
|
|
lilo boot: linux sound=0x222071,0x138800
|
|
|
|
The sound= argument could contain several configuration entries separated by a
|
|
comma. Each option gives the configuration for one sound device.
|
|
Give the options in the order given below. Other order of use is undefined.
|
|
Each option is encoded as the following:
|
|
|
|
0xTaaaId, where
|
|
|| ||
|
|
|| |+---- d = DMA channel (0, 1, 3, 5, 6 or 7)
|
|
|| +----- I = IRQ (HEXADECIMAL!!! 1=1, ..., 9=9, 10=a, ..., 15=f)
|
|
|+-------- aaa = I/O address (hexadecimal)
|
|
+---------- T = device type 1=FM Synth (YM3812 or OPL3)
|
|
2=SoundBlaster (1.0 to 2.0, Pro, 16)
|
|
3=ProAudioSpectrum16
|
|
4=Gravis UltraSound
|
|
5=MPU-401 UART midi
|
|
6=SB16 (16 bit DMA number)
|
|
7=SB16 Midi (MPU-401 emulation)
|
|
|
|
These are the configuration templates for various soundcards:
|
|
|
|
0) Disable the sound driver
|
|
|
|
sound=0
|
|
|
|
1) AdLib
|
|
|
|
sound=0x138800
|
|
|
|
2) SoundBlaster family and compatibles
|
|
|
|
sound=0x2220Id,0x138800 (remember to set the IRQ and DMA)
|
|
or if you have SB16 or SB16ASP, you have to use the following:
|
|
(use the same IRQ (the I colums) in all three places. The
|
|
the D is the 16 bit DMA channel (5 to 7) and the d is
|
|
the 8 bit one (1 or 3). The X is the 2nd digit of the
|
|
midi IO address (3 or 0)).
|
|
sound=0x2220Id,0x6220ID,0x73X0I0,0x138800
|
|
|
|
3) ProAudioSpectrum16, ProAudioStudio16, Logitech Soundman16 etc.
|
|
|
|
sound=0x3388Id,0x2220Id,0x138800 (set the DMAs and IRQs)
|
|
|
|
4) Gravis UltraSound
|
|
|
|
sound=0x42X0Id (X is 1, 2, 3 or 4. Set the DMA and IRQ)
|
|
|
|
5) MPU-401
|
|
|
|
sound=0x5aaaI0
|
|
|
|
If you have more than one soundcards, you have to concatenate the options
|
|
for each of the cards. There cannot be more than one sound= argument in the
|
|
command line. For example use "sound=0x5aaaI0,0x138800" if you have AdLib
|
|
and MPU-401 on your system.
|
|
If there are two or more sound= arguments
|
|
in the boot command line, just the last one takes effect. The earlier ones
|
|
will be ignored silently.
|
|
|
|
The boot time configuration feature is intended mainly for distributors of
|
|
precompiled kernels. When this feature is used, drivers for all of the
|
|
cards have to be enabled before compiling the driver. The configurator program
|
|
doesn't enable MPU-401 when the full driver option is selected. It must be
|
|
enabled by uncommenting "#define EXCLUDE_MPU401" in the sound/local.h.
|
|
|
|
Important note!
|
|
|
|
The sound driver is enabled by default. If the kernel is booted without
|
|
using the sound=0 option, the sound driver is initialized using the compile
|
|
time parameters. This could be dangerous (specially if the MPU-401 driver
|
|
is enabled with I/O address 0x330 (used by AHA-1542 also)). If you want to
|
|
compile the driver to be inactive by default, you have to append a
|
|
#define SND_DEFAULT_ENABLE 0
|
|
to the sound/local.h before compiling the driver.
|
|
|
|
Remember to check that the sound setup routine is included in the
|
|
bootparams structure in linux/init/main.c. It should contain the following
|
|
lines:
|
|
|
|
#ifdef CONFIG_SOUND
|
|
{ "sound=", sound_setup },
|
|
#endif
|
|
|
|
In case these lines were not there, you have to insert them (the driver works
|
|
without them but it's not possible to give the boot time parameters for the
|
|
sound driver). Add also the following line somewhere near the beginning of
|
|
linux/init/main.c:
|
|
|
|
extern void sound_setup(char *str, int *ints);
|
|
|
|
Problems
|
|
--------
|
|
|
|
If you have any kind of problems, there is a debugging feature which
|
|
could help you to solve the problem. To use it, just execute the
|
|
command:
|
|
|
|
cat /dev/sndstat
|
|
|
|
and look at the output. It should display some usefull info about the
|
|
driver configuration. If there is no /dev/sndstat
|
|
(/dev/sndstat: No such file or directory), ensure that you have executed the
|
|
soundinstall script (at the end of this file). The message:
|
|
/dev/dsp: No such device means that you don't have the sound driver installed
|
|
on your kernel or the driver version is earlier than 1.99.6.
|
|
|
|
|
|
- /dev/???????: No such file or directory.
|
|
Run the script at the end of this file.
|
|
|
|
- /dev/???????: No such device.
|
|
You have not booted with a kernel containing the driver or the I/O address
|
|
configuration doesn't match your hardaware.
|
|
|
|
- The module player (str) plays just a second and then stops completely.
|
|
You have incorrect IRQ settings (usual with SB cards).
|
|
|
|
- There is pauses in the playback of the module player (str).
|
|
The str program requires more than 40% of the speed of a 486/50 to play
|
|
without pauses at 44 kHz speed. A 386/25 can hardly play faster than 22 kHz.
|
|
You should use lower speed (-s speed), buy a faster computer or a Gravis
|
|
UltraSound card. (If you already have GUS, you should use gmod and not the
|
|
str). If the DSP_BUFFSIZE in the sound/local.h is less than (nr_channels*
|
|
speed_in_Hz * (bits/8))/2, it could explain the pausing problem. Also check
|
|
that the turbo swich is on and don't run applications like weather forecasting
|
|
on background. Sometimes (very rarely) an IRQ conflict can cause similar
|
|
problems with SB cards.
|
|
If you want to play modules on a 386sx while recompiling the world, buy a GUS.
|
|
It runs without burning your CPU.
|
|
|
|
Hannu Savolainen
|
|
hsavolai@cs.helsinki.fi
|
|
|
|
----------------- cut here ------------------------------
|
|
#!/bin/sh
|
|
#
|
|
# soudinstall
|
|
#
|
|
# by Craig Metz - cmetz@thor.tjhsst.edu
|
|
#
|
|
# Create the devices
|
|
#
|
|
# Mixer (14, 0)
|
|
#
|
|
if [ -e /dev/mixer ]; then
|
|
rm -f /dev/mixer
|
|
fi
|
|
mknod -m 666 /dev/mixer c 14 0
|
|
|
|
if [ -e /dev/mixer1 ]; then
|
|
rm -f /dev/mixer1
|
|
fi
|
|
mknod -m 666 /dev/mixer1 c 14 16
|
|
#
|
|
# Sequencer (14, 1)
|
|
#
|
|
if [ -e /dev/sequencer ]; then
|
|
rm -f /dev/sequencer
|
|
fi
|
|
mknod -m 666 /dev/sequencer c 14 1
|
|
#
|
|
# MIDI (14, 2) [ Not implemented ]
|
|
#
|
|
if [ -e /dev/midi ]; then
|
|
rm -f /dev/midi
|
|
fi
|
|
mknod -m 666 /dev/midi c 14 2
|
|
#
|
|
# DSP (14, 3)
|
|
#
|
|
if [ -e /dev/dsp ]; then
|
|
rm -f /dev/dsp
|
|
fi
|
|
mknod -m 666 /dev/dsp c 14 3
|
|
#
|
|
# SPARC audio (14, 4) [ Not fully implemented ]
|
|
#
|
|
if [ -e /dev/audio ]; then
|
|
rm -f /dev/audio
|
|
fi
|
|
mknod -m 666 /dev/audio c 14 4
|
|
#
|
|
# DSP2 (14, 19) /dev/dsp for the second soundcard.
|
|
# Also the SB emulation part of the
|
|
# PAS16 card.
|
|
#
|
|
if [ -e /dev/dsp1 ]; then
|
|
rm -f /dev/dsp1
|
|
fi
|
|
mknod -m 666 /dev/dsp1 c 14 19
|
|
#
|
|
# SPARC audio1 (14, 20) [ Not fully implemented ]
|
|
# /dev/audio for the second soundcard.
|
|
# Also the SB emulation part of the
|
|
# PAS16 card.
|
|
#
|
|
if [ -e /dev/audio1 ]; then
|
|
rm -f /dev/audio1
|
|
fi
|
|
mknod -m 666 /dev/audio1 c 14 20
|
|
#
|
|
# /dev/sndstat (14,6) For debugging purposes
|
|
#
|
|
if [ -e /dev/sndstat ]; then
|
|
rm -f /dev/sndstat
|
|
fi
|
|
mknod -m 666 /dev/sndstat c 14 6
|
|
exit 0
|