我刚刚用 MSI mag z590 设置了电脑。它有 Realtek® ALC4080 编解码器。前面板的耳机插孔不起作用。我搜索旧问题。我发现这个最接近问题。不幸的是,没有答案。我的声音设置上定义了耳机,但没有声音。我的内核是 5.11.0-43-generic,ubuntu 版本是 20.04 LTS。我可以用蓝牙耳机听到声音。
答案1
更新:一旦我的 Ubuntu 将 alsa 包更新到版本 1.2.8(使用命令检查alsaucm --version
),我只需安装就可以让我的卡工作alsa-ucm-conf 版本 1.2.10他们在本指南中提供了说明自述。请记住使用 运行tar xvzf
说明中的命令sudo
。完成后,重新启动,尽情享受吧!
我遇到了同样的问题,并使用最新的 alsa UCM 配置修复了它。alsa UCM 配置来自软件包alsa-ucm-conf
。对软件包的更新alsa-ucm-conf
将清除您在此处所做的修改,因此请备份并记录哪些修改有效,以便在最终更新后轻松恢复更改alsa-ucm-conf
。我的修复方法与此处列出的另一个非常相似,但它设法避免了安装新版本的 alsa-lib 的需要。其他访问此处的人应该知道这也取决于您拥有的主板,但我也会介绍这一点。ALC4080 芯片组显示为 USB 音频设备,所以请记住这一点。
现在看看文件ucm2/USB 音频/USB 音频.conf特别是在If.realtek-alc4080
块(由外部括号分隔)处。如果您在评论中看到了您的主板,那就太好了!您可以直接使用该块并跳过下一步。
如果您没有看到主板,请不要担心,我们仍然会让它工作。运行以下命令:
lsusb
您需要从那里提取 USB 音频卡的 ID。每个主板上的 ID 都不同。我的是这样的:
Bus 001 Device 002: ID 42ab:4a5c ASUSTek Computer, Inc. USB Audio
所以我的就是42ab:4a5c
。记得查找包含“USB Audio”的行。如果您看到多行包含 USB Audio,则可能是您有 USB 耳机或音频设备,请拔下它然后重试。
现在/usr/share/alsa/ucm2/USB-Audio/USB-Audio.conf
在您的系统上进行编辑(在执行此操作之前请保存备份以确保安全)并添加整个If.realtek-alc4080
块 ucm2/USB 音频/USB 音频.conf将If.realtek-alc4080
文本包含到您的USB-Audio.conf
文件中。
如果你的主板没有列出,请将以 开头的整行替换为Regex "USB(..."
。Regex "USB<your usb id from lsusb>"
因此,对于我的主板,它将是Regex "USB42ab:4a5c"
然后复制ALC4080.conf和ALC4080-HiFi.conf分别至/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC4080.conf
和/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC4080-HiFi.conf
。
复制这些文件基本上是为了向 alsa 提供必要的配置,以了解如何与 ALC4080 芯片组通信。
现在我们必须弄清楚您的 alsa 库是否可以理解这些配置文件。这些步骤是必要的,因为这些文件中使用的语法是“新”语法(显然是语法 6),只有较新的 alsa 库才能理解(我不知道具体是哪个版本)。让我们尝试加载这个新配置,看看它是否有效。
alsaucm -i
open USB-Audio
listcards
该命令alsaucm -i
将带您进入 的交互模式alsaucm
。然后,open USB-Audio
您告诉它尝试加载 USB 音频的配置。如果此时出现错误,我们需要编辑配置文件以删除它无法理解的语法。如果运行 后没有出现任何错误并看到一些不错的输出listcards
,恭喜您,重新启动并试用您的音频功能。
但是,如果你遇到错误,你需要编辑/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC4080.conf
并替换所有内容
Comment "USB-audio on Realtek ALC4080"
SectionUseCase."HiFi" {
File "/USB-Audio/Realtek/ALC4080-HiFi.conf"
Comment "HiFi 2.0 Channels"
}
# SectionUseCase."HiFi 5+1" {
# File "/USB-Audio/Realtek/ALC4080-HiFi.conf"
# Comment "HiFi 5.1 channels"
# }
# SectionUseCase."HiFi 7+1" {
# File "/USB-Audio/Realtek/ALC4080-HiFi.conf"
# Comment "HiFi 7.1 channels"
# }
这是我尝试翻译成旧语法样式。您还需要编辑/usr/share/alsa/ucm2/USB-Audio/Realtek/ALC4080-HiFi.conf
并删除以 开头的 2 行Variant."HiFi....
。
现在,如果您一直留心观察,您可能已经注意到 ALC4080 有 3 种操作模式。这些操作模式在我的主板手册中有描述,这 3 种操作模式要么是 2.0 通道,要么是 5+1 或 7+1。在未来的版本中,alsa-ucm-conf
这些将单独工作。但现在我们必须对其中一种模式进行硬编码。如果您只是使用耳机,您可以跳过更改PlaybackChannels
并转到下面的验证步骤。如果您使用的是 5+1,则需要用 替换行PlaybackChannels 2
,PlaybackChannels 6
如果您使用的是 7+1,则必须用 替换它PlaybackChannels 8
。您也可以通过注释/取消注释行(注释以 开头#
)来执行此操作,就像ALC4080.conf
上面的新操作一样。如果您想查看适当的标题,您也可以在上面注释/取消注释相应的部分ALC4080.conf
,尽管这不是绝对必要的。不幸的是,我对这种格式不够了解,无法为所有 3 种操作模式提供解决方案。因此,如果您想在它们之间切换,您需要适当地编辑这些文件并重新启动计算机。
现在让我们再次尝试验证配置。再次运行这些
alsaucm -i
open USB-Audio
listcards
您不应该收到任何错误,并且在运行 listcards 时,您应该会看到列出的卡,可能名为“通用 USB 音频”。现在终于可以正常工作了。重新启动并检查它是否正常工作。
答案2
我遇到过并修复了同样的问题,总之,你最好等待最新的 alsa 版本成为稳定的 ubuntu repo,而不是现在尝试修复它。
如果你想现在修复它,以下是我所做的:
首先,您可以通过直接播放音频来排除接线和编解码器问题
aplay
(来源):aplay -D plughw:Audio,1 /usr/share/sounds/alsa/Front_Left.wav
验证后,您可以查看最新的 USB 音频配置在
alas-ucm-conf
你的主板的仓库中。lsusb | grep -i audio
也会帮助你找到准确的 USB ID 并将其与那里的正则表达式匹配,就像各种相关 GH 问题然后,您必须以某种方式获取最新的配置 +
alsa-lib
可以解析它的版本。
前者很容易 - 只需克隆 repo、checkout master 或1.2.7.2
,然后从 repo 的根目录运行以下命令:git clone https://github.com/alsa-project/alsa-ucm-conf && cd alsa-ucm-conf # git checkout 1.2.7.2 if you don't want master # take a a backup sudo mv /usr/share/alsa/ucm2 /usr/share/alsa/ucm2_bak/ # link ucm2 config to the shared config dir sudo ln -s `pwd`/ucm2 /usr/share/alsa/ucm2
安装一个
alsa-lib
可以解析配置的版本更加繁琐,这就是我建议等待的原因。最好从源代码构建(不是我做的,见 1)。最后,一旦您拥有了配置和可以解析它的库版本:
alsaucm reload pulseaudio -k && pulseaudio -D
希望对大家有帮助。
1:我没有从源代码构建,我不知道自己在做什么,所以我天真地将 bookworm 添加到我的目录中,/etc/apt/sources.list
这样我就可以alsa-utils 1.2.7.1,这不知怎么地破坏了我的 DNS 解析器,所以我强烈建议不要这样做。同样,从源代码安装可能是可行的方法,但我没有看到任何关于如何这样做的建议。