修复 POP 操作系统声音

修复 POP 操作系统声音

我的笔记本电脑似乎随机停止识别音频设备(可能是在做了一些我不记得的愚蠢事情之后)。音频设置根本不显示任何输入或输出。

我进行了故障排除这一页

第一个建议 ,inxi -SMA返回:

System:
  Host: pop-os Kernel: 5.19.0-76051900-generic x86_64 bits: 64
    Desktop: GNOME 42.3.1 Distro: Pop!_OS 22.04 LTS
Machine:
  Type: Laptop System: LENOVO product: 20EQS2BH00 v: ThinkPad P50
    serial: <superuser required>
  Mobo: LENOVO model: 20EQS2BH00 serial: <superuser required> UEFI: LENOVO
    v: N1EET96W (1.69 ) date: 07/13/2022
Audio:
  Device-1: Intel 100 Series/C230 Series Family HD Audio
    driver: snd_hda_intel
  Device-2: NVIDIA GM107 High Definition Audio [GeForce 940MX]
    driver: snd_hda_intel
  Sound Server-1: ALSA v: k5.19.0-76051900-generic running: yes
  Sound Server-2: PipeWire v: 0.3.59 running: yes

编辑:额外步骤: 我运行lspci -v | grep -A6 Audio并发现类似于该命令的输出inxi

00:1f.3 Audio device: Intel Corporation 100 Series/C230 Series Chipset Family HD Audio Controller (rev 31)
    Subsystem: Lenovo 100 Series/C230 Series Chipset Family HD Audio Controller
    Flags: bus master, fast devsel, latency 64, IRQ 157
    Memory at c5840000 (64-bit, non-prefetchable) [size=16K]
    Memory at c5830000 (64-bit, non-prefetchable) [size=64K]
    Capabilities: [50] Power Management version 3
    Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
    Kernel driver in use: snd_hda_intel
--
01:00.1 Audio device: NVIDIA Corporation GM107 High Definition Audio Controller [GeForce 940MX] (rev a1)
    Flags: bus master, fast devsel, latency 0, IRQ 17
    Memory at c4000000 (32-bit, non-prefetchable) [size=16K]
    Capabilities: [60] Power Management version 3
    Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
    Capabilities: [78] Express Endpoint, MSI 00
    Kernel driver in use: snd_hda_intel

我相信相关设备丢失了,因为我记得它有不同的名称。这表明问题不在于 ALSA 或 pipelinewire,而在于底层设备驱动程序?

编辑:我发现下面的步骤是无关紧要的,因为 pop-os 使用管道线而不是脉冲音频。

第二个建议,pulseaudio --start表明我没有pulseaudio(猜猜我发现了我的问题),所以我尝试了sudo apt install pulseaudio,并得到了以下错误:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 pop-desktop : Conflicts: pulseaudio
               Recommends: eog but it is not going to be installed
               Recommends: geary but it is not going to be installed
               Recommends: gnome-weather but it is not going to be installed
               Recommends: io.elementary.sideload but it is not installable
               Recommends: seahorse but it is not going to be installed
               Recommends: totem but it is not going to be installed
               Recommends: sessioninstaller but it is not going to be installed
               Conflicts: pulseaudio:i386
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

我认为我有一些损坏的依赖项,但我不知道如何修复它们。

答案1

修复 POP 操作系统声音

您需要知道您的系统是否正在使用pulseaudiopipewire

与声音系统相关的声音设置或软件包可能会损坏或损坏。很多时候,删除配置文件、重新安装声音相关的软件包以及重新启动音频软件都会有所帮助。

1.重置音频软件(服务器)

如果系统没有播放音频,请首先尝试重新启动音频守护进程:

脉冲音频 管材线材
Ubuntu 和 Pop!_OS 22.04 之前版本 流行!_操作系统 22.04+
systemctl --user restart pulseaudio systemctl --user restart wireplumber pipewire pipewire-pulse
rm -r ~/.config/pulse rm -r ~/.config/pulse
pulseaudio -k

这组命令首先重新启动声音守护程序并删除用户对 PulseAudio 的配置。在仍然使用 PulseAudio 作为服务器的系统上,它会重新启动 PulseAudio 服务器,这将创建新的默认音频配置文件。

2. 检查 PulseAudio 控件

该程序PulseAudio 音量控制有助于确定哪个程序正在生成音频、音频的路由位置、默认输入/输出设备是什么以及音量级别设置为多少。可以使用Pop!_Shop, 或使用以下命令安装它:

 sudo apt install pavucontrol

安装后,在“活动”菜单中打开 PulseAudio 音量控制应用程序,或在终端中运行 pavucontrol。

回放选项卡将显示当前正在播放音频的应用程序列表。每个应用程序的音量都可以单独控制。同样,“录音”选项卡将显示当前正在录制音频的应用程序列表。 “输出设备”选项卡显示输出设备列表以及每个设备正在播放的内容的指示器。选中的绿色复选标记表示该设备是默认输出设备。 “输入设备”选项卡显示类似的输入设备列表。在“配置”下,应列出每个声卡。

3. ALSA 故障排除

PulseAudio 位于 ALSA 之上。如果 PulseAudio 没有看到任何输入/输出设备,请检查 ALSA 正在检测哪些播放设备:

aplay -l

或者,检查 ALSA 正在检测哪些录音设备:

arecord -l

设备可以在 ALSA 混音器中静音,这将覆盖任何 PulseAudio 音量设置。您可以使用以下命令打开 ALSA 混合器:

alsamixer

您可以使用左右箭头键在不同的音量表之间导航。每个仪表都可以使用向上和向下箭头键进行调整。仪表底部的“MM”表示仪表已静音。如果 PulseAudio 音量控制显示正在播放声音,但您听不到任何声音,请尝试在选择每个音量计时按 M 键取消 alsamixer 中所有音量计的静音。如果您的系统有多个声卡(例如,可切换显卡系统中的 Intel 声卡和 NVIDIA 声卡),您可以通过按 F6 在它们之间进行切换。

4. 检查是否检测到硬件

如果 ALSA 未列出声卡,则系统可能根本无法物理检测到该声卡。如果 Linux 内核发现声卡,它将显示在您的lspci输出中。此命令将列出您的系统检测到的每个声卡,并显示每个声卡所使用的驱动程序:

lspci -v | grep -A6 Audio

如果该命令的输出为空,则您的系统未检测到任何声卡(这可能表明存在硬件问题。)

5. 其他有用的命令

  • 此命令将重新安装 ALSA 和其他一些核心音频包:

    sudo apt install --reinstall alsa-base alsa-utils linux-sound-base libasound2
    
  • 此命令将重新安装 PulseAudio 软件包:

    sudo apt install --reinstall libpulse0 libpulsedsp pulseaudio pulseaudio-module-bluetooth pulseaudio-utils`
    
  • 此命令将重新安装 PipeWire 软件包:

    sudo apt reinstall libpipewire-0.3-0 libpipewire-0.3-common libpipewire-0.3-modules pipewire pipewire-audio-client-libraries pipewire-bin pipewire-pulse
    
  • 此命令将强制重新加载内核声音驱动程序模块:

    sudo alsa force-reload
    
  • 此命令将在 PulseAudio 停止后启动它(这通常不需要,因为 PulseAudio 通常会在停止时重新启动):

    pulseaudio --start
    
  • 此命令将检查 PipeWire 的状态,并在自动重新启动引发任何错误时显示任何错误:

    systemctl --user status pipewire
    
  • 如果您想监控 PipeWire,请运行:

    pw-top
    

6. 配置调整

一些特定问题可以通过调整 ALSA 或 PulseAudio 配置来解决。清除 Pipewire 或 PulseAudio 的当前设置可能会允许再次使用默认设置。要恢复为默认值并清除所有当前保存的设置,请运行以下命令:

rm -r ~/.config/pulse/*
rm -r ~/.local/state/wireplumber/*

7. 音频爆裂声或硬件咔嗒声

如果您听到音频噼啪声(尤其是当您开始或停止播放音频时),则您的声卡可能会过于频繁地进入睡眠状态。已知这种情况会发生在某些版本的薮猫WS还有一些Thunderbolt 坞站

  • A。使用 PipeWire/WirePlumber 防止裂纹:

    对于 Pop!_OS 22.04 及更新版本(以及使用 PipeWire 和 WirePlumber 的其他发行版),这两个命令将禁用此行为并重新启动 PipeWire:

     sudo sed -i 's/--\["session.suspend-timeout-seconds"\] = 5/\["session.suspend-timeout-seconds"\] = 0/' /usr/share/wireplumber/main.lua.d/50-alsa-config.lua
    
     systemctl restart --user pipewire.service
    

    可以使用以下命令撤消此更改:

     sudo sed -i 's/\["session.suspend-timeout-seconds"\] = 0/--\["session.suspend-timeout-seconds"\] = 5/' /usr/share/wireplumber/main.lua.d/50-alsa-config.lua
    
     systemctl restart --user pipewire.service
    
  • b.使用 PulseAudio 防止爆裂声

    对于旧版本的 Pop!_OS 或使用不带 PipeWire 的 PulseAudio 的发行版,这两个命令将禁用此行为并重新启动 PulseAudio:

     sudo sed -i 's/load-module module-suspend-on-idle/#load-module module-suspend-on-idle/' /etc/pulse/default.pa
    
     pulseaudio -k
    

    可以使用以下命令撤消此更改:

     sudo sed -i 's/#load-module module-suspend-on-idle/load-module module-suspend-on-idle/' /etc/pulse/default.pa
    
     pulseaudio -k
    

8. 未检测到 PCI/内置声卡(虚拟输出)

对于使用该snd_hda_intel kernel模块的硬件,罕见的错误可能会导致声卡无法被检测到。如果您遇到此问题,请尝试运行以下命令来强制使用特定的音频驱动程序:

echo "options snd-hda-intel dmic_detect=0" | sudo tee -a /etc/modprobe.d/alsa-base.conf
echo "blacklist snd_soc_skl" | sudo tee -a /etc/modprobe.d/blacklist.conf

更改后重新启动。如果这不能解决问题,请使用以下命令撤消更改:

sudo sed -i 's/options snd-hda-intel dmic_detect=0//' /etc/modprobe.d/alsa-base.conf
sudo sed -i 's/blacklist snd_soc_skl//' /etc/modprobe.d/blacklist.conf

然后再次重新启动。

9. 有用的参考资料

我希望这可以帮助别人。

相关内容