跳转到内容

Linux/ALSA 声卡配置与故障排除

来自 Wikibooks,开放书籍,开放世界

错误和解决方案

[编辑 | 编辑源代码]

内核缺少必要的模块

[编辑 | 编辑源代码]

表现为

  • 虚拟目录/proc/asound不存在
  • 命令aplay -l返回没有找到声卡
  • 声卡在一些硬件检测机制下出现,例如 lspci

有时,这是由于在 dist-upgrade 中选择性地删除内核等模块,而没有删除相应的内核模块导致的。

解决方法

[编辑 | 编辑源代码]

将必要的模块添加到你的内核中。在 Ubuntu 中,你可以通过以下命令升级到最新的内核和模块

 $ sudo apt-get install linux-generic

指定的声卡无效

[编辑 | 编辑源代码]

如果你遇到以下错误,则意味着你正在尝试使用一个不存在或错误的设备

$ cat /dev/urandom | aplay
ALSA lib pcm_hw.c:1207:(_snd_pcm_hw_open) Invalid value for card
aplay: main:546: audio open error: No such file or directory

解决方法

[编辑 | 编辑源代码]

这可以通过明确指定设备来解决。

 cat /dev/urandom | aplay -D hw:0,3

样本错误

[编辑 | 编辑源代码]

这是一个比较复杂的问题。本质上,硬件期望音频样本采用特定的数据类型,而你提供的类型错误。

 aplay: set_params:901: Sample format non available

解决方法

[编辑 | 编辑源代码]

指定样本格式,或修改 ALSA 配置文件中的速率。

 cat /dev/urandom | aplay -f S16_LE ## Where S16_LE is your desired rate

无声道道数

[编辑 | 编辑源代码]

如果你没有向 ALSA 提供你想要输出的声道数,你将会收到以下错误

 aplay: set_params:901: Channels count non available

解决方法

[编辑 | 编辑源代码]

指定你想要输出的声道数。建议使用两个声道进行故障排除。

 cat /dev/urandom | aplay -c 2 ## Two channels is stereo sound
华夏公益教科书