ALSA设备如“hw:0,0”是什么意思?我该如何确定使用哪个?

Modified on: Fri, 22 Mar 2019 18:00:02 +0800

我一遍又一遍地搜索,无法找到“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吗?还有其他方法来识别设备吗?我在哪里可以找到任何文件?

作者:endolith

最佳答案

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”的输出所显示的内容。 “东西: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中使用相同的devicename。


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


相关问答

添加新评论