1、首先介紹一下什麼是ALSA ;
Advanced Linux Sound Architecture 的簡稱爲 ALSA ,譯成中文的意思是先進的Linux聲音架構(這是google翻譯的);一談到架構就有點範圍太大了,因此ALSA不只僅是包括對聲卡的支持和驅動;
ALSA具備以下特徵:
一、對全部音頻接口的高效支持,從普通用戶的聲卡到專業級別多路音頻設備;
二、聲卡驅動徹底模塊化設計;
三、SMP and thread-safe design.
四、開發庫(alsa-lib) 爲程序設計提供了簡單、方便,而且擁有有高級的效果和功能;
五、支持舊版本的OSS API 結口,能爲大多數的OSS應用程序提供兼容;OSS是一個商業性的驅動,OSS有一個簡裝本的代碼已經移入內核和ALSA,其中alsa-oss就是;OSS公司聽說目前已經並不存在了;咱們沒有必要用OSS 公司提供的商業版本;用ALSA和OSS簡裝版足夠
2、查看 ALSA 版本,若是最新,就不用從新安裝了,仔細查看一下配置吧。
$ alsactl -vlinux
或者:ubuntu
cat /proc/asound/version
若是打印出: alsactl version 1.0.19,那麼 ALSA 已是最新了。若是不是最新就要先安裝最新的alsa驅動。
第一步,首先中止當前的ALSA服務:
sudo /etc/init.d/alsa-utils stop
第二步,卸載原有驅動
sudo apt-get --purge remove linux-sound-base alsa-base alsa-utils
第三步,(*因爲在刪除alsa-utils的時候會同時刪除gdm和ubuntu-desktop,因此得從新安裝,不然會沒法進入桌面,請你們不要漏過此步)
sudo apt-get install gdm ubuntu-desktop
編譯安裝alsa
第一,在 ALSA 官方網站 http://www.alsa-project.org 上,下載最新的 ALSA 驅動,用tar -jxvf alsa-*-1.0.19.tar.bz2和tar xvf alsa-*.1.0.19.tar解壓縮。
$ wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.19.tar.bz2
$ wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.19.tar.bz2
$ wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.19.tar.bz2
第二,查看本身的內核版本和聲卡解碼芯片是否被支持。
查看支持的內核版本
$ less alsa-driver-1.0.19/SUPPORTED_KERNELS
查看本身聲卡解碼芯片(若是系統不能識別聲卡,可能沒法由下面兩個查到,那麼查看你電腦配置單吧)
$ tail -2 /proc/asound/oss/sndstat
或
$ head -1 /proc/asound/card0/codec#0
好比個人 ONDA A69G 就顯示的是下面這個
0: Realtek ALC655 rev 0
在 alsa-driver-1.0.15/alsa-kernel/Documentation/ALSA-Configuration.txt 中查找本身聲卡解碼芯片對應的 model 名字,好比個人 alc655 對應的就是:
- alc_jack For ALC65x, turn on the jack sense mode
第三,準備好編譯環境,安裝 gcc, libc 等等工具,還須要下載 Linux header,這是編譯 ALSA 驅動必須的。
$ sudo apt-get install build-essential libncurses5-dev gettext kernel-package gcc make libc6 libc6-dev
$ sudo apt-get install linux-headers-`uname -r`
第四,編譯安裝,通常的 ./configure, make, make install 流程。注意的是驅動編譯時候須要 module 名字,就是第三步中找到的 modle 對應的 module 名字,去掉 snd-便可。好比個人 alc655 對應的module 是 snd-atiixp那麼 configure 時候須要加上 --with-cards=atiixp。編譯安裝時遇到問題請仔細閱讀源碼附帶的 INSTALL。
$ cd alsa-driver-1.0.19
$ ./configure --with-cards=MODULE_NAME 個人是snd-atiixp
$ make
$ sudo make install
$ cd ../alsa-lib-1.0.19
$ ./configure
$ make
$ sudo make install
$ cd ../alsa-utils-1.0.19
$ ./configure
$ make
$ sudo make install
第五,配置 ALSA。
若是之前系統中沒有使用 ALSA 驅動,可能須要 alsaconf 來配置,還要將 ALSA 加入內核模塊中,我沒有經驗;
若是系統原來已經有 ALSA 驅動,可是沒有識別聲卡或者聲音驅動有問題。那麼理論上只須要在兩個地方作改動:
添加 /etc/modprobe.d/sound 文件,內容爲:
alias snd-card-0 snd-MODULE_NAME
alias sound-slot-0 snd-MODULE_NAME
好比個人就是:
alias snd-card-0 snd-atiixp
alias sound-slot-0 snd-atiixp
在 /etc/modprobe.d/alsa-base 中最後一行添加:
options snd-MODULE_NAME model=MODEL_NAME
第六,從新啓動查看效果,可使用 alsamixer 調節聲音設置。c#