我的桌面(运行 Arch)有一个(非常非常)旧的 SB Live!声卡不再工作得很好。我想改用主板的板载音频控制器。遗憾的是,pavucontrol
我的 DE(肉桂)设置都只能看到 SB Live 卡(点击查看大图):
但是,inxi
显示板载卡已被识别并已分配驱动程序:
$ inxi -A
Audio: Card-1 Intel NM10/ICH7 Family High Definition Audio Controller driver: snd_hda_intel
Card-2 Creative Labs SB Live! EMU10k1 driver: snd_emu10k1
Card-3 Logitech Webcam C210 driver: USB Audio
Sound: Advanced Linux Sound Architecture v: k4.2.5-1-ARCH
驱动模块确实已加载:
$ lsmod | grep snd_hda_intel
snd_hda_intel 32768 9
snd_hda_codec 106496 3 snd_hda_codec_via,snd_hda_codec_generic,snd_hda_intel
snd_hda_core 49152 4 snd_hda_codec_via,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
snd_pcm 86016 11 snd_usb_audio,snd_ac97_codec,snd_hda_codec,snd_hda_intel,snd_emu10k1,snd_hda_core
snd 65536 41 snd_usb_audio,snd_ac97_codec,snd_hwdep,snd_timer,snd_hda_codec_via,snd_pcm,snd_rawmidi,snd_hda_codec_generic,snd_usbmidi_lib,snd_hda_codec,snd_hda_intel,snd_emu10k1,snd_seq_device
如果板载卡被 SB Live! 阻止,我将 SB 的驱动程序列入黑名单:
$ echo 'blacklist snd_emu10k1' | sudo tee /etc/modprobe.d/snd_emu10k1.conf
重启后inxi
显示:
$ inxi -A
Audio: Card-1 Intel NM10/ICH7 Family High Definition Audio Controller driver: snd_hda_intel
Card-3 Logitech Webcam C210 driver: USB Audio
Sound: Advanced Linux Sound Architecture v: k4.2.5-1-ARCH
还有SB Live!在 Cinnamon 的设置中不再可见,pavucontrol
但板载卡也不再可见。上面的截图中只显示了 HDMI 端口。
那么,如何让我的系统使用板载声卡呢?
答案1
使用udev自动加载卡
负责自动加载ALSA识别的声卡的pulseaudio模块位于module-udev-detect
支持udev的系统上。这个模块应该在启动pulseaudio时加载,它default.pa
通常位于/etc/pulse/
.
要查看该模块是否已加载,我们可以发出:
pactl list short modules
如果没有,module-udev-detect
我们可以通过运行来加载和测试它
pactl load-module module-udev-detect
然后,系统中存在的任何 ALSA 卡都应作为输出接收器加载,可从声音设置中选择或使用
pactl list short cards
成功后,可以将以下行添加到我们的default.pa
:
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
load-module module-detect
.endif
可能module-detect
会检测到不支持 udev 的系统上的卡。
手动加载 ALSA 卡
如果失败,我们还可以使用以下命令手动加载 ALSA 卡:
pactl load-module module-alsa-card <options>
这个<options>
领域取决于我们的硬件。在下面的例子中
device_id="0" name="pci-0000_00_05.0" card_name="alsa_card.pci-0000_00_05.0" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes
device_id
是给定的卡号aplay -l
name
是我们可以自由选择的名字card_name
是 ALSA 定义的名称,如上所列ls /dev/snd/by-path
其他选项为标准卡的默认值。
同样,成功后我们可以将其添加到/etc/pulse/default.pa
每次声音服务器启动时加载。
load-module module-alsa-card <options>