Linux系统中用ALSA驱动声卡流程详解

上传人:平*** 文档编号:18277615 上传时间:2017-11-14 格式:DOC 页数:11 大小:71.10KB
返回 下载 相关 举报
Linux系统中用ALSA驱动声卡流程详解_第1页
第1页 / 共11页
Linux系统中用ALSA驱动声卡流程详解_第2页
第2页 / 共11页
Linux系统中用ALSA驱动声卡流程详解_第3页
第3页 / 共11页
Linux系统中用ALSA驱动声卡流程详解_第4页
第4页 / 共11页
Linux系统中用ALSA驱动声卡流程详解_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《Linux系统中用ALSA驱动声卡流程详解》由会员分享,可在线阅读,更多相关《Linux系统中用ALSA驱动声卡流程详解(11页珍藏版)》请在金锄头文库上搜索。

1、Linux系统中用 ALSA驱动声卡流程详解一、什么是 ALSAAdvanced Linux Sound Architecture 的简称为 ALSA ,译成中文的意思是 Linux 高级声音体系(这是我直译的,可能译的不对)。一谈到体系就有点范围就太大了,所以 ALSA不仅仅是包括对声卡的支持和驱动。ALSA具有如下特征:1、对所有音频接口的高效支持,从普通用户的声卡到专业级别多路音频设备。2、声卡驱动完全模块化设计。3、SMP and thread-safe design。4、开发库(alsa-lib) 为程序设计提供了简单、方便,并且拥有有高级的效果和功能。5、支持旧版本的 OSS AP

2、I 结口,能为大多数的 OSS应用程序提供兼容。OSS 是一个商业性的驱动,OSS有一个简装本的代码已经移入内核和 ALSA,其中 alsa-oss就是。OSS 公司据说目前已经并不存在了。我们没有必要用 OSS 公司提供的商业版本。用 ALSA和 OSS简装版足够。二、关于硬件驱动驱动的必备基础1、如何查看硬件芯片在 Linux操作系统中,所有的硬件都是以芯片组来区分的,品牌并不是最重要的。硬件最重要的标识是芯片组。所以您在讨论区求助的时候,只说硬件品牌,而不提供芯片组,大家是帮助不了您的,切记。我们查看硬件的芯片组是的命令是 lspci -v 或者是 dmesg,由于 dmesg输出的信息

3、不太多,不够直观。所以经常用的还是 lspci -v 。也可以用 lshal 获取。最方便的还是 lspci -v。初学者还是用 lspci -v 更好一点。rootlocalhost beinan# lspci -v我们运行 lspci -v 后,如果查看声卡芯片组,发会现有类似下面的一段:rootlocalhost beinan# lspci -vMultimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)AC97 Audio Controller (rev 03)Subsystem:

4、 Hewlett-Packard Company: Unknown device 3080Flags: bus master, medium devsel, latency 0, IRQ 5 I/O ports at 1c00 size=256I/O ports at 18c0 size=64Memory at e0100c00 (32-bit, non-prefetchable) size=512Memory at e0100800 (32-bit, non-prefetchable) size=256Capabilities: 50 Power Management version 22、

5、系统内核版本rootlocalhost beinan# uname -r -m -p -i2.6.11-1.1369_FC4 i686 i686 i386上面的表示的是系统的内核版本,处理器架构等。提示:如果您自己编译内核,还要安装 kernel-devel (或 kernel-source), 这个是在系统光盘或者映像文件中有带。如果您想自己用 kernel.org 下载内核,自己编译,然后再来驱动声卡,也可以到 kernel.org 上下载最新的内核源码。一般情况下,如果系统默认的内核不能驱动声卡,大多得更换内核,我们建议您先从发行版所提供的升级包来升级内核及源码。比如 Fedora 的扩

6、展项目软件包更新速度极快,我们能通过 apt和 yum进行 kernel的升级。在启用新内核时,我们不建议您删除老内核。因为现在Fedora / Redhat 引入 apt和 yum 更新工具,系统的完整性极为重要。如果系统被破坏,用更新工具变得极为困难。比如 Fedora 的 apt和 yum升级源升级的内核也解决不了您的问题,我们可能需要自己通过 kernel.org 下载内核来编译。但也不能删除以前的内核包及源码包。一是为了安全,毕竟我们自己编译内核不是百分之百的成功。另外系统自带的内核及源码包被系统很多软件依赖。apt 和 yum 每次更新软件包的时候都要检查系统的完整性。对于有些发行

7、版,可以直接从从 kernel.org 下载最新的内核。如果从系统提供的内核源码(kernel-devel 或 kernel-source)编译,可能解决不了您的问题。3、modprobe.conf 的内容。在 Fedora Core 4.0 中,内核模块的添加或定义别名是在 /etc/modprobe.conf 文件。在其它版本可能是 modules.conf 。如果您的系统中存在 modprobe.conf ,我们就以这个文件为准。不同发行版有不同的定义文件,比如 slackware 是定义在/etc/modules.conf 中,但也要在 /etc/rc.d/rc.modules 打开相

8、关驱动模块。modprobe.conf 或者 module.conf就是对系统已经加载的模块进行相应的配置,比如设置别名等。这些一般都是自通过工具自动生成的,我们也可以通过查看硬件的文档和站点,也可以自己添加。为什么这样添加,而不是那样的呢?我也不懂了,因为人家文档那样说的,我不会开发,如果懂的开发的,可能会明白。请理解理解我。比如我用的是 855的主板,系统驱动用的是 snd-intel8x0,在/etc/modprobe.conf 的配置是如下的内容。 下面这段内容是通过 alsaconf 配置工具自动生成的。alias snd-card-0 snd-intel8x0options snd

9、-card-0 index=0options snd-intel8x0 index=0remove snd-intel8x0 /usr/sbin/alsactl store 0 /dev/null 2&1 | : ; ;/sbin/modprobe-r -ignore-remove snd-intel8x04、lsmod 查看已经加载的内核模块。如果一个设备在内核的编译中是以模块方式加载的,主要是通过 lsmod 来查看。rootlocalhost beinan# lsmod可能初学 Linux的弟兄会问,内核的 module存放在哪里,我们能不能自己来手工加载模块。内核的模块放在 /lib/

10、modules/内核的版本/kernel/ ,比如在 Fedora 4.0 中,我们可以看到如下的:rootlocalhost beinan# ls /lib/modules/2.6.11-1.1369_FC4/kernel/arch/ crypto/ drivers/ fs/ lib/ net/ sound/其中,sound 就是声卡模块存放目录,大多数的硬件驱动放在 drivers 目录,fs 是文件系统模块的目录。net 是与网络有关的存放目录,比如一些网络协议支持的模块、防火墙支持的模块等。arch 是cpu方面 . .如果我们想自己加载模块,就到这些目录中查看相应模块的信息,然后用

11、modprobe 来加载。rootlocalhost beinan# modinfo snd-intel8x0查看一个模块的信息,我们用 modinfo 来查看,所要查看的模块不要带 .ko 或者.o 之类的。比如查看到类似下面的信息。description: Intel 82801AA,82901AB,i810,i820,i830,i840,i845,MX440; SiS 7012; Ali 5455通过这个我们足可以知道这是 Intel 集成声卡,通过 lspci -v 得到的声卡信息,感觉他们很相近。所以就能尝试用这个模块来驱动。rootlocalhost beinan# modprob

12、e snd-intel8x0用 modprobe 加载了模块,然后我们通过 lsmod 就能看到了。对于声卡模块是这么加载的,其它设备的驱动模块也是如此。注意:/b/size这些只是教您一点基础知识,遇到什么问题,知道怎么去查看解决。如果您在论坛求助的时候,是必须把 lsmod 输入内容以及 /etc/modprobe.conf 或 modules.conf 的内容帖出来。这样能节省很多时间,否则大家不会明白问题出在哪里。三、针对自己系统的声卡不发声,我是否有必要来升级内核解决可能存在这样的情况,比如有时我在 Mandriva Linux时,声卡是有声音的,但安装好 Fedora 系统后却没有

13、声音了。所以我们有必要弄清楚如下的几个问题。可能声卡已经驱动起来了,只是我们不太了解系统的原因所致。下面我们以 Fedora 为例。1、声卡是不是被系统识别支持了。我们可以用 Fedora 提供的配置工具 system-config-soundcard 来测试。beinanlocalhost # system-config-soundcard通过测试,如果能听到声音,证明声卡已经驱动好了。如果听不到声音,但反应在也不迟钝,不是打开 system-config-soundcard ,按测试播放声音时会出现假死的情况。可能是声量没有打开。2、是否把声卡的音量打开了,比如 PCM 和 MASTER等

14、。我们可以用下面几个工具。beinanlocalhost # gnome-volume-controlbeinanlocalhost # kmixbeinanlocalhost # alsamixerbeinanlocalhost # aumix上面的四个工具,可以尝试一下,有时这几个工具存在 BUG的事。所以我们还要引入一个工具 aumix ,目前已经被 Fedora 删除了。我们自己安装上就行了。3、我的声卡是测试时是有声音的,但我为什么不能播放 CD和听 mp3呢?自从 Redhat 8.0以后,也就是说 Redhat 9.0 ,Fedora 1.0,Fedora 2.0,Fedora

15、3.0 ,Fedora 4.0的媒体播放软件不再对 mp3提供支持。究其原因是版权方面的原因。但这不是意味着我们不能在Fedora 系统中让播放软件支持 mp3。我们可以安装 mp3支持补丁或者下载全新的播放器。而这一切都离不开在线安装工具 apt 或 yum 。至于 CD为什么不能播放的问题,在论坛上已经说过多次了。首先要保证 CDROM的音频线和主板相连接。有的弟兄会问,Windows 为什么就能直接播放,我也没有把 CDROM的音频线接在主板上。我答复您的是:咱们得转换观念,咱们是在用 Linux,而不是 Windows。4、查看声卡是否有模块冲突。比如 Intel 主板集成了猫和声卡、

16、网卡等,这时可能猫的蜂鸣器会被系统识别为声卡,所以要通过 lsmod 来查看,是否有 snd-intel8x0m。如果有则要处理一下。把在/lib/modules/内核的版本/kernel/sound/pci 中或 /lib/modules/内核的版本/kernel/drviers/sound/pci 中的 snd-intel8x0m.ko改名为 snd-intel8x0m.koBAK 。还有类似的主板,比如 VIA 主板集成了声卡和猫的, 如果声卡不发声,大多也与这有关,比如内核模块有 snd-via82xx.ko 和 snd-via82xx-modem.ko,可能系统会把 snd-via82xx-modem.ko 模块当成是声卡的驱动。如果您出现这样的情况,也要改名。5、通过 alsaconf 来配置声卡。一般的情况下,系统在安装的时候,会自动把声卡配好。如果能识别的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号