Debian 9仅能检测耳机或扬声器的音频输出切换问题求助
我之前也碰到过类似的音频接口切换问题,Debian下的音频配置确实有时候需要手动调整才能和Windows一样顺畅。下面是几个一步步排查和解决的方案:
第一步:安装并使用PulseAudio音量控制器排查设备
Debian 9默认应该已经装了PulseAudio,但如果没装的话先执行:sudo apt update && sudo apt install pavucontrol打开
pavucontrol后切换到「输出设备」标签,点击窗口底部的「显示」按钮,选择「所有输出设备」。这时候应该能看到主板扬声器的选项,如果之前被隐藏了,现在就可以手动选择它作为输出设备,或者设置自动切换的规则。第二步:调整ALSA内核模块配置
很多这类问题是因为ALSA没有正确识别你的音频芯片型号导致的。编辑ALSA的配置文件:sudo nano /etc/modprobe.d/alsa-base.conf在文件末尾添加一行(如果已经有类似的
options snd-hda-intel行,就修改它):options snd-hda-intel model=auto如果你知道自己主板的音频芯片型号(比如ALC887、ALC1220等),可以把
auto换成对应的型号(比如model=alc887),这样匹配度更高。修改后保存退出,然后重启系统或者重启ALSA服务:sudo alsa force-reload第三步:检查ALSA混音器的静音状态
有时候扬声器通道被默认静音了,打开终端执行alsamixer:- 按
F6选择对应的音频设备(不要选默认的Dummy Output) - 用方向键切换到「Speaker」或者「Line Out」通道,检查是否显示
MM(代表静音),如果是就按M键取消静音,同时用上下方向键调高音量
- 按
第四步:强制开启插孔检测
如果上面的方法都不行,试试强制开启音频插孔的检测功能,同样编辑/etc/modprobe.d/alsa-base.conf,添加:options snd-hda-intel enable_jack_detection=1保存后重启系统,这时候系统应该能更准确地检测到耳机插拔的状态,从而自动切换输出设备。
为什么Windows下没问题?因为Windows的官方音频驱动针对硬件做了专门的适配,默认就支持这种前置/后置接口的自动切换,而Linux下的开源驱动需要手动配置才能匹配不同的硬件方案。
内容的提问来源于stack exchange,提问作者Nurrl

