Hemen zaude: Hasiera Comunidad Documentación Recetas Cómo hacer funcionar tu tarjeta de sonido hda-intel

Cómo hacer funcionar tu tarjeta de sonido hda-intel

Las tarjetas hda-intel integradas en la placa se han hecho casi omnipresentes, y resulta difícil ponerlas en marcha en GNU/Linux. Cada fabricante implementa el estándar a su manera, y por eso el driver a menudo necesita que se le indique el modelo concreto. En esta receta vemos un modo rápido de saber cuál es nuestro modelo y cómo indicárselo al kernel.

Para configurar la tarjeta de sonido, entramos como root y en una terminal usamos el comando

# alsaconf

Alsaconf es un asistente que hará lo posible por identificar y configurar la tarjeta de sonido. Prácticamente lo único que hay que hacer es ir aceptando lo que propone. Si lo ejecutas desde el entorno gráfico, al ejecutar alsaconf aparecerá una ventana de aviso diciendo que algunas aplicaciones como el control de volumen se han interrumpido y te ofrecerá un botón para volver a recargarlas. Ignora esa ventana hasta que alsaconf haya terminado su trabajo; cuando haya terminado, pulsa "Recargar" e intenta reproducir algo. Normalmente esto debería ser suficiente para tener el audio en marcha. Si alsaconf termina con un mensaje de error, probablemente la tarjeta de sonido no está soportada. Tienes la lista de tarjetas soportadas en ALSA matrix card

Si alsaconf te dice que tienes una tarjeta hda-intel (actualmente la mayoría de las tarjetas integradas en la placa madre son de este tipo), aunque termine con un mensaje de éxito es posible que la tarjeta de sonido siga sin funcionar. En este caso, y suponiendo que quieres trabajar con audio "en serio" el mejor consejo que se te puede dar es éste: desactiva la tarjeta de sonido en la BIOS del ordenador, y compra una tarjeta de sonido PCI. Esto es válido para todas las tarjetas de audio integradas en la placa madre, no sólo para las hda-intel. Si todo lo que quieres es que tu portátil sea capaz de reproducir sonido,
entonces tendrás que averiguar cuál es tu modelo de hda-intel, ver si está soportado, y si lo está, indicarle al kernel ese modelo

Ante todo necesitas saber qué codec usa la tarjeta. Esta información estará disponible en la carpeta /proc/asound/card0. Una vez dentro de ella, has de buscar un documento con un nombre parecido a "codec#0". Puedes ver el contenido de este documento con el comando less:

  less /proc/asound/card0/codec#0

Si no controlas la línea de comandos, puedes entrar en el entorno gráfico como root y usar un editor de texto para ver el contenido de ese documento. También es posible que el nombre del documento varíe, si es así, revisa bien el contenido de la carpeta /proc/asound y una vez allí, busca primero algo que haga referencia a "card" y una vez dentro de eso, busca algo que haga referencia a "codec". Es posible que haya un archivo "codec#0" y otro "codec#1". Si es así, casi seguro que uno de los dos se refiere al uso de latarjeta como módem. Probablemente veremos algo como "Motorola" si el codec se refiere al modem. Estos codecs no nos interesan, lo que queremos averiaguar es el codec de audio que usa. Estos codecs de audio tienen nombres como ALC880, AD1983, STAC9200...

Por tanto, lo que buscamos es una línea cerca del comienzo del documento, parecida a esta:

  Codec: Realtec ALC888

Con lo que ya sabemos que el codec de nuestra tarjeta de audio es el ALC888. Ahora abrimos el navegador, vamos a Google y buscamos "alsa-configuration.txt". Asegúrate que se corresponda con la versión de alsa que tengas instalada; si no es la más moderna, es posible que te toque descargar y compilar la última versión de alsa. Con cada nueva versión, se soportan más modelos de hda-intel.

alsa-configuration.txt proporciona una lista con los parámetros que se pueden pasar a los drivers de las tarjetas de sonido; verás que el módulo snd-hda-intel tiene un montón de modelos diferentes, agrupados por el codec. De modo que buscamos el apartado  "snd-hda-intel" y dentro de él buscamos "ALC888" y veremos que aparecen un montón de modelos que se diferencian en el número o tipo de entradas y salidas de audio, etc. Vamos a suponer que tenemos una tarjeta con 6 salidas y spdif. En ese caso vemos que la opción de modelo que hemos de pasar es "6stack-dig".

Muy bien, ahora debemos editar (como root) el archivo /etc/modprobe.d/alsa-base y añadir esta línea al final:

options snd-hda-intel model=6stack-dig

Guardamos los cambios y volvemos a ejecutar alsaconf. Si todo ha ido bien, deberíamos poder reproducir y escuchar nuestro archivo de sonido.

Si el archivo se reproduce pero suena mal, es posible que tengamos que añadir algún parámetro más. Si se oyen clicks, probablemente tendremos que usar la opción position_fix=1 o position_fix=2. Si al arrancar el sistema nos aparecen mensajes "azx_get_response timeout", podemos añadir otra opción, "probe_mask=X", donde "X" es el número de slot que usa la tarjeta. Este número de slot suele ser el que aparece en el nombre del archivo donde leímos el codec.

De modo que nuestra línea en /etc/modprobe.d/alsa-base podría ser algo así:

  options snd-hda-intel model=3stack position_fix=1 probe_mask=4

Si aún así no funciona, intentaremos arrancar pasando al kernel la opción "pci=noacpi" Todas estas opciones están ampliamente comentadas en el archivo "alsa-configuration.txt" y en el manual de grub (man grub). Cada vez que cambiemos las opciones que se le han de pasar al módulo, debemos volver a ejecutar alsaconf y acto seguido intentar reproducir algo.