搭載 Intel Core 2 Duo 處理器的筆記型電腦普遍採用 Intel High Definition Audio (HDA) 控制器。在 Ubuntu 7.10 (Gutsy Gibbon) 等較舊發行版中,預裝的 ALSA 驅動版本 (1.0.14) 往往無法正確識別特定 Codec (如 SigmaTel STAC9228),導致系統有聲音圖示卻無聲音。本文以 Dell Vostro 1400 為例,詳細記錄升級 ALSA 1.0.15 並配置模組參數解決無聲問題的完整過程。
| 項目 | 規格 |
|---|---|
| 筆記型電腦 | Dell Vostro 1400 |
| CPU | Intel Core 2 Duo T5470 |
| 音效晶片組 | Intel® High Definition Audio |
| Codec 型號 | SigmaTel STAC9228 |
| 作業系統 | Ubuntu 7.10 (Gutsy Gibbon) |
| 預裝 ALSA | 1.0.14 |
| 目標 ALSA | 1.0.15 |
alsa-driver、alsa-lib、alsa-utils。/etc/modprobe.d/alsa-base 載入參數。sudo aptitude install build-essential libncurses-dev gettext linux-headers-$(uname -r)
build-essential:GCC、Make、libc-dev 等基礎建構工具。libncurses-dev:alsa-driver 配置介面 (menuconfig) 所需。gettext:國際化支援。linux-headers-$(uname -r):當前運行核心的標頭檔,編譯核心模組必須。下載地址:ALSA 專案下載頁
需下載三個獨立 tarball:
alsa-driver-1.0.15.tar.bz2alsa-lib-1.0.15.tar.bz2alsa-utils-1.0.15.tar.bz2tar xjf alsa-driver-1.0.15.tar.bz2
cd alsa-driver-1.0.15
# 關鍵:指定 hda-intel 卡型,減少編譯時間並避免衝突
sudo ./configure --with-cards=hda-intel
make
sudo make install
cd ../alsa-lib-1.0.15
./configure
make
sudo make install
cd ../alsa-utils-1.0.15
./configure
make
sudo make install
實測無需移除系統預裝的 1.0.14 版本。新版安裝至 /usr/local,舊版在 /usr,動態連結器優先載入 /usr/local/lib。若極度潔癖可用 dpkg -r 移除對應 deb 包,但有破壞套件管理器依賴關係風險。
sudo reboot
cat /proc/asound/card0/codec#* | grep Codec
# 輸出範例:Codec: SigmaTel STAC9228
此例中 Codec 為 STAC9228 (SigmaTel STAC9228)。
文檔位置:/usr/local/share/doc/alsa-driver-1.0.15/ALSA-Configuration.txt (或核心源碼 Documentation/sound/alsa/ALSA-Configuration.txt)。
搜尋 STAC9228 或 SigmaTel,找到對應的 model= 參數值。常見筆記型電腦模型命名為廠商代號:
dell、dell-m42、dell-m43hp、hp-dv5lenovo、thinkpadauto (嘗試自動偵測,新版驅動支援度較好)若找不到完全匹配,可嘗試同系列晶片的模型名稱。
sudo vi /etc/modprobe.d/alsa-base
在檔案末尾新增:
options snd-hda-intel model=您的模型名稱
本例中若文檔建議為 dell-m43:
options snd-hda-intel model=dell-m43
sudo reboot
登入畫面應聽到 Ubuntu 開機音效,打開音量控制器 (gnome-volume-control 或 alsamixer) 確認所有聲道未靜音、音量適中。
現代核心 (4.15+) 與 ALSA (1.1.6+) 已內建絕大多數 HDA Codec 的修補表 (quirk table),通常無需手動編譯升級。僅需:
cat /proc/asound/card0/codec#0 | grep Codec/etc/modprobe.d/alsa-base.conf (或新建 /etc/modprobe.d/hda-fix.conf):options snd-hda-intel model=auto (優先嘗試)options snd-hda-intel model=dell-headset-multisudo update-initramfs -u 更新 initramfs (確保早期載入參數生效)。sudo reboot若 model=auto 無效,參考 Kernel 官方 HDA 模型列表 尋找對應型號。
alsa-info.sh:官方診斷腳本,收集完整音訊資訊上傳至 pastebin 供社群協助。wget https://alsa-project.org/alsa-info.sh && bash alsa-info.shhda-verb:底層 Codec 指令測試工具 (需編譯),可直接操作 Codec 節點 (Widget) 進行精準測試。dmesg | grep -i snd:查看核心載入音訊驅動時的訊息。Intel HDA 無聲問題的核心在於 Codec 型號與驅動預設參數不匹配。透過升級 ALSA 驅動獲得最新修補表,並明確指定 model= 參數,即可讓驅動正確配置 Pin Complex、啟用正確輸出路徑。現代核心已大幅改善自動偵測能力,多數情況下僅需設定 model=auto 或查表填入正確模型名稱即可解決,無需重新編譯核心模組。