如何按名称选择 amixer 中的卡

如何按名称选择 amixer 中的卡

我有一个 Razer 耳机,它有一个可以与其一起使用的 USB 声卡 (BlacShark V2)。
从某个时刻开始,当我启动系统时(耳机通常连接到我的系统并且我不会拔掉它),耳机的扬声器增益被随机设置为较低的数字。我发现我可以从 更改它们alsamixer,然后我尝试找到一种方法来使用脚本设置它们,以便我可以在每次启动系统时运行它。然后我发现了“amixer”,最终的命令如下所示:
amixer -c 1 cset numid=9,iface=MIXER,name='Speaker Playback Volume' 64
该命令将增益设置为最大,当我编写它并将其保存在 bash 脚本中时,我的耳机位于卡号 1 上。
问题是有时我的 Razer 耳机被识别为卡 2,然后运行此命令无法执行其预期操作。

有什么方法可以通过卡名称识别我要为其设置控件的卡吗?如果不是,我至少可以给耳机卡一个固定的号码,以便我可以可靠地运行命令吗?先谢谢了

答案1

有多种方法可以解决您的问题(不一定按照标题中的措辞回答您的问题)。其中之一,假设您希望 amixer 命令高效,并且您的 alsa 驱动程序构建为模块(而不是内核中),其中包括强制卡以某种精确的顺序加载

从 :

acoswt@Tux ~ $ cat /proc/asound/cards
 0 [Loopback       ]: Loopback - Loopback
                      Loopback 1
 1 [VirMIDI        ]: VirMIDI - VirMIDI
                      Virtual MIDI Card 1
 2 [M2496          ]: ICE1712 - M Audio Audiophile 24/96
                      M Audio Audiophile 24/96 at 0xec00, irq 17
 3 [Exchange       ]: USB-Audio - Hercules Dualpix Exchange
                      Guillemot Corporation Hercules Dualpix Exchange at usb-0000:00:1d.7-3, high spe

我可以意识到我的 M Audio Audiophile 声卡位于由 snd-ice1712 alsa 驱动程序驱动的索引 2,而我的 USB 网络摄像头的音频子系统位于由 snd-usb-audio 驱动程序驱动的索引 3。

我是否愿意永久(在重新启动后)强制它们分别位于索引 0 和 1 处,我只需要添加以下内容到/etc/modprobe.d/soundor (无论带有 .conf 扩展名的其他名称):

options snd-ice1712 index=0
options snd-usb-audio index=1

顺便说一句:请注意,某些配置文件可能已经存在,具体取决于您的发行版(即 alsa.conf、alsa-base.conf...),并且可能会强制参数与上面给出的说明相冲突。
在这种情况下,最好相应地重新编辑这些现有文件,并注意最终可能优先/覆盖/与新设置冲突的其他行。

相关内容