2009-10-11 17:32:47 +0000 2009-10-11 17:32:47 +0000
67
67

Co oznaczają urządzenia ALSA takie jak "hw:0,0"? Jak mogę się dowiedzieć, których użyć?

Szukałem w kółko i nie mogę znaleźć żadnego wyjaśnienia, co oznacza “hw:0,0”. Jak mogę ustalić numer mojej karty dźwiękowej USB? MPD ](http://mpd.wikia.com/) wymaga ode mnie wpisania czegoś takiego:

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

Jeśli zrobię “alsamixer -c 1” to otwiera mi się regulacja głośności karty USB, ale to naprawdę mi nie pomaga.

Gdzie mogę znaleźć listę nazw/numerów urządzeń w moim systemie? Czy są one odporne na zmiany sprzętowe? Jeśli usunę kartę 2, czy karta 3 stanie się kartą 2? Czy są inne sposoby na identyfikację urządzeń? Gdzie znajdę dokumentację do tego wszystkiego?

Odpowiedzi (2)

53
53
53
2009-10-11 18:12:29 +0000

Odpowiedź JohnT'a daje dobre podstawy. Podam jak znaleźć urządzenia w twoim systemie. Użyj “aplay -l” aby uzyskać listę urządzeń w twoim systemie. hw:X,Y pochodzi z mapowania twojego sprzętu – w tym przypadku, X jest numerem karty, a Y jest numerem urządzenia.

$ 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

Ponieważ są to urządzenia USB, które mogą nie zawsze mieć ten sam numer urządzenia za każdym razem, gdy są podłączane, hw:X,Y urządzenia może się zmienić. Najprostszą odpowiedzią jest, dla systemu stacjonarnego, wypróbowanie narzędzi konfiguracyjnych GNOME/KDE/Xfce i sprawdzenie, czy są one wystarczająco inteligentne, aby wychwycić zmiany.

Złożony sposób, jeśli nie robisz tego z systemem stacjonarnym, staje się … interesujący. Możesz być w stanie uciec z użyciem device aliases zamiast “hw:X,Y” - to właśnie pokazuje wyjście “aplay -L”. To “something:CARD=FOO,DEV=Y” jest aliasem i prawdopodobnie nie będzie się zmieniać pomiędzy różnymi wtyczkami urządzeń, podczas gdy X w “hw:X,Y” może. (Zakładając, że używasz tego samego klucza USB za każdym razem.)

$ 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

Tak więc twoja komenda aplay będzie brzmiała “aplay -D front:CARD=CK804,DEV=0 somefile.wav”, i możesz użyć tej samej nazwy urządzenia w twoim .asoundrc.


Jeśli potrzebujesz czegoś bardziej stabilnego na jeszcze niższym poziomie, rzeczywistych urządzeń jądra, udev jest tym, czego potrzebujesz – jest to system, który pozwala na podłączanie urządzeń do systemu na gorąco. Możesz napisać reguły dla udev (i tutaj jest strona man ), które pozwolą urządzeniom na otrzymanie tej samej nazwy devicen po podłączeniu.

19
19
19
2009-10-11 17:40:05 +0000

hw:0,0 określa urządzenie domyślne, na domyślnej karcie dźwiękowej. Aby uzyskać dostęp do pierwszego urządzenia w drugiej karcie dźwiękowej, podałbyś hw:1,0. Są one określone w twoim .asoundrc. Więcej o tym wszystkim tutaj .