I found out that udev is now required to correctly setup /dev for all
devices, including sound cards. Apparently it doesn't startup correctly
on boot, so I've added udevstart to my logon script and all devices are
now correctly setup. ALSA now works.
Rod
On Wed, 2008-03-05 at 15:48 +1100, Rod Butcher wrote:
> 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