睡眠后没有声音 - Ubuntu 20.04

Vic*_*ier 14 sound speakers suspend alsa

我在 Ubuntu 20.04 上有一台小米笔记本专业笔记本电脑(18.04 上有同样的问题)。

笔记本电脑进入睡眠/休眠模式后,扬声器没有声音。系统设置(设置>声音)正在检测正在播放的音乐,睡眠后耳机工作正常。该问题仅与笔记本电脑中集成的扬声器有关。作为快速修复,我需要重新启动才能让扬声器再次工作。

我尝试了以下选项但没有成功:

  1. 打开 alsamixer,看不到任何“静音扬声器”
  2. 在终端输入: sudo alsa force-reload
  3. 按照 Ubuntu 帮助页面上的指示设置睡眠后重新加载 alsa 的脚本
  4. pavucontrol 也安装在我的笔记本电脑上
  5. 试图杀死并重新启动pulseaudio

如果您有任何解决问题的想法,请告诉我。
我相信它与驱动程序有关,但我不确定如何解决此问题。


请在下面找到有关硬件的信息。

aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC256 Analog [ALC256 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Run Code Online (Sandbox Code Playgroud)

cat /proc/asound/cards

 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xb4214000 irq 147
Run Code Online (Sandbox Code Playgroud)

lspci -nnk | grep -A2 Audio

00:1f.3 Audio device [0403]: Intel Corporation Device [8086:02c8]
    Subsystem: Xiaomi Device [1d72:1905]
    Kernel driver in use: snd_hda_intel
Run Code Online (Sandbox Code Playgroud)

pacmd list-cards

1 card(s) available.
    index: 0
    name: <alsa_card.pci-0000_00_1f.3>
    driver: <module-alsa-card.c>
    owner module: 7
    properties:
        alsa.card = "0"
        alsa.card_name = "HDA Intel PCH"
        alsa.long_card_name = "HDA Intel PCH at 0xb4214000 irq 147"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:1f.3"
        sysfs.path = "/devices/pci0000:00/0000:00:1f.3/sound/card0"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "02c8"
        device.form_factor = "internal"
        device.string = "0"
        device.description = "Built-in Audio"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
Run Code Online (Sandbox Code Playgroud)

谢谢。

Le *_*Net 8

输入这个命令:

脉冲音频-k

每次您的计算机进入睡眠状态时。

可能与此错误有关: https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1888598


GHo*_*per 7

我有一个成功的故事(感谢Night Str)!

相同的硬件。睡眠模式后的情况相同。首先获得root权限:

$ sudo su -
Run Code Online (Sandbox Code Playgroud)

比发现您的设备:

# lspci -vvv
...
00:1f.3 Audio device: Intel Corporation Device 02c8 (prog-if 80)
        Subsystem: Xiaomi Device 1963
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 32, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 148
        Region 0: Memory at c4214000 (64-bit, non-prefetchable) [size=16K]
        Region 4: Memory at c4000000 (64-bit, non-prefetchable) [size=1M]
        Capabilities: <access denied>
        Kernel driver in use: snd_hda_intel
        Kernel modules: snd_hda_intel, snd_sof_pci
...
Run Code Online (Sandbox Code Playgroud)

所以,我的设备 ID 是 00:1f.3。让我们检查一下:

# ls /sys/bus/pci/devices/ | grep 00:1f.3
0000:00:1f.3
Run Code Online (Sandbox Code Playgroud)

这是诀窍:

# echo 1 > /sys/bus/pci/devices/0000:00:1f.3/remove
# echo 1 > /sys/bus/pci/rescan
Run Code Online (Sandbox Code Playgroud)

第一个命令断开驱动程序与设备的连接,并从树中分离设备。驱动程序(snd_hda_intel)没有卸载,只是断开连接。第二个命令重新扫描 pci 设备。

结果,声音又出现了。

  • 这是自动执行魔法的脚本:https://github.com/GHopperMSK/configs/blob/master/bin/restart-sound (2认同)

小智 5

我有同样的问题。我找到了一个解决方案,但它在 kde 中不起作用,我不知道为什么。

解决方案:

echo 1 > /sys/bus/pci/devices/<device_address>/remove
sleep 1
echo 1 > /sys/bus/pci/rescan
Run Code Online (Sandbox Code Playgroud)

要搜索设备地址: lspci | grep Audio

更新:

唤醒后应用命令的解决方案:

您可以创建新文件:/lib/systemd/system-sleep/99_restart_sound 并插入以下源代码:

#!/bin/sh
  
case "$1" in
    post)
        DEVICE_ID=`lspci -D |grep Audio|awk '{print $1}'`
        echo 1 > /sys/bus/pci/devices/${DEVICE_ID}/remove
        sleep 1
        echo 1 > /sys/bus/pci/rescan
esac
Run Code Online (Sandbox Code Playgroud)

该文件必须是可执行的:

sudo chmod +x /lib/systemd/system-sleep/99_restart_sound
Run Code Online (Sandbox Code Playgroud)