[作者] dsj [头衔]
论坛坛主 [经验]
220862 [等级]
大主帅 [发帖]
15642 [回帖]
1366 [登陆]
7956
[发表时间]
2005/10/18 15:05:09 [楼主]
|
|
标题:
ALSA安装配置指南(Official)(适用于Intel snd-intel8x0)
|
http://www.alsa-project.org/alsa-doc/doc-php/template.php?company=Intel&card=.&chip=440MX%2C+i810%2C+i810%2C+i810E%2C+i820%2C+i820&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 } 链接(略)
分享到:
|
我的QQ群:500人财富群11470502;投资群5920530;资源群6648659;交友群5713862;娱乐群6925950。 我的博客:http://104508155.qzone.qq.com/
|
|
[作者]dsj [头衔]论坛坛主 [经验]220862 [等级]大主帅
[发帖]15642 [回帖]1366 [登陆]7956 [发表时间]2005/10/18 15:05:32 [1楼]
|
|
用户反馈:(简单意译了,作者的名字一改省略。但是还是表示以下感谢。) 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 }
|
我的QQ群:500人财富群11470502;投资群5920530;资源群6648659;交友群5713862;娱乐群6925950。 我的博客:http://104508155.qzone.qq.com/
|
|
|
[作者]dsj [头衔]论坛坛主 [经验]220862 [等级]大主帅
[发帖]15642 [回帖]1366 [登陆]7956 [发表时间]2005/10/18 15:05:52 [2楼]
|
|
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的静音,否则还是不会有任何声音的。 希望对你们有所帮助。
|
我的QQ群:500人财富群11470502;投资群5920530;资源群6648659;交友群5713862;娱乐群6925950。 我的博客:http://104508155.qzone.qq.com/
|
|
|
[作者]pylpyl1 [头衔]认证会员(助) [经验]899 [等级]三等兵
[发帖]29 [回帖]51 [登陆]136 [发表时间]2006/2/15 23:02:06 [3楼]
|
|
|
|
|