在重新启动后,Ubuntu 20.04 只有“虚拟输出”(声音)- 驱动程序/模块损坏。

编辑: 这似乎已经成为一种诊断音频问题的规范命令集。
我现在已经使用Ubuntu 20.04超过一个月了。 重启后,我没有声音和WiFi。请注意,这与许多其他帖子不同,它们似乎在升级后没有声音。在这种情况下,声音仅在重新启动后停止工作。
至于声音,我似乎没有适用于声音的适当内核模块,所以我猜最有可能的解决方案是使这些模块可用(看起来我有两个声卡)。 我将尽量在下面(1)包含与大量类似问题的帖子相关的尽可能多的信息。
我在下面(2)列出了一些我认为在当前修复工作进行时最有用的帖子。
我在下面(3)列出了其他一些曾经参考过的帖子,当问题更为棘手时。
(1)关于我损坏的系统的信息,以及我成功组装的工作系统的比较。
  1. 没有/proc/asound目录。
    相对应的是
    $ cat /proc/asound/cards
     0 [PCH            ]: HDA-Intel - HDA Intel PCH
                          HDA Intel PCH at 0x604b108000 irq 159
     1 [NVidia         ]: HDA-Intel - HDA NVidia
                          HDA NVidia at 0xa4000000 irq 17

2. $ lsmod | grep snd 输出为空。
对比(还可以与this进行比较)
    $ lsmod | grep snd_hda_intel
    snd_hda_intel          53248  10
    snd_intel_dspcfg       24576  3 snd_hda_intel,snd_sof_pci,snd_sof_intel_hda_common
    snd_hda_codec         131072  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek,snd_soc_hdac_hda
    snd_hda_core           90112  9 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_hda_codec_realtek,snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_sof_intel_hda
    snd_pcm               106496  9 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_sof,snd_sof_intel_hda_common,snd_soc_core,snd_hda_core,snd_pcm_dmaengine
    snd                    90112  33 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_compress,thinkpad_acpi,snd_soc_core,snd_pcm,snd_rawmidi

3. 内核模块
    $ dpkg -L linux-modules-$(uname -r) | grep snd
    /lib/modules/5.4.0-40-generic/kernel/sound/core/seq/snd-seq-dummy.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/seq/snd-seq-midi-emul.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/seq/snd-seq-midi-event.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/seq/snd-seq-midi.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/seq/snd-seq-virmidi.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/seq/snd-seq.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/snd-compress.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/snd-hrtimer.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/snd-hwdep.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/snd-pcm-dmaengine.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/snd-pcm.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/snd-rawmidi.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/snd-seq-device.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/snd-timer.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/core/snd.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/drivers/pcsp/snd-pcsp.ko
    /lib/modules/5.4.0-40-generic/kernel/sound/pci/snd-ens1370.ko

对比完全相同

我如何检查这些是否是我所需要的?
我如何检查这些是否与Intel在上述第2项中列出的相符?
我如何加载这些模块?

  1. inxi
    $ inxi -SA
    System:    Host: Hydrus1 Kernel: 5.4.0-40-generic x86_64 bits: 64 Desktop: Gnome 3.36.1 Distro: Ubuntu 20.04 LTS (Focal Fossa) 
    Audio:     Device-1: Intel 6 Series/C200 Series Family High Definition Audio driver: N/A 
               Device-2: NVIDIA GF104 High Definition Audio driver: N/A 

对比(还可以与this进行比较)
    $ inxi -SA
    System:    Host: ViaLactea Kernel: 5.4.0-40-generic x86_64 bits: 64 Console: tty 0 Distro: Ubuntu 20.04 LTS (Focal Fossa)
    Audio:     Device-1: Intel Cannon Lake PCH cAVS driver: snd_hda_intel
               Device-2: NVIDIA GP107GL High Definition Audio driver: snd_hda_intel
               Sound Server: ALSA v: k5.4.0-40-generic
  • lspci

    $ lspci -nnk | grep -A 1 音频
    00:1b.0 音频设备 [0403]: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller [8086:1c20] (rev 04)
        设备名称:  主板音频
        子系统: Dell 6 Series/C200 Series Chipset Family High Definition Audio Controller [1028:04a4]
    00:1c.0 PCI桥接器 [0604]: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 [8086:1c10] (rev b4)
    --
    01:00.1 音频设备 [0403]: NVIDIA Corporation GF104 High Definition Audio Controller [10de:0beb] (rev a1)
        子系统: Dell GF104 High Definition Audio Controller [1028:04a4]
    03:00.0 网络控制器 [0280]: Intel Corporation Centrino Ultimate-N 6300 [8086:422b] (rev 35)
    

  • 对决

        $ lspci -nnk | grep -n -A 4 Audio
        49:00:1f.3 Audio device [0403]: Intel Corporation Cannon Lake PCH cAVS [8086:a348] (rev 10)
        50-     Subsystem: Lenovo Cannon Lake PCH cAVS [17aa:225f]
        51-     Kernel driver in use: snd_hda_intel
        52-     Kernel modules: snd_hda_intel, snd_sof_pci
        53-00:1f.4 SMBus [0c05]: Intel Corporation Cannon Lake PCH SMBus Controller [8086:a323] (rev 10)
        --
        67:01:00.1 Audio device [0403]: NVIDIA Corporation GP107GL High Definition Audio Controller [10de:0fb9] (rev a1)
        68-     Kernel driver in use: snd_hda_intel
        69-     Kernel modules: snd_hda_intel
        70-70:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS525A PCI Express Card Reader [10ec:525a] (rev 01)
        71-     Subsystem: Lenovo RTS525A PCI Express Card Reader [17aa:225f]
    

    6. 系统(与完全相同的内核) ``` $ uname -a Linux Hydrus1 5.4.0-40-generic #44-Ubuntu SMP Tue Jun 23 00:01:04 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux ```
    7. 测试声音 ``` $ aplay -l aplay: device_list:274: no soundcards found... ```

    对决

        $ aplay -l
        **** List of PLAYBACK Hardware Devices ****
        card 0: PCH [HDA Intel PCH], device 0: ALC285 Analog [ALC285 Analog]
          Subdevices: 0/1
          Subdevice #0: subdevice #0
        card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
          Subdevices: 1/1
          Subdevice #0: subdevice #0
        ...
    

    8. lshw
            $ lshw -C multimedia
            WARNING: you should run this program as super-user.
              *-multimedia UNCLAIMED    
                   description: Audio device
                   product: GF104 High Definition Audio Controller
                   vendor: NVIDIA Corporation
                   physical id: 0.1
                   bus info: pci@0000:01:00.1
                   version: a1
                   width: 32 bits
                   clock: 33MHz
                   capabilities: bus_master cap_list
                   configuration: latency=0
                   resources: memory:e0080000-e0083fff
              *-multimedia UNCLAIMED
                   description: Audio device
                   product: 6 Series/C200 Series Chipset Family High Definition Audio Controller
                   vendor: Intel Corporation
                   physical id: 1b
                   bus info: pci@0000:00:1b.0
                   version: 04
                   width: 64 bits
                   clock: 33MHz
                   capabilities: bus_master cap_list
                   configuration: latency=0
                   resources: memory:e1e50000-e1e53fff
            WARNING: output may be incomplete or inaccurate, you should run this program as super-user.
    

    这里引用了(注意驱动程序)

        $ sudo lshw -C multimedia
          *-multimedia              
               description: Audio device
               product: GP104 High Definition Audio Controller
               vendor: NVIDIA Corporation
               physical id: 0.1
               bus info: pci@0000:01:00.1
               version: a1
               width: 32 bits
               clock: 33MHz
               capabilities: pm msi pciexpress bus_master cap_list
               configuration: driver=snd_hda_intel latency=0
               resources: irq:17 memory:f7080000-f7083fff
    
    1. alsa软件包

      $ dpkg -l | grep alsa
      ii  alsa-base                                     1.0.25+dfsg-0ubuntu5                all          ALSA驱动配置文件
      ii  alsa-tools-gui                                1.1.7-1ubuntu1                      amd64        针对特定硬件的基于GUI的ALSA实用程序
      ii  alsa-topology-conf                            1.2.2-1                             all          ALSA拓扑配置文件
      ii  alsa-ucm-conf                                 1.2.2-1ubuntu0.1                    all          ALSA Use Case Manager配置文件
      ii  alsa-utils                                    1.2.2-1ubuntu1                      amd64        用于配置和使用ALSA的实用程序
      ii  gstreamer1.0-alsa:amd64                       1.16.2-4                            amd64        ALSA的GStreamer插件
      ii  libsox-fmt-alsa:amd64                         14.4.2+git20190427-2                amd64        SoX ALSA格式输入/输出库
      
    2. 如果我插入耳机也没有声音。

    3. 我没有要删除的timidity-daemon

    4. 尝试重新加载

      $ sudo alsa force-reload
      [sudo] password for user1:
      正在卸载 ALSA 声音驱动模块:(无已加载模块)。
      正在加载 ALSA 声音驱动模块:(无需重新加载的模块)。
      
    5. modprobe

      $ grep intel /etc/modprobe.d/alsa-base.conf 
      options snd-intel8x0m index=-2
      

    (2)相关且可能有用的帖子

    无法使声音工作。Ubuntu Server 14.04.3

    https://forums.linuxmint.com/viewtopic.php?t=221745

    https://ubuntuforums.org/showthread.php?t=1684576

    如何在启动时加载"snd-hda-intel"


    (3) 其他相关文章

    https://www.alsa-project.org/wiki/Matrix:Module-hda-intel

    https://askubuntu.com/a/1244118/226614 . 最近的帖子,被接受的答案。建议使用ppa来修复。我不确定这样做会让情况变得更糟...

    https://askubuntu.com/a/1249071/226614 . 最近的帖子。建议使用 sudo setfacl -m u:user1:rw /dev/snd/* 尝试了这个,没有帮助。

    https://askubuntu.com/a/847954/226614 . 旧的帖子,被接受的答案。建议安装alsa-firmware-loadersalsa-base。我不确定这是否仍然适用...

    如何为Creative Labs Audigy2声卡安装缺失的固件?。这是一篇旧帖子,也提到UNCLAIMED设备可能是由于固件问题引起的。 为什么问题在重新启动后出现?

    升级后没有声音(18.04 -> 20.04),只有“虚拟输出”

    从Ubuntu 20.04升级后待机后出现“虚拟输出”问题

    在从Ubuntu 18.04 LTS升级到Ubuntu 20.04 LTS后,内置扬声器(音频)无法工作

    Ubuntu 20.04 - 没有声音

    pulseaudio无法检测到声卡(但alsa可以)

    如何为Creative Labs Audigy2声卡安装缺失的固件?

    https://itsfoss.com/fix-sound-ubuntu-1304-quick-tip/


    软件包linux-modules-kernel-version-generic应该为您安装snd驱动程序。看起来Intel Centrino Ultimate-N不再受支持,我不知道应该使用哪个驱动程序,但安装上述软件包可能会有所帮助。而SNDYBRDG(Sandy Bridge)与声音无关,实际上是英特尔在第二代Core处理器中使用的微架构的名称。 - Parsa Mousavi
    @ParsaMousavi - 请检查已编辑的原帖。我已包含了你提到的包裹内容、一些问题和评论。你可能知道如何跟进。 - sancho.s ReinstateMonicaCellio
    1modprobe --show-depends snd_hda_intel。顺便说一下,alsa/声音问题的正确论坛是alsa论坛(https://www.alsa-project.org/wiki/Main_Page)。另外,有一个很好用的脚本可以上传所有必要的信息来调试声音问题 --> https://wiki.ubuntu.com/Audio/AlsaInfo;你也可以使用`sudo apt install alsa-utils`命令安装它。你是否检查过你的声卡是否被支持:https://www.alsa-project.org/wiki/Matrix:Main? - abu_bua
    @abu_bua - 你的评论帮助我找到了解决方案,我已经发布了。我建议你将其作为答案发布。我将进行进一步的测试,如果一切正常,我会给予你的答案奖励。 谢谢! - sancho.s ReinstateMonicaCellio
    /proc目录下的文件对应于正在运行在您系统上的进程,因此只有当Alsa有活动的播放进程(即正在播放声音)时,您才会看到/proc/aplay/dev目录也是如此,它与设备相关联。 - Nate T
    9个回答

    尝试检查所有依赖项是否正确:
    modprobe --show-depends snd_hda_intel 
    

    检查内核模块是否存在:
    find /lib/modules/$(uname -r)/kernel/sound -name snd-hda-intel.ko
    

    顺便说一句,对于alsa/声音问题来说,更好的论坛是alsa论坛(alsa-project.org/wiki/Main_Page)。

    顺便说一句:有一个很棒的脚本可以上传所有必要的信息来调试声音问题 --> wiki.ubuntu.com/Audio/AlsaInfo;你也可以使用sudo apt install alsa-utils安装它。 运行脚本alsa-info,它将帮助你打印出所有未来问题所需的信息,而且只需要最少的努力。

    由于内核模块本身缺失,你需要通过这个软件包进行安装:

    sudo apt install linux-modules-extra-$(uname -r)
    

    缺失的不是内核,而是内核模块驱动程序所依赖的某些文件。这些缺失的文件以及它们所在的软件包在此答案中有详细说明。 - sancho.s ReinstateMonicaCellio
    2在Ubuntu Focal中,这应该是linux-modules-extra-$(uname -r),因为uname -r打印的字符串以-generic结尾。使用方式如下:sudo apt-get install linux-modules-extra-$(uname -r) - hub

    遇到了同样的问题,我只是这样做了:
    sudo killall timidity
    

    然后声音又回来了。
    但是重新启动后,声音又没有了。
    然后我找到了正确的方法来禁用 timidity:
    sudo systemctl stop timidity.service
    sudo systemctl disable timidity.service
    

    正如OP所说,“我没有害怕鬼魂要消除。” - sancho.s ReinstateMonicaCellio
    2对我来说起作用了,所以我想知道为什么一开始我需要胆怯... - Spooner
    天哪,为什么这个会成功?为什么你背叛了我,胆怯?!你曾经是被选中的!你应该完善我的音响系统!而不是摧毁它!!! - Cerin
    这个对我解决了问题。了解Timidity是如何在更多技术细节上引起这个问题会很有帮助。 - Kyle Spencer

    编辑: 在更新内核时,可能会遇到缺少内核 linux-modules-extra-XX-generic 的问题。避免这个问题的方法在某些情况下可能有所帮助。(事实上,在新的自动更新后,我又遇到了同样的问题,然后找到了缺失的软件包)。

    摘要:我成功地完成了以下任务:

    1. 找出我的系统缺少哪些文件。 这是我主要的难题,通过这个评论的帮助解决了,现在已经发布为一个答案。剩下的就很容易了。
    2. 找出包含这些文件的软件包。
    3. 安装它。

    尝试了许多方法后,我解决了这个问题。除了我的损坏系统S1之外,还需要一个类似的工作系统S2。我很幸运有这个,否则可能会花费我大量的额外时间。
    上面列出的步骤如下:
    S1中:
    $ modprobe --show-depends snd_hda_intel
    modprobe: FATAL: 在目录/lib/modules/5.4.0-40-generic中找不到模块snd_hda_intel
    
    S2中:
    $ modprobe --show-depends snd_hda_intel
    insmod /lib/modules/5.4.0-40-generic/kernel/sound/soundcore.ko
    install /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-ioctl32 ; /sbin/modprobe --quiet --use-blacklist snd-seq ; }
    insmod /lib/modules/5.4.0-40-generic/kernel/sound/core/snd-timer.ko
    install /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-pcm-oss ; : ; }
    insmod /lib/modules/5.4.0-40-generic/kernel/sound/core/snd-hwdep.ko
    insmod /lib/modules/5.4.0-40-generic/kernel/sound/hda/snd-hda-core.ko
    insmod /lib/modules/5.4.0-40-generic/kernel/sound/pci/hda/snd-hda-codec.ko
    insmod /lib/modules/5.4.0-40-generic/kernel/sound/hda/snd-intel-dspcfg.ko
    insmod /lib/modules/5.4.0-40-generic/kernel/sound/pci/hda/snd-hda-intel.ko
    
    我在S1中有前三个.ko文件,但没有后四个。 所以我在S2中检查了最后四个文件的所有者包。
    $ dpkg -S /lib/modules/5.4.0-40-generic/kernel/sound/hda/snd-hda-core.ko
    linux-modules-extra-5.4.0-40-generic: /lib/modules/5.4.0-40-generic/kernel/sound/hda/snd-hda-core.ko
    
    对于在S1中缺失的其他三个文件也是一样的。 我检查了一下,在S1中没有安装这个包。 我使用apt-get安装了这个包,重新启动后,现在一切似乎恢复正常了。
    我的猜测是,在声音正常工作的时候,该软件包存在,并且由于某种奇怪的原因,它被从"dkpg"数据库中卸载(或删除,或...)了?
    备注:
    1. 在"S1"中,我也有内核"5.4.0-39",在修复之前,这个内核中的声音也不工作。 事实证明,"linux-modules-extra-5.4.0-39-generic"也没有安装。
    2. 关于(编译)内核驱动程序与(可加载)内核驱动程序/模块的区别,请参见this

    如果你的问题已经解决,请检查一下,否则它仍然会显示为未回答的问题!因此,请用一个叉号标记你选择的答案(在赞成/反对图标下方)! - abu_bua
    1@abu_bua - 我知道。正如我在评论中提到的,问题很可能已经解决了。我会进行进一步的检查(可能需要几天时间...同时还有其他事情要处理),然后接受答案。请放心,我非常重视SE网站上对贡献的认可系统,它对社区非常有用。 - sancho.s ReinstateMonicaCellio
    在这些情况下,我使用git来进行故障排除。如果你cd到根目录并运行git init,你就把你的文件系统变成了一个git仓库。我经常进行提交。这有点像拍快照,因为你可以随时将文件系统挂载到另一个Linux文件系统上,并运行git revert来恢复到之前的某个点/提交。更好的是,你可以从终端使用diff程序并grep结果来查看系统的任何更改。不过,你需要有一个最近的提交。 - Nate T

    请试一下这个。
    $ sudo apt-get install --reinstall alsa-base pulseaudio
    $ sudo alsa force-reload
    

    嗨,我不明白,在安装了Ubuntu 20.04.3之后,每次重新启动后声音就会“消失”,需要运行这两个命令才能看到内部和HDMI输出,但蓝牙耳机可以正常工作。非常感谢您的分享。 - Frank N Stein
    这对我在Ubunto 20.04上有效(只使用了第二个“force-reload”命令)。在杀掉“gdm3”后,声音设备丢失(因为鼠标无法点击)。恢复正常桌面后,只有“dummy output”声音设备存在。"alsa force-reload"拯救了一天!谢谢! - Dmitry Shevkoplyas
    只需运行sudo alsa force-reload对我有效。谢谢! - Ramon Suarez


    正如OP所说,“我没有害羞的恶魔需要消除。” 此外,你链接的问题也在OP中列出。 - sancho.s ReinstateMonicaCellio
    有一篇文章揭示了运行此命令的背后原理,也许可以提供帮助,因为我按照这篇文章的指导成功解决了timidity-daemon的问题。https://aaroalhainen.medium.com/how-i-fixed-my-ubuntu-20-04-no-audio-dummy-output-issue-eaa525838e0d - Junaid

    我尝试了Aiden Turner的解决方案,因为它似乎是最不会造成潜在危害的。当我执行强制刷新时,我听到扬声器发出噼啪声,我的声音设备出现在控制面板中,在将音量控制调高到默认静音水平之上后,我的声音恢复正常。
    重新启动系统后,我又遇到了虚拟音频问题,所以我按照YuanW在上面发表的帖子中的建议禁用了Timidity服务。我的声卡立即可见,并且这次重启后依然正常工作。
    所以这两个解决方案结合起来对我有效。重新安装pulseaudio和alsa-base,重新初始化,然后禁用Timidity。也许只有第二步实际上是必要的,但是我无法撤销它,而且它基本上没有什么害处,所以我选择整个过程一起进行。

    在我的情况下,我能够通过以下方法在Ubuntu 20.04上恢复声音:
    pulseaudio -k
    
    

    我在最近升级硬件后遇到了Ubuntu 20.04的声音问题。
    做出以下更改后,问题得到解决,也许对你也有帮助。
    追加以下行:
    options snd-hda-intel model=auto
    

    在文件的末尾/etc/modprob.d/alsa-base.conf

    这有助于加载模块吗?我应该先检查一下是否可用吗?我应该在同一个文件中添加一个install命令吗? - sancho.s ReinstateMonicaCellio
    @sancho.sReinstateMonicaCellio 如果是这样的话,在这里 是我的完整 alsa-base.conf 文件。不过它应该是自动生成的。 - Parsa Mousavi
    @ParsaMousavi - 和我一样。 - sancho.s ReinstateMonicaCellio

    我遇到了同样的问题,在声音设备列表中只有"虚拟输出"。
    我检查了$ modprobe --show-depends snd_hda_intel并获得进一步的输出: modprobe: FATAL: 在目录 /lib/modules/5.11.0-22-generic 中找不到 snd_hda_intel 模块 我开始检查文件是否存在(根据上面的正确答案)。这些文件在之前的内核版本 - 5.4.x-xx 和 5.8.x-xx 中是存在的。
    最后,我发现了在5.11内核中存在声音设备的问题。
    然后我简单地重启到了5.8内核。
    如果有人知道如何解决5.11内核的问题,请告诉我。上述建议没有起作用。