跳转至内容

在 Linux 上配置声音/硬件地址

来自维基教科书,开放世界中的开放书籍

本文档将教你如何查找地址并确认其工作。

查找硬件地址

[编辑 | 编辑源代码]

使用 aplay

[编辑 | 编辑源代码]

ALSA 的标准实用程序 aplay 可以告诉你它准备使用的设备的硬件地址。只需向 aplay 提供--list-devices参数。

$ aplay --list-devices
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA ATI HDMI], device 3: ATI HDMI [ATI HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

注意,对于此卡,物理地址的表示方式为hw:0,3. 虽然设备名称是HDMI

使用 /proc

[编辑 | 编辑源代码]

这里我们将使用 proc 查询内核以获取信息。

通过查看虚拟文件/proc/asound/cards你的内核将显示它已准备使用的卡的设备名称。如果你的卡未在此列出,则你的内核不支持它。设备名称可以在方括号中找到。

$ cat /proc/asound/cards

设备的输出示例HDMI可能是

 0 [HDMI           ]: HDA-Intel - HDA ATI HDMI
                      HDA ATI HDMI at 0xfbee8000 irq 19

内核应该为每张卡在/proc/asound. 中创建了一个虚拟目录。与卡相关的目录将以 'card' 为前缀,并以卡的数字为后缀,例如,card0、card1 等;即我们示例中的 '0'。

在这些目录中,你会发现一个简单的文件列表。

$ tree /proc/asound/card0/
/proc/asound/card0/
|-- codec#0
|-- id
|-- oss_mixer
`-- pcm3p
    |-- info
    `-- sub0
        |-- hw_params
        |-- info
        |-- prealloc
        |-- prealloc_max
        |-- status
        `-- sw_params

2 directories, 10 files

最重要的文件是pcm3p/info, 通过检查此文件,我们可以完成对声音设备硬件坐标的搜索。

$ cat /proc/asound/card0/pcm3p/info
card: 0
device: 3
subdevice: 0
stream: PLAYBACK
id: ATI HDMI
name: ATI HDMI
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1

写入硬件地址

[编辑 | 编辑源代码]

现在你了解了有关你的卡的基本知识!具体来说,你需要 卡号设备号。这两个数字通常在 ALSA 硬件表示法中以hw:CARD,DEVICE的形式出现,这完全取决于内核检测它们的顺序。

测试地址

[编辑 | 编辑源代码]

首先,确保你所要测试的设备没有静音!你可以随时使用以下命令来测试默认卡的功能

 cat /dev/urandom | aplay

这将用随机且完全无关的数据轰炸你的卡。你的卡将以声音的形式(类似于调制解调器噪音)将这些数据呈现给你。要停止该噪音,请按 ^D(按住 Control 键并按下 D 键)。或者,你可以使用 dd 命令进行闪存测试。

 dd if=/dev/urandom count=5 | aplay

假设,如果你正在阅读本教程,则你的声音不起作用。你可能想要显式地测试一个声音设备,或者你可能遇到默认设备的问题,并且想要尝试另一个设备。无论你有什么问题,aplay 的 -D 参数都可以做到这一点。

 cat /dev/urandom | aplay -D hw:0,3 ## Where 0,3 is your hardware's coordinates

如果你听到声音,那就尽情享受吧 - 你的卡可以正常工作,并且与你的操作系统完全兼容。

华夏公益教科书