在网上看了无数的声卡问题解决方法,也走了不少的弯路。现把声卡一般问题的解决过程贴出来,自己的一点点心得 ,希望大家多提提意见,给新手一些帮助。
本文参考了:
http://fedora.linuxsir.org/main/?q=node/66
viewtopic.php?p=615696#615696
多谢北南南北和wsc830719
阶段一
1. 检查“音量控制”
看看“音量控制”里是不是有什么静音或音量被设成了0(发现有些人试了n种解决方法,最后才发现是音量控制里被“静音”或音量为“0”,走了那么多弯路实在冤枉)。准备一个wav文件,终端用如下命令检测是否发声,如果有就不用再麻烦。
#cat test.wav > /dev/audio
2. 检查alsamixer
终端运行命令alsamixer(该命令找不到的话,参考步骤6),这时会出现一alsa控制界面如下:
检查各设备是否被“静音”或音量为“0”。“上”“下”方向键可实现音量大小的控制,字母“M”键实现是否静音的切换。
修改后再用“#cat test.wav > /dev/audio”命令看看是否有声音。
阶段二
3. 运行“lsmod | grep snd”,查看声卡驱动模块是否已加载(如果没有,参考步骤6)
4. 运行命令alsaconf(该命令不能运行的话,参考步骤6),该命令用来选择控制声卡芯片的驱动模块。我电脑上识别的声卡设备如下。如果没有声音换个选项试试。
PS:这一步一般不会有什么问题,写出来只是因为有人alsaconf命令一直用不起来,而卡在这里。
5. 修改alsa-base.conf(最有可能解决问题的一步)
modprobe通过读取alsa-base.conf中的配置,加载ALSA驱动模块。声卡对于不同的主板和控制芯片可能做不同的初始化动作,这时内核便alsa-base通过得到声卡所处的主板架构。很多机器声卡无声,就试因为初始化时的架构设置和本身的主板架构不符。打开/etc/modprobe.d/alsa-base.conf出现的配置信息如下:
我们要做的就是注释掉options snd-cmipci mpu_port=xxx fm_port=xxx这行(在此行前加#号),然后在下面添加 options snd_hda_intel model=xxxx ,xxxx就是你要选择的主板类型。目前主板的常用类型都包含在HD-Audio-Models.txt文件中。下载alsa-driver源码后,打开alsa-kernel/Documentation/HD-Audio-Models.txt文件,看到如下格式内容:
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
声卡型号可通过cat /proc/asound/card*/codec#*命令的第一行获得(如这里即是ALC880,下面的3stack和3stack-digout等即初始化时的具体model)。根据声卡型号,将options snd_hda_intel model=xxxx行的xxxx依次替换为HD-Audio-Models.txt所提供的那些model,并重启,应该可以解决绝大多数问题。
6. 如果还没有声音,重新编译,安装alsa。
ALSA架构通常包括alsa-drvier,alsa-utils,alsa-lib三个软件包。你可以到alsa官网上http://www.alsa-project.org/下载。也可以从声卡芯片厂商网站得到。
安装驱动时进入alsa-driver目录,依次使用如下命令:
#./configure --with-cards=hda-intel
#make ; make install
#snddevices
alsa-utils中包含了alsa常用的配置工具,包括了alsaconf和alsamixer的源代码。按照指定方法编译即可生成。
PS:以前出现过alsaconf命令找不到的现象,发现编译时,进入alsaconf后出现“什么也不用做”的提示。进alsaconf文件夹后,用“chmod +x *”变为可执行,编译生成alsaconf拷到/usr/sbin下即可。
7. 还不行?编译内核试试
参考文档:viewtopic.php?t=134404
关于编译内核的是否必要,可参考北南南北:
“只要内核中的soundcore 是以模块的形式编译的,并且通过modinfo soundcore查看版本信息输出,我们就没有太大必要重编内核;因为系统几乎对所有的声卡及设备都有编译进去;所以我们先不要重编内核;除非做了升级alsa-driver后,还是不能解决问题,这时才能重编译核;alsa-driver 是和内核配置文件相关联的;也就是说,alsa-driver 是根据内核的配置文件来进行判断,对哪些声卡应该支持等;如果内核的配置文件没有配置对您的声卡进行支持;这时才需要我们来配置内核;另外内核中对声卡的支持的驱动也是来自于 alsa-driver”
8. 再不行?使用命令“cat /proc/asound/card*/codec#*”将生成的信息给高手参考
【原创】:声卡故障排除笔记
-
- 帖子: 5
- 注册时间: 2009-06-18 16:34
【原创】:声卡故障排除笔记
上次由 darian 在 2009-07-27 15:14,总共编辑 3 次。
- leeaman
- 帖子: 30702
- 注册时间: 2007-02-02 18:14
- 系统: debian sid
- hcym
- 帖子: 15634
- 注册时间: 2007-05-06 2:46
Re: 声卡故障排除攻略
编辑过吧
祖传秘籍,可能又舍不得
祖传秘籍,可能又舍不得
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
-
- 帖子: 5
- 注册时间: 2009-06-18 16:34
Re: 【原创】:声卡故障排除笔记
大家多提意见啦!我改
-
- 帖子: 2
- 注册时间: 2009-05-15 13:19
- aric286
- 帖子: 960
- 注册时间: 2007-12-03 9:54
- 联系:
Re: 【原创】:声卡故障排除笔记
做个记号,等用的着的时候看
- wangdu2002
- 帖子: 13284
- 注册时间: 2008-12-13 19:39
- 来自: 物华天宝人杰地灵
-
- 帖子: 849
- 注册时间: 2006-09-07 22:51
- 联系: