Linux中如何配置声卡

88次阅读
没有评论

共计 3738 个字符,预计需要花费 10 分钟才能阅读完成。

这篇文章主要介绍了 Linux 中如何配置声卡,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

声卡配置过程

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

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“Linux 中如何配置声卡”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计3738字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)