Linux設(shè)備配置之聲卡配置
Linux下設(shè)備的配置過程是指在檢測到設(shè)備類型、設(shè)備當(dāng)前工作參數(shù)等信息之后,使用這些信息來配置設(shè)備的驅(qū)動程序,工作方式等,(設(shè)備的檢測過程參見 《如何在Linux下實現(xiàn)硬件的自動檢測》)。要完成這樣的任務(wù),需要做兩方面的工作:
其一是需要一個詳盡的設(shè)備信息文件,這個文件描述了設(shè)備標(biāo)識、與設(shè)備標(biāo)識對應(yīng)的設(shè)備驅(qū)動程序、設(shè)備配置參數(shù)(設(shè)備選項)、設(shè)備設(shè)置的詳細(xì)描述、設(shè)備配置方法描述、設(shè)備對應(yīng)的別名、設(shè)備的主設(shè)備號等信息。
其二是需要根據(jù)設(shè)備的類型,以及安裝的linux系統(tǒng)版本(不同的Linux發(fā)行版對于同一設(shè)備的配置腳本文件存在差異),設(shè)置設(shè)備對應(yīng)的配置腳本文件。
聲卡配置過程
1. 內(nèi)核聲卡驅(qū)動程序的配置
現(xiàn)在正在使用的聲卡主要有PCI和ISA兩種。在linux系統(tǒng)下,對這兩種類型聲卡的配置過程實際上是生成配置文件/etc/modules.conf,建立正確的設(shè)備別名和聲卡設(shè)備驅(qū)動程序的對應(yīng)關(guān)系。在正確的設(shè)置驅(qū)動模塊之后,使用混音器程序設(shè)置聲卡的輸出音量。
若您的聲卡是ISA PnP類型的,那么如果這塊聲卡在dos(windows)系統(tǒng)下也工作良好,那么您可以先記住聲卡的工作參數(shù),包括IRQ、DMA和I/O。一般而言,在linux系統(tǒng)下應(yīng)該使用和DOS下一樣的參數(shù)。
如果您不知道它的工作參數(shù),您可以通過/proc/isapnp獲得聲卡的配置空間,它包括dma、ioport和irq等信息。然后您可以通過檢查/proc/interrupts,/proc/ioports和/proc/dma文件獲知系統(tǒng)中空閑的irq、ioports和dma等信息,由此您可以選擇合適的聲卡配置參數(shù)。
在2.4.x內(nèi)核中,實現(xiàn)了ISA PnP支持,同時一部分聲卡驅(qū)動程序現(xiàn)在也支持無需使用isapnp工具完成自動檢測和配置了。關(guān)于聲卡設(shè)備的詳細(xì)信息您也可以查看內(nèi)核文檔/usr/src/linux/Documentation/sound/中的文件。
對于PCI聲卡而言,它們的驅(qū)動程序包含了自動檢測過程,所以您只需要插入正確的驅(qū)動模塊,聲卡一般就能正常工作了。
在聲卡模塊被***次引用時,內(nèi)核會要求加載相應(yīng)的驅(qū)動模塊。與聲卡模塊對應(yīng)的設(shè)備別名是sound-slot-0(0表示系統(tǒng)中的一個聲卡,以此類推)。例如,在/etc/modules.conf中加入:
alias sound-slot-0 esssolo1
就配置了ESS Solo-1聲卡。這條語句表示在需要聲卡時,自動加載模塊esssolo1。
有時加載了sound-slot-0對應(yīng)的設(shè)備模塊之后,并不能使聲卡的所有功能生效。這時設(shè)備就會請求訪問sound-service-0-n別名。n代表了不同的設(shè)備:
編號 對應(yīng)的設(shè)備
0 混音器(Mixer)
2 MIDI
3,4 DSP
這時就要求您設(shè)置正確的聲卡服務(wù)模塊別名,這樣聲卡才能夠正常工作。聲卡對應(yīng)的設(shè)備文件:
設(shè)備文件名 設(shè)備描述
/dev/audio 正常連接到/dev/audio0
/dev/audio0 sun工作站兼容的聲音設(shè)備(僅部分實現(xiàn),不支持sun ioctl接口,僅支持u-law編碼)
/dev/audio1 第二個聲音設(shè)備(安裝多個聲卡時使用)
/dev/dsp 正常連接到/dev/dsp0
/dev/dsp0 ***個數(shù)字采樣設(shè)備
/dev/dsp1 第二個數(shù)字采樣設(shè)備
/dev/mixer 正常連接到/dev/mixer0
/dev/mixer0 ***個聲音混音器
/dev/mixer1 第二個聲音混音器
/dev/music 高級序列化接口
/dev/sequencer 底層MIDI,F(xiàn)M和GUS存取
/dev/sequencer2 正常連接到/dev/music
/dev/midi00 ***個原MIDI端口
/dev/midi01 第二個原MIDI端口
/dev/midi02 第三個原MIDI端口
/dev/midi03 第四個原MIDI端口
/dev/sndstat 顯示聲音驅(qū)動程序的狀態(tài)
pc揚(yáng)聲器提供下列設(shè)備:
/dev/pcaudio 等價于/dev/audio
/dev/pcsp 等價于/dev/dsp
/dev/pcmixer 等價于/dev/mixer
您可以直接將聲音文件送入對應(yīng)的設(shè)備,比如,將.au聲音文件通過將其送入/dev/audio中播放,原始采樣也可被送入/dev/dsp。
cat sample.su > /dev/audio
但是這樣做一般效果較差,播放時應(yīng)采用play命令。對于wavplay和vplay(snd-util包)會以***的效果播放wav文件,但是它們不能識別微軟adpcm壓縮的wav文件。若手動設(shè)置爭取正確的參數(shù)之后,splay用于播放大多數(shù)聲音文件。
讀/dev/audio和/dev/dsp返回的采樣數(shù)據(jù)可以重定向到一個文件。vrec可以使這個過程更容易??赡苄枰粋€混音器程序選擇適當(dāng)?shù)妮斎朐O(shè)備。
2. ALSA聲卡驅(qū)動程序的配置
對于聲卡驅(qū)動程序,除了內(nèi)核自帶的驅(qū)動程序之外,您還可以使用Advanced linux Sound Architecture(ALSA,http://www.alsa-project.org/)提供的驅(qū)動程序。它支持一系列主流聲卡,同時它和內(nèi)核的聲音結(jié)構(gòu)互相兼容,在某種程度上,可以說是內(nèi)核的聲卡驅(qū)動模塊的補(bǔ)充。
ALSA的聲卡驅(qū)動程序的一般命名規(guī)則是snd-card-
若與需要linux內(nèi)核聲音驅(qū)動的向后兼容性,您還需要兩個模塊snd-pcm-oss和snd-mixer-oss。對于amixer設(shè)置的多個混音器,它們都是針對不同的設(shè)備的。比如CD通道的設(shè)置是針對CD播放器的。而很多應(yīng)用程序,如象mpg123,xmms,realplayer,都要依賴PCM通道的設(shè)置。MIC代表麥克風(fēng)。不同的Gain部分對于不同的使用能提供特別的增益。
缺省情況下ALSA靜音所有的輸出。為了獲得聲音,必須解除主音量和PCM音量的靜音。
amixer -c 0 sset 'Master',0 100%,100% unmute
amixer -c 0 sset 'PCM ',0 100% unmute
選項包括mute,unmute,capture,nocapture,rec,norec,數(shù)字或left:right。amixer不帶參數(shù)運行時,返回聲卡上所有通道的設(shè)置情況。
為了在每次插入聲卡驅(qū)動模塊時,都打開靜音,您可以在/etc/modules.conf加入下列語句:
post-install snd-card-sb16 amixer -c 0 sset 'Master',0 100%,100% unmute && amixer -c 0 sset 'PCM ',0 100% unmute
在成功插入了alsa聲卡模塊之后,系統(tǒng)會出現(xiàn)/proc/asound目錄,這個目錄描述了聲卡的工作情況,以及創(chuàng)建的設(shè)備文件。
在您加載snd-pcm-oss設(shè)備模塊之后,你也能使用與oss兼容的方式存取聲卡,這時如下的映射會被完成:
ALSA設(shè)備 OSS設(shè)備 次設(shè)備號
/dev/snd/pcmC0D0 /dev/audio0(/dev/audio) 4
/dev/snd/pcmC0D0 /dev/dsp0(/dev/dsp) 3
/dev/snd/pcmC0D1 /dev/adsp(/dev/adsp) 12
/dev/snd/pcmC1D0 /dev/audio1 20
/dev/snd/pcmC1D0 /dev/dsp1 19
/dev/snd/pcmC1D1 /dev/adsp1 28
/dev/snd/pcmC2D0 /dev/audio2 36
/dev/snd/pcmC2D0 /dev/dsp2 35
/dev/snd/pcmC2D1 /dev/adsp2 44
對于/dev/mixer設(shè)備,要加載snd-mixer-oss,可以保證和老的oss混音器的兼容性。如果您插入了上述設(shè)備之后,聲音系統(tǒng)仍無法正常工作,您可以運行snddevices命令,建立正確的設(shè)備文件。
由于為使ALSA正常工作,需要設(shè)置大量的設(shè)備別名,下面就給出一個/etc/modules.conf的例子,它能夠完成ESS Solo1聲卡的自動配置工作。其他的ALSA設(shè)備的設(shè)置也基本與此聲卡相同。
# 設(shè)置ALSA設(shè)備的主設(shè)備號,它固定為116
alias char-major-116 snd
# 設(shè)置OSS設(shè)備的主設(shè)備號,它固定為14,這使得ALSA復(fù)用OSS設(shè)備
alias char-major-14 soundcore
# ALSA設(shè)備別名
alias sound-card-0 snd-card-es1938
# OSS設(shè)備別名
alias sound-slot-0 sound-card-0
# 安裝不同的聲卡服務(wù)
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 snd-minor-oss-12 snd-pcm-oss
# 運行amixer命令,打開聲音輸出
post-install snd-card-es1938 amixer -c 0 sset 'Master',0 100%,100% unmute && amixer -c 0 sset 'PCM ',0 100% unmute
大家看了上文自己就能在Linux下配置聲卡了,希望對大家有所幫助。
【編輯推薦】
- Ubuntu VMware檢查硬件聲卡驅(qū)動管理安裝
- 操作手冊:Linux系統(tǒng)安裝聲卡驅(qū)動
- AC97聲卡如何在Linux操作系統(tǒng)中進(jìn)行驅(qū)動
- Linux操作系統(tǒng)下安裝聲卡驅(qū)動的方法總結(jié)
- 11.4.1 在Windows 98虛擬機(jī)中安裝聲卡驅(qū)動程序
- 17.4.2 用API函數(shù)控制聲卡音量大小
- 圖文并茂 Linux操作系統(tǒng) 使用技巧大全
- 紅帽企業(yè)級Linux RHEL 5.6發(fā)布 完全支持Ext4