Cómo configurar ALSA con núcleo 2.6.xx

Pequeña guía para configurar ALSA (Advanced Linux Sound Architecture) a partir de los fuentes.

Cualquier mejora, comentario o sugerencia es bienvenida: usa el formulario correspondiente.
Esta obra está bajo una licencia de Creative Commons.

Versión: 1.02

De 1.0 a 1.01: incluída apreciación de ./configure --help (por trompa). Arreglado pequeño problema con dobles guiones.

De 1.01 a 1.02: añadida solución para poder escuchar sonidos de diferentes fuentes de manera simultánea. Incorporado comentario acerca del correcto uso de la filosofía de usuarios y grupos.

Fecha: 31 Julio 2004


Sumario


Introducción

ALSA (Advanced Linux Sound Architecture) viene por defecto en todos los núcleos de la rama 2.6 y está llamado a sustituir a OSS (Open Sound System). No es el objetivo de este documento discutir el porqué del cambio ni los beneficios o las desventajas. Para más información, consultad las páginas del proyecto ALSA.

El presente documento es una guía para instalar los drivers de sonido ALSA. La configuración del autor del mismo (y por tanto los ejemplos), corresponden a un DELL Inspiron 8600 (Multimedia audio controller: Intel Corp. 82801DB (ICH4) AC'97 Audio Controller (rev 01) -> módulo snd-intel8x0) donde está instalada una FC1 con núcleo 2.6.5 y ALSA 1.0.4.  Por supuesto, se trata de una recopilación de la información que me ha servido para instalar satisfactoriamente ALSA en mi equipo, básandome, de manera primordial, en la información que aparece en Installing ALSA from source.

Los drivers y diferentes utilidades referentes a ALSA se pueden encontrar en paquetes binarios ya compilados. Como no tenemos control alguno sobre esos paquetes, la presente guía versará se basará en los fuentes procedentes del proyecto ALSA. Para más información sobre binarios precompilados:


Requisitos

Partimos de que nuestro sistema se soporta sobre un núcleo de la rama 2.6 y no tenemos mayores problemas salvo el sonido, que o bien no funciona, o bien queremos actualizarlo. Para ver qué versión de los drivers tenemos instalados:

% cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.4.
Compiled on Apr 24 2004 for kernel 2.6.5.

Nuestra tarjeta de sonido está soportada por ALSA. Se puede chequear en ALSA Soundcard Matrix. Para ver la información de hardware de nuestro equipo, consultad /proc/asound/. En mi caso particular:

 % cat /proc/asound/cards
0 [I82801DBICH4   ]: ICH - Intel 82801DB-ICH4
                     Intel 82801DB-ICH4 at 0xf4fff800, irq 11

NOTA: en caso de que aparezcan varias tarjetas detectadas y eso cree conflictos, sólo las que tengan asignadas una IRQ serán físicamene las tarjetas de audio.


Posibilidades

Para la instalación básica, que es la que cubre esta guía, necesitaremos 3 paquetes: alsa-driver, alsa-libs y alsa-utils.

  1. Utilizar los drivers que vienen con el núcleo

    Esta opción es en principio la más cómoda, pero es la que puede traer mayor número de complicaciones debido a las diferentes versiones que pululan por ahí. El núcleo 2.6.5 trae la versión 1.0.2rc2 (creo recordar) y ya está disponible la 1.0.4, que no es que se lleven muy bien. Como bien remarcan en Updating ALSA Kernel drivers lo que viene en el núcleo es el paquete alsa-driver. Si el módulo soundcore está compilado con el núcleo, no es necesario recompilar:

    % /sbin/modinfo soundcore
    description:    Core sound module
    author:         Alan Cox
    license:        GPL
    alias:          char-major-14-*
    vermagic:       2.6.5 preempt PENTIUMM gcc-3.3
    depends:
  2. Utilizar unos actualizados de la sede del proyecto ALSA

    Es la opción más completa y la que más libertad proporciona. Básicamente se trata de compilar los drivers para el núcleo en el que estemos trabajando, de manera que éste sólo tiene la configuración mínima (pego la parte correspondiente de mi .config):

    # Sound
    #
    CONFIG_SOUND=m
    #
    # Advanced Linux Sound Architecture
    #
    # CONFIG_SND is not set
    #
    # Open Sound System
    #
    # CONFIG_SOUND_PRIME is not set

Proceso de instalación

En este apartado se seguirá la instalación de los citados paquetes, si bien NO hay que instalar el paquete alsa-driver si se van a utilizar los drivers que vienen con el núcleo.


Configuración y arranque

Una vez instalado el entramado de ALSA, hay que ajustar los ficheros de configuración para que estén acordes con nuestros dispositivos. En los núcleos de la rama 2.6, ya no se utiliza /etc/modules.conf sino /etc/modprobe.conf para cargar los módulos al arrancar la máquina. La configuración de los módulos que necesitan ser cargados para cada tarjeta se puede encontrar en ALSA Soundcard Matrix, así como otros parámetros dependientes de la tarjeta. Para la mía en concreto, la configuración es:

# ALSA portion
        alias char-major-116 snd
        alias snd-card-0 snd-intel8x0
        # 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

Nota para los debianitas: esta información debe guardarse en /etc/modprobe.d/ (/etc/modprobe.d/alsa por ejemplo) y ejecutar update-modules

Nota para usuarios de RedHat y similares: existe una utilidad llamada alsaconf (/usr/sbin/alsaconf) que permite detectar la tarjeta de manera automática y que actualiza el fichero /etc/modprobe.conf.

Parece que ya está todo bien configurado, así que se trata de escuchar algo por los altavoces. La correcta instalación habrá creado el fichero /etc/init.d/alsasound (si no, bastará con copiarlo desde /usr/src/alsa/alsa-driver-XXX/utils y darle los permisos necesarios, chmod 755, como superusuario) que será el encargado de salvar y cargar la configuración que hayamos definido. Para que se ejecute cuando es debido, podemos recurrir a la utilidad chkconfig para que lo ejecute en los runlevels adecuados:

% /sbin/chkconfig --add alsasound

Para ver cómo ha quedado:

% /sbin/chkconfig --list alsasound

Ahora podemos optar bien por reiniciar la máquina, bien por arrancar el servicio en cuestión. Como dicen por ahí, lo de reiniciar no está hecho para usuarios/as de GNU/Linux, así que mejor arrancamos el servidor nosotros/as mismos/as:

% /etc/init.d/alsasound start

Para empezar a usar la tarjeta, deberemos desenmudecer los canales que actualmente lo están. Para ello se cuenta con la utilidad alsamixer:

% alsamixer

Como mínimo deberemos ajustar los canales Master y PCM, además de los que sean pertinentes para la utilización de cada uno/a. Para poder grabar la configuración actual, existe el programa alsactl, que guarda y carga la configuración al apagar y encender el sistema respectivamente. Dicho programa es llamado por el script alsasound.

Para poder aprovechar al máximo las posibilidades de nuestro hardware, echad un vistazo a la página sobre asoundrc, donde se explica cómo modificar los ficheros de configuración correspondientes, localizados en $HOME/.asoundrc (para el usuario en particular) y /etc/asound.conf (de manera general).


Problemas y soluciones

Primero conviene mirar la última información disponible tanto en la FAQ del proyecto Alsa, como en las AlsaTips. Además, es bueno trabajar con la última versión estable disponible.

A continuación se presenta una lista con problemas típicos:


Enlaces recomendados

Sobre ALSA:

Sobre la migración a la rama 2.6 del núcleo:


Creative Commons License
Esta obra está bajo una licencia de Creative Commons.