|
系统 : Debian SID + kernel 2.6.6 + soltek(就是这块主板有问题)
最近很多使用 VIA 声卡的朋友都碰到了无法在 ALSA 驱动下正常工作的问题,那么ALSA是不是不支持我们的 VIA 声卡呢?
答案是否定的, ALSA 完全支持 VIA 系列声卡,那么为什么在 alsaconf 运行过后并且运行 kmix 跳高音量得到的仍然是无声的世界?
为了搞清楚这个问题,首先打开ALSA的文档:
/usr/kernel/linux/Documentions/sound/alsa/ALSA-Configuration.conf文件
[code:1]
查看其中的 Module snd-via82xx 节:
其中有这样的描述:
ac97_quirk - AC'97 workaround for strange hardware
See the description of intel8x0 module for details。
转换到 Module snd-intel8x0 节:
其中有这样的描述:
The ac97_quirk option is used to enable/override the workaround
for specific devices. Some hardware have swapped output pins
between Master and Headphone, or Surround. The driver provides
the auto-detection of known problematic devices, but some might
be unknown or wrongly detected. In such a case, pass the proper
value with this option.
[/code:1]
聪明的你发现什么问题了吗?
The driver provides
the auto-detection of known problematic devices, but some might
be unknown or wrongly detected.
我们尝试自己设定 ac97_quirk 的值。
打开 /etc/modprobe.conf 文件,其中关于 via 声卡设定是这样的:
[code:1]
alias char-major-116 snd
alias char-major-14 soundcore
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
alias snd-card-0 snd-via82xx
alias sound-slot-0 snd-via82xx
options snd-via82xx ac97_quirk=0
[/code:1]
看到多了什么吗?对了对后一行,设定了 snd-via82xx 的一个选项 ac97_quirk=0 。
这个时候我们再重新启动alsa,/etc/init.d/alsa restart
$cat /proc/asound/cards
$cat /proc/asound/oss/sndstat
如果成功驱动的化其中会有信息,当然无声的情况下它也是会有信息的,只能代表你的ALSA启动了,如果检测到你的声卡的话其中会有 VIA 8233A 等类似字样。
这个时候用 mplayer 放一部电影试试,成功了吗?我是成功了。
#mplayer -vo xv -ao alsa1x martix.avi
普通用户默认没有权限(对于使用了 devfs),文档中是这样说的,
添加如下内容到 devfs.conf
[code:1]
LOOKUP snd MODLOAD ACTION snd
REGISTER ^sound/.* PERMISSIONS root.audio 666
REGISTER ^snd/.* PERMISSIONS root.audio 0666
[/code:1]
我并没有试验成功,我的 Debian 中 devfs 是开启的。
虽然驱动起来了,可是问题还是很多,最可怕的是居然不支持多音频流,基本上这个 ALSA 驱动没有多大用处,我已经换回 OSS 了。
后记:
樱家冢维护的 FAQ 种的解决方案改snd-via82xx 字串替换为via82cxxx_audio 的确可以驱动,不过这个时候使用的仍然是老式的 OSS 驱动,我曾经再第一时间测试过,不信的话可以删除你的 ALSA 驱动模块保留 OSS 的,怎么样,还是驱动起来了吧, cjacker 说 2.6 种的 OSS 不可用也是不对的。不过那个时候我自己也没有找到解决方案,况且 OSS 的驱动我一直用的很顺利。 |
|