插入耳机时自动静音

插入耳机时自动静音

自从我升级到 Ubuntu 16.04 LTS 后,出现了以下问题:当我插入耳机时,耳机被静音了,为了解决这个问题,我必须取消“扬声器”的静音alsamixer,如图所示。

在此处输入图片描述

有什么方法可以使其恢复正常行为吗?

先感谢您!

答案1

编辑此文件:

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

注释这两行,只需在行前加上 ;

[Element Speaker]
; switch = off
; volume = off

重新启动 pulseaudio:

killall pulseaudio
pulseaudio --start

答案2

我有一个修复程序,虽然不能解决核心问题,但可以说是治标不治本(每次插入耳机时都会自动将“扬声器”通道音量再次设置为 100%)。对我来说,“扬声器”通道实际上不需要取消静音,但需要将其音量设置为 100 才能获得正常声音。我用来执行此操作的命令是

amixer -c 0 set Speaker 100

对于确实需要取消频道静音的人来说,方法如下:

amixer -c 0 set speaker 100 unmute

首先,您需要测试此命令,如果它不执行任何操作,则“-c 0”值很可能是错误的(-c 代表卡),您可以运行aplay -l以获取所有声音设备的列表,您需要找到声卡对应的“卡号”。 (它通常是 0,有时是 1,很少是其他值)

确认命令正在执行预期操作后,请在 /home/user/scripts/headphonefix.sh 中创建脚本

#!/bin/bash
sleep 0.5 && amixer -c 0 set Speaker 100

其中“/home/user”是您的主文件夹的路径。(您可以使用任何您想要的路径,这只是一个建议)。

接下来使用以下命令使脚本可执行

chmod +x /home/user/scripts/headphonefix.sh

现在我们已经完成一半了。

我自己没有使用 ubuntu(我使用 manjaro),但这个“修复”需要 acpid 服务运行(我认为它在 ubuntu 上默认启用,在 arch 上它是systemctl 启用 acpid在每次启动时启动它。

要检查 acpid 服务是否正在运行,请运行 acpi_listen。如果收到套接字错误,则表示服务未运行;如果只收到空白输出,则表示一切正常。

运行 acpi_listen 后插入耳机即可获取其事件,对我来说,事件如下:jack/headphone HEADPHONE plug

现在有了这些信息,我们可以创建这个文件(使用 sudo):/etc/acpi/events/headphones

让它的内容看起来像这样:

event=jack/headphone HEADPHONE plug
action=/home/user/scripts/headphonefix.sh

其中 /home/user/scripts/headphonefix.sh 是我们之前创建的脚本的路径。

现在为了确认一切正常,我们需要通过重新启动或运行此命令来重新启动 acpid:

乌本图:sudo service acpid restart

Arch/Manjaro:systemctl restart acpid

然后拔下耳机再重新插入,瞧,现在一切都应该可以“正常工作”了。

这不是一个完美的解决方案,因为它只会让 alsa 在每次插入耳机时将扬声器通道的音量再次设置为 100%,而不是解决为什么会发生这种情况的根本问题。但如果你只是想让一切正常工作,这就可以了。

(注意:如果您的耳机在启动时插入,您还需要在启动时自动运行此脚本)

相关内容