|
我的笔记本声卡是Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller
以前一直驱动不成功,alsamixer显示
code
alsamixer: function snd_ctl_open failed for default: No such device
或者安装了不同的alsa版本,只有单声道输出,播放时无法改变音量等
现在写出我的办法供大家参考:
1.配制内核
#cd /usr/src/linux
#make menuconfig 或者 make xconfig
2.声卡的选项,记得去掉OSS选项:
code
Device Driver -> Sound -> [M] Sound card support
(记得打开intel声卡,PRM通道)
Advance linux sound architecture ->
[M] Advance linux sound architecture
[M] Sequencer support
[M] RTC Timer support
[YES] Use RTC as default sequencer timer
[M] Verbose procfs contents
PCI Devices -> [M] Intel HD Audio
(关闭OSS)
Open sound system [N]
3.编译内核
4.下载两个文件到系统并重启
#cd /lib/modules/2.6.20-15-?/kernel/sound/pci/hda/
#rm *
#wget http://adhd.irule.net/~crimsun/snd-hda-codec.ko
#wget http://adhd.irule.net/~crimsun/snd-hda-intel.ko
#Reboot
5.修改/etc/modprobe.conf参照网上的文件
#mousepad /etc/modprobe.conf
code:
------------------------此线不是代码
alias snd-card-0 snd_hda_intel
options snd-card-0 index=0
options snd_hda_intel index=0
remove snd_hda_intel { /usr/sbin/alsactl store 0 >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd_hda_intel
------------------------此线不是代码
6.修改两个文件,没有就建立两个
#mousepad /etc/modprobe.d/snd-hda-intel.modprobe
code:
------------------------此线不是代码
options snd-hda-intel position_fix=1 model=3stack
------------------------此线不是代码
#mousepad /etc/modprobe.d/alsa-base
code:
------------------------此线不是代码
options snd-hda-intel position_fix=1 model=3stack
------------------------此线不是代码
7.安装alsa-lib-1.0.15-i486-1.tgz
安装alsa-oss-1.0.15-i486-1.tgz
安装alsa-driver-1.0.15-i486-1.tgz
安装alsa-utils-1.0.15-i486-1.tgz
#installpkg *.tgz
#reboot
8.驱动成功,声卡音质很好,改变播放时无法改变音量等情况
只有单声道输出的话,记得把alsamixer中双声道勾选上
如果还出现
alsamixer: function snd_ctl_open failed for default: No such device
#killall udevd
重新启动之后再看看
关于model=3stack的设置,您可以参考下面的文档:
Module snd-hda-intel
------------------------
Module for Intel HD Audio (ICH6, ICH6M, ICH7), ATI SB450, VIA VT8251/VT8237A
model - force the model name
position_fix - Fix DMA pointer (0 = FIFO size, 1 = none, 2 = POSBUF)
Module supports up to 8 cards.
Each codec may have a model table for different configurations. If your machine isn't listed there, the default (usually minimal) configuration is set up. You can pass "model=<name>" option to specify a certain model in such a case. There are different models depending on the codec chip.
Model Name Description
--------------------------------
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
uniwill 3-jack
F1734 2-jack
CMI9880
minimal 3-jack in back
min_fp 3-jack in back, 2-jack in front
full 6-jack in back, 2-jack in front
full_dig 6-jack in back, 2-jack in front, SPDIF I/O
allout 5-jack in back, 2-jack in front, SPDIF out
auto auto-config reading BIOS (default)
Note 2: If you get click noises on output, try the module option position_fix=1 or 2. position_fix=1 will use the SD_LPIB register value without FIFO size correction as the current DMA pointer. position_fix=2 will make the driver to use the position buffer instead of reading SD_LPIB register. (Usually SD_LPLIB register is more accurate than the position buffer.)
------------------------------------------------------------------------------------
I would start with by forcing the model with adding the following line to your alsa configuration file;
options snd_hda_intel model=z71v
Because the A8Js has a headphone shared SPDIF out, in front. If that doesn't work, you can try other model names. Next you can tinker around with fixing the DMA pointer by adding the following line to your alsa configuration file;
position_fix=1
I got this same codec finally working on my Tecra S3 by adding a position_fix=2 to my alsa configuration file. It's a Gentoo distro, and the alsa configuration file is located at /etc/modules.d/alsa. Also after editing it I need to do a /sbin/modules-update to apply the configuration. Then restarting the alsasound service is all I needed for testing.
Your configuration file for alsa might be different, depending on the distro, but the process is essentially the same. If you get it working, let us all know the settings. Good Luck.. |
|