Linux下安装ALSA驱动
有不足之处,请高手多多指点。我的电脑配置:主板:LEGEND QDI K7E-A
声卡:VIA VT82C686B(不是686A,我困惑的地方)芯片集成 AC’97
系统:Redhat 8.0
起初,我用Redhat自带的声卡检测工具(redhat-config-soundcard)检测,可以测到是型号为VT82C686 AC97 Audio Controller ,模块为via82cxxx-audio ,但就是没有声音,没有办法,后来我在网上搜索到关于ALSA可支持很多包括VIA686在内的芯片声卡驱动。于是到其官方网站下载最新的ALSA声卡驱动,它包括3个压缩包,分别是:
alsa-dirver-0.9.2.tar.bz2
alsa-lib-0.9.2.tar.bz2
alsa-util-0.9.2.tar.bz2
另外再下载一个aslaconf-0.4.3b.tar.gz,这个干什么用到后面我再说。
我把它们放在Window下的D盘,转到Linux下,进入一个终端,在/mnt/下新建一个目录D:
mkdir /mnt/D
挂载Windows下的D盘到/mnt/D下:
mount –t vfat /dev/hda7 /mnt/D
拷贝ALSA驱动到/tmp目录下:
cp/mnt/D/ALSA-* /tmp/
转到/tmp/,执行:
bunzip2 alsa-driver.0.9.2.tar.bz2
tar xvf ALSA-driver-0.9.2.tar
然后转到alsa-driver-0.9.2目录下,执行:
./configure(后我在www.alsa-project.org下看到关于VIA82XX的说明,是用./configure –-with-cards=via82xx -–with-sequence=yes来代替./configure其具体请参照ALSA-driver-xxx下的INSTALL文件或输入命令./configure –-help查看)
make install
如果不出什么差错的话,你将会看到下面一段英文:
WARNING!!! The mixer channels for the ALSA driver are muted by default!!!
**************************************************************************
You would use some ALSA or OSS mixer to set the appropriate volume.
大概的意思是现在所有的音量处于mute状态,即无声状态,需要用ALSA 或OSS工具来打开音量.我们可用amixer 、gnome-volume-control或用alsamixer 等工具.
然后再执行:
./snddevices
这个命令将在/dev/下创建相关的声卡设备。这个操作是用root创建的,为了使所有的用户都可以用,请输入命令:
chmoda+rw/dev/dsp/dev/mixer/dev/sequencer/dev/midi
现在到了最为关键的一步了,要修改(/etc/modules.conf)文件.但是由于手工修改容易出错,不适合像我这样的菜鸟,不怕,我用alsaconf这个工具来修改,这就是我们刚才下载的alsaconf-0.4.3b.tar.gz。将它拷贝到/tmp目录下,解压:
tar xvfz alsaconf-0.4.3b.tar.gz
转到alsaconf-0.4.3b目录下,执行
./alsaconf
按照里面的步骤配置,我选择VIA686A芯片的声卡,接着一路回答Yes,然后又回到第一个画面,因我没有第二块声卡,就选择第一项(No_more_cards),最后会问是否修改/etc/modules.conf,当然是YES啰。我的modules.conf文件是这样的:
# --- BEGIN: Generated by ALSACONF, do not edit. ---
# --- ALSACONF verion 0.4.3b ---
alias char-major-116 snd
alias snd-card-0 snd-via82xx
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0666 snd_device_gid=0 snd_device_uid=0
options snd-card-x snd_index=0 snd_id=CARD_0 snd_mpu_port=0x300 snd_joystick=0x300
# --- END: Generated by ALSACONF, do not edit. ---
这是用ALSACONF工具编辑的,注意第四行的snd-via82xx,原来是snd-card-x(我也不知道是什么原因),于是在启动时就没有加载声卡,后我用
modprobe snd-card-via82xx
说不能加载,再试
modprobe snd-via82xx
成功了!修改第四行为
alias snd-card-0 snd-via82xx
重启,用root权限进去,输入命令:
lsmod |grep snd
可在我电脑下看到所有相关的声卡模块:
snd-seq-midi 5248 0(unused)
snd-seq-midi-event 5672 0
snd-seq 46928 0
snd-via82xx 15692 0
snd-pcm 82336 0
snd-timer 19592 0
snd-page-alloc 8376 0
snd-ac97-codec 44320 0
snd-mpu401-uart 5136 0
snd-rawmidi 18592 0
snd-seq-device 6284 0
snd 43652 0
soundcore 6500 2
lsmod可以看到所有的模块。在Linux下硬件应该是用模块来驱动的,模块可以被集成在Kernel里;也可以单独放置,到使用时再加载。
到了这里,基本上差不多了,不过,不要着急,接着把
alsa-lib-0.9.2和alsa-util-0.9.2也一起装上去,注意先安装alsa-lib,后再装alsa-util。和上面一样,输入命令:
cd alsa-lib-0.9.2和cd alsa-util-0.9.2
./configure
make install
输入命令:
amxier(amixer和下面的alsamixer都是alsa-util-0.9.2附带的)
出现
Simple mixer control 'Master',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 63
Front Left: Playback 63
Front Right: Playback 63
Simple mixer control 'Master Mono',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined
Playback channels: Mono
Limits: Playback 0 - 31
Mono: Playback 31
Simple mixer control 'Headphone',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Front Left: Playback 0
Front Right: Playback 0
…………………
………………….
…………………
后面还有一大串,本可以用amixer命令手工配置音量,但这么长的一大串,我自己都受不,不要紧,有另一个办法,输入命令:
alsamixer
出现一个图形界面,用上下左右键把Master和PCM音量打开,Escape键退出。现在试一下,Yeah!我的声卡可以发声了!等等,还没保存呢,如果不保存,下次重启后,又会恢复到无声状态,执行:
alsactl store 来保存。("alsactl"也是alsa-util的附带软件)
如果你要恢复,请输入:
alsactl restore 来恢复。
好了,就到此结束吧!有不足之处,请各位指点指点。如果你有何问题,我将尽我所能帮你。
作者:Gisland
页:
[1]