Comment on page
9.2.设置声卡
注意只有在 FreeBSD 未正确检测到声卡时才需要加载声卡模块。
如果不知道系统使用哪个声卡,或者使用哪个模块,可以通过执行以下命令加载
snd_driver
元驱动程序:# kldload snd_driver
或者,要在启动时将驱动程序加载为模块,请在 /boot/loader.conf 中添加以下行:
snd_driver_load="YES"
为了确认检测到声卡,可以执行以下命令:
% dmesg | grep pcm
输出应类似于以下内容:
pcm0: <Conexant CX20561 (Hermosa) (Analog 2.0+HP/2.0)> at nid 26,22 and 24 on hdaa0
pcm1: <Conexant CX20561 (Hermosa) (Internal Analog Mic)> at nid 29 on hdaa0
还可以使用以下命令检查声卡的状态:
# cat /dev/sndstat
输出应类似于以下内容:
Installed devices:
pcm0: <Conexant CX20561 (Hermosa) (Analog 2.0+HP/2.0)> (play/rec) default
pcm1: <Conexant CX20561 (Hermosa) (Internal Analog Mic)> (rec)
如果未列出任何
pcm
设备,请仔细检查是否加载了正确的设备驱动程序。如果一切顺利,声卡现在应该在 FreeBSD 上正常工作。% beep
FreeBSD 具有不同的实用程序,用于设置和显示构建在 FreeBSD 声音系统上的声卡混音器值:
表 1. 支持的混音器包
名称 | 许可证 | 包 | 工具包 |
---|---|---|---|
BSD-2 | 包含在基本系统中 | CLI | |
dsbmixer | BSD-2 | Qt | |
KDE Plasma 音频小部件 | GPL 2.0 | Qt | |
mixertui | BSD-2 | TUI |
显卡通常配备了自己的集成声音设备,可能不清楚使用哪个作为默认设备。为了确认,请运行 dmesg 并查看 pcm 条目,以确定系统如何枚举输出。执行以下命令:
% dmesg | grep pcm
输出类似于:
pcm0: <HDA NVIDIA (Unknown) PCM #0 DisplayPort> at cad 0 nid 1 on hdac0
pcm1: <HDA NVIDIA (Unknown) PCM #0 DisplayPort> at cad 1 nid 1 on hdac0
pcm2: <HDA NVIDIA (Unknown) PCM #0 DisplayPort> at cad 2 nid 1 on hdac0
pcm3: <HDA NVIDIA (Unknown) PCM #0 DisplayPort> at cad 3 nid 1 on hdac0
hdac1: HDA Codec #2: Realtek ALC889
pcm4: <HDA Realtek ALC889 PCM #0 Analog> at cad 2 nid 1 on hdac1
pcm5: <HDA Realtek ALC889 PCM #1 Analog> at cad 2 nid 1 on hdac1
pcm6: <HDA Realtek ALC889 PCM #2 Digital> at cad 2 nid 1 on hdac1
pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1
显卡(NVIDIA®)被列在声卡(Realtek®)之前,声卡显示为
pcm4
。可以通过执行以下命令配置系统来把声卡作为默认设备:# sysctl hw.snd.default_unit=4
要使此更改永久生效,请将以下行添加到 /etc/sysctl.conf:
hw.snd.default_unit=4
一些系统可能在音频输出之间切换时遇到问题,但幸运的是,FreeBSD 允许在 device.hints 中配置自动切换。
通过执行以下命令,确定系统如何枚举音频输出:
% dmesg | grep pcm
输出类似于:
pcm0: <Realtek ALC892 Analog> at nid 23 and 26 on hdaa0
pcm1: <Realtek ALC892 Right Analog Headphones> at nid 22 on hdaa0
将以下行添加到 /boot/device.hints:
hint.hdac.0.cad0.nid22.config="as=1 seq=15 device=Headphones"
hint.hdac.0.cad0.nid26.config="as=2 seq=0 device=speakers"
注意请注意,这些值是只是来自上面的示例。它们可能根据系统而异。
一些常见的错误消息及其解决方案:
表 2. 常见错误消息
错误 | 解决方案 |
---|---|
xxx: can’t open /dev/dsp! | 键入 fstat | grep dsp 以检查是否有其他应用程序持有设备打开。值得注意的麻烦制造者是 esound 和 KDE 的音频支持。 |
使用 audio/pulseaudio 的程序可能需要重新启动 audio/pulseaudio 守护程序,以使
hw.snd.default_unit
的更改生效。或者,可以实时更改 audio/pulseaudio 设置。pacmd(1) 打开到 audio/pulseaudio 守护程序的命令行连接:# pacmd
Welcome to PulseAudio 14.2! Use "help" for usage information.
>>>
以下命令更改默认的音频输出到卡号 4,如前面的例子:
set-default-sink 4
警告
最近更新 9d ago