![暂停后无 HDMI 音频](https://linux22.com/image/1137054/%E6%9A%82%E5%81%9C%E5%90%8E%E6%97%A0%20HDMI%20%E9%9F%B3%E9%A2%91.png)
我的问题是,当我在挂起后唤醒计算机时,HDMI 上没有音频。好吧,有“音频”,但就像播放一首歌,每 10 分钟听到 1 秒,而且非常失真。有些奇怪。
使用笔记本电脑的扬声器我没有遇到任何问题。
我从 8.04 开始使用 Ubuntu。我实际使用的笔记本电脑 ThinkPad t450 上装有 14.04,在升级到 16.04 之前没有出现这样的问题。
我已看过此帖子但对我不起作用:暂停/恢复后无声音
我也尝试使用脚本/etc/pm/sleep.d/
#!/bin/sh
# Script to disable hdmi audio before suspend and restart after wake.
case "${1}" in
suspend|hibernate)
rmmod snd_hda_codec_hdmi
rmmod snd
;;
resume|thaw)
modprobe snd
modprobe snd_hda_codec_hdmi
;;
esac
仍然不起作用,也许我应该在脚本中添加一些内容?
lsmod | grep hdmi给我
snd_hda_codec_hdmi 53248 1
snd_hda_codec 135168 4 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_intel
snd_hda_core 73728 5 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
snd_pcm 106496 5 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel,snd_hda_core
snd 81920 35 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel,thinkpad_acpi,snd_seq_device
谢谢您的帮助!
答案1
我有一台 Radeon 6570,但xrandr
解决方案不起作用。
由于CTRL+ ALT+F6和CTRL+ ALT+F7有效,我使用了命令chvt
。
因此我将 Marcos Silveira 脚本修改如下:
/lib/systemd/system-sleep/fixhdmiaudio
#! /bin/sh
case $1/$2 in
post/*)
# Vai para o VT + 1 e retorna para o VT atual
CURRENT_VT=$(fgconsole)
chvt $((CURRENT_VT + 1)) && chvt $((CURRENT_VT))
;;
esac
答案2
/etc/pm/sleep.d/
从 15.04 开始迁移到 systemd 后,输入脚本将不再起作用。
如果您想尝试这样的脚本,您可以/lib/systemd/system-sleep/
直接使用它们,不过由于传递的参数不同,您还需要对它们做一些细微的修改。
从man systemd-sleep
:
第一个参数将是“pre”,第二个参数将是“suspend”、“hibernate”或“hybrid-sleep”,具体取决于所选择的操作。
离开系统挂起和/或休眠状态后,立即运行相同的可执行文件,但第一个参数现在是“post”。
在您发布的脚本中,您需要更改suspend|hibernate)
为pre)
并将resume|thaw)
更改为post)
。
答案3
我知道这个问题有多烦人。我曾经安装过专有的 ATI 驱动程序,但是当我更新到 16.04 时,我发现了这个问题。我意识到这个问题很容易解决,只需按ctrl+ alt+f6和 ctrl+ alt+f7或使用 xrandr 更改分辨率即可。所以我创建了以下解决方法。
打开终端,然后输入以下命令...
sudo nano /lib/systemd/system-sleep/fixhdmiaudio
...并粘贴此内容:
#! /bin/sh
# Bug 1252423 – HDMI Audio seen as 'unplugged' after Suspend
# Created by Marcos Silveira - 2016
# Workaround
case $1/$2 in
pre/*)
#sleeping - nothing to do
who |cut -d " " -f1 | uniq > /tmp/suspend.user
;;
post/*)
# Waking up
export DISPLAY=:0
#perform command as the current tty user
su - $(cat /tmp/suspend.user) -c "/usr/bin/xrandr --output HDMI-0 --auto;sleep 1s;/usr/bin/xrandr --output HDMI-0 --mode 1920x1080"
;;
esac
我的默认分辨率是 1920x1080。您可以使用 xrandr 设置任何支持的分辨率。我的默认 HDMI 输出是 HDMI-0。这对您来说可能有所不同。我建议您先执行 xrandr 以确认您的默认 HDMI 输出。
保存关闭并设置权限:
sudo chmod 755 /lib/systemd/system-sleep/fixhdmiaudio
享受并祝你好运。