Hey guys, I've been fighting with this all night with no
luck.
 
I've just bought a Creative Soundblaster Live! 5.1 Model
SB0060CA
 
lspci -vv finds it just fine:
 
00:0f.0 Multimedia audio controller: Creative Labs SB
Live! EMU10k1 (rev 0a)
        Subsystem: Creative Labs SBLive! Digital 5.1 Model
SB0060CA
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV-
VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr-
DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (500ns min, 5000ns max)
        Interrupt: pin A routed to IRQ 9
        Region 0: I/O ports at d800 [size=32]
        Capabilities: [dc] Power Management version 1
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)                 
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
 
At first, the subsystem number didn't match the pci.ids
database, but I added a line to the file and now it shows
up fine: 
1102  Creative Labs
        0002  SB Live! EMU10k1
                1102 0020  CT4850 SBLive! Value
                1102 0021  CT4620 SBLive!
                1102 002f  SBLive! mainboard implementation
                1102 4001  E-mu APS
                1102 8022  CT4780 SBLive! Value
                1102 8023  CT4790 SoundBlaster PCI512
                1102 8024  CT4760 SBLive!
                1102 8025  SBLive! Mainboard Implementation
                1102 8026  CT4830 SBLive! Value
                1102 8027  CT4832 SBLive! Value
                1102 8028  CT4760 SBLive! OEM version
                1102 8031  CT4831 SBLive! Value
                1102 8040  CT4760 SBLive!
                1102 8051  CT4850 SBLive! Value
                1102 8061  SBLive! Player 5.1
                1102 8064  SB Live! 5.1 Model SB0100
                1102 8065  SBLive! 5.1 Digital Model SB0220
                1102 8066  SBLive! 5.1 Digital Model
SB0060CA

I thought maybe that'd do the trick, but no dice.

Compiled alsa-driver-1.0.1 with --enable-sequencer
--with-cards=emu10k1 --with-debug=full

Compiled fine, no errors.
 
Installing the driver gives the following:
 
# modprobe snd-emu10k1
/lib/modules/2.4.24/kernel/sound/pci/emu10k1/snd-emu10k1.o
: init_module: No such device
Hint: insmod errors can be caused by incorrect module
parameters, including invalid IO or IRQ parameters.
You may find more information in syslog or the output from
dmesg
/lib/modules/2.4.24/kernel/sound/pci/emu10k1/snd-emu10k1.o
: insmod
/lib/modules/2.4.24/kernel/sound/pci/emu10k1/snd-emu10k1.o
failed
/lib/modules/2.4.24/kernel/sound/pci/emu10k1/snd-emu10k1.o
: insmod snd-emu10k1 failed

soundcore is compliled into the kernel, and that worked
fine with the ALSA onboard via sound drivers I was using
before.
 
dmesg gives:
 
PCI: Found IRQ 9 for device 00:0f.0
PCI: Sharing IRQ 9 with 00:09.0
ALSA control.c:323: control 2:0:0:Center Playback Volume:0
is already present
EMU10K1/Audigy soundcard not found or device busy
 
/etc/modules.conf is:
 
# ALSA portion
alias char-major-116 snd
alias snd-card-0 snd-emu10k1
 
# module options should go here
# options snd-via82xx index=0 dxs_support=2
 
# OSS/Free portion
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0
 
# card #1
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
 
In short, I can see no reason why this isn't working.
 
I thought maybe that this was a PCI ID difference deal,
but my brief look into the driver code seems to show that
all Manufactuer 1102 Model 0002 cards are treated as SB
Lives - so the perhaps new/rare 8066 subsystem code
shouldn't matter

static struct pci_device_id snd_emu10k1_ids[] = {
        { 0x1102, 0x0002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
   /* EMU10K1 */
        { 0x1102, 0x0006, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0
},
   /* Dell OEM version (EMU10K1) */
        { 0x1102, 0x0004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1
},
   /* Audigy */
         { 0, }
};
 

Much Googling has not turned up anything useful.
 
Any ideas? I'd kinda like to get my card working.

ADDENDUM: Through the ancient and proven printk debugging
method, I've been able to determine that this part of the
code is the problem:

if ((err = snd_emu10k1_mixer(emu)) < 0) {
                snd_card_free(card);
                return err;
        }

If I comment that out, the module loads - but playing
sounds doesn't work, and I get this message in dmesg:

ALSA ../../alsa-kernel/pci/emu10k1/emupcm.c:750: ERROR
(kctl != ((void *)0)) (called from e1c231f5)
ALSA ../../alsa-kernel/pci/emu10k1/emupcm.c:750: ERROR
(kctl != ((void *)0)) (called from e1c2320f)
ALSA ../../alsa-kernel/pci/emu10k1/emupcm.c:750: ERROR
(kctl != ((void *)0)) (called from e1c23229)
 
I haven't traced through the mixer code to follow that
through  - hopefully this is enough for someone who
actually knows the code to go on.
 
FURTHER DEBUGGING:

This code in alsa-kernel/pci/emu10k1/emumixer.c

(note nasty debugging!)

                memset(&bus, 0, sizeof(bus));
                bus.write = snd_emu10k1_ac97_write;
                bus.read = snd_emu10k1_ac97_read;

                printk(KERN_ERR "DEBUG:
snd_emu10k1_mixer0\n");

                if ((err = snd_ac97_bus(emu->card,
&bus,&pbus)) < 0)
                        return err;

                printk(KERN_ERR "DEBUG: snd_emu10k1_mixer
1\n");

                memset(&ac97, 0, sizeof(ac97));
                ac97.private_data = emu;
                ac97.private_free =
snd_emu10k1_mixer_free_ac97;

                printk(KERN_ERR "DEBUG: snd_emu10k1_mixer
1.5\n");

                if ((err = snd_ac97_mixer(pbus, &ac97,
&emu->ac97)) < 0)
                        return err;

                printk(KERN_ERR "DEBUG: snd_emu10k1_mixer
2\n");

produced:

DEBUG: entered snd_card_emu10k1_probe
DEBUG: 0
PCI: Found IRQ 9 for device 00:0f.0
PCI: Sharing IRQ 9 with 00:09.0
DEBUG: 1
DEBUG: 2
DEBUG: 3
DEBUG: 4
DEBUG: 5
DEBUG: entered snd_emu10k1_mixer
DEBUG: snd_emu10k1_mixer 0
DEBUG: snd_emu10k1_mixer 1
DEBUG: snd_emu10k1_mixer 1.5
ALSA control.c:323: control 2:0:0:Center Playback Volume:0
is already present
EMU10K1 DEBUG: Check to see if this message works
EMU10K1/Audigy soundcard not found or device busy

So the problem lies in:

if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0)
                        return err;

With that line commented out, the module loads fine with no
errors in dmesg or elsewhere, and sound programs open the
device justr fine - but no sound.

EVEN MORE

I tried using the emu10k1.o non-ALSA driver from Creative
(V0.20) and that worked! Mostly. The front two speakers
work, but nothing else does.

After configuring emu10k1.conf and running emu-script, some
really weird things happen - the volume control in xmms no
longer affects the left-front speaker, for example.

I get the feeling that something about the mixer or control
registers is different on my card than the usual SB Live!
5.1 cards.....

DG


-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
_______________________________________________
Alsa-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to