下一页 上一页 目录

2. 集成声卡

2.1 ALSA 与 AC'97 驱动

我成功地使用了这两种解决方案。然而,在开发一个语音合成系统(我参与了一个小型辅助功能项目)时,我注意到内核驱动似乎无法重采样,而 Alsa 可以完美地做到这一点。

2.2 Alsa

获取 ALSA 驱动程序

因此,我们将编译来自 ALSA 的最新源代码,这应该也适用于所有其他发行版... 只有内核源代码会改变,因为 Mandrake 使用特定的补丁。

您可以从您的发行版或 https://linuxkernel.org.cn 获取您的内核源代码

这里可以找到 Mandrake 8.0 中使用的内核源代码

ftp://ftp.univ-savoie.fr/pub/Linux/Mandrake/8.0/i586/Mandrake/RPMS/kernel -source-2.4.3-20mdk.i586.rpm

(链接似乎已损坏,我希望我制作了一个副本以备不时之需,但这就是该发行版的问题,镜像不会保留足够长的时间)

并从 ALSA 获取 tarball

ftp://ftp.alsa-project.org/pub/driver/alsa-driver-0.9.0beta10.tar.bz2

安装

安装您的内核源代码,在我的情况下

rpm -ivh kernel-source-2.4.3-20mdk.i586.rpm

然后解压缩 alsa 驱动程序

bzip2 -d alsa-driver-0.9.0beta10.tar.bz2 && tar -xvf alsa-driver-0.9.0beta10.tar

编译它们并安装它们,并创建设备文件

cd alsa-driver-0.9.0beta10 && make install && ./snddevices

编辑 /etc/modules.conf 以设置所有内容,并向其中添加以下行

alias char-major-116 snd
alias char-major-14 soundcore
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
alias snd-card-0 snd-card-intel8x0
警告:Christian Cardinale rf.libertysurf@elanidrac.naitsirhc 报告说他必须将 'snd-card-intel8x0' 更改为 'snd-intel8x0',这与我的 Debian 系统上的情况一致,我已经记不清了,但我认为这一个是 mandrake 名称,如果它不起作用,就使用另一个,好吗?

2.3 Alsa 的 Debian 方式

在编写此 HOWTO 之后的一段时间,我切换到了 Debian,并想给出一些关于它的说明:事情可能会根据您使用的版本略有变化,我使用 Debian sarge,目前是 testing 版本。

使用带有预编译内核的 Debian 软件包

首先,您可以直接下载适当的预编译 alsa 模块:找出您正在使用的内核

uname -r

2.4.20-3-k7(对于 woody/stable 应该是 2.4.18-k7 或类似的)

apt-get install alsa-modules-2.4.20-3-k7

该声卡是 “intel8x0 (PCI: Intel i810/i820/i830/i840/MX440 集成音频)”

您还应该安装推荐的软件包 alsa-utils

apt-get install alsa-utils

现在,对照此 HOWTO 后面给出的文件检查文件 /etc/alsa/modutils/0.9。可能还需要以 root 身份运行 update-modules 以确保这些行进入 /etc/modules.conf,尽管软件包安装可能本身就完成了。

使用 Debian 内核源代码包

当我获得 usb adsl 调制解调器时,我被迫重新编译我的内核。(make-kpkg binary --initrd 是您有一天想要关注的事情,但这与主题无关)

我假设您至少完成了以下步骤

安装 alsa 源代码和两个有用的软件包:apt-get install alsa-source alsa-utils alsa-base debconf 会问您以下问题

Say Yes if you want to build ALSA driver with ISA PnP version.
If your computer doesn't support ISA PnP, you may say No. 
Build ALSA driver with ISA PnP?

您可以安全地选择“否”

Say Yes if you want to build ALSA driver with debugging code.
Build ALSA driver with debugging code?

我们也不需要那个,所以选择“否”

You can choose cards to be built by selecting cards you want.
Each selection is a same name to a option of configure script '--with-cards'.
The following list are short descriptions of the options to show what they mean.
Select cards to be built.

选择声卡 intel8x0 (PCI: Intel i810/i820/i830/i840/MX440 集成音频) 并退出。

cd /usr/src

tar xzvf alsa-driver.tar.gz

cd modules/alsa-driver

./configure

make && make install

现在,对照以下文件检查文件 /etc/alsa/modutils/0.9。

/etc/alsa/modutils/0.9

我只记得将 cards_limit 从 4 更改为 1,以防止警告,对它的任何修改都应该在之后运行 update-modules 以重新生成 /etc/modules.conf

### DEBCONF MAGIC
# This file was automatically generated by alsa-base's debconf stuff

alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-intel8x0
alias sound-slot-0 snd-card-0 
options snd major=116 cards_limit=1 device_mode=0660 device_gid=29 device_uid=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

2.4 内核方法:AC'97 驱动

如果您使用的是 2.4 或更高版本的内核,您可以使用 Audio Codec '97 (AC'97) 声卡驱动程序,因为集成声卡是 AC'97 兼容的。

您可以使用内核模块启用您的声卡,事实上,您应该能够直接使用该模块,甚至无需重新编译您的内核,因为大多数 GNU/Linux 发行版已经拥有它,只需键入

modprobe i810_audio

您应该在您的 syslog 中看到类似这样的内容

  Intel 810 + AC97 Audio, version 0.21, 21:31:04 Apr 15 2002
  i810: SiS 7012 found at IO 0xd800 and 0xdc00, IRQ 11
  i810_audio: Audio Controller supports 2 channels.
  ac97_codec: AC97 Audio codec, id: 0x414c:0x4710 (ALC200/200P)
  i810_audio: AC'97 codec 0 supports AMAP, total channels = 2

或键入

dmesg | less 并滚动查看内核消息。

如果一切顺利,您可以将 i810_audio 添加到 /etc/modules,以便它在每次启动时自动加载

echo "i810_audio" >> /etc/modules

或者您喜欢单内核(无模块),请按照上述步骤安装内核源代码,并将 Sound card supportIntel ICH (i8xx) audio support 设置为 Y,编译您的内核,安装,重启,现在您的集成声卡就可以工作了。

如果您不知道如何编译内核,请阅读 Kernel HOWTO,这很容易,您将获得针对您系统优化的内核,而且您还将了解一些关于使用源代码的知识(是的,您已经在利用它了 :-)


下一页 上一页 目录