所以我的系统的扬声器和耳机插孔不起作用,所以我跑去sudo pulseaudio -v
看问题是什么,我发现错误太多(因此这个问题的命名很奇怪)这是该命令的日志
因为我注意到pulseaudio
不应该使用 root perms 运行,所以我决定运行pulseaudio -v
,我得到了这个:
I: [pulseaudio] main.c: setrlimit(RLIMIT_NICE, (31, 31)) failed: Operation not permitted
I: [pulseaudio] main.c: setrlimit(RLIMIT_RTPRIO, (9, 9)) failed: Operation not permitted
I: [pulseaudio] core-util.c: Successfully gained nice level -11.
I: [pulseaudio] main.c: This is PulseAudio 15.99.1
I: [pulseaudio] main.c: Page size is 4096 bytes
I: [pulseaudio] main.c: Machine ID is 664d5eb40be146aaa89e6646ade8f191.
I: [pulseaudio] main.c: Using runtime directory /run/user/1000/pulse.
I: [pulseaudio] main.c: Using state directory /home/misery/.config/pulse.
I: [pulseaudio] main.c: Using modules directory /usr/lib/pulse-15.99.1+dfsg1/modules.
I: [pulseaudio] main.c: Running in system mode: no
E: [pulseaudio] pid.c: Daemon already running.
E: [pulseaudio] main.c: pa_pid_file_create() failed.
在尝试修复 PulseAudio 时,我发现了两个经常看到的错误:
pa_pid_file_create() failed.
org.bluez.ProfileManager1.RegisterProfile() failed: org.bluez.Error.NotPermitted: UUID already registered
我该如何解决这个问题?
请注意,来自 PulseAudio 的每条日志消息都以优先级指示器开头:
I:
指示信息性消息,而E:
用于错误消息。信息性消息可能表明像 PulseAudio 尝试它“知道”的东西可能会失败,这可能是因为它有多种方法来实现某些东西,并且如果不尝试所有方法就无法知道哪种方法适合这个特定系统。我在您的
sudo pulseaudio -v
运行中只看到两条实际错误消息,表明 Pulseaudio 进行了两次尝试向 BlueZ 注册蓝牙音频,但在这两次尝试中,都得到了表明此类注册已经完成的响应,即已经有另一个 PulseAudio 副本跑步。您的第二次运行
pulseaudio -v
证实了这一点。您已经有一个 PulseAudio 实例正在运行:您需要先停止它,然后再尝试启动另一个。
您的
sudo pulseaudio -v
运行表明它在您的系统上检测到三个独立的“声卡”:card0
: PCI 设备 0000:00:03.0 处的 Intel HD Audio-type 声音设备。该设备似乎只有类似 HDMI 的音频输出,因此它可能是用于 HDMI 和/或 DisplayPort 音频的 GPU 集成音频设备。由于这是card0
,如果您没有主动选择其他内容,它可能是您的默认输出。但是,如果您没有连接具有 DP 或 HDMI 音频功能并准备好播放音频的显示器,您将听不到任何声音。card1
: PCI 设备 0000:00:1b.0 上的另一个 Intel HD Audio 类型的声音设备。这个其实是有模拟输入和输出的,它的产品名称被检测为“Wildcat Point-LP High Definition Audio Controller”,所以这是你主板上的音频芯片。如果您使用的是实际计算机的耳机插孔(而不是配备 HDMI/DP 音频的显示器),那么这就是您应该使用的声音设备。card2
:一个“Loopback PCM”假声卡,如果你想记录一个使用原始 ALSA 或 OSS 声音接口的旧应用程序的声音输出,它可能很有用,但没有其他用处。如果您不小心将其选为默认声卡,您将无法获得实际的声音输出。因此,您有两个“错误”选择和一个“正确”选择,并且有理由相信系统可能默认为错误选择之一,除非您另有明确选择。
要确认 PulseAudio 的输出选择,您可能需要运行以下命令(作为普通用户,而不是root):
如果我正确理解了您的情况,您会希望它输出如下内容:
(输出可能包括其他行,但本质上应该有许多带有设备标识信息的更深缩进的行,然后是标识当前选择的 PulseAudio 配置文件的缩进较少的行。)
换句话说,您希望在 PulseAudio 中禁用 PCI 设备上的 HDMI 音频设备
0000:00:03.0
和误导性platform-snd_aloop.0
设备(通过off
为它们选择配置文件),并且 PCI 设备上真正具有模拟功能的声音芯片0000:00:1b.0
应该使用配置文件在 GUI 工具中可能会被列为“模拟立体声双工”。如果您安装了 PulseAudio 配置 GUI 工具
pavucontrol
,只需启动它(作为普通用户),转到“配置”选项卡,然后切换配置文件,记住两个“内置音频模拟立体声”设备之一将是由snd-aloop
ALSA 环回模块创建的假货。但是,您的桌面环境可能会尝试为您“记住”和“自动恢复”您的声音配置,因此尝试以这种方式绕过桌面配置工具可能会或可能不会在重新启动或注销/登录周期后持续存在. 最好在桌面环境自己的控制面板/系统设置应用程序中找到相应的声音配置文件设置,然后从那里进行切换。但是您还没有指定您正在使用哪个桌面环境(或者您甚至根本没有使用一个!)所以我不能给您具体的说明。
此外,如果您没有理由使用
snd-aloop
ALSA 模块,您可能想尝试阻止它加载并为您制造额外的混乱来源。