徹底解決 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 模塊。

lsmod | grep '^snd-'

在找到的結果中辨認出你的聲卡音頻設備所用的模塊。在我這裡,這個模塊是 snd-hda-intel。

3、明確你的聲卡型號。

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 是默認採用的方案。

  1. 查找聲卡參數 在你下載的源碼中,找到 ALSA-Configuration.txt,從中用Chip型號中的關鍵字,一般是最後一段搜索,或lsmod得到的聲卡 Model 名搜索,再用Chip型號定位。查出可用的參數。

  2. 編輯配置文件 加在 /etc/modprobe.d/modprobe.conf,/etc/modprobe.conf 或 /etc/modprobe.d/options 中,具體取決於發行版,在ubuntu 10.04 中是第一個,早期版本是第二個,別的發行版可能少有不同。 記住用 sudo 打開你的文本編輯器。在最後一行加上(請先不要急忙複製):

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。下載完成後,應該按照從前到後的順序去安裝。

一、編譯安裝 alsa-driver:

[1]解壓縮 alsa-driver 到 ~/ad/。

[2]在終端輸入:

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 命令之類錯誤,請先安裝相關的依賴包(如下)後,再繼續。

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

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

二、編譯安裝 alsa-lib。

[1]解壓縮 alsa-lib 到 ~/al/。

[2]在終端輸入:

cd ~/al/
./configure --with-cards=all
make
sudo make install

三、編譯安裝 alsa-utils

[1]解壓縮 alsa-utils 到 ~/au/。

[2]在終端輸入:

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編譯步驟:

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

四、配置你的聲卡。

[1]在終端輸入下面的命令:

sudo alsaconf

隨後系統將會詢問你一些問題,主要是讓你選擇聲卡,後面的問題都回答OK就可以,最後選擇 No_more_cards 退出。

[2]在終端輸入下面的命令:

cd ~/au/alsamixer/
sudo chmod +x ./alsamixer
sudo ./alsamixer

其中~/au是你解壓縮 alsa-utils 的路徑。

隨後系統會出現一些設置畫面,在這裡你可以選擇聲卡、自動修改配置等,也可能會給你調節音量、監視狀態等功能。

五、重新啟動計算機 重新啟動計算機,你的聲卡可能可以發聲了。(根據調查,很多聲卡都可以通過這個方法解決)

六、執行「嘗試二」 如果這時候聲卡仍然沒聲(比如我…),並且你還沒執行嘗試二,請執行「嘗試二」。 (結論:不少人此時已經可以發聲,但是我的除外。)

嘗試四:使用不在列表中的 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,但安裝卻需要相當長的一段時間。 安裝完成後重新啟動計算機,問題終於解決。

当前页阅读量为: