首先說一下alsa的配置文件。alsa的配置文件是alsa.conf位於/usr/share/alsa目錄下,通常還有/usr/share/alsa/card和/usr/share/alsa/pcm兩個子目錄用來設置card相關的參數,別名以及一些PCM默認設置。以上配置文件,我等凡夫從不用修改,修改它們是大神的工作。
還有兩個配置文件/etc/asound.conf和~/.asoundrc,它倆有效是因爲它倆被alsa.conf引用。以下是alsa.conf的原文:
- # pre-load the configuration files
- @hooks [
- {
- func load
- files [
- {
- @func concat
- strings [
- { @func datadir }
- "/alsa.conf.d/"
- ]
- }
- "/etc/asound.conf"
- "~/.asoundrc"
- ]
- errors false
- }
- ]
然後說我遇到的問題。爲了提高本人的臺式機的性能,在沒有換主板的情況下升級了CPU和顯卡。CPU沒有造成什麼影響,顯卡是淘來的微星R6750暴雪1G,芯片爲AMD Radeon HD 6750。由於它提供了一個HDMI接口,該接口還支持音頻輸出,於是麻煩出現了,在gentoo下,聲音不走板載的HDA VIA VT82xx集成聲卡,不知道走到哪裏出去了,反正我的耳機沒有聲音。
找了好多文檔,終於然我弄明白怎麼回事了。
首先,如果機器有多於一個聲卡,可以用下面的命令顯示出來:
- $ cat /proc/asound/cards
- 0 [Generic ]: HDA-Intel - HD-Audio Generic
- HD-Audio Generic at 0xfe9bc000 irq 25
- 1 [VT82xx ]: HDA-Intel - HDA VIA VT82xx
- HDA VIA VT82xx at 0xfeafc000 irq 17
- $ aplay -l
- **** List of PLAYBACK Hardware Devices ****
- card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
- Subdevices: 1/1
- Subdevice #0: subdevice #0
- card 1: VT82xx [HDA VIA VT82xx], device 0: AD1986A Analog [AD1986A Analog]
- Subdevices: 1/1
- Subdevice #0: subdevice #0
- #
- # defaults
- #
- # show all name hints also for definitions without hint {} section
- defaults.namehint.showall off
- # show just basic name hints
- defaults.namehint.basic on
- # show extended name hints
- defaults.namehint.extended off
- #
- defaults.ctl.card 0
- defaults.pcm.card 0
- defaults.pcm.device 0
- defaults.pcm.subdevice -1
- ……
- ……
- ……
所以defaults會默認匹配card number和device number比較小的聲卡。比如我這裏(看上面aplay -l的輸出顯示),就會匹配到HDMI 0上。
如果要修改,則修改/etc/asound.conf或~/.asoundrc。比如我要把defaults匹配到card 1,device 0上,則添加一下幾行:
- $ sudo vim /etc/asound.conf
- defaults.pcm.card 1
- defaults.pcm.device 3
- defaults.ctl.card 1
參考文檔:
[csdn blog]alsa config
[csdn blog]理解和使用Alsa的配置文件
[arch
wiki]設置默認聲卡