9.2. 设置声卡¶
在默认情况下,FreeBSD 会自动检测系统使用的声卡。FreeBSD 支持各种各样的声卡。可以在硬件兼容列表中查看受支持的音频设备列表。
注意
只有在 FreeBSD 没有正确检测到声卡模块的情况下才有必要加载之。
如果不知道系统有什么声卡,也不知道该使用哪个模块,可以通过执行以下命令加载 snd_driver
元驱动:
# kldload snd_driver
要在启动时自动加载这个驱动程序,请将下面一行添加到 /boot/loader.conf 中:
snd_driver_load="YES"
9.2.1. 测试声卡¶
运行下列命令来侦测显卡:
% 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(1) 可通过产生一些噪音来确认声卡是否正常工作:
% beep
9.2.2. 混音器¶
FreeBSD 系统中内置了不同的工具来设置和展示声卡混音器的属性。
表 15. 支持的混音器软件包
名称 |
许可证 |
软件包 |
工具包 |
---|---|---|---|
BSD-2 |
系统自带 |
命令行界面 |
|
dsbmixer |
BSD-2 |
Qt |
|
KDE Plasma 声音组件 |
GPL 2.0 |
Qt |
|
mixertui |
BSD-2 |
文本用户界面 |
9.2.3. 显卡声音¶
显卡通常有自己的集成声音设备,可能不清楚哪个设备被用作了默认设备。为了确认,运行 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
。执行下列命令让 Realtek® 声卡成为默认播放设备:
# sysctl hw.snd.default_unit=4
在 /etc/sysctl.conf 中加入以下一行,使这个改变永久化:
hw.snd.default_unit=4
9.2.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"
注意
请记住,这些值是针对上面的例子。它们依据具体的系统而定。
9.2.5. 声卡的故障排除¶
一些常见的错误信息和它们的解决方案:
表 16. 常见错误信息
错误 |
解决方案 |
---|---|
|
输入 |
要让 hw.snd.default_unit
中的变更生效,使用 audio/pulseaudio 的程序可能需要重启守护程序audio/pulseaudio。另一种方式是实时更改 audio/pulseaudio 设置——用 pacmd(1) 定位到守护程序 audio/pulseaudio,打开命令行:
# pacmd
Welcome to PulseAudio 14.2! Use "help" for usage information.
>>>
下面的命令将默认的 sink 改为前面例子中的声卡编号 4 :
set-default-sink 4
警告
不要使用
exit
命令来退出命令行界面。那会杀死 audio/pulseaudio 守护进程。应该用Ctrl
+D
代替之。