*BSDThis forum is for the discussion of all BSD variants.
FreeBSD, OpenBSD, NetBSD, etc.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Hi, I'm trying to get my SoundBlaster Audigy (which is essentially a cut down SB Live!- they use the same driver in Linux) to work in FreeBSD 4.5. From what I can make out from the FreeBSD Handbook, I just need to add
device pcm # For SBLive, etc.
to the kernel configuration file I'm using. This doesn't work though ("dmesg | grep pcm" produces no result). Any ideas? And yes, I have actually compiled, loaded (with LILO) and booted from my new kernel
Do you have support in the kernel? I had to hand edit the configuration file then recompile the kernel to my SB16 (they shouldn't be too different... are they?). Then all worked...
The kernel should see it upon booting though. If it's really "almost" a SB Live it should look something like:
pcm0: <Creative EMU10K1> port 0xd800-0xd81f irq 9 at device 10.0 on pci2ke
I would think that if grep EMU10K1 doesnt give anything either the newpcm driver is not what you need for your soundcard after all. Got more details, eg can you read something on the main chip or have a vendor guide?
You know, back in the day, when I was trying to get
a fairly rare soundblaster to work, I got the same thing
you did, an unknown card with a vendor ID and a device
ID. That's because vendor and device id's change for random
reasons even though the interface often doesn't.
In the end, you find some place like
/usr/src/sys/dev/sound/pci
and you might add some stuff to some defines there.
Basically the deal is this:
deviceID<<16 | vendorID gives a 4 byte number which is used
by the kernel routines to autoprobe for your card. With
some experimentation, you can modify the files here to add
the particular number corresponding to the card.
OK, so the file in that directory which you seem to want to
play with is emu10k1.c.
As you can see the way that the emu10k1 get's detected
is by:
emu10k1.c:39:#define EMU10K1_PCI_ID 0x00021102
and later in a case statement something it gets used
emu10k1.c:1400: case EMU10K1_PCI_ID:
I think you want to just add a line
#define EMU10K1_PCI_ID_2 0x00041102
and then change the case to
emu10k1.c:1400: case EMU10K1_PCI_ID: case EMU10K1_PCI_ID_2:
Then rebuild the kernel and pray.
NOTE: this is a very nice way to detect crappy modems too.
Thanks for the tip Haven't got it working yet (I've tried the various IDs and it always says it can't map the registers, which presumably indicates it's finding the wrong card, or the card isn't what the driver expects). Anyway, it's at least given some interesting results.
This might help people who need to do the same thing...The #defined ID is the dev=[number] ID followed by the vendor=[number] ID, i.e. for
pci2: <unknown card> (vendor=0x1102, dev=0x0004) at 11.0
you'll want to set the ID the driver's looking for to
0x00041102
I found this by modifying the driver source to print the IDs of the unknown cards it found.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.