ideapad y430/V450的耳机插入后低音炮仍然响解决方法(增加10.04替换文件)

笔记本/便携移动设备,手机平板等软硬件
zsl1005
帖子: 75
注册时间: 2007-10-23 13:17

ideapad y430/V450的耳机插入后低音炮仍然响解决方法(增加10.04替换文件)

#1

帖子 zsl1005 » 2009-04-24 20:27

这几天和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
然后重启,搞定。



应大家要求,再次给出10.04中的解决办法:
1.首先运行 apt-get source alsa-base
2.从终端进入alsa-driver-1.0.22.1+dfsg目录,下载下面的patch_conexant.c文件(76KB的那个),替换alsa-driver-1.0.22.1+dfsg/sound/pci/hda中的同名文件
3.在终端中依次执行

代码: 全选

./configure --with-cards=hda-intel
make
sudo make install
patch_conexant.c
10.04替换文件
(76.64 KiB) 已下载 287 次
只要这三步就可以搞定收工

另外提示,每次linux内核大版本升级需要重新编译内核模块,就是按照这三步重新安装

[/b][/size]
附件
patch_conexant.c
10.04替换文件
(98 Bytes) 已下载 196 次
patch_conexant.c.tar.bz2
修改之后的文件,解压覆盖就可以了
(9.52 KiB) 已下载 500 次
上次由 zsl1005 在 2010-06-13 22:28,总共编辑 5 次。
chin242
帖子: 75
注册时间: 2008-02-23 13:48

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#2

帖子 chin242 » 2009-04-26 19:06

顶。我也是用Y430,alsa主页下载不了。能否麻烦楼主发这3个文件到我的邮箱?谢谢(120075000@qq.com)
头像
badboych22
帖子: 200
注册时间: 2007-09-11 15:15

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#4

帖子 badboych22 » 2009-04-26 21:58

我编译的时候出错了,请高手看一下,谢谢了~
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for /usr/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking how to recognise dependent libraries... pass_all
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for g77... no
checking for f77... no
checking for xlf... no
checking for frt... no
checking for pgf77... no
checking for cf77... no
checking for fort77... no
checking for fl32... no
checking for af77... no
checking for f90... no
checking for xlf90... no
checking for pgf90... no
checking for pghpf... no
checking for epcf90... no
checking for gfortran... no
checking for g95... no
checking for f95... no
checking for fort... no
checking for xlf95... no
checking for ifort... no
checking for ifc... no
checking for efc... no
checking for pgf95... no
checking for lf95... no
checking for ftn... no
checking whether we are using the GNU Fortran 77 compiler... no
checking whether accepts -g... no
checking the maximum length of command line arguments... 32768
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking for shl_load... no
checking for shl_load in -ldld... no
checking for dlopen... no
checking for dlopen in -ldl... yes
checking whether a program can dlopen itself... yes
checking whether a statically linked program can dlopen itself... no
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
configure: creating libtool
appending configuration tag "CXX" to libtool
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC
checking if g++ PIC flag -fPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
appending configuration tag "F77" to libtool
./configure: line 19925: CC_NOUNDEFINED: command not found
checking for ANSI C header files... (cached) yes
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking whether time.h and sys/time.h may both be included... yes
checking whether gcc needs -traditional... no
checking for hsearch_r... yes
checking for library version... major 1 minor 0 subminor 19 extrastr extraver 1000000
checking for versioned symbols... yes
checking for symbolic-functions... no
checking for custom symbol prefixes...
checking for debug... yes
checking for debug assert... no
checking for tmpdir... /tmp
checking for softfloat... no
checking for libdl... checking for dlsym in -ldl... yes
checking for pthread... checking for pthread_join in -lpthread... yes
checking for librt... checking for clock_gettime in -lrt... yes
checking for architecture... x86
checking wordexp.h usability... yes
checking wordexp.h presence... yes
checking for wordexp.h... yes
checking for resmgr support... no
checking for aload* support... yes
checking for ALSA device file directory... /dev/snd/
checking for aload* device file directory... /dev/
./configure: line 21630: python-config: command not found
./configure: line 21638: python-config: command not found
Unable to determine python libraries! Probably python-config is not
available on this system. Please, use --with-pythonlibs and
--with-pythonincludes options. Python components are disabled in this build.
configure: creating ./config.status
config.status: creating Makefile
config.status: creating doc/Makefile
config.status: creating doc/pictures/Makefile
config.status: creating doc/doxygen.cfg
config.status: creating include/Makefile
config.status: creating include/sound/Makefile
config.status: creating src/Versions
config.status: creating src/Makefile
config.status: creating src/control/Makefile
config.status: creating src/mixer/Makefile
config.status: creating src/pcm/Makefile
config.status: creating src/pcm/scopes/Makefile
config.status: creating src/rawmidi/Makefile
config.status: creating src/timer/Makefile
config.status: creating src/hwdep/Makefile
config.status: creating src/seq/Makefile
config.status: creating src/compat/Makefile
config.status: creating src/alisp/Makefile
config.status: creating src/conf/Makefile
config.status: creating src/conf/cards/Makefile
config.status: creating src/conf/pcm/Makefile
config.status: creating modules/Makefile
config.status: creating modules/mixer/Makefile
config.status: creating modules/mixer/simple/Makefile
config.status: creating alsalisp/Makefile
config.status: creating aserver/Makefile
config.status: creating test/Makefile
config.status: creating utils/Makefile
config.status: creating utils/alsa-lib.spec
config.status: creating utils/alsa.pc
config.status: creating include/config.h
config.status: include/config.h is unchanged
config.status: executing depfiles commands
Creating asoundlib.h...
zsl1005
帖子: 75
注册时间: 2007-10-23 13:17

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#5

帖子 zsl1005 » 2009-04-26 23:31

你这根本就看不出来哪儿编译错误了,还是configure阶段么,你把依赖装全 sudo apt-get build-dep alsa-base
badboych22 写了:我编译的时候出错了,请高手看一下,谢谢了~
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for /usr/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking how to recognise dependent libraries... pass_all
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for g77... no
checking for f77... no
checking for xlf... no
checking for frt... no
checking for pgf77... no
checking for cf77... no
checking for fort77... no
checking for fl32... no
checking for af77... no
checking for f90... no
checking for xlf90... no
checking for pgf90... no
checking for pghpf... no
checking for epcf90... no
checking for gfortran... no
checking for g95... no
checking for f95... no
checking for fort... no
checking for xlf95... no
checking for ifort... no
checking for ifc... no
checking for efc... no
checking for pgf95... no
checking for lf95... no
checking for ftn... no
checking whether we are using the GNU Fortran 77 compiler... no
checking whether accepts -g... no
checking the maximum length of command line arguments... 32768
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking for shl_load... no
checking for shl_load in -ldld... no
checking for dlopen... no
checking for dlopen in -ldl... yes
checking whether a program can dlopen itself... yes
checking whether a statically linked program can dlopen itself... no
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
configure: creating libtool
appending configuration tag "CXX" to libtool
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC
checking if g++ PIC flag -fPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
appending configuration tag "F77" to libtool
./configure: line 19925: CC_NOUNDEFINED: command not found
checking for ANSI C header files... (cached) yes
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking whether time.h and sys/time.h may both be included... yes
checking whether gcc needs -traditional... no
checking for hsearch_r... yes
checking for library version... major 1 minor 0 subminor 19 extrastr extraver 1000000
checking for versioned symbols... yes
checking for symbolic-functions... no
checking for custom symbol prefixes...
checking for debug... yes
checking for debug assert... no
checking for tmpdir... /tmp
checking for softfloat... no
checking for libdl... checking for dlsym in -ldl... yes
checking for pthread... checking for pthread_join in -lpthread... yes
checking for librt... checking for clock_gettime in -lrt... yes
checking for architecture... x86
checking wordexp.h usability... yes
checking wordexp.h presence... yes
checking for wordexp.h... yes
checking for resmgr support... no
checking for aload* support... yes
checking for ALSA device file directory... /dev/snd/
checking for aload* device file directory... /dev/
./configure: line 21630: python-config: command not found
./configure: line 21638: python-config: command not found
Unable to determine python libraries! Probably python-config is not
available on this system. Please, use --with-pythonlibs and
--with-pythonincludes options. Python components are disabled in this build.
configure: creating ./config.status
config.status: creating Makefile
config.status: creating doc/Makefile
config.status: creating doc/pictures/Makefile
config.status: creating doc/doxygen.cfg
config.status: creating include/Makefile
config.status: creating include/sound/Makefile
config.status: creating src/Versions
config.status: creating src/Makefile
config.status: creating src/control/Makefile
config.status: creating src/mixer/Makefile
config.status: creating src/pcm/Makefile
config.status: creating src/pcm/scopes/Makefile
config.status: creating src/rawmidi/Makefile
config.status: creating src/timer/Makefile
config.status: creating src/hwdep/Makefile
config.status: creating src/seq/Makefile
config.status: creating src/compat/Makefile
config.status: creating src/alisp/Makefile
config.status: creating src/conf/Makefile
config.status: creating src/conf/cards/Makefile
config.status: creating src/conf/pcm/Makefile
config.status: creating modules/Makefile
config.status: creating modules/mixer/Makefile
config.status: creating modules/mixer/simple/Makefile
config.status: creating alsalisp/Makefile
config.status: creating aserver/Makefile
config.status: creating test/Makefile
config.status: creating utils/Makefile
config.status: creating utils/alsa-lib.spec
config.status: creating utils/alsa.pc
config.status: creating include/config.h
config.status: include/config.h is unchanged
config.status: executing depfiles commands
Creating asoundlib.h...
头像
badboych22
帖子: 200
注册时间: 2007-09-11 15:15

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#6

帖子 badboych22 » 2009-04-27 0:02

谢谢,安装成功了,但那声音还是那很尖的~~不知道怎么回事了~~ :em06
zsl1005
帖子: 75
注册时间: 2007-10-23 13:17

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#7

帖子 zsl1005 » 2009-04-27 0:03

chin242 写了:顶。我也是用Y430,alsa主页下载不了。能否麻烦楼主发这3个文件到我的邮箱?谢谢(120075000@qq.com)
已经发过去了
zsl1005
帖子: 75
注册时间: 2007-10-23 13:17

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#8

帖子 zsl1005 » 2009-04-27 6:38

badboych22 写了:谢谢,安装成功了,但那声音还是那很尖的~~不知道怎么回事了~~ :em06
不知道是什么意思,我这边没有这个问题啊,一切正常中。
chin242
帖子: 75
注册时间: 2008-02-23 13:48

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#9

帖子 chin242 » 2009-04-27 13:21

zsl1005 写了:
chin242 写了:顶。我也是用Y430,alsa主页下载不了。能否麻烦楼主发这3个文件到我的邮箱?谢谢(120075000@qq.com)
已经发过去了
谢谢,安装成功~感谢LZ
头像
badboych22
帖子: 200
注册时间: 2007-09-11 15:15

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#10

帖子 badboych22 » 2009-04-27 14:34

想问一下,你们就是按楼主说的方面安的吗?在编译第二个和第三个有没有提示编译成功的?
我把这三个按顺序安完后,alsactl -v 查看的是最新版,但音质还是很差,低音也不工作。
请问楼主安完后还要什么设置吗?我的是Y530-PEI
谢谢了 :em01
zsl1005
帖子: 75
注册时间: 2007-10-23 13:17

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#11

帖子 zsl1005 » 2009-04-27 16:15

badboych22 写了:想问一下,你们就是按楼主说的方面安的吗?在编译第二个和第三个有没有提示编译成功的?
我把这三个按顺序安完后,alsactl -v 查看的是最新版,但音质还是很差,低音也不工作。
请问楼主安完后还要什么设置吗?我的是Y530-PEI
谢谢了 :em01
我倒,这是430用的,不适530,不能通用的。
头像
badboych22
帖子: 200
注册时间: 2007-09-11 15:15

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#12

帖子 badboych22 » 2009-04-27 16:33

你那个文件我没有用,就只用alsa最新版的安了,低音也是不好用,
而且普通的的喇叭也是很尖的,想问这有什么方法能解决的吗?谢谢大家! :em06
zsl1005
帖子: 75
注册时间: 2007-10-23 13:17

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#13

帖子 zsl1005 » 2009-04-27 18:34

badboych22 写了:你那个文件我没有用,就只用alsa最新版的安了,低音也是不好用,
而且普通的的喇叭也是很尖的,想问这有什么方法能解决的吗?谢谢大家! :em06
这个就不清楚了,好像用的530也是conexant,这个东西用的不是很多。alsa装好之后应该是不用设置的。
头像
wangks18
帖子: 1151
注册时间: 2008-10-27 22:28
来自: 暮色酒馆

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#14

帖子 wangks18 » 2009-04-30 23:23

谢谢,先标记下 :em11
优猫饼
nightmareflyer
帖子: 2
注册时间: 2009-05-25 10:10

Re: ideapad y430的耳机插入后低音炮仍然响的问题解决啦

#15

帖子 nightmareflyer » 2009-05-26 13:16

lz真强
崇拜一个
问题一解决 谢谢
回复