greetings from sunny Northmead. Apologies if this is a duplicate, but I
didn't receive a copy of my first sending.

I've cruised along with a 2.6.18 kernel that I compiled myself, for a
while now, on a Gigabtye board with NVidia NForce 430 southbridge, AMD
Athlon X2 cpu. For various reasons I've had to upgrade to the 2.6.24.3
kernel, so I compiled it with Mandrake's 4.02 gcc compiler. No problems,
up and running with X OK. But no ALSA sound now.

Research indicates the builtin sound chip is MCP51 High Definition
Audio, ALC880 codec, requiring snd-hda-intel driver. That is included as
a module, and I also included the codec in the kernel build. I can load
snd-hda-intel OK, it shows up in lsmod along with soundcore, snd, etc :-
bash-3.00# lsmod
Module                  Size  Used by
snd_hda_intel         321700  0
sg                     35352  0
snd_hwdep               8584  1 snd_hda_intel
snd_seq_dummy           3524  0
snd_seq_midi_event      7616  0
snd_seq                55392  2 snd_seq_dummy,snd_seq_midi_event
snd_seq_device          7508  2 snd_seq_dummy,snd_seq
snd_pcm                80776  1 snd_hda_intel
snd_timer              21640  2 snd_seq,snd_pcm
snd_page_alloc          8848  2 snd_hda_intel,snd_pcm
snd                    57128  7
snd_hda_intel,snd_hwdep,snd_seq,snd_seq_device,snd_pcm,snd_timer
soundcore               7328  1 snd

But ALSA can't detect the sound card. All apps return error messages
saying device not found. E.g. :
bash-3.00#aplay --list-devices
aplay: device_list:207: no soundcards found...

bash-3.00# alsamixer
alsamixer: function snd_ctl_open failed for default: No such file or
directory

Yet the device shows up in /proc :-
bash-3.00# cat /proc/asound/cards
0 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xf5100000 irq 22

So my question is : where does ALSA look for the sound card ? What is it
expecting to find that is wrong or missing ? I have found doco that
takes for granted that if it shows up in ?proc/Asound/cards then ALSA
will find it, no explanations of what it means if it can't.
I've tried gdb with aplayer and get this, which is followed by the error
message :-
Breakpoint 3, snd_card_load1 (card=0) at cards.c:47
47              sprintf(control, SND_FILE_CONTROL, card);
(gdb) n
49              open_dev = snd_open_device(control, O_RDONLY);
(gdb) n
51              if (open_dev < 0) {
(gdb) n
53                      sprintf(aload, SND_FILE_LOAD, card);
(gdb) print control
$7 = "/dev/snd/controlC0", '\0' <repeats 11 times>

I have no /dev/snd  ... is this the problem ? I've tried setting it up
with makedev, but that just returns
bash-3.00# cat /dev/snd/controlC0
cat: /dev/snd/controlC0: No such device

even though it appears as a file.

So - why no /dev/snd, do I really need it for ALSA, and why was it
automagically there for my old kernel ? Any doco around on this that
goes into nuts and bolts ? Further reading seems to indicate that udev
now seys up /dev system, so does this mean my udev is broken ? It worked
OK for my 2.6.18 kernel - apart from my USB printer, for which I had to
use mknod to setup /dev/lp0. I tried mknod to create /dev/snd, but no
luck.
thanks
Rod






-- 
SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/
Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html

Reply via email to