ALSA Title
[Download] | [SoundCards] | [Applications] | [Documentation] | [Mailing-lists] | [Links]
[Bug reporting/feature requests] | [ALSA Dev Wiki]
VIA    .
Contents:

The module options for snd-

Introduction
Quick Install
Setting up modprobe and kmod support
A short explanation of what happens in the /etc/modules.conf file
The .asoundrc file

Links
User contributed notes

Known bugs

the following workaround is necessary on some cards/chips, which
support only 16bit samples.

you need to set the operation mode by writing a configuration
onto /proc/asound/card0/pcm0p/oss, i.e.

	# echo "wine 0 0 direct" > /proc/asound/card0/pcm0p/oss


The module options for snd-

  • description: "Midlevel PCM code for ALSA."
  • author: "Jaroslav Kysela , Abramo Bagnara "
  • license: "GPL"
  • parm: preallocate_dma int, description "Preallocate DMA memory when the PCM devices are initialized."
  • parm: maximum_substreams int, description "Maximum substreams with preallocated DMA memory."
  • Introduction

    There are two ways of getting Linux drivers to work, you can either compile them into the kernel or build them separately as modules. Read the Kernel-HOWTO for details of how to compile a kernel.

    You must turn on the sound support soundcore module. This is in the kernel. Look in the sound drivers directory and it should be the first option. Most people enable the module setting. That way you can load and unload the module manually if you have multiple soundcards/devices or if you intend to debug or use cutting edge software which may cause your drivers to halt sometimes. Of course it also means you have more control of your system.

    Most modern distros come with soundcore compiled as a module. You can check this in numerous ways. The easiest way is to type.

            modinfo soundcore
    
    If this command returns that you have this module, then you don't need to recompile your kernel.

    Quick Install

    NB. If you are using cvs then you need to type

             ./cvscompile "or" make build
    
    instead of
             ./configure
    
    In a shell type these commands:

    Make a directory to store the alsa source code in.

            cd /usr/src
            mkdir alsa
            cd alsa
            cp /downloads/alsa-* .
    
    Now unzip and install the alsa-driver package

            bunzip2 alsa-driver-xxx
            tar -xf alsa-driver-xxx
            cd alsa-driver-xxx
            ./configure --with-cards= --with-sequencer=yes;make;make install
    
    NB. If you are using drivers before 0.9.4 then you need to run
     	./snddevices
    
    If you use devfs then you should not run the snddevices script

    The snddevices script sets the permissions for the devices it creates to root. You should

    	chmod a+rw /dev/dsp /dev/mixer /dev/sequencer /dev/midi 
    Now unzip and install the alsa-lib package

            cd ..
            bunzip2 alsa-lib-xxx
            tar -xf alsa-lib-xxx
            cd alsa-lib-xxx
            ./configure;make;make install
    
    Now unzip and install the alsa-utils package

            cd ..
            bunzip2 alsa-utils-xxx
            tar -xf alsa-utils-xxx
            cd alsa-utils-xxx
            ./configure;make;make install
    
    Now insert the modules into the kernel.

     modprobe snd-;modprobe snd-pcm-oss;modprobe snd-mixer-oss;modprobe snd-seq-oss
    
    NB. For drivers older than 0.9.0beta11 use:
    	modprobe snd-card-
    Now adjust your soundcards volume levels. All mixer channels are muted by default. You must use a native mixer program to unmute appropriate channels, for example alsamixer from the alsa-utils package. Note that some usb-audio devices do not have internal mixer controls.

            alsamixer
    
    You can also look at the utils/alsasound file. This script is designed for the RedHat distribution, but it can be used with other distributions which use System V style rc init scripts. This will allow you to load your modules at boot time. If you want to do this you could just compile them into the kernel instead and save yourself the hassle of coming to terms with the rc init scripts.

    Setting up modprobe and kmod support

    Before you send a mail complaining that "I don't have /etc/modules.conf, where do I find it ....." ,The /etc/conf.modules has been deprecated with a few distro's so in your case, it may still be /etc/conf.modules. Basically they are both the same, but recent version of modutils uses /etc/modules.conf instead. Nothing to worry about as such, optionally please update to latest version of modutils. This should solve your problem.

    Here's the example for this card. Copy and paste this to the bottom of your /etc/modules.conf file.

    Note to debian users: You need to save this information into a file in the /etc/modutils/ directory (Eg. /etc/modutils/alsa) and run update-modules

            # ALSA portion
            alias char-major-116 snd
            alias snd-card-0 snd-
    	# module options should go here
    
            # OSS/Free portion
            alias char-major-14 soundcore
            alias sound-slot-0 snd-card-0
    	
    	# card #1
    	alias sound-service-0-0 snd-mixer-oss
    	alias sound-service-0-1 snd-seq-oss
    	alias sound-service-0-3 snd-pcm-oss
    	alias sound-service-0-8 snd-seq-oss
    	alias sound-service-0-12 snd-pcm-oss
      
    
    NB. For drivers older than 0.9.0beta11 use:
    	snd-card-
    To copy and paste the above to your /etc/modules.conf file follow these instructions.

    A short explanation of what happens in the /etc/modules.conf file

    Native Devices

    After the main multiplexer is loaded, its code requests top level sound card module. String snd-card-%i is requested for native devices where %i is sound card number from zero to seven. String sound-slot-%i is requested for native devices where %i is slot number for ALSA owner this means sound card number. The options line allows you to set various config options before the module is loaded. String snd_id lets you set the name of the card which is returned in the /proc/asound/cards file. Other options may be available which are card specific. The options for these are found in the INSTALL file or above.

            xyz@localhost#pico /etc/modules.conf
    
            # ALSA portion
            alias snd-card-0 snd-interwave
            alias snd-card-1 snd-cmipci
    	options snd-cmipci id="first" mpu_port=0x330
    	
            # OSS/Free portion
            alias sound-slot-0 snd-card-0
            alias sound-slot-1 snd-card-1
    	
    
    NB. For drivers older than 0.9.0rc5 use:
    	options snd-cmipci snd_id="first" snd_mpu_port=0x330
    The "snd_" prefix has been removed from the "module options" to fit with the kernel standard.

    Autoloading OSS/free emulation

    We are finished at this point with the configuration for ALSA native devices, but you may also need autoloading for ALSA add-on OSS/Free emulation modules. At this time only one module does not depend on any others, thus must be loaded separately, snd-pcm1-oss.o. String sound-service-%i-%i is requested for OSS/Free service where first %i means slot number e.g. card number and second %i means service number.

            xyz@localhost#pico
            /etc/modules.conf
    
            # OSS/Free portion - card #1
     	alias sound-slot-0 snd-card-0
     	alias sound-service-0-0 snd-mixer-oss
     	alias sound-service-0-1 snd-seq-oss
     	alias sound-service-0-3 snd-pcm-oss
     	alias sound-service-0-8 snd-seq-oss
     	alias sound-service-0-12 snd-pcm-oss
    	
            # OSS/Free portion - card #2 (cmipci)
    	alias sound-slot-1  snd-card-1 
     	alias sound-service-1-0 snd-mixer-oss
    	alias sound-service-1-3 snd-pcm-oss
    	alias sound-service-1-12 snd-pcm-oss
    
    The alias for snd-seq-oss is not necessary on the second device, because there is only one /dev/sequencer, regardless how many devices you have.

    The .asoundrc file

    Find out more about this file here.

    This file allows the you to have more advanced control over your card/device. Some very useful applications will not work without it. The .asoundrc file consists of definitions of the various cards available in your system. It also gives you access to the pcm plugins in alsa-lib. These allow you to do tricky things like combine your cards into one or access multiple i/o's on your mulitchannel card.

    Below is the most basic definition.

    Make a file called .asoundrc in your home and/or root directory.

            vi /home/xxx/.asoundrc
    
    copy and paste the following into the file then save it.
            pcm. {
               type hw
               card 0
            }
    
            ctl. {
               type hw
               card 0
            }
    

    Links

    Become an active member of the Linux Audio Community at Linux Audio Developers or Linux Audio Users
    Learn about how to use applications that support ALSA. The Linux Audio Users Guide
    Keep up to date with the news at M-Station or Open Audio Projects
    The most current book about Linux audio is Linux Music and Sound
    Find more applications at Sound & MIDI Software For Linux

    For professional quality, low latency audio routing use JACK - The Jack Audio Connection Kit

    Notes:

    Example:
  • Alternative .asoundrc and modules.conf files
  • Tricks for getting the most out of the card.

  • There are no additions for this module. Feel free to add your mark.


    Copyright © 2007 by
    Advanced Linux Sound Architecture
    Valid XHTML 1.0 Transitional | Valid CSS