Ubuntu下创新笔记本外置pcmcia声卡的自动切换(3)

最后,我们需要让udev在插入和拔出声卡的时候调用switch_default_sound,就大功告成了。所以,我们要写一个udev的rule为我们服务。

先用lspci找到声卡的PCI_ID

代码:

lspci -nn

比如我的是

代码:

02:00.0 Multimedia audio controller [0401]: Creative Labs SB0400 Audigy2 Value [1102:0008]

,其中1102:0008就是了。

接着,我们需要找出相应的udev信息。先把udev的信息导到文件udev.txt中

代码:

udevadm info --export-db > udev.txt

然后找出1102:0008

代码:

grep -C10 1102:0008 udev.txt

在我的电脑上结果是:

代码:

E: PCI_SLOT_NAME=0000:01:0a.0

E: MODALIAS=pci:v00001180d00000476sv000010CFsd00001254bc06sc07i00

P: /devices/pci0000:00/0000:00:1e.0/0000:01:0a.0/0000:02:00.0

E: UDEV_LOG=3

E: DEVPATH=/devices/pci0000:00/0000:00:1e.0/0000:01:0a.0/0000:02:00.0

E: DRIVER=EMU10K1_Audigy

E: PHYSDEVBUS=pci

E: PHYSDEVDRIVER=EMU10K1_Audigy

E: PCI_CLASS=40100

E: PCI_ID=1102:0008

E: PCI_SUBSYS_ID=1102:2001

E: PCI_SLOT_NAME=0000:02:00.0

E: MODALIAS=pci:v00001102d00000008sv00001102sd00002001bc04sc01i00

P: /devices/pci0000:00/0000:00:1e.0/0000:01:0a.1

E: UDEV_LOG=3

E: DEVPATH=/devices/pci0000:00/0000:00:1e.0/0000:01:0a.1

E: DRIVER=yenta_cardbus

E: PHYSDEVBUS=pci

E: PHYSDEVDRIVER=yenta_cardbus

从中可以看到声卡的PCI_SUBSYS_ID是1102:2001。现在我们就有了足够的信息来写udev的rules了。

在/etc/udev/rules.d下建立一个文件75-alsa_conf.rules

代码:

# udev rules file for my Audigy2 ZS Notebook devices (for udev 0.98 version)

# call /usr/local/sbin/switch_default_sound to change the link

# of /etc/asound.conf

#

#

ENV{PCI_ID}=="1102:0008", ENV{PCI_SUBSYS_ID}=="1102:2001",ACTION=="add", RUN+="/usr/local/sbin/switch_default_sound audigy2"

ENV{PCI_ID}=="1102:0008", ENV{PCI_SUBSYS_ID}=="1102:2001",ACTION=="remove", RUN+="/usr/local/sbin/switch_default_sound ac97"

在这个rules中,我们要求udev在PCI_ID为1102:0008且PCI_SUBSYS_ID为1102:2001的设备(就是处置的那块声卡)要被插入时,即ACTION为add时,调用"/usr/local/sbin/switch_default_sound audigy2",在声卡被移除时,即ACTION为remove时调用"/usr/local/sbin/switch_default_sound ac97"。

但为了能有效地restore声音,你需要在第一次插入声卡并设置好音量后手动运行一下alsactl store Audigy2。

另外,插拔声卡的时候要确认你没有在放音乐哦

PS:

1.PCI_SUBSYS_ID查不到也不要紧,只要把75-alsa_conf.rules改为:

....................

ENV{PCI_ID}=="1102:0008",ACTION=="add", RUN+="/usr/local/sbin/switch_default_sound audigy2"

ENV{PCI_ID}=="1102:0008",ACTION=="remove", RUN+="/usr/local/sbin/switch_default_sound ac97"

.....................

2.Ubuntu 系统 -》首选项-》音效-》把设备页所以默认的设备全部改为外置声卡

3./etc/asound.conf不存在,自己创建一个即可。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/28663.html