这几天和alsa的bugtracker上的人交流了下,终于把这个问题给解决了。其实问题很简单,默认的alsa驱动在耳机插入的时候只禁用了左右声道的输出,ideapad上多出来了一个,只要找到低音炮的输出通道然后添加到自动禁用的函数中去就行了。
解
决方法:下载alsa全套驱动(理论上哪个版本都行,本人用的是1.0.19,为方便起见建议下载这个版本),包括alsa-driver(需要修改)、
alsa-lib和alsa-ultis,然后将他们全部解压出来。按照driver->lib->ultis的顺序安装。
1.安装alsa-driver,需要修改alsa-kernel/pci/hda/patch_conexant.c,我把修改之后的文件放到附件里去,需要的人直接拿回去覆盖就行了,下面贴出diff:
代码:
--- patch_conexant.c 2009-01-19 19:08:58.000000000 +0800
+++ /media/g/Linux相关程序/alsa/patch_conexant.c 2009-04-24 13:34:10.000000000 +0800
@@ -1639,6 +1639,15 @@
{ 2, NULL },
};
+static void cxt5051_update_subwoofer(struct hda_codec *codec)
+{
+ struct conexant_spec *spec = codec->spec;
+ unsigned int pinctl;
+ pinctl = (!spec->hp_present && spec->cur_eapd) ? PIN_OUT : 0;
+ snd_hda_codec_write(codec, 0x1b, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
+ pinctl);
+}
+
static void cxt5051_update_speaker(struct hda_codec *codec)
{
struct conexant_spec *spec = codec->spec;
@@ -1707,6 +1716,7 @@
AC_VERB_GET_PIN_SENSE, 0) &
AC_PINSENSE_PRESENCE;
cxt5051_update_speaker(codec);
+ cxt5051_update_subwoofer(codec);
}
/* unsolicited event for HP jack sensing */
然后
代码:
./configure --prefix=/usr --with-cards=hda-intel
make
sudo make install
就把driver安装了
2.lib和ultis的 安装:
这个简单,先安装lib,再安装ultis,命令都一样:
代码:
./configure --prefix=/usr
make
sudo make install
然后重启,搞定。