sound card order changes on boot-up

Everything seems to be working pretty good on my system but my problem is every time I boot up I never know what my sound cards place will be given, 0,1, or 2. I have three sound devices.
1 - Onboard - disabled in bios but still shows up in Gusty-Ubuntu studio
2 - M-audio 2496
3 - Sound Blaster Live

I mainly use just the M-audio but sometimes I might want some sound out of the SBlive. Anyways everytime I boot up I have to check “/proc/asound/cards” to find the number of each card to set up Jack for recording. Is there any way to keep the card numbers constant on every boot?


http://alsa.opensrc.org/index.php/MultipleCards

Thanks for the link.
Great reading but wow is all I can say.
There’s so many different things they tell you to do I have no idea where to start.
It seems to me that the programmers should have come up with a simple interface to name, make symbolic links & whatever else is needed to solve this multiple card problem.
I’m still amazed at all that can be done with Ardour.

The problem is: which programmers?

ALSA developers?
People who work on a specific Linux distribution?
People who work on more general Linux audio software?

The basic step is to add a snd_index argument to the device driver modules in /etc/modules.conf or its equivalent on your Linux distribution. This forces each device supported by the driver to be initialized in a specific order. The rest is gravy. Using multiple USB devices is a bit more complicated, because you have to find a way to distinguish between the devices even though they are handled by the same driver (generally using vendor and/or PCI device IDs). Handling multiple identical devices is, at present, for wizards only.

Linux has a steep learning curve, but then the limits are gone.

This is the best solution I have ever found to prevent ubuntu from loading different soundcards on boot up, read down, there is a section that says “Configuring default soundcards / stopping multiple soundcards from switching”

Still it’s good to go through th whole thing. I always do it when installing new ubuntu’s.

LINK: http://ubuntuforums.org/showthread.php?t=205449

in the end of /etc/modprobe.d/alsa-base

add this :

options snd-<your onboard alsa driver’s name> index=0
options snd-ice1712 index=1
options snd-<sound SB alsa driver’s name> index=2

I think it is as simple as this. I did that at the very beginning of my PC studio installation because I had the same problems (since then, I disabled the onboard chip, totally useless and sharing the IRQ with my HDSP card).

Thanks again, I’m going to try your suggestions to see what works best.
The Linux community alone is enough to keep me into Linux.
As far as the question of which programmers should come up with an interface for handling multiple sound cards I see the point. I would think that each distribution should have already straightened it out by now especially Ubuntu Studio since it is designed with DAW’s & multimedia in mind. Why not just have a simple program in the repos.
I’m going to try to write a script for it if I can ever figure out how to do it.
Maybe I’ll find out it’s not so easy but then again I’m no programmer.

Well I tried naming my cards in the alsa-base file & it ended up not recognizing anything
so when I rebooted & checked “/proc/asound/modules” it showed nothing.
I had no sound at all.
I took out the 3 lines in the “alsa-base” file & things are back to normal.
I assume I’m not putting the names in right.
Is it case sensitive because the “/proc/asound/modules” file the cards are lower case & in the “/proc/asound/cards” file they’re uppercase.
Here’s what showed in “modules”
0 snd_ice1712
1 snd_via82xx
2 snd_emu10k1
Here’s what I put into “alsa-base”
options snd-ice1712 index= 0
options snd-emu10k1 index= 1
options snd-via82xx index= 2
Was I supposed to do:
options snd-snd_ice1712 index= 0
???

Problem solved:
My mistake was leaving a space between the “= 0”
Once I took the space away “=0” everything works fine.
I rebooted a few times & cards recognized in the same order every time.
Thanks again,
It really was as simple as adding those 3 lines to the alsa-base file.