LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2777|回复: 0

ALSA安装配置指南(Official)(适用于Intel snd-intel8x0)——有人翻译过没有?

[复制链接]
发表于 2005-8-4 20:53:03 | 显示全部楼层 |阅读模式
最近无聊,翻译了一些东西消遣消遣。这是其中的一篇。大家对alsa都很感兴趣,所以特别翻译了alsa的。我的本本是intel的chipset 所以就翻译了intel的。
准备再翻.asoundrc相关的那个简单文档。希望大家支持。
原文链接:
http://www.alsa-project.org/alsa ... amp;module=intel8x0



目录
snd-intel8x0的模块选项
介绍
快速安装
设置modprobe和kmod支持
对/etc/modules.conf文件内容的简单解释
.asoundrc文件

链接
用户反馈

snd-intel8x0的模块选项
描述:"Intel 82801AA,82901AB,i810,i820,i830,i840,i845,MX440; SiS 7012; Ali 5455"
作者:"Jaroslav Kysela "
许可证:"GPL"
parm: index int array (min = 1, max = 8), 描述 "Intel i8x0 声卡的索引值"
parm: id string array (min = 1, max = 8), 描述 "Intel i8x0 声卡的ID字串"
parm: enable int array (min = 1, max = 8), 描述 "启用Intel i8x0 声卡"
parm: ac97_clock int array (min = 1, max = 8), 描述 "AC'97 编码时钟(codec clock)  (0 = 自动侦测)."
parm: joystick_port int array (min = 1, max = 8), 描述 "Intel i8x0 声卡的游戏杆端口地址 (0 = 禁用)"
parm: mpu_port int array (min = 1, max = 8), 描述 "Intel i8x0 驱动的 MPU401 端口号 #."

介绍
有两种方法可以使linux驱动工作,一种是将它们编译进内核,另一种是将它们构建成独立的模块。请阅读kernel-HOWTO以获得内核编译的详情。

你必须打开声音核心模块(soundcore module)的音效支持。这个模块位于内核中。查看音效驱动(sound drivers)目录,它应该是第一个选项。大多数人都启用了这个模块设定。这样的话你就可以手工加载和卸载这些模块,或者如果你有多声卡/设备,或者你需要debug或使用有时可能导致你的驱动挂起的切边软件(cutting edge software--译者按:恕我孤陋寡闻,不知道这个词是什么意思,请各位看官不要见笑)。这同时也表示,你获得了对系统更多的控制权。大多数现代的发行版都把声音核心编译成了模块。你可以通过多种方法验证。最简单的方法是在终端输入:
      modinfo soundcore
如果这条命令返回的信息中指示你有该模块,你就不必重新编译你的内核了。

快速安装

NB.如果你使用cvs,你需要输入:
        ./cvscompile 或者 make build
而不是
        ./configure

在shell中输入下面的命令:
新建一个目录以存放alsa的源代码

        cd /usr/src
        mkdir alsa
        cd alsa
        cp /downloads/alsa-* .

解压缩并安装alsa-driver包

        bunzip2 alsa-driver-xxx
        tar -xf alsa-driver-xxx
        cd alsa-driver-xxx
        ./configure --with-cards=intel8x0 --with-sequencer=yes;make;make install

NB.如果你使用的是0.9.4或者更早的版本的driver的话,你需要运行
        ./snddevices
如果你使用devfs,你就不需要运行snddevices脚本了

snddevices脚本设置了创建的设备的权限是root。所以你需要:
        chmod a+rw /dev/dsp /dev/mixer /dev/sequencer /dev/midi
现在,解压并安装 alsa-lib 包
        cd ..
        bunzip2 alsa-lib-xxx
        tar -xf alsa-lib-xxx
        cd alsa-lib-xxx
        ./configure;make;make install
现在,解压并安装 alsa-utils 包
        cd ..
        bunzip2 alsa-utils-xxx
        tar -xf alsa-utils-xxx
        cd alsa-utils-xxx
        ./configure;make;make install
然后,将模块插入内核
modprobe snd-intel8x0;modprobe snd-pcm-oss;modprobe snd-mixer-oss;modprobe snd-seq-oss

NB.使用早于 0.9.0beta11 驱动的用户,使用如下命令:
        modprobe snd-card-intel8x0

现在调整你的声卡的音量水平。所有混音器声道(mixer channels)默认都是静音。你必须使用一个本地的mixer程序取消合适的声道的静音,例如,你可以使用alsa-utils包中的alsamixer。注意,usb-audio设备没有内部的混音器控制。
        alsamixer
你也可以看看utils/alsasound文件。这个脚本是为Redhat发行版所设计的,但是你可以将它应用在任何使用System V风格的rc初始化脚本的发行版上。这将可以使你在系统启动的时候加载模块。当然如果你想这样做,你可以把它编译进内核,这样就省去了你去理解rc初始化脚本时的困难了。

设置modprobe和kmod支持

在你发送邮件抱怨“我没有/etc/modules.conf,我可以再那里找到它……”之前,/etc/modules.conf的确已经为一些发行版所反对,但是它还是可能以/etc/conf.modules的形式存在。两者基本上是一样的。不要担心这些问题,作为一个可选的步骤,请升级你的modutils到最新的版本。这将解决你的问题。
这里有一个例子,你可以复制,粘贴这部分到你的/etc/modules.conf文件的最后。

debian用户注意啦:你必须把这些信息保存为一个文件,放到/etc/modutils/目录下(例如:/etc/modutils/alsa)然后运行update-modules

        # ALSA portion
        alias char-major-116 snd
        alias snd-card-0 snd-intel8x0
        # module options should go here

        # OSS/Free portion
        alias char-major-14 soundcore
        alias sound-slot-0 snd-card-0
       
        # card #1
        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

NB. 使用早于0.9.0beta11驱动的用户必须使用:
        snd-card-intel8x0

按照这些<A href="http://www.alsa-project.org/alsa-doc/doc-php/file-edit.php">指导</A>复制并粘贴上面的内容到你的/etc/modules.conf文件中。

对/etc/modules.conf文件内容的简单解释

本地设备

当主多路复用器(multiplexer)被加载后,它的编码需要顶层水平的声卡模块。字串snd-card-%i是本设备的需要的,%i是声卡的数量,从1-7。字串sound-slot-%i是本设备的需要的,%i代表ALSA拥有的插槽数量,这代表了声卡的数目。这个选项行允许你在模块加载前设置不同的配置选项。字串snd_id让你设置声卡的名字,可以通过/proc/asound/cards文件返回其值。其他还有一些声卡特异性的选项。这些选项可以在INSTALL文件中或者上面找到。

        xyz@localhost#pico /etc/modules.conf

        # ALSA portion
        alias snd-card-0 snd-interwave
        alias snd-card-1 snd-cmipci
        options snd-cmipci id="first" enable_midi="1"
       
        # OSS/Free portion
        alias sound-slot-0 snd-card-0
        alias sound-slot-1 snd-card-1

NB.使用0.9.0rc5 或者更老的驱动的用户请使用:
        options snd-cmipci snd_id="first" snd_enable_midi="1"
为了符合内核表准,"snd_"q前缀已经从"module options"中被删除了。

自动加载OSS/Free模拟

当我们完成配置ALSA本地设备之后,在某种意义上说我们已经完成了,但是你可能同时也需要自动加载ALSA的OSS/Free模拟模块扩展。此时,仅有一个模块并不依赖于其他任何模块,因此必须被单独加载,snd-pcm1-oss.o。字串sound-service-%i-%i是OSS/Free服务所需要的。第一个%i代表插槽数量,例如,卡的数量。而第二个%i代表服务的数量。
        xyz@localhost#pico
        /etc/modules.conf

        # OSS/Free portion - card #1
        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
       
        # OSS/Free portion - card #2 (cmipci)
        alias sound-slot-1  snd-card-1
        alias sound-service-1-0 snd-mixer-oss
        alias sound-service-1-3 snd-pcm-oss
        alias sound-service-1-12 snd-pcm-oss

别名(alias)snd-seq-oss 对第二个设备并不是必须的,因为不惯你有多少设备,你只有一个/dev/sequencer。

.asoundrc文件

你可以在<A href="http://www.alsa-project.org/alsa-doc/doc-php/asoundrc.php?module=intel8x0">这里</A>找到关于该文件的更多信息。

这个文件允许你对你的声卡/设备有更多的高级控制。一些非常有用的应用程序没有了它将无法工作。.asoundrc文件由对你系统中可获得的许多声卡的定义组成。它同时也给了你使用alsa-lib中pcm插件的权限。它还允许你做一些有趣的事,如把你的多块声卡捆绑成一块使用,或者让你使用多声道声卡的多输入输出(multiple i/o)。
下面是一个基本的定义。
在你的用户目录或者root目录下新建一个名为.asoundrc的文件:
        vi /home/xxx/.asoundrc
复制粘贴下面的部分到文件中,保存它。

        pcm.intel8x0 {
           type hw
           card 0
        }

        ctl.intel8x0 {
           type hw
           card 0
        }

链接(略)

用户反馈:(简单意译了,作者的名字一改省略。但是还是表示以下感谢。)

1. 在freshrpms.net上可以找到RPM包。http://freshrpms.net/docs/alsa/
如果针对你特定内核的RPM没有,你可以通过源RPM为你的特定内核重构一个:
        "rpmbuild --rebuild"

2. ALSA intel8x0 的维基百科:http://opensrc.org/alsa/index.php?page=intel8x0

3. 我终于让midi在我的nforce2 apu上正确工作,通过添加下面的行:
options snd-intel8x0 mpu_port=0x330
希望这对勇敢的linux音乐家有用。

4. 当前对本芯片的SP/DIF的支持只在cvs版的ALSA才有。我不知道为什么要这样。但是在/dev/alsa下所需的设备并不会为“发行版”的ALSA所创建,另外混音器(mixer)中也不能找到SPDIF控制。找一个最新的CVS版吧。提示:使用gnome-alsamixer,会让你比使用alsamixer更容易的启用许多SPDIF选项。

5.nfroce2多声道混音alsa音频可以使用下面的配置文件:

### .asoundrc for nforce2 apu


pcm.nforce-hw {
type hw
card 0
}

pcm.!default {
type plug
slave.pcm "nforce"
}

pcm.nforce {
type dmix
ipc_key 1234
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 4096
rate 44100
}
}

ctl.nforce-hw {
type hw
card 0
}

它定义了两个多通道设备分别称为"nforce"和"default"。为"raw"飞混音输出(如jackd,它并不怎么喜欢dmix插件)定义了称为 "nforce-hw" 的设备。
应用实例:
--xmms,你需要xmms-alsa插件,并且配置它使用称为"nforce"的设备。
--(g)mpayer你需要使用如下命令启动:"gmplayer -ao alsa9:nforce"

现在,所有的音频都使用alsa而不用esound或者arts了。希望这个有用。 作者:lars


6. 我成功的在华硕A7N8X Deluxe 板载声卡上实现了 5.1 声道。芯片组被侦测为:
"NVidia nForce2:Realtek ALC650 rev 3" (MB is hardware revision 2.0)
我用的是Gentoo发行版,我编译了alsa-{driver,libs}-0.9.8,并且加入了oss的支持。然后用了gamix(一个好用的gtk alsa mixer)。我取消了Surround, LFE, Master, PCM的静音,并把它们开刀最大。在MB面板后面有:
   2ch,front L+R, 绿色  jack
   2ch,rear  L+R, 紫色  jack
   1ch,bass  L,   橙色  jack
这是默认设置。(这一段看不太懂,所以大概翻译了一下,希望传达出来的一点意思对你们的理解有所提示。)
我用3个立体声功放,带有2,2,1扬声器(没有钱买新的5.1声道的设备啊),所以,同时调整三个功放的声音时就比较郁闷。:-)
作为测试,我使用了一张支持5.1声道的DVD,以ROOT身份进行试验。
# mplayer dvd://1 -v -aid 128 -ao oss -channels 6 2>&1|grep AC3:
检查你是不是有一个类似于下面的输出:
AC3: 5.1 (3f+2r+lfe)  48000 Hz  448.0 kbit/s
如果没有,试一下129, 130... 以获取帮助。(靠!老外写得句子这么口语化,看不懂了!)

享受美妙的音质体验吧!

7. 我有一个华硕的带nforce2芯片组的a7n8x-vm板子,我成功的让所有的音效都通过mplayer的spdif输出。模拟信号和数字信号都可以,所以无论你是在欣赏AC3电影还是听MP3的时候,就不需要对参数进行变化了。有三个参数帮你搞定一切:
mplayer -ao alsa9:spdif -ac hwac3, -srate 48000 somemovie.avi
-ao alsa9:spdif通过spdif输出送出所有的音频
-ac hwac3,如果有ac3流,它就会以raw模式发送,因此你的接收器就可以处理它了,否则,“模拟”回放将被使用。
-srate 48000 把所有的都转换成48kHz,因为声卡不能同国spdif处理44.1kHz的信号,否则将导致其播放速度加快。
完了,尽情享受吧!

8. 我已经可以在我的系统上通过数字spdif实现AC3/DTS输出了。这就意味着我可以用XINE回放DVD而实现杜比数字5.1声道(Dolby Digital 5.1 sound)了。
我有一个运行着getoo linux的Shuttle SN41G2系统。主板是nforce2芯片组,和intel8xO的声音芯片。我还订购了额外的spdif扩展,以提供4个数字接口(1个光纤接入,一个光线输出,一个同轴电缆输入,一个同轴电缆输出)。我运行的是CVS版的alsa-driver和alsa-libs,另外和以下的.asoundrc(基于上面的Lars G写得那份)。只在slave设备的pcm值上有一个很小的改动。
pcm.nforce-hw {
type hw
card 0
}

pcm.!default {
type plug
slave.pcm "nforce"
}

#0,0 is analog out (i.e. headphone socket on the shuttle), and 0,1 is
#spdif out.

pcm.nforce {
type dmix
ipc_key 1234
slave {
pcm "hw:0,1"
period_time 0
period_size 1024
buffer_size 4096
rate 44100
}
}

ctl.nforce-hw {
type hw
card 0
}

Everything else is as per the intel8xO sound card matrix.(看不懂,不翻了)

提示:
----
o) KDE
默认状态下,KDE是使用artsd来混音的,但是因为我们使用了dmix插件,那就不再需要它了。artsd通过阻止其他任何程序发声的方式,掌管着声音设备(除非那些程序有一个artsd的插件),这样就导致了像xmms,xine,甚至alsapalyer运行时挂起

通过上面的.asoundrc文件,你就可以进入KDE,加载控制中心,关掉artsd,而所有的声音都工作正常。

o) 用aplay和KDE时的噪音和爆音干扰
我发现自己的.asoundrc文件在用aplay播放声音提示时会产生恼人的爆音和噼啪声。(KDE使用aplay来产生声音提示,例如登录和注销的声音)。这个问题似乎是因为cvs版的alsa-utils的问题。所以我反安装了这些之后,又装回了旧版的(我用gentoo的emerge,我估计是装载了0.92版的)。(编者按-原文是9.2版的。但是alsa现在还没有到2.9呢,哪来的9.2版啊。是我错了还是作者错了呢?)

9. 因为某种原因,ALSA不能在KDE中被正确的侦测。请确认是不是使用了artsd输出。控制中心-〉系统和媒体-〉多媒体-〉声音I/O,修改声音方案为:Threaded Open Sound System。

10. CIMLinux给的解决方案在我的华硕A7N8X Deluxe上工作良好。
但是在我KDE下回放,最大化/最小化窗口的时候会有一个跳过声音(其他的PCI活动都会产生同样的结果 - 我机器上还在使用PCI的图形加速卡)。安如下方法加入"buffer_size"值进行挽救。
slave {
        pcm "hw:0,1"
        period_time 0
        period_size 1024
        buffer_size 32768
        rate 48000
      }
(这段位于dmix插件的同一部分。)
较小的buffer_size可能会使其工作正常。因为似乎ALSA在使用SP/DIF输出的时候会强行转换为48000Hz,但是我为了清晰,还是修改它了。

11. 我最终也使得alsa成功的运行在我的微星nforce 1 k7n420主板上。Had to drop the period in half.(长话短说了。——这么烦不知是不是合适。)
pcm.nforce-hw {
type hw
card 0
}

pcm.!default {
type plug
slave.pcm "nforce"
}

pcm.nforce {
type dmix
ipc_key 1234
slave {
pcm "hw:0,0"
period_time 0
period_size 512
buffer_size 4096
rate 44100
}
}

ctl.nforce-hw {
type hw
card 0
}

12. 用alsamixer(而不是用kMix)设置我的ALSA录音。

设置:        NForce MB, Mandrake9.2, thac's mm kernel etc,
        Alsa, Jack, Rosegarden Audio tracks
(什么东西,看不懂啦。我对音响没有研究。)
要音频录音你需要打开“抓取”("capture"),然而,用KMIX工作并不很好。作为替代方案,你需要使用alsamixer(在shell下)。当我使用kmix的时候,我立刻得到了一个声音反馈。
但是我在用alsamixer的时候,一切正常。
(对于我,抓取是在控制面板上的第八个。)
……
Simple mixer control 'Capture',0
  Capabilities: cvolume cswitch cswitch-joined
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 15
  Front Left: Capture 0 [0%] [on]
  Front Right: Capture 0 [0%] [on]
……
现在Jack-Rack可以工作了,我也可以在玫瑰园录制音轨了。

13. Dell Inspiron 1100 本本,i845芯片组:
启用ALSA多音频流,编辑/etc/asound.conf。
文件应该包含以下内容:
#/etc/asound.conf start:
pcm.!default {
  type plug
  slave.pcm "dmixer"
  }
pcm.dsp0 {
  type plug
  slave.pcm "dmixer"
  }
pcm.dmixer {
  type dmix
  ipc_key 1024
slave {
  pcm "hw:0,0"
  period_time 0
  period_size 1024
buffer_size 8192
  rate 44100
  }
bindings {
  0 0
  1 1
  }
  }

ctl.dmixer {
  type hw
  card 0
  }
#end.
然后,告诉你的声音程序以ALSA作为默认输出设备。这样你就可以实现多音频流,而不会发生声音设备被占用之类的问题了。

14. 我根据上面指导做了,但是还是不能使我的nforce2 (shuttle sn41g2)用spdif输出。最后,我cat了 /proc/asound/devices,发现狮子音频回放在我的系统里居然是0,2,而不想上面的例子中列出的那样。可能是因为0,x会随系统的变化而变化吧。无论如何,我希望这对其他人有所帮助。

15. EPOX 8RDA3+, CMedia 声音芯片组
Alsa 1.04 i8x0 驱动工作正常。但是在我搜寻了半天之后,我发现,除了要解除PCM的静音之外,还必须解除IEC958 Capture
Monitor的静音,否则还是不会有任何声音的。
希望对你们有所帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表