nix-gaming icon indicating copy to clipboard operation
nix-gaming copied to clipboard

Star Citizen - no audio

Open Sgiath opened this issue 2 years ago • 20 comments

I have installed Star Citizen and it is running fine but I don't have any audio from the game. Weirdly enough I get the audio from the launcher but not from the game. Audio from other sources works without any issues. There is not even any output in EasyEffects or qpgraph.

Here is my audio setup:

{ config, nix-gaming, ... }:

{
  imports = [
    nix-gaming.nixosModules.pipewireLowLatency
  ];

  security.rtkit.enable = true;
  sound.enable = false;
  hardware.pulseaudio.enable = false;

  services.pipewire = {
    enable = true;
    audio.enable = true;

    alsa = {
      enable = true;
      support32Bit = true;
    };

    pulse.enable = true;
    wireplumber.enable = true;

    lowLatency = {
      enable = true;
      quantum = 64;
      rate = 48000;
    };
  };
}

Any idea what might be wrong?

Sgiath avatar Mar 12 '24 22:03 Sgiath

@LovingMelody

fufexan avatar Mar 12 '24 22:03 fufexan

I have got it working by using lug-helper and launching it through Lutris instead https://github.com/LovingMelody/nix-citizen

So it suggests that there is some config that is not working

Sgiath avatar Mar 12 '24 23:03 Sgiath

And one more info. I get the exact same behavior (no audio from game but launcher audio works fine) when launching from Lutris if I check "Prefer system libraries". Hope it helps with debugging :) I am new to NixOS (one week) so I am unable to debug it further myself.

image

Sgiath avatar Mar 12 '24 23:03 Sgiath

Truthfully, I am unsure what causes this. I haven't been able to recreate the issue, what channel nixpkgs are you on?

LovingMelody avatar Mar 13 '24 02:03 LovingMelody

I am on unstable. Here is my complete NixOS config if you want to look around (the desktop is referred to as ceres in the config)

https://git.sr.ht/~sgiath/nix-config

Sgiath avatar Mar 13 '24 08:03 Sgiath

Tried spinning up a VM of your machine but get stuck at your mars wallpaper. Anyways, can you try overriding nixpkgs for nix-gaming and see if this helps any?

    nix-gaming.inputs.nixpkgs.follows = "nixpkgs";

your sound settings look pretty similar to my own

{
    sound.enable = true;
    sound.mediaKeys.enable = true;
    hardware.pulseaudio.enable = false;
    security.rtkit.enable = true;
    services.pipewire = {
      enable = true;
      alsa = {
        enable = true;
        # Defaults to true
        inherit (cfg) support32Bit;
      };
      pulse.enable = true;
      jack.enable = true;
      # Defaults to true
      lowLatency.enable = cfg.lowLatency;
    };
  };

LovingMelody avatar Mar 13 '24 16:03 LovingMelody

Without success, I have tried your exact audio setup, and still nothing. I will be playing through Lutris, this seems to be working.

I will keep the issue open but if I am the only one experiencing the issue it is probably not worth investigating further.

BTW what is wrong with the wallpaper? I would guess my monitor setup would throw you off :D 2024-03-13-17-29-30-377

Sgiath avatar Mar 13 '24 17:03 Sgiath

There's nothing wrong with the wallpaper, just unable to get the VM to work with the small amount of changes I made. Maybe #151 may fix issues like these (whole point of the project). Glad at least lutris is working for you.

LovingMelody avatar Mar 13 '24 17:03 LovingMelody

After discussing it on Discord we have found out the following:

  1. When running SC through Lutris I can replicate the behavior when I choose PulseAudio as audio driver
  2. When I force ALSA as audio driver in Lutris audio works fine for me
  3. The issue is not reproducible on different machine with the same Nix config so probably related to my hardware
    • I use Soundcraft Us24R mixer as my output audio device https://www.soundcraft.com/en/products/ui24r
    • We have theorized that maybe huge number of output devices might trigger some bug
    • For reference posting image how my qpgraph looks like

image

Conclusion: forcing ALSA in Nix package is not a good idea, general conclusion is that ALSA is buggy and you should avoid it. But maybe there could be a way to make it configurable which audio driver is used so someone with my issue could force ALSA driver in their config something like this:

{ pkgs, nix-citizen, ...}:
let
  pkgs-citizen = nix-citizen.packages${pkgs.system};
in
{
  home.packages = [ ( pkgs-citizen.star-citizen.override { audioDriver = "alsa" } ) ];
}

But I have no idea how to do it as I am very new to Nix. Thanks everyone for help, if you don't want to do this ^^ feel free to close the issue, I will be using Lutris in the meantime :)

Sgiath avatar Mar 16 '24 08:03 Sgiath

Alsa is being introduced from wine, pkgs/wine/supportFlags.nix You would need to override the wine package used in the flake to not use wine

LovingMelody avatar Mar 16 '24 12:03 LovingMelody

@fufexan do you have any takes on change? Would affect quite a few other users since it would be the default for wine.

LovingMelody avatar Mar 16 '24 12:03 LovingMelody

@LovingMelody so what you're saying is that ALSA is buggy with SC and that we should have a dedicated wine without alsa support?

fufexan avatar Mar 16 '24 13:03 fufexan

I don't think so, I can see that the wine has the ALSA support true and also PulesAudio support true, that is fine IMO. No need to change that. Only when starting Star Citizen (or maybe any other game) there could/should be a way to force either ALSA or PulseAudio driver for that particular run.

I can do it in the Lutris UI but I don't know how the commands are exactly affected. image

Sgiath avatar Mar 16 '24 13:03 Sgiath

Looks like we can set that up with winetricks sound=alsa.

fufexan avatar Mar 16 '24 13:03 fufexan

Lutris has these options so maybe they could be replicated in the Nix config image

By default leave it out to use "auto" but allow forcing ALSA or PulseAudio (not sure there is OSS support)

Sgiath avatar Mar 16 '24 13:03 Sgiath

I think all (or most) of those can be configured with winetricks.

fufexan avatar Mar 16 '24 14:03 fufexan

Tricks is defined to be able to be overridden in the flake as well as the dll overrides, nix-citizen flake will have the same thing, only thing done in nix-citizen is override the DXVK version https://github.com/fufexan/nix-gaming/blob/master/pkgs/star-citizen/default.nix#L13-L14

LovingMelody avatar Mar 16 '24 15:03 LovingMelody

Oh I didn't realize that. I have just verified that this is working:

( pkgs-citizen.star-citizen.override { tricks = ["arial" "vcrun2019" "win10" "sound=alsa"]; } )

🎉 🎉 🎉

Thanks for your help and patience :)

Sgiath avatar Mar 16 '24 16:03 Sgiath

@Sgiath is this issue able to be closed now?

LovingMelody avatar May 02 '24 19:05 LovingMelody

Probably, if everyone is OK with this workaround :)

Sgiath avatar May 07 '24 10:05 Sgiath