Anterior Siguiente Indice

4. Instalación.

Configurar Linux para que soporte sonido implica los siguientes pasos:

  1. Instalar la tarjeta de sonido.
  2. Configurar y construir el núcleo para que soporte sonido.
  3. Crear los ficheros de dispositivo.
  4. Bootear el núcleo Linux y comprobar la instalación.

La siguiente sección cubre cada uno de estos pasos en detalle.

4.1 Instalar la tarjeta de sonido.

Sigue las instrucciones del fabricante para instalar el hardware o encárgaselo a tu vendedor.

4.2 Configurar el núcleo.

Cuando inicialmente instalas Linux, estás usando el núcleo precompilado. estos núcleos generalmente no soportan sonido. Lo mejor es recompilar el núcleo con los drivers que necesites. También puedes queres recompilar el núcleo para actualizar hacia una nueva versión o para liberar recursos de memoria minimizando el tamaño del mismo.

El Linux Kernel HOWTO Linux Kernel HOWTO puede ser consultado para más detalles en la construcción del núcleo. Sólo mencionaré los aspectos que son específicos a las tarjetas de sonido.

Si nunca has configurado el núcleo para soporte de sonido, es una buena idea leer todos los ficheros Readme incluidos con los drivers de sonido del núcleo, particularmente aquellos que se refieren a tu tipo de tarjeta. Los siguientes ficheros de documentación se pueden encontrar en el directorio de sonido del núcleo, generalmente instalado en /usr/src/linux/drivers/sound:

CHANGELOG - Descripción de los cambios en cada versión. COPYING - Restricciones de copia y copyright. Readme - Últimas y más importantes noticias. Readme.aedsp16 - Información sobre la tarjeta Audio Excel DSP 16. Readme.cards - Notas de configuración de tarjetas específicas. Readme.linux - Notas de instalación separada de drivers de sonido. Readme.modules - Cómo construir un driver como un módulo del núcleo cargable. Readme.v30 - Nuevas características de la versión 3.0 del driver de sonido. experimental.txt- Notas de características experimentales.

Sigue el procedimiento usual de construcción del núcleo. Hay tres formas de ejecutar el proceso de configuración. Un interfase gráfico de usuario que se ejecuta bajo X11 puede ser llamado usando make xconfig. Un sistema basado en menús que sólo requiere un display de texto está disponible como make menuconfig. Yo asumiré que usas el proceso tradicional de configuración de línea de comando usando la llamada make config, aunque el proceso es similar en cada caso.

También es posible construir el driver de sonido como un módulo cargable del núcleo. Yo recomiendo construir el driver dentro del núcleo. Una vez que está comprobado y que funciona tú puedes probar usando la opción de módulo del núcleo.

Cuando ejecutes make config, activa el soporte de sonido contestado "y" a la pregunta

      Sound card support (CONFIG_SOUND) [M/n/y/?]

Al final de las preguntas de configuración un programa de configuración de sonido será compilado, ejecutado y te preguntará qué opciones de sonido quieres. Ten cuidado cuando contestes a estas preguntas, ya que si contestas incorrectamente a alguna, repercutirá en preguntas posteriores. Por ejemplo, no contestes "yes" (sí) a la primera pregunta (PAS16) si realmente no tienes una PAS16. No actives más tarjetas de las que realmente tienes, ya que consumen memoria. Además algunos drivers (como el MPU401) pueden entrar en conflicto con el controlador SCSI e impedir la inicialización del núcleo.

Aquí listo una pequeña descripción de cada una de las opciones del diálogo de configuración. Contesta "y" (sí) o "n" (no) en cada pregunta. La respuesta por defecto es mostrada en primer lugar y en mayúsculas, de tal forma que "Y/n/? significa "y" (sí) por defecto, y "N/y/? significa "n" (no). Para usar el valor por defecto basta con pulsar return, pero hay que recordar que el valor por defecto no significa que sea necesariamente correcto.

Si introduces como respuesta una interrogación (?) saldrá un corto mensaje describiéndote esa opción de configuración.

Notar que no todas las preguntas serán respondidas. El programa de configuración desactivará algunas preguntas dependiendo de las anteriores respuestas. Además él también elegirá algunas opciones automáticamente.

      Old configuration exists in /etc/soundconf. Use it Y/n/?
Si previamente has compilado el núcleo para soporte de sonido entonces la configuración anterior se puede salvar. Si quieres usar el anterior set up contesta "y" (sí). Si estas intentando una configuración diferente o has actualizado un núcleo nuevo, debes contestar "n" (no) e ir a través del proceso de configuración.
      ProAudioSpectrum 16 support Y/n/?
Contesta "y" (sí) si tienes una Pro Audio Spectrum 16, Pro Audio Studio 16 o Logitech SoundMan 16. No contestes "y" (sí) si tienes otra tarjeta de Media Visión o Logitech desde que no son compatibles con PAS16.
      SoundBlaster support Y/n/?
Contesta "y" (sí) sólamente si tienes una SoundBlaster original de Creative Labs o una clónica 100% compatible a nivel hardware como por ejemplo una Thunderboard o una SM Games. Si tu tarjeta estaba en la lista de tarjetas soportadas busca las instrucciones específicas en el fichero Readme.cards antes de contestar a la pregunta. Para una tarjeta desconocida debes contestar "y" (sí) si la tarjeta presume de ser compatible con SoundBlaster.
      Gravis Ultrasound support Y/n/?
Contesta "y" (sí) si tienes una GUS o una GUS MAX. Contesta "n" (no) en caso contrario ya que el driver consume mucha memoria.
      MPU-401 support (NOT for SB16) Y/n/?
Ten cuidado con esta pregunta. El interfase MPU401 es soportado por casi todas las tarjetas de sonido, aunque algunas tarjetas tienen su propio driver MPU401. Activar la opción MPU401 con esas tarjetas causará un conflicto. También el activar MPU401 en un sistema que realmente no tiene un MPU401 puede causar algún problema. Si tu tarjeta estaba en la lista de tarjetas soportadas busca las instrucciones específicas en el fichero Readme.cards. Lo mejor es contestar "y" (sí) si tienes una tarjeta con un interfase MPU401 MIDI.
      6850 UART Midi support Y/n/?
Lo mejor es contestar "n" (no) siempre. El interfase UART 6850 raramente es usado.
      PSS (ECHO-ADI2111) support Y/n/?
Contesta "y" (sí) si solamente tienes una Orchid SW32, Cardinal DSP16 o alguna otra tarjeta basada en el juego de chips PSS (AD1848 codec + ADSP-2115 DSP chips + Echo ESC614 ASIC chips).
      16 bit sampling option of GUS (not GUS MAX) Y/n/?
Contesta "y" (si) si tienes instalado una tarjeta hija de 16 bits en tu GUS. Contesta "n" (no) si tienes una GUS MAX. Activando esta opción desactivamos el soporte GUS MAX.
      GUS MAX support Y/n/?
Contesta "y" (sí) si tienes una GUS MAX.
      Microsoft Sound System support Y/n/?
Piensa otra vez cuidadosamente antes de contestar "y" (sí) a esta pregunta. Lo mejor es contestar sí cuando tengas una tarjeta original Windows Sound System fabricada por Microsoft o una Aztech SG16 Pro (o una NX16 Pro). También puedes contestar "y" (sí) en el caso de que tu tarjeta no estuviera en la lista anterior. Para las tarjetas que tienen soporte VoxWare, consulta las instrucciones específicas en el fichero Readme.cards. Algunos driver tienen su propio soporte MSS y por lo tanto activar esta opción causará un conflicto.
      Ensoniq Soundscape support Y/n/?
Contesta "y" (sí) si tienes una tarjeta basada en el juego de chips Ensoniq Soundscape.
      MediaTriX AudioTriX Pro support Y/n/?
Contesta "y" (sí) si tienes una AudioTriX Pro.
      Support for MAD16 and/or Mozart based cards?
Contesta "y" (sí) si tu tarjeta tiene un chip de interfase de audio Mozart (OAK OTI-601) o un MAX16 (OPTI 82C928 o 82C929). Estos chips son actualmente muy comunes por lo que es posible que algunas tarjetas "sin nombre" tengan alguno de ellos. Además el chip MAX16 es usado en algunas tarjetas fabricadas por fabricantes como Turtle Beach (Tropez), Reveal y Diamond.
      Support for Crystal CS4232 based (PnP) cards Y/n/?
Contesta "y" (sí) si tu tarjeta está basada en el juego de chip Crystal CS4232.
      Support for Turtle Beach Wave Front (Maui, Tropez) synthesizers
Contesta "y" (sí) si tienes algunas de estar tarjetas.
      SoundBlaster Pro support Y/n/?
Activa esta opción si tu tarjeta es una SoundBlaster Pro o SoundBlaster 16. Activala también con cualquier clónico de la SoundBaster Pro. Contestar "n" (no) ahorra algo de memoria pero contestar "y" (sí) es la mejor opción.
      SoundBlaster 16 support Y/n/?
Actívala si tienes una SoundBaster 16 (incluída la AWE32).
      Audio Excel DSP 16 initialization support Y/n/?
Activa esta opción si tienes una tarjeta Audio Excel DSP 16. Mira el fichero readme.aedsp16 para más información.

Después el programa de configuración hace algunas preguntas de servicios de alto nivel. La contestación recomendada es "y" (sí) para cada una de las preguntas. Contesta "n" (no) solamente si sabes que no vas a utilizar esa opción.

      /dev/dsp and /dev/audio support (usually required) Y/n/?
Contesta "y" (sí). Si contestas "n" (no) desactivas los dispositivos de los conversores A/D D/A /dev/dsp y /dev/audio.
      MIDI interface support Y/n/?
Si contestas "n" (no) desactivas los dispositivos /dev/midixx y el acceso a cualquier puerto MIDI usando /dev/sequencer y /dev/music. Esta opción también afecta a los dispositvos compatibles con el MPU401 y/o General MIDI.
      FM synthesizer (YM3812/OPL-3) support Y/n/?
Contesta "y" (sí) aquí.
     /dev/sequencer support Y/n/?
Contestar "n" (no) desactiva /dev/sequencer y /dev/music.
     Do you want support for the mixer of SG NX Pro ?
Contesta "y" (sí) si tienes una tarjeta Sound Galaxy NX Pro y quieres soporte para sus funciones extras.
     Do you want support for the MV Jazz16 (ProSonic etc.) ?
Contesta "y" (sí) si tienes una tarjeta MV Jazz16.
     Do you have a Logitech SoundMan Games Y/n/?
Contesta "y" (sí) si tienes una tarjeta Logitech SoundMan Games.

Después de las preguntas anteriores, el programa de configuración pregunta por la información específica de la tarjeta. Generalmente es ajustar la dirección I/O, IRQ y el DMA. Con algunas tarjetas el programa pregunta por los ficheros que van a ser usados durante la inicialización de la tarjeta. Son las tarjetas que tienen un chip o un microprocesador DSP el cual debe ser inicializado bajando un programa (microcódigo) a la tarjeta. En algunos casos este fichero es escrito a un fichero de cabecera .h por el programa de configuración y ya es incluido en el driver durante la compilación. Lee de nuevo la información concerniente a tu tarjeta en el fichero Readme.cards.

Por último serás preguntado:

     The sound driver is now configured.
     Save copy of this configuration to /etc/soundconf [Y/n/?]
Normalmente debes contestar "y" (sí) por si más tarde necesitas recompilar el núcleo, y así ya tienes la opción de usar la misma configuración del driver de sonido.

Si estás actualizando un driver anterior de sonido, asegúrate de que los ficheros /usr/include/sys/soundcard.h y /usr/include/sys/ultrasound.h tienen enlaces simbólicos a los ficheros correspondientes en /usr/include/linux o que simplemente contiene las líneas #include <linux/soundcard.h> y #include <linux/ultrasound.h>, respectivamente.

Ahora estás preparado para compilar e instalar el nuevo núcleo.

4.3 Creando los ficheros de dispositivo.

La primera vez que el driver de sonido del núcleo es configurado necesitas crear los ficheros del dispositivo del sonido. La forma más fácil de hacer esto es cortar el script que viene al final del fichero Readme.linux en el directorio /usr/src/linux/drivers/sound y ejercutarlo como root.

Si tus entradas de dispositivo ya existen, debes asegurarte que son correctas. Si no lo son o si no estas seguro, ejecuta el anterior script y el reemplazará las entradas existentes por las correctas.

Algunas distribuciones antiguas de Linux incorporaban scripts que creaban ficheros de dispositivo incorrectos. Debes tener el script /dev/MAKEDEV para crear los ficheros de dispositivo. Usando el script incluído con el driver de sonido del núcleo es lo mejor ya que siempre estará actualizado con los últimos dispositivos de sonido soportado.

Después de ejecutar el script los ficheros de dispositivo de sonido deben parecerse a lo siguiente:

lrwxrwxrwx   1 root        11 Aug 22 00:01 audio -> /dev/audio0
crw-rw-rw-   1 root   14,   4 Aug 22 00:01 audio0
crw-rw-rw-   1 root   14,  20 Aug 22 00:01 audio1
lrwxrwxrwx   1 root         9 Aug 22 00:01 dsp -> /dev/dsp0
crw-rw-rw-   1 root   14,   3 Aug 22 00:01 dsp0
crw-rw-rw-   1 root   14,  19 Aug 22 00:01 dsp1
crw-rw-rw-   1 root   14,   2 Aug 22 00:01 midi00
crw-rw-rw-   1 root   14,  18 Aug 22 00:01 midi01
crw-rw-rw-   1 root   14,  34 Aug 22 00:01 midi02
crw-rw-rw-   1 root   14,  50 Aug 22 00:01 midi03
crw-rw-rw-   1 root   14,   0 Aug 22 00:01 mixer
crw-rw-rw-   1 root   14,  16 Aug 22 00:01 mixer1
crw-rw-rw-   1 root   14,   8 Aug 22 00:01 music
crw-rw-rw-   1 root   14,  17 Aug 22 00:01 patmgr0
crw-rw-rw-   1 root   14,  33 Aug 22 00:01 patmgr1
crw-rw-rw-   1 root   14,   1 Aug 22 00:01 sequencer
lrwxrwxrwx   1 root        10 Aug 22 00:01 sequencer2 -> /dev/music
crw-rw-rw-   1 root   14,   6 Aug 22 00:01 sndstat

Presta particular atención a los nombres de dispositivo y al mayor y menor número de dispositivo listado en la cuarta y quinta columnas.

Si estas usando el driver del altavoz del PC, lee la documentación que lee con el paquete para determinar qué ficheros de dispositivo crear.

Normalmente la configuración que usantes cuando construirte el núcleo será válida para el driver de la tarjeta de sonido. También es posible pasar parámetros al núcleo en la línea de comandos (por ejemplo desde LILO) para configurar el driver de sonido. Esto está definido en el fichero Readme.linux. Raras veces será necesario usarlo. La principal razón de esto es para que los desarrolladores de discos de arranque de linux puedan crear un núcleo que soporte varias tarjetas de sonido.

4.4 Inicializando Linux y comprobando la instalación.

Ahora debes estar preparado para inicializar el núcleo y comprobar los drivers de sonido. Sigue el procedimiento habitual para instalar y reinicializar el nuevo núcleo (por supuesto ten a mano el anterior núcleo por si hay problemas)

Durante la inicialización, comprueba un mensaje como el siguiente cuando emerja el texto (si las líneas aparecen muy rápido y no las puedes leer, utiliza el comando dmesg):

   snd2 <SoundBlaster Pro 3.2> at 0x220 irq 5 drq 1
   snd1 <Yamaha OPL-3 FM> at 0x388 irq 0 drq 0

Éste debe coincidir con el tipo de tu tarjeta de sonido y con los parámetros que ella tenga (si es que tiene alguno).

El driver también puede visualizar mensajes de error y advertencias durante el inicio. Estate atento para ver alguno cuando inicies por primera vez después de haber configurado el driver de sonido.

Lo siguiente que debes comprobar es el fichero de dispositivo /dev/sndstat. Si lees el estado del driver de sonido del fichero de dispositivo te proporcionará información adicional sobre si el driver de la tarjeta de sonido a sido inicializado correctamente. Un ejemplo de salida puede ser este:

   % cat /dev/sndstat
   Sound Driver:3.5.2-960330 (Tue  4 16:31:10 EDT 1996 root,
   Linux fizzbin 2.0.0 #1 Mon Jun 3 16:59:37 EDT 1996 i386)
   Kernel: Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386
   Config options: a80002
   

   Installed drivers:
   Type 1: OPL-2/OPL-3 FM
   Type 2: SoundBlaster
   Type 6: SoundBlaster 16bit
   Type 7: SB MPU
   

   Card config:
   SoundBlaster at 0x220 irq 5 drq 1,5
   OPL-2/OPL-3 FM at 0x388 irq 0 drq 0
   

   Audio devices:
   0: SoundBlaster Pro 3.2
   

   Synth devices:
   0: Yamaha OPL-3
   

   Midi devices:
   0: SoundBlaster
   

   Timers:
   0: System clock
   

   Mixers:
   0: SoundBlaster
   

Ahora debes estar preparado para reproducir un fichero de sonido. Coge un fichero de ejemplo y envíalo al dispositivo de sonido para comprobar la salida de sonido. Por ejemplo:

   % cat endoftheworld >/dev/dsp
   % cat crash.au >/dev/audio
   

(Asegúrate de que no te olvidas el ">")

Algunos ficheros de sonido se pueden obtener de: ftp://tsx-11.mit.edu

Ahora puedes comprobar la grabación de sonido. Si tienes capacidad de entrada de sonido, puedes hacer un test rápido con el siguiente comando.

# record 4 seconds of audio from microphone
EDT% dd bs=8k count=4 < /dev/audio > sample.au
4+0 records in
4+0 records out
# play back sound
% cat sample.au > /dev/audio

Obviamente para que esto funcione necesitas un micrófono conectado a la tarjeta de sonido. También necesitas un programa mezclador (mixer) para seleccionar al micrófono como dispositivo de entrada y ajustar el nivel de grabación.

Si pasas el test, puedes pensar razonablemente que el hardware y el software D/A y A/D funciona. Si tienes problemas, mira la siguiente sección de este documento.

4.5 Resolución de problemas.

Si todavía tienes problemas después de seguir las instrucciones del HOWTO, aquí hay algunas cosas que debes comprobar. Las comprobaciones están listadas en orden ascendente de complejidad. Si una comprobación falla, resuelve el problema antes de pasar al siguiente punto.

Punto 1: asegúrate de que realmente estás ejecutando el núcleo compilado.

Puedes comprobar la fecha del núcleo para ver si estás ejecutando el que has compilado con el soporte de sonido. Puedes hacer esto con el comando uname

   % uname -a
   Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386
   

o bien visualizando el fichero /proc/version:

   % cat /proc/version
   Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4 16:57:55 EDT 1996
   

Si la fecha no corresponde con la que era cuando compilaste el núcleo, entonces estas ejecutando el anterior núcleo. ¿Reinicializaste? Si usas el LILO, ¿lo reinstalaste? (ejecuta /etc/lilo/install). Si inicias desde disquete, ¿creaste un nuevo disco de inicio antes de iniciar la sesión?.

Punto 2: asegúrate de que los drivers de sonido del núcleo están compilados en él.

Puedes ver qué drivers están compilados mirando el /proc/devices:

   % cat /proc/devices
   Character devices:
    1 mem
    4 tty
    5 cua
    6 lp
   14 sound
   15 Joystick
   

   Block devices:
    2 fd
    3 hd
   25 sbpcd
   

Lo que estamos buscando es el dispositivo 14, llamado sound. Si el dispositivo de sonido no es listado entonces algo se hizo mal en la configuración del núcleo o en su construcción. Comienza el proceso de instalación comenzando otra vez la configuración y construyendo el núcleo.

Punto 3: ¿Detectó el núcleo tu tarjeta de sonido durante la inicialización?

Asegúrate de que la tarjeta de sonido fue detectada cuando inicializaste. Deberías haber visto un mensaje. Si el mensaje apareció fuera de pantalla, puedes revisarlo usando el comando dmesg

% dmesg

o

% tail /var/adm/messages

Si tu tarjeta de sonido no fue encontrada entonces algo está mal. Asegúrate de que está bien instalada. Si la tarjeta de sonido funciona bajo DOS entonces puedes asegurar de que no es debido al hardware por lo que seguramente el problema esté en la configuración del núcleo. Quizá configuraste tu tarjeta con un tipo equivocado o con parámetros equivocados, o quizás tu tarjeta no es compatible con los drivers de tarjeta de sonido del núcleo de Linux.

Una posibilidad es que tu tarjeta sea una del tipo "compatible" que requiere inicialización por el driver del DOS. Intenta iniciar una sesión de DOS y cargar el driver suministrado por el vendedor de la tarjeta de sonido. Después inicia una sesión de linux pulsando control-alt-delete. Asegúrate de que la dirección I/O, el DMA y el IRQ para Linux son los mismos que los usados bajo DOS. Lee el fichero Readme.cards para configurar tu tipo de tarjeta.

Si tú tarjeta de sonido no está listada en este documento, es posible que los drivers de Linux no la soporten. Como ayuda, comprueba las referencias listadas al final de este documento.

Punto 4: ¿Puedes leer datos desde el dispositivo dsp?

Intenta leer desde el dispositivo /dev/audio usando el comando dd listado anteriormente en este documento. El comando se debe ejecutar sin errores.

Si esto no va bien, es posible que la causa sea el fichero del dispositivo. Asegúrate que los ficheros de dispositivo del directorio /dev tienen los números mayor y menor listados anteriormente. Comprueba que los permisos del fichero de dispositivo permiten lectura y escritura.

Una posibilidad remota es que sea problema del hardware. Intenta comprobar el driver bajo DOS, si es posible, para determinar si ésta puede ser la causa.

Punto 5: Cuando todo falla... :-(

Si todavía tienes problemas, te sugerimos que intentes las siguientes cosas:


Anterior Siguiente Indice