徹底解決 Ubuntu 10.04 對部分音效卡不支援或耳機無聲的問題

來源:互聯網
上載者:User

 

我的一位朋友的筆記本在我的推薦下安裝了 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 的啟動 USB 磁碟機。
首先下載獲得 ubuntu-10.04.iso 鏡像檔案。
然後,插入一個無用的光碟片(容量最好在 1GB 以上),在 Ubuntu 中選擇「系統」->「系統管理」->「製作啟動盤」,點「格式化」格式化該盤(請提前備份),然後選擇我下載到的鏡像,製作一個啟動 USB 磁碟機。
製作完成後,使用該 USB 磁碟機引導系統(在X100e中的操作:開機時按 Enter,再按 F12,再選擇 USB-HDD)。安裝 Ubuntu 10.04 時,注意一定不要安裝兩個相同的系統,而要覆蓋原先的系統。
結果:重新安裝結束,問題依舊。

嘗試二:編輯 modprobe 配置

根據網上查到的資料,可以通過編輯 modprobe 設定檔解決問題,但請注意。在 Ubuntu 高版本中,該檔案被加上了 .conf 尾碼。(很多人反應不存在該檔案,就是因為這個。)
要通過編輯該檔案解決該問題,首先要明確好多事情。

1、什麼是 ALSA。
Linux 通過 ALSA 管理音效卡驅動。它為各種音效卡提供了較為統一的介面。它是模組化管理的,snd- 開頭的模組就是此類別模組。

2、哪個模組管理你的音訊裝置。
通過下面的命令檢查你的 snd 模組。 ?[Copy to clipboard] View Code SHELL

1
lsmod | grep '^snd-'

在找到的結果中辨認出你的音效卡音訊裝置所用的模組。在我這裡,這個模組是 snd-hda-intel。

3、明確你的音效卡型號。 ?[Copy to clipboard] View Code SHELL

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 開啟你的文字編輯器。在最後一行加上(請先不要急忙複製): ?[Copy to clipboard] View Code SHELL

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]在終端輸入: ?[Copy to clipboard] View Code SHELL

123456
sudo /etc/init.d/alsa-utils stopsudo /etc/init.d/alsasound stopcd ~/ad/./configure --with-cards=allmakesudo make install

[3]如果提示找不到 libasound 大於 1.0.16 以上版本,找不到 xmlto 命令之類錯誤,請先安裝相關的依賴包(如下)後,再繼續。 ?[Copy to clipboard] View Code SHELL

123456
sudo apt-get install build-essentialsudo apt-get install linux-headers-`uname -r`sudo apt-get install libncursesw5-devsudo apt-get install gettextsudo apt-get install xmltosudo apt-get install kernel-package gcc make libc6 libc6-dev

下載這些包並編譯安裝成功大概需要兩到三個小時的時間。

2、編譯安裝 alsa-lib。
[1]解壓縮 alsa-lib 到 ~/al/。
[2]在終端輸入: ?[Copy to clipboard] View Code SHELL

1234
cd ~/al/./configure --with-cards=allmakesudo make install

3、編譯安裝 alsa-utils。
[1]解壓縮 alsa-utils 到 ~/au/。
[2]在終端輸入: ?[Copy to clipboard] View Code SHELL

1234
cd ~/au/./configuremakesudo 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編譯步驟: ?[Copy to clipboard] View Code SHELL

1234
sudo ln -s libpanelw.so.5 /usr/lib/libpanelw.sosudo ln -s libformw.so.5 /usr/lib/libformw.sosudo ln -s libmenuw.so.5 /usr/lib/libmenuw.sosudo ln -s libncursesw.so.5 /lib/libncursesw.so

4、配置你的音效卡。
[1]在終端輸入下面的命令: ?[Copy to clipboard] View Code SHELL

1
sudo alsaconf

隨後系統將會詢問你一些問題,主要是讓你選擇音效卡,後面的問題都回答OK就可以,最後選擇 No_more_cards 退出。
[2]在終端輸入下面的命令: ?[Copy to clipboard] View Code SHELL

123
cd ~/au/alsamixer/sudo chmod +x ./alsamixersudo ./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 的下載

1. 下載網站: http://www.alsa-project.org/main/index.php/Main_Page

這裡,我們要下載的是,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”

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

描述:4263782947213752198.jpg

圖片:4263782947213752198.jpg





5.完成後回到提示符,就可以繼續輸入: make,進行下一步了。斷行符號,螢幕繼續開始滾動,同樣道理,要觀察有沒有”error(錯誤)“出現

描述: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
雙擊下載的軟體包,把裡面的檔案夾解壓縮到案頭上,然後終端裡面:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.