Ubuntu 16.04扬声器无声音,仅耳机有效


8

这个问题我不知所措。我知道我已经看过一百万次此问题,但是似乎没有一种解决方案有效。

我有一个华硕笔记本电脑,双启动时使用Windows 8.1,我从15.10升级到16.04,并且扬声器无法使用。这些屏幕截图可以证明,声卡永久认为耳机已插入。

alsamixer

掌控

这不是硬件问题,因为1)声音可以在Windows 8.1上运行2)我可以通过使用hdajackretask禁用耳机插孔(设置替代,然后将其设置为“未连接”)来使扬声器工作,但随后不能使用热键改变音量

我尝试重新加载alsa,还清除alsa并重新安装。

我计划无论如何实际上要删除Windows 8分区。我在这里看到: 在启动Windows 8.1后,Ubuntu 14.04中笔记本电脑扬声器没有声音 说Windows可能会引起问题。删除分区会解决问题吗?

编辑:我已经按照该问题的建议禁用了混合启动。


我绝对会先尝试接受的答案。

抱歉,我没有提到答案中所建议的混合启动/快速启动已被禁用。现在编辑问题。
jhutch

Answers:


9

将我的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系统都有定义的调整。这种调整称为“混合路径”。

!!! 重要!

在继续之前,现在是时候确认这实际上是您的问题,并且没有其他原因导致您的扬声器无法正常工作。通过执行以下测试,您可以非常轻松地做到这一点。(如果您一直在调音系统,则可能需要在测试之前将其恢复为默认值):

  1. 拔出除不起作用的扬声器外的所有耳机​​或其他声音设备。
  2. 开始播放通常不会从扬声器产生声音的音频文件,尽管当前不是。然后,
  3. 打开您的终端并运行以下命令:

    alsamixer
    

您应该看到以下内容:

alsamixer 由于声卡之间的差异,您的设备可能与图像中的设备有所不同。就我而言,在解决问题之前,我的alsamixer看起来就像上图一样。

  1. 取消静音所有当前静音的设备(使用“ m”键切换静音)。然后在非100%的任何设备上向上调高音量滑块。

如果您可以从扬声器听到声音,则此修复程序很适合您!

如果您听不到任何声音,请返回“ Google”并继续搜索。此方法将无济于事。


如果您从上述测试中成功获得声音,那么我们现在需要使用alsamixer设置来确定:

  1. 哪个设备的音量控件实际上控制着扬声器的音量,以及
  2. 为了使扬声器正常工作,需要取消静音哪个设备。多个设备可能需要取消静音。

一旦知道扬声器将使用的ALSA设置,我们就可以使用此信息对我们的PA混音器路径进行必要的更改。

就我而言,我发现耳机和扬声器通过以下方式在ALSA中链接:

  1. 我的耳机音量由“耳机”设备控制。
  2. 要从我的耳机中获取声音,需要将“ Master”和“ Headphone”设备取消静音。
  3. 我的扬声器音量也由“耳机”设备控制。(令人惊讶的是,ALSA扬声器的音量设置对我的扬声器的音量没有影响。)
  4. 要从扬声器获得声音,需要将“主”和“扬声器”设备取消静音。

扬声器在PulseAudio(PA)中的默认混音器路径假定我的扬声器独立于我的耳机。如上面观察3所示,情况并非如此。随后,无论何时在PA中选择扬声器输出,我的扬声器在PA中的默认混音器路径都会在ALSA中进行以下有问题的更改:

  1. 将耳机音量降至0。
  2. 将扬声器设备设置为音量控制。

鉴于我如上所述观察到ALSA扬声器和耳机之间的联系,对ALSA的这些更改将阻止声音从扬声器中散发出来。

因此,可以通过修改扬声器的混音路径来解决该问题。

PA混音器路径文件位于:

/ usr / share / pulseaudio / alsa-mixer / paths /

要确定哪个混音器路径文件控制您的扬声器,您需要:

  1. 确保在PA内选择了扬声器输出(即不是您的耳机)。 在此处输入图片说明

  2. 打开一个终端并运行以下命令:

    pactl list | grep 'Active Port.*output.*'
    
  3. 它应该输出如下所示的内容:

    活动端口:音频类型-输出- 设备

在此处输入图片说明

“活动端口”是当前控制ALSA设置的PA端口。由于您已经选择扬声器作为PA输出,因此terminal命令的此输出告诉您需要编辑混音器路径文件audiotype -output- device .conf。就我而言,混音器路径文件为Analog-output-speaker.conf。

现在我们有了正确的混音器路径文件,我们需要进行更改。

注意:在此混音器路径文件夹中,有一个名为“ analog-output.conf.common”的文件。该文件的内容说明了如何解释混合器路径文件。如果您想了解以下更改,强烈建议您在编辑混音器路径之前先查看此文件!

每个混合器路径文件包含许多“元素”。理想情况下,每个文件中都有一个元素代表计算机上的每个ALSA设备。可能有些元素也没有。这个是正常的。

在我的情况下,我需要通过以下方式为模拟输出-speaker.conf的混音器路径更改耳机和扬声器元素:

  1. 允许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
  1. (可选)将扬声器音量设置为关闭,以防止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

瞧!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.