miércoles, 20 de octubre de 2010

Configurando la placa de sonido M-Audio Delta 1010LT por defecto

Me compré una placa M-Audio Delta 1010LT a la que quiero usar como placa por defecto. Pero las cosas ya no son como antes que bastaba desactivar la placa on board:

$ cat /proc/asound/cards
0 [SB ]: HDA-Intel - HDA ATI SB
HDA ATI SB at 0xfe024000 irq 16
1 [E320SE ]: USB-Audio - Eye 320SE
PixArt Imaging Inc. Eye 320SE at usb-0000:00:13.1-2, full speed
2 [Generic ]: HDA-Intel - HD-Audio Generic
HD-Audio Generic at 0xfdffc000 irq 19
3 [M1010LT ]: ICE1712 - M Audio Delta 1010LT
M Audio Delta 1010LT at 0xbf00, irq 21


La primera es la placa onboard, que quiero dejar activada por el momento. La segunda, el mic de la webcam. La tercera, el HDMI de la placa de video. Y la cuarta, la M1010LT.

Y acá viene el problema: la M1010LT no es la placa por defecto, por ende algunas aplicaciones no la van a usar (¿les suena flash player?). Ya me había pasado algo similar antes (la E320SE quedaba por defecto), así que recurrí al archivo asound.conf. Mi primer intento fué:

pcm.!default {
type hw
card M1010LT
}

ctl.!default {
type hw
card M1010LT
}


El resultado: silencio absoluto :-( . Luego usé el script sugerido en la página de asound.conf y llegué a:

pcm.SB { type hw; card SB; }
ctl.SB { type hw; card SB; }
pcm.E320SE { type hw; card E320SE; }
ctl.E320SE { type hw; card E320SE; }
pcm.M1010LT { type hw; card M1010LT; }
ctl.M1010LT { type hw; card M1010LT; }
pcm.Generic { type hw; card Generic; }
ctl.Generic { type hw; card Generic; }
pcm.!default pcm.M1010LT
ctl.!default ctl.M1010LT

Otra vez, silencio absoluto :-/. Me cansé de buscar en la web y no encontrar soluciones. No uso pulseaudio y no sé si vale la pena usar jack. Bueno, de todas maneras las aplicaciones que usan phonon andaban bien, y para los videos podía usar los auriculares. Pero cuando uno tiene que ver un stream en vivo que dura muchas horas (¿les suena el rescate de los 33 mineros?), se hace una molestia. ¿que tal un hack rápido? Cable de audio conectado a la salida de la placa on board y en su otra punta a una de las entradas de la M1010LT. Feo, pero anda.

La "suerte" a veces ayuda.

Ayer, siguiendo un link en la web, dí con unos videos en You Tube. Me puse los auriculares, apreté play y... el sonido salía por los parlantes :S. Un cat /proc/asound/cards me decía que la M1010LT estaba como placa 0. Bien, entonces era posible usarla por defecto, mas allá de que no lo haya logrado con asound.conf. Buscando en la web un poco mas de información sobre toda la que ya busqué, dí con una página donde explican como setear los módulos de las placas restantes como placa 1 (o lo que siga por defecto). No es la solución, pero al menos es mas prolija que el cable externo :-)

Por supuesto, lo mejor sería solucionarlo desde asound.conf, pero no lo he logrado aún :-/ . Por cierto, uso Debian.

Actualización 20101025 00:21 ARST: parece ser que la cosa no termina ahí. Como puse en un comentario mas abajo, tuve que modificar /etc/modprobe.d/alsa-base.conf. Y encima empecé a dar con un bug: la placa no siempre se detecta al arrancar el sistema. Así que finalmente hice ésto en el citado archivo:

# Options for the M1010LT.
alias snd-card-0 snd-ice1712
options snd-ice1712 model=delta1010lt index=0

Y si la placa no es detectada, basta ejecutar alsa force-reload como root.



6 comentarios:

  1. Lo que hay que hacer es lo que explica el manual que enlazas. Yo para mi M-Audio Audiophile 24/96 y el micrófono de mi webcam añadí esto en el /etc/modprobe.d/sound.conf

    ######
    alias snd-card-0 snd-ice1712
    options snd-ice1712 index=0

    alias snd-card-1 snd_usb_audio
    options snd_usb_audio index=1
    ######

    Y por lo que veo en mi /etc/modprobe.d/alsa-base.conf hay esto (y algunas líneas más para otros dispositivos) que no añadí yo:
    # Keep snd-usb-audio from beeing loaded as first soundcard
    options snd-usb-audio index=-2


    Prueba con lo que añadí yo (adaptándolo a tu situación) (obviamente que tengan permisos de lectura para cualquier usuario) y reinica. Si no añade lo que NO añadí yo a ver y reinicia de nuevo.

    Ah y quita eso del asound.conf para estas pruebas. Si aún falla, se añade de nuevo o algo. Yo en su día me pelee con asound.conf y todavía tengo por ahí el archivo que me cree, pero al de un tiempo no era necesario pues las configuraciones por defecto fueron modificadas y ya iban bien con mi tarjeta. Supongo que para la Delta 1010LT también funcionarán bien las configuraciones por defecto.

    ResponderEliminar
  2. @Javier: antes que nada, mil gracias. Si, parece una solución mas adecuada. Me resultaba raro que no haya encontrado eso en la página de asound.conf, y buscando en Google con la info que pasaste, llegué a la página de configuración de múltiples placas.

    Ahora lo pruebo y veo que saco :-)

    ResponderEliminar
  3. Al final agregué el siguiente código a /etc/modprobe.d/alsa-base.conf:

    # Options for the M1010LT.
    alias snd-card-0 snd-ice1712
    options snd-ice1712 index=0

    Por supuesto, quité los cambios que había hecho anteriormente.

    Consideré agregar otro archivo ahí dentro (sound.conf no aparece en ningún paquete de Debian), pero me parece mas claro dejarlo ahí. Como detalle interesante, lo dejé al final, donde se hace mas sencillo acomodarlo en caso de que el paquete se actualice. Dicho sea de paso, Raphaël Hertzog escribió un muy buen artículo al respecto (en inglés).

    @Javier: otra vez, gracias =)

    ResponderEliminar
  4. Igual lo cree yo, no me acuerdo. Entiendo que ahora te funciona entonces. Veo que la Delta 1010LT también usa el driver snd-ice1712 (si no es así no lo estás poniendo bien).

    De nada ;)

    ResponderEliminar
  5. Bueno, la historia no terminó ahí.

    Resulta que hace un tiempo compré una Radeon HD 5450 y tiene HDMI. El problema: me tomaba el slot 0 al bootear (aunque no siempre).

    dmesg decía:

    cannot find the slot for index 0 (range 0-0), error: -16
    ICE1712: probe of 0000:03:06.0 failed with error -16

    Volví a usar /etc/asound.conf:

    pcm.!default {
    type hw
    card M1010LT
    }
    ctl.!default {
    type hw
    card M1010LT
    }

    Y en /etc/modprobe.d/alsa-base.conf quité el index como parámetro de ICE:

    # Options for the M1010LT.
    alias snd-card-0 snd-ice1712
    options snd-ice1712 model=delta1010lt

    ResponderEliminar
  6. Una vuelta de rosca mas: para que flash, gstreamer y otros anden OK, es mejor que /etc/asound.conf diga solo:

    ctl.!default {
    type hw
    card M1010LT
    }

    ResponderEliminar