cba*_*era 4 audio linux headphones alsa
我遇到了这个非常烦人的问题,耳机插孔在冷启动后可以正常工作。但是在挂起或冷重启(重新启动计算机而不完全关闭计算机)后,耳机插孔将停止工作。
当耳机插入和拔出时,系统会检测到,但耳机不再发出声音。
我仅在 XMG A305 笔记本电脑上的 Ubuntu 14.04(在我的 Windows 分区下它工作正常)下遇到这种情况。这个问题似乎与我的声卡(卡:HDA Intel PCH,芯片:VIA VT1802)使用的驱动程序或不同驱动程序之间的交互有关。
此外,还有其他几个人在其他机器上遇到过这种情况: Clevo Laptop 的错误报告
经过一段时间的搜索,我想出了一个对我很有效的解决方案,也可能对您有所帮助:
代码主要取自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)
此外,您的内核必须在启用附加标志的情况下启动。您可以通过编辑文件“/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)
我希望这会有所帮助,如果您有任何问题,请告诉我。
班德拉