插入时耳机自动静音

Fib*_*ibo 8 headphones pulseaudio alsa mute 16.04

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

在此处输入图片说明

有没有办法让它恢复到正常行为?

先感谢您!

小智 2

编辑这个文件:

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

评论这 2 行只需添加 ; 在队伍前面

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

重新启动脉冲音频:

killall pulseaudio
pulseaudio --start
Run Code Online (Sandbox Code Playgroud)


Ces*_*ian 0

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

amixer -c 0 set Speaker 100
Run Code Online (Sandbox Code Playgroud)

对于那些确实需要取消通道静音的人来说,它是:

amixer -c 0 set speaker 100 unmute
Run Code Online (Sandbox Code Playgroud)

首先你需要测试这个命令,如果它没有做任何事情,'-c 0'值很可能是错误的(-c代表卡)你可以运行aplay -l来获取所有声音设备的列表,你需要找到您的声卡对应的“卡号”。(通常为 0,有时为 1,很少为其他值)

一旦确认该命令正在执行其预期的操作,请在以下位置创建脚本:/home/user/scripts/headphonefix.sh

#!/bin/bash
sleep 0.5 && amixer -c 0 set Speaker 100
Run Code Online (Sandbox Code Playgroud)

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

接下来使脚本可执行

chmod +x /home/user/scripts/headphonefix.sh
Run Code Online (Sandbox Code Playgroud)

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

我自己不在 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
Run Code Online (Sandbox Code Playgroud)

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

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

乌班图:sudo service acpid restart

拱门/曼扎罗:systemctl restart acpid

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

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

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