ALSA声卡驱动程序的配置

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

ALSA的声卡驱动程序的一般命名规则是snd-card-<soundcard>。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兼容的方式存取声卡,这时如下的映射会被完成:

表 5-3

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

=================================================
http://www.linuxforum.net/forum/printthread.php?Cat=&Board=embedded&main=687530&type=post
理解和使用Alsa的配置文件
作者:刘旭晖 Raymond转载请注明出处
Email:colorant@163.com
BLOG:http://blog.csdn.net/colorant/
主页:http://rgbbones.googlepages.com/

最近在做音频相关的驱动,使用到了Alsa。过程中涉及到一些硬件的设置和测试,需要了解Alsa的配置文件的写法,稍微学习了一下,这里把自己 的一些简单理解记录如下。

1 相关说明
1.1 网站资源
Alsa项目的官方网址:http://www.alsa-project.org/
Alsa LIB API Reference:http://www.alsa-project.org/alsa-doc/alsa-lib/
配置文件的语法:http://www.alsa-project.org/alsa-doc/alsa-lib/conf.html
Asoundrc的官方说明文档:http://www.alsa-project.org/main/index.php/Asoundrc

实际上,如果你仔细看了上述文档,大概也就没必要往下看我的文章了 8 )

另:关于Alsa-Lib的API,网上的是每天自动生成的最新版本的API,如果你不能确认你使用的版本是否和最新版本完全兼容,可以看 Alsa-lib包里自带的那一份文档。可以在src包里执行make doc 自己build出来。
1.2 工作环境
我测试的软件版本是基于Alsa 1.0.14的版本,当前最新的版本是1.0.16 (2008-7),不过配置文件这一部分应该是差不多的,至少从文档上来看是这样。

2 理解配置文件
2.1 配置文件的位置
配置文件的位置是由Configure阶段的选项来决定的,不过多数时候,Alsa的配置文件位于:/usr/share/alsa目录下,主要 配置文件为/usr/share/alsa/alsa.conf 其它文件是否需要,位置在哪,都是由alsa.conf来决定的。
通常会有/usr/share/alsa/card 和/usr/share/alsa/pcm两个子目录,用于设置Card相关的参数,别名以及一些PCM默认设置。
此外,在alsa.conf中,通常还会引用 /etc/asound.conf 和 ~/.asoundrc这两个配置文件,这两个文件通常是放置你个人需要特殊设置的相关参数。按照Alsa官方文档的说法,1.0.9版本以后,这两个文 件就不再是必要的,甚至是不应该需要的。至少是不推荐使用吧。不过,对于我来说,在嵌入式系统中使用,为了简单和方便测试,恰恰是需要修改这两个文件 8 )
2.2 Alsa.conf
Alsa.conf中主要的一些内容包括:用hook读取了/etc/asound.conf 和 ~/.asoundrc这两个配置文件:
@hooks [
{
func load
files [
"/etc/asound.conf"
"~/.asoundrc"
]
errors false
}
]

设置了default pcm的一些默认参数,如,默认使用Card 0 ,Device 0作为音频设备等等。

defaults.ctl.card 0
defaults.pcm.card 0
defaults.pcm.device 0
defaults.pcm.subdevice -1
defaults.pcm.nonblock 1
defaults.pcm.ipc_key 5678293
。。。

设置了Alsa 内置的一些plugin的接口参数,例如file:
pcm.file {
@args [ FILE FORMAT ]
@args.FILE {
type string
}
@args.FORMAT {
type string
default raw
}
type file
slave.pcm null
file $FILE
format $FORMAT
}

File plugin的作用是将PCM数据流存储到文件中。

此外,通常alsa.conf还会载入cards/aliases.conf ,设置一些声卡的别名等,这个我是不需要了。
在aliases.conf 的结尾还有以下一段:

<confdir:pcm/default.conf>
<confdir:pcm/dmix.conf>
<confdir:pcm/dsnoop.conf>

用来读入/usr/share/alsa/pcm目录下所列的那3个文件
分别设置 默认PCM设备的相关参数,dmix是用来实现播放时软件混音的内建plugin,dsnoop则是用来实现录音时多路分发的内建plugin。

3 一些配置和使用实例

3.1 使用蓝牙设备
在/etc/asound.conf中添加下列一项用来使用蓝牙的A2DP设备

# device for bluetooth
pcm.bluetooth{
type bluetooth
device 00:02:5B:00:C1:A0
}

然后调用 aplay –D bluetooth sample.wav 播放。

需要注意,为了使用该设备,你需要 /usr/lib/alsa-lib/libasound_module_pcm_bluetooth.so 这一个蓝牙plugin的库文件。这是在Bluez相关的包里,和Alsa本身没有关系。从这里,我们也可以看出alsa的外部plugin和配置文件之 间的名字关系规则: libasound_module_pcm_####.so 这里的#### 就是你再conf文件中pcm.xxxx 里所写的名字。

3.2 使用非默认的声卡设备通道
在我的板子上,Buildin的Audio硬件在Alsa子系统中实现了两个硬件通道,一个是HIFI通道,另一个是语音通道,所以我添加了如下 配置:

#device for voice channel
pcm.voice{
type plug
slave{
pcm "hw:0,1"
}
}

通过语音通道播放声音的调用的方式: aplay –D voice sample.wav

这样的写法说明我通过plug这plugin对音频数据进行自动的采样率,通道等调整后,将数据送到我的第0个card的序号为1的device 上。
实际上,如果不写上述配置文件,用 aplay -D "plug:SLAVE='hw:0,1'" sample.wav 也可以得到同样的结果。

Hifi通道播放声音直接使用 Aplay sample.wav即可 也就是Aplay –D default sample.wav

3.3 其它
混音:
aplay -D plug:dmix sample.wav &
你可以通过多次调用上述命令来测试多个音频数据的混音。

Dump音频数据:
aplay -D "plug:'file:FILE=/tmp/dump.bin'" sample.wav

理解和使用alsa配置-默认静音,必须先用amixer解除主音量和pcm音量的静音相关推荐

  1. python pcm 静音_理解和使用alsa配置-默认静音,必须先用amixer解除主音量和pcm音量的静音 | 学步园...

    ALSA声卡驱动程序的配置 对于声卡驱动程序,除了内核自带的驱动程序之外,您还可以使用Advanced Linux Sound Architecture(ALSA,http://www.alsa-pr ...

  2. 深入理解Linux软件包的配置、编译与安装

    深入理解Linux软件包的配置.编译与安装   发布时间:2007.09.24 06:23     来源:赛迪网    作者:kit 从源代码安装过软件的朋友一定对 ./configure & ...

  3. jupyter配置默认启动目录

    jupyter配置默认启动目录 注意有两种配置方式: 1,文件在jupyter_notebook_config.py默认生成后的目录: 2,文件jupyter_notebook_config.py在a ...

  4. Database之SQLSever:SQL命令实现理解索引、规则、默认概念及其相关案例之详细攻略

    Database之SQLSever:SQL命令实现理解索引.规则.默认概念及其相关案例之详细攻略 目录 SQL命令实现理解索引.规则.默认概念 索引 规则

  5. Struts2中配置默认Action

    Struts2中配置默认Action 一.jsp默认设置 1.当访问的Action不存在时,页面会显示错误信息,可以通过配置默认Action处理用户异常的操作: 2.配置方法: 在struts.xml ...

  6. 【Java】Struts2配置默认Action和配置Action的默认处理类

    配置默认Action <package> <default-action-ref name="index"/> <action name=" ...

  7. pycharm python 模板配置_windows下pycharm安装、创建文件、配置默认模板

    本文为大家分享了windows下pycharm安装.创建文件.配置默认模板的具体步骤,供大家参考,具体内容如下 步骤: 下包 -->安装-->创建文件-->定制模板 一.下包 官方地 ...

  8. 容器编排技术 -- Kubernetes 为 Namespace 配置默认的内存请求与限额

    容器编排技术 -- Kubernetes 为 Namespace 配置默认的内存请求与限额 1 Before you begin 2 创建命名空间 3 创建 LimitRange 和 Pod 4 如果 ...

  9. 容器编排技术 -- Kubernetes 在 Namespace 中配置默认的CPU请求与限额

    容器编排技术 -- Kubernetes 在 Namespace 中配置默认的CPU请求与限额 1 Before you begin 2 创建一个命名空间 3 创建一个LimitRange和一个Pod ...

最新文章

  1. 数据科学Python训练营课程:从初级到高级 Python for Data Science Bootcamp Course:Beginner to Advanced
  2. 生态伙伴 | 番茄君入驻飞书,帮你一招搞定时间管理,告别拖延症!
  3. python做动态数据采集仪代理_python做监控数据采集,怎么做.
  4. oracle excel报表开发,深入浅出OracleEBS之Excel报表开发.doc
  5. php的常量和变量的区别,变量和常量的区别_在php当中常量和变量的区别
  6. CANVAS运用-对图片的压缩上传(仅针对移动浏览器)
  7. IDEA中注解注释快捷键及模板
  8. ADOQuery 查询 删除 修改 插入
  9. 一个老干部对即将从政的儿子的赠言
  10. mysql5.6配置区分大小写
  11. 比 Java 更具争议的 PHP,处处留坑?
  12. SSH Config Editor Mac(SSH配置编辑器)V2.2
  13. 软件架构入门,看这篇就够了···
  14. redis面试常问--缓存雪崩
  15. 毕设题目:Matlab优化布局
  16. Ubuntu 自动关机命令
  17. 版本名称SNAPSHOT、alpha、beta、release、GA含义
  18. linux polkitd 漏洞,Ubuntu Linux中的特权提升漏洞Dirty Sock分析(含PoC)
  19. OSChina 周三乱弹 —— 有趣的灵魂会流油
  20. R语言分析股票指数的GARCH效应

热门文章

  1. thinksnsv4.6运行php,开源微博系统ThinkSNS电脑版
  2. JS设计模式(原型模式)
  3. JAVA事务回滚的使用方法
  4. 浅谈分布式一致性算法raft
  5. 数据化管理洞悉零售及电子商务运营——电子商务中的数据化管理
  6. Java实现视频转码 mp4文件转编码集
  7. cocos 贝塞尔曲线编辑器
  8. 联想Y7000--deepin深度操作系统安装出现的无线网卡驱动RTL8111/8168/8441问题---致搞了一整天的心
  9. 使用CefSharp动态爬取天天基金网历史基金数据——数据存储(二)
  10. 三菱FX3U,单控气缸报警功能块,双控气缸报警功能块,真空报警功能块,伺服定位功能块,伺服手动操作功能块,产量节拍功能块