我用的是HASEE优雅HP530 D3本子,然后用VM6.5装Fedora11,装好后声卡发声不正常,用xmms播放Mp3时,发出的声音根本不是音乐,而是“咚咚 。。。”的声音,并且关了xmms后,也一直发出这种声音。另外,在网上找几个视频播放,也没有声音。原因是什么,不清楚。于是搜索声卡方面的资料,最后找到Linuxsir.org的北南文章《 用ALSA驱动声卡流程详解 》,按照这篇文章来做,也不清楚是怎样做的,突然发现声卡没有发出声音了,并且调节音量到最大,也没有声音。再在百度中搜索《速度与激情》在线观看,点击发现可以听到声音了,就这样,这个声卡不能发志或是发出“咚咚。。。”之类的声音的问题,被我稀里糊涂地给解决了。按照北南的文章,我做了以下几步:
0.查看声卡是不是已经能发声了
[root@localhost ~]# cat /usr/share/sounds/pop.wav > /dev/audio
[root@localhost ~]# cat /usr/share/sounds/pop.wav > /dev/dsp
[root@localhost ~]#
什么也没有听到,什么也没有看到
1.查看硬件芯片
[root@localhost beinan]# lspci -v
输出结果为:
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
Subsystem: VMware Inc Virtual Machine Chipset
Flags: bus master, medium devsel, latency 0
Kernel driver in use: agpgart-intel
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01) (prog-if 00 [Normal decode])
Flags: bus master, 66MHz, medium devsel, latency 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=64
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
Subsystem: VMware Inc Virtual Machine Chipset
Flags: bus master, medium devsel, latency 0
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01) (prog-if 8a [Master SecP PriP])
Subsystem: VMware Inc Virtual Machine Chipset
Flags: bus master, medium devsel, latency 64
[virtual] Memory at 000001f0 (32-bit, non-prefetchable) [size=8]
[virtual] Memory at 000003f0 (type 3, non-prefetchable) [size=1]
[virtual] Memory at 00000170 (32-bit, non-prefetchable) [size=8]
[virtual] Memory at 00000370 (type 3, non-prefetchable) [size=1]
I/O ports at 1460 [size=16]
Kernel driver in use: ata_piix
00:07.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (prog-if 00 [UHCI])
Subsystem: VMware Inc Virtual Machine Chipset
Flags: bus master, medium devsel, latency 64, IRQ 19
I/O ports at 1060 [size=32]
Kernel driver in use: uhci_hcd
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
Subsystem: VMware Inc Virtual Machine Chipset
Flags: medium devsel, IRQ 9
Kernel modules: i2c-piix4
00:0f.0 VGA compatible controller: VMware Inc Abstract SVGA II Adapter (prog-if 00 [VGA controller])
Subsystem: VMware Inc Abstract SVGA II Adapter
Flags: medium devsel
I/O ports at 1470 [size=16]
Memory at f0000000 (32-bit, non-prefetchable) [size=128M]
Memory at e8000000 (32-bit, non-prefetchable) [size=8M]
[virtual] Expansion ROM at 30010000 [disabled] [size=32K]
00:10.0 SCSI storage controller: BusLogic BT-946C (BA80C30) [MultiMaster 10] (rev 01)
Subsystem: BusLogic BT-946C (BA80C30) [MultiMaster 10]
Flags: medium devsel, IRQ 17
I/O ports at 1440 [size=32]
Memory at e8800000 (32-bit, non-prefetchable) [size=32]
[virtual] Expansion ROM at 30018000 [disabled] [size=16K]
Kernel modules: BusLogic
00:11.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)
Subsystem: Advanced Micro Devices [AMD] PCnet - Fast 79C971
Flags: bus master, medium devsel, latency 64, IRQ 18
I/O ports at 1080 [size=128]
[virtual] Expansion ROM at 30000000 [disabled] [size=64K]
Kernel driver in use: pcnet32
Kernel modules: pcnet32
00:12.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)
Subsystem: Ensoniq Creative Sound Blaster AudioPCI64V, AudioPCI128
Flags: bus master, medium devsel, latency 64, IRQ 19
I/O ports at 1400 [size=64]
Kernel driver in use: ENS1371
Kernel modules: snd-ens1371
2.系统内核版本
[root@localhost sounds]# uname -rmpi
2.6.29.4-167.fc11.i686.PAE i686 i686 i386
3.modeprob.conf的内容
没有找到modeprob.conf这个文件,但是根据文章,找到名为modules.conf的文件也可以。
modules.conf的内容如下:
# Added by VMware Tools
alias eth0 vmnics
probeall vmnics vmxnet pcnet32
alias char-major-14 es1371
看不懂是什么意思,本人Linux菜鸟一只。
4. lsmod查看已加载的内核模块
[root@localhost sounds]# lsmod
Module Size Used by
fuse 49780 2
ipt_MASQUERADE 2364 1
iptable_nat 5152 1
nf_nat 14736 2 ipt_MASQUERADE,iptable_nat
sco 9324 2
bridge 41488 0
stp 1944 1 bridge
llc 4780 2 bridge,stp
bnep 10888 2
l2cap 18884 3 bnep
bluetooth 44768 5 sco,bnep,l2cap
sunrpc 152352 1
ip6t_REJECT 3160 2
nf_conntrack_ipv6 11368 2
ip6table_filter 3132 1
ip6_tables 10712 1 ip6table_filter
ipv6 232288 22 ip6t_REJECT,nf_conntrack_ipv6
dm_multipath 13512 0
uinput 6496 0
ppdev 6304 0
snd_ens1371 20196 4
gameport 9708 1 snd_ens1371
snd_rawmidi 18728 1 snd_ens1371
snd_seq_device 5988 1 snd_rawmidi
snd_ac97_codec 91576 1 snd_ens1371
ac97_bus 1400 1 snd_ac97_codec
snd_pcm 62632 2 snd_ens1371,snd_ac97_codec
snd_timer 17888 1 snd_pcm
snd 49056 14 snd_ens1371,snd_rawmidi,snd_seq_device,snd_ac97_codec,snd_pcm,snd_timer
pcnet32 27968 0
parport_pc 22216 0
soundcore 5404 1 snd
parport 28496 2 ppdev,parport_pc
i2c_piix4 8480 0
snd_page_alloc 7644 1 snd_pcm
i2c_core 18056 1 i2c_piix4
mii 4028 1 pcnet32
pcspkr 2156 0
BusLogic 61836 3
什么意思,也不清楚,照着文章做就是了。
再接着来,
[root@localhost sounds]# ls /lib/modules/2.6.29.4-167.fc11.i686.PAE/kernel/
arch crypto drivers fs lib net sound
下面的,就是比较关键的了,因为我就是做了下面的,然后就突然发现声卡可以发声了的。
[root@localhost sounds]# modinfo snd-intel8x0
filename: /lib/modules/2.6.29.4-167.fc11.i686.PAE/kernel/sound/pci/snd-intel8x0.ko
license: GPL
description: Intel 82801AA,82901AB,i810,i820,i830,i840,i845,MX440; SiS 7012; Ali 5455
author: Jaroslav Kysela <perex@perex.cz>
srcversion: 76A91B3ED19728E89DFCF7D
alias: pci:v000010B9d00005455sv*sd*bc*sc*i*
alias: pci:v00001022d00007445sv*sd*bc*sc*i*
alias: pci:v00001022d0000746Dsv*sd*bc*sc*i*
alias: pci:v000010DEd0000026Bsv*sd*bc*sc*i*
alias: pci:v000010DEd000000EAsv*sd*bc*sc*i*
alias: pci:v000010DEd000000DAsv*sd*bc*sc*i*
alias: pci:v000010DEd0000008Asv*sd*bc*sc*i*
alias: pci:v000010DEd00000059sv*sd*bc*sc*i*
alias: pci:v000010DEd0000006Asv*sd*bc*sc*i*
alias: pci:v000010DEd0000003Asv*sd*bc*sc*i*
alias: pci:v000010DEd000001B1sv*sd*bc*sc*i*
alias: pci:v00001039d00007012sv*sd*bc*sc*i*
alias: pci:v00008086d00007195sv*sd*bc*sc*i*
alias: pci:v00008086d00002698sv*sd*bc*sc*i*
alias: pci:v00008086d000027DEsv*sd*bc*sc*i*
alias: pci:v00008086d0000266Esv*sd*bc*sc*i*
alias: pci:v00008086d000025A6sv*sd*bc*sc*i*
alias: pci:v00008086d000024D5sv*sd*bc*sc*i*
alias: pci:v00008086d000024C5sv*sd*bc*sc*i*
alias: pci:v00008086d00002485sv*sd*bc*sc*i*
alias: pci:v00008086d00002445sv*sd*bc*sc*i*
alias: pci:v00008086d00002425sv*sd*bc*sc*i*
alias: pci:v00008086d00002415sv*sd*bc*sc*i*
depends: snd-ac97-codec,snd-pcm,snd-page-alloc,snd
vermagic: 2.6.29.4-167.fc11.i686.PAE SMP mod_unload 686
parm: index:Index value for Intel i8x0 soundcard. (int)
parm: id:ID string for Intel i8x0 soundcard. (charp)
parm: ac97_clock:AC'97 codec clock (0 = whitelist + auto-detect, 1 = force autodetect). (int)
parm: ac97_quirk:AC'97 workaround for strange hardware. (charp)
parm: buggy_semaphore:Enable workaround for hardwares with problematic codec semaphores. (bool)
parm: buggy_irq:Enable workaround for buggy interrupts on some motherboards. (bool)
parm: xbox:Set to 1 for Xbox, if you have problems with the AC'97 codec detection. (bool)
parm: spdif_aclink:S/PDIF over AC-link. (int)
parm: enable:bool
parm: joystick:int
然后是
[root@localhost sounds]# modprobe snd-intel8x0
WARNING: All config files need .conf: /etc/modprobe.d/vmware-tools, it will be ignored in a future release.
操作到这一步,突然发现之前的“咚咚。。。”的声音没了,然后就找在线观看,发现好久未闻的声音,终于出来了。然后又试了一下Mp3,有声音了,虽然比较卡,但总比之前没有强。
这时,再来lsmod查看加载的内核模块
[root@localhost sounds]# lsmod
Module Size Used by
snd_intel8x0 27440 0
fuse 49780 2
ipt_MASQUERADE 2364 1
iptable_nat 5152 1
nf_nat 14736 2 ipt_MASQUERADE,iptable_nat
sco 9324 2
bridge 41488 0
stp 1944 1 bridge
llc 4780 2 bridge,stp
bnep 10888 2
l2cap 18884 3 bnep
bluetooth 44768 5 sco,bnep,l2cap
sunrpc 152352 1
ip6t_REJECT 3160 2
nf_conntrack_ipv6 11368 2
ip6table_filter 3132 1
ip6_tables 10712 1 ip6table_filter
ipv6 232288 22 ip6t_REJECT,nf_conntrack_ipv6
dm_multipath 13512 0
uinput 6496 0
ppdev 6304 0
snd_ens1371 20196 4
gameport 9708 1 snd_ens1371
snd_rawmidi 18728 1 snd_ens1371
snd_seq_device 5988 1 snd_rawmidi
snd_ac97_codec 91576 2 snd_intel8x0,snd_ens1371
ac97_bus 1400 1 snd_ac97_codec
snd_pcm 62632 3 snd_intel8x0,snd_ens1371,snd_ac97_codec
snd_timer 17888 1 snd_pcm
snd 49056 15 snd_intel8x0,snd_ens1371,snd_rawmidi,snd_seq_device,snd_ac97_codec,snd_pcm,snd_timer
pcnet32 27968 0
parport_pc 22216 0
soundcore 5404 1 snd
parport 28496 2 ppdev,parport_pc
i2c_piix4 8480 0
snd_page_alloc 7644 2 snd_intel8x0,snd_pcm
i2c_core 18056 1 i2c_piix4
mii 4028 1 pcnet32
pcspkr 2156 0
BusLogic 61836 3
发现比上次使用lsmod的结果多了一行(没有认真地对比前后两次的结果)如下:
snd_intel8x0 27440 0
我想,这行输出的原因,可能就是通过modprobe snd-intel8x0这句把声卡加载了的原因。
并且,再次运北南用来测试声卡的语句,还是什么也没有听到,什么也没有看到
[root@localhost ~]# cat /usr/share/sounds/pop.wav > /dev/audio
[root@localhost ~]# cat /usr/share/sounds/pop.wav > /dev/dsp
既然北面说命令是用来检测声卡是否发声的语句,之前能时声发不没有听到任何东西,现在能发声了,也没有听到什么,这是为什么,不清楚。