SOF SoundWire audio configuration

Hello everyone, I have been using NixOS for a few weeks and for several days I have been struggling to find a working and persistent audio configuration. My PC is a Dell Pro Max 14 (MC14250). I haven’t found anything relevant in the nixos-hardware repository or on the web.

My goals are:

  • to have all audio profiles working (“Pro Audio” and “Stereo Output”), i.e., the internal speakers and microphone.
  • to have Bluetooth headphones (with microphone) working. I am using Sony LinkBuds S, which should support these codecs: SBC, AAC, LDAC, and LC3.

Currently, the “Pro Audio” profile is the only one that works; it is activated automatically at startup. No sound is reproduced when the “Stereo Output” profile is active. When the headphones are connected, I have the HSP/HFP profiles with CVSD and mSBC codecs available, but no sound is reproduced.

Unfortunately, I don’t know much about audio in Linux, and my configuration is the result of various trials and errors (I’m sorry if it is messy):

{ config, pkgs, inputs, ... }:

{
  imports = [
    ./hardware-configuration.nix
  ];

  networking.hostName = "pc";

  #########################################
  ## Dell Pro Max 14 Audio Configuration ##
  #########################################

  hardware.enableAllFirmware = true;
  hardware.enableRedistributableFirmware = true;
  hardware.firmware = with pkgs; [ 
    sof-firmware
    linux-firmware
  ];
  
  boot.kernelParams = [
    "snd-intel-dspcfg.dsp_driver=3"
    "intel_iommu=on"
    "iommu=pt"
  ];

  boot.extraModprobeConfig = ''
    options snd-intel-dspcfg dsp_driver=3
  '';

  security.rtkit.enable = true;

  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
    wireplumber.enable = true;

    extraConfig.pipewire-pulse = {
      "pulse.properties" = {
        "flat-volumes" = false;
      };
    };

    # WirePlumber config
    wireplumber.extraConfig = {
      "51-dell-routing" = {
        "monitor.alsa.rules" = [
          {
            matches = [ { "node.name" = "alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-2"; } ];
            actions = { "update-props" = {
              "priority.session" = 3000;
              "node.autoconnect" = true;
              "node.nick" = "Internal Speakers";
            }; };
          }
          {
            matches = [ { "node.name" = "alsa_input.pci-0000_00_1f.3-platform-sof_sdw.pro-input-4"; } ];
            actions = { "update-props" = {
              "priority.session" = 3000;
              "node.autoconnect" = true;
              "node.nick" = "Internal Mic";
            }; };
          }
          # disable HDMI (5/6/7) and the ones you don’t use (0/31), so policy/UI can’t jump to them
          {
            matches = [
              { "node.name" = "alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-5"; }
              { "node.name" = "alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-6"; }
              { "node.name" = "alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-7"; }
              { "node.name" = "alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-0"; }
              { "node.name" = "alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-31"; }
            ];
            actions = { "update-props" = {
              "node.disabled" = true;
              "priority.session" = 1;
            }; };
          }
        ];
      };
    };
  };

  # Init service
  systemd.services.dell-audio-init = {
    description = "Initialize Dell audio";
    after = [ "sound.target" ];
    wantedBy = [ "sound.target" ];
    serviceConfig = {
      Type = "oneshot";
      RemainAfterExit = true;
      ExecStartPre = "${pkgs.coreutils}/bin/sleep 10";
    };
    script = ''
      # Speaker path
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='rt1320-1 OT23 L Switch' on || true
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='rt1320-1 OT23 R Switch' on || true
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='Speaker Switch' on || true
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='Pre Mixer Speaker Playback Volume' 45,45 || true
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='Post Mixer Speaker Playback Volume' 45,45 || true

      # Mic path

      # Route both ADCs to DMIC1 (works fine on your hardware)
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='rt722 ADC 24 Mux' 0 || true
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='rt722 ADC 25 Mux' 0 || true

      # Set capture switches
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset numid=2 on,on || true    # FU0F Capture Switch
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset numid=6 on,on,on,on || true  # FU1E Capture Switch
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset numid=11 on,on,on,on || true # rt1320 Capture Switch

      # Set capture volumes
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset numid=3 30,30 || true        # FU0F Capture Volume
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset numid=7 30,30,30,30 || true  # FU1E Capture Volume
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='rt722 FU15 Boost Volume' 3,3,3,3 || true
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='rt722 FU33 Boost Volume' 2,2 || true

      # Save ALSA state
      ${pkgs.alsa-utils}/bin/alsactl store 0 || true
    '';
  };

  systemd.user.services."audio-defaults" = {
    description = "Set default sink/source and volume";
    after = [ "pipewire-pulse.service" "wireplumber.service" ];
    wantedBy = [ "default.target" ];
    serviceConfig.Type = "oneshot";
    script = ''
      ${pkgs.pipewire}/bin/wpctl set-default alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-2 || true
      ${pkgs.pipewire}/bin/wpctl set-default alsa_input.pci-0000_00_1f.3-platform-sof_sdw.pro-input-4 || true
      ${pkgs.pipewire}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ 0 || true
      ${pkgs.pipewire}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 1.0 || true
    '';
  };


  # Restore ALSA state on boot
  hardware.alsa.enablePersistence = true;
  
  ####################
  ## Networking, BT ##
  ####################

  networking.networkmanager.enable = true;
  networking.networkmanager.wifi.backend = "iwd";
  
  hardware.bluetooth = {
    enable = true;
    powerOnBoot = true;
    settings = {
      General = {
        Enable = "Source,Sink,Media,Socket";
        Experimental = true;
      };
    };
  };
  services.blueman.enable = true;

  services.pipewire.wireplumber.extraConfig."60-bluetooth" = {
    "monitor.bluez.properties" = {
      "bluez5.enable-sbc-xq" = true;
      "bluez5.enable-msbc" = true;
      "bluez5.enable-hw-volume" = true;
      "bluez5.roles" = [ "hsp_hs" "hsp_ag" "hfp_hf" "hfp_ag" ];
    };
  };

  system.stateVersion = "25.05";
}

Here are some debug commands that I think might be useful:

nixos-version --json
{"nixosVersion":"25.05.20250917.e9b7f2f","nixpkgsRevision":"e9b7f2ff62b35f711568b1f0866243c7c302028d"}
uname -r
6.16.7
nix --version
nix (Nix) 2.28.5

wpctl status when Pro-Audio is active:

wpctl status
PipeWire 'pipewire-0' [1.4.7, marco@pc, cookie:916607124]
 └─ Clients:
        34. WirePlumber                         [1.4.7, marco@pc, pid:1815]
        35. pipewire                            [1.4.7, marco@pc, pid:1814]
        48. WirePlumber [export]                [1.4.7, marco@pc, pid:1815]
        49. .xdg-desktop-portal-wrapped         [1.4.7, marco@pc, pid:1768]
        50. .xdg-desktop-portal-hyprland-wrapped [1.4.7, marco@pc, pid:1840]
        51. waybar                              [1.4.7, marco@pc, pid:1725]
        52. Blueman                             [1.4.7, marco@pc, pid:1731]
        66. .pwvucontrol-wrapped                [1.4.7, marco@pc, pid:11617]
        76. Firefox                             [1.4.7, marco@pc, pid:1992]
        77. .pwvucontrol-wrapped                [1.4.7, marco@pc, pid:11617]
        83. .pwvucontrol-wrapped                [1.4.7, marco@pc, pid:11617]
        93. wpctl                               [1.4.7, marco@pc, pid:34004]
        94. Blueman                             [1.4.7, marco@pc, pid:16344]

Audio
 ├─ Devices:
 │      53. sof-soundwire                       [alsa]
 │  
 ├─ Sinks:
 │  *   68. sof-soundwire Pro 2                 [vol: 0.65]
 │  
 ├─ Sources:
 │      69. sof-soundwire Pro 1                 [vol: 1.00]
 │  *   70. sof-soundwire Pro 4                 [vol: 1.00]
 │  
 ├─ Filters:
 │  
 └─ Streams:
       102. PulseAudio Volume Control                                   
             84. input_FL        < Internal Mic:capture_AUX0	[active]
             85. input_FR        < Internal Mic:capture_AUX1	[active]
             97. monitor_FL     
            110. monitor_FR     
       105. PulseAudio Volume Control                                   
             80. monitor_FL     
             98. input_FR        < Pro 1:capture_AUX1	[active]
            101. input_FL        < Pro 1:capture_AUX0	[active]
            109. monitor_FR     

Video
 ├─ Devices:
 │      57. Integrated_Webcam_FHD               [v4l2]
 │      58. Integrated_Webcam_FHD               [v4l2]
 │      59. Integrated_Webcam_FHD               [v4l2]
 │      60. Integrated_Webcam_FHD               [v4l2]
 │      64. Integrated_Webcam_FHD: Integrat     [libcamera]
 │      65. Integrated_Webcam_FHD: Integrat     [libcamera]
 │  
 ├─ Sinks:
 │  
 ├─ Sources:
 │  *   72. Integrated_Webcam_FHD (V4L2)       
 │      74. Integrated_Webcam_FHD (V4L2)       
 │  
 ├─ Filters:
 │  
 └─ Streams:

Settings
 └─ Default Configured Devices:
         0. Audio/Sink    alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-2
         1. Audio/Source  alsa_input.pci-0000_00_1f.3-platform-sof_sdw.pro-input-4

wpctl status when Stereo Output is active:

 wpctl status
PipeWire 'pipewire-0' [1.4.7, marco@pc, cookie:916607124]
 └─ Clients:
        34. WirePlumber                         [1.4.7, marco@pc, pid:1815]
        35. pipewire                            [1.4.7, marco@pc, pid:1814]
        46. .pwvucontrol-wrapped                [1.4.7, marco@pc, pid:11617]
        48. WirePlumber [export]                [1.4.7, marco@pc, pid:1815]
        49. .xdg-desktop-portal-wrapped         [1.4.7, marco@pc, pid:1768]
        50. .xdg-desktop-portal-hyprland-wrapped [1.4.7, marco@pc, pid:1840]
        51. waybar                              [1.4.7, marco@pc, pid:1725]
        52. Blueman                             [1.4.7, marco@pc, pid:1731]
        76. Firefox                             [1.4.7, marco@pc, pid:1992]
        77. .pwvucontrol-wrapped                [1.4.7, marco@pc, pid:11617]
        87. wpctl                               [1.4.7, marco@pc, pid:35435]
        94. Blueman                             [1.4.7, marco@pc, pid:16344]

Audio
 ├─ Devices:
 │      53. sof-soundwire                       [alsa]
 │  
 ├─ Sinks:
 │  *   70. sof-soundwire Stereo                [vol: 1.20]
 │  
 ├─ Sources:
 │  
 ├─ Filters:
 │  
 └─ Streams:
        68. PulseAudio Volume Control                                   
             44. monitor_FL     
             67. monitor_FR     
             71. input_FR        < Stereo:monitor_FR	[active]
             78. input_FL        < Stereo:monitor_FL	[active]

Video
 ├─ Devices:
 │      57. Integrated_Webcam_FHD               [v4l2]
 │      58. Integrated_Webcam_FHD               [v4l2]
 │      59. Integrated_Webcam_FHD               [v4l2]
 │      60. Integrated_Webcam_FHD               [v4l2]
 │      64. Integrated_Webcam_FHD: Integrat     [libcamera]
 │      65. Integrated_Webcam_FHD: Integrat     [libcamera]
 │  
 ├─ Sinks:
 │  
 ├─ Sources:
 │  *   72. Integrated_Webcam_FHD (V4L2)       
 │      74. Integrated_Webcam_FHD (V4L2)       
 │  
 ├─ Filters:
 │  
 └─ Streams:

Settings
 └─ Default Configured Devices:
         0. Audio/Sink    alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-2
         1. Audio/Source  alsa_input.pci-0000_00_1f.3-platform-sof_sdw.pro-input-4

wpctl status when headphones are connected and selected:

wpctl status
PipeWire 'pipewire-0' [1.4.7, marco@pc, cookie:916607124]
 └─ Clients:
        34. WirePlumber                         [1.4.7, marco@pc, pid:1815]
        35. pipewire                            [1.4.7, marco@pc, pid:1814]
        46. .pwvucontrol-wrapped                [1.4.7, marco@pc, pid:37964]
        48. WirePlumber [export]                [1.4.7, marco@pc, pid:1815]
        49. .xdg-desktop-portal-wrapped         [1.4.7, marco@pc, pid:1768]
        50. .xdg-desktop-portal-hyprland-wrapped [1.4.7, marco@pc, pid:1840]
        51. waybar                              [1.4.7, marco@pc, pid:1725]
        52. Blueman                             [1.4.7, marco@pc, pid:1731]
        68. wpctl                               [1.4.7, marco@pc, pid:41853]
        76. Firefox                             [1.4.7, marco@pc, pid:1992]

Audio
 ├─ Devices:
 │      53. sof-soundwire                       [alsa]
 │      67. LinkBuds S                          [bluez5]
 │  
 ├─ Sinks:
 │  *  102. LinkBuds S                          [vol: 1.00]
 │  
 ├─ Sources:
 │  *   71. LinkBuds S                          [vol: 1.00]
 │  
 ├─ Filters:
 │  
 └─ Streams:
        69. Firefox                                                     
             44. output_MONO     > LinkBuds S:playback_MONO	[init]

Video
 ├─ Devices:
 │      57. Integrated_Webcam_FHD               [v4l2]
 │      58. Integrated_Webcam_FHD               [v4l2]
 │      59. Integrated_Webcam_FHD               [v4l2]
 │      60. Integrated_Webcam_FHD               [v4l2]
 │      64. Integrated_Webcam_FHD: Integrat     [libcamera]
 │      65. Integrated_Webcam_FHD: Integrat     [libcamera]
 │  
 ├─ Sinks:
 │  
 ├─ Sources:
 │  *   72. Integrated_Webcam_FHD (V4L2)       
 │      74. Integrated_Webcam_FHD (V4L2)       
 │  
 ├─ Filters:
 │  
 └─ Streams:

Settings
 └─ Default Configured Devices:
         0. Audio/Sink    alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-2
         1. Audio/Source  alsa_input.pci-0000_00_1f.3-platform-sof_sdw.pro-input-4

Thanks in advance for any help. (This is my first post, so I apologize if I’ve made any mistakes or left anything out).

2 Likes

Interesting enough, I have the same issues on a Dell 14 pro, and sound used to work for me – about a week ago. Im on Ubuntu 25.10, though. I’m wondering if we somehow got a bad firmware update :frowning:

2 Likes

It was shipped with Ubuntu 24.04 LTS: speakers, mic and webcam worked out of the box. Since the plan was to use NixOS I installed it the same day without testing Bluetooth. A couple of weeks later I tried Ubuntu 25.04 in a live ISO USB, to verify exactly what you are saying but surprisingly everything worked (still didn’t test Bluetooth). Hope someone has suggestions.

2 Likes

On my system Im seeing a SOF-Firmware upgrade:

2025-09-19 16:19:49 status installed firmware-sof-signed:all 2025.01-1ubuntu1~25.04.2
2025-09-25 09:09:42 status installed firmware-sof-signed:all 2025.01-1ubuntu1~25.04.3
2025-10-14 23:42:27 status installed firmware-sof-signed:all 2025.05.1-1

Maybe I can roll back the one from the 14th

2 Likes

It would be really helpful even for me. If someone has any clue, please tell us!!!

1 Like

Wait, I think that is the package version; the actual firmware blob version loaded by the driver may or may not exactly match the package version. From what I understand your sof version should be 2.13.1. I dont know if this is useful for my hardware; to try it I should use the unstable NixOS branch.

Also I see a BIOS update on DELL website on 14th October 2025 for “Dell Pro Max 14 MC14250/16 MC16250” maybe it’s a coincidnce idk.

It would be nice to know your BIOS version and SOF version to understand if we actually have the same problem. I am going to perform all the updates later today and then I’m gonna try the unstable channel with updated SOF.

For now this is my pc status:

sof version ( 2.12.0.1):

sudo dmesg | grep -E "sof.*firmware|sof.*version"
[    7.313895] sof-audio-pci-intel-mtl 0000:00:1f.3: Loaded firmware library: ADSPFW, version: 2.12.0.1
[    7.442028] sof-audio-pci-intel-mtl 0000:00:1f.3: Booted firmware version: 2.12.0.1

current BIOS (1.7.0):

sudo dmidecode -t bios
# dmidecode 3.6
Getting SMBIOS data from sysfs.
SMBIOS 3.8 present.
# SMBIOS implementations newer than version 3.7.0 are not
# fully supported by this version of dmidecode.

Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
	Vendor: Dell Inc.
	Version: 1.7.0
	Release Date: 08/14/2025
	ROM Size: 64 MB
	Characteristics:
		PCI is supported
		PNP is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		Boot from CD is supported
		Selectable boot is supported
		EDD is supported
		Print screen service is supported (int 5h)
		8042 keyboard services are supported (int 9h)
		Serial services are supported (int 14h)
		Printer services are supported (int 17h)
		ACPI is supported
		USB legacy is supported
		Smart battery is supported
		BIOS boot specification is supported
		Function key-initiated network boot is supported
		Targeted content distribution is supported
		UEFI is supported
	BIOS Revision: 1.7
	Firmware Revision: 1.19

Handle 0x0D00, DMI type 13, 22 bytes
BIOS Language Information
	Language Description Format: Abbreviated
	Installable Languages: 1
		enUS
	Currently Installed Language: enUS

EDIT: After the BIOS update I can “use” Bluetooth headset. But let’s break it down:

  • checked for updates with: fwupdmgr get-updates and then update via: sudo fwupdmgr update.
  • tested speaker with Pro Audio, they still working fine.
  • tested speakers with Stereo Output and of course nothing changed, they simply don’t work.
  • connected my Sony LinkBuds S, selected them as Firefox audio and they work with both HSP/HFP codec mSBC and codec CVSD. With those two profiles the audio is actually terrible, in the next few days, I will try different things.

Even if I do not fully understand how this update can have something to do with Bluetooth or audio in general. I want to emphasize that I haven’t changed anything in my configuration before or after this process.

I will post updates here.

1 Like
[    4.138577] sof-audio-pci-intel-mtl 0000:00:1f.3: Loaded firmware library: ADSPFW, version: 2.13.0.1
[    4.264969] sof-audio-pci-intel-mtl 0000:00:1f.3: Booted firmware version: 2.13.0.1

and

# dmidecode 3.6
Getting SMBIOS data from sysfs.
SMBIOS 3.8 present.
# SMBIOS implementations newer than version 3.7.0 are not
# fully supported by this version of dmidecode.

Handle 0x0001, DMI type 0, 26 bytes
BIOS Information
	Vendor: Dell Inc.
	Version: 2.6.1
	Release Date: 08/26/2025
	ROM Size: 64 MB
	Characteristics:
		PCI is supported
		PNP is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		Boot from CD is supported
		Selectable boot is supported
		EDD is supported
		Print screen service is supported (int 5h)
		8042 keyboard services are supported (int 9h)
		Serial services are supported (int 14h)
		Printer services are supported (int 17h)
		ACPI is supported
		USB legacy is supported
		BIOS boot specification is supported
		Function key-initiated network boot is supported
		Targeted content distribution is supported
		UEFI is supported
	BIOS Revision: 2.6
	Firmware Revision: 1.16

Handle 0x0D00, DMI type 13, 22 bytes
BIOS Language Information
	Language Description Format: Abbreviated
	Installable Languages: 1
		enUS
	Currently Installed Language: enUS

and still not working, will investigate BIOS Update…

1 Like

Just chiming in to say that I’m experiencing similar issues on my Dell Pro Max 14 MC14250. When connecting my headphones with bluetooth they work fine, but the laptop speakers and microphone do not show up.

Some relevant logs:

dell-audio.nix config

This is imported in my main configuration.nix:

{ config, pkgs, ... }:


{
  hardware.enableAllFirmware = true;
  hardware.enableRedistributableFirmware = true;
  hardware.firmware = with pkgs; [ 
    sof-firmware
    linux-firmware
  ];
  
  boot.kernelParams = [
    "snd-intel-dspcfg.dsp_driver=3"
    "intel_iommu=on"
    "iommu=pt"
  ];

  boot.extraModprobeConfig = ''
    options snd-intel-dspcfg dsp_driver=3
  '';

  services.pulseaudio.enable = false;

  security.rtkit.enable = true;

  services.pipewire = {
    enable = true;
    alsa.enable = false;
    alsa.support32Bit = false;
    pulse.enable = true;
    wireplumber.enable = true;

    extraConfig.pipewire-pulse = {
      "pulse.properties" = {
        "flat-volumes" = false;
      };
    };

    # WirePlumber config
    wireplumber.extraConfig = {
      "51-dell-routing" = {
        "monitor.alsa.rules" = [
          {
            matches = [ { "node.name" = "alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-2"; } ];
            actions = { "update-props" = {
              "priority.session" = 3000;
              "node.autoconnect" = true;
              "node.nick" = "Internal Speakers";
            }; };
          }
          {
            matches = [ { "node.name" = "alsa_input.pci-0000_00_1f.3-platform-sof_sdw.pro-input-4"; } ];
            actions = { "update-props" = {
              "priority.session" = 3000;
              "node.autoconnect" = true;
              "node.nick" = "Internal Mic";
            }; };
          }
          # disable HDMI (5/6/7) and the ones you don’t use (0/31), so policy/UI can’t jump to them
          {
            matches = [
              { "node.name" = "alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-5"; }
              { "node.name" = "alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-6"; }
              { "node.name" = "alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-7"; }
              { "node.name" = "alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-0"; }
              { "node.name" = "alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-31"; }
            ];
            actions = { "update-props" = {
              "node.disabled" = true;
              "priority.session" = 1;
            }; };
          }
        ];
      };
    };
  };

  # Init service
  systemd.services.dell-audio-init = {
    description = "Initialize Dell audio";
    after = [ "sound.target" ];
    wantedBy = [ "sound.target" ];
    serviceConfig = {
      Type = "oneshot";
      RemainAfterExit = true;
      ExecStartPre = "${pkgs.coreutils}/bin/sleep 10";
    };
    script = ''
      # Speaker path
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='rt1320-1 OT23 L Switch' on || true
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='rt1320-1 OT23 R Switch' on || true
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='Speaker Switch' on || true
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='Pre Mixer Speaker Playback Volume' 45,45 || true
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='Post Mixer Speaker Playback Volume' 45,45 || true

      # Mic path

      # Route both ADCs to DMIC1 (works fine on your hardware)
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='rt722 ADC 24 Mux' 0 || true
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='rt722 ADC 25 Mux' 0 || true

      # Set capture switches
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset numid=2 on,on || true    # FU0F Capture Switch
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset numid=6 on,on,on,on || true  # FU1E Capture Switch
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset numid=11 on,on,on,on || true # rt1320 Capture Switch

      # Set capture volumes
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset numid=3 30,30 || true        # FU0F Capture Volume
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset numid=7 30,30,30,30 || true  # FU1E Capture Volume
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='rt722 FU15 Boost Volume' 3,3,3,3 || true
      ${pkgs.alsa-utils}/bin/amixer -c 0 cset name='rt722 FU33 Boost Volume' 2,2 || true

      # Save ALSA state
      ${pkgs.alsa-utils}/bin/alsactl store 0 || true
    '';
  };

  systemd.user.services."audio-defaults" = {
    description = "Set default sink/source and volume";
    after = [ "pipewire-pulse.service" "wireplumber.service" ];
    wantedBy = [ "default.target" ];
    serviceConfig.Type = "oneshot";
    script = ''
      ${pkgs.pipewire}/bin/wpctl set-default alsa_output.pci-0000_00_1f.3-platform-sof_sdw.pro-output-2 || true
      ${pkgs.pipewire}/bin/wpctl set-default alsa_input.pci-0000_00_1f.3-platform-sof_sdw.pro-input-4 || true
      ${pkgs.pipewire}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ 0 || true
      ${pkgs.pipewire}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 1.0 || true
    '';
  };


  # Restore ALSA state on boot
  # hardware.alsa.enablePersistence = true; # Commented out because the associated service doesn't work.
}
audio-related dmesg output

sudo dmesg | grep audio

[    3.127421] sof-audio-pci-intel-mtl 0000:00:1f.3: enabling device (0000 -> 0002)
[    3.127621] sof-audio-pci-intel-mtl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100
[    3.460208] sof-audio-pci-intel-mtl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    3.467297] sof-audio-pci-intel-mtl 0000:00:1f.3: use msi interrupt mode
[    3.477598] sof-audio-pci-intel-mtl 0000:00:1f.3: hda codecs found, mask 4
[    3.477600] sof-audio-pci-intel-mtl 0000:00:1f.3: NHLT device BT(0) detected, ssp_mask 0x4
[    3.477602] sof-audio-pci-intel-mtl 0000:00:1f.3: BT link detected in NHLT tables: 0x4
[    3.477605] sof-audio-pci-intel-mtl 0000:00:1f.3: DMICs detected in NHLT tables: 0
[    3.481335] sof-audio-pci-intel-mtl 0000:00:1f.3: Firmware paths/files for ipc type 1:
[    3.481337] sof-audio-pci-intel-mtl 0000:00:1f.3:  Firmware file:     intel/sof-ipc4/arl/sof-arl.ri
[    3.481338] sof-audio-pci-intel-mtl 0000:00:1f.3:  Firmware lib path: intel/sof-ipc4-lib/arl
[    3.481339] sof-audio-pci-intel-mtl 0000:00:1f.3:  Topology file:     intel/sof-ace-tplg/sof-arl-rt722-l0_rt1320-l2.tplg
[    3.482877] sof-audio-pci-intel-mtl 0000:00:1f.3: Loaded firmware library: ADSPFW, version: 2.12.0.1
[    3.630852] sof-audio-pci-intel-mtl 0000:00:1f.3: Booted firmware version: 2.12.0.1
[    3.648866] sof-audio-pci-intel-mtl 0000:00:1f.3: Topology: ABI 3:29:1 Kernel ABI 3:23:1
dmidecode

sudo dmidecode -t bios

# dmidecode 3.6
Getting SMBIOS data from sysfs.
SMBIOS 3.8 present.
# SMBIOS implementations newer than version 3.7.0 are not
# fully supported by this version of dmidecode.

Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
	Vendor: Dell Inc.
	Version: 1.10.1
	Release Date: 12/11/2025
	ROM Size: 64 MB
	Characteristics:
		PCI is supported
		PNP is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		Boot from CD is supported
		Selectable boot is supported
		EDD is supported
		Print screen service is supported (int 5h)
		8042 keyboard services are supported (int 9h)
		Serial services are supported (int 14h)
		Printer services are supported (int 17h)
		ACPI is supported
		USB legacy is supported
		Smart battery is supported
		BIOS boot specification is supported
		Function key-initiated network boot is supported
		Targeted content distribution is supported
		UEFI is supported
	BIOS Revision: 1.10
	Firmware Revision: 1.22

Handle 0x0D00, DMI type 13, 22 bytes
BIOS Language Information
	Language Description Format: Abbreviated
	Installable Languages: 1
		enUS
	Currently Installed Language: enUS
fwupdmgr

fwupdmgr get-devices

Dell Inc. Dell Pro Max 14 MC14250
│
├─Integrated Webcam FHD:
│     Device ID:          ff75e69eba7f7bc73bf2e2524de4c41d32d61506
│     Current version:    43.41
│     Vendor:             Sunplus Innovation Technology Inc. (USB:0x1BCF)
│     Serial Number:      01.00.00
│     GUID:               5d381427-29ab-5e18-beb1-a060bebb81e6 ← USB\VID_1BCF&PID_28D6
│     Device Flags:       • Updatable
│                         • Can tag for emulation
│   
├─PC801 NVMe SED SK hynix 1TB:
│     Device ID:          71b677ca0f1bc2c5b804fa1d59e52064ce589293
│     Summary:            NVM Express solid state drive
│     Current version:    51071141
│     Vendor:             SK hynix (PCI:0x1C5C)
│     Serial Number:      AME9N00681310A55G
│     GUIDs:              bcfb6135-158b-5c97-a08c-a76de6c90dc4 ← NVME\VEN_1C5C&DEV_1959
│                         021c33a7-8b6a-5ec2-a388-4c472df55c3f ← NVME\VEN_1C5C&DEV_1959&SUBSYS_1C5C1959
│                         4018a1e0-7ead-5728-b8cc-74ebf5704bcf ← STORAGE-DELL-111835
│                         16404868-48d1-11ec-81d3-0242ac130003
│                         fb2c4985-169f-5f6a-b0aa-d9e53da81d0e ← PC801 NVMe SED SK hynix 1TB
│     Device Flags:       • Internal device
│                         • Updatable
│                         • System requires external power source
│                         • Needs a reboot after installation
│                         • Device is usable for the duration of the update
│                         • Signed Payload
│                         • Can tag for emulation
│   
├─System Firmware:
│ │   Device ID:          f60b72015a90b7109387c1fa48977aae063a82a8
│ │   Summary:            UEFI System Resource Table device (updated via NVRAM)
│ │   Current version:    1.10.1
│ │   Minimum Version:    1.10.0
│ │   Vendor:             Dell (DMI:Dell Inc.)
│ │   Update State:       Success
│ │   GUID:               1db0a61a-a8f0-4301-9d02-c7809463c59d
│ │   Device Flags:       • Internal device
│ │                       • Updatable
│ │                       • System requires external power source
│ │                       • Supported on remote server
│ │                       • Needs a reboot after installation
│ │                       • Cryptographic hash verification is available
│ │                       • Device is usable for the duration of the update
│ │   Device Requests:    • Message
│ │ 
│ ├─Platform Key:
│ │     Device ID:        6924110cde4fa051bfdc600a60620dc7aa9d3c6a
│ │     Summary:          UEFI Platform Key
│ │     Current version:  0
│ │     Vendor:           Dell
│ │     GUIDs:            8affd5b3-c498-5a17-84b5-29d2c5728e6f ← UEFI\VENDOR_Dell&NAME_Dell-Platform-Key
│ │                       ca4b602c-3c2f-5ccf-9757-ad471c465b41 ← UEFI\CRT_DB84CBBE71B3B1F045F98D4E3DA19F18F834A43A
│ │     Device Flags:     • Internal device
│ │                       • Cryptographic hash verification is available
│ │                       • Can tag for emulation
│ │   
│ ├─UEFI Signature Database:
│ │ │   Device ID:        0352a8acc949c7df21fec16e566ba9a74e797a97
│ │ │   Device Flags:     • Internal device
│ │ │ 
│ │ └─Windows UEFI CA:
│ │       Device ID:      d31da5f926c6d962ed810b284fab5a2ef623007b
│ │       Current version: 2023
│ │       Vendor:         Microsoft (UEFI:Microsoft)
│ │       GUIDs:          914015a8-9d92-5462-9a9b-f2b361e4faae ← UEFI\VENDOR_Microsoft&NAME_Windows-UEFI-CA
│ │                       89a825bf-78b5-5f1c-905b-e982b2f02584 ← UEFI\CRT_A794240D25F0CCB2EC8142DC2F7411890717DEAD
│ │       Device Flags:   • Internal device
│ │                       • Updatable
│ │                       • Needs a reboot after installation
│ │                       • Signed Payload
│ │                       • Can tag for emulation
│ │     
│ └─UEFI dbx:
│       Device ID:        362301da643102b9f38477387e2193e57abaa590
│       Summary:          UEFI revocation database
│       Current version:  20230501
│       Minimum Version:  20230501
│       Vendor:           UEFI:Microsoft
│       Install Duration: 1 second
│       GUIDs:            4a6cd2cb-8741-5257-9d1f-89a275dacca7 ← UEFI\CRT_E28D59CA489BD2AD580F2EA5D62D6A29BB9C02AE5A818434A37DA7FC11DFF9E9&ARCH_X64
│                         aa0bace8-aac0-563d-b3f0-6436e75a7723 ← UEFI\CRT_E6B0C406F9BBC4FBDC1F976DEC6FCBD332D6F93FE5EBDA52ACC8F0F18518D1E9&ARCH_X64
│                         f8ba2887-9411-5c36-9cee-88995bb39731 ← UEFI\CRT_A1117F516A32CEFCBA3F2D1ACE10A87972FD6BBE8FE0D0B996E09E65D802A503&ARCH_X64
│                         d07ff664-b0e1-5f4e-a723-d7fbcbfcb94f ← UEFI\CRT_3CD3F0309EDAE228767A976DD40D9F4AFFC4FBD5218F2E8CC3C9DD97E8AC6F9D&ARCH_X64
│       Device Flags:     • Internal device
│                         • Updatable
│                         • Needs a reboot after installation
│                         • Cryptographic hash verification is available
│                         • Device is usable for the duration of the update
│                         • Only version upgrades are allowed
│                         • Signed Payload
│                         • Can tag for emulation
│     
├─TPM:
│     Device ID:          1d8d50a4dbc65618f5c399c2ae827b632b3ccc11
│     Current version:    1.769.0.0
│     Vendor:             ST Microelectronics (TPM:STM)
│     GUIDs:              3680fbf1-593f-586f-91ac-c528b37e8373 ← TPM\VEN_STM&DEV_0000
│                         df479455-9790-58c9-b22a-bce5bc9eb149 ← TPM\VEN_STM&MOD_ST33TPHF2XSPI
│                         8d0b4adc-a42f-59eb-9df8-665923afa086 ← TPM\VEN_STM&DEV_0000&VER_2.0
│                         d565c809-9cf5-51c1-9ab7-d66b9d70ffbd ← TPM\VEN_STM&MOD_ST33TPHF2XSPI&VER_2.0
│                         142eea0a-f555-5001-8552-f0776286c3d4 ← 0cf0-2.0
│     Device Flags:       • Internal device
│                         • Updatable
│                         • System requires external power source
│                         • Needs a reboot after installation
│                         • Device can recover flash failures
│                         • Full disk encryption secrets may be invalidated when updating
│                         • Signed Payload
│                         • Can tag for emulation
│   
├─UEFI Device Firmware:
│     Device ID:          250756f68b4c7bf35e5df086ece1f18c6e826224
│     Summary:            UEFI System Resource Table device (updated via NVRAM)
│     Current version:    1359417665
│     Minimum Version:    1359417665
│     Vendor:             DMI:Dell Inc.
│     Update State:       Success
│     GUID:               16404868-48d1-11ec-81d3-0242ac130003
│     Device Flags:       • Internal device
│                         • Updatable
│                         • System requires external power source
│                         • Needs a reboot after installation
│                         • Device is usable for the duration of the update
│     Device Requests:    • Message
│   
└─Unifying Receiver:
      Device ID:          15dace5ce2fc90c49f6bcabd7e9065620e303954
      Summary:            Miniaturised USB wireless receiver
      Current version:    RQR12.11_B0032
      Bootloader Version: BOT01.04_B0016
      Vendor:             Logitech, Inc. (USB:0x046D, HIDRAW:0x046D)
      Install Duration:   30 seconds
      GUIDs:              aa995882-da42-574a-8338-c8dfdca447e3 ← UFY\VID_046D&PID_C52B
                          279ed287-3607-549e-bacc-f873bb9838c4 ← HIDRAW\VEN_046D&DEV_C52B
                          9d131a0c-a606-580f-8eda-80587250b8d6 ← USB\VID_046D&PID_AAAA
      Device Flags:       • Updatable
                          • Supported on remote server
                          • Signed Payload
                          • Can tag for emulation

I’m going to keep messing around with it, if I find anything I’ll update here.