Was bedeuten ALSA-Geräte wie „hw: 0,0“? Wie finde ich heraus, was ich verwenden soll?

63

Ich habe immer wieder gesucht und kann keine Erklärung dafür finden, was "hw: 0,0" bedeutet. Wie bestimme ich die Nummer meiner USB-Audiokarte? Bei MPD muss ich Folgendes eingeben:

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

Wenn ich "alsamixer -c 1" mache, öffnet sich der Lautstärkeregler der USB-Karte, aber das hilft mir wirklich nicht.

Wo finde ich eine Liste der Gerätenamen / -nummern auf meinem System? Sind sie widerstandsfähig gegen Hardwareänderungen? Wenn ich Karte 2 entferne, wird Karte 3 zu Karte 2? Gibt es andere Möglichkeiten, Geräte zu identifizieren? Wo finde ich Dokumentation für irgendetwas davon?

Endolith
quelle
Also, was hat am Ende funktioniert?
Quack Quijote
Der Wechsel zu PulseAudio hat funktioniert. :) Ich musste mich aber lokal einloggen und das Audio-Routing ändern. Dann habe ich entschieden, MPD saugt und aufgegeben.
Endolith
Eigentlich hat "hw: 1,0" wahrscheinlich funktioniert, aber es hieß, das Gerät sei in Gebrauch (von Pulse?). Ich habe die andere Methode nicht ausprobiert, aber hoffentlich wird dies anderen helfen.
Endolith

Antworten:

48

JohnTs Antwort gibt eine gute Grundlage. Im Anschluss werde ich erfahren, wie Sie die Geräte auf Ihrem System finden. Verwenden Sie "aplay -l", um eine Liste der Geräte in Ihrem System abzurufen. Das hw: X, Y ergibt sich aus dieser Zuordnung Ihrer Hardware. In diesem Fall ist X die Kartennummer und Y die Gerätenummer .

$ 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

Da es sich um USB-Geräte handelt, die möglicherweise nicht bei jedem Anschließen die gleichen Gerätenummern erhalten, kann sich das hw: X, Y-Gerät ändern. Die einfachste Antwort ist, dass Sie für ein Desktop-System die GNOME / KDE / Xfce-Konfigurationstools ausprobieren und prüfen, ob sie intelligent genug sind, um die Änderungen zu übernehmen.

Der komplexe Weg, wenn Sie dies nicht mit einem Desktop-System tun, wird ... interessant. Sie könnten in der Lage sein , mit wegzukommen mit Geräte - Aliase , anstatt die „hw: X, Y“ - das ist , was die Ausgabe von „aplay -L“ zeigt. Das Zeug "something: CARD = FOO, DEV = Y" ist der Alias ​​und wird wahrscheinlich nicht zwischen verschiedenen Geräte-Plug-Ins wechseln, wo das X in "hw: X, Y" sein könnte. (Angenommen, Sie verwenden jedes Mal denselben USB-Dongle.)

$ 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

Ihr aplay-Befehl würde also zu "aplay -D front: CARD = CK804, DEV = 0 somefile.wav", und Sie können denselben Gerätenamen in Ihrer .asoundrc-Datei verwenden.


Wenn Sie etwas Stabileres auf einer noch niedrigeren Ebene benötigen, nämlich Kernel-Geräte, ist udev genau das, was Sie wollen - es ist das System, das das Hotplugging von Geräten in das System ermöglicht. Sie können Regeln für udev (und hier die Manpage ) schreiben , die es Geräten ermöglichen, denselben Gerätenamen zu erhalten, wenn sie angeschlossen sind.

Quacksalber
quelle
3
Aha! Mir wurde gesagt aplay -L, dass das nicht die gleiche Ausgabe liefert wie aplay -l. Seufzer
Endolithe
1
Wie kann man sagen , dass surround40:CARD=CK804,DEV=0ist hw:0,1? Soweit ich das beurteilen kann wird hw:0,0angegeben, dass es sich um DEV=0eine andere Konfiguration handelt (4 Kanäle statt 2 wie in front:CARD=CK804,DEV=0).
zpon
19

hw:0,0Gibt das Standardgerät auf der Standard-Soundkarte an. Um auf das erste Gerät Ihrer zweiten Soundkarte zuzugreifen, geben Sie Folgendes an hw:1,0. Diese sind in Ihrer angegeben .asoundrc. Mehr dazu hier .

John T
quelle
5
Speziell hier: alsa-project.org/main/index.php/…
endolith