Linux设备配置之声卡配置

系统 Linux
声卡 (Sound Card)也叫音频卡(港台称之为声效卡):声卡是多媒体技术中最基本的组成部分,是实现声波/数字信号相互转换的一种硬件。声卡的基本功能是把来自话筒、磁带、光盘的原始声音信号加以转换,输出到耳机、扬声器、扩音机、录音机等声响设备,或通过音乐设备数字接口(MIDI)使乐器发出美妙的声音。今天就教大家来在Linux下配置声卡, 请看下文。

  Linux下设备的配置过程是指在检测到设备类型、设备当前工作参数等信息之后,使用这些信息来配置设备的驱动程序,工作方式等,(设备的检测过程参见 《如何在Linux下实现硬件的自动检测》)。要完成这样的任务,需要做两方面的工作:

  其一是需要一个详尽的设备信息文件,这个文件描述了设备标识、与设备标识对应的设备驱动程序、设备配置参数(设备选项)、设备设置的详细描述、设备配置方法描述、设备对应的别名、设备的主设备号等信息。

  其二是需要根据设备的类型,以及安装的linux系统版本(不同的Linux发行版对于同一设备的配置脚本文件存在差异),设置设备对应的配置脚本文件。
 

  声卡配置过程

  1. 内核声卡驱动程序的配置

  现在正在使用的声卡主要有PCI和ISA两种。在linux系统下,对这两种类型声卡的配置过程实际上是生成配置文件/etc/modules.conf,建立正确的设备别名和声卡设备驱动程序的对应关系。在正确的设置驱动模块之后,使用混音器程序设置声卡的输出音量。

  若您的声卡是ISA PnP类型的,那么如果这块声卡在dos(windows)系统下也工作良好,那么您可以先记住声卡的工作参数,包括IRQ、DMA和I/O。一般而言,在linux系统下应该使用和DOS下一样的参数。

  如果您不知道它的工作参数,您可以通过/proc/isapnp获得声卡的配置空间,它包括dma、ioport和irq等信息。然后您可以通过检查/proc/interrupts,/proc/ioports和/proc/dma文件获知系统中空闲的irq、ioports和dma等信息,由此您可以选择合适的声卡配置参数。

  在2.4.x内核中,实现了ISA PnP支持,同时一部分声卡驱动程序现在也支持无需使用isapnp工具完成自动检测和配置了。关于声卡设备的详细信息您也可以查看内核文档/usr/src/linux/Documentation/sound/中的文件。

  对于PCI声卡而言,它们的驱动程序包含了自动检测过程,所以您只需要插入正确的驱动模块,声卡一般就能正常工作了。

  在声卡模块被***次引用时,内核会要求加载相应的驱动模块。与声卡模块对应的设备别名是sound-slot-0(0表示系统中的一个声卡,以此类推)。例如,在/etc/modules.conf中加入:

  alias sound-slot-0 esssolo1

  就配置了ESS Solo-1声卡。这条语句表示在需要声卡时,自动加载模块esssolo1。

  有时加载了sound-slot-0对应的设备模块之后,并不能使声卡的所有功能生效。这时设备就会请求访问sound-service-0-n别名。n代表了不同的设备:

  编号 对应的设备

  0 混音器(Mixer)

  2 MIDI

  3,4 DSP

  这时就要求您设置正确的声卡服务模块别名,这样声卡才能够正常工作。声卡对应的设备文件:

  设备文件名 设备描述

  /dev/audio 正常连接到/dev/audio0

  /dev/audio0 sun工作站兼容的声音设备(仅部分实现,不支持sun ioctl接口,仅支持u-law编码)

  /dev/audio1 第二个声音设备(安装多个声卡时使用)

  /dev/dsp 正常连接到/dev/dsp0

  /dev/dsp0 ***个数字采样设备

  /dev/dsp1 第二个数字采样设备

  /dev/mixer 正常连接到/dev/mixer0

  /dev/mixer0 ***个声音混音器

  /dev/mixer1 第二个声音混音器

  /dev/music 高级序列化接口

  /dev/sequencer 底层MIDI,FM和GUS存取

  /dev/sequencer2 正常连接到/dev/music

  /dev/midi00 ***个原MIDI端口

  /dev/midi01 第二个原MIDI端口

  /dev/midi02 第三个原MIDI端口

  /dev/midi03 第四个原MIDI端口

  /dev/sndstat 显示声音驱动程序的状态

  pc扬声器提供下列设备:

  /dev/pcaudio 等价于/dev/audio

  /dev/pcsp 等价于/dev/dsp

  /dev/pcmixer 等价于/dev/mixer

  您可以直接将声音文件送入对应的设备,比如,将.au声音文件通过将其送入/dev/audio中播放,原始采样也可被送入/dev/dsp。

  cat sample.su > /dev/audio

  但是这样做一般效果较差,播放时应采用play命令。对于wavplay和vplay(snd-util包)会以***的效果播放wav文件,但是它们不能识别微软adpcm压缩的wav文件。若手动设置争取正确的参数之后,splay用于播放大多数声音文件。

  读/dev/audio和/dev/dsp返回的采样数据可以重定向到一个文件。vrec可以使这个过程更容易。可能需要一个混音器程序选择适当的输入设备。

  2. ALSA声卡驱动程序的配置

  对于声卡驱动程序,除了内核自带的驱动程序之外,您还可以使用Advanced linux Sound Architecture(ALSA,http://www.alsa-project.org/)提供的驱动程序。它支持一系列主流声卡,同时它和内核的声音结构互相兼容,在某种程度上,可以说是内核的声卡驱动模块的补充。

  ALSA的声卡驱动程序的一般命名规则是snd-card-。soundcard代表不同类型的声卡。例如,对于所有的16位Soundblaster声卡,它们对应的驱动程序模块为snd-card-sb16。

  若与需要linux内核声音驱动的向后兼容性,您还需要两个模块snd-pcm-oss和snd-mixer-oss。对于amixer设置的多个混音器,它们都是针对不同的设备的。比如CD通道的设置是针对CD播放器的。而很多应用程序,如象mpg123,xmms,realplayer,都要依赖PCM通道的设置。MIC代表麦克风。不同的Gain部分对于不同的使用能提供特别的增益。

  缺省情况下ALSA静音所有的输出。为了获得声音,必须解除主音量和PCM音量的静音。

  amixer -c 0 sset 'Master',0 100%,100% unmute

  amixer -c 0 sset 'PCM ',0 100% unmute

  选项包括mute,unmute,capture,nocapture,rec,norec,数字或left:right。amixer不带参数运行时,返回声卡上所有通道的设置情况。

  为了在每次插入声卡驱动模块时,都打开静音,您可以在/etc/modules.conf加入下列语句:

  post-install snd-card-sb16 amixer -c 0 sset 'Master',0 100%,100% unmute && amixer -c 0 sset 'PCM ',0 100% unmute

  在成功插入了alsa声卡模块之后,系统会出现/proc/asound目录,这个目录描述了声卡的工作情况,以及创建的设备文件。

  在您加载snd-pcm-oss设备模块之后,你也能使用与oss兼容的方式存取声卡,这时如下的映射会被完成:

  ALSA设备 OSS设备 次设备号

  /dev/snd/pcmC0D0 /dev/audio0(/dev/audio) 4

  /dev/snd/pcmC0D0 /dev/dsp0(/dev/dsp) 3

  /dev/snd/pcmC0D1 /dev/adsp(/dev/adsp) 12

  /dev/snd/pcmC1D0 /dev/audio1 20

  /dev/snd/pcmC1D0 /dev/dsp1 19

  /dev/snd/pcmC1D1 /dev/adsp1 28

  /dev/snd/pcmC2D0 /dev/audio2 36

  /dev/snd/pcmC2D0 /dev/dsp2 35

  /dev/snd/pcmC2D1 /dev/adsp2 44

  对于/dev/mixer设备,要加载snd-mixer-oss,可以保证和老的oss混音器的兼容性。如果您插入了上述设备之后,声音系统仍无法正常工作,您可以运行snddevices命令,建立正确的设备文件。

  由于为使ALSA正常工作,需要设置大量的设备别名,下面就给出一个/etc/modules.conf的例子,它能够完成ESS Solo1声卡的自动配置工作。其他的ALSA设备的设置也基本与此声卡相同。

  # 设置ALSA设备的主设备号,它固定为116

  alias char-major-116 snd

  # 设置OSS设备的主设备号,它固定为14,这使得ALSA复用OSS设备

  alias char-major-14 soundcore

  # ALSA设备别名

  alias sound-card-0 snd-card-es1938

  # OSS设备别名

  alias sound-slot-0 sound-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 snd-minor-oss-12 snd-pcm-oss

  # 运行amixer命令,打开声音输出

  post-install snd-card-es1938 amixer -c 0 sset 'Master',0 100%,100% unmute && amixer -c 0 sset 'PCM ',0 100% unmute

大家看了上文自己就能在Linux下配置声卡了,希望对大家有所帮助。

【编辑推荐】

 

责任编辑:赵鹏 来源: 互联网
相关推荐

2011-01-18 09:41:21

Linux网卡

2011-01-18 09:40:49

Linux显卡

2011-01-18 09:37:52

Linux键盘

2011-01-18 09:41:18

Linux鼠标

2011-01-18 09:40:46

LinuxModem

2011-02-25 10:10:41

Proftpd

2011-03-22 13:06:18

LAMPMysql

2011-03-23 11:14:47

LAMP配置

2011-07-11 14:03:29

linuxmysql

2011-02-25 17:40:38

2011-03-25 10:53:33

Nagios 配置

2011-03-25 10:25:19

2011-02-25 17:30:52

2009-07-17 14:20:31

ibatis Dao

2010-05-19 13:44:42

Subversion+

2011-02-25 10:03:06

Proftpd

2011-03-14 17:02:36

BGP

2011-02-25 10:19:54

Proftpd

2011-02-25 17:07:25

2011-04-01 10:07:04

点赞
收藏

51CTO技术栈公众号