挂起/重启后耳机插孔停止工作

cba*_*era 4 audio linux headphones alsa

我遇到了这个非常烦人的问题,耳机插孔在冷启动后可以正常工作。但是在挂起或冷重启(重新启动计算机而不完全关闭计算机)后,耳机插孔将停止工作。

当耳机插入和拔出时,系统会检测到,但耳机不再发出声音。

我仅在 XMG A305 笔记本电脑上的 Ubuntu 14.04(在我的 Windows 分区下它工作正常)下遇到这种情况。这个问题似乎与我的声卡(卡:HDA Intel PCH,芯片:VIA VT1802)使用的驱动程序或不同驱动程序之间的交互有关。

此外,还有其他几个人在其他机器上遇到过这种情况: Clevo Laptop 的错误报告

cba*_*era 6

经过一段时间的搜索,我想出了一个对我很有效的解决方案,也可能对您有所帮助:

代码主要取自here

获取代码

存在一个可以重新激活耳机插孔的 python 脚本。此代码取自GitHub 上的 ektor5。您需要下载该脚本,将其放置在系统可​​以找到它的某个位置并使其可执行。你可以用这一行来做这一切:

sudo wget https://raw.githubusercontent.com/ektor5/init-headphone/master/init-headphone -O /usr/local/sbin/init-headphone && sudo chmod +x /usr/local/sbin/init-headphone
Run Code Online (Sandbox Code Playgroud)

安装依赖

init-headphone脚本需要可以安装的依赖项:

sudo apt-get install python-smbus
Run Code Online (Sandbox Code Playgroud)

添加 grub 标志

此外,您的内核必须在启用附加标志的情况下启动。您可以通过编辑文件“/etc/default/grub”来完成此操作。改变这一行

GRUB_CMDLINE_LINUX=""
Run Code Online (Sandbox Code Playgroud)

对此

GRUB_CMDLINE_LINUX="acpi_enforce_resources=lax"
Run Code Online (Sandbox Code Playgroud)

在那之后运行

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

启动时加载模块

此外,脚本需要加载模块。即“i2c_dev”和“i2c_i801”。这些可以在运行时加载

modprobe i2c_dev
modprobe i2c_i801
Run Code Online (Sandbox Code Playgroud)

您现在可以通过运行“sudo init-headphone”来测试它是否有效。

要在启动时自动加载模块,请将以下几行添加到“/etc/modules”:

i2c_dev
i2c_i801
Run Code Online (Sandbox Code Playgroud)

创建启动脚本

最后,当我们的计算机重新启动或从暂停状态返回时,我们希望脚本自动运行。为此,请将以下脚本放在“/etc/pm/sleep.d/”中。

sudo gedit /etc/pm/sleep.d/init-headphone
Run Code Online (Sandbox Code Playgroud)

添加以下几行

#!/bin/sh

if [ ! -x /usr/local/sbin/init-headphone ]; then
    exit 0
fi

case $1 in
     resume|thaw)
        /usr/local/sbin/init-headphone
       ;;
esac
Run Code Online (Sandbox Code Playgroud)

并且不要忘记使文件可执行

sudo chmod +x /etc/pm/sleep.d/init-headphone
Run Code Online (Sandbox Code Playgroud)

我希望这会有所帮助,如果您有任何问题,请告诉我。

班德拉