Installation Instructions for Creative EMU10K1 drivers (v0.19a)
English v1.5 (August 2002)
-------------------------------------------------------------

Card support
------------
- Creative Sound Blaster Live! (all models)
- Creative Sound Blaster PCI 512
- Creative Audigy

Features
--------
- Open Sound System (OSS) compatible
- Full duplex wave playback/recording functionality (/dev/dsp and /dev/dsp1)
- Simultaneous wave playback streams
- Analog mixer (AC97) support (/dev/mixer)
- MIDI UART support (/dev/midi)
- Joystick interface support (>= 2.2.x kernels only)
- Supports multiple EMU10K1-based cards
- AC3 passthrough
- Sequencer Support
- Multi-channel PCM

Features not (yet) supported
--------------------------

-Some OEM cards share a common jack for analog and digital output only work
 in analog mode (these are common in Gateway machines).
-No midi synth/soundfont support


For a full list, see the the TODO document in this directory.

Note:
The 'mp3+' card does not do hardware mp3 decoding (yes, not even under windows,
if you feal you were misslead, you are encouraged to complain to Creative's 
Customer Support), the only difference between it and the 'gamer' is the
software bundle.


Requirements
------------
- The kernel must be compiled:
  - With loadable modules support		(CONFIG_MODULES = y)
  - With soundcard support			(CONFIG_SOUND = y/m)
  - Without any integrated emu10k1 soundcard drivers	(CONFIG_SOUND_EMU10K1 = m/n)
- "PnP-compatible OS installed" option in BIOS must be disabled
- Recommended system configuration: Min. 100 MHz Pentium-class w/ 32 MB RAM
- Kernel headers matching the kernel for which you are compiling the 
  driver.

- For sequencer support, sound.o is required	(CONFIG_SOUND_OSS= y/m)


Configuring
-----------
You should already be running the kernel for each you are compiling the driver
at this point. Then you just need to type "make" in the main directory.
The KERNEL_VERSION printed in the last message should match the kernel
you want to compile the driver for, if not:

1. Using your own kernel sources (preferred)
  Make sure you have configured your kernel sources ("make oldconfig/config/menuconfig")
  and created the dependecies files ("make dep").

2. Using RedHat distribution kernel sources.
  Copy/link one of the config files in linux/configs/*.config
  to linux/.config. The file should match your running kernel.

3. Using other distribution kernel sources.
   Try point 2 above.

Compilation
-----------
To compile the driver, simply type "make" a second time in the main
directory. This will generate the files "emu10k1.o"
and "ac97_codec.o" (and "emu10k1-joy.o" for 2.2 kernels).


Installation
------------
1. As root type:

	make install

2. Add a new reference to the driver in /etc/modules.conf:

	alias sound emu10k1

3. Play some sound. The module should be auto-loaded.

Note for Debians' users: use /etc/modutils directory,
   create file emu10k1 here with the same content as is suggested in
   the paragraph (5.) and run update-modules afterwards - this
   will create the correct /etc/modules.conf file)

Configuration
-------------

The driver may need to be configured apropriately for your card/speaker combo.
The driver should work out-of-the-box for most situations unless the following 
apply:

-You want bass/treble control
-You have a '5.1' card _with_ digital speakers
-You want to use AC3 Passthrough
-You want to use the 3rd analog output on your '5.1' card.
-You're the type of person who likes to learn and customize things.
-You want to enable an input on your Livedrive or digital add-on card

If none of the above apply to you then you're done, enjoy!

else,

The card is configured using a set of user tools. To configure and install the
tools, type "make tools" followed by (as root) "make install-tools". This
will compile and install the following tools (and their man pages):

emu-dspmgr - A tool for configuring the cards dsp patch management system
             (e.g for loading "effects", or routing an input to an output)

emu-config - A tool for configuring the card (e.g. toggling the analog/digital
             output, selecting recording modes, etc)

as10k1     - A dsp code assembler for the emu10k1 processor (for development
             only)

Also, several ".bin" dsp patches will be installed in /usr/local/share/emu10k1/
you can load these patches using emu-dspmgr. For more information on using the
above tools, see the man pages.


If you don't wan't to bother to learn how to use the above tools, you are
encouraged to try out "emu-script" included in the source tree in utils/mixer/.
By setting a few variables at the top of the script, when run, it will set up
the card properly for your chosen setup. The script can be run automatically at
module load by inserting the following line in your /etc/modules.conf:

post-install emu10k1 /usr/local/etc/emu-script

Then be sure to copy the script to the path mentioned in that line.


Sequencer support
-----------------

1. For sequencer support sound.o is required, set CONFIG_SOUND_OSS = y/m in
your kernel configuration. and re-compile/install the modules.

2. In the main emu10k1 source directory in the "config" file, set:
SEQUENCER_SUPPORT := y

3. Recompile and install the driver, you should now have sequencer support


Joystick support (only for 2.2 kernels)
---------------------------------------
1. Enable the emu10k1 joystick port:

	insmod emu10k1-joy

2. Load the base joystick driver:

	insmod joystick

3. Load the specific joystick driver passing the joystick io port in
   the module options:

	insmod joy-analog js_an=io_port,xx (If you are using an analog joystick)

   You can check the io port value using:

	cat /proc/ioports

   And looking for the line with "emu10k1 joystick".


If the specific joystick driver doesn't let you specify alternative io ports:
1. Enable the emu10k1 joystick port and mirror it at a standard location:

	insmod emu10k1-joy io=0x200

   Possible values are 0x200, 0x208, 0x210, 0x218. If you have several emu10k1
   cards you can pass several options to the module:

	insmod emu10k1-joy io=0x200, 0x210, ...

2. Load base joystick driver:

	insmod joystick

3. Load specific joystick driver:

	insmod joy-analog


Read /usr/src/linux/Documentation/joystick.txt for more info.

*** Note: You should not use this module with 2.4 kernels. ***
Look for joystick support in the kernel configuration menus.
