Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 聲卡驅動安裝與配置全攻略:ALSA 編譯安裝、模組對照表與疑難排解

編輯:Linux 教學

前言

Linux 核心內建聲音架構為 ALSA(Advanced Linux Sound Architecture),支援絕大多數消費級聲晶片。若發音異常,通常需手動編譯最新 ALSA 驅動或調整模組參數。

支援晶片對照表(節錄)

架構晶片型號ALSA 模組名稱
AC'97ALC100, ALC100P, ALC200, ALC200P, ALC650D, ALC650E, ALC650F, ALC650, ALC655, ALC653, ALC658, ALC658D, ALC850, ALC101, ALC202, ALC250, ALC203snd-intel8x0(Intel ICH)、snd-via82xx(VIA)、snd-atiixp(ATI)
HD AudioALC260, ALC262, ALC660, ALC861, ALC880, ALC882, ALC883, ALC885, ALC888snd-hda-intel(Intel/AMD 通用)

完整支援清單請參考 /usr/src/alsa-driver-*/doc/ 或 ALSA 專案官網。

編譯安裝三大元件

ALSA 分為三個獨立原始碼套件,須依序編譯安裝:

  1. alsa-driver:核心模組(需核心原始碼 headers)
  2. alsa-lib:使用者空間函式庫
  3. alsa-utils:工具程式(alsamixer、alsactl、speaker-test 等)

步驟 1:準備核心頭檔與編譯工具

sudo apt install build-essential linux-headers-$(uname -r)

步驟 2:下載並解壓縮(以 1.0.9 版為例)

wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.9.tar.bz2
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.9.tar.bz2
wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.9.tar.bz2

tar xjf alsa-driver-1.0.9.tar.bz2
tar xjf alsa-lib-1.0.9.tar.bz2
tar xjf alsa-utils-1.0.9.tar.bz2

步驟 3:編譯安裝 alsa-driver

cd alsa-driver-1.0.9
./configure --with-kernel=/usr/src/linux-headers-$(uname -r) --with-cards=hda-intel  # 指定晶片,all 為全部
make
sudo make install
sudo ./snddevices  # 建立 /dev/snd/* 裝置節點

常見錯誤:unresolved symbol schedule_work
解決:

touch include/linux/workqueue.h
make clean && make && sudo make install

步驟 4:編譯安裝 alsa-lib

cd ../alsa-lib-1.0.9
./configure
make
sudo make install

步驟 5:編譯安裝 alsa-utils

cd ../alsa-utils-1.0.9
./configure
make
sudo make install

載入驅動模組與測試

手動載入

sudo modprobe snd-hda-intel        # Intel HD Audio
# 或
sudo modprobe snd-intel8x0         # AC'97 Intel ICH
# 或
sudo alsaconf                      # 互動式偵測設定

啟用 OSS 相容層(舊程式需 /dev/dsp)

sudo modprobe snd-pcm-oss
sudo modprobe snd-mixer-oss
sudo modprobe snd-seq-oss

測試發聲

speaker-test -c2 -twav   # 白噪音測試左右聲道
# 或播放 MP3
sudo apt install mpg123
mpg123 /path/to/test.mp3

調整音量並儲存

alsamixer          # 文字介面調整,M 鍵切換靜音
sudo alsactl store # 將目前設定寫入 /var/lib/alsa/asound.state

開機自動載入與還原音量

方法一:/etc/modules(傳統)

echo "snd-hda-intel" | sudo tee -a /etc/modules
echo "snd-pcm-oss" | sudo tee -a /etc/modules

方法二:systemd-tmpfiles + alsa-restore(現代發行版預設)

大多數發行版已內建 alsa-restore.service 開機自動還原 alsactl store 的設定,無需額外設定。

手動加入 rc.local(舊版相容)

sudo vi /etc/rc.local
# 在 exit 0 前加入
alsactl restore

模組參數微調(針對特定晶片)

建立 /etc/modprobe.d/alsa.conf:

# 針對 ALC880/882/883/885/888 等 HD Audio 晶片
options snd-hda-intel model=auto
# 或指定具體模型(參考 Documentation/sound/alsa/HD-Audio-Models.txt)
# options snd-hda-intel model=3stack-6ch

# 針對 AC'97 晶片
options snd-intel8x0 ac97_clock=48000

疑難排解清單

  1. 確認核心已載入模組:lsmod | grep snd
  2. 確認裝置節點存在:ls -l /dev/snd/
  3. 檢查 dmesg | grep -i audio 是否有錯誤訊息。
  4. 以 alsamixer 確認未靜音、音量非零。
  5. 嘗試不同 model= 參數(HD Audio 常見)。
  6. 若為筆電,檢查 BIOS 是否停用內建音效。
Copyright © Windows教程網 All Rights Reserved