在 Linux 上配置聲音/硬體地址
本文件將教你如何查詢地址並確認其工作。
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/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
如果你聽到聲音,那就盡情享受吧 - 你的卡可以正常工作,並且與你的作業系統完全相容。