alsa-tools-gui 中的 hdajackretask 破坏了 Ubuntu 16.04 LTS 中板载音频设备的 PulseAudio 配置

alsa-tools-gui 中的 hdajackretask 破坏了 Ubuntu 16.04 LTS 中板载音频设备的 PulseAudio 配置

前言

  • Linux 新手,刚学两天。熟练使用 Windows® 下的设备管理器和 devcon.exe。对 Linux 硬件架构一无所知。

环境(详情请参阅粘贴箱):

  • Ubuntu 16.04 LTS,全新安装
  • 音频设备 1(下面的 dev1):Realtek® ALC887 HD 音频编解码器、Intel B75 芯片组、MSI B75MA-P45(MSI-7798)主板
  • 音频设备 2(下面的 dev2):Audio-gd® USB DAC NFB-2015
  • 安装了额外的音频包:alsa-tools、alsa-tools-gui、gnome-alsamixer

问题描述

  • sudo hdajackretask 使用alsa-tools-gui 重新分配音频插孔针脚的所有尝试均失败:
    • GUI 将报告一条错误消息(见下文);
    • 一旦发生故障,声音输出将立即中断。
  • 经过以下尝试后,dev1 上的音频输出不起作用:
    • Ubuntu 声音混音器显示“虚拟输出”而不是正确的 dev1 输出引脚名称;
    • Dev2 正常播放声音。
    • 重新启动或打开或关闭机器并不能解决问题。

重现步骤

sudo apt install alsa-tools-gui  
sudo hdajackretask  
Now, Read doc of hdajackretask  
Do retasking according to the docs (e.g. setting Pink Mic Front to Headphone)  
The program throws the following error:  
    tee: /sys/class/sound/hwC0D0/reconfig: Device or resource busy  
It also gives something funny in StdOut:  
    0x11 0x411111f0
    0x12 0x411111f0
    0x14 0x01014010
    0x15 0x411111f0
    0x16 0x411111f0
    0x17 0x411111f0
    0x18 0x01a19c30
    0x19 0x02a19c40
    0x1a 0x0181343f
    0x1b 0x02214c20
    0x1c 0x411111f0
    0x1d 0x4005c603
    0x1e 0x411111f0
    0x1f 0x411111f0
    1  

现在,如果您尝试使用 GUI 中的可选开关,错误仍会继续。“引导覆盖”功能也不起作用。
此外,系统混音器不再显示正确的输出引脚名称。出现“虚拟输出”。从现在开始,系统没有声音。

对答案的期望

  1. 提供措施让 Ubuntu 再次蓬勃发展。
    • 1.1 重新安装操作系统或者直接篡改操作系统内核虽然是可以接受的,但是却是不被赞成的。
  2. 提供解决方案,使音频插孔重新分配成为可能。我需要它们来实现双耳机输出、多通道输出等。
  3. 简要解释一下 hdajackretask 到底出了什么问题。
  4. 提供进一步的参考来源,以便我了解如何在 Ubuntu Linux 中正确配置硬件设备。

其他故障排除信息

  • alsa-info.sh粘贴箱
  • dev1 和 dev2 均可使用sudo lshw或进行识别sudo lshw-gtk
  • alsamixer正确显示音频设备
  • gnome-alsamixer加载时出现以下错误:
    **(gnome-alsamixer:3161):警告**:gam_toggle_get_state()。不知道混频器元素“自动静音模式”该怎么做!
    **(gnome-alsamixer:3161):警告**:gam_toggle_get_state()。不知道混频器元素“通道模式”该怎么做!
    **(gnome-alsamixer:3161):警告**:gam_toggle_get_state()。不知道混频器元素“输入源”该怎么做!
    **(gnome-alsamixer:3161):警告**:gam_toggle_get_state()。不知道混频器元素“输入源”该怎么做!
    **(gnome-alsamixer:3161):警告**:gam_toggle_get_state()。不知道混频器元素“环回混频”该做什么!
  • pacmd list cards
    0 个可用的卡。0
    个可用的接收器输入。0
    个可用的源输出。0
    个可用的缓存条目。
  • speaker-test
    speaker-test -Ddefault -c2 no sound
    speaker-test -Dpulse -c2 no sound
    speaker-test -Dsysdefault -c2 ok
    speaker-test -Dfront:PCH -c2 ok
    speaker-test -Dhw:PCH -c2 ok
    speaker-test -Dplughw:PCH -c2 ok

答案1

由于我对 Linux 还很陌生,因此我提出的方法可能不是最有效的,仅供参考。

问题中描述的奇怪行为是由于 alsa 在系统设置或升级过程中配置错误造成的。此外,如果从一开始hdajackretest就运行, jack 重新任务配置也会失败,因为无法以 root 身份正确读取“用户配置文件数据”。 重新安装整个 alsa 框架对我来说是有效的。由于系统音频服务 (PulseAudio) 与 alsa 协同工作,因此还建议重新安装 PulseAudio。 sudohdajackretest

使用包管理器(例如 Synaptic)的重新安装命令不起作用,因为这种重新安装不会清除应用程序创建的配置文件。您必须先清除,然后重新安装,最后重新配置。我知道这听起来像是 Windows 故障排除,但随着 Ubuntu 越来越依赖 GUI,似乎也有充分的理由在 Ubuntu 上以 Windows 的方式思考。


详细步骤:

  1. 安装aptitude。这是必需的。
  2. 了解如何使用aptitude;顺便说一下,它不支持鼠标。
  3. 将你的计算机网络配置为通过有线连接自动连接到互联网,启用 DHCP 并且不指定手动 DNS。否则你以后会很痛苦。
  4. 重启进入恢复模式。启用网络以加载更多设备驱动程序。输入 root“命令提示符”。
  5. 使用 aptitude清除卸载PulseAudio 和 alsa。具体来说,清除所有包含“pulseaudio”或“alsa”模式的包。你必须记下与这两者一起卸载的所有依赖包,其中包括 Ubuntu 桌面 shell(这样你现在就不会有 GUI)。注意版本号。
  6. 重启并再次进入 root 命令提示符。使用 ping 测试网络连接。如果您没有网络访问权限,请使用另一台计算机在线搜索如何从命令行在 Linux 中配置网络。
  7. 使用 aptitude 重新安装 PulseAudio 和 alsa。
  8. 使用 aptitude 重新安装依赖包。
  9. 重新启动进入正常模式。您的音频配置将全部丢失并恢复到全新安装状态。
  10. 运行hdajackretaskw/osudo前缀,并根据需要执行 jack retasking config。当提示需要 sudo 权限时,执行此操作。
  11. 您现在应该可以对音频插孔进行功能性重新任务分配了。

如果您尝试过但仍然无法正常工作,我建议您返回 Windows 或 Mac 来处理多媒体内容。有时 Linux 中的某些功能无法正常工作,就像在其他操作系统中一样,Linux 爱好者可能只是认为他们也不需要这样做。

相关内容