是的,这个问题已经被问了六七百万次了。但每个人遇到这个问题的原因都不一样,因此每个人的解决方案也都不一样。我正为这个问题所苦恼,所以我想写一篇文章,列出所有主要原因(和解决方案)以及故障排除步骤。当然,如果有人发现我遗漏了什么,请提出来。
第一步,机器是什么。
user@machine:~$ sudo inxi
CPU: 8-core AMD Ryzen 7 7735HS with Radeon Graphics (-MT MCP-)
speed/min/max: 1700/1600/4828 MHz Kernel: 5.19.0-35-generic x86_64 Up: 9m
Mem: 2348.4/28818.8 MiB (8.1%) Storage: 476.94 GiB (2.7% used) Procs: 397
Shell: Sudo inxi: 3.3.13
user@machine:~$ sudo inxi -xA
Audio:
Device-1: AMD driver: snd_hda_intel v: kernel bus-ID: 74:00.1
Device-2: AMD Raven/Raven2/FireFlight/Renoir Audio Processor
driver: snd_pci_acp6x v: kernel bus-ID: 74:00.5
Device-3: AMD Family 17h HD Audio driver: snd_hda_intel v: kernel
bus-ID: 74:00.6
Sound Server-1: ALSA v: k5.19.0-35-generic running: yes
Sound Server-2: PulseAudio v: 15.99.1 running: yes
Sound Server-3: PipeWire v: 0.3.48 running: yes
user@machine:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy
第二,表现如何。HDMI 上没有音频。耳机插孔工作正常,蓝牙音频工作正常,HDMI 上根本没有音频(视频信号正常)。
第三,尝试过的方法。HDMI 电缆和扬声器都很好。我连接了一台运行 20.04 的旧笔记本电脑,HDMI 上的音频很好。有人在某个地方找到了一个解决方案,他们通过获取“4K HDMI 电缆”(如果有的话)解决了这个问题(在 Windows 上),解决了他们的问题。我的 HDMI 电缆上写着“高速电缆”,没有其他内容。对于其他人来说,解决问题的方法是断开 HDMI 电缆,然后重新连接。试过了,没用。
我查看了声音设置,HDMI 被选为输出。有时我会看到一个配置文件,但不会持续太久,然后就消失了,所以我怀疑这是软件问题(驱动程序?),而不是硬件问题。当我播放声音时,声音计会移动,所以 PC 认为它正在输出声音。我可能应该看看驱动程序(他们说是 Intel HDA,这是 AMD APU,什么鬼?)。
我还查看了 Alsamixer,以确保没有任何东西被静音(我在其他机器上也遇到过这个问题),所有东西都取消了静音,并且我把所有音量调到最大。
更新#1:尝试删除脉冲音频配置文件并重新启动,没有变化。
更新#2:Gnome Alsamixer 在 22.04 中不存在,18.04 是具有该功能的最新版本。
更新#3:在特定硬件输出上播放测试声音并没有导致 HDMI 上的声音。不过,我确实按预期通过耳机插孔听到了声音。
更新#4:发现一篇帖子声称 HDMI 音频对于我当前的内核来说已损坏,我需要降级。
需要调查的事项(附有帖子链接):
创建一个接收器(我甚至不知道水槽是什么,但我可以研究一下,说明看起来足够简单和清晰)
安装 GNOME AlsaMixer(我不知道这与 cli alsamixer 有何不同,可能是更新或分叉版本,值得尝试)
删除 pulseaudio 配置文件(值得尝试)
禁用 iGPU(正如该帖子中有人指出的那样,这是一种心理现象,就像闭上眼睛就能听得更清楚一样)
我会根据进展编辑此帖子。
答案1
大获成功!众所周知,内核 v5.19.0-35 在 HDMI 音频方面存在问题。我恢复到了 kervel v5.15.104,这是 v5 系列中最新的 LTS 内核,一切正常。在声音设置下,单击“测试”会在通过 HDMI 连接的扬声器上产生可听见的声音,播放 YouTube 视频也会通过这些扬声器产生声音。以下是我降级内核的步骤,从原始帖子中复制而来,以防万一那里的情况发生变化:
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh
chmod +x ubuntu-mainline-kernel.sh
# search and find your wanted version
ubuntu-mainline-kernel.sh -r | grep 5.13
# install that version kernel
ubuntu-mainline-kernel.sh -i v5.13.19
# get all menuentries
grep 'menuentry \|submenu ' /boot/grub/grub.cfg | cut -f2 -d "'"
# change the grub configuration
vi /etc/default/grub
from: GRUB_DEFAULT=0
to: GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.13.19-051319-generic"
# update grub
update-grub
# reboot
reboot now
# verify
uname -r
请注意,其中一些命令需要 sudo。还请进行以下 3 项更改以匹配所需的内核版本:
- 第二步将“5.13”改为你想要的版本(我这里是5.15)
- 将第 3 步中的“v5.13.19”更改为第 2 步输出中所需的版本(在我的情况下为 v5.15.104)
- 第 5 步中的“5.13.19-051319-generic”与第 4 步输出中的准确条目相比,该条目具有您所需的内核版本,并且没有显示恢复(在我的情况下为“5.15.104-0515104-generic”)
我感到非常沮丧,一个有缺陷的内核被强行安装在用户身上,并且还是一个非 LTS 内核。