Red Hat Bugzilla – Bug 88074
Problems with multiple sound cards and Soundblaster Live!
Last modified: 2014-03-16 22:35:31 EDT
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
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
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
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.
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.
sndconfig is no longer developed, and this release has reached end-of-life.
Closing out old bugs.