ChimeraOS / chimeraos

A Steam Big Picture based couch gaming OS
MIT License
1.67k stars 116 forks source link

Select sound device does not persist #869

Open kasper-madsen opened 9 months ago

kasper-madsen commented 9 months ago

Rebooting of shutting down and booting makes the sound device change back to another sound source

blurymind commented 9 months ago

I get the same issue - but only in GameUI

I have an ayaneo am02 computer with chimeraos, plugged to a TV. Everything appears to work out of the box - had no driver issues and suspense and resume works fine.

I keep setting the sound output in gameui to the hdmi (tv) and after a restart the setting gets reverted. Gnome shell does persist my setting which is nice.

Another thing that doesnt persist is the selected session. If i reboot from gnome-shell, it will come back as gameui

tbyte80 commented 9 months ago

I experience that as well. Refering to this older issue https://github.com/ChimeraOS/chimeraos/issues/74 there should be audio controls in the web interface. Did not yet tinker with it myself, I'll try later

blurymind commented 9 months ago

changing it in gameui works fine for me. The problem is that it does not persist when you turn it off or restart the machine - it falls back to the same default.

I am guessing that in my case, when the device boots up, if it does before the tv is on - it could decide that the hdmi output is gone and fall back to the initial one.

In that case it would be nice if it had the concept of a prefered output and be able to sustain it once found instead. I am guessing that gnome-shell doesnt have this problem because it does have to concept of a prefered output to use when that output becomes available. This is just a wild guess

blurymind commented 9 months ago

i have to correc myself - i turned it on yesterday and it had lost the sound settings in gnome-shell as well

tbyte80 commented 8 months ago

Ok, so for me symptoms are the same. The audio output device is not remembered neither in gnome shell nor game ui.

Since chimera uses pipewire I installed pavucontrol (used tty3 to unlock pacman). In pavucontrol under output devices you can set a default output. Which is being remembered between reboots but doesn't affect the sound settings in gnome shell and game ui.

There must be some different tool/layer that controls audio or I am missing something. I also don't understand why sound settings in gnome shell are so sparse. Iirc there should be a "Set Default" option somewhere.

(I checked that compatibility layer pipewire-pulse is installed so pavucontrol should also work with pipewire. In theory.)

While further investigating I noticed that wireplumber is installed to manage pipewire sessions which may or may not conflict with pavucontrol. I also stumbled upon the following unresolved issue which may be related: https://bugzilla.redhat.com/show_bug.cgi?id=2026170

I tried to set the default sink using pactl like suggested here: https://www.reddit.com/r/archlinux/comments/ozcxpa/pipewire_how_to_set_default_sink_persistently/ which seemed to work but doesn't persist across sessions. Well, I am out of ideas for now.

muzzwood commented 8 months ago

Same issue. I need to set HDMI as audio output every time. Being able to set HDMI as default and auto switch to it on boot (or HDMI handshake) would be great 👍

pastaq commented 8 months ago

Can everyone affected please try the following:

jtkellys commented 8 months ago

It worked when rebooting to desktop, but once you switch back to steam it goes back to the family setting

sapkyy commented 8 months ago

Same problem for me. Tried pactl and it works in desktop mode, but gaming mode audio settings reset to default every boot:( Setup - desktop PC + HDMI TV

pastaq commented 8 months ago

Alright, looks like its only present in gamemode. That's a start. If you haven't already, please post your build/system hardware list and what sound device you are trying to use.

tbyte80 commented 8 months ago

I can also confirm that when rebooting to desktop sound settings are indeed persisting (gnome shell settings used). My setup is a Minisforum HX99G Mini PC which runs on Ryzen 9 6900HX and RX 6650M GPU. Mainboard: AMD Promontory/Bixby FCH, external PSU.

I am picking HDMI as audio output device

lm209 commented 8 months ago

Yes Same for me on Steam Deck LCD. After restart, He changed automatically from HDMI Audio to speakers

NYXZGames commented 8 months ago

Same for me on a Ser5 Mini PC (5560u model). I have to manually set it after each restart, installing any fix has not worked.

jimlei commented 8 months ago

I "fixed" this by going into the BIOS and disabling the motherboards audio device. This needs an official fix though so people can use multiple outputs (not to mention inputs) without having to set audio device on each startup.

NYXZGames commented 8 months ago

I've just installed Bazzit OS now, doesn't seem to be an issue on there if you're after a Steam Deck OS style experience.

lm209 commented 8 months ago

Yes Bazzite has no issue with it.

zerotohero commented 7 months ago

After fighting with this for a few hours, I think I found a solution that works after reboot and doesn't require and messing around in the BIOS or disabling kernel modules.

Use pactl list short sinks to get a list of sinks. The sink name is the second field, probably a long string. Try each one using pactl set-default-sink <sink-name> Once you figure out which sink is the one you want to use, add the line: PULSE_SINK=<sink-name> to the /etc/environment file.

Just got the SteamOS boot sound for the first time!

tbyte80 commented 7 months ago

Great, that works!

adolfotregosa commented 7 months ago

I dunno if this helps on chimera (manjaro over here but my "fix" can give you guys some ideas) but if you have the convolver sound fix -> https://github.com/aarron-lee/legion-go-tricks/tree/main/experimental_sound_fix

Personally I do this to make the convolver audio the default output:

sudo nano /usr/bin/steamos-polkit-helpers/steamos-priv-write

and I added at the top of the file

pw-metadata 0 default.configured.audio.sink '{ "name": "Legion GO" }' pw-metadata 0 default.audio.sink '{ "name": "Legion GO" }' pactl set-default-sink "Legion GO"

I had to at least once in desktop select "Legion GO" has sound output and reboot from desktop so desktop also remembered.

So I assume it would work for any device given the correct name is used for audio sink.

ghost commented 7 months ago

After fighting with this for a few hours, I think I found a solution that works after reboot and doesn't require and messing around in the BIOS or disabling kernel modules.

Use pactl list short sinks to get a list of sinks. The sink name is the second field, probably a long string. Try each one using pactl set-default-sink <sink-name> Once you figure out which sink is the one you want to use, add the line: PULSE_SINK=<sink-name> to the /etc/environment file.

Just got the SteamOS boot sound for the first time!

FYI you can also add it as a drop-in, e.g. /etc/environment.d/set-default-sink.conf which will have the benefit of not interfering with any future changes in the stock /etc/environment file, though it currently appears to be unused.

elmar-ops commented 2 months ago

don't know if helps someone. I did the configuartion in user space

wpctl status

this lists "Audio->Devices" tree and I had two devices.

As I did know what device to chose in game mode configuration to enable sound, I did next:

wpctl inspect <Number>

This gives me a detailed list of device properties. I did for both, 44 and 45 in my case and could choose the correct device.

Make note of device.name and generate file in /home/gamer/.config/wireplumber/wireplumber.conf.d/disable-devices.conf

I added this config:

monitor.alsa.rules = [
  {
    matches = [
      {
        device.name = "alsa_card.pci-0000_08_00.1"
      }
    ]
    actions = {
      update-props = {
         device.disabled = true
      }
    }
  }
]
CorentinWicht commented 2 months ago

don't know if helps someone. I did the configuartion in user space

wpctl status

this lists "Audio->Devices" tree and I had two devices.

As I did know what device to chose in game mode configuration to enable sound, I did next:

wpctl inspect <Number>

This gives me a detailed list of device properties. I did for both, 44 and 45 in my case and could choose the correct device.

Make note of device.name and generate file in /home/gamer/.config/wireplumber/wireplumber.conf.d/disable-devices.conf

I added this config:

monitor.alsa.rules = [
  {
    matches = [
      {
        device.name = "alsa_card.pci-0000_08_00.1"
      }
    ]
    actions = {
      update-props = {
         device.disabled = true
      }
    }
  }
]

Many thanks for the suggestion, though in my case, I don't have a /home/gamer/.config/wireplumber/ folder and how to heck do I create a file when VI is not even installed? I have tried installing it but it doesn't work with pacman...

pastaq commented 2 months ago

vim is installed

CorentinWicht commented 2 months ago

disable-devices.conf

My bad, I am used to having Vi automatically redirect to Vim.

In my case the folder is not at the same location but in ./usr/share/wireplumber/wireplumber.conf.d, nevertheless I am still unable to create a file there, even with root privileges.

When I create the file with sudo vim ./usr/share/wireplumber/wireplumber.conf.d/disable-devices.conf and add the following content:

monitor.alsa.rules = [
  {
    matches = [
      {
        device.name = "alsa_card.pci-0000_15_00.1"
      }
    ]
    actions = {
      update-props = {
         device.disabled = true
      }
    }
  }
]

I cannot save it with :x!: image

Best,

C.

pastaq commented 2 months ago

/usr is locked down as the filesystem is immutable. /etc is writable as root and will persist through updates so I'd recommend using the etc config path.

CorentinWicht commented 2 months ago

/usr is locked down as the filesystem is immutable. /etc is writable as root and will persist through updates so I'd recommend using the etc config path.

Dear @pastaq that's why I thought, but I wasn't sure.

I confirm that adding PULSE_SINK=<sink-name> to the /etc/environment file works smoothly, thanks!

Best wishes,

C.

sonalder-darlene commented 1 week ago

When I go to Desktop mode I can change in my Settings > Sound the configuration from Stereo to either 5.1 or 7.1, of course I want to select the 7.1 over stereo but when I changed it going back to gaming mode result in having black border all around my screen see Issue #1038, so I restart my PC and now my sound profile is back to stereo so I have to chose between either distracting black border or downgrade audio setup when I play on my couch... I will try the fix propose by @zerotohero hopefully it will make my gaming more conveniant !

I am using a digital audio setup through HDMI eARC if that matters.

After fighting with this for a few hours, I think I found a solution that works after reboot and doesn't require and messing around in the BIOS or disabling kernel modules.

Use pactl list short sinks to get a list of sinks. The sink name is the second field, probably a long string. Try each one using pactl set-default-sink <sink-name> Once you figure out which sink is the one you want to use, add the line: PULSE_SINK=<sink-name> to the /etc/environment file.

Just got the SteamOS boot sound for the first time!

Edit : It doesn't seem to solved my issue...