Co oznaczają urządzenia ALSA, takie jak „hw: 0,0”? Jak wymyślić, którego użyć?

63

Szukałem w kółko i nie mogę znaleźć żadnego wyjaśnienia, co oznacza „hw: 0,0”. Jak określić numer mojej karty dźwiękowej USB? MPD wymaga ode mnie wprowadzenia 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”, otworzy się regulacja głośności na karcie USB, ale to naprawdę mi nie pomaga.

Gdzie mogę znaleźć listę nazw / numerów urządzeń w moim systemie? Czy są odporne na zmiany sprzętu? Jeśli usunę kartę 2, czy karta 3 stanie się kartą 2? Czy istnieją inne sposoby identyfikacji urządzeń? Gdzie mogę znaleźć dokumentację na dowolny z tych tematów?

endolit
źródło
więc co w końcu działało?
quack quixote
Przejście na PulseAudio działało w pewnym sensie. :) Ale musiałem być zalogowany lokalnie i zmodyfikować routing audio. Potem zdecydowałem, że MPD jest do bani i poddałem się.
endolith,
Właściwie „hw: 1,0” prawdopodobnie działało, ale powiedziało, że urządzenie jest w użyciu (przez Pulse?) Nie próbowałem innej metody, ale mam nadzieję, że to pomoże innym.
endolith,

Odpowiedzi:

48

Odpowiedź JohnT daje dobre podstawy. Sprawdzę, jak znaleźć urządzenia w twoim systemie. Użyj „aplay -l”, aby uzyskać listę urządzeń w systemie. Hw: X, Y pochodzi z tego odwzorowania sprzętu - w tym przypadku X jest karta numer, a Y to urządzenie numer.

$ 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 nie zawsze otrzymują te same numery urządzeń przy każdym podłączeniu, urządzenie hw: X, Y może się zmienić. Najprostsza odpowiedź brzmi: w przypadku systemu stacjonarnego wypróbuj narzędzia konfiguracyjne GNOME / KDE / Xfce i sprawdź, czy są wystarczająco inteligentne, aby odebrać zmiany.

Złożony sposób, jeśli nie robisz tego z systemem stacjonarnym, staje się ... interesujący. Być może uda Ci się uniknąć użycia aliasów urządzeń zamiast „hw: X, Y” - tak pokazuje wyjście „aplay -L”. „Coś: CARD = FOO, DEV = Y” to alias i prawdopodobnie nie zmieni się pomiędzy różnymi wtyczkami urządzeń, gdzie X w „hw: X, Y” może. (Zakładając, że za każdym razem używasz tego samego klucza USB).

$ 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

Więc twoje polecenie aplay zmieni się w „aplay -D front: CARD = CK804, DEV = 0 somefile.wav”, i możesz użyć tej samej nazwy pliku w .asoundrc.


Jeśli potrzebujesz czegoś bardziej stabilnego na jeszcze niższym poziomie, rzeczywistych urządzeń jądra, udev jest tym, czego chcesz - to system, który pozwala na podłączanie urządzeń do systemu. Możesz napisać reguły dla udev (i tutaj jest strona podręcznika ), które pozwolą urządzeniom uzyskać tę samą nazwę urządzenia po podłączeniu.

quack quixote
źródło
3
Aha! Powiedziano mi aplay -L, że nie zapewnia takiej samej wydajności jak aplay -l. westchnienie
endolith
1
Jak można powiedzieć, że surround40:CARD=CK804,DEV=0jest hw:0,1? O ile mogę powiedzieć, podam hw:0,0, że odnosi się do DEV=0, ale w innej konfiguracji (4 kanały zamiast 2 jak w front:CARD=CK804,DEV=0).
zpon
19

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

John T.
źródło
5
Konkretnie tutaj: alsa-project.org/main/index.php/...
endolit