如何在不拔掉耳机的情况下在耳机和扬声器之间切换

use*_*318 35 sound headphones alsa

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

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

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

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

耳机: 耳机在

耳机输出: 耳机输出

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

作为旁注,通过“声音设置”更改音频输出设备会导致对 alsamixer 进行相同的更改。

Goo*_*ick 19

要在扬声器和耳机之间切换,请执行以下步骤:

  1. 运行alsamixer
  2. 如有必要,请选择带有 的声卡F6
  3. 使用向右箭头导航到“自动静音” ?
  4. 使用向下箭头禁用它?
  5. Esc退出。

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

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

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

应用这些说明后,您可以使用Sound Switcher Indicator在耳机和扬声器之间快速切换,让您的生活更轻松。

  • 我认为这不适用于所有硬件组合 - 某些系统(如我的)似乎确实使用了某种类型的硬件开关,这并非未知。例如,如果您将耳机插入吉他放大器,则该放大器中的扬声器通常会关闭-并且这些设备中没有计算机...... (2认同)

Win*_*nix 12

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

按照设计,当插入耳机时,Pulseaudio 会自动关闭线路输出并使用耳机滑块代替。您可以在 alsamixer 中观察这种行为。我们想要的是让耳机和线路输出滑块同时单独工作。如果您想将 Realtek 的插孔重新映射为具有用于耳机的后绿色和用于扬声器的蓝色(在 alsa-tools 的 hdajackretask 的帮助下),这将非常有用。

为此,您应该直接编辑 Pulseaudio 混音器的配置。

1.我们告诉pulseaudio耳机始终插入。

编辑:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-lineout.conf
Run Code Online (Sandbox Code Playgroud)

找:

[Jack Headphone]
state.plugged = no
state.unplugged = unknown
Run Code Online (Sandbox Code Playgroud)

更改noyes

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

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

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

[Element Line Out]
switch = mute
volume = merge
Run Code Online (Sandbox Code Playgroud)

3. 使用耳机时需要完全切断Line Out。

编辑:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-headphones.conf
Run Code Online (Sandbox Code Playgroud)

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

[Element Line Out]
switch = off
volume = off
Run Code Online (Sandbox Code Playgroud)

在某些系统上,您可能还需要通过添加以下代码段来禁用 Front:

[Element Front]
switch = off
volume = off
Run Code Online (Sandbox Code Playgroud)

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

打开 alsamixer:alsamixer -c0alsamixer -c1

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

保存您的更改: alsactl store

5.重启Pulseaudio

$ pulseaudio -k
$ pulseaudio --start
Run Code Online (Sandbox Code Playgroud)

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


来源

  • 你不应该直接在 `/usr/share` 中编辑文件。如果pulseaudio 收到更新(例如修复错误),您的更改将被清除。通常有一种机制可以在`/etc` 或类似文件中提供覆盖文件,但我不知道特别是pulseaudio。 (2认同)

stu*_*bee 6

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

安装alsa-tools-gui

sudo apt-get update
sudo apt-get install alsa-tools-gui
Run Code Online (Sandbox Code Playgroud)

运行hdajackretask然后覆盖您的插孔之一:

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

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

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


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

在此处输入图片说明


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

在此处输入图片说明

命令行执行

正如前面提到的,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
Run Code Online (Sandbox Code Playgroud)


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

cd /tmp/hda-jack-retask-QW1EEZ
cp script.sh ~username/speaker.sh
Run Code Online (Sandbox Code Playgroud)

然后编辑speaker.sh

cd ~username
nano speaker.sh
Run Code Online (Sandbox Code Playgroud)

killall pulseaudio &在文件顶部添加一行。这是必要的,因为在运行时无法更改插孔功能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
Run Code Online (Sandbox Code Playgroud)


要运行脚本:

sudo ./speaker.sh
Run Code Online (Sandbox Code Playgroud)



来自alsa-tools-1.1.5/hdajackretask/README文档:

hdajackretask 的文档

大多数 HDA Intel 声卡在某种程度上可以重新分配任务,即可以用于不止一件事。这个工具是一个图形用户界面,可以轻松地重新分配您的插孔 - 例如,将您的麦克风插孔变成一个额外的耳机,或者为什么不将它们都设为线路输出并将它们连接到您的环绕声接收器?

快速开始

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

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

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

快结束

你搞砸了吗?单击“删除引导覆盖”按钮,该过程完成后,关闭计算机,稍等片刻,然后再次打开它。你现在应该回到你开始的地方。

它起作用了吗?

如果是这样,开心点,分享你的快乐,做点好事!

如果没有,这里有一些事情可以尝试:

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

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

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

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

如果您怀疑问题出在这个 GUI 应用程序而不是内核驱动程序上,请随时给我写一封电子邮件(如果您愿意,请包括一个补丁!)。如果是这样,请写信至 diwic@ubuntu.com。

选项

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

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

  • 高级覆盖 这仅适用于专家。它使您可以单独选择每个配置字段,而不仅仅是一些有意义的预定义值。请注意,此处的大多数组合以一种或另一种方式无效,因此除非您已阅读并理解 HD 音频规范的“配置默认”部分,否则您可能不应该对此感到困惑。(在撰写本文时,可在此处获得: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 - 请参阅“提示字符串”部分。)

  • 这个解决方案很有魅力! (2认同)

hay*_*ham 4

在 KDE 中可以这样做:

系统设置 -> 多媒体 -> 音频和视频设置 -> 音频硬件设置选项卡 > 选择适当的声卡 > 在连接器下您将看到耳机和扬声器选项。

系统设置

  • 我没有使用 kde,但 Unity 有类似的“声音设置”。将音频输出设备从耳机更改为扬声器只会使耳机静音。当插入耳机时,它似乎是一个硬件开关。 (4认同)

PJ *_*ngh 3

如果您不介意添加 PPA,则可以使用Sound Switcher Indicator 。

这将在系统托盘中为您提供一个指示器,您可以单击该指示器来更改输入或输出音频源。您可以在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
Run Code Online (Sandbox Code Playgroud)

图形用户界面方法

要使用 GUI 进行安装,请执行以下步骤:

  1. 从 Unity Dash启动软件和更新应用程序。

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

    deb http://ppa.launchpad.net/yktooo/ppa/ubuntu vivid main
    
    Run Code Online (Sandbox Code Playgroud)

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

  3. 从 Unity Dash启动Ubuntu 软件中心。

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

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