El problema del sonido en Linux
Tradicionalmente el sonido ha sido complicado en Linux debido a la coexistencia de varios sistemas.
El sistema de sonido de Linux para los kernel 2.6 es ALSA, que ha reemplazado al que fuera el primer sistema de sonido para GNU Linux, OSS. El problema de OSS es que creaba una capa de lectura/escritura directa en el dispositivo de audio que permitía a los programas escribir en /dev/dsp pero que no permitía compartir el dispositivo de sonido a varias fuentes de audio. Por ejemplo, el editor de sonido Audacity se adueña de /dev/dsp e impide que otro escriba en él y si otro programa ha bloqueado ya el dispositivo da error.
Para los kernel 2.6 no instalaremos los módulos OSS sino los módulos ALSA (con emulación OSS ya que algunos programas esperan que OSS esté instalado).
Por encima de la capa de lectura/escritura de los dispositivos se ejecutan diversos servidores de sonido: esound (de Enlightenment y GNOME), artsd (de KDE), JACK (que utiliza ALSA como back-end) y PulseAudio.
Tantos servidores de sonido muchas veces dan problemas, ya que si tenemos ejecutables compilados para diferentes bibliotecas tendremos varios demonios compitiendo por la salida de audio.
Audio en Linux
Veamos el procedimiento a seguir para tener sonido en Linux:
- Soporte en el kernel.
- Cargar los módulos.
- Comprobar el dispositivo /dev/dsp.
- Soporte para formatos de audio propietarios.
Soporte en el kernel
El kernel tiene que tener soporte para:
- el dispositivo que usa la tarjeta de sonido (PCI, ISAPnP, Puente PCI-ISA…).
Si la tarjeta es ISAPnP (por ejemplo, Avance Logic ALS100), se tiene que activar at boot time, antes de cargar el módulo ALSA.
En la BIOS, ¿El sistema operativo es PnP? No.
Instalar el paquete isapnptools. Esto creará el script /etc/init.d/isapnp y el enlace /etc/rcS.d/S15isapnp, que se encargarán de configurar la tarjeta ISAPnP al iniciar.
Con pnpdump sabremos los datos de la tarjeta y del puerto en que está conectada. Ejecutar:
# pnpdump > /etc/isapnp.conf
Editar /etc/isapnp.conf y descomentar las líneas adecuadas:
io=0x03e8 irq=5 dma0=1 dma1=0
Activar la tarjeta ISAPnP ejecutando el comando:
# /etc/init.d/isapnp start
Recursos
- Plug and Play Sound card – Cantrell: linuxjournal.com/article/3269
- sonido genérico, soporte ALSA y compatibilidad ALSA-OSS (no instalar los módulos OSS).
- el módulo
ALSA
(Advanced Linux Sound Architecture) de nuestra tarjeta de sonido.
Averiguaremos cuál es el módulo ALSA que necesitamos, así como la sintaxis de los
parámetros necesarios para cargarlo, en la página
alsa-project.org/alsa-doc/, por ejemplo:
- Avance Logic ALS100 (ISAPnP): snd-als100
- Yamaha OPL3-SA2 (Puente PCI-ISA): snd-opl3sa2
Cargar los módulos
Cargaremos los módulos con modconf para que se actualice el archivo /etc/modules y se carguen al iniciar, pasándole los parámetros necesarios, por ejemplo:
- Avance Logic ALS100 (ISAPnP):
port=0×0220 irq=5 dma8=1 dma16=0
- Yamaha OPL3-SA2 (Puente PCI-ISA): consultar los parámetros en la BIOS:
sb_port=0×220 irq=5 dma1=1 dma2=0 fm_port=0×388 midi_port=0×330 port=0×538 wss_port=0×530 isapnp=0
Comprobar el dispositivo /dev/dsp
Instalaremos las Herramientas ALSA (paquete alsa-utils) y se creará /etc/init.d/alsa y el enlace /etc/rc2.d/S12alsa, por lo que al iniciar se cargará la configuración ALSA (entre otras cosas, restaurará los valores del volumen). Por defecto el sonido suele estar mute, por lo que ejecutaremos alsamixer para hacer unmute:
# alsamixer |
MM significa que el canal está silenciado: quitaremos la MM con la tecla <m> y subiremos el volumen de la tarjeta a un nivel audible:
En este punto, ya deberíamos tener sonido. Para comprobarlo:
- la forma irritante de comprobar la tarjeta de sonido es ver si se puede escuchar estática en
los altavoces. Esto nos confirmará si está configurada y funcionando. Haremos:
# cat /dev/urandom > /dev/dsp
Si todo está correcto se escuchará estática. Detenerlo con <Ctrl+C>.
- información sobre la tarjeta de sonido:
# cat /proc/asound/cards 0 [Live]: EMU10K1 - Sound Blaster Live! Sound Blaster Live! (rev.6) at 0xb800, irq 11
- versión de ALSA que se usa:
# cat /proc/asound/version Advanced Linux Sound Architecture Driver Version 1.0.8
- el usuario debe pertenecer al grupo audio para utilizar el sonido, ya que los permisos
del dispositivo de sonido /dev/dsp suelen ser:
- Propietario (root): leer y escribir.
- Grupo (audio): leer y escribir.
- Otros: prohibido.
Soporte de formatos de audio propietarios en Linux
Todos los reproductores linuxeros de audio y vídeo incluyen el decoder y reproducen MP3 pero ninguna distro trae el encoder ya que las patentes impiden distribuir binarios. El encoder para Linux es Lame (lame.sourceforge.net, paquete lame), pero en su web sólo encontraremos el código fuente, que sí es legal distribuirlo, por lo tendremos que compilarlo o buscar un repositorio que lo distribuya compilado.
Si al instalarlo no se instala libmp3lame.so, la librería que buscan algunos programas (como Audacity), sino libmp3lame.so.0, lo solucionaremos creando el enlace:
# ln -s /usr/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so |
El encoder para Linux para AAC es FAAD (Freeware Advanced Audio Decoder, sourceforge.net/projects/faac/, paquete faad).
Mezclador de audio en Linux
El mezclador de audio en Linux es alsamixer:
- Herramientas ALSA (paquete alsa-utils): alsamixer es el mezclador de audio por defecto en Linux.
# alsamixer
Existen numerosos mezcladores de audio gráficos, frontales de alsamixer:
- alsamixergui (paquete alsamixergui): es una de las herramientas ALSA.
- GNOME-alsamixer (paquete gnome-alsamixer): mezclador de GNOME.
- Kmix (paquete kmix): mezclador de KDE.
Una pregunta ya estoy instalando el sonido en mi laptop, las caracteristicas son:
Toshiba A215-s7414 con amd 62X2 ati radeon graphics y realtek
Toda la semana estuve tratando de levantar el audio y nada, lo que hice fue instalar este paquete: realtek-linux-audiopack-4.07a.tar.bz2
Tambien instale todos los paquetes mas actuales de ALSA, y aun no tngo audio.
Al ejecutar los comandos que sugieres me aparece esto:
root @ primitivo-laptop:~# cat /proc/asound/card0/codec#* | grep Codec
Codec: Generic 11c1 Si3054
Codec: Realtek ALC268
root @ primitivo-laptop:~# cat /proc/asound/cards
0 [SB]: HDA-Intel – HDA ATI SB
HDA ATI SB at 0xf8600000 irq 16
root @ primitivo-laptop:~# cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.15 (Tue Oct 16 14:57:44 2007 UTC).
Queria ver si me podrias orientar, espero que este cerca de conseguir levantar el audio, o si estoy muy mal tal ves me puedas decir cuales fueron mis errores.
Primi, si tradicionalmente en Linux el sonido ha sido complicado, en algunos portátiles puede ser una odisea. Por suerte tenemos http://www.linux-laptop.net, donde está todo sobre portátiles en Linux. Concretamente veo que figura tu Toshiba A215-s4747 y funciona bien con Ubuntu, aunque parece que les costó activar el sonido. También te puede ayudar nuestro artículo sobre hardware en Linux.
Ánimo.
Muchas gracias, ya encontre la solucion, te paso el link por si alguien mas se interesa en instalarle un mejor sistema operativo a su lap:
lddubeau.com/avaktavyam/linux-on-a-compal-ifl90/
De todos modos voy a postear en mi blog: trixmontero.blogspot.com
Gracias por tu respuesta rapida y me da gusto que alla gente como tu que comparte sus conocimientos.
Ahora si voy a disfrutar programando en mi Ubuntu escuchando mi musica favorita.
bueno, yo tengo un problemilla no tan grave pero que me pone idiota al momento de trabajar en el
laptop, cuando conecto en jack a el input se escuha por los audifonos pero los parlantes
del laptop no se mutean
estoy trabajando con debian eth 4.0
ayuda!
Saludos desde Costa Rica.
Tengo una consulta, por favor, si me pueden sugerir cómo obtener sonido en UBUNTU 9.04, que me dejó de sonar, a pesar de que tengo una partición y otro SO sí suena.
Exelente explicación
no sabia de esos procesos
Muchas gracias y animo!
siempre adelante
y no te vayas a estrellar por favor!