Bug 88074 - Problems with multiple sound cards and Soundblaster Live!
Summary: Problems with multiple sound cards and Soundblaster Live!
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: sndconfig
Version: 9
Hardware: i686
OS: Linux
Target Milestone: ---
Assignee: Bill Nottingham
QA Contact: David Lawrence
Depends On:
TreeView+ depends on / blocked
Reported: 2003-04-05 07:37 UTC by System Detection Staff
Modified: 2014-03-17 02:35 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2005-01-21 22:17:37 UTC

Attachments (Terms of Use)

Description System Detection Staff 2003-04-05 07:37:31 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030225

Description of problem:
I have a nice virgin RedHat 9 machine, though I doubt this is restricted to
RedHat 9.  It has two sound "cards" in it.  One is the on-board C-Media
Electronics Inc CM8738 (rev 16), one is a Creative Labs SB Live! EMU10k1 (rev 7).

In this configuration, I discovered three problems:
* Failure to kudzu-configure second sound card
* Failure to sndconfig/redhat-config-soundcard load slot 1
* Failure to properly manipulate /dev entries to make everything work

When I started up, kudzu detected the CM8738.  It also detected the SB (as seen
in /etc/sysconfig/hwconf), but did not offer to configure it.  It should have
done so.

Failing to do so, I added sound-slot-1 emu10k1 to /etc/modules.conf and then ran
sndconfig and redhat-config-soundcard.  The former ignored the second card.  The
latter changed the driver to "disabled" for no apparent reason.  After restoring
the driver entry, and manually modprobing it, redhad-config-soundcard was able
to play both tests.  In this state, the onboard CM8738 was primary, and the SB
was secondary.
alias sound-slot-0 cmpci
alias sound-slot-1 emu10k1

However, if I configured (or use redhat-config-sndconfig to change the primary
card) /etc/modules.conf to cause the SB to be the default card (important since
the CM8738 sucks in comparison), everything does NOT work.  Specifically,
redhat-config-soundcard failed to play the test tone, and the while the mixer
sees and can control both devices (determined by hooking the microphone up and
hearing the sound level change in the "pass-through" mode), and I can play the
/dev/dsp SB, I cannot play the CM8738.
alias sound-slot-0 emu10k1
alias sound-slot-1 cmpci

After extensive debugging and gnashing of teeth, I instrumented the cmpci driver
to print out the minor device numbers it received when it registered the drivers
with the kernel.  When it was registered first, it got
0(mixer),2(midi),3(audio/dsp),15(fmsynth) minor numbers.  There is no /dev entry
corresponding to major 14, minor 15--there should be since the driver writer
went to all that trouble.  However, when the cmpci driver was registered second,
it received minor numbers 16(mixer),34(midi),35(audio/dsp),15(fmsynth).  In
other words, it received the first card's fmsynth slot, the second card's mixer
slot, and the third card's midi & audio/dsp slots.  Major bad news.  This is for
a number of reasons:  1) the SB does not register a fmsynth.  2) the SB
registers two midi and audio/dsp slots (for the rear channel surround-sound) 3)
the SB registers only one mixer.  All well and good, but the system (be it
kudzu, sndconfig, redhat-config-soundcard) doesn't handle this properly.  It
should detect this case and manipulate the /dev/entries so that the system tools
see mixer/dsp/synth as the primary card, mixer1/dsp1/synth1 as the secondary
card, and so forth.  I assume the linux filesystem project will have to come up
with a naming scheme to support surround channels and fmsynth device names, but
almost anything would be better than the current situation (e.g. /dev/dsp-rear
or /dev/snd0/dsp /dev/snd0/dsp-rear, etc).

Being an expert, I was able to muddle through to debug this problem, but there
is zero chance any non-programmer could discover what was wrong and come up with
a solution (modify modules.conf, rename /dev entries, add new /dev entries to
replace ones that were moved, etc).

Version-Release number of selected component (if applicable):
Virgin RedHat 9

How reproducible:

Steps to Reproduce:
1.Get machine with CM8738 and SB Live (or probably SB Live and anything else)
2.Install RedHat 9
3.Attempt to use both sound cards via sndconfig/redhat-config-soundcard/whatever

Actual Results:  1 of 2 Sound cards not detected/configured, not probed, not
properly named in /dev, etc

Expected Results:  Sound cards should be detected/configured, should be probed,
should have sane entries in /dev that system tools understand, etc.

Additional info:

Comment 1 Bill Nottingham 2003-04-07 21:23:38 UTC
The 'disabled' issue and not configuring the SBLive by default when it's second
is an issue with the pci probing code, it will be fixed in newer releases. The
device naming issues are... more complicated.

Comment 2 Bill Nottingham 2005-01-21 22:17:37 UTC
sndconfig is no longer developed, and this release has reached end-of-life.
Closing out old bugs.

Note You need to log in before you can comment on or make changes to this bug.