问题
本机环境:
OS: Arch Linux x86_64
声卡:C-Media_R__Audio
这几天面试,发现电脑能正常输入音频数据(麦克风),但是无法接收音频数据(扬声器)。
具体问题是:
pavucontrol
命令打开的界面,输出设备
中只有一个 HDMI 的输出(笔记本外接显示器)。alsamixer
进入后按F6
查看有HDA NVidia
和C-Media(R) Audio
两个声卡,且重新选择后pavucontrol
依旧只有一个 HDMI 的输出。电脑无法进行音量输出。- 排除硬件故障,在Windows中能正常工作。
解决方案
安装 pulseaudio 以及 pulseaudio-alsa,或者安装 pipewire-pulse、pipewire-alsa、wireplumber。二选一,都装会有冲突。我本机是使用的 pulseaudio。
使用aplay -l
命令查看自己有几个声卡,这一步输出后续会用到:
1 | ➜ ~ aplay -l |
修改前先列出系统中所有可用的音频输出设备(sinks)。
1 | pactl list short sinks |
之后重新加载相关模块后再查看可用音频输出设备
1 | pactl unload-module module-udev-detect |
此时在pavucontrol
中应该也能查看到网卡设备,选择输出就行,问题基本上就解决了,应该是模块加载顺序可能有问题,导致某些设备没有被正常检测到,重新加载一下就好了。唯一的问题是每次开机都要重新加载模块,这比较麻烦,此时就需要修改相关配置文件:
1 | sudo vim /etc/pulse/default.pa |
重启查看是否能检测到扬声器。