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

"hw:0,0 "这样的ALSA设备是什么意思?我怎么知道该用哪个器件?

我找了一遍又一遍,都没有找到关于 “hw:0,0 "是什么意思的解释。如何确定我的USB音频卡的编号?MPD要求我输入这样的内容。

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

如果我用 "alsamixer -c 1 "打开USB卡的音量控制,但这对我没有帮助。

我在哪里可以找到系统上的设备名称/编号列表?它们对硬件的变化有弹性吗?如果我删除卡2,卡3是否会变成卡2?是否有其他方法来识别设备?我在哪里可以找到有关这些的文档?

答案 (2)

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

JohnT的回答给出了一个很好的基本。我接着说说如何找到你系统上的设备。使用 “aplay -l "来获取你系统上的设备列表。hw:X,Y来自于你的硬件的这个映射–在这里,X是号,而Y是设备号。

$ 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

由于这些都是USB设备,每次插入时可能不会总是得到相同的设备号,所以hw:X,Y设备可能会改变。最简单的答案是,对于桌面系统来说,尝试使用GNOME/KDE/Xfce配置工具,看看它们是否足够聪明,能够接收到这些变化。

复杂的方法,如果你不是在桌面系统上做这个,就会变得……有趣。你也许可以用 使用 device aliases 来代替 "hw:X,Y” – 这就是 “aplay -L” 的输出。something:CARD=FOO,DEV=Y “是别名,可能不会在不同的设备插件之间改变,而 "hw:X,Y "中的X可能会改变。

$ 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

所以你的aplay命令会变成 "aplay -D front:CARD=CK804,DEV=0 somefile.wav",你可以在你的.asoundrc中使用相同的devicename。


如果你需要更低级别的更稳定的东西,实际的内核设备,udev就是你想要的–它是允许热插拔设备到系统中的系统。你可以 为udev写规则 (这里是 man page ),这将允许设备在插入时获得相同的devicename。

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

hw:0,0指定默认设备,在默认声卡上。要访问你的第二块声卡的第一个设备,你会指定hw:1,0。这些都是在你的.asoundrc中指定的。更多关于这一切的信息 这里 .