徹底解決 Ubuntu 10.04 對部分音效卡不支援或耳機無聲的問題
我的一位朋友的筆記本在我的推薦下安裝了 Ubuntu 系統。最初他安裝的是 9.10 版本,WIFI 支援有些問題。隨後他升級到了 10.04 版本,WIFI 正常了,可是耳機插入後卻沒有聲音,只能使用自帶揚聲器。
為了解決這個問題,我今天從十一點開始研究,到晚上 19 點才成功搞定。
症狀描述
Ubuntu 10.04 系統,Thinkpad X100e 筆記本,使用 Conexant 80925(貌似是這個數字,如果不是也不要緊,所有 Conexant 晶片解決方法相同)晶片的音效卡。插入耳機後揚聲器繼續發生,耳機沒有聲音。
請注意:如果你只是為了解決這個問題,請跳過前面的嘗試,直接閱讀最終的解決方案。不過,閱讀這些嘗試,對於新手來說,也能增長不少見識。
嘗試一:重新安裝作業系統
由於這位朋友的膝上型電腦之前安裝 9.10 版本時並沒有問題,所以我首先想到的可能性,就是在升級到 10.04 時出現問題。所以我決定直接重新安裝最新的 10.04 作業系統。
遇到的問題是,他的筆記本沒有光碟機,所以我需要製作一個安裝 Ubuntu 10.04 的啟動 U 盤。
首先下載獲得 ubuntu-10.04.iso 映象檔案。
然後,插入一個無用的光碟(容量最好在 1GB 以上),在 Ubuntu 中選擇「系統」->「系統管理」->「製作啟動盤」,點「格式化」格式化該盤(請提前備份),然後選擇我下載到的映象,製作一個啟動 U 盤。
製作完成後,使用該 U 盤引導系統(在X100e中的操作:開機時按 Enter,再按 F12,再選擇 USB-HDD)。安裝 Ubuntu 10.04 時,注意一定不要安裝兩個相同的系統,而要覆蓋原先的系統。
結果:重新安裝結束,問題依舊。
嘗試二:編輯 modprobe 配置
根據網上查到的資料,可以通過編輯 modprobe 配置檔案解決問題,但請注意!在 Ubuntu 高版本中,該檔案被加上了 .conf 字尾。(很多人反應不存在該檔案,就是因為這個。)
要通過編輯該檔案解決該問題,首先要明確好多事情。
1、什麼是 ALSA?
Linux 通過 ALSA 管理音效卡驅動。它為各種音效卡提供了較為統一的介面。它是模組化管理的,snd- 開頭的模組就是此類模組。
2、哪個模組管理你的音訊裝置?
通過下面的命令檢查你的 snd 模組。
1 |
lsmod | grep '^snd-' |
在找到的結果中辨認出你的音效卡音訊裝置所用的模組。在我這裡,這個模組是 snd-hda-intel。
3、明確你的音效卡型號。
1 |
sudo head -1 /proc/asound/card0/codec#0 |
4、根據你的音效卡型號,確定你音效卡所相似的 Model。
[1]到 http://www.alsa-project.org/ 下載最新版本的 ALSA Driver 原始碼。
[2]找到 /alsa-kernel/Documentation/HD-Audio-Models.txt 檔案並用文字編輯器開啟。
[3]在其中瀏覽尋找和你的音效卡型號相似或相同的音效卡型號,比如你的音效卡是 ALC880,那麼附近有這些行:
ALC880
======
3stack 3-jack in back and a headphone out
3stack-digout 3-jack in back, a HP out and a SPDIF out
5stack 5-jack in back, 2-jack in front
5stack-digout 5-jack in back, 2-jack in front, a SPDIF out
6stack 6-jack in back, 2-jack in front
6stack-digout 6-jack with a SPDIF out
w810 3-jack
z71v 3-jack (HP shared SPDIF)
asus 3-jack (ASUS Mobo)
asus-w1v ASUS W1V
asus-dig ASUS with SPDIF out
asus-dig2 ASUS with SPDIF out (using GPIO2)
uniwill 3-jack
fujitsu Fujitsu Laptops (Pi1536)
F1734 2-jack
lg LG laptop (m1 express dual)
lg-lw LG LW20/LW25 laptop
tcl TCL S700
clevo Clevo laptops (m520G, m665n)
medion Medion Rim 2150
test for testing/debugging purpose, almost all controls can be
adjusted. Appearing only when compiled with
$CONFIG_SND_DEBUG=y
auto auto-config reading BIOS (default)
左邊是其對應的 Model,右邊是註釋。記住,default 是預設採用的方案。
5、查詢音效卡引數
在你下載的原始碼中,找到 ALSA-Configuration.txt,從中用Chip型號中的關鍵字,一般是最後一段搜尋,或lsmod得到的音效卡 Model 名搜尋,再用Chip型號定位。查出可用的引數。
6、編輯配置檔案
加在 /etc/modprobe.d/modprobe.conf,/etc/modprobe.conf 或 /etc/modprobe.d/options 中,具體取決於發行版,在ubuntu 10.04 中是第一個,早期版本是第二個,別的發行版可能少有不同。
記住用 sudo 開啟你的文字編輯器。在最後一行加上(請先不要急忙複製):
1 |
options snd-hda-intel single_cmd=1 model=laptop-eapd |
這裡,snd-hda-intel 要改成你用的 snd 模組名稱(在上文有查閱方法),single_cmd=1 要改成音效卡引數(要一個引數一個引數組合測試),model後寫上對應的 Model 之一。
不停的修改引數和 Model,如果你的運氣足夠好,應該就可以解決這個問題。
每次都要用sudo編輯該檔案,然後重新啟動生效,然後重新測試你的音效卡。
如果你在重新啟動的時候無法啟動,請嘗試按 Ctrl + Alt + F2,然後進入控制檯,鍵入 sudo reboot 重新啟動。
就這樣一次次的嘗試就有可能解決這個問題。可是,我沒有能夠解決該問題。
如果想不用每次都重新啟動,可以試圖殺死佔用音效卡的程式,並重新載入音效卡模組。
嘗試三:編譯安裝最新版本的 ALSA 驅動
網上有大量的文章說,以前的 ALSA 驅動不支援很多音效卡型號和耳機,升級到最新版本的 ALSA 驅動就能解決問題。 Ubuntu 10.04 自帶的版本是 1.0.22,而最新版本是 1.0.23,為此需要升級 ALSA 版本到最新。
首先要從 http://www.alsa-project.org/ 下載最新版本的 ALSA Driver。要下載的是三個包:alsa-driver,alsa-lib,alsa-utils。下載完成後,應該按照從前到後的順序去安裝。
1、編譯安裝 alsa-driver。
[1]解壓縮 alsa-driver 到 ~/ad/。
[2]在終端輸入:
1 2 3 4 5 6 |
sudo /etc/init.d/alsa-utils stop sudo /etc/init.d/alsasound stop cd ~/ad/ ./configure --with-cards=all make sudo make install |
[3]如果提示找不到 libasound 大於 1.0.16 以上版本,找不到 xmlto 命令之類錯誤,請先安裝相關的依賴包(如下)後,再繼續。
1 2 3 4 5 6 |
sudo apt-get install build-essential sudo apt-get install linux-headers-`uname -r` sudo apt-get install libncursesw5-dev sudo apt-get install gettext sudo apt-get install xmlto sudo apt-get install kernel-package gcc make libc6 libc6-dev |
下載這些包並編譯安裝成功大概需要兩到三個小時的時間。
2、編譯安裝 alsa-lib。
[1]解壓縮 alsa-lib 到 ~/al/。
[2]在終端輸入:
1 2 3 4 |
cd ~/al/ ./configure --with-cards=all make sudo make install |
3、編譯安裝 alsa-utils。
[1]解壓縮 alsa-utils 到 ~/au/。
[2]在終端輸入:
1 2 3 4 |
cd ~/au/ ./configure make sudo make install |
在上述“sudo ./configure” 編譯過程中,如像我一樣遇到以下錯誤:
checking form.h presence… yes
checking for form.h… yes
checking for new_panel in -lpanelw… no
configure: error: panelw library not found
你需要先建立以下連結,再重新執行以上sudo ./configure編譯步驟:
1 2 3 4 |
sudo ln -s libpanelw.so.5 /usr/lib/libpanelw.so sudo ln -s libformw.so.5 /usr/lib/libformw.so sudo ln -s libmenuw.so.5 /usr/lib/libmenuw.so sudo ln -s libncursesw.so.5 /lib/libncursesw.so |
4、配置你的音效卡。
[1]在終端輸入下面的命令:
1 |
sudo alsaconf |
隨後系統將會詢問你一些問題,主要是讓你選擇音效卡,後面的問題都回答OK就可以,最後選擇 No_more_cards 退出。
[2]在終端輸入下面的命令:
1 2 3 |
cd ~/au/alsamixer/ sudo chmod +x ./alsamixer sudo ./alsamixer |
其中~/au是你解壓縮 alsa-utils 的路徑。
隨後系統會出現一些設定畫面,在這裡你可以選擇音效卡、自動修改配置等,也可能會給你調節音量、監視狀態等功能。
5、重新啟動計算機
重新啟動計算機,你的音效卡可能可以發聲了。(根據調查,很多音效卡都可以通過這個方法解決)
5、執行「嘗試二」
如果這時候音效卡仍然沒聲(比如我…),並且你還沒執行嘗試二,請執行「嘗試二」。
(結論:不少人此時已經可以發聲,但是我的除外。)
嘗試四:使用不在列表中的 model
如果你的音效卡型號不在 alsa-driver 原始碼中 /alsa-kernel/Documentation/HD-Audio-Models.txt 檔案的列表中,那麼可以採取下面的辦法:
[1]用相鄰的型號測試。
如果你的型號不被支援,但是很相近的型號在這個列表中,請使用這個型號對應的所有 model 去嘗試修改 modprobe 配置。修改方法同嘗試二。
[2]用相似的 model 測試。
有些型號沒有相似型號可用,但是有些 model 後的註釋提醒你適合某些型號的筆記本或桌上型電腦,這時候要果斷測試。
比如,model lenovo-x200 這個model的註釋就是,適合於 Lenovo x200 筆記本。
[3]用其他 model 測試。
如果很不幸兩者都沒有,請使用隨便一個 model 進行測試。
(我屬於第三者,並且測試均無效)
嘗試五:使用社群提供的支援該晶片的 alsa 驅動程式
在網上這種方法的資料相當少。通過 Google,我在國外的 ubuntu 社群找到了一個支援 Conexant 晶片集的 alsa 驅動包。地址:http://www.linuxant.com/alsa-driver/
在這裡下載 deb 包並安裝。雖然這個包只有 4MB,但安裝卻需要相當長的一段時間。
安裝完成後重新啟動計算機,問題終於解決。
本人初玩Ubuntu,看過一些書籍但知識面還是很淺,寫的不對的地方請斧正之,謝謝
正文:
今年2月通過試用最終決定安裝Ubuntu 11.10 在本本上,本本為F8VA 使用ATI HD3650,通過網上搜索指南安裝完成自有驅動。本來使用一切正常,但有個問題困擾我。
問題原因:
喇叭播放聲音正常,但插入耳機卻沒有聲音,但把耳機稍微往外拔一點點又有聲音,但沒有左右聲道的區別;我以為是耳機壞了,但轉回XP系統一切正常。在糾結了半個月後還是自己找教程重灌音效卡驅動,
在此期間我搜索了很多安裝指南,推薦一篇
http://ceeji.net/blog/fix-ubuntu-sound/zh-hans/
按照它講的方法,到
http://www.alsa-project.org/ 下載最新版本的 ALSA Driver(version 1.0.25) 原始碼,這就是我噩夢的開始。
因為不熟悉linux(其實連自己的音效卡型號都沒查明白,馬大哈一個) 在選擇音效卡時亂選一通,導致系統重啟後系統找不到裝置,聲音沒啦
-----------------------------------------------------------------------------------------------華麗分割--------------------------------------------------------------
所謂病急亂投醫,試了很多方法,也找了很多資料,期間基本上把自己音效卡型號搞明白了;
山寨的不行,那就選正規軍吧,去驅動之家找Realtek for linux dirver
http://drivers.mydrivers.com/drivers/42 ... C883-ALC8/
----------------------------
--> 在這裡我要說一下,Realtek提供的ALSA dirver version 1.0.24 比ALSA官方提供版本要低,但我個人感覺1.0.24更適合ALC662
原因是:依照博文所說[2]找到 /alsa-kernel/Documentation/HD-Audio-Models.txt 檔案並用文字編輯器開啟。
[3]在其中瀏覽尋找和你的音效卡型號相似或相同的音效卡型號,1.0.25 裡面是這樣的
=============
ALC662/663/272
==============
asus-mode1 ASUS
asus-mode2 ASUS
asus-mode3 ASUS
asus-mode4 ASUS
asus-mode5 ASUS
asus-mode6 ASUS
asus-mode7 ASUS
asus-mode8 ASUS
===================
這是啥子?反正覺得怪怪的
以下是Realtek for linux dirve 1.0.24 information
============
ALC662/663/272
==============
3stack-dig 3-stack (2-channel) with SPDIF
3stack-6ch 3-stack (6-channel)
3stack-6ch-dig 3-stack (6-channel) with SPDIF
6stack-dig 6-stack with SPDIF
lenovo-101e Lenovo laptop
eeepc-p701 ASUS Eeepc P701
eeepc-ep20 ASUS Eeepc EP20
ecs ECS/Foxconn mobo
m51va ASUS M51VA
g71v ASUS G71V
h13 ASUS H13
g50v ASUS G50V
asus-mode1 ASUS
asus-mode2 ASUS
asus-mode3 ASUS
asus-mode4 ASUS
asus-mode5 ASUS
asus-mode6 ASUS
asus-mode7 ASUS
asus-mode8 ASUS
dell Dell with ALC272
dell-zm1 Dell ZM1 with ALC272
samsung-nc10 Samsung NC10 mini notebook
auto auto-config reading BIOS (default)
================
這才和博文描述ALC880 sample 相似
找到問題原因後,樂顛樂顛的就開始編譯了,configure沒問題,make總是出錯說找不到“modversions.h”
於是google 這個東西找到論壇裡altman0habb的一個文章,啟發了我。
從錯誤資訊裡我發現include路徑下找不到linux 裡面的什麼什麼.h的檔案,我找到路徑下發現modversions.h確實放在config裡面,搞了半天原來是
路徑不符造成編譯出錯,於是果斷想到用ln -s直接將config資料夾弄到同目錄下linux資料夾內。
搞完這些,直接root 使用者進使用1.0.24 驅動自帶的./install 自動安裝dirver,期間彈出的2個聲音裝置我都選安裝。
有些新人,在安裝ubuntu後,系統沒有聲音,多半是因為Ubuntu的“聲音控制驅動:Alsa”沒有正確識別出電腦的音效卡。這個問題的解決方法,雖然有點複雜,但還有值得去嘗試的,畢竟沒有人想在Ubuntu的世界裡,過沒聲音的日子~
解決方法:去Alsa的官方網站,分別下載 3
個 音效卡驅動控制程式安裝包,來安裝。
一.
音效卡驅動控制程式: Alsa 的下載
這裡,我們要下載的是,Alsa
最新版本的3個安裝包。從上面的網頁裡面,右邊就能看到有“Download a package” —“current version”字樣。
注意:Alsa驅動是在不斷更新的,我們要做的,就是從網上下載最新版本的,上面的網頁位置,就直接提供最新版本的直接下載。這次的教程,我以目前最新的:1.0.20,為例子來講解。可能當你看到這篇教程的時候,版本已經更新了(比如1.0.21,22,23這樣)。去照貓畫虎的下載就行了。安裝方法,過程,也是完全通用的。
我們需要下載如下3個安裝包:
(1) alsa-driver-1.0.20
(2) alsa-lib-1.0.20
(3) alsa-utils-1.0.20
看圖,在這個位置,不管以後版本怎麼更新,都直接點選這裡就行。
描述:3443283390102202144.jpg
圖片:3443283390102202144.jpg
二.
安裝
下載好的 3
個軟體包,分別是:alsa-driver-1.0.20.tar.bz2和alsa-lib-1.0.20.tar.bz2和alsa-utils-1.0.20.tar.bz2
這3個軟體包,安裝方法,安裝過程,安裝步驟,完全相同,都是linux系統下,最原始的:“編譯安裝 3步走~”。因此,我這次的教程,以第一個軟體包:alsa-driver-1.0.20.tar.bz2,來講述具體的安裝實踐過程,後面的,自己照貓畫虎即可。特別注意,這3個軟體包,安裝有先後順序的,按照:driver
—— lib —— utils進行。行了,我們開始吧
1. 先在終端裡面,下載: xmlto,這個軟體包並安裝
方法:
從“應用程式”—"附件“,開啟”終端“,輸入:
sudo apt-get install xmlto。這樣來下載安裝。安裝好就把終端視窗放一邊,我們後面會用到。
描述:4005388918593367074.jpg
圖片:4005388918593367074.jpg
2. 找到你下載好的:alsa-driver-1.0.20.tar.bz2,雙擊開啟它,我們能看到裡面有一個資料夾,用滑鼠左鍵,託拽到”桌面“上。稍等一會兒,你就會看到桌面上有:alsa-driver-1.0.20,這個名字的檔案夾了。
描述:3110861442606787959.jpg
圖片:3110861442606787959.jpg
4. 回車後,繼續輸入: ./configure
回車
3. 在終端裡面,我們輸入:
cd 桌面/剛才那個資料夾的名字,應該就是:cd
桌面/alsa-driver-1.0.20(你後面安裝lib包的時候,自己想想這裡是什麼吧)。
描述:4859383997933303257.jpg
圖片:4859383997933303257.jpg
說明:這個步驟,就是傳說中的,編譯、配置原始碼,根據作業系統的不同,根據其所附帶的軟體包不同,因此,這個configure過程也不盡相同。因此,沒人能夠預知會出現什麼問題。但是有個前提,就是,你按回車後,螢幕就開始滾動,直到完成,你要看看有沒有出現:
error(錯誤),這個詞。如果沒有,你就能繼續下面的步驟了,如果中途出現了”錯誤“,那就必須先根據終端裡面給出的錯誤提示資訊,來上網搜尋,解決這個錯誤。解決後,再回過頭來,重新“./configure”
Alsa
音效卡驅動程式的”configure“,一般不會遇到什麼錯誤,在”Ubuntu linux 9.04
Desktop“下測試可以通過。看圖吧,最後出現:
Hacking autoconf.h...,就算完成了。
描述:4263782947213752198.jpg
圖片:4263782947213752198.jpg
描述:4263782947213752206.jpg
圖片:4263782947213752206.jpg
這個過程,會有一個”警告(warnning):警告:
格式字串不是一個字面字串而且沒有待格式化的實參“,這個沒事,不用理會它。看圖吧。make的過程比較長,大約20分鐘左右,最後會出現圖裡面的:”Alsa
modules were successfully compiled“,就代表成功了。
描述:39812589445479811830.jpg
圖片:39812589445479811830.jpg
6. 完成後返回命令提示符,輸入: sudo make install
,回車即可開始安裝驅動。
描述:39812589445479811830.jpg
圖片:39812589445479811830.jpg
因為我的系統已經安裝過了,所以這部分沒發截圖了。前兩步如果不出現什麼明顯的”error(錯誤)“,那這最後一部,80%以上都不會再有問題了。
三.
後面的兩個軟體包的安裝。
剛才說了,3個包,安裝的步驟,過程,完全一樣。我就簡述下了。
1. 對於:alsa-lib-1.0.20
雙擊下載的軟體包,把裡面的資料夾解壓縮到桌面上,然後終端裡面:
cd
桌面/alsa-lib-1.0.20
./configure
make
(注意看上面2個步驟,有沒有error,應該是沒有,警告什麼的,不需要管它)
sudo make install
最後完工。其實第一個driver,是3個包裡面最最最重要的,它成功了,後面2個幾乎就不會有什麼問題的。
2. 對於 alsa-utils-1.0.20
雙擊下載的軟體包,把裡面的資料夾解壓縮到桌面上,然後終端裡面:
cd
桌面/alsa-utils-1.0.20
./configure
make
(注意看上面2個步驟,有沒有error,應該是沒有,警告什麼的,不需要管它)
sudo make install
這樣,3個軟體包徹底安裝完成。你可以重新啟動電腦了。對於目前流行的大部分音效卡,你就能聽到動聽的聲音了。
四.已知的存在的其他小問題
1. 重新啟動電腦後,你可能聽不到ubuntu系統啟動的聲音,不要著急,找個音樂來播放試試看,應該就有了。音樂有了就代表音效卡工作正常了。後面,你還可以播放視訊試試看
2. 關於視訊,如果你播放視訊的時候,在”暫停“的時候,聲音”卻不暫停“,那就更換一個視訊播放器,我推薦大家用
smplayer,這個。
3. 如果你在播放音樂,視訊的時候,聲音出現”卡“的情況,可以嘗試更換媒體播放器。因為這種問題,可能不是驅動程式的問題,而是媒體播放器設定不當,所造成的。
4. 在linux系統下,“原始碼”軟體包,這種安裝方式,一般在它的資料夾裡面,都附帶2個檔案:分別是 readme(是軟體的介紹說明)和 install(安裝方法的詳細說明)。但是鑑於大部分軟體都是外國人開發的,因此這2個檔案,一般都是英文版本的。所以,如果你英語還行,建議在安裝前,認真的看看這2個檔案,對於你編譯安裝任何軟體,都是大有幫助的。看圖,就是這兩個:
行了,這次的文章就這樣了,這篇文章不僅僅是教”alsa
音效卡驅動程式“的編譯安裝。其實這個”編譯安裝的過程:解壓縮資料夾,進入資料夾,./configure,make,sudo make install“,是對於linux世界所有”原始碼“形式的安裝包(比如:XXXXX.tar.gz這種格式)的一次教學。