答案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%,而不是解决为什么会发生这种情况的根本问题。但如果你只是想让一切正常工作,这就可以了。
(注意:如果您的耳机在启动时插入,您还需要在启动时自动运行此脚本)