RPi 3b/3b+ Sound Trouble Shooting

I ran into the sound not working via my hdmi cable in a prior kernel with the Pi Foundation and had to make some modifications to get it to work but since then they have modified the upstream kernel to fix it. The same modifications I did works for me on the latest Manjaro image also. Hopefully upstream will get it fixed in the future.

First black list the snd_bcm2835 module by creating /etc/modprobe.d/blacklist.conf and and adding a line to blacklist the module:

sudo nano /etc/modprobe.d/blacklist.conf
# Then add the line below:
blacklist snd_bcm2835

Save your changes and exit nano then reboot Manjaro

Some things to check to see if things are right:

aplay -l:

aplay

alsamixer using pulse audio:

Pulse Audio Utility:

Menu --> Sound & Video --> Pulse Audio Volume Control:

Output devices tab:

Configuration tab:

Two good programs to test sound is audacious for sound files and mpv for video:

sudo pacman -S audacious mpv

If sound is still not working:

First remember you are using hdmi to your monitor. I have a vizio tv so I can crank the volume all of the way up using the volume control on Manjaro's Desktop and will never get sound until I use my volume control on my remote for my vizio tv to adjust the volume. If using a regular monitor I would image you have to make sure the setting are right with it as how your sound is channeled via external or internal speakers; I do not have one so I can not be sure what needs to be done.

If you have fiddled with configs trying to get the sound working in the past my /etc/asound.conf looks like this:

# Use PulseAudio by default
pcm.!default {
  type pulse
  fallback "sysdefault"
  hint {
    show on
    description "Default ALSA Output (currently PulseAudio Sound Server)"
  }
}

ctl.!default {
  type pulse
  fallback "sysdefault"
}

# vim:set ft=alsaconf:

One last thing I can think of is sometimes the ~/.config/pulse configs get messed up when messing around with the sound configs using the various sound frontend programs. Delete the ~/.config/pulse directory and it will create a new one for you with configs.


rm -r ~/.config/pulse

Then reboot

Then check with the various programs above again to see if all is good.

1 Like

@Darksky I've tried all the steps you described on the Raspberry Pi 3B+ I picked up recently second hand, but I still couldn't make sound work at all either through HDMI or analogue jack. (I used mpv and speaker-test for testing.)

The Pi is connected to an AV receiver rather than a screen. In Raspbian, jack worked out of the box and to make HDMI work, I had to add the following to /boot/config.txt:

hdmi_drive=2
hdmi_force_hotplug=1

And I also needed to run raspi-config and in Advanced options switch the audio setting to force HDMI. However, with a fresh install of Manjaro ARM 19.06 LXQt, none of these seem to be enough. (At least my AV receiver indicates that there is incoming HDMI input, although there's no actual sound.)

aplay -l and alsamixer show the exact same output as you showed in your sceenshots, by the way.

This problem might be related to a similar issue I found about a month ago on my Manjaro PC, although in that case, I could downgrade alsa-lib as a workaround. Now, on the other hand, I'm not sure what to do.

@maxigaz

Interesting. My pi3b+ sound worked of of the box with ARM 19.06 LXQt.

After you removed ~/.config/pulse and logged out and back in did you go back to the PulseAudio Volume utility and checked those 2 tabs above and make sure it looks like above. Some times you have to click the down arrow and choose.

If I remember right the speaker test will not work with the setup.

No raspi-config in arch based distro. There is a way to to manually direct the sound calling a script in the startup folder but I have to find my notes on it. A lot of stereo plugs will not work on the a/v jack on the pi board since it is just not audio. You used to be able to add a line in /boot/config.txt to redirect the sound but that has not worked for me in a while.

I do not believe the alsa version is the issue as mine works just fine and you should be defaulting to pulseaudio which uses pulseaudio-alsa for programs that requires alsa. Since you had to jump through hoops with the other distro image to get audio going I am leaning towards your monitor/tv. It is supposed to recognize which port to use (hdmi/port on the pi board) so I am guessing it is not detecting the sound going through the hdmi due to lack of or inadequate firmware for your monitor.

I found my notes. Type in "amixer controls" in a terminal. Yours could be different if the sound is coming through the hdmi but what you are looking for is the line and the numid ’Master Playback Volume’ is on:

$ amixer controls
numid=4,iface=MIXER,name=’Master Playback Switch’
numid=3,iface=MIXER,name=’Master Playback Volume’
numid=2,iface=MIXER,name=’Capture Switch’
numid=1,iface=MIXER,name=’Capture Volume’

Using above this sets to HDMI:

amixer cset numid=3 2

0=auto
1=headphones
2=hdmi

Test and see if you have sound. If you do this is only temporary and will loose it on reboot.

To make it permanent:

mkdir ~/bins && nano ~/bins/force-sound.sh

Put these lines in the nano terminal window:

#!/bin/sh
amixer cset **numid=3 2

Save and exit nano

Make the file executable:

chmod +x ~/bins/force-sound.sh

Now go to the lxqt Settings Manager and add an entry that points to the bins/force-sound.sh file in your home directory.

Thank you for the detailed answer!

Last time I was only checking what I could through SSH (as I don't have a spare monitor), but this time, I figured out how to start LXQt remotely through VNC.

In Pulseaudio Volume Control, no devices show up apart from "virtual dummy output" (its name in English is only a guess, because it shows up in Hungarian).

By the way, raspi-config is actually available from the AUR, although I get an error message when I try to switch between HDMI and jack in Manjaro. I'm not sure if it's because there's no sound device detected in the first place, but it's good to know that amixer cset numid=3 2 and setting other values would do the same.

Remote connections give varied results. I do not know how vnc does but the only program I know of that will do sound is nomachine and I have heard it takes some doing to get it configured.

My ssh can not find the pulseaudio server when I try to run pavucontrol-qt and alsamixer can not either so it does not have pulse audio as an option:

alsamixer

You absolutely have to have your pi connected to a monitor to do testing. You are not going to have any sound device show up if there is no hdmi cable connected as you probably have it set to go to it in /boot/config.txt.

OK, I've tried again with a monitor plugged in (through an HDMI-to-VGA+jack adapter). I've finally got sound working. I also have Digital Output listed in the Volume Control app.

In this scenario, I can confirm that having snd_bcm2835 blacklisted as you mentioned in your first post is necessary; otherwise, there's no sound for me, even if Volume Control indicates so. I also have the same hdmi switches in /boot/config.txt as I mentioned above, although I'm not sure whether they are necessary here.

Now, here's the tricky question: How do I make sound work in headless mode, i.e. when the Pi is connected to my AV receiver instead of a monitor through HDMI, and control players and volume through SSH?

I think the part (if not all) of the answer is about running pulseaudio systemwide (before logging in), because if the DE is loaded up in the monitor setup, I can SSH from my phone and play music, just like locally. (Also, vc4-hdmi in alsamixer shows up both in SSH and locally, and the message "This sound device does not have any controls." can be seen, although sound is definitely working.)

However, if I reboot headless and SSH into it, vc4-hdmi doesn't show up at all in alsamixer, and there's no sound.

So, next, I'm going to try to run pulseaudio system-wide as described here.

(As a sidenote, I'm also wondering if Raspbian uses pulseaudio at all, because, if I remember correctly, in mpv, alsa was selected instead of pulse as an output device by default. If that's the case, another option might be to disable pulseaudio altogether.)

Not knowing how your setup is and how your equipment is supposed to work it is hard to answer.

I've just added a few words. I believe I've made it as clear as I can. (Not sure what else you need.)