it-swarm.asia

"Hw: 0,0" gibi ALSA cihazları ne anlama geliyor? Hangisini kullanacağımı nasıl bulurum?

Tekrar tekrar aradım ve "hw: 0,0" ifadesinin ne anlama geldiğine dair hiçbir açıklama bulamadım. USB ses kartımın sayısını nasıl belirlerim? MPD böyle bir şey girmemi istiyor:

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

Eğer "alsamixer -c 1" yaparsam, USB kartının ses kontrolünü açar, ancak bu gerçekten bana yardımcı olmuyor.

Sistemimdeki cihaz adlarının/numaralarının listesini nerede bulabilirim? Donanım değişikliklerine karşı dayanıklılar mı? Kart 2'yi çıkarırsam, kart 3 kart 2 olur mu? Cihazları tanımlamanın başka yolları var mı? Bunlardan herhangi birinin belgelerini nerede bulabilirim?

60
endolith

JohnT'un cevabı iyi bir temel verir. Sisteminizdeki cihazları nasıl bulacağınızı izleyeceğim. Sisteminizdeki cihazların bir listesini görmek için "aplay -l" kullanın. hw: X, Y donanımınızın bu eşlemesinden gelir - bu durumda, X kart sayı, Y device number.

$ 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

Bunlar, her takıldıklarında daima aynı cihaz numaralarını elde etmeyebilecek USB cihazları oldukları için, hw: X, Y cihazı değişebilir. En basit cevap, bir masaüstü sistemi için GNOME/KDE/Xfce konfigürasyon araçlarını denemek ve değişiklikleri alacak kadar akıllı olup olmadıklarına bakmaktır.

Karmaşık bir şekilde, bunu bir masaüstü sistemiyle yapmıyorsanız, ilginçleşir. "Hw: X, Y" yerine aygıt takma adı) ile kurtulmak mümkün olabilir - "aplay -L" çıktısının gösterdiği şey budur. "Bir şey: CARD = FOO, DEV = Y" öğesi takma addır ve muhtemelen "hw: X, Y" deki X'in farklı aygıt eklentileri arasında değişmeyecektir. (Her seferinde aynı USB donanım kilidini kullandığınızı varsayalım.)

$ 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

Böylece aplay komutunuz "aplay -D front: CARD = CK804, DEV = 0 somefile.wav" olur ve aynı cihaz adını .asoundrc içinde kullanabilirsiniz.


Daha düşük bir seviyede daha kararlı bir şeye ihtiyacınız olursa, gerçek çekirdek cihazları, udev istediğiniz şey - sisteme cihazların çalışırken takılmasını sağlayan sistemdir. Yapabilecekleriniz udev için kurallar yazınız (ve işte man sayfası ) cihazların prize takıldıklarında aynı cihaz adını almalarını sağlayacak.

45
quack quixote

hw:0,0, varsayılan ses kartındaki varsayılan aygıtı belirtir. İkinci ses kartınızın ilk cihazına erişmek için hw:1,0 öğesini belirtirsiniz. Bunlar .asoundrc içinde belirtilmiştir. Tüm bunlar hakkında daha fazlası burada .

18
John T