2013-08-01 07:17:57 +0000 2013-08-01 07:17:57 +0000
37
37

如何让阿尔萨自动选择喜欢的声音设备?

我买了一个USB声卡。我想设置我的Linux桌面,使它更喜欢USB设备,如果它被插入,并且在设备被(解除)插入时自动切换。可以吗,怎么做?

答案 (6)

37
37
37
2013-08-09 17:47:31 +0000

$ 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就能工作。

16
16
16
2013-08-10 17:54:57 +0000

这是在Alsa中选择默认声卡的方法。如果你使用的是Pulse Audio,你可能需要安装Alsa才能使用这个方法。

cat /proc/asound/modules

将列出你的声卡模块,命令的输出将是这样的(例如):

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 )

options snd\hda_intel index=-1

options snd\usb_intel index=-2

在这种情况下,usb设备是首选设备。

如果你有两张不同的卡,但输出的卡名相同,就像这样。

options snd_hda_intel

options snd_hda_intel

发出这个命令来找出哪个是哪个。

cat /proc/asound/cards

然后这样编辑模块:

options sndhdaintel enable=1 index=0

options sndhdaintel enable=0 index=1

可能需要重新启动。

4
4
4
2016-05-28 03:47:19 +0000

Matija Nalis 的答案对我来说只有一半的效果(alsamixer 改变了默认值,但其他东西如 aplay 和 firefox 却顽固地坚持错误的默认值)。这个来自debian wiki的例子对我来说是可行的(在CentOS-6笔记本上):

defaults.pcm.!card Generic_1
defaults.ctl.!card Generic_1
defaults.pcm.!device 0
defaults.ctl.!device 0

郑重声明。ALSA的文档很差,尤其是像选择使用哪块卡这样的非常简单的东西太难了。更糟糕的是,它似乎在不同的系统之间发生了变化。另外,我从aplay -l中得到了那个 “Generic/_1 "的标签,它在列表中显示为 "卡1"。其他人似乎都在用它,所以我也这么做了……它是什么意思我也说不清。

4
4
4
2015-12-14 23:55:48 +0000

我也无法从我的USB设备上获得输出。我的cat /proc/asound/modules输出是:

0 snd_hda_intel

1 snd_hda_intel

2 snd_usb_audio

我已经尝试了这里描述的两个答案,但没有任何帮助(有许多索引组合和许多重启)。我想问题出在我的USB设备启动后的初始化上。不管怎么说,我的解决方法是把另外两个声音设备的黑名单更新为/etc/modprobe.d/blacklist.conf

blacklist snd_hda_intel
1
1
1
2016-01-07 23:45:17 +0000

虽然你可以通过编辑.asoundrc或系统asound.conf来改变默认的alsa卡,但这种方法有几个重要问题。

它很脆弱,需要重启应用程序才能被尊重。

如果你想在飞行中切换声卡,那么你真的需要使用一个能从声卡中正确抽象出应用程序的soundserver,比如pulseaudio。

-1
-1
-1
2016-06-24 16:47:20 +0000

这是Matija Nalis和Tel的答案的变体。这是我的工作方法。

~/.asoundrc

defaults.pcm.!card 1
defaults.ctl.!card 1

(Odroid C0, Debian Jessie, HDMI音频为卡0,USB声卡为卡1,根据aplay -l)

注:其他方法对我来说没有用,因为/proc/asound/modules不存在,也没有hdmi音频模块可以列入黑名单或放到低优先级,它被嵌入到内核中。看来我必须重新编译没有hdmi音频支持的内核才能完全禁用它。