我正在尝试让 MSI TRX40 Pro WiFi 上的 Ubuntu 20.04 中的前置耳机插孔发出声音。主板的设置有点奇怪,音频显然来自 USB 音频设备,因此它在各种混音器(alsamixer,设置中的声音面板)中显示为“USB 音频”。插入耳机后,系统正确检测到耳机已插入,但耳机没有发出声音。
通过在 Google 上搜索,我发现了在 alsamixer 中禁用自动静音的建议,但 alsamixer 根本没有列出该选项。
真正有趣的是,我能使用 选择正确的设备从耳机插孔获取音频aplay
。找到的设备aplay -l
:
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA ATI HDMI], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA ATI HDMI], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA ATI HDMI], device 9: HDMI 3 [HDMI 3]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: ALC1220VBDT [ALC1220-VB-DT], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: ALC1220VBDT [ALC1220-VB-DT], device 1: USB Audio [USB Audio #1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: ALC1220VBDT [ALC1220-VB-DT], device 2: USB Audio [USB Audio #2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: ALC1220VBDT [ALC1220-VB-DT], device 3: USB Audio [USB Audio #3]
Subdevices: 1/1
Subdevice #0: subdevice #0
[忽略 HDMI 音频;这是 GPU 的音频支持,它确实有效 - 只要我想从显示器扬声器播放声音]
如果我选择音频设备 hw:1,1,我可以让 aplay 播放 wav 文件并通过前置插孔的耳机听到它:
aplay -Dhw:1,1 a2002011001-e02.wav
因此,如果我能以某种方式让各种系统范围的混音器用作hw:1,1
它们的输出,那么一切都会正常工作(我认为)。
我发现这款芯片组在 Linux 中存在一些问题,并阅读了这个(很长的)内核错误报告topic/usb-trx40
。因此,也许可以通过使用以下分支来解决所有这些问题https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/? 但如果有一种简单的方法可以让它在这里发挥作用,我犹豫着是否要走那条路。
摘要:如果我手动选择正确的设备,前面板声音就会起作用aplay -D
,无法弄清楚如何让其他混音器使用该设备。
答案1
我设法通过以下 ALSA、PulseAudio 和内核补丁的组合来修复此问题:
- ALSA:https://github.com/alsa-project/alsa-ucm-conf/pull/25。我没有重建包,我只是把两个新文件放进去了
/usr/share/alsa/ucm2/USB-Audio/
。 - 脉冲音频:https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/292。我曾经
apt-get source pulseaudio
获取源代码,应用补丁,然后dpkg-source --commit
告诉 dpkg 有关补丁信息。然后我用重建 pulseaudio 包dpkg-buildpackage -rfakeroot
并安装它们。 topic/usb-trx40
该内核树的分支:https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/log/?h=topic/usb-trx40。这有点棘手,因为我使用的是 ZFS,所以我必须应用 ZFS 补丁以及此处记录的补丁:https://forum.level1techs.com/t/building-custom-kernel-with-zfs-built-in/117464
我不完全确定这三个都是必需的,但它们已经足够了。声音现在可以正常工作了!