Ubuntu 16.04 扬声器无声音,只有耳机可用

Ubuntu 16.04 扬声器无声音,只有耳机可用

我对这个问题束手无策。我知道我已经见过这个问题无数次了,但似乎没有一个解决方案可行。

我有一台华硕笔记本电脑,双启动,搭载 Windows 8.1,我从 15.10 升级到 16.04,无法使用扬声器;声卡一直认为耳机已插入,这些屏幕截图就是证据。

alsamixer

帕武控制

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

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

无论如何,我打算删除我的 Windows 8 分区。我在这里看到: 启动 Windows 8.1 后,Ubuntu 14.04 中的笔记本电脑扬声器没有声音 Windows 可能导致了这个问题。删除分区能解决问题吗?

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

答案1

我在将 Xubuntu 14.04 升级到 Xubuntu 16.04 时也遇到了这个问题(耳机有声音,但扬声器没有声音)。我有一块 HD Intel 声卡,带有 Realtek ALC259 芯片。使用从 3.13.X 到 4.10.X 的各种内核启动时,问题仍然存在。

但是,我已经修复了它,方法如下:

重要的是要了解 Pulseaudio(PA) 是 Ubuntu 及其大多数(所有?)变体的默认声音控制系统。PA 本质上是核心 ALSA 声音系统的叠加。因此,对于在 PA 中进行的每个操作,ALSA 中都会有后续反应。对于在 PA 中定义的每个输出(又名端口),都会对 ALSA 系统进行定义的调整。此调整称为“混音路径”。

!!! 重要的 !!!

在继续操作之前,现在是验证这确实是您的问题并且没有其他原因导致您的扬声器无法正常工作的好时机。您可以通过执行以下测试轻松做到这一点。(如果您一直在摆弄音响系统,您可能希望在测试之前将其恢复为默认设置):

  1. 拔下所有耳机或其他声音设备,除了不工作的扬声器。
  2. 开始播放通常会从扬声器发出声音(但目前不会)的音频文件。然后,
  3. 打开终端并运行命令:

    alsamixer
    

您应该看到以下内容:

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

  1. 取消所有当前处于静音状态的设备(使用“m”键切换静音)。然后调高所有未达到 100% 的设备上的音量滑块。

如果您能听到扬声器的声音,则此修复程序适合您!

如果您没有听到任何声音,请返回“Google”并继续搜索。此方法对您没有帮助。


如果您通过上述测试成功获得声音,我们现在需要做的是使用 alsamixer 设置来确定:

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

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

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

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

PulseAudio(PA) 中扬声器的默认混音器路径假设我的扬声器与耳机无关。但如上观察 3 所示,事实并非如此。因此,每当在 PA 中选择扬声器输出时,PA 中我的扬声器的默认混音器路径都会在 ALSA 中做出以下有问题的更改:

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

鉴于我之前对 ALSA 与扬声器和耳机之间的连接的观察,对 ALSA 的这些更改会阻止声音从扬声器中发出。

所以,解决这个问题的方法是修改扬声器的混音器路径。

PA 混频器路径文件位于:

/usr/share/pulseaudio/alsa-mixer/路径/

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

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

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

    pactl list | grep 'Active Port.*output.*'
    
  3. 它应该输出类似这样的内容:

    活动端口:听觉类型-输出-设备

IE

在此处输入图片描述

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

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

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

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

就我而言,我需要按以下方式更改 analog-output-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

瞧!

相关内容