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

















