Get Dolby Digital working over HDMI for XBMC on Nvidia ION
06 December 2013
I got Dolby Digital (AC3) working over HDMI on my ASUS AT3IONT-I running XBMC Live, XBMCbuntu and OpenELEC, and wanted to share the solution in case it saves anyone else some time.
I've been using OpenELEC on my living room PC recently as it is very fast booting and lightweight compared to XBMCBuntu and easy to configure and use. However, a similar fix to below is still required.
- Enable SSH in the OpenELEC settings.
- Connect via SSH as
Enter the following commands to create
autostart.shif it doesn't already exist and use it to unload and re-load the
snd-hda-intelmodule with the correct options:
AUTOSTART=/storage/.config/autostart.sh [ ! -f $AUTOSTART ] && echo "#!/bin/sh" > $AUTOSTART chmod +x $AUTOSTART echo -e "\nmodprobe -r snd-hda-intel" >> $AUTOSTART echo "modprobe snd-hda-intel enable_msi=0 probe_mask=8" >> $AUTOSTART
Restart the machine and AC3 audio should work correctly over HDMI.
03 July 2012
After I installed XBMCbuntu 11.0, I found that the fix below for XBMC Live 10.1 was still required.
I also found that I needed to
rm ~/.asoundrc before AC3 would work over HDMI.
27 May 2011
XBMC Live 10.1
Out of the box, standard stereo audio worked fine over HDMI, and AC3 passthrough worked over the SPDIF output, but not over HDMI.
To solve the problem, open /etc/modprobe.d/alsa-base.conf in a text editor - for instance:
sudo vi /etc/modprobe.d/alsa-base.conf
At the end of the file, add:
options snd-hda-intel enable_msi=0 probe_mask=8 on a new line.
This disables the analog sound devices (just leaving HDMI audio enabled). This is because the HDMI audio device is in the fourth position ('slot' 3), and probe_mask is a bit mask, with a bit for each position.
I'm not totally sure why this fixes AC3 over HDMI, but I guess it is something to do with the analog devices indicating that they are not capable of receiving a raw bit stream instead of PCM audio.
I believe that this solution should also work for other machines based on the first generation Nvidia ION platform, and for other Linux distributions (including Ubuntu) as well.
Please add a comment if you've found a better way of fixing this issue, or to let me know if it worked on your particular Linux distro.