I recently tried to set up my Framework main board as an HTPC running Ubuntu 23.04. Install went smoothly until I tried to play some audio at which point I noticed that nothing was coming out. I made sure the HDMI output was selected in the settings and ran another test, still nothing. I tried everything I could find online with various utilities like pavucontrol and still nothing.
Eventually, I noticed that if I let the machine go to sleep and have the TV stop detecting video output, I can shake the mouse to wake it back up and audio now just works. But if I restart my TV or the Framework, the audio stops again.
Has anyone had anything similar happen?
Operating System: Ubuntu
Operating System Version: 22.04/23.04
Framework Generation: 11th gen Intel
HDMI Dongle Generation: 1st gen
EDIT: Unrelated, but can someone tell me how to add tags to a post? Was trying to add the Linux tag but it wouldn’t let me. I see someone has added it for me for this post.
To edit, tags, etc, look for the pencil next to the title, etc.
I run Jellyfin/Plex and I do not recommend using a non-LTS release for long term tasking like this. It’s newer, but it is obsolete in a few months and will require an update. For HTPC, you want 22.04 LTS.
That said, 23.04 uses Pipewire, but also uses backwards compatibility with PulseAudio applications like pavucontrol.
It sounds like you have your HDMI connection as your audio connection, is this correct?
You will want to ensure the HDMI device (I’m assuming here) is connected directly to an HDMI expansion card - avoid docks with suspend and audio/video transport, works until it doesn’t.
Using pavucontrol make sure under the Output Devices tab, it’s set as fallback (HDMI). It’s the circle with the checkmark in it, for that device - it should be pressed in for on.
Sometimes it’s tough to see if the button is pressed for the right device, so we can use this in a terminal with pactl get-default-sink to tell us absolutely what the fallback device is. Using pactl is compatible with Pipewire.
Best to check pactl get-default-sink immediately after the sound disappears during a resume. If the device is still showing as HDMI, and there is no audio, then I would ask if there are any power tweaks happening? TLP, etc?
One thing I just noticed without changing anything is that the audio no longer stays gone after the machine wakes back up. Now I boot up, there’s no audio, I let the machine sleep, I wake it up, the audio becomes active, and it stays active. On reboot however, it goes away again.
With regard to the LTS version, I had seen a similar suggestion elsewhere so I tried 22.04 and had the same exact issue.
The HDMI device is connected directly to the HDMI expansion card and not through any dock or adapter.
In pavucontrol, I have verified that the HDMI output is set as the fallback. If I play a video, I can actually see the sound meter moving denoting there is actual audio playing.
The output of pactl get-default-sink is the same when there is no audio and when there is audio:
Been chasing this all night trying various different things and it seems to be an Ubuntu specific issue. Out of curiosity, I installed Windows 11 and audio worked just fine from the get go. I then installed Pop!_OS 22.04 LTS (based on Ubuntu 22.04) and I had the same exact issue as Ubuntu 22.04 and 23.04. Gonna try Manjaro tomorrow and see if that fixes things though long term I would prefer to be on Debian/Ubuntu so any additional help with resolving the issue there would be much appreciated.
I either suspend the system by hitting the power button (making sure suspend is selected in Settings) or let it sleep on its own after the selected timeout in the Power section of Settings. Then I wake the system back up and it works, no need to fully shutdown.
The output of pactl on Fedora is slightly different, but I assume this is fine.
I’ve been looking into this as well. 11th gen, Fedora 38 with all current updates.
Seeing this behaviour, exactly as mentioned.
In my [use] case, I don’t have to suspend the system to get HDMI audio working…as there are three additional paths to get it to work:
Plug in the HDMI expansion card AFTER landing onto the Fedora desktop.
Plug in the HDMI cable AFTER landing onto the Fedora desktop.
Power on the AV receiver AFTER landing onto the Fedora desktop.
In all cases, there’s something that runs / enumerated at the time of setting re-initialization / setting the sink(?) that makes it work properly…but something that’s missing in the boot up flow.
I’ve been trying to simulate an unplug / plug action of the HDMI expansion card (without doing it physically) via commandline…but without success (unbind/bind).
As part of my troubleshooting, I’ve looked at restarting pipewire, pipewire-pulse, wireplumber services. Also looked into any delta in alsamixer and pavucontrol before and after suspend / replug. No visual differences. Also looked at pactl sink / source volume and mute…nothing obvious there. Looked into wpctl and pw-top…nothing obvious there. Ran alsaunmute, didn’t help. Tried running alsactl store / restore to see if the working state can be restored after a reboot, no go.
Regarding “alsa_output.pci-0000_00_1f.3.hdmi-stereo.2”…that last digit changes / increments everytime you suspend / resume or replug the HDMI cable or the HDMI expansion card.