LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1079|回复: 4

声卡装ALSA驱动的问题。

[复制链接]
发表于 2005-5-3 20:37:57 | 显示全部楼层 |阅读模式
今天刚刚在红帽子9上安装了ALSA的驱动。这是我第一次尝试安装ALSA,我是这样安装的。
首先用声卡检测软件检查自己的声卡驱动。发现声卡型号是82801BA/BAM AC'97 Audio,使用的驱动模块是i810_audio。我想自己的声卡使用intel 810驱动模块是可以兼容的。事实上,我的声卡芯片应该是SigmaTel的芯片。

首先下载了1.0.8版的驱动,按照网上搜索到的一篇文章:
http://tech.ccidnet.com/pub/article/c738_a230003_p1.html
来进行安装,先解包,编译安装(该文的作者声卡正好是intel 810的),在configure那个driver包的时候,参数我选择的是--with-cards=all用以安装所有ALSA支持的驱动,这是为了保险。

把Driver,Utility,Lib和兼容OSS的包都安装完毕后,我按照该文的指导,改写了/etc/modules.conf,把
alias sound-slot-0 i810_audio
post-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1 || :
pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || :
这三行给注释掉了,然后一字不漏地添加了ALSA的配置代码。

然后重启,重新进入系统后,打开混音器,的确都默认设置为无声了,我把声音都打开,然后退出混音器,接着选择检测声卡程序,发现声卡型号还是82801BA/BAM AC'97 Audio,驱动模块还是i810_audio,结果播放测试音的时候程序出现错误提示:
The i810_audio driver could not be loaded.  This soundcard may not be compatible with Red Hat Linux.
当然,我也听不到测试音了。
但是打开KDE的控制中心,在声音系统栏内,点击"测试声音"按钮却可以听到声音。
播放mplayer也没有问题。请问我到底安装上了驱动没有?那个错误如何解决呢?

刚刚为了写这个帖子,我用vi查看了一下/etc/modules.conf文件,发现原来我注释掉的810驱动配置又自动还原了,和新的ALSA的配置文本共存在同一个模块配置文件中。



==============================================================================


Fedora Core3上安装Alsa声卡驱动 (2)
作者:冷风 发文时间:2005.03.30
环境:

OS Fedora Core 3

kernel 2.6.10-1.741_FC3

glibc 2.3.4-2

gcc 3.4.2

kde 3.3.1

gnome 2.8.0

Xorg 6.8.1

以下安装适应于Fedora Core3,其他版本的Linux可以参考,但是完全照搬不一定能成功(比如Debian),你需要根据自己的系统来修改配置文件.

安装步骤:

1.下载需要的软件:

首先从http://www.alsa-project.org/上下载以下这些软件

ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.8.tar.bz2 (必须)

ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.8.tar.bz2 (必须)

ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.8.tar.bz2 (必须)

ftp://ftp.alsa-project.org/pub/tools/alsa-tools-1.0.8.tar.bz2 (可选)

ftp://ftp.alsa-project.org/pub/f ... mware-1.0.8.tar.bz2 (可选)

ftp://ftp.alsa-project.org/pub/o ... .0.8.tar.bz2(必须)

2.编译alsa驱动及相关软件

a. alsa-driver

# tar jxvf alsa-driver-1.0.8.tar.bz2

# cd alsa-driver-1.0.8

通常需要首先知道自己声卡的芯片的具体型号,然后再通过指定编译参数来编译需要的驱动,该参数为--with-cards=, 可以用--with-cards=all来编译alsa所支持的所有驱动,但这样会占用更多的磁盘空间,因此不推荐.芯片型号可以通过阅读说明书或者在 linux下使用lspci –v等渠道来查找,知道具体的芯片型号之后可以到alsa的网站上寻找该声卡的驱动的编译和配置文档.例如我的声卡是intel810的声卡,那么在 http://www.alsa-project.org/alsa-doc/ 页面上的Choose manufacturer for more details 下拉菜单中选择intel然后点GO,接下来会得到一个表格,选择表格中Driver & Docs这一列里有详细声卡驱动安装的连接,点Detail旁边的intel8x0即可得到说明页面.接下来的步骤都是参考该文档进行的,在配置中需要根据自己的实际情况选择适合的声卡配置说明文档.

# ./configure --with-cards=intel8x0 --with-sequencer=yes;make;make install

# ./snddevices #创建设备文件



如果不出意外,上面的工作做完之后,驱动程序就安装好了,提醒一下,默认情况下alsa的驱动都是静音的,我们必须用混音器调节音量才能出声音.

b.安装alsa-lib

很简单,没什么好说的,按照下面步骤安装就行了:

# tar jxvf alsa-lib-1.0.8.tar.bz2

# cd alsa-lib-1.0.8

# ./configure;make;make install

c.安装alsa-utils

# tar jxvf alsa-utils-1.0.8.tar.bz2

# cd alsa-utils-1.0.8

# ./configure;make;make install

d.安装alsa-oss

# tar jxvf alsa-oss-1.0.8.tar.bz2

# cd alsa-oss-1.0.8

# ./configure --with-aoss=yes;make;make install

e.其他

剩下几个包都是可选的,编译方法也很简单,这里就不说了.

3. 配置modprobe.conf

这里的工作是让系统在启动的时候自动加载声卡驱动,如果你的声卡以前可以被Linux系统识别,那么这个文件里会有原先驱动的配置信息,我们需要把他们全部删掉,例如我的modprobe.conf中有

alias snd-card-0 snd-intel8x0
options snd-card-0 index=0
install snd-intel8x0 /sbin/modprobe --ignore-install snd-intel8x0 &&

/usr/sbin/alsactl restore >/dev/null 2>&1 || :remove snd-intel8x0 {

/usr/sbin/alsactl store >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd-intel8x0



那么需要把这几行都删除,然后加入alsa驱动的配置,不要担心复杂的参数设置,因为所有的声卡驱动模块的设置在文档中都有(还记得安装 alsa-driver叫你访问的页面吗?),通过查看alsa主页上关于intel8x0的文档,我在modprobe.conf里加入了以下几行:

# ALSA portion
    alias char-major-116 snd
    alias snd-card-0 snd-intel8x0
    # module options should go here

    # OSS/Free portion
    alias char-major-14 soundcore
    alias sound-slot-0 snd-card-0
   
    # card #1
    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



4. 测试新的声卡

到此,声卡驱动就安装成功了,我们现在需要重启机器让新的驱动生效(当然可以不重启,不过你得先rmmod旧驱动然后执行: modprobe snd-intel8x0;modprobe snd-pcm-oss;modprobe snd-mixer-oss;modprobe snd-seq-oss)

5.asoundrc文件

做完上面得工作仅仅是能驱动声卡而已,要做到多路音频混合输出还得在你的home目录下创建一个.asoundrc文件,内容如下,你只要把下面的内容复制下来贴到你自己的文件里即可,需要改动的只有两个地方:

pcm.intel8x0 { #<--这里的intel8x0换成你自己的驱动名字
        type hw
        card 0
}

ctl.intel8x0 { #<--这里的intel8x0换成你自己的驱动名字
        type hw
        card 0
}

pcm.!default {
        type plug
        slave.pcm "dmixer"
}

pcm.dmixer {
        type dmix
        ipc_key 1024
        slave {
                    pcm "hw:0,0"
                    period_time 0
                    period_size 1024
                    buffer_size 8192
                    rate 44100
        }

        bindings {
                    0 0
                    1 1
        }
}

ctl.dmixer {
        type plug
        slave.pcm "dmixer"
}

pcm.mixin {
        type dsnoop
        ipc_key 5978293 # must be unique for all dmix plugins!!!!
        ipc_key_add_uid yes
        slave {
                pcm "hw:0,0"
        channels 2
        period_size 1024
        buffer_size 4096
        rate 44100
        periods 0
        period_time 0
        }
        bindings {
                0 0
                0 1
        }
}


6.测试

首先运行alsamixer把各路输出的音量都打开,然后打开xmms,mplayer试试吧,可以同时出声了,呵呵,对于按照上面的步骤仍然不能和别的程序同时发声的程序可以用aoss来启动,例如realplayer可以创建一个快捷方式,执行命令是aoss realplayer这样就行了.

7.参考文献:

http://www.alsa-project.org/alsa ... amp;module=intel8x0

http://www.alsa-project.org/alsa ... &module=Generic

http://www.linuxsir.cn/bbs/showthread.php?t=171950
发表于 2005-5-8 09:53:26 | 显示全部楼层
如果装了驱动后,不能再用声卡检测工具来测试了。。。否则会把配置文件改了。。

问题就出在这里。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-8 22:53:12 | 显示全部楼层
我的声卡兼容的驱动模块的查看方式是否正确?

因为用声卡检测软件检查自己的声卡,发现声卡型号是82801BA/BAM AC'97 Audio,使用的驱动模块是i810_audio。
在内核源代码目录下使用xconfig查看内核配置,发现sound选项下,只有
Creative ensoniq AudioPCI 97 (ES1371)
驱动模块是被编译到内核的,其他驱动模块要么是灰色的,要么都没有作为内核或者模块被编译。
那我现在正在使用的驱动到底是Creative ensoniq AudioPCI 97 的驱动还是Intel 810声卡的驱动?

不太明白。
回复 支持 反对

使用道具 举报

发表于 2005-5-9 09:20:23 | 显示全部楼层
在内核源代码目录下使用xconfig查看内核配置,发现sound选项下,只有
Creative ensoniq AudioPCI 97 (ES1371)
驱动模块是被编译到内核的,其他驱动模块要么是灰色的,要么都没有作为内核或者模块被编译。
那我现在正在使用的驱动到底是Creative ensoniq AudioPCI 97 的驱动还是Intel 810声卡的驱动?


感觉好象内核有点问题, 兄弟是下载最新的内核吗???

用 #make clean
#make mrproper
#make menuconfig 这个来配置内核比较方便。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-9 11:46:54 | 显示全部楼层
Post by 北南南北
感觉好象内核有点问题, 兄弟是下载最新的内核吗???

用 #make clean
#make mrproper
#make menuconfig 这个来配置内核比较方便。



不是新内核,是RedHat 9的2.4.20-8版的内核。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表