音频在配备 ALC1220 和 ESS SABRE 9118 DAC 的 Gigabyte x570 Aorus Master 上无法工作

音频在配备 ALC1220 和 ESS SABRE 9118 DAC 的 Gigabyte x570 Aorus Master 上无法工作

我不确定是什么导致了这个问题,但是当我解决它(或者更确切地说解决它)时,我决定分享我的发现,以节省您的时间并供将来参考。

所以故事是这样的:

我买了一块新的技嘉 X570 Aorus Master 主板并在那里安装了 Arch Linux。后置 3.5 毫米插座未输出音频,出现问题。

下面的答案中描述了获得解决方案的过程。如果您处于同样的情况,那里的详细信息可能会让您知道。

另外,如果您有更好的解决方案,这将解决根本问题,而不仅仅是以数字输出为代价来解决它,请随时发布您的答案!我不会接受我的答案,希望有人能提出更好的答案。

答案1

我安装pavucontrol后发现在配置选项卡中,模拟输出配置文件对于我的音频控制器不可用。唯一可用的配置文件是数字配置文件。

然后我发现了另一件事:如果我强制选择此Analog Stereo Output (unplugged) (unavailable)配置文件并在Output Devices选项卡中我会选择Line Out (unplugged)端口,声音将输出到扬声器,即使扬声器实际上并未连接到线路输出插座

这里有问题。但现在我们至少拥有了一些东西。问题是,由于系统认为该设备已拔出且不可用,所以这就是为什么(我认为)在重新启动或连接和断开耳机等后此设置被重置为(不起作用)默认值。

hdajackretask来救援。在 Arch Linux 中,该工具以软件包形式提供alsa-tools。它基本上可以让我们重新映射狗屎,按预期工作。

  1. 打开hdajackretask
  2. 选择Realtek ALC1220编解码器。
  3. 选择Advanced override选项。
  4. 覆盖您的SPDIF Out, Rear sidePIN(唯一适用于pavucontrol
  5. 按照下面的屏幕截图进行设置。我不确定除“设备”之外的其他内容是否重要。

配置

基本上覆盖它成为一个扬声器。

  1. 现在单击Apply now,然后单击Install boot override,确保pavucontrol您已选择Analog output配置文件和Speaker端口,然后重新启动。

音频应该可以工作,而且连接/断开耳机也不会弄乱任何东西(按预期工作),所以对于大多数人来说它应该是足够好的解决方案。据我所知,唯一的负面影响是你无法使用Digital output它,所以如果你需要它,你可能需要更多地使用它。我现在太累了,无法检查其他配置。祝你好运!

编辑:

看起来任何线路输出引脚都可以用设备“扬声器”覆盖,然后模拟输出将恢复。另外,我在这里发布了错误报告:https://bugzilla.kernel.org/show_bug.cgi?id=205275

2020 年 11 月 29 日编辑:

在当前最新的 Linux 内核版本中,“Line Out”端口看起来工作正常,但在与 Windows 进行双启动设置时仍然可能存在问题。在这种情况下,Windows 的 Realtek 驱动程序似乎出现了故障 - 它使设备在重新启动后处于奇怪的状态,这使得它无法在 Linux 上运行。这里的解决方案是不使用专用的 Realtek 驱动程序,而是使用 Windows 的默认驱动程序。要解决此问题,您需要从 Windows 卸载 Realtek 驱动程序并执行冷启动。 Windows 的默认驱动程序应该可以正常工作。

答案2

我遇到了这个问题的一个稍微不同(但可能相关)的版本。在 Aorus Matster 上设置音频时,我注意到我的扬声器没有发出音频,而我的低音炮(插入 C.Sub 插孔)却发出音频。奇怪的是,如果我拔掉扬声器的插头,低音炮也会停止。

就我而言,使用hdajackretask更改 SPDIF 输出设置没有任何帮助,相反,我通过遍历所有环绕输出引脚(绿色、橙色、黑色)并将它们从线路输出更改为扬声器来修复它。确保将它们全部放在同一组中。

值得注意的是:在音频混音器的输出面板中,在进行此更改之前,端口的选择是“扬声器(不可用)”和“线路输出”,进行此更改后,端口现在是“模拟输出”。

最后,如果您尝试应用设置hdajackretask并收到设备或资源正忙的错误,请确保您以 root 身份运行它,并且您也已停止用户帐户中的所有音频程序。您可能还需要使用以下命令停止用户的pulseaudio副本

systemctl --user stop pulseaudio.socket
systemctl --user stop pulseaudio.service

然后,您可以应用它,在用户帐户中启动pulseaudio(用启动代替停止)并在将其安装到启动覆盖之前进行测试。请注意,如果您之前已停止 VLC 但将其保持打开状态,即使您重新启动pulseaudio,它也不会播放音频,您将需要完全退出它并重新启动它才能进行测试。

答案3

我也处理这个问题有一段时间了......事实上太长了。我使用的是 i3,所以配置非常简单。

在 level1 论坛上阅读技嘉 X570 Aorus Master Linux 吐槽 & 打磨线程:有一篇关于 alsamixer 中自动静音选项的帖子。对我来说,一切都已启用。禁用它并将我的耳机重新插入后部线路输出端口目前可以正常工作!确保它在 中被选中pavucontrol

答案4

是否被内核检测到?

# dmesg | grep 'ALC1220'
[   85.701194] snd_hda_codec_realtek hdaudioC1D0: autoconfig for ALC1220: line_outs=3 (0x1b/0x15/0x16/0x0/0x0) type:line

卡号是哪个?

# grep -l ALC1220 /proc/asound/card*/codec*
/proc/asound/card1/codec#0

因此,卡1。

创建~/.asoundrc使卡 1 成为默认值:

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw
    card 1
}

安装alsa-utils

# pacman -S alsa-utils

~/.asoundrc通过运行检查您是否有效:

# alsamixer

alsamixer 的初始屏幕截图

请注意左上角如何显示“芯片:Realtek ALC1220”。您只需按 ESC 键即可从命令行取消静音:

# amixer -- sset Master playback -6dB unmute
Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback 0 - 87
  Mono: Playback 79 [91%] [-6.00dB] [on]

我实际上不确定为什么这里说“单声道”,但我想是因为你不能单独改变左右声道的音量。我在我的另一个linux机器上得到相同的输出(同时听立体声上面有音乐)。

运行扬声器测试:

# speaker-test -c 2

speaker-test 1.2.2

Playback device is default
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 64 to 8544000
Period size range from 32 to 4272000
Using max buffer size 8544000
Periods = 4
Unable to set hw params for playback: Cannot allocate memory
Setting of hwparams failed: Cannot allocate memory

哦这个事实证明在内核 5.6 中被破坏。可能会在 5.7-rc2 及更高版本中修复(我没有对此进行测试;如果有人知道它何时修复,请添加评论)。编辑:目前在 5.6.13 上,这再次有效。

相反,我跑aplay了一些 wav。它奏效了。或者不,它没有。

我有:

# aplay Checkmate.wav
Playing WAVE 'Checkmate.wav' : Unsigned 8 bit, Rate 48000 Hz, Stereo
aplay: set_params:1343: Sample format non available
Available formats:
- S16_LE
- S32_LE

我对此并不满意,但与此同时,通过将我的更改~/.asoundrc为:

pcm.!default {
    type plug
    slave {
        pcm "hw:1,0"
    }
}

ctl.!default {
    type hw
    card 1
}

然后它就起作用了。

编辑:当前使用以下内容~/.asoundrc

# Convert alsa API over jack API.
# For use with for example,
#   aplay foo.wav
# or running flash.

# Use this as default.
pcm.!default {
    type plug
    slave { pcm "jack" }
}

ctl.mixer0 {
    type hw
    card 1
}

# pcm type jack
pcm.jack {
    type jack
    playback_ports {
        0 system:playback_1
        1 system:playback_2
    }
    capture_ports {
        0 system:capture_1
        1 system:capture_2
    }
}

这就是您使用 JACK 连接 ALSA 时想要使用的内容。这使得通常连接到 ALSA 的其他应用程序改为连接到 JACK。不过,使用 JACK 是一种全新的蠕虫,所以在你只用pulseaudio 一切顺利之前不要这样做。

--编辑结束

当我运行时,5.6.10-arch1-1我的猜测是克里斯蒂安的补丁已经进入我的内核(谢谢!)。

相关内容