Pulseaudio 无法检测内置模拟音频,只能检测 NVidia 的 HDMI

Pulseaudio 无法检测内置模拟音频,只能检测 NVidia 的 HDMI

我在Ubuntu 16.04 LTS

解决此问题的一种方法是转到/tmp您的主目录并使用chown位于您的用户名下的 pulsaudio 临时文件夹。但显然,这些文件夹不应该被更改所有者,因为它是由 system/root 创建的。

有人知道这个问题的正确解决方案或更好的建议吗?

多谢!

更新:

运行后,alsamixer -c 1我的卡显示为 HDA Intel,芯片显示为 Realtek ALC1150,两者都正确;我的主控已打开,音量为 73。耳机已静音。S/PDIF 已静音。

结果为lspci -nnk | grep -A2 Audio

00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
  Subsystem: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:2010]
  Kernel driver in use: snd_hda_intel
  Kernel modules: snd_hda_intel
00:1b.0 Audio device [0403]: Intel Corporation 9 Series Chipset Family HD Audio Controller [8086:8ca0]
  Subsystem: Gigabyte Technology Co., Ltd 9 Series Chipset Family HD Audio Controller [1458:a0b2]
  Kernel driver in use: snd_hda_intel
  Kernel modules: snd_hda_intel
01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:0fba] (rev a1)
   Subsystem: Gigabyte Technology Co., Ltd Device [1458:368e]
   Kernel driver in use: snd_hda_intel

结果为aplay -l

**** List of PLAYBACK Hardware Devices ****

card 1: PCH [HDA Intel PCH], device 0: ALC1150 Analog [ALC1150 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

card 1: PCH [HDA Intel PCH], device 1: ALC1150 Digital [ALC1150 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

card 2: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

card 2: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

card 2: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

card 2: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

结果为pactl list short sinks

0   auto_null   module-null-sink.c  s16le 2ch 44100Hz   RUNNING

答案1

如果您无法解决它,这是一个临时解决方案。

通过编辑禁用 pulseaudio /etc/pulse/client.conf (仅仅杀死它是不够的因为它会不断重新启动。)

取消注释(#从前面删除)并编辑

autospawn = no

现在您可以终止 pulseaudio。

$ pulseaudio --kill

就是这样。

通过运行以下命令仔细检查它是否没有自动生成:

$ ps cax | grep pulseaudio

如果它仍在运行,那么

$ systemctl --user stop pulseaudio.socket && systemctl --user stop pulseaudio.service

现在您的模拟音频应该开始工作了。

为了能够改变音量,请将音量键(或您选择的任何 kbd 快捷键)重新分配给:

amixer set Master 5%+    
amixer set Master 5%-

任何时候您需要重新启用 pulseaudio 将音频重定向到其他地方(例如使用蓝牙耳机时),请这样做。

$ pulseaudio --start

然后重新启动您正在使用的任何媒体应用程序。现在主板上的音频将停止,蓝牙将开始播放(使用 pavucontrol 检查)。

创建像“pas”和“pak”这样的别名或 kbd 快捷方式来快速启动和停止脉冲。

答案2

最近,我遇到了 Xonar 声卡问题,这是由我的 Radeon GPU 中集成的 HDMI 声卡引起的。

对于我来说,将英特尔和 HDMI 模块列入黑名单,阻止它们被 ALSA 加载,解决了这个问题。

为此,只需在文件开头添加以下两行/etc/modprobe.d/alsa-base.conf

blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi

然后重新启动 PC 并查看是否有帮助。

答案3

您的测试表明您的硬件和驱动程序模块工作正常,音频已准备就绪。但似乎在 pulseaudio 声称拥有模拟卡之前,其他东西已经完全控制了模拟卡。

检查使用:

sudo fuser -v /dev/snd/*
sudo fuser -v /dev/dsp

现在卸载它,重新启动并检查。

如果您没有找到任何东西,那么常见的罪魁祸首就是“timidity”(我认为 kde-full 会安装它)。只需删除它的守护进程(无法删除 timidity 本身,因为它是依赖项)。

sudo aptitude purge timidity-daemon

现在重新启动并检查。

如果问题仍然没有解决,您将不得不尝试困难的方法,记住您安装的可能正在使用音频的内容,然后尝试卸载它并重新启动。

这种脉冲/alsa 问题虽然看起来很简单,但很难解决,除非我们花了很多时间排除故障并“理解”问题。所以请坚持下去或使用临时的黑客攻击,直到你有时间。

相关内容