Posteado por: DeltaLinuXer | Julio 13, 2007

[ArchLinux] Configurando ALSA (activando sonido)

Este artículo es de esos que son indispensables para que tengas un Sistema Operativo totalemente funcional. Sin lugar a dudas, si usas Archlinux y no tienes sonido o tienes problemas con él, debes ingresar aquí (también para KDE users)

(Traducido por mí desde: Arch Linux Wiki)

Este documento dice cómo hacer que funcione ALSA en kernels 2.6. También puedes ver cómo puedes hacer que dos programas reproduzcan sonido a la vez.

Instalación

Drivers del Kernel

Alsa ha sido incluida en los kernels 2.6 e incluida también en todos los paquetes de Arch kernel26*. Si vas a construir un kernel modificado, no olvides activar los drivers de Alsa indicados. Todos los módulos necesarios deben ser detectados y cargados automáticamente por udev. Ninguna configuración especial debe ser hecha a menos que uses tarjetas ISA. NUNCA uses alsaconf si tienes tarjeta de sonido PCI o ISAPNP, las entradas que el alsaconf agrega al archivo modprobe.conf podría romper la autodetección de udev.

Utilidades del espacio del usuario

:: Requerido por los programas nativos de Alsa y administración:

# pacman -Sy alsa-lib alsa-utils

:: Recomendado si quieres utilizar programas con soporte de sonido OSS en combinación con dmix:

# pacman -S alsa-oss

Todos los programas de alsa tendrán como dependecia alsa-lib.

Configuración

Hacer que los módulos de sonido sean cargados

Puedes asumir que udev detectará tu sonido apropiadamente, incluyendo los módulos de compatibilidad con OSS. Tú puedes chequear esto con el comando:

$ lsmod | grep '^snd'
snd_usb_audio 69696 0
snd_usb_lib 13504 1 snd_usb_audio
snd_rawmidi 20064 1 snd_usb_lib
snd_hwdep 7044 1 snd_usb_audio
snd_seq_oss 29412 0
snd_seq_midi_event 6080 1 snd_seq_oss
snd_seq 46220 4 snd_seq_oss,snd_seq_midi_event
snd_seq_device 6796 3 snd_rawmidi,snd_seq_oss,snd_seq
snd_pcm_oss 45216 0
snd_mixer_oss 15232 1 snd_pcm_oss
snd_intel8x0 27932 0
snd_ac97_codec 87648 1 snd_intel8x0
snd_ac97_bus 1792 1 snd_ac97_codec
snd_pcm 76296 4 snd_usb_audio,snd_pcm_oss,snd_intel8x0,snd_ac97_codec
snd_timer 19780 2 snd_seq,snd_pcm
snd 43776 12 snd_usb_audio,snd_rawmidi,snd_hwdep,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer
snd_page_alloc 7944 2 snd_intel8x0,snd_pcm

Si la salida se ve similar, tus controladores de sonido han sido autodetectados exitosamente (nótese en este caso, snd_intel8×0 y snd_usb_audio son los controladores del hardware de sonido). También puedes chequear el directorio /dev/snd por si los archivos de los controladores son acertados:

$ ls -l /dev/snd/
total 0
crw-rw---- 1 root audio 116, 0 Apr 8 14:17 controlC0
crw-rw---- 1 root audio 116, 32 Apr 8 14:17 controlC1
crw-rw---- 1 root audio 116, 24 Apr 8 14:17 pcmC0D0c
crw-rw---- 1 root audio 116, 16 Apr 8 14:17 pcmC0D0p
crw-rw---- 1 root audio 116, 25 Apr 8 14:17 pcmC0D1c
crw-rw---- 1 root audio 116, 56 Apr 8 14:17 pcmC1D0c
crw-rw---- 1 root audio 116, 48 Apr 8 14:17 pcmC1D0p
crw-rw---- 1 root audio 116, 1 Apr 8 14:17 seq
crw-rw---- 1 root audio 116, 33 Apr 8 14:17 timer

Si por lo menos tienes los dispositivos controlC0 y pcmC0D0p o similar, entonces tus módulos de sonido han sido detectados y cargados apropiadamente.

Y si no es así, tus módulos de sonido no se han cargado bien. Si necesitas ayuda en nuestro IRC o foros, por favor postea la salida de los comandos anteriores. Para resolver esto, puedes intentar cargar los módulos manualmente:

  • Localiza el módulo para tu tarjeta de sonido: http://www.alsa-project.org/alsa-doc/. El módulo estará con el prefijo ‘snd-‘(por ejemplo: ’snd-via82xx’).
  • Carga los módulos:
  • # modprobe snd-NOMBRE-DEL-MODULO
    # modprobe snd-pcm-oss

  • Chequea los archivos del dispositivo en /dev/snd y/o intenta si alsamixer o amixer tienen una salida razonable.
  • Agrega snd-NOMBRE-DEL-MODULO y snd-pcm-oss a la lista de módulos en /etc/rc.conf para asegurarse de que sean cargados la próxima vez que inicies tu pc (cerciórate que snd-NOMBRE-DEL-MODULO está antes que snd-pcm-oss).

Activando los canales y chequeando la tarjeta de sonido

En esta sección, suponemos que estás logueado como root. Si quieres hacer los siguientes pasos como usuario normal debes revisar la siguiente sección Seteando los permisos primero.

  • Activando la tarjeta de sonido

Recomendamos que uses alsamixer para configurar el mezclador y activar los canales.
NOTA: cuando uses amixer, entendemos que estamos activando el sonido, así como subiendo el volumen a un porcentaje específico, es decir que debes usar el signo de porcentaje (%). amixer el signo de procentaje (%), no los números. Si usas un número, por ejemplo 90, entonces amixer lo entenderá como 100%, lo que puede estropear tus parlantes.

# amixer set Master 90% unmute
# amixer set PCM 85% unmute

  • Intenta reproducir un archivo *.wav

# aplay mywav.wav

Seteando los permisos

Para permitir el uso de la tarjeta de sonido como usuario normal, sigue estos pasos:

  • Añade tu usuario al grupo audio:

# gpasswd -a USUARIO audio

  • Ahora desloguéate y vuelve a entrar para asegurarse que el grupo audio sea cargado correctamente.

Restaurando las configuraciones de Alsa al inicio del sistema

  • En la terminal pon alsactl una vez para crear el archivo /etc/asound.state.

# alsactl store

  • Edita /etc/rc.conf y agrega alsa a la lista de demonios. Esto hará que las opciones de ALSA se guarden cuando apagues tu PC y se restauren cuando se inicie de nuevo.

Obteniendo la salida de SPDIF

  • En el control del volumen de Gnome, debajo de la pestaña de Opciones, cambia de IEC958 a PCM. Esta opción puede ser activada en las preferencias.
  • Si no tienes el control de volumen de Gnome,
    • Edita /etc/asound.state. Este archivo es donde se guarda la configuración de alsasound.
    • Encuentra la línea que dice : ‘IEC958 Playback Switch’. Cerca de ella encontraras una linea que dice: false. Cambia su valor a:true
    • Ahora encuentra esta línea: ‘IEC958 Playback AC97-SPSA’ y cambia su valor a 0.
    • Reinicia alsa.

Otra alternativa para activar la salidade SPDIF automáticamente en el login:

  • Añade lo siguiente al /etc/rc.local:

# Use COAX-digital output
amixer set 'IEC958 Optical' 100 unmute
amixer set 'Audigy Analog/Digital Output Jack' on

Y puedes ver también las propiedades de tu tarjeta haciendo:

# amixer scontrols

¿Aún sin sonido?

Aun cuando los controladores están instalado, y el volumen está bien, y nada está desactivado, y sigues sin sonido, prueba a añadir la siguiente línea a /etc/modprobe.conf para solucionar el problema (por lo menos con el controlador via82xx)

options snd-NOMBRE-DEL-MODULO ac97_quirk=0

Otra alternativa:

En vez de preocuparse por un error del udev, usa alsaconf.

¿Calidad de sonido pobre?

Si tienes baja calidad de sonido, intenta colocar el volumen de PCM (en alsamixer) a un nivel que el ganado (gain) sea 0.

Opciones con KDE:

  • Inicia KDE:
  • # startx

  • Pon los valores de volumen como lo desees para tu usuario (cada usuario puede tener sus propias opciones):
  • # alsamixer

  • En KDE 3.3
    • Ve a Menú K > Multimedia > Kmix
    • Anda a Opciones > Configurar KMix…
    • Destickea la opción “Restore volumes on logon”.
    • Presiona OK, todo debería funcionar. Ahora el volumen será igual desde la consola como de KDE.

Respuestas

  1. Buena guía.

    Mi problema es que al finalizar sesión y apagar el equipo, ALSA parece no guardar los niveles de sonido y al reiniciar, el sonido está al máximo.

    ¿Cómo puedo solucionarlo?

    He estado leyendo por ahí que en Gentoo modifican la opción stop() de /etc/conf.d/alsasound y ponen un parámetro SAVE_ON_STOP y lo ponen a “yes”, pero en Ubuntu no cuento con ese archivo.

    Muchísimas gracias por tu ayuda.


Dejar una respuesta

Su respuesta:

Categorías