Soporte de sonido del chipset VIA8233A


Como ya comenté en un artículo anterior, no me gusta tener hardware sin utilizar (si lo he pagado es por algo 8-). Esta vez le ha tocado el turno al chip de sonido que viene integrado en mi, recientemente adquirida, placa base, una GA-7VRX, con chipset VIA Apollo KT333. Tras un poco de estudio y algo de suerte, he conseguido hacerla sonar.

Actualización (06/11/2002): ya están para Debian los alsa-0.9rc5, con una serie de cambios y mejoras.

Actualización (22/02/2003): en las últimas versiones de ALSA (0.9-rc7) el driver para las placas VIA ha dejado de funcionar. Este bug ya ha sido reportado en varias ocasiones (1, 2, 3 y 4) y es de esperar que lo solucionen en poco tiempo.

Lo primero de todo, agradecer a Jordi Mallach Pérez que hace unos días envió a los repositorios de paquetes Debian un NMU (Non-Mantainer Upload) para las librerías ALSA, lo que me ha permitido integrar los drivers necesarios con el sistema de paquetes de Debian.
Lo segundo, decir que el soporte de Linux para esta tarjeta todavía es algo precario y no funciona de forma totalmente correcta.
Actualización: En la versión 0.9rc5, se han integrado los dos drivers para las “tarjetas de sonido” VIA en uno solo llamado via82xx. Otro de los cambios introducidos es que antes las opciones de los módulos empezaban por ‘snd_’ y ahora se ha eliminado este prefijo.
He actualizado el artículo para que funcionen con la nueva versión de ALSA ya que si alguien se lo instala ahora usará esta última versión.
Empecemos ahora con el duro trabajo. Primero veamos que realmente tenemos el chip sobre el que se centra este artículo, el VT8233A:

  host:~# lspci
  00:00.0 Host bridge: VIA Technologies, Inc. VT8367 [KT266]
  00:01.0 PCI bridge: VIA Technologies, Inc. VT8367 [KT266 AGP]
  00:0d.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 30)
  00:11.0 ISA bridge: VIA Technologies, Inc. VT8233A ISA Bridge
  00:11.1 IDE interface: VIA Technologies, Inc. Bus Master IDE (rev 06)
  00:11.2 USB Controller: VIA Technologies, Inc. USB (rev 23)
  00:11.3 USB Controller: VIA Technologies, Inc. USB (rev 23)
  00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233 AC97 Audio Controller (rev 40)
  00:14.0 USB Controller: VIA Technologies, Inc. USB (rev 50)
  00:14.1 USB Controller: VIA Technologies, Inc. USB (rev 50)
  00:14.2 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 51)
  01:00.0 VGA compatible controller: nVidia Corporation NV5 [Riva TnT2 Ultra] (rev 15)

Aunque lo que yo cuento es para el VT8233A, seguramente también funcione para cualquier VT8233 pero no lo he podido comprobar así que no lo aseguro.

Instalando los drivers ALSA.
En los drivers de sonido que vienen en las fuentes del kernel no existe ninguno que funcione para esta tarjeta. Buscando encontré que el chip VT8233A sí estaba soportado por los drivers ALSA (Advanced Linux Sound Architecture), a partir de la versión 0.9rc3. Gracias a Jordi Mallach, ahora podemos obtener estos drivers con el apt-get:

  host:~# apt-get install alsa-source alsa-base alsaconf alsa-utils

Cuando se ha instalado el paquete alsa-source, aparece un dialogo que nos pide que seleccionemos el driver que queremos compilar. Iremos al final de la lista y seleccionaremos via82xx.
Los drivers ALSA vienen como fuentes, aunque también existen unos paquetes con los módulos ya compilados, pero son para el kernel 2.4.18 y utilizan la versión 0.9rc1 de los drivers.
Ahora procederemos a compilar los drivers:

  host:~# cd /usr/src/linux
  host:~# make-kpkg modules_image
  host:~# dpkg -i ../alsa-modules-*.deb

Al instalar el paquete se ejecutará un script para configurar los módulos (si no se ejecuta, podemos hacerlo manualmente con alsaconf). Os saldrá un listado de tarjetas y os pide que seleccionéis la que queréis configurar. Seleccionamos ‘0x23 Dummy_soundcard’ ya que la nuestra no aparece (posible bug, ya lo investigaré). Seguidamente nos pide que introduzcamos un identificador de la tarjeta, VT8233A, por ejemplo. Y no añadimos más tarjetas ‘0 No_more_cards’.
Ahora editaremos el fichero /etc/alsa/modutils/0.9 para adaptar la configuración a nuestra tarjeta. Debe quedar como:

  host:~# vi /etc/alsa/modutils/0.9
  alias char-major-116 snd
  alias snd-card-0 snd-via82xx
  alias char-major-14 soundcore
  alias sound-slot-0 snd-card-0
  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
  options snd major=116 cards_limit=1 device_mode=0660 device_gid=29 device_uid=0
  options snd-via82xx index=0 id=VIA8233A

  host:~# update-modules

Con esto hemos terminado de configurar los módulos. Ahora intentaremos cargar los módulos:

  host:~# modprobe sound-slot-0
  PCI: Setting latency timer of device 00:11.5 to 64

Recomiendo que intentéis escuchar el fichero de audio desde la consola con mpg123, sino el resultado puede asustar (ver la sección siguiente).
ATENCIÓN: Si no se escucha nada, seguramente sea porque los volúmenes están a 0. Prueba a subir los volúmenes con setmixer, por ejemplo.
El paquete de Debian, instala un script de arranque que hará que cada vez que arrancamos el ordenador se carguen los módulos necesarios. Es decir, no hace falta que modifiquemos el /etc/modules.

Configurando el artsd
El driver de esta tarjeta parece tener un problema con las frecuencias de reproducción si el fichero esta muestreado a frecuencias altas (>64KHz, dato empírico y aproximado) que hace que todo sonido reproducido desde un programa que utilice el artsd (como las KDE), se escuchara con ruido. La solución esta en abrir el ‘Centro de control’ de las KDE, e ir a ‘Sonido->Servidor de Sonido->E/S de Sonido (segunda pestaña)’. Habilitamos el checkbox ‘Utilizar la velocidad de muestro habitual’ y en el campo de texto escribimos 48000, y aceptamos. Ahora vamos a la pestaña ‘General’ y le damos al botón ‘Sonido de prueba’. Se debería escuchar el sonido correctamente.

Configurando otros programas
He experimentado algunos problemas con el xmms, pero se han solucionado instalando el plugin de salida compatible con arts (apt-get install xmmarts) y configurando el xmms para que utilice este plugin. También podemos hacer que el Xine (reproductor de vídeo) utilice el sistema de sonido arts pasándole la opción ‘-A arts’.
Como el demonio artsd “toma el control” de la tarjeta de sonido, si queremos usar programas que sólo pueden utilizar el sistema OSS, como el realplayer, es necesario que el artsd suelte la tarjeta de sonido. Esto se puede conseguir poniendo un tiempo relativamente corto (de unos 10s) en el campo ‘Autosuspender si inactivo’. De esta manera el demonio artsd dejará la tarjeta de sonido pasados 10 segundos desde la última vez que fue utilizado.
Como nota negativa, decir que yo no he conseguido hacer funcionar el Quake3 con esta tarjeta de sonido. El problema está en que el juego no funciona con los drivers ALSA y que la emulación de OSS de estos drivers no es lo suficientemente buena
Actualización: Con la anterior versión de los ALSA, la 0.9rc3, los programas que usaban SDL (principalmente juegos), sonaban fatal. Con los 0.9rc5 parece que han solucionado este problema. De momento sólo lo he podido probar en el tuxracer, en el que antes la música se escuchaba entrecortada y ahora ya no.

Conclusiones
De momento el soporte para este chip es algo precario, pero es de suponer que mejorara en próximas versiones de los ALSA. Si encuentro algún problemilla más iré actualizando este artículo.

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1518 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.