web-dev-qa-db-de.com

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

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? MPD erfordert, dass ich so etwas eingebe:

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 die Lautstärkeregelung 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?

60
endolith

JohnTs Antwort liefert 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, die auf dem System zu erhalten. Das hw: X, Y stammt aus dieser Zuordnung Ihrer Hardware. In diesem Fall ist X die Karte Nummer, während Y die Gerät Nummer ist.

$ 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 diese USB-Geräte sind, die nicht immer die gleichen Gerätenummern jedes Mal bekommen könnte sie angeschlossen sind, die hw: X, Y könnte 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.

Die komplexe Art und Weise, wenn Sie nicht mit einem Desktop-System tun dies, bekommt ... interessant. Sie könnten in der Lage sein, mit durchzukommen, indem Sie Geräte-Aliase anstelle von "hw: X, Y" verwenden - das zeigt die Ausgabe von "aplay -L". 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, sind die tatsächlichen Kernel-Geräte udev 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 schreiben (und hier ist die Manpage ), die es Geräten ermöglichen, denselben Gerätenamen zu erhalten, wenn sie angeschlossen sind.

45
quack quixote

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

18
John T