You are not logged in.

#1 2025-10-15 20:51:22

definitellynotspammer
Member
Registered: 2016-06-07
Posts: 55

Help me figure out wireplumber configuration for Audeze Maxwell

I've got those fancy hyped headphones and they are really good, however, they lack configuration on Linux, as it's kind of defaulting to a wrong settings.

Here is what I am trying to do:

  1. Force switch to pro audio profile

  2. Rename devices, so it shows "Audeze Maxwell Chat" and "Audeze Maxwell Game" as you would expect in Windows and/or MacOS

  3. Force select "Audeze Maxwell Game" as default audio output

  4. Set device's all PCMs to 100%

So far I managed to achieve only 2nd, while 3rd and 1st "steps" kind of automatic due to KDE Plasma taking care of? How do I get step #4 to be automatic using wireplumber?

P.S. Step 4 is basically this:

amixer -c 1 sset 'PCM',0 100%; amixer -c 1 sset 'PCM',1 100%; amixer -c 1 sset 'Mic',0 100%

Here is the file

~/.config/wireplumber/wireplumber.conf.d/audeze-maxwell.conf

I managed to create and at least renaming works great:

monitor.alsa.rules = [
    # Configure device
    {
        matches = [
            {
                device.name = "~alsa_card.usb-Audeze_LLC_Audeze_Maxwell_.*"
            }
        ]
        actions = {
            update-props = {
                #...
            }
        }
    },
    # Configure Chat output
    {
        matches = [
            { 
                node.name = "~alsa_output.usb-Audeze_LLC_Audeze_Maxwell_.+.pro-output-0"
            }
        ],
        actions = {
            update-props = {
                node.description = "Audeze Maxwell Chat",
                device.form-factor = "headset",
                device.icon-name = "audio-headset-symbolic",
                priority.session = 100,
                node.nick = "maxwell-chat"
            }
        }
    },
    # Configure Game output  
    {
        matches = [
            { 
                node.name = "~alsa_output.usb-Audeze_LLC_Audeze_Maxwell_.+.pro-output-1"
            }
        ],
        actions = {
            update-props = {
                node.description = "Audeze Maxwell Game",
                device.form-factor = "headphones",
                device.icon-name = "audio-headphones-symbolic",
                priority.session = 900,
                node.nick = "maxwell-game"
            }
        }
    }
]

Offline

#2 2025-10-16 13:59:48

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 24,802

Re: Help me figure out wireplumber configuration for Audeze Maxwell

If you don't use amixer but a mixer that is pipewire/pulse aware like pactl/wpctl or so then these volume adjustments should stick and get reapplied by default.

That said since this is a "classic" gaming headset usecase these actually do normally have a working profile config already and you might just need to add some udev rules.

ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", ENV{ACP_PROFILE_SET}="usb-gaming-headset.conf"

in some /etc/udev/rules.d/91-custom-pipewire-alsa.rules where xxxx and yyyy are the vendorid and productid you can get from e.g. lsusb.

If you use that instead of your wireplumber config, do the profiles get generated correctly? What outputs do you get from

aplay -l
amixer -c0 #or whatever the appropriate card index is
lsusb
pactl list cards
pactl list sinks

currently?

Last edited by V1del (2025-10-16 14:40:53)

Offline

#3 2025-10-17 08:00:01

definitellynotspammer
Member
Registered: 2016-06-07
Posts: 55

Re: Help me figure out wireplumber configuration for Audeze Maxwell

Hi. I think I would need to clarify few things. UDEV rule might not be needed:

  • Pro Audio profile is persistent, as it's somehow controlled by KDE Plasma. Not an issue here, but I would prefer (if possible) to force remove other profiles, or force this Pro Audio profile every time I connect those headphones, no matter what other profile has been enabled before.

  • PCM volume in alsamixer persists to some extent - when I reconnect the USB Dongle. But when I reboot my PC, it resets to some random level (~45%). I am unable to edit this audio level using wireplumber. Note that the way USB dongle works is that it is not detected by a PC unless I turn on headphones, so running any commands on boot isn't a viable solution (or the solution I would want). Any better way to set it, rather than doing manually? I would prefer some configuration file, either wireplumber, or some alsa configuration file...

Reason why I am trying to achieve all this (instead of setting manually) is because I would like to share final configuration with the community on several sites, so users generally can have better experience who are using these awesome headphones.

Here is the output you requested:

Output of aplay -l:

**** List of PLAYBACK Hardware Devices ****
card 3: Dongle [Audeze Maxwell XBOX Dongle], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: Dongle [Audeze Maxwell XBOX Dongle], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Output of amixer -cX:

Simple mixer control 'PCM',0
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 73
  Mono:
  Front Left: Playback 36 [49%] [-38.00dB] [on]
  Front Right: Playback 36 [49%] [-38.00dB] [on]
Simple mixer control 'PCM',1
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 73
  Mono:
  Front Left: Playback 73 [100%] [-1.00dB] [on]
  Front Right: Playback 73 [100%] [-1.00dB] [on]
Simple mixer control 'Mic',0
  Capabilities: cvolume cvolume-joined cswitch cswitch-joined
  Capture channels: Mono
  Limits: Capture 0 - 73
  Mono: Capture 73 [100%] [-1.00dB] [on]

Output of lsusb:

Bus 003 Device 015: ID 3329:4b18 Audeze LLC Audeze Maxwell XBOX Dongle

Output of pactl list cards:

Card #478
        Name: alsa_card.usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01
        Driver: alsa
        Owner Module: n/a
        Properties:
                api.acp.auto-port = "false"
                api.acp.auto-profile = "false"
                api.alsa.card = "3"
                api.alsa.card.longname = "Audeze LLC Audeze Maxwell XBOX Dongle at usb-0000:00:14.0-9, high speed"
                api.alsa.card.name = "Audeze Maxwell XBOX Dongle"
                api.alsa.path = "hw:3"
                api.alsa.split-enable = "true"
                api.alsa.use-acp = "true"
                api.dbus.ReserveDevice1 = "Audio3"
                api.dbus.ReserveDevice1.Priority = "-20"
                device.api = "alsa"
                device.bus = "usb"
                device.bus-id = "usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01"
                device.bus_path = "pci-0000:00:14.0-usb-0:9:1.1"
                device.description = "Audeze Maxwell XBOX Dongle"
                device.enum.api = "udev"
                device.icon_name = "audio-card-analog-usb"
                device.name = "alsa_card.usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01"
                device.nick = "Audeze Maxwell XBOX Dongle"
                device.plugged.usec = "5353795096"
                device.product.id = "0x4b18"
                device.product.name = "Audeze Maxwell XBOX Dongle"
                device.serial = "Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000"
                device.subsystem = "sound"
                sysfs.path = "/devices/pci0000:00/0000:00:14.0/usb3/3-9/3-9:1.1/sound/card3"
                device.vendor.id = "0x3329"
                device.vendor.name = "Audeze LLC"
                media.class = "Audio/Device"
                spa.object.id = "8"
                factory.id = "15"
                client.id = "40"
                object.id = "79"
                object.serial = "478"
                object.path = "alsa:acp:Dongle"
                alsa.card = "3"
                alsa.card_name = "Audeze Maxwell XBOX Dongle"
                alsa.long_card_name = "Audeze LLC Audeze Maxwell XBOX Dongle at usb-0000:00:14.0-9, high speed"
                alsa.driver_name = "snd_usb_audio"
                alsa.mixer_name = "USB Mixer"
                alsa.components = "USB3329:4b18"
                alsa.id = "Dongle"
                device.string = "3"
        Profiles:
                off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
                output:analog-stereo+input:mono-fallback: Analog Stereo Output + Mono Input (sinks: 1, sources: 1, priority: 6501, available: yes)
                output:analog-stereo: Analog Stereo Output (sinks: 1, sources: 0, priority: 6500, available: yes)
                output:iec958-stereo+input:mono-fallback: Digital Stereo (IEC958) Output + Mono Input (sinks: 1, sources: 1, priority: 5501, available: yes)
                output:iec958-stereo: Digital Stereo (IEC958) Output (sinks: 1, sources: 0, priority: 5500, available: yes)
                output:iec958-ac3-surround-51+input:mono-fallback: Digital Surround 5.1 (IEC958/AC3) Output + Mono Input (sinks: 1, sources: 1, priority: 301, available: yes)
                output:iec958-ac3-surround-51: Digital Surround 5.1 (IEC958/AC3) Output (sinks: 1, sources: 0, priority: 300, available: yes)
                pro-audio: Pro Audio (sinks: 2, sources: 1, priority: 1, available: yes)
                input:mono-fallback: Mono Input (sinks: 0, sources: 1, priority: 1, available: yes)
        Active Profile: pro-audio
        Ports:
                analog-input-mic: Microphone (type: Mic, priority: 8700, latency offset: 0 usec, availability unknown)
                        Properties:
                                port.type = "mic"
                                device.icon_name = "audio-input-microphone"
                                card.profile.port = "0"
                        Part of profile(s): input:mono-fallback, output:analog-stereo+input:mono-fallback, output:iec958-stereo+input:mono-fallback, output:iec958-ac3-surround-51+input:mono-fallback
                analog-output: Analog Output (type: Analog, priority: 9900, latency offset: 0 usec, availability unknown)
                        Properties:
                                port.type = "analog"
                                card.profile.port = "1"
                        Part of profile(s): output:analog-stereo, output:analog-stereo+input:mono-fallback
                iec958-stereo-output: Digital Output (S/PDIF) (type: SPDIF, priority: 0, latency offset: 0 usec, availability unknown)
                        Properties:
                                port.type = "spdif"
                                card.profile.port = "2"
                        Part of profile(s): output:iec958-stereo, output:iec958-stereo+input:mono-fallback

Output of pactl list sinks:

Sink #479
        State: SUSPENDED
        Name: alsa_output.usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01.pro-output-0
        Description: Audeze Maxwell Chat
        Driver: PipeWire
        Sample Specification: s24le 2ch 48000Hz
        Channel Map: aux0,aux1
        Owner Module: 4294967295
        Mute: no
        Volume: aux0: 65536 / 100% / 0.00 dB,   aux1: 65536 / 100% / 0.00 dB
                balance 0.00
        Base Volume: 65536 / 100% / 0.00 dB
        Monitor Source: alsa_output.usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01.pro-output-0.monitor
        Latency: 0 usec, configured 0 usec
        Flags: HARDWARE DECIBEL_VOLUME LATENCY 
        Properties:
                alsa.card = "3"
                alsa.card_name = "Audeze Maxwell XBOX Dongle"
                alsa.class = "generic"
                alsa.components = "USB3329:4b18"
                alsa.device = "0"
                alsa.driver_name = "snd_usb_audio"
                alsa.id = "USB Audio"
                alsa.long_card_name = "Audeze LLC Audeze Maxwell XBOX Dongle at usb-0000:00:14.0-9, high speed"
                alsa.mixer_name = "USB Mixer"
                alsa.name = "USB Audio"
                alsa.resolution_bits = "24"
                alsa.subclass = "generic-mix"
                alsa.subdevice = "0"
                alsa.subdevice_name = "subdevice #0"
                alsa.sync.id = "00000000:00000000:00000000:00000000"
                api.alsa.card.longname = "Audeze LLC Audeze Maxwell XBOX Dongle at usb-0000:00:14.0-9, high speed"
                api.alsa.card.name = "Audeze Maxwell XBOX Dongle"
                api.alsa.path = "hw:3,0"
                api.alsa.pcm.card = "3"
                api.alsa.pcm.stream = "playback"
                audio.channels = "2"
                audio.position = "AUX0,AUX1"
                card.profile.device = "0"
                clock.name = "api.alsa.3"
                device.api = "alsa"
                device.bus = "usb"
                device.class = "sound"
                device.form_factor = "headset"
                device.icon_name = "audio-headset-symbolic"
                device.id = "79"
                device.profile.description = "Pro"
                device.profile.name = "pro-output-0"
                device.profile.pro = "true"
                device.routes = "0"
                factory.name = "api.alsa.pcm.sink"
                media.class = "Audio/Sink"
                device.description = "Audeze Maxwell XBOX Dongle"
                node.name = "alsa_output.usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01.pro-output-0"
                node.nick = "maxwell-chat"
                node.pause-on-idle = "false"
                object.path = "alsa:acp:Dongle:0:playback"
                port.group = "playback"
                priority.driver = "1600"
                priority.session = "100"
                factory.id = "19"
                clock.quantum-limit = "8192"
                client.id = "40"
                node.driver = "true"
                node.loop.name = "data-loop.0"
                library.name = "audioconvert/libspa-audioconvert"
                object.id = "82"
                object.serial = "479"
                api.acp.auto-port = "false"
                api.acp.auto-profile = "false"
                api.alsa.card = "3"
                api.alsa.split-enable = "true"
                api.alsa.use-acp = "true"
                api.dbus.ReserveDevice1 = "Audio3"
                api.dbus.ReserveDevice1.Priority = "-20"
                device.bus-id = "usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01"
                device.bus_path = "pci-0000:00:14.0-usb-0:9:1.1"
                device.enum.api = "udev"
                device.name = "alsa_card.usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01"
                device.nick = "Audeze Maxwell XBOX Dongle"
                device.plugged.usec = "5353795096"
                device.product.id = "0x4b18"
                device.product.name = "Audeze Maxwell XBOX Dongle"
                device.serial = "Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000"
                device.subsystem = "sound"
                sysfs.path = "/devices/pci0000:00/0000:00:14.0/usb3/3-9/3-9:1.1/sound/card3"
                device.vendor.id = "0x3329"
                device.vendor.name = "Audeze LLC"
                spa.object.id = "8"
                device.string = "3"
        Formats:
                pcm

Sink #480
        State: SUSPENDED
        Name: alsa_output.usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01.pro-output-1
        Description: Audeze Maxwell Game
        Driver: PipeWire
        Sample Specification: s24le 2ch 48000Hz
        Channel Map: aux0,aux1
        Owner Module: 4294967295
        Mute: no
        Volume: aux0: 19661 /  30% / -31.37 dB,   aux1: 19661 /  30% / -31.37 dB
                balance 0.00
        Base Volume: 65536 / 100% / 0.00 dB
        Monitor Source: alsa_output.usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01.pro-output-1.monitor
        Latency: 0 usec, configured 0 usec
        Flags: HARDWARE DECIBEL_VOLUME LATENCY 
        Properties:
                alsa.card = "3"
                alsa.card_name = "Audeze Maxwell XBOX Dongle"
                alsa.class = "generic"
                alsa.components = "USB3329:4b18"
                alsa.device = "1"
                alsa.driver_name = "snd_usb_audio"
                alsa.id = "USB Audio"
                alsa.long_card_name = "Audeze LLC Audeze Maxwell XBOX Dongle at usb-0000:00:14.0-9, high speed"
                alsa.mixer_name = "USB Mixer"
                alsa.name = "USB Audio #1"
                alsa.resolution_bits = "24"
                alsa.subclass = "generic-mix"
                alsa.subdevice = "0"
                alsa.subdevice_name = "subdevice #0"
                alsa.sync.id = "00000000:00000000:00000000:00000000"
                api.alsa.card.longname = "Audeze LLC Audeze Maxwell XBOX Dongle at usb-0000:00:14.0-9, high speed"
                api.alsa.card.name = "Audeze Maxwell XBOX Dongle"
                api.alsa.path = "hw:3,1"
                api.alsa.pcm.card = "3"
                api.alsa.pcm.stream = "playback"
                audio.channels = "2"
                audio.position = "AUX0,AUX1"
                card.profile.device = "1"
                clock.name = "api.alsa.3"
                device.api = "alsa"
                device.bus = "usb"
                device.class = "sound"
                device.form_factor = "headphones"
                device.icon_name = "audio-headphones-symbolic"
                device.id = "79"
                device.profile.description = "Pro 1"
                device.profile.name = "pro-output-1"
                device.profile.pro = "true"
                device.routes = "0"
                factory.name = "api.alsa.pcm.sink"
                media.class = "Audio/Sink"
                device.description = "Audeze Maxwell XBOX Dongle"
                node.name = "alsa_output.usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01.pro-output-1"
                node.nick = "maxwell-game"
                node.pause-on-idle = "false"
                object.path = "alsa:acp:Dongle:1:playback"
                port.group = "playback"
                priority.driver = "1328"
                priority.session = "900"
                factory.id = "19"
                clock.quantum-limit = "8192"
                client.id = "40"
                node.driver = "true"
                node.loop.name = "data-loop.0"
                library.name = "audioconvert/libspa-audioconvert"
                object.id = "80"
                object.serial = "480"
                api.acp.auto-port = "false"
                api.acp.auto-profile = "false"
                api.alsa.card = "3"
                api.alsa.split-enable = "true"
                api.alsa.use-acp = "true"
                api.dbus.ReserveDevice1 = "Audio3"
                api.dbus.ReserveDevice1.Priority = "-20"
                device.bus-id = "usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01"
                device.bus_path = "pci-0000:00:14.0-usb-0:9:1.1"
                device.enum.api = "udev"
                device.name = "alsa_card.usb-Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000-01"
                device.nick = "Audeze Maxwell XBOX Dongle"
                device.plugged.usec = "5353795096"
                device.product.id = "0x4b18"
                device.product.name = "Audeze Maxwell XBOX Dongle"
                device.serial = "Audeze_LLC_Audeze_Maxwell_XBOX_Dongle_0000000000000000"
                device.subsystem = "sound"
                sysfs.path = "/devices/pci0000:00/0000:00:14.0/usb3/3-9/3-9:1.1/sound/card3"
                device.vendor.id = "0x3329"
                device.vendor.name = "Audeze LLC"
                spa.object.id = "8"
                device.string = "3"
        Formats:
                pcm

Last edited by definitellynotspammer (2025-10-17 08:11:07)

Offline

Board footer

Powered by FluxBB