I have four sound cards: two that I use (on-board HDA and a creative live card) and two that I don't (HDA on the video card and USB audio in the monitor). /etc/modprobe.conf is set up correctly:
# Card 0 - Live
options snd-emu10k1 index=0
install /bin/modprobe --ignore-install snd-emu10k1-synth; /usr/bin/asfxload /share /SoundFonts/8mbgmsfx.sf2
alias snd-card-0 snd-emu10k1
alias sound-slot-0 snd-emu10k1
# Card 1 - HDA on-board
options snd-hda-intel index=1,3 id="HDA,HDMI" enable=1,0
alias snd-card-1 snd-hda-intel
alias sound-slot-1 snd-hda-intel
# Card 2 - monitor via USB
options snd-usb-audio index=2 enable=0
On every reboot the two wrong modules get loaded, and the two right ones fail to load because their slots are already taken. If I rmmod the modules by hand and restart alsa everything works. The snd_usb_audio module is blacklisted in /etc/modprobe.conf but it still gets loaded. How can I persuade the system to do the right thing when it boots?