¿Qué significan los dispositivos ALSA como "hw: 0,0"? ¿Cómo puedo determinar cuál usar?

63

He buscado una y otra vez y no puedo encontrar ninguna explicación de lo que significa "hw: 0,0". ¿Cómo determino el número de mi tarjeta de audio USB? MPD requiere que ingrese algo como esto:

audio_output {
        type                    "alsa"
        name                    "Sound Card"
        device                  "hw:0,0"     # optional
        format                  "44100:16:2" # optional
}

Si hago "alsamixer -c 1", se abre el control de volumen de la tarjeta USB, pero eso realmente no me ayuda.

¿Dónde puedo encontrar una lista de nombres / números de dispositivos en mi sistema? ¿Son resistentes a los cambios de hardware? Si elimino la tarjeta 2, ¿la tarjeta 3 se convierte en la tarjeta 2? ¿Hay otras formas de identificar dispositivos? ¿Dónde puedo encontrar documentación para todo esto?

endolito
fuente
Entonces, ¿qué terminó funcionando?
quack quijote
Cambiar a PulseAudio funcionó, más o menos. :) Pero tenía que iniciar sesión localmente y modificar el enrutamiento de audio. Entonces decidí que MPD apesta y me di por vencido.
endolito el
En realidad, "hw: 1,0" probablemente funcionó, pero decía que el dispositivo estaba en uso (¿Pulse?) No probé el otro método, pero espero que esto ayude a otros.
endolito el

Respuestas:

48

La respuesta de JohnT da una buena base. Lo seguiré para encontrar los dispositivos en su sistema. Use "aplay -l" para obtener una lista de los dispositivos en su sistema. El hw: X, Y proviene de esta asignación de su hardware; en este caso, X es el número de tarjeta , mientras que Y es el número de dispositivo .

$ aplay -l   # note lower-case "L" option
**** List of PLAYBACK Hardware Devices ****
card 0: T71Space [Terratec Aureon 7.1-Space], device 0: ICE1724 [ICE1724]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: T71Space [Terratec Aureon 7.1-Space], device 1: IEC1724 IEC958 [IEC1724 IEC958]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: T71Space [Terratec Aureon 7.1-Space], device 2: ICE1724 Surrounds [ICE1724 Surround PCM]
  Subdevices: 3/3
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2

Como se trata de dispositivos USB que no siempre obtienen los mismos números de dispositivo cada vez que se conectan, el dispositivo hw: X, Y puede cambiar. La respuesta más simple es, para un sistema de escritorio, pruebe las herramientas de configuración de GNOME / KDE / Xfce y vea si son lo suficientemente inteligentes como para detectar los cambios.

La forma compleja, si no está haciendo esto con un sistema de escritorio, se vuelve ... interesante. Es posible que pueda evitar el uso de alias de dispositivo en lugar de "hw: X, Y": esto es lo que muestra la salida de "aplay -L". El "algo: CARD = FOO, DEV = Y" es el alias, y probablemente no cambiará entre los diferentes complementos del dispositivo, donde la X en "hw: X, Y" podría. (Suponiendo que esté usando el mismo dispositivo USB cada vez).

$ aplay -L
default:CARD=CK804
    NVidia CK804, NVidia CK804
    Default Audio Device
front:CARD=CK804,DEV=0                 # hw:0,0
    NVidia CK804, NVidia CK804
    Front speakers
surround40:CARD=CK804,DEV=0            # hw:0,1
    NVidia CK804, NVidia CK804
    4.0 Surround output to Front and Rear speakers

Entonces su comando aplay se convertiría en "aplay -D front: CARD = CK804, DEV = 0 somefile.wav", y puede usar el mismo nombre de dispositivo en su .asoundrc.


Si necesita algo más estable en un nivel aún más bajo, dispositivos de kernel reales, udev es lo que desea: es el sistema que permite la conexión en caliente de dispositivos en el sistema. Puede escribir reglas para udev (y aquí está la página de manual ) que permitirá que los dispositivos obtengan el mismo nombre de dispositivo cuando estén conectados.

quijote curandero
fuente
3
¡Ajá! Me habían dicho aplay -L, que no proporciona el mismo resultado que aplay -l. suspiro
endolito
1
¿Cómo puedes saber que surround40:CARD=CK804,DEV=0es hw:0,1? Por lo que puedo decir, se hw:0,0da a que se refiere DEV=0, pero en una configuración diferente (4 canales en lugar de 2 como en front:CARD=CK804,DEV=0).
zpon
19

hw:0,0especifica el dispositivo predeterminado, en la tarjeta de sonido predeterminada. Para acceder al primer dispositivo de su segunda tarjeta de sonido, debe especificar hw:1,0. Estos se especifican en su .asoundrc. Más sobre todo esto aquí .

John T
fuente
55
Específicamente aquí: alsa-project.org/main/index.php/…
endolith