Like I explained in my previous post, I have an Ubuntu Server playing HD audio and video using Turtle Beach USB Audio Card and Broadcom CrystalHD.
Pulseaudio worked when using VLC for some reason I did not get Dolby/DTS passthrough from XBMC. So I had to remove it as I explained in my previous post. While pulseaudio may be a better and much complex sound server, it did not work for me like most people.
After setting up everything, I had perfect 5.1 Channel Dolby Digital sound sent through a Toslink cable and decoded by my receiver. However, upon restarting, I lost sound. After research I determined that my onboard sound card was stealing the default sound card status from my USB sound card. This is how I fixed the problem.
Find what sound modules are enabled using the following command:
less /proc/asound/modules
The output may look something like this:
0 snd_hda_intel 1 snd_usb_audio
Since I do not use my onboard sound card. I wanted to disable it. This could be done through BIOS settings or by modifying ALSA configuration files. I added my onboard sound card to /etc/modprobe.d/blacklist:
sudo nano /etc/modprobe.d/blacklist
And add the onboard sound card. Use the name that you saw in the previous output:
blacklist snd_hda_intel
Then edit /etc/modprobe.d/alsa-base.conf to enable USB audio to take the default card status:
sudo nano /etc/modprobe.d/alsa-base.conf
Add the following line:
# autoloader aliases install sound-slot-0 /sbin/modprobe snd_usb_audio
If you do not need the remaining "autoloader aliases" lines for other sound slots then comment them out. All I have is the one line mentioned above. Then change the following line:
options snd-usb-audio index=-2
to
#options snd-usb-audio index=-2
This allows USB sound card to take the default card status. Reboot and you should have your USB sound card as default. My XBMC audio settings are now:
DTS: Enable Dolby: Enable Audio: default (ALSA) Passthrogh: default (ALSA)