修复 Intel HDA Realtek 887-VD 的音频故障

修复 Intel HDA Realtek 887-VD 的音频故障

我刚刚自己组装了一台功能强大的新台式机,配有技嘉 Z97P-D3 主板、英特尔 i7-4790K、16GB RAM。我使用板载音频硬件英特尔 HDA(Realtek ALC887-VD)进行音频输出。我运行的是 Ubuntu 14.04 LTS。

每隔几分钟,我就能听到音频播放中出现短暂的跳跃,就好像丢掉了一帧一样。这非常烦人,无论来源是什么(VLC / Spotify / Chromium 浏览器),都会发生这种情况。在跳跃的短暂时间内,“声音首选项”>“输出”选项卡的设备列表会变灰,音量控制指示器会短暂闪烁,就像静音一样,然后一切都会恢复正常。

ALSAmixer 在跳过过程中也会出现类似的故障,音量条会在一瞬间全部消失。

我尝试了以下解决方法(但对我而言均不起作用):

1)/etc/modprobe.d/alsa-base.conf:Position_fix 设置

options snd-hda-intel model=generic position_fix=1

2)PulseAudio /etc/pulse/default.pa:关闭 tsched

load-module module-udev-detect use_ucm=0 tsched=0

3) PulseAudio /etc/pulse/default.pa:调整默认值(以下各种组合和值)

default-fragments = 2
default-fragment-size-msec = 250
default-sample-rate = 48000
realtime-scheduling = yes
realtime-priority = 5

4)重新安装PulseAudio

5)升级内核到最新稳定版本(4.4.2)

6)使用 Jack2 代替 PulseAudio

7) 购买新的声卡(SoundBlaster Live),但它似乎无法与 Spotify 等各种应用程序兼容。

输出cat /proc/asound/card*/codec* | grep Codec

编解码器:英特尔通用

编解码器: Realtek ALC887-VD

编解码器:Nvidia GPU 60 HDMI/DP

输出cat /proc/asound/card*

0 [HDMI ]: HDA-Intel - HDA Intel HDMI HDA Intel HDMI 位于 0xf7914000 irq 33

1 [PCH]: HDA-Intel - HDA Intel PCH HDA Intel PCH 位于 0xf7910000 irq 32

2 [NVidia ]: HDA-Intel - HDA NVidia HDA NVidia 位于 0xf7080000 irq 17

我正在使用卡#1。

输出uname -a

Linux alnitak 4.4.2-040402-generic #201602171633 SMP 星期三 2 月 17 日 21:35:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

我怀疑这与英特尔 HDA 驱动程序有关,因为 Pulse、ALSA 和 Jack 都受到了影响。

我还遗漏了什么修复方法吗?

答案1

自从 2010 年 11 月一位恼火的用户编写了一份 PulseAudioMicrophoneGuide.pdf 文件以来,名为 snd-hda-intel 的 Linux 设备驱动程序显然已经引起了大量的困扰。

这是我目前所弄清楚的:PulseAudio 是一个在 Alsa 之上运行的软件层。Alsa 是一个加载大量驱动程序软件包的软件层。Alsa 不仅仅是电子信号的驱动程序。Alsa 为每个电信号加载几个不同的小软件,例如混频器和从麦克风读取字节或将字节写入耳机放大器的软件。

我的 2015 款联想 S21e 笔记本电脑存在“内置麦克风无声音”的问题,因此 Skype 和 GoogleHangouts 聊天都无法使用内置麦克风。

对我来说,短期的解决方法是插入带麦克风的网络摄像头或使用 Plantonics USB 耳机。

以下是我认为需要做的事情。我不是 C 程序员(只会 Python、Perl 和 Arduino)。在与硬件对话的设备驱动程序中,找到源代码中从麦克风内存位置复制音频数据的位置。软件中以某种方式反转了输出通道之一(右声道或左声道)。我猜他们做了信号反转,希望消除信号中的某种噪音。所以诀窍是找出原始程序员强制反转的原因。如果没有其他办法,请删除反转,看看这是否能让右声道和左声道正常。

答案2

好的,我解决了...答案是:

1)购买一张新声卡(我买的是 Soundblaster Live)

2)安装 Jack Audio(jackd)

sudo apt-get install jackd qjackctl

3)安装Jack-Pulseaudio桥(pulseaudio-module-jack)

sudo apt-get install pulseaudio-module-jack

4)使用适合 Soundblaster 的设置启动插孔(我使用了 qJackctl):

司机: alsa

即时的

帧数/周期:2048

周期/缓冲区:2

输入设备:hw:Live

输出设备:hw:Live

5) 确保插孔连接将 PulseAudio JACK Sink 连接至系统播放

jack_connect 'PulseAudio JACK Sink:front-left' 'system:playback_1'
jack_connect 'PulseAudio JACK Sink:front-right' 'system:playback_2'

6) 确保 PulseAudio 使用 Jack Sink 作为输出

pacmd set-default-sink "jack_out" && pacmd set-default-source "jack_in"

7)重新启动 Spotify / VLC 或任何您用来播放声音的应用程序...它会起作用!

这绝对是一种敷衍了事的解决办法,但这是因为 Linux 中的英特尔 HDA 音频驱动程序质量太差。问题在于 DMA 位置指针报告(一个已知问题:https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt)。

Linux 音频一团糟。我从 2010 年开始使用 Ubuntu,在过去的 6 年里,音频问题一直是我最头疼的问题。PulseAudio 可能有一个可爱的桌面小部件,但它带来了很多问题。Jack 的文档记录很差,qjackctl 也没有给你带来太多帮助。只有 ALSA 似乎表现良好,但遗憾的是,没有人编写一个好的桌面小部件,也没有一个界面来控制绑定到它的程序。

要点如下:

如果运行 Linux,请不要使用英特尔 HDA 板载音频。

Linux 音频一团糟。如果它不能正常工作,你就会陷入痛苦之中!

相关内容