将我的Xubuntu 14.04升级到Xubuntu 16.04(耳机产生声音,但扬声器没有声音)时,我也遇到了这个问题。我有一个带有Realtek ALC259芯片的高清Intel声卡。从3.13.X到4.10.X的各种内核启动时,问题仍然存在。
但是,我已修复,方法如下:
重要的是要了解Pulseaudio(PA)是Ubuntu及其大多数(所有?)变体的默认声音控制系统。PA本质上是覆盖在ALSA核心音响系统之上的。因此,对于PA中的每个动作,ALSA中都会发生后续反应。对于PA中定义的每个输出(aka端口),对ALSA系统都有定义的调整。这种调整称为“混合路径”。
!!! 重要!
在继续之前,现在是时候确认这实际上是您的问题,并且没有其他原因导致您的扬声器无法正常工作。通过执行以下测试,您可以非常轻松地做到这一点。(如果您一直在调音系统,则可能需要在测试之前将其恢复为默认值):
- 拔出除不起作用的扬声器外的所有耳机或其他声音设备。
- 开始播放通常不会从扬声器产生声音的音频文件,尽管当前不是。然后,
打开您的终端并运行以下命令:
alsamixer
您应该看到以下内容:
由于声卡之间的差异,您的设备可能与图像中的设备有所不同。就我而言,在解决问题之前,我的alsamixer看起来就像上图一样。
- 取消静音所有当前静音的设备(使用“ m”键切换静音)。然后在非100%的任何设备上向上调高音量滑块。
如果您可以从扬声器听到声音,则此修复程序很适合您!
如果您听不到任何声音,请返回“ Google”并继续搜索。此方法将无济于事。
如果您从上述测试中成功获得声音,那么我们现在需要使用alsamixer设置来确定:
- 哪个设备的音量控件实际上控制着扬声器的音量,以及
- 为了使扬声器正常工作,需要取消静音哪个设备。多个设备可能需要取消静音。
一旦知道扬声器将使用的ALSA设置,我们就可以使用此信息对我们的PA混音器路径进行必要的更改。
就我而言,我发现耳机和扬声器通过以下方式在ALSA中链接:
- 我的耳机音量由“耳机”设备控制。
- 要从我的耳机中获取声音,需要将“ Master”和“ Headphone”设备取消静音。
- 我的扬声器音量也由“耳机”设备控制。(令人惊讶的是,ALSA扬声器的音量设置对我的扬声器的音量没有影响。)
- 要从扬声器获得声音,需要将“主”和“扬声器”设备取消静音。
扬声器在PulseAudio(PA)中的默认混音器路径假定我的扬声器独立于我的耳机。如上面观察3所示,情况并非如此。随后,无论何时在PA中选择扬声器输出,我的扬声器在PA中的默认混音器路径都会在ALSA中进行以下有问题的更改:
- 将耳机音量降至0。
- 将扬声器设备设置为音量控制。
鉴于我如上所述观察到ALSA扬声器和耳机之间的联系,对ALSA的这些更改将阻止声音从扬声器中散发出来。
因此,可以通过修改扬声器的混音路径来解决该问题。
PA混音器路径文件位于:
/ usr / share / pulseaudio / alsa-mixer / paths /
要确定哪个混音器路径文件控制您的扬声器,您需要:
确保在PA内选择了扬声器输出(即不是您的耳机)。
打开一个终端并运行以下命令:
pactl list | grep 'Active Port.*output.*'
它应该输出如下所示的内容:
活动端口:音频类型-输出- 设备
即
“活动端口”是当前控制ALSA设置的PA端口。由于您已经选择扬声器作为PA输出,因此terminal命令的此输出告诉您需要编辑混音器路径文件audiotype -output- device .conf。就我而言,混音器路径文件为Analog-output-speaker.conf。
现在我们有了正确的混音器路径文件,我们需要进行更改。
注意:在此混音器路径文件夹中,有一个名为“ analog-output.conf.common”的文件。该文件的内容说明了如何解释混合器路径文件。如果您想了解以下更改,强烈建议您在编辑混音器路径之前先查看此文件!
每个混合器路径文件包含许多“元素”。理想情况下,每个文件中都有一个元素代表计算机上的每个ALSA设备。可能有些元素也没有。这个是正常的。
在我的情况下,我需要通过以下方式为模拟输出-speaker.conf的混音器路径更改耳机和扬声器元素:
- 允许PA音量调节耳机ALSA音量。
原版的:
[Element Headphone]
switch = off
volume = off
编辑:
[Element Headphone]
switch = off
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
- (可选)将扬声器音量设置为关闭,以防止PA音量影响ALSA音量。(如果您不这样做,声音仍然会起作用,但是ALSA中的扬声器设置会不必要地反弹。)
原版的:
[Element Speaker]
required-any = any
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
编辑:
[Element Speaker]
required-any = any
switch = mute
volume = off
然后,通过执行以下命令重新启动PA:
pulseaudio -k && pulseaudio --start
瞧!