1. 程式人生 > >徹底解決 Ubuntu 10.04 對部分音效卡不支援或耳機無聲的問題

徹底解決 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.bz2alsa-lib-1.0.20.tar.bz2alsa-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”

lsa 音效卡驅動程式的”configure“,一般不會遇到什麼錯誤,在buntu linux 9.04 esktop“下測試可以通過。看圖吧,最後出現: Hacking autoconf.h...,就算完成了。

描述:4263782947213752198.jpg

圖片:4263782947213752198.jpg

描述:4263782947213752206.jpg

圖片:4263782947213752206.jpg





這個過程,會有一個警告(warnning):警告: 格式字串不是一個字面字串而且沒有待格式化的實參,這個沒事,不用理會它。看圖吧。make的過程比較長,大約20分鐘左右,最後會出現圖裡面的:lsa 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這種格式)的一次教學。