I'm just starting in linux with a recently bought intel nuc device and I'm currently working with an Ubuntu 16.04 LTS.

The problem that is annoying me is that I could not retrieve sound through the HDMI. I has been checking that this is not something new and some people could solve this just setting default-sample-rate to 48000 in /etc/pulse/daemon.conf but this is not working for me.

What i have been done at the moment:

  1. Bios update
  2. Ensure the HDMI sound is activated in the BIOS configuration
  3. Install the latest ALSA drivers with no errors after install
  4. Upgrade all packages
  5. Ensure that my TV supports the sample rate 44100 and 48000
  6. Install the latest video drivers from the intel webpage
  7. Verify the HDMI cable is working
  8. Try another Ubuntu version (16.10 and 17.04)

I have to say that during this week the sound appears two times: the first time after checking that everything is correct at alsamixer and pavucontrol and executing the following command:

speaker-test -c 2 -r 48000 -D hw:0,3

When I modified the daemon.conf for pulseaudio and restart the computer, the sound didn't work. I just restore the daemon.conf with the backup file and tried to do in the same way but the sound doesn't work either.

The second time was after install the gdebi package and the Intel Graphics tool (but not the driver). I could check that sound worked in all sample rates supported by the TV. Again sound stop working after restart.

I will thank any help or tip you can give me so I can set the computer working.

Thanks in advance.

(2017-09-25 UPDATE)

Now things have more sense. It seems that each time the computer suspends the sound comes alive. However when i reboot the sound is gone. The only way to make it come back is just suspend the computer and after the wake up the S/PDIF mutes in the alsamixer so I have to unmute and works fine.


There is a troubleshooting section here: https://www.intel.com/content/www/us/en/support/articles/000005499/mini-pcs.html

It suggests to do the following:

usermod -a -G audio,pulse,pulse-access,video,voice YOURUSERNAME
sudo add-apt-repository ppa:ubuntu-audio-dev/alsa-daily
sudo apt update
sudo apt install oem-audio-hda-daily-dkms

I had the same problem and I found out that the wrong sound output was selected by default. In that case, all one has to do is hit Super to bring the search menu and then type sound to bring the Sound configuration screen. Then select the "Output" tab and in "Play sound through" choose "HDMI / DisplayPort".


Since I use my NUC as a media center, I don't have access to the GUI. So I solved this problem by adding a cron job which "reminds" PulseAudio to send output through HDMI every minute. It's not an elegant solution but it's the easiest thing I've found that works without constantly restarting my media center.

First you must determine the index of your sound card according to PulseAudio. This is very likely to be 0 if you only have one sound card, but you should make sure by running

pacmd list-cards

You should see output that begins with the lines

1 card(s) available.
index: 0
name: <alsa_card.pci-0000_00_1f.3>
driver: <module-alsa-card.c>
owner module: 6

Now we know the index. Next, scroll down to see the list of profile names. A profile determines how PulseAudio will route the audio inputs and outputs. Looking through the list, I have a profile named:

output:hdmi-stereo: Digital Stereo (HDMI) Output (priority 5400, available: unknown)

This is what we want. So to combine this info and tell PulseAudio to switch to the right profile on card 0, we run

pacmd set-card-profile 0 output:hdmi-stereo

Now to automate this command with crontab. I won't go into detail about crontab syntax here, but basically it's a flexible background task scheduler that comes preinstalled with most Linux distributions. We open our crontab file for editing

crontab -e

And at the bottom of the file we add the line

* * * * * XDG_RUNTIME_DIR=/run/user/`id -u` pacmd set-card-profile 0 output:hdmi-stereo

The five asterisks tell crontab to run the command every minute. We need to set the variable XDG_RUNTIME_DIR so pacmd knows where PulseAudio is running from. And the rest is just our command from above.

Your Answer

By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.