Enabling sound?

Dylan Cochran heliocentric at gmail.com
Sat Jul 22 07:05:21 UTC 2006


> >> I don't get the pcm0 lines that section 7.2.2 in the manual talks
> >> about.  cat /dev/sndstat returns:
> >>     FreeBSD Audio Driver (newpcm)
> >>     Installed devices:
> >> and nothing else.

The driver isn't attached to the device, either because the pci id's
don't match or the card isn't using an emu10k* chip. Please type
pciconf -l -v and reply with the portion that matches the card.

> >>
> >> kldload snd_emu10k1 yields no output whatsoever.  When followed by cat
> >> /dev/sndstat it produces the same outputs as above.
> >>
> >> kld_load snd_driver yields:
> >>     ppc0: parallel port not found.
> >>     sio1: configured irq 3 not in bitmap of probed irqs 0x20
> >>     sio1: port may not be enabled
> >>     ppc0: parallel port not found.
> >>     sio1: configured irq 3 not in bitmap of probed irqs 0
> >>     sio1: port may not be enabled
> >>     ppc0: parallel port not found.
> >>     sio1: configured irq 3 not in bitmap of probed irqs 0
> >>     sio1: port may not be enabled
> >>     ppc0: parallel port not found.
> >>     sio1: configured irq 3 not in bitmap of probed irqs 0
> >>     sio1: port may not be enabled
> >>     ppc0: parallel port not found.
> >>     sio1: configured irq 3 not in bitmap of probed irqs 0
> >>     sio1: port may not be enabled
> >>     ppc0: parallel port not found.
> >>     sio1: configured irq 3 not in bitmap of probed irqs 0
> >>     sio1: port may not be enabled
> >>     ppc0: parallel port not found.
> >>     sio1: configured irq 3 not in bitmap of probed irqs 0
> >>     sio1: port may not be enabled

This is because snd_driver kldload's EVERY known sound driver,
including ones for ISA. Hence the use in the handbook of only using it
to find the driver for your card. (Blind probing ISA is a quick way to
crash an older machine)

> >>
> >> I recompiled with the sound and emu10k1 drivers commented out, and the
> >> kldload and cat /dev/sndstat commands still yield the same.
> >>

compiling the kernel with those options is almost exactly the same as
kldloading it after it boots.

> >> I need to get sound enabled on this box, so I can do some online
> >> training provided through streaming video.  Please, please, please tell
> >> me I don't have to break down and install wankers on this thing ...

pciconf -l -v will be the best bet, at least you'll have a better idea
of what you're dealing with.

>     isab0: <PCI-ISA bridge> at device 10.0 on pci0
>     .
>     .
>     .
>     pci3: <multimedia, audio> at device 10.0 (no driver attached)

IIRC, and I'm really not 100%, that the older emu10k1 cards used a
pci-isa bridge to the actual device (I'm away from my machine with a
working one of those cards, so I can't confirm that's normal, though I
recall seeing that in dmesg).

>
> I've re-compiled my kernel yet again to remove the sio device, since
> this thing has no 8250 or 16[45]50 serial ports on it, which got rid of
> the error messages in dmesg I was seeing about the port not being
> enabled and the IRQ not mapping.
>
> It also has no parallel port on it -- can I remove the ppc, ppbus, lpt,
> plip, and ppi devices without breaking anything else?

NO, you can't remove ppbus in 6.1 or any previous versions I've tried.
And it's a quick way to kernel panic on boot (the note in the GENERIC
kernel comments agrees with me, it IS required for i386 at least for
now).

>
> The only peripheral ports this thing has on it are USB2.
>
> I'm pretty much stuck with a custom kernel on this machine, since the
> wireless network I'm on requires WEP, and the wlan_wep module would need
> to be loaded by hand if I went with the generic kernel and module
> loading ... which would also mean hand-starting dhcpclient and ifconfig,
> since both will fail at boot-time without wlan_wep.  All the wireless
> stuff works just fine with ath, ath_hal, ath_rate_sample, wlan, and
> wlan_wep compiled into the kernel.

You don't really need to do this, though it's irrelevant to the problem at hand.

You can use/boot/loader.conf can load ko's at boot time before the
kernel is loaded, /boot/defaults/loader.conf has examples at the
bottom. typically it's module_load="YES"

You can also add a shell script to  /usr/local/etc/rc.d/ that will
load it and add a tunable in rc.conf that will enable/disable wireless
on boot, just add a BEFORE: netif line. Use rcorder /etc/rc.d/*
/usr/local/etc/rc.d/* to make sure your script is before netif (this
will make sure the drivers are loaded before dhclient and everything
else).

>
> The only thing I can't seem to get working is this blasted sound card.
> I wouldn't even worry about it if I didn't have to do this stupid flash
> based video training crap (why can't they just send me TFM so I can R
> it?!?). *sigh*

I hope this helps, if you understand C and how pci works you can use
the pci id output that pciconf provides and modify the #define
EMU10K1_PCI_ID	0x00021102 line in /usr/src/sys/dev/sound/pci/emu10k1.c
to match it, this will force the driver to try to bind to the card.
This may not work, it's not supported, and definately DON'T link the
driver to the kernel (ie, don't add a device snd_emu10k1 line to the
kernel config) in the off chance it causes a strange hard lock
problem.

Good luck :)


More information about the freebsd-questions mailing list