SoundcardDebug
来自Ubuntu中文
声卡排障流程
本文作者:kangkang
授权许可:创作共用协议
编辑人员:FireHare
校对人员:
适用版本:
文章状态:
参考文献:无
本文适用于声卡模块可加载但不能正常工作的情况
重启让udev自动检测或运行 alsaconf 检测声卡
使用下列命令
lsmod |grep snd --- snd_hda_intel 20116 5 ---
来看声卡模块是否被加载,如果没有进行下一步,如果还没有则搜索如何加载或到BBS/IRC/论坛等处去询问。
安装Alsa驱动
声卡不工作也有可能是由于内核自带的Alsa驱动的版本可能不够高所引起,可尝试安装Alsa驱动。
获得声卡芯片型号
安装alsa-utils, 运行alsamixer,查看芯片型号,即Chip后面的内容。
如我的声卡:
Chip: Analog Devices AD1986A
查找声卡参数
从 http://www.alsa-project.org/ 下载alsa-driver,找到 ALSA-Configuration.txt,从中用Chip型号中的关键字,一般是最后一段搜索,或lsmod得到的声卡模块名搜索,再用Chip型号定位。查出可用的参数。
尝试里面的参数
加在 /etc/modprobe.conf 或 /etc/modprobe.d/options 中,具体取决于发行版,一般说来前一个总是可用的,如在gentoo中,在ubuntu里后面的是标准的位置,别的发行版可能略有不同。
如我的声卡,在ALSA-Configuration.txt中相关的内容:
model - force the model name position_fix - Fix DMA pointer (0 == auto, 1 == none, 2 == POSBUF, 3 == FIFO size) single_cmd - Use single immediate commands to communicate with codecs (for debugging only) enable_msi - Enable Message Signaled Interrupt (MSI) (default = off) AD1986A 6stack 6-jack, separate surrounds (default) 3stack 3-stack, shared surrounds laptop 2-channel only (FSC V2060, Samsung M50) laptop-eapd 2-channel with EAPD (Samsung R65, ASUS A6J)
经过测试知道,以下的参数是可以工作的。
options snd-hda-intel single_cmd=1 model=laptop-eapd
测试时可杀掉占用声卡的程序,重新加载声卡模块。
有些系统的/etc/init.d/ 或 /etc/rc.d 下有alsas相关的init脚本,可直接使用,如果没有可用 lsof /dev 查看一下声卡相关的设备是什么设备打开的,杀掉即可。