SoundcardDebug

来自Ubuntu中文
Oneleaf留言 | 贡献2007年5月30日 (三) 18:15的版本 (新页面: == 声卡排障流程 == 本文作者:kangkang 授权许可:[http://www.creativecommons.cn/licenses/by-nc-sa/1.0/ 创作共用协议] 编辑人员:FireHare 校对人员: 适...)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航跳到搜索
可打印版本不再受到支持且可能有渲染错误。请更新您的浏览器书签并改用浏览器默认打印功能。

声卡排障流程

本文作者: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 查看一下声卡相关的设备是什么设备打开的,杀掉即可。