Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PipeWire status tracking issue #102547

Closed
5 tasks done
jansol opened this issue Nov 2, 2020 · 292 comments
Closed
5 tasks done

PipeWire status tracking issue #102547

jansol opened this issue Nov 2, 2020 · 292 comments
Labels
6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS

Comments

@jansol
Copy link
Contributor

jansol commented Nov 2, 2020

TL;DR: Things are generally in pretty good shape but wireplumber can't be configured via the nixos module yet. On the other hand most people won't need to change anything from the defaults.

If you are reporting something, please mention the pipewire version you are using, as it is updated very frequently. Bonus points for checking if upstream already has a fix mentioned in the commit log or release notes.

Currently on master:

  • nixos service exists and works (socket-activated systemd user service)
  • alsa and JACK compatibility shims can be enabled with options
  • pulse-bridge, a fake pulse server enabled with the pulse option (socket-activated systemd user service)
  • bluetooth (loaded by the pulseaudio module)
  • wireplumber (Packaged and usable but can't be configured via nixos modules yet. Custom config files can be placed in ~/.config/wireplumber)

Configuration

Most basic additions to configuration.nix, this should be enough for most people:

  # Remove sound.enable or turn it off if you had it set previously, it seems to cause conflicts with pipewire
  #sound.enable = false;

  # rtkit is optional but recommended
  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
    # If you want to use JACK applications, uncomment this
    #jack.enable = true;
  };

Some useful knobs if you want to finetune or debug your setup. Note that pipewire config keys may contain a period '.' so they need to be quoted in Nix. (combine these with the basic config above):

  services.pipewire = {
    config.pipewire = {
      "properties" = {
        #"link.max-buffers" = 64;
	"link.max-buffers" = 16; # version < 3 clients can't handle more than this
	"log.level" = 2;
        #"default.clock.rate" = 48000;
        #"default.clock.quantum" = 1024;
        #"default.clock.min-quantum" = 32;
        #"default.clock.max-quantum" = 8192;
    };
  };

Virtual Sinks/Sources

If you want to do some fancy routing with null sinks, you can define them directly in the pipewire config like this. Especially convenient if you have a multi-channel (8+, or something "weird" like 2x2, 3x2) soundcard that keeps confusing applications with too many channels or a bad channel layout. (Note: you can set those cards to the "Pro Audio" profile with pavucontrol so pipewire doesn't try to guess a wrong channel layout for them.) Note that arrays are replaced rather than merged with defaults, so you need to list any default items that you want to keep here (the dummy and freewheeling driver for JACK applications, if you have JACK support enabled):

  services.pipewire = {
    config.pipewire = {
      "context.objects" = [
        {
          # A default dummy driver. This handles nodes marked with the "node.always-driver"
          # properyty when no other driver is currently active. JACK clients need this.
          factory = "spa-node-factory";
          args = {
            "factory.name"     = "support.node.driver";
            "node.name"        = "Dummy-Driver";
            "node.group"       = "pipewire.dummy";
            "priority.driver"  = 20000;
          };
        }
        {
          # Freewheeling driver. This is used e.g. by Ardour for exporting projects faster than realtime.
          factory = "spa-node-factory";
          args = {
            "factory.name"     = "support.node.driver";
            "node.name"        = "Freewheel-Driver";
            "node.group"       = "pipewire.freewheel";
            "node.freewheel"   = true;
            "priority.driver"  = 19000;
          };
        }
        {
          factory = "adapter";
          args = {
            "factory.name"     = "support.null-audio-sink";
            "node.name"        = "Microphone-Proxy";
            "node.description" = "Microphone";
            "media.class"      = "Audio/Source/Virtual";
            "audio.position"   = "MONO";
          };
        }
        {
          factory = "adapter";
          args = {
            "factory.name"     = "support.null-audio-sink";
            "node.name"        = "Main-Output-Proxy";
            "node.description" = "Main Output";
            "media.class"      = "Audio/Sink";
            "audio.position"   = "FL,FR";
          };
        }
      ];
    };
  };

You can't currently link nodes to each other in the config, but you can adapt this script to do it for you. Replace the soundcard names and ports with whatever matches your setup:

#!/usr/bin/env bash

# ports obtained from `pw-link -io`

pw-link "Main-Output-Proxy:monitor_FL" "alsa_output.usb-Native_Instruments_Komplete_Audio_6_69BC86B9-00.pro-output-0:playback_1"
pw-link "Main-Output-Proxy:monitor_FR" "alsa_output.usb-Native_Instruments_Komplete_Audio_6_69BC86B9-00.pro-output-0:playback_2"

pw-link "alsa_input.usb-M-Audio_Fast_Track-00.pro-input-0:capture_1" "Microphone-Proxy:input_MONO"

Standalone mode (no session manager)

If you want to run a minimal pipewire instance with no session manager for automatic switching etc, you can do that as of 0.3.46 (technically pipewire supported it a bit longer than that but that's when the nixos module was adapted to account for it). This is mainly intended for systems that used to run purely JACK:

  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    jack.enable = true;
    wireplumber.enable = false;
    media-session.enable = false;
  };

If this doesn't work it is likely because it defaults to using an alsa device called hw:0 which might not be the sound card you want to be using. You can easily fix this by overriding the device name in the "context.objects" array of the main pipewire configuration. The names and descriptions of available devices can be seen with aplay -l from the alsa-utils package. Note that you'll have to write out the full contents of the array because the default items will be replaced completely with this:

  services.pipewire.config.pipewire = {
      "context.objects" = [
        {
          factory = "metadata";
          args = {
            "metadata.name" = "default";
          };
        }
        {
          # A default dummy driver. This handles nodes marked with the "node.always-driver"
          # properyty when no other driver is currently active. JACK clients need this.
          factory = "spa-node-factory";
          args = {
            "factory.name"     = "support.node.driver";
            "node.name"        = "Dummy-Driver";
            "node.group"       = "pipewire.dummy";
            "priority.driver"  = 20000;
          };
        }
        {
          # Freewheeling driver. This is used e.g. by Ardour for exporting projects faster than realtime.
          factory = "spa-node-factory";
          args = {
            "factory.name"     = "support.node.driver";
            "node.name"        = "Freewheel-Driver";
            "node.group"       = "pipewire.freewheel";
            "node.freewheel"   = true;
            "priority.driver"  = 19000;
          };
        }
        {
          args = {
          "adapter.auto-port-config" = {
            mode = "dsp";
            monitor = false;
            position = "unknown";
          };
          "api.alsa.path" = "hw:0"; # replace with the right path for your system
          "channelmix.disable" = true;
          "factory.name" = "api.alsa.pcm.source";
          "media.class" = "Audio/Source";
          "node.description" = "system";
          "node.name" = "system";
          "node.suspend-on-idle" = true;
          "resample.disable" = true;
          };
          factory = "adapter";
        }
        {
          args = {
          "adapter.auto-port-config" = {
            mode = "dsp";
            monitor = false;
            position = "unknown";
          };
          "api.alsa.path" = "hw:0"; # replace with the right path for your system
          "channelmix.disable" = true;
          "factory.name" = "api.alsa.pcm.sink";
          "media.class" = "Audio/Sink";
          "node.description" = "system";
          "node.name" = "system";
          "node.suspend-on-idle" = true;
          "resample.disable" = true;
          };
          factory = "adapter";
        }
      ];
    };
  };

Miscellaneous

For the time being you can switch between two session managers, although there is usually no reason to. Note #159546 which intends to change the default from media-session to wireplumber since media-session is considered deprecated by upstream.

  services.pipewire = {
    # wireplumber.enable = true;
    # media-session.enable = false;
  }

For other available options, consult the upstream config templates. All config files listed there should be accessible via the nixos module as services.pipewire.config.$basename and services.pipewire.media-session.config.$basename for the daemon and the default session manager respectively.

Please help test new PRs!

Please do try out update pull requests before they are merged (if you can), it is fairly easy:

  • Make a local clone of nixpkgs
  • Fetch the PR branch to your clone of nixpkgs
  • (It might be a good idea to cherry-pick or rebase the PR on top of your release channel branch instead of master)
  • Build your system configuration using the cloned nixpkgs instead of the configured channel: sudo nixos-rebuild test -I nixpkgs=path/to/nixpkgs/clone
    • Useful nixos-rebuild verbs besides the usual "switch" and "boot" are: "build" and "test" (build and enable but don't change boot)

Known Problems

The issues people have previously described here should all be fixed now.

Please add a comment if something is broken (and ideally open an issue upstream if it is not a packaging problem).

@jansol jansol added the 0.kind: bug Something is broken label Nov 2, 2020
@eadwu
Copy link
Member

eadwu commented Nov 3, 2020

From my experience

  • With default configuration
    • Bluetooth
      • Works fine for a small amount of time, before crapping out and going out of sync
    • On high load
      • Well let's just say it isn't pretty but not unusable
  • With tweaked configuration (don't ask how to tweak, I don't know, or at least it needs tweaking outside of the pipewire configuration as well)
    • Bluetooth
      • I haven't had any out of sync yet, though I do have some intermittent audio loss but at least it still stays in sync
    • On high load
      • Better but still pretty distinctive

There are other things that are pretty annoying, audio control is completely bonkers for me, alsactl/alsamixer is half broken, I have to rely on using pactl and the pulseaudio library shims to even change my audio with keybinds. Anyway just a couple of things off the top of my head.

Note that you may not experience some of my issues, because it's configuration dependent on more than just the pipewire configuration.

As of November 14, 2020, all of the issues I've listed have been resolved (on my system). HFP/HSP doesn't work the last time checked that out, as only the backend support is implemented, in case that is a deal breaker for anyone (as far as I can remember).

@jansol jansol removed the 0.kind: bug Something is broken label Nov 3, 2020
@veprbl veprbl added the 6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS label Nov 3, 2020
@jansol
Copy link
Contributor Author

jansol commented Nov 6, 2020

Did some digging and the Discord issue is fairly simple: the wrapper prepends the dependencies' paths to LD_LIBRARY_PATH, and those dependencies include libpulseaudio. So I tried making a copy of the wrapper script that prepends the pipewire pulseaudio shim's path instead of the native pulseaudio one and voilà, it works perfectly! Simply removing the libpulseaudio part from LD_LIBRARY_PATH works as well, as long as the result does not put the native libpulseaudio before the pipewire shim.

I'm guessing the Right solution to this is to wait for the pulse-bridge aka "fake" pulseaudio server in pipewire so Discord (and presumably steam) can just use the native library and everything looks like business as usual to them.

@jansol
Copy link
Contributor Author

jansol commented Nov 9, 2020

Pulse-bridge does seem to work surprisingly well: I tried stopping the pipewire service and launching it manually with pulse-bridge enabled (I have pulseaudio disabled in my nixos config so there won't be conflicts): pipewire-media-session -e pulse-bridge
If steam, discord etc is launched after starting the media session, audio is working without further tweaking as expected. If they were running before this, they will likely crash or lock up when pipewire is stopped.

So for transparent support we'll need a nixos option to enable the pulse-bridge module as described upstream. Some discussion about that happened in #102514 .

The same approach could be used for the bluez5 module which is also disabled by default for now.

@jansol
Copy link
Contributor Author

jansol commented Nov 12, 2020

Upstream has deprecated the libpulseaudio.so shim and provides a systemd service to load pulse-bridge now. This makes packaging a lot easier since we don't have to patch files and there should no longer be socket conflicts with pulseaudio either.

@ilya-fedin
Copy link
Contributor

ALSA compatibility option doesn't provide ctl.!default for some reason:

sound.extraConfig = mkIf cfg.alsa.enable ''
pcm_type.pipewire {
libs.native = ${pkgs.pipewire.lib}/lib/alsa-lib/libasound_module_pcm_pipewire.so ;
${optionalString enable32BitAlsaPlugins
"libs.32Bit = ${pkgs.pkgsi686Linux.pipewire.lib}/lib/alsa-lib/libasound_module_pcm_pipewire.so ;"}
}
pcm.!default {
@func getenv
vars [ PCM ]
default "plug:pipewire"
playback_mode "-1"
capture_mode "-1"
}
'';

This leads to the impossibility to control pipewire via alsamixer :(

@jansol
Copy link
Contributor Author

jansol commented Nov 26, 2020

0.3.16 has been merged, this adds pulse-bridge which fixes most pulseaudio applications including steam and its games. (channels haven't updated yet at the time of writing though)

@ilya-fedin
Copy link
Contributor

0.3.16 has been merged

0.3.17 just released ;)

@gebner
Copy link
Member

gebner commented Nov 29, 2020

With 0.3.17, bluetooth works out of the box for me (both HFP and A2DP). #105362

@jansol
Copy link
Contributor Author

jansol commented Nov 29, 2020

Isn't the bluez5 module disabled by default?

@ilya-fedin
Copy link
Contributor

Isn't the bluez5 module disabled by default?

#105362 enables it by the with-pulse file

@gebner
Copy link
Member

gebner commented Nov 29, 2020

Bluetooth worked for me even without the with-pulse file. HFP required enabling hsphfpdSupport (compile-time option) though.

@ilya-fedin
Copy link
Contributor

According to the source code, it should be enabled with the pulse file: https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/0.3.17/src/examples/media-session/media-session.c#L2109-2111

And looks like it should be with-pulseaudio rather than with-pulse: https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/0.3.17/src/examples/media-session/media-session.c#L2128

@gebner
Copy link
Member

gebner commented Nov 29, 2020

Thanks, fixed the with-pulseaudio file name.

Eventually, the nixos module should also generate a pipewire.conf file (so that we can modify it). Right now, it's e.g. impossible to pass extra arguments to pipewire-media-session.

@suhr
Copy link
Contributor

suhr commented Nov 29, 2020

I have an issue while trying to use qjackctl with pipewire:

$ qjackctl
/nix/store/xv3g9szrk83yqizmzzaxvl45qz5sv4hh-qjackctl-0.6.3/bin/qjackctl: symbol lookup error: /nix/store/xv3g9szrk83yqizmzzaxvl45qz5sv4hh-qjackctl-0.6.3/bin/qjackctl: undefined symbol: jack_session_commands_free

@ilya-fedin
Copy link
Contributor

Thanks, fixed the with-pulseaudio file name.

btw, imho, it is worth to replace

    sound.extraConfig = mkIf cfg.alsa.enable ''
      pcm_type.pipewire {
        libs.native = ${cfg.package.lib}/lib/alsa-lib/libasound_module_pcm_pipewire.so ;
        ${optionalString enable32BitAlsaPlugins
          "libs.32Bit = ${pkgs.pkgsi686Linux.pipewire.lib}/lib/alsa-lib/libasound_module_pcm_pipewire.so ;"}
      }
      pcm.!default {
        @func getenv
        vars [ PCM ]
        default "plug:pipewire"
        playback_mode "-1"
        capture_mode "-1"
      }
    '';
    environment.etc."alsa/conf.d/50-pipewire.conf" = mkIf cfg.alsa.enable {
      source = "${cfg.package}/share/alsa/alsa.conf.d/50-pipewire.conf";
    };

with

    sound.extraConfig = mkIf cfg.alsa.enable ''
      pcm_type.pipewire {
        libs.native = ${cfg.package.lib}/lib/alsa-lib/libasound_module_pcm_pipewire.so ;
        ${optionalString enable32BitAlsaPlugins
          "libs.32Bit = ${pkgs.pkgsi686Linux.pipewire.lib}/lib/alsa-lib/libasound_module_pcm_pipewire.so ;"}
      }
      ctl_type.pipewire {
        libs.native = ${cfg.package.lib}/lib/alsa-lib/libasound_module_ctl_pipewire.so ;
        ${optionalString enable32BitAlsaPlugins
          "libs.32Bit = ${pkgs.pkgsi686Linux.pipewire.lib}/lib/alsa-lib/libasound_module_ctl_pipewire.so ;"}
      }
    '';
    environment.etc."alsa/conf.d/50-pipewire.conf" = mkIf cfg.alsa.enable {
      source = "${cfg.package}/share/alsa/alsa.conf.d/50-pipewire.conf";
    };
    environment.etc."alsa/conf.d/99-pipewire-default.conf" = mkIf cfg.alsa.enable {
      source = "${cfg.package}/share/alsa/alsa.conf.d/99-pipewire-default.conf";
    };

@gebner
Copy link
Member

gebner commented Nov 29, 2020

Is there a reason to keep the sound.extraConfig or could we put that into alsa/conf.d as well?

@ilya-fedin
Copy link
Contributor

ilya-fedin commented Nov 29, 2020

Yeah, it should work with conf.d as well. You could test with alsamixer: if everything is ok, it will give you pipewire volume control instead of hardware volume control by default.

@suhr
Copy link
Contributor

suhr commented Nov 29, 2020

It finds out, qjackctl can be fixed with --disable-jack-session option to configure. It should be provided by default, since jack session api is deprecated: https://jackaudio.org/api/group__JackSessionManagerAPI.html

@Funestia
Copy link

Funestia commented Dec 4, 2020

I don't know if the following issues are nixos specific:

  • After each restart I have to replug my audio interface(PCM2902) for it to work properly
  • Each time the configuration is changed (volume or new audio stream) i can hear a short crackling noise. If i don't use the external interface this can't be observed.
    Also with pulseaudio I don't have those issues.

@bbigras
Copy link
Contributor

bbigras commented Dec 7, 2020

With pipewire, my keyboard media keys (vol up & vol down) don't seem to work under gnome (x11).

Anyone has an idea?

@ilya-fedin
Copy link
Contributor

Anyone has an idea?

It's a bug with restoring default device on restart
https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/429

@ilya-fedin
Copy link
Contributor

pipewire has a race condition with logind, thus adding the user to the audio group might help with some issues that happen on restart (i always add my user to the audio group to have working rtkit-daemon, so I don't know which issues it might fix exactly)
https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/423

@ilya-fedin
Copy link
Contributor

Just updated my NixOS unstable
image

@archseer
Copy link
Member

0.3.18 is out, fixes some more issues: https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/NEWS

Hopefully my sound card won't stutter anymore with the latest bugfixes.

@jansol
Copy link
Contributor Author

jansol commented Apr 27, 2022

There is still the matter of configuring wireplumber via nix, but other than that this issue does indeed seem to have outlived its usefulness.

@nixos-discourse
Copy link

This issue has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/nixos-custom-directory-with-uid-gid-mode-and-bind-mount/19412/19

@azamaulanaaa
Copy link

hey, I am developing a program and encountering this message

ALSA lib dlmisc.c:337:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_pipewire.so (/nix/store/hjh8ldi38i64b35zkf5bmpqj2zxs0ybw-alsa-lib-1.2.6.1/lib/alsa-lib/libasound_module_pcm_pipewire.so: cannot open shared object file: No such file or directory)

I am non NixOS user but use nix-shell. maybe someone can help me? Thank you in advace.

@bjornfor
Copy link
Contributor

@jansol: All the boxes in the original post are checked now (done). Should we close this issue?

@jansol
Copy link
Contributor Author

jansol commented Jul 17, 2022

Yeah, I think the issue has pretty much served its purpose. @K900 @jtojnar @Kranzes any objections to closing?

@K900
Copy link
Contributor

K900 commented Jul 17, 2022

None here.

@sjfloat
Copy link
Contributor

sjfloat commented Jul 23, 2022

Should we convert this issue into documentation and close it?

Does this exist yet?

@jansol
Copy link
Contributor Author

jansol commented Jul 25, 2022

There is a brief mention in the manual but nothing detailed.

@jakehamilton
Copy link
Contributor

There is still the matter of configuring wireplumber via nix, but other than that this issue does indeed seem to have outlived its usefulness.

Have we had any movement on this? I am currently reliant on the media-session options and would need an equivalent system for wireplumber. A few months ago I had started looking into it and I believe that the configuration is mostly compatible, but I could be wrong. If someone has any insight into wireplumber config vs media-session it would be useful to add to this ticket.

I think we should try and get wireplumber up to parity with media-session options-wise since it's already been set as the default. We probably should have done that before making it the default option.

@K900
Copy link
Contributor

K900 commented Oct 13, 2022

It is not at all compatible. Wireplumber is currently configured with Lua scripts, which you can do yourself with environment.etc, and upstream plans to move to a more declarative system in the future, at which point we'll probably add a proper NixOS module for this.

@jansol
Copy link
Contributor Author

jansol commented Oct 13, 2022

There has also not been as much pressure to configure wireplumber from a nixos module since it has supported per-user config in ~/.config for a long time. And for most people the default config works well enough that they don't have to ever touch it.

@jakehamilton
Copy link
Contributor

Ah, I see. Thanks for the corrections, folks! I'll see about converting my own configs to work with wireplumber then :)

@K900
Copy link
Contributor

K900 commented Oct 13, 2022

What do your configs actually do? Wireplumber generally has more sensible defaults than media-session.

@06kellyjac
Copy link
Member

This seems to be a fairly common occurrence for needing config:

https://wiki.archlinux.org/title/PipeWire#Microphone_is_not_detected_by_PipeWire

My laptop mic is missing so this might fix it but I haven't had time to test it & I very rarely need it

@K900
Copy link
Contributor

K900 commented Oct 13, 2022

Those are configuration profile bugs and should really be resolved upstream.

@ilya-fedin
Copy link
Contributor

I also disable acp to avoid HDMI output to disappear when my monitor goes idle. Without this, default output device changes to built-in audio not connected to anything or if I disable built-in audio in UEFI setitngs, audio becomes choppy as the ALSA driver seem to not to handle pipewire's suspend well.

@teto
Copy link
Member

teto commented Jan 22, 2023

@ilya-fedin I seem to have issues with HDMI output as well, though not exactly yours. What does "acp" stand for and how can I disable it pleasE ?

@bew
Copy link
Contributor

bew commented Jan 22, 2023

@teto ACP seems to be ALSA Card Profile, as per:
https://pipewire.pages.freedesktop.org/wireplumber/configuration/alsa.html#device-properties

I have the same issues with HDMI output disappearing if I enabled it and disconnect my monitor.
I have no idea what's the consequence of disabling it though.. Would I need to manually declare my devices?

@ilya-fedin
Copy link
Contributor

What does "acp" stand for and how can I disable it pleasE ?

It stands for ALSA-Card-Profile, those profiles allow pipewire/pulseaudio to act smarter on devices. If disabled, pipewire presents devices as ALSA mostly. Copy /run/current-system/sw/share/wireplumber/main.lua.d/50-alsa-config.lua to ~/.config/wireplumber/main.lua.d/50-alsa-config.lua, set api.alsa.use-acp to 0. I've also set session.suspend-timeout-seconds to 0.

@YellowOnion
Copy link
Contributor

realtime audio seems to be broken on a recent version of nixpkgs, anyone have issues with stuttering etc?

no threads started by apps are realtime (for example firefox), usually there's one for the audio thread, interestingly rtkit says there's about 17 threads, but I only see 3.

@jansol
Copy link
Contributor Author

jansol commented Feb 22, 2023

I haven't had time to look into it but I did notice that I occasionally (like once in 3 hours or so) get a couple of seconds of really bad stuttering for a couple of months now.

@YellowOnion
Copy link
Contributor

I did also have an issue with my Zen 3 CPU stuttering after updating to 6.1 but that went away with a BIOS update. https://www.amd.com/en/support/kb/faq/pa-410

@jansol
Copy link
Contributor Author

jansol commented Mar 13, 2023

Looks like that might well be it: https://www.phoronix.com/news/Linux-6.3-Fix-For-AMD-fTPM
So it should get sorted with a BIOS update or once the 6.3 kernel (or backports) reaches release channels. I'll check it out next week when I have access to my setup again.

@domenkozar
Copy link
Member

domenkozar commented Mar 13, 2023

I'm going to close this thread to prevent catch-all issue, please open new issues if you have any problems :)

@YellowOnion
Copy link
Contributor

@jansol I figured out my issue was a buggy USB-hub messing with my microphone and thus all of pipewire.

@nixos-discourse
Copy link

This issue has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/a52-ac3-surround-decoder-through-pipewire-alsa-not-working/30999/1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS
Projects
None yet
Development

No branches or pull requests