Star Citizen - no audio
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?
@LovingMelody
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
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.
Truthfully, I am unsure what causes this. I haven't been able to recreate the issue, what channel nixpkgs are you on?
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
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;
};
};
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
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.
After discussing it on Discord we have found out the following:
- When running SC through Lutris I can replicate the behavior when I choose PulseAudio as audio driver
- When I force ALSA as audio driver in Lutris audio works fine for me
- 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
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 :)
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
@fufexan do you have any takes on change? Would affect quite a few other users since it would be the default for wine.
@LovingMelody so what you're saying is that ALSA is buggy with SC and that we should have a dedicated wine without alsa support?
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.
Looks like we can set that up with winetricks sound=alsa.
Lutris has these options so maybe they could be replicated in the Nix config
By default leave it out to use "auto" but allow forcing ALSA or PulseAudio (not sure there is OSS support)
I think all (or most) of those can be configured with winetricks.
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
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 is this issue able to be closed now?
Probably, if everyone is OK with this workaround :)