我买了一个 USB 声卡。我想设置我的 Linux 桌面,使其在插入 USB 设备时优先使用 USB 设备,并在设备插入(拔出)时自动切换。这可行吗?如何实现?
答案1
使用以下方式查找您的卡
$ cat /proc/asound/cards
要获取有效的 ALSA 卡名称,请使用aplay
:
$ aplay -l
然后/etc/asound.conf
使用以下命令创建:
pcm.!default {
type hw
card 1
}
ctl.!default {
type hw
card 1
}
将“卡 1”替换为上面确定的卡号或名称。
或者,您也可以更改卡片的顺序因此您的 USB 卡将是卡 0,并且无需编辑即可工作asound.conf
。
答案2
这是在 Alsa 中选择默认声卡的方法。如果您使用的是 Pulse Audio,您可能需要安装 Alsa 以使此方法起作用。
猫/ proc / asound /模块
将列出您的声音模块。该命令的输出将如下所示(例如):
0 snd_hda_intel
1 snd_usb_intel
从上面您可以很容易地了解哪一个是您的 USB 声卡。
nano /etc/modprobe.d/alsa-base.conf
编辑此 alsa-base.conf,使你的首选卡具有索引 =-2 / 0 并且另一张卡具有索引 =-1 / 1 (坚持使用 -2 和 -1 )
选项 snd_hda_intel 索引=-1
选项 snd_usb_intel 索引=-2
在这种情况下,USB 设备是首选设备。
如果输出中有两张同名的不同卡,如下所示:
选项 snd_hda_intel
选项 snd_hda_intel
发出这个命令来找出哪个是哪个:
猫/proc/asound/cards
然后按如下方式编辑模块:
选项 snd_hda_intel 启用=1 索引=0
选项 snd_hda_intel 启用=0 索引=1
可能需要重新启动。因此您可能必须手动切换声卡。
答案3
我也无法从 USB 设备获取输出。我的cat /proc/asound/modules
输出是:
0 snd_hda_intel
1 snd_hda_intel
2 snd_usb_audio
我尝试了这里描述的两个答案,但都没有帮助(使用了许多索引组合和多次重启)。我认为问题在于我的 USB 设备在启动后初始化。无论如何,所以我的工作解决方案是通过更新将其他 2 个声音设备列入黑名单/etc/modprobe.d/blacklist.conf
:
blacklist snd_hda_intel
答案4
虽然您可以通过编辑 .asoundrc 或系统 asound.conf 来更改默认 alsa 卡,但这种方法存在一些重大问题。
它很脆弱,需要重新启动应用程序才能实现。
如果您想动态切换卡,那么您确实需要使用能够从声卡中正确抽象出应用程序的声音服务器,例如 pulseaudio。