彻底解决 Ubuntu 10.04 对部分声卡不支持或耳机无声的问题

来源:互联网 发布:windows文件共享 编辑:程序博客网 时间:2024/05/27 20:41

 

我的一位朋友的笔记本在我的推荐下安装了 Ubuntu 系统。最初他安装的是 9.10 版本,WIFI 支持有些问题。随后他升级到了 10.04 版本,WIFI 正常了,可是耳机插入后却没有声音,只能使用自带扬声器。
为了解决这个问题,我今天从十一点开始研究,到晚上 19 点才成功搞定。

症状描述
Ubuntu 10.04 系统,Thinkpad X100e 笔记本,使用 Conexant 80925(貌似是这个数字,如果不是也不要紧,所有 Conexant 芯片解决方法相同)芯片的声卡。插入耳机后扬声器继续发生,耳机没有声音。

请注意:如果你只是为了解决这个问题,请跳过前面的尝试,直接阅读最终的解决方案。不过,阅读这些尝试,对于新手来说,也能增长不少见识。

尝试一:重新安装操作系统

由于这位朋友的笔记本电脑之前安装 9.10 版本时并没有问题,所以我首先想到的可能性,就是在升级到 10.04 时出现问题。所以我决定直接重新安装最新的 10.04 操作系统。
遇到的问题是,他的笔记本没有光驱,所以我需要制作一个安装 Ubuntu 10.04 的启动 U 盘。
首先下载获得 ubuntu-10.04.iso 镜像文件。
然后,插入一个无用的光盘(容量最好在 1GB 以上),在 Ubuntu 中选择「系统」->「系统管理」->「制作启动盘」,点「格式化」格式化该盘(请提前备份),然后选择我下载到的镜像,制作一个启动 U 盘。
制作完成后,使用该 U 盘引导系统(在X100e中的操作:开机时按 Enter,再按 F12,再选择 USB-HDD)。安装 Ubuntu 10.04 时,注意一定不要安装两个相同的系统,而要覆蓋原先的系统。
结果:重新安装结束,问题依旧。

尝试二:编辑 modprobe 配置

根据网上查到的资料,可以通过编辑 modprobe 配置文件解决问题,但请注意!在 Ubuntu 高版本中,该文件被加上了 .conf 后缀。(很多人反应不存在该文件,就是因为这个。)
要通过编辑该文件解决该问题,首先要明确好多事情。

1、什么是 ALSA?
Linux 通过 ALSA 管理声卡驱动。它为各种声卡提供了较为统一的接口。它是模块化管理的,snd- 开头的模块就是此类模块。

2、哪个模块管理你的音频设备?
通过下面的命令检查你的 snd 模块。

?[Copy to clipboard]View Code SHELL
1
lsmod | grep '^snd-'

在找到的结果中辨认出你的声卡音频设备所用的模块。在我这里,这个模块是 snd-hda-intel。

3、明确你的声卡型号。

?[Copy to clipboard]View Code SHELL
1
sudo head -1 /proc/asound/card0/codec#0

4、根据你的声卡型号,确定你声卡所相似的 Model。
[1]到 http://www.alsa-project.org/ 下载最新版本的 ALSA Driver 源代码。
[2]找到 /alsa-kernel/Documentation/HD-Audio-Models.txt 文件并用文本编辑器打开。
[3]在其中浏览寻找和你的声卡型号相似或相同的声卡型号,比如你的声卡是 ALC880,那么附近有这些行:

ALC880
======
3stack 3-jack in back and a headphone out
3stack-digout 3-jack in back, a HP out and a SPDIF out
5stack 5-jack in back, 2-jack in front
5stack-digout 5-jack in back, 2-jack in front, a SPDIF out
6stack 6-jack in back, 2-jack in front
6stack-digout 6-jack with a SPDIF out
w810 3-jack
z71v 3-jack (HP shared SPDIF)
asus 3-jack (ASUS Mobo)
asus-w1v ASUS W1V
asus-dig ASUS with SPDIF out
asus-dig2 ASUS with SPDIF out (using GPIO2)
uniwill 3-jack
fujitsu Fujitsu Laptops (Pi1536)
F1734 2-jack
lg LG laptop (m1 express dual)
lg-lw LG LW20/LW25 laptop
tcl TCL S700
clevo Clevo laptops (m520G, m665n)
medion Medion Rim 2150
test for testing/debugging purpose, almost all controls can be
adjusted.  Appearing only when compiled with
$CONFIG_SND_DEBUG=y
auto auto-config reading BIOS (default)

左边是其对应的 Model,右边是注释。记住,default 是默认采用的方案。

5、查找声卡参数
在你下载的源码中,找到 ALSA-Configuration.txt,从中用Chip型号中的关键字,一般是最后一段搜索,或lsmod得到的声卡 Model 名搜索,再用Chip型号定位。查出可用的参数。

6、编辑配置文件
加在 /etc/modprobe.d/modprobe.conf,/etc/modprobe.conf 或 /etc/modprobe.d/options 中,具体取决于发行版,在ubuntu 10.04 中是第一个,早期版本是第二个,别的发行版可能少有不同。
记住用 sudo 打开你的文本编辑器。在最后一行加上(请先不要急忙复制):

?[Copy to clipboard]View Code SHELL
1
options snd-hda-intel single_cmd=1 model=laptop-eapd

这里,snd-hda-intel 要改成你用的 snd 模块名称(在上文有查阅方法),single_cmd=1 要改成声卡参数(要一个参数一个参数组合测试),model后写上对应的 Model 之一。
不停的修改参数和 Model,如果你的运气足够好,应该就可以解决这个问题。
每次都要用sudo编辑该文件,然后重新启动生效,然后重新测试你的声卡。
如果你在重新启动的时候无法启动,请尝试按 Ctrl + Alt + F2,然后进入控制台,键入 sudo reboot 重新启动。
就这样一次次的尝试就有可能解决这个问题。可是,我没有能够解决该问题。
如果想不用每次都重新启动,可以试图杀死占用声卡的程序,并重新加载声卡模块。

尝试三:编译安装最新版本的 ALSA 驱动

网上有大量的文章说,以前的 ALSA 驱动不支持很多声卡型号和耳机,升级到最新版本的 ALSA 驱动就能解决问题。 Ubuntu 10.04 自带的版本是 1.0.22,而最新版本是 1.0.23,为此需要升级 ALSA 版本到最新。
首先要从 http://www.alsa-project.org/ 下载最新版本的 ALSA Driver。要下载的是三个包:alsa-driver,alsa-lib,alsa-utils。下载完成后,应该按照从前到后的顺序去安装。

1、编译安装 alsa-driver。
[1]解压缩 alsa-driver 到 ~/ad/。
[2]在终端输入:

?[Copy to clipboard]View Code SHELL
123456
sudo /etc/init.d/alsa-utils stopsudo /etc/init.d/alsasound stopcd ~/ad/./configure --with-cards=allmakesudo make install

[3]如果提示找不到 libasound 大于 1.0.16 以上版本,找不到 xmlto 命令之类错误,请先安装相关的依赖包(如下)后,再继续。

?[Copy to clipboard]View Code SHELL
123456
sudo apt-get install build-essentialsudo apt-get install linux-headers-`uname -r`sudo apt-get install libncursesw5-devsudo apt-get install gettextsudo apt-get install xmltosudo apt-get install kernel-package gcc make libc6 libc6-dev

下载这些包并编译安装成功大概需要两到三个小时的时间。

2、编译安装 alsa-lib。
[1]解压缩 alsa-lib 到 ~/al/。
[2]在终端输入:

?[Copy to clipboard]View Code SHELL
1234
cd ~/al/./configure --with-cards=allmakesudo make install

3、编译安装 alsa-utils。
[1]解压缩 alsa-utils 到 ~/au/。
[2]在终端输入:

?[Copy to clipboard]View Code SHELL
1234
cd ~/au/./configuremakesudo make install

在上述“sudo ./configure” 编译过程中,如像我一样遇到以下错误:
checking form.h presence… yes
checking for form.h… yes
checking for new_panel in -lpanelw… no
configure: error: panelw library not found
你需要先建立以下链接,再重新执行以上sudo ./configure编译步骤:

?[Copy to clipboard]View Code SHELL
1234
sudo ln -s libpanelw.so.5 /usr/lib/libpanelw.sosudo ln -s libformw.so.5 /usr/lib/libformw.sosudo ln -s libmenuw.so.5 /usr/lib/libmenuw.sosudo ln -s libncursesw.so.5 /lib/libncursesw.so

4、配置你的声卡。
[1]在终端输入下面的命令:

?[Copy to clipboard]View Code SHELL
1
sudo alsaconf

随后系统将会询问你一些问题,主要是让你选择声卡,后面的问题都回答OK就可以,最后选择 No_more_cards 退出。
[2]在终端输入下面的命令:

?[Copy to clipboard]View Code SHELL
123
cd ~/au/alsamixer/sudo chmod +x ./alsamixersudo ./alsamixer

其中~/au是你解压缩 alsa-utils 的路径。
随后系统会出现一些设置画面,在这里你可以选择声卡、自动修改配置等,也可能会给你调节音量、监视状态等功能。

5、重新启动计算机
重新启动计算机,你的声卡可能可以发声了。(根据调查,很多声卡都可以通过这个方法解决)

5、执行「尝试二」
如果这时候声卡仍然没声(比如我…),并且你还没执行尝试二,请执行「尝试二」。
(结论:不少人此时已经可以发声,但是我的除外。)

尝试四:使用不在列表中的 model

如果你的声卡型号不在 alsa-driver 源代码中 /alsa-kernel/Documentation/HD-Audio-Models.txt 文件的列表中,那么可以采取下面的办法:
[1]用相邻的型号测试。
如果你的型号不被支持,但是很相近的型号在这个列表中,请使用这个型号对应的所有 model 去尝试修改 modprobe 配置。修改方法同尝试二。
[2]用相似的 model 测试。
有些型号没有相似型号可用,但是有些 model 后的注释提醒你适合某些型号的笔记本或台式机,这时候要果断测试。
比如,model lenovo-x200 这个model的注释就是,适合于 Lenovo x200 笔记本。
[3]用其他 model 测试。
如果很不幸两者都没有,请使用随便一个 model 进行测试。
(我属于第三者,并且测试均无效)

尝试五:使用社区提供的支持该芯片的 alsa 驱动程序

在网上这种方法的资料相当少。通过 Google,我在国外的 ubuntu 社区找到了一个支持 Conexant 芯片集的 alsa 驱动包。地址:http://www.linuxant.com/alsa-driver/
在这里下载 deb 包并安装。虽然这个包只有 4MB,但安装却需要相当长的一段时间。
安装完成后重新启动计算机,问题终于解决。

 

 

 

 

本人初玩Ubuntu,看过一些书籍但知识面还是很浅,写的不对的地方请斧正之,谢谢
正文:
今年2月通过试用最终决定安装Ubuntu 11.10 在本本上,本本为F8VA 使用ATI HD3650,通过网上搜索指南安装完成自有驱动。本来使用一切正常,但有个问题困扰我。
问题原因:
喇叭播放声音正常,但插入耳机却没有声音,但把耳机稍微往外拔一点点又有声音,但没有左右声道的区别;我以为是耳机坏了,但转回XP系统一切正常。在纠结了半个月后还是自己找教程重装声卡驱动,
在此期间我搜索了很多安装指南,推荐一篇 http://ceeji.net/blog/fix-ubuntu-sound/zh-hans/
按照它讲的方法,到 http://www.alsa-project.org/ 下载最新版本的 ALSA Driver(version 1.0.25) 源代码,这就是我噩梦的开始。
因为不熟悉linux(其实连自己的声卡型号都没查明白,马大哈一个) 在选择声卡时乱选一通,导致系统重启后系统找不到设备,声音没啦
-----------------------------------------------------------------------------------------------华丽分割--------------------------------------------------------------
所谓病急乱投医,试了很多方法,也找了很多资料,期间基本上把自己声卡型号搞明白了;
山寨的不行,那就选正规军吧,去驱动之家找Realtek for linux dirver
http://drivers.mydrivers.com/drivers/42 ... C883-ALC8/
----------------------------
--> 在这里我要说一下,Realtek提供的ALSA dirver version 1.0.24 比ALSA官方提供版本要低,但我个人感觉1.0.24更适合ALC662
原因是:依照博文所说[2]找到 /alsa-kernel/Documentation/HD-Audio-Models.txt 文件并用文本编辑器打开。
[3]在其中浏览寻找和你的声卡型号相似或相同的声卡型号,1.0.25 里面是这样的
=============
ALC662/663/272
==============
  asus-mode1 ASUS
  asus-mode2 ASUS
  asus-mode3 ASUS
  asus-mode4 ASUS
  asus-mode5 ASUS
  asus-mode6 ASUS
  asus-mode7 ASUS
  asus-mode8 ASUS           
===================
这是啥子?反正觉得怪怪的
以下是Realtek for linux dirve 1.0.24 information
============
ALC662/663/272
==============
  3stack-dig 3-stack (2-channel) with SPDIF
  3stack-6ch 3-stack (6-channel)
  3stack-6ch-dig 3-stack (6-channel) with SPDIF
  6stack-dig 6-stack with SPDIF
  lenovo-101e Lenovo laptop
  eeepc-p701 ASUS Eeepc P701
  eeepc-ep20 ASUS Eeepc EP20
  ecs ECS/Foxconn mobo
  m51va ASUS M51VA
  g71v ASUS G71V
  h13 ASUS H13
  g50v ASUS G50V
  asus-mode1 ASUS
  asus-mode2 ASUS
  asus-mode3 ASUS
  asus-mode4 ASUS
  asus-mode5 ASUS
  asus-mode6 ASUS
  asus-mode7 ASUS
  asus-mode8 ASUS
  dell Dell with ALC272
  dell-zm1 Dell ZM1 with ALC272
  samsung-nc10 Samsung NC10 mini notebook
  auto auto-config reading BIOS (default)
================
这才和博文描述ALC880 sample 相似
找到问题原因后,乐颠乐颠的就开始编译了,configure没问题,make总是出错说找不到“modversions.h”
于是google 这个东西找到论坛里altman0habb的一个文章,启发了我。
从错误信息里我发现include路径下找不到linux 里面的什么什么.h的文件,我找到路径下发现modversions.h确实放在config里面,搞了半天原来是
路径不符造成编译出错,于是果断想到用ln -s直接将config文件夹弄到同目录下linux文件夹内
搞完这些,直接root 用户进使用1.0.24 驱动自带的./install 自动安装dirver,期间弹出的2个声音设备我都选安装。

 

有些新人,在安装ubuntu后,系统没有声音,多半是因为Ubuntu声音控制驱动:Alsa”没有正确识别出电脑的声卡。这个问题的解决方法,虽然有点复杂,但还有值得去尝试的,毕竟没有人想在Ubuntu的世界里,过没声音的日子~

解决方法:去Alsa的官方网站,分别下载 3 声卡驱动控制程序安装包,来安装。

. 声卡驱动控制程序: Alsa 的下载

1. 下载网站:http://www.alsa-project.org/main/index.php/Main_Page

这里,我们要下载的是,Alsa最新版本的3个安装包。从上面的网页里面,右边就能看到有“Download a package” —“current version”字样。

注意:Alsa驱动是在不断更新的,我们要做的,就是从网上下载最新版本的,上面的网页位置,就直接提供最新版本的直接下载。这次的教程,我以目前最新的:1.0.20,为例子来讲解。可能当你看到这篇教程的时候,版本已经更新了(比如1.0.21,22,23这样)。去照猫画虎的下载就行了。安装方法,过程,也是完全通用的。

我们需要下载如下3个安装包:
(1) alsa-driver-1.0.20
(2) alsa-lib-1.0.20
(3) alsa-utils-1.0.20

看图,在这个位置,不管以后版本怎么更新,都直接点击这里就行。




. 安装

下载好的 3个软件包,分别是:alsa-driver-1.0.20.tar.bz2alsa-lib-1.0.20.tar.bz2alsa-utils-1.0.20.tar.bz2

3个软件包,安装方法,安装过程,安装步骤,完全相同,都是linux系统下,最原始的:编译安装 3步走~”。因此,我这次的教程,以第一个软件包:alsa-driver-1.0.20.tar.bz2,来讲述具体的安装实践过程,后面的,自己照猫画虎即可。特别注意,这3个软件包,安装有先后顺序的,按照:driver —— lib —— utils进行。行了,我们开始吧

1. 先在终端里面,下载: xmlto,这个软件包并安装

方法: 应用程序”—"附件,打开终端,输入:sudo apt-get install xmlto。这样来下载安装。安装好就把终端窗口放一边,我们后面会用到。




2. 找到你下载好的:alsa-driver-1.0.20.tar.bz2,双击打开它,我们能看到里面有一个文件夹,用鼠标左键,托拽到桌面上。稍等一会儿,你就会看到桌面上有:alsa-driver-1.0.20,这个名字的文件夹了。




4. 回车后,继续输入: ./configure回车


3. 在终端里面,我们输入:cd 桌面/刚才那个文件夹的名字,应该就是:cd桌面/alsa-driver-1.0.20(你后面安装lib包的时候,自己想想这里是什么吧)。




说明:这个步骤,就是传说中的,编译、配置源代码,根据操作系统的不同,根据其所附带的软件包不同,因此,这个configure过程也不尽相同。因此,没人能够预知会出现什么问题。但是有个前提,就是,你按回车后,屏幕就开始滚动,直到完成,你要看看有没有出现: error(错误),这个词。如果没有,你就能继续下面的步骤了,如果中途出现了错误,那就必须先根据终端里面给出的错误提示信息,来上网搜索,解决这个错误。解决后,再回过头来,重新“./configure”

lsa 声卡驱动程序的”configure“,一般不会遇到什么错误,在buntu linux 9.04esktop“下测试可以通过。看图吧,最后出现:Hacking autoconf.h...,就算完成了。





5.完成后回到提示符,就可以继续输入: make,进行下一步了。回车,屏幕继续开始滚动,同样道理,要观察有没有”error(错误)出现





这个过程,会有一个警告(warnning):警告:格式字符串不是一个字面字符串而且没有待格式化的实参,这个没事,不用理会它。看图吧。make的过程比较长,大约20分钟左右,最后会出现图里面的:lsa modules were successfully compiled“,就代表成功了。



6. 完成后返回命令提示符,输入: sudo make install,回车即可开始安装驱动。 




因为我的系统已经安装过了,所以这部分没发截图了。前两步如果不出现什么明显的”error(错误),那这最后一部,80%以上都不会再有问题了。

. 后面的两个软件包的安装。

刚才说了,3个包,安装的步骤,过程,完全一样。我就简述下了。

1. 对于:alsa-lib-1.0.20

双击下载的软件包,把里面的文件夹解压缩到桌面上,然后终端里面:

cd 桌面/alsa-lib-1.0.20
./configure
make
(注意看上面2个步骤,有没有error,应该是没有,警告什么的,不需要管它)
sudo make install

最后完工。其实第一个driver,是3个包里面最最最重要的,它成功了,后面2个几乎就不会有什么问题的。

2. 对于 alsa-utils-1.0.20
双击下载的软件包,把里面的文件夹解压缩到桌面上,然后终端里面:

cd 桌面/alsa-utils-1.0.20
./configure
make
(注意看上面2个步骤,有没有error,应该是没有,警告什么的,不需要管它)
sudo make install

这样,3个软件包彻底安装完成。你可以重新启动电脑了。对于目前流行的大部分声卡,你就能听到动听的声音了。

.已知的存在的其他小问题

1. 重新启动电脑后,你可能听不到ubuntu系统启动的声音,不要着急,找个音乐来播放试试看,应该就有了。音乐有了就代表声卡工作正常了。后面,你还可以播放视频试试看
2. 关于视频,如果你播放视频的时候,在暂停的时候,声音却不暂停,那就更换一个视频播放器,我推荐大家用 smplayer,这个。
3. 如果你在播放音乐,视频的时候,声音出现的情况,可以尝试更换媒体播放器。因为这种问题,可能不是驱动程序的问题,而是媒体播放器设置不当,所造成的。

4. 在linux系统下,“源代码”软件包,这种安装方式,一般在它的文件夹里面,都附带2个文件:分别是 readme(是软件的介绍说明)和 install(安装方法的详细说明)。但是鉴于大部分软件都是外国人开发的,因此这2个文件,一般都是英文版本的。所以,如果你英语还行,建议在安装前,认真的看看这2个文件,对于你编译安装任何软件,都是大有帮助的。看图,就是这两个:



行了,这次的文章就这样了,这篇文章不仅仅是教”alsa声卡驱动程序的编译安装。其实这个编译安装的过程:解压缩文件夹,进入文件夹,./configure,make,sudo make install“,是对于linux世界所有源代码形式的安装包(比如:XXXXX.tar.gz这种格式)的一次教学。