我的一位朋友的筆記本在我的推薦下安裝了 Ubuntu 系統(tǒng),。最初他安裝的是 9.10 版本,,WIFI 支持有些問(wèn)題。隨后他升級(jí)到了 10.04 版本,,WIFI 正常了,,可是耳機(jī)插入后卻沒(méi)有聲音,只能使用自帶揚(yáng)聲器,。 為了解決這個(gè)問(wèn)題,,我今天從十一點(diǎn)開始研究,到晚上 19 點(diǎn)才成功搞定,。 癥狀描述 Ubuntu 10.04 系統(tǒng),,Thinkpad X100e 筆記本,,使用 Conexant 80925(貌似是這個(gè)數(shù)字,如果不是也不要緊,,所有 Conexant 芯片解決方法相同)芯片的聲卡,。插入耳機(jī)后揚(yáng)聲器繼續(xù)發(fā)生,耳機(jī)沒(méi)有聲音,。 請(qǐng)注意:如果你只是為了解決這個(gè)問(wèn)題,,請(qǐng)?zhí)^(guò)前面的嘗試,直接閱讀最終的解決方案,。不過(guò),,閱讀這些嘗試,對(duì)于新手來(lái)說(shuō),,也能增長(zhǎng)不少見(jiàn)識(shí),。 嘗試一:重新安裝操作系統(tǒng) 由于這位朋友的筆記本電腦之前安裝 9.10 版本時(shí)并沒(méi)有問(wèn)題,所以我首先想到的可能性,,就是在升級(jí)到 10.04 時(shí)出現(xiàn)問(wèn)題,。所以我決定直接重新安裝最新的 10.04 操作系統(tǒng)。 遇到的問(wèn)題是,,他的筆記本沒(méi)有光驅(qū),,所以我需要制作一個(gè)安裝 Ubuntu 10.04 的啟動(dòng) U 盤。 首先下載獲得 ubuntu-10.04.iso 鏡像文件,。 然后,,插入一個(gè)無(wú)用的光盤(容量最好在 1GB 以上),在 Ubuntu 中選擇「系統(tǒng)」->「系統(tǒng)管理」->「制作啟動(dòng)盤」,,點(diǎn)「格式化」格式化該盤(請(qǐng)?zhí)崆皞浞荩?,然后選擇我下載到的鏡像,制作一個(gè)啟動(dòng) U 盤,。 制作完成后,,使用該 U 盤引導(dǎo)系統(tǒng)(在X100e中的操作:開機(jī)時(shí)按 Enter,再按 F12,,再選擇 USB-HDD),。安裝 Ubuntu 10.04 時(shí),注意一定不要安裝兩個(gè)相同的系統(tǒng),,而要覆蓋原先的系統(tǒng),。 結(jié)果:重新安裝結(jié)束,問(wèn)題依舊,。 嘗試二:編輯 modprobe 配置 根據(jù)網(wǎng)上查到的資料,,可以通過(guò)編輯 modprobe 配置文件解決問(wèn)題,但請(qǐng)注意,!在 Ubuntu 高版本中,,該文件被加上了 .conf 后綴,。(很多人反應(yīng)不存在該文件,就是因?yàn)檫@個(gè),。) 要通過(guò)編輯該文件解決該問(wèn)題,,首先要明確好多事情。 1,、什么是 ALSA,? Linux 通過(guò) ALSA 管理聲卡驅(qū)動(dòng)。它為各種聲卡提供了較為統(tǒng)一的接口,。它是模塊化管理的,,snd- 開頭的模塊就是此類模塊。 2,、哪個(gè)模塊管理你的音頻設(shè)備? 通過(guò)下面的命令檢查你的 snd 模塊,。 在找到的結(jié)果中辨認(rèn)出你的聲卡音頻設(shè)備所用的模塊,。在我這里,這個(gè)模塊是 snd-hda-intel,。 3,、明確你的聲卡型號(hào)。 sudo head -1 /proc/asound/card0/codec#0 |
4,、根據(jù)你的聲卡型號(hào),,確定你聲卡所相似的 Model。 [1]到 http://www./ 下載最新版本的 ALSA Driver 源代碼,。 [2]找到 /alsa-kernel/Documentation/HD-Audio-Models.txt 文件并用文本編輯器打開,。 [3]在其中瀏覽尋找和你的聲卡型號(hào)相似或相同的聲卡型號(hào),比如你的聲卡是 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)
左邊是其對(duì)應(yīng)的 Model,,右邊是注釋。記住,,default 是默認(rèn)采用的方案,。 5、查找聲卡參數(shù) 在你下載的源碼中,,找到 ALSA-Configuration.txt,,從中用Chip型號(hào)中的關(guān)鍵字,一般是最后一段搜索,,或lsmod得到的聲卡 Model 名搜索,,再用Chip型號(hào)定位。查出可用的參數(shù),。 6,、編輯配置文件 加在 /etc/modprobe.d/modprobe.conf,,/etc/modprobe.conf 或 /etc/modprobe.d/options 中,具體取決于發(fā)行版,,在ubuntu 10.04 中是第一個(gè),,早期版本是第二個(gè),別的發(fā)行版可能少有不同,。 記住用 sudo 打開你的文本編輯器,。在最后一行加上(請(qǐng)先不要急忙復(fù)制): options snd-hda-intel single_cmd=1 model=laptop-eapd |
這里,snd-hda-intel 要改成你用的 snd 模塊名稱(在上文有查閱方法),,single_cmd=1 要改成聲卡參數(shù)(要一個(gè)參數(shù)一個(gè)參數(shù)組合測(cè)試),,model后寫上對(duì)應(yīng)的 Model 之一。 不停的修改參數(shù)和 Model,,如果你的運(yùn)氣足夠好,,應(yīng)該就可以解決這個(gè)問(wèn)題。 每次都要用sudo編輯該文件,,然后重新啟動(dòng)生效,,然后重新測(cè)試你的聲卡。 如果你在重新啟動(dòng)的時(shí)候無(wú)法啟動(dòng),,請(qǐng)嘗試按 Ctrl + Alt + F2,,然后進(jìn)入控制臺(tái),鍵入 sudo reboot 重新啟動(dòng),。 就這樣一次次的嘗試就有可能解決這個(gè)問(wèn)題,。可是,,我沒(méi)有能夠解決該問(wèn)題,。 如果想不用每次都重新啟動(dòng),可以試圖殺死占用聲卡的程序,,并重新加載聲卡模塊,。 嘗試三:編譯安裝最新版本的 ALSA 驅(qū)動(dòng) 網(wǎng)上有大量的文章說(shuō),以前的 ALSA 驅(qū)動(dòng)不支持很多聲卡型號(hào)和耳機(jī),,升級(jí)到最新版本的 ALSA 驅(qū)動(dòng)就能解決問(wèn)題,。 Ubuntu 10.04 自帶的版本是 1.0.22,而最新版本是 1.0.23,,為此需要升級(jí) ALSA 版本到最新,。 首先要從 http://www./ 下載最新版本的 ALSA Driver。要下載的是三個(gè)包:alsa-driver,,alsa-lib,,alsa-utils。下載完成后,應(yīng)該按照從前到后的順序去安裝,。 1,、編譯安裝 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 命令之類錯(cuò)誤,請(qǐng)先安裝相關(guān)的依賴包(如下)后,,再繼續(xù),。 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 |
下載這些包并編譯安裝成功大概需要兩到三個(gè)小時(shí)的時(shí)間。 2,、編譯安裝 alsa-lib,。 [1]解壓縮 alsa-lib 到 ~/al/。 [2]在終端輸入: cd ~/al/
./configure --with-cards=all
make
sudo make install |
3,、編譯安裝 alsa-utils,。 [1]解壓縮 alsa-utils 到 ~/au/。 [2]在終端輸入: cd ~/au/
./configure
make
sudo make install |
在上述“sudo ./configure” 編譯過(guò)程中,,如像我一樣遇到以下錯(cuò)誤: checking form.h presence… yes checking for form.h… yes checking for new_panel in -lpanelw… no configure: error: panelw library not found 你需要先建立以下鏈接,,再重新執(zhí)行以上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 |
4、配置你的聲卡,。 [1]在終端輸入下面的命令: 隨后系統(tǒng)將會(huì)詢問(wèn)你一些問(wèn)題,主要是讓你選擇聲卡,,后面的問(wèn)題都回答OK就可以,,最后選擇 No_more_cards 退出。 [2]在終端輸入下面的命令: cd ~/au/alsamixer/
sudo chmod +x ./alsamixer
sudo ./alsamixer |
其中~/au是你解壓縮 alsa-utils 的路徑,。 隨后系統(tǒng)會(huì)出現(xiàn)一些設(shè)置畫面,,在這里你可以選擇聲卡、自動(dòng)修改配置等,,也可能會(huì)給你調(diào)節(jié)音量,、監(jiān)視狀態(tài)等功能。 5,、重新啟動(dòng)計(jì)算機(jī) 重新啟動(dòng)計(jì)算機(jī),,你的聲卡可能可以發(fā)聲了。(根據(jù)調(diào)查,,很多聲卡都可以通過(guò)這個(gè)方法解決) 5,、執(zhí)行「嘗試二」 如果這時(shí)候聲卡仍然沒(méi)聲(比如我…),并且你還沒(méi)執(zhí)行嘗試二,,請(qǐng)執(zhí)行「嘗試二」,。 (結(jié)論:不少人此時(shí)已經(jīng)可以發(fā)聲,但是我的除外。) 嘗試四:使用不在列表中的 model 如果你的聲卡型號(hào)不在 alsa-driver 源代碼中 /alsa-kernel/Documentation/HD-Audio-Models.txt 文件的列表中,,那么可以采取下面的辦法: [1]用相鄰的型號(hào)測(cè)試,。 如果你的型號(hào)不被支持,但是很相近的型號(hào)在這個(gè)列表中,,請(qǐng)使用這個(gè)型號(hào)對(duì)應(yīng)的所有 model 去嘗試修改 modprobe 配置,。修改方法同嘗試二。 [2]用相似的 model 測(cè)試,。 有些型號(hào)沒(méi)有相似型號(hào)可用,,但是有些 model 后的注釋提醒你適合某些型號(hào)的筆記本或臺(tái)式機(jī),這時(shí)候要果斷測(cè)試,。 比如,,model lenovo-x200 這個(gè)model的注釋就是,適合于 Lenovo x200 筆記本,。 [3]用其他 model 測(cè)試,。 如果很不幸兩者都沒(méi)有,請(qǐng)使用隨便一個(gè) model 進(jìn)行測(cè)試,。 (我屬于第三者,,并且測(cè)試均無(wú)效) 嘗試五:使用社區(qū)提供的支持該芯片的 alsa 驅(qū)動(dòng)程序 在網(wǎng)上這種方法的資料相當(dāng)少。通過(guò) Google,,我在國(guó)外的 ubuntu 社區(qū)找到了一個(gè)支持 Conexant 芯片集的 alsa 驅(qū)動(dòng)包,。地址:http://www./alsa-driver/ 在這里下載 deb 包并安裝。雖然這個(gè)包只有 4MB,,但安裝卻需要相當(dāng)長(zhǎng)的一段時(shí)間,。 安裝完成后重新啟動(dòng)計(jì)算機(jī),問(wèn)題終于解決,。
|