关于Linux下声卡配置文章真是不少,如果你不是很有经验的话,它们对你多少有些帮助。Linux支持的声卡种类远比Win9x少,即使厂商提供了Linux的驱动程序,普通用户也很难装上。我曾为驱动一块ALS007声卡花了差不多一个月时间研究试验,当我第一次听到它发出声音,你想像不出我有多感慨!如果拥有一块SB16该是多幸福,你何尝会为驱动程序的问题操心?
起初我装的是Redhat Linux 6.0,它能正确检测出ALS007声卡芯片,但无论自动、手动配置都报告错误,/etc目录下的modules.conf和isapnp.conf文件我反复改,但没有一次成功!为此我竟学会使用复杂的vi编辑器。地址、中断、DMA,无非就那几个参数,一个个地改着试,没用。英文的HOW TO文章看了一篇又一篇,没一点用。启动过程中多次出现的“无效的参数-mpu_irq”信息使我想到:是不是它的驱动有BUG?ALS007调用的是sb.o模块,因为它宣称和SB16兼容,我选SB16试,仍是错误。它不是提示我mpu_irq无效吗?我就删掉,看你怎么说!删掉modules.conf最后一行中mpu_irq=9。重启,进入KDE,打开MIDI播放程序,很意外地我听到了声音!我看到了希望的署光!找几外WAV文件放,仍是不行,结结巴巴的,似乎还有设备冲突。改了一次又一次,没用。装红旗1.0,仍是同样问题。我才不甘心投降。继续找文章看(全在电脑上看的),忽然有一天从某篇长篇大文中的几句话捕捉到了惊喜!找到ALS007的DOS驱动程序装,它在批处理文件autoexec.bat加了一句:c:\alsound\alinit c\:windows。alinit是声卡的初始化程序,设置声卡的DOS环境变量。用SET命令查看环境变量,多了一行:BLASTER=A220 I5 D1 H5 P330 T6。从DOS时代摸爬滚过来的人不应对它们陌生,我奇怪的是它竟对我的Linux有用!在DOS下用loadlin程序引导Linux,执行sndconfig --noprobe,选SB16。出人意料的顺利,从两个塑料喇叭里传出的略显刺耳的声音刺激我激动地大叫,终于成功了!这就是我花了近一个月功夫的成果,这么简单!reboot再试,正常!关机,开机,进Linux,可憎的错误信息又来了。按Crtl+Alt+Del重启,进win98的DOS,这是为了获得ALS007的DOS环境变量,热启动,进Linux,OK!我确定ALS007的Linux驱动依赖于它的DOS环境变量!
有了这一点经验,我配RTA3000(芯片为ALS120)、太阳花3D Storm等卡,真是轻而易举!
要点:
1、获得声卡DOS下的配置参数;
2、设置DOS环境变量,由声卡初始化程序自动设置;
3、热启动进Linux,设置声卡时跳过自动检测,即执行sndconfig --noprobe,类型选SoundBlaster 16,设定参数同DOS。