插入扬声器和耳机并即时切换软件

插入扬声器和耳机并即时切换软件

当我插入耳机时,音频输出设备从扬声器切换到耳机。

我只想使用软件开关,而不是总是插入/拔出耳机,这最终会磨损我的电线/插孔。

当我打开“声音设置”并从“耳机->内置音频”切换到“线路输出->内置音频”时,我的扬声器或耳机没有声音。

我打开了 alsamixer 来看看插入/拔出耳机时会发生什么。

耳机插孔: 耳机插入

耳机输出: 耳机输出

插入耳机后,我手动更改了所有设置,以匹配拔出耳机时的设置,但仍然没有通过扬声器听到任何声音。

附注:通过“声音设置”更改音频输出设备会导致 alsamixer 发生相同的变化。

答案1

为了能够在扬声器和耳机之间切换,请按照以下步骤操作:

  1. 跑步alsamixer
  2. 如果需要,请使用 选择您的声卡F6
  3. 使用右箭头导航到“自动静音”
  4. 使用向下箭头将其禁用
  5. Esc退出。

或者您可以使用一个命令完成所有这些步骤:

  1. 打开终端
  2. 跑步amixer -c 1 set 'Auto-Mute Mode' Disabled

现在您可以在 PulseAudio 音量控制中在扬声器和耳机之间切换。

遵循这些说明后,您可以使用以下方法让您的生活更轻松声音切换器指示灯在耳机和扬声器之间快速切换。

答案2

插入扬声器和耳机并即时切换软件

根据设计,当插入耳机时,Pulseaudio 会自动关闭线路输出,并使用耳机滑块。您可以在 alsamixer 中观察到此行为。我们希望耳机和线路输出滑块同时单独工作。如果您想重新映射 Realtek 的插孔,例如,后置绿色用于耳机,蓝色用于扬声器(借助 alsa-tools 的 hdajackretask),这将非常有用。

为了实现这一点,您应该直接编辑 Pulseaudio 混音器的配置。

1. 我们告诉 pulseaudio 耳机始终处于插入状态。

编辑:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-lineout.conf

寻找:

[Jack Headphone]
state.plugged = no
state.unplugged = unknown

改成。noyes

如果您使用计算机机箱前面的插孔,[Jack Front Headphone]请更换。

2. 默认情况下,Line Out 的音量仅由 Master 控制,而不是由 Line Out 滑块本身控制。

我们要将 Line Out 与 Master 合并。将此代码片段添加到文件末尾:

[Element Line Out]
switch = mute
volume = merge

3.使用耳机时需要彻底切断Line Out。

编辑:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-headphones.conf

将此代码片段添加到文件末尾:

[Element Line Out]
switch = off
volume = off

在某些系统上你可能还需要通过添加此代码片段来禁用 Front:

[Element Front]
switch = off
volume = off

4. 与 Pulseaudio 一样,当插入耳机时,Alsa 本身也会切断扬声器。

打开 alsamixer:alsamixer -c0或者alsamixer -c1

使用/启用自动静音模式。使用 关闭自动静音模式。使用 关闭 alsamixer Esc

使用以下命令保存更改:alsactl store

5. 重新启动 Pulseaudio

$ pulseaudio -k
$ pulseaudio --start

现在,pulseaudio 中同一个接收器上有两个独立的端口。它们相互静音,因此您可以切换到耳机,这将使线路输出静音,反之亦然。要在端口之间切换,您可以使用 Gnome 或 Plasma 混音器,或安装适当的桌面扩展。


来源

答案3

hdajackretask 是一种工具,用于重新分配插孔的功能以用于不同的输入、输出或禁用 - 例如,将麦克风插孔变成额外的耳机,或者为什么不将它们都变成线路输出并将它们连接到环绕接收器?

安装alsa-工具-gui

sudo apt-get update
sudo apt-get install alsa-tools-gui

然后运行hdajackretask以覆盖其中一个千斤顶:

  1. 选择编解码器
  2. 单击该引脚的“覆盖”复选框并选择所需的新功能
  3. 点击“立即申请”

    注意:如果耳机插孔有内置硬件开关,可以重新路由音频,那么你就没救了(抱歉,运气不好)。但是,如果操作系统检测到耳机插孔中插入了线路,则音频很可能不会机械切换。

我发现同时覆盖耳机和扬声器效果最好。


hdajackretask 将耳机切换到扬声器的屏幕截图:

在此处输入图片描述


单击“立即应用”后,将创建一个 shell 脚本来进行更改,并提示输入超级用户密码才能执行。该脚本也会保存在/tmp其中,您可以复制并稍后使用以下命令执行须藤从命令行。

在此处输入图片描述

命令行执行

如前所述,创建hdajackretask一个脚本,script.sh类似于您想要的插孔功能:/tmp/tmp/hda-jack-retask-QW1EEZ/

#!/bin/sh
echo "0x12 0x90a60140" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x14 0x90170150" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x17 0x40000000" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x18 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x19 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1a 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1b 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1d 0x40700001" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1e 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x21 0x40f000f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo 1 | tee /sys/class/sound/hwC0D0/reconfig 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log


将此脚本复制到系统上的其他位置(/tmp 除外)

cd /tmp/hda-jack-retask-QW1EEZ
cp script.sh ~username/speaker.sh

然后编辑speaker.sh

cd ~username
nano speaker.sh

killall pulseaudio &在文件顶部添加以下行。这是必要的,因为 jack 函数在pulseaudio运行时无法更改。默认情况下pulseaudio将重新生成。同时将文件路径更改errors.log/tmp您喜欢的任何位置:

#!/bin/sh
killall pulseaudio &
echo "0x12 0x90a60140" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x14 0x90170150" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x17 0x40000000" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x18 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x19 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1a 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1b 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1d 0x40700001" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1e 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x21 0x40f000f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo 1 | tee /sys/class/sound/hwC0D0/reconfig 2>>/tmp/errors.log


运行脚本:

sudo ./speaker.sh



来自alsa-tools-1.1.5/hdajackretask/自述文件文档:

hdajackretask 的文档

大多数 HDA Intel 声卡在某种程度上都是可重新分配的,也就是说,可以用于多种用途。此工具是一个 GUI,可让您轻松重新分配插孔 - 例如,将您的麦克风插孔变成额外的耳机,或者为什么不将它们都变成线路输出并将它们连接到您的环绕接收器?

快速开始

从命令行启动应用程序“hdajackretask”。在顶部栏中选择一个编解码器;有些人只有一个 - 如果您有多个,其中一个是“主”编解码器,其余的可能是 HDMI 编解码器。

所有插孔(以及其他输入/输出)都显示在“引脚配置”下。要覆盖其中一个插孔,请单击该引脚的“覆盖”复选框并选择所需的功能。注意:如果您选择“线路输出(后)”覆盖,您还应该有一个“线路输出(前)”覆盖。“线路输出(中置/LFE)”覆盖仅适用于前两个覆盖,依此类推。

您可以通过点击“立即应用”来试用新配置。要使新配置成为启动默认配置,请单击“安装启动覆盖”。执行任何这些操作都需要 root 权限,因此系统可能会要求您输入密码。

快端

你搞砸了吗?点击“删除引导覆盖”按钮,一旦过程完成,关闭计算机,等待一会儿,然后再次打开。现在你应该回​​到开始的地方了。

它有效吗?

如果是的话,那就开心点,分享你的快乐,做些好事吧!

如果没有,请尝试以下操作:

  • 进入 alsamixer,查看是否有新的音量控制,并查看它们是否取消静音并设置为合理的值。

  • 有时驱动程序不会关闭未连接的引脚(如果它们未连接,为什么要担心?)。您可以通过将计算机完全关闭一段时间来解决此问题。

  • 请参阅下面的“model=auto”选项

如果这没有帮助,那么很有可能您遇到了驱动程序或硬件限制。您可能会遇到驱动程序错误(也许以前没有人测试过四个耳机!)。如果遇到这种情况,请随时在 alsa-devel 邮件列表上报告:但是,由于人手不足,很可能这个问题的优先级很低(对于标准配置,开箱即用的声音比支持奇怪的配置更重要)。但是,如果您是内核黑客,并且想出了一个可以解决您的问题的补丁,而不会搞砸其他任何事情,那么很有可能它会被合并。

如果您怀疑问题出在这个 GUI 应用程序上而不是内核驱动程序上,请随时给我写一封电子邮件(如果您愿意,可以附上一个补丁!)。如果是这样,请写信给[电子邮件保护]

选项

  • 显示未连接的引脚 BIOS 负责设置编解码器上的哪些引脚实际连接到某物以及哪些引脚未连接到某物。有时 BIOS 会出现错误,不会显示所有插孔。如果您有插孔但 BIOS 提示没有,您可以尝试启用随机引脚并查看是否有效。

  • 设置 Model=auto 某些编解码器(尤其是较旧的编解码器和内核 3.8 及以下的编解码器)被硬编码为使用特定模型,因此不会关心您的覆盖。在许多情况下,对于较新的内核,自动解析器现在也可以很好地适用于这些编解码器。您可以通过选中此框来强制使用自动解析器。但在某些情况下,显式模型的存在是有原因的,如果是这样,您就陷入困境了。

  • 高级覆盖 这仅适用于专家。它让您单独选择每个配置字段,而不是仅选择几个有意义的预定义值。请注意,这里的大多数组合在某种程度上都是无效的,因此除非您已阅读并理解 HD Audio 规范的“配置默认值”部分,否则您可能不应该弄乱它。(在撰写本文时,可在此处找到: http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/high-definition-audio-specification.pdf

  • 解析器提示 这使您能够向驱动程序发送特殊“提示”,导致解析行为不同。除非您已阅读驱动程序文档,否则请将其保留为“默认”设置。(在撰写本文时,可在此处找到:https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt- 请参阅“提示字符串”部分。)

答案4

你可以使用声音切换器指示灯,如果您不介意添加 PPA。

这将在系统托盘中显示一个指示器,您可以单击该指示器来更改输入或输出音频源。您可以在http://yktoo.com/en/software/indicator-sound-switcher

终端方法

要安装,请使用终端输入以下内容。

sudo add-apt-repository ppa:yktooo/ppa
sudo apt-get update
sudo apt-get install indicator-sound-switcher

GUI 方法

要使用 GUI 安装,请按照以下步骤操作:

  1. 启动软件与更新来自 Unity Dash 的应用程序。

  2. 点击“其他软件”选项卡。然后添加以下新源:

    deb http://ppa.launchpad.net/yktooo/ppa/ubuntu vivid main
    

    (请记住将“vivid”替换为您的 Ubuntu 版本。支持的版本列在http://ppa.launchpad.net/yktooo/ppa/ubuntu/dists/)。

  3. 发射Ubuntu 软件中心来自 Unity Dash。

  4. 搜索“声音输入/输出选择器指示器”,并安装它。

注意:如果您的系统在耳机插孔内有一个硬件开关,则此解决方案将不起作用,正如 Terrance 上面所建议的那样。

相关内容