Configurar Linux para que soporte sonido implica los siguientes pasos:
La siguiente sección cubre cada uno de estos pasos en detalle.
Sigue las instrucciones del fabricante para instalar el hardware o encárgaselo a tu vendedor.
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.
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.
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.
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.
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?.
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.
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.
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.
Si todavía tienes problemas, te sugerimos que intentes las siguientes cosas:
emacs
y pulsa Esc-x doctor.