前幾日淘了塊創新的Audigy2 ZS Notebook聲卡,聲卡的驅動還算不錯,只要內核中開啟pcmcia聲卡支持為加上emu10k1的模塊就好了。但之後設置的問題也來了,目標非常簡單,希望聲卡插進、拔出的時候,alsa的設置能相應自動變化。
我們可以利用udev來幫我們實現這個目標。
我們需要兩個腳本和兩個內容略為不同的asound.conf。
先看看兩個聲卡是啥名字:
代碼:
ls -l /proc/asound/
我的機子上是:
代碼:
lrwxrwxrwx 1 root root 5 2009-03-16 17:27 Audigy2 -> card2
dr-xr-xr-x 9 root root 0 2009-03-16 17:27 card0
dr-xr-xr-x 5 root root 0 2009-03-16 17:27 card1
dr-xr-xr-x 8 root root 0 2009-03-16 17:27 card2
-r--r--r-- 1 root root 0 2009-03-16 17:27 cards
-r--r--r-- 1 root root 0 2009-03-16 17:27 devices
-r--r--r-- 1 root root 0 2009-03-16 17:27 hwdep
lrwxrwxrwx 1 root root 5 2009-03-16 17:27 I82801DBICH4 -> card0
lrwxrwxrwx 1 root root 5 2009-03-16 17:27 Modem -> card1
dr-xr-xr-x 2 root root 0 2009-03-16 17:27 oss
-r--r--r-- 1 root root 0 2009-03-16 17:27 pcm
dr-xr-xr-x 2 root root 0 2009-03-16 17:27 seq
-r--r--r-- 1 root root 0 2009-03-16 17:27 timers
-r--r--r-- 1 root root 0 2009-03-16 17:27 version
其中板載聲卡是 I82801DBICH4,外置的pcmcia聲卡是Audigy2。要把名字記下,待會我們需要它們。
接下來要寫兩個asound.conf來指定外置聲卡插拔情況下的alsa設置。先
代碼:
mkdir /etc/alsa
cp /etc/asound.conf /etc/alsa/asound.ac97
mv /etc/asound.conf /etc/alsa/asound.audigy2
,asound.ac97是沒有插外置聲卡時用的,asound.audigy2就是外置聲卡插上時用的。
然後在asound.ac97中加入:
代碼:
# onboard
pcm.ac97 {
type plug
slave.pcm "dmix"
}
ctl.ac97 {
type hw
card I82801DBICH4
}
pcm.!default pcm.ac97
ctl.!default ctl.ac97
在asound.audigy2中加入
代碼:
# pcmcia
pcm.audigy2hw {
type hw
card Audigy2
}
pcm.audigy2 {
type plug
slave.pcm "audigy2hw"
}
ctl.audigy2 {
type hw
card Audigy2
}
# onboard
pcm.ac97 {
type plug
slave.pcm "dmix"
}
ctl.ac97 {
type hw
card I82801DBICH4
}
pcm.!default pcm.audigy2
ctl.!default ctl.audigy2
要注意的是,xxx.ac97中聲卡名是我板載聲卡的名字,xxx.audigy2則是我外置聲卡的名字,你需要替換成你自己的聲卡。
這樣在不同情況下,我們只要 ln -sf /etc/alsa/asound.xxx /etc/asound.conf就OK了。