ccidnet????

出版日期:2000-07-24 总期号:941 本年期号:53

本期导读
要闻综合
电脑工作室
市场
产品
东北特刊
infocd
linux的声卡驱动方法

许刚

  对于刚从microsoft windows操作系统爬出来的计算机爱好者们,怀着对自由的向往,一头钻进linux的世界,却发现它没有那么容易开口说话,难道我们在linux的世界真要忍受无声的折磨吗?

  

  其实linux发展到今天,在众多linux爱好者的支持下,它已经可与windows一较高下了。例如以前最难配置的x窗口,随着xfree86server3.5.5的发布(它支持市场上的绝大部分显卡,如nvida 128/128zx、tnt、tnt2、3dfx vood3和s3 savage/savage4/savage 2000)已得到完全解决。本文主要讲解安装声卡驱动的方法,希望能为linux的爱好者提供一些帮助。

  假如你的声卡被当前的linux所支持,那么恭喜你买到了一块designed for linux的声卡。在安装linux的过程中,系统会提示你选择声卡的类型,从声卡的列表中选择你的声卡类型即可。经过测试如果听到linux的创始人linus的声音,则表示声卡已正确配置,启动linux后即可发声。

  isa 声卡如果并没列在声卡列表中,不妨选择sound blaster compatible,再选择irq、dma和io等值即可。要查看当前linux所支持的声卡,可查看/usr/src/linux/sound的文档。

  如果在安装过程中声卡不能正确配置,说明你的声卡尚未被支持,这时可采取两种方法:一是重新安装新的内核,一般新的内核支持的声卡比较多,例如2.3.34版本支持的声卡的种类已比较多,如creative 公司的系列声卡、ciruss logical semiconductor 423x/

  461x等。二是安装新的驱动程序,这里有两个选择:安装4front technology 公司的opensound 驱动程序;另外是alsa开发的alsadriver,下面分别进行讲解。

  安装之前,要求有modules工具及核心支持modules。


  一、opensound介绍


  1.发展历程

  opensound由hannu savolainen开发,他也是最早开发linux核心音效卡驱动程序的程序员之一,hannu后来继续开发 opensound system,一个由4front technologies 出售、支持多种 unix 系统的商业版音效驱动程序。redhat公司后来资助 alan cox(内核开发上的第二号人物)来增强核心音效驱动程序,使它们完全模块化。这些修改过的驱动程序由 redhat 在他们的5.0到5.2版发行套件中使用。目前这些改变已经从 2.0版整合进标准核心中。

  alan cox是现在标准核心音效驱动程序的维护人,现在hannu每隔一段时间仍会加进一些由商业版分割出来的程序代码,你在编译你的新内核时,在sound选项里面所看到的oss/free驱动就是。

  2.优点

  商业版本的 opensound system 驱动程序(由4front technologies 发展)比较起来容易设定,也支持较多的声卡,特别是新的音效卡。它对标准核心驱动程序写的应用程序兼容。

  3.缺点

  用户需要花20美元购买,但不会得到源代码,可在决定要不要买以前先下载试用版。更详细的信息可在4front technologies的网站 http://www.opensound.com取得。

  4.安装方法

  (1)取得与你内核相适应的驱动程序(在《中国计算机报》光盘infocd第四期光盘中有其2.2.14版),用tar -zxvf 文件名 将其解压至任意目录。

  (2)执行该目录下的./oss-install,首先出现版权对话框,选择“accept”,接着会出现“release notes”对话框,选择“accept”。回车后自动进行新内核测试及声卡配置,解压文件如果没有检测出你的声卡或结果不正确,可手动从声卡列表中选择你的声卡。

  (3)每次加载声卡驱动需要执行安装oss目录下的soundon,退出时执行soundoff即可。


  二、alsa介绍


  1.发展历程

  jaroslav kysela及其它人为gravis ultrasound声卡写了可选的驱动程序。这个计划后来改名为advanced linux sound architecture(先进 linux 音效架构,简称alsa),产生了一个他们认为更加通用, 且可用来取代核心中的音效驱动程序。

  alsa 驱动程序支持许多常见的声卡,而且是全双工、全模块化,与现存核心中的音效架构兼容。你可以在http://www.alsa-project.org网站了解更多alsa的信息。

  2.安装方法

  (1)从上述网站取得最新的驱动程序,目前最新的版本为0.5.7,文件名为alsa-drive-0.5.7.tar.bz2,大小为725kb,将此文件放在根目录下。注意它不是用gzip压缩的,而是用bzip2压缩的(最新的内核也是用它压缩的),因此其解压方法是:

  bzip2 -d alsa-drive-0.5.7.tar.bz2

  tar -xvf alsa-drive-0.5.7.tar

  这样会在根目录下建立一个alsa-drive-0.5.7的目录。

  (2)进入alsa-drive-0.5.7目录,执行./configure进行配置。

  (3)执行make install 进行编译及安装,会将各种声卡的驱动编译成模块,并将其复制到/lib/modules下,故在安装好声卡驱动之后可将此目录删除。

  (4)执行./snddevices,建立新的声音设备文件。

  (5)为保证和oss/free驱动的兼容性,我们还必须修改/etc/modules.conf(老版本为/etc/conf.modules),代码如下(以intel810为例):

  # alsa native device support

  alias char-major-116 snd

  注释:声卡作为字符设备标志为116

  options snd snd_major=116 snd_cards_limit=1

  alias snd-card-0 snd-card-intel8x0

  注释:设定是哪个声卡,可参考 /modules目录下的声卡设备名

  options snd-card-intel8x0 snd_index=0 snd_id="intel810"

  注释:只有一个声卡故snd_index=0,snd_id内容自设,不超过15个字符

  # oss/free setup

  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

  看起来很复杂,其实以上程序只需要将第四、五行的snd-card-intel8x0换成你的声卡设备名即可,一般是snd-card-产品名。或者从该目录下install文档中粘贴一部分后再修改。

  (6)执行modprobe snd-intel8x0 加载声卡驱动程序,将snd-intel8x0换成snd-你的产品名,可参考/modules目录下的声卡设备名。

  

  (7)在x窗口下打开混音器,调节音量用x11amp播放一首mp3,如果一切正常,则可听到动听的音乐了。

  (8)可在/etc/rc.d/rc.locale中加上“modprobe snd-intel8x0”,这样每次启动自动加载。

  另外,目前的alsa 驱动程序支持的声卡还不算多,主要有ess 1978/1938系列、creative soundblaster live!系列、cmi 8330/8338/8738系列等,具体支持的声卡列表参考解压后的doc/soundcar文件。

  比较有名的声卡厂商,一般在自己的主页上列出了基于linux的声卡驱动程序,如creative 公司在主页列出了它的声卡驱动(可在infocd第四期光盘上找到),而aureal 系列的8810/8820/8830也可从厂家的主页找到。如果上述方法仍未解决你的问题,不妨到你的声卡芯片制造厂家的主页上找一找。

  在安装的过程中最好先看说明文件,看清楚后再来安装,这样可省掉很多的冤枉路,出现故障多看说明。另外要熟悉modprobe、lsmod和insmod等一系列命令,用以上的方法已经在redhat 6.1和turbolinux 6.0上对aureal 8820、cmi 8830、intel 810、via 686a和crystal semiconductor cs 4236 安装声卡驱动成功。