像“ hw:0,0”这样的ALSA设备是什么意思?如何找出要使用的?


63

我已经一遍又一遍地搜索,找不到“ 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吗?还有其他识别设备的方法吗?我在哪里可以找到有关这些文件的文档?


那么最终成功了吗?
2009年

切换到PulseAudio确实可行。:)但是我必须在本地登录并修改音频路由。然后我决定MPD很烂,放弃了。
Endolith

实际上“ hw:1,0”可能有用,但是它说该设备正在使用(Pulse吗?),我没有尝试其他方法,但是希望这会对其他人有所帮助。
endlith

Answers:


48

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配置工具,并查看它们是否足够智能以接受更改。

如果您不使用台式机系统执行此复杂操作,则会变得很有趣。您也许可以使用设备别名代替“ hw:X,Y”-这就是“ aplay -L”的输出所显示的。“ something:CARD = FOO,DEV = Y”是别名,在不同的设备插件之间可能不会更改,而“ hw:X,Y”中的X可能会在其中变化。(假设您每次都使用相同的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

因此,您的aplay命令将变为“ aplay -D front:CARD = CK804,DEV = 0 somefile.wav”,并且您可以在.asoundrc中使用相同的设备名称。


如果您需要甚至在更低级别的实际内核设备上都更稳定的东西,则需要udev-它是允许将设备热插拔到系统中的系统。您可以为udev编写规则(这是手册页),该规则允许设备在插入时获得相同的设备名。


3
啊哈!有人告诉我aplay -L,它没有提供与相同的输出aplay -l叹息
endolith

1
你如何判断surround40:CARD=CK804,DEV=0hw:0,1?据我所知hw:0,0,它指向DEV=0,但是使用不同的配置(4个通道,而不是中的2个front:CARD=CK804,DEV=0)。
zpon

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.