MTK12 SoundCraft Mixer and pipewire/wireplumber issues

a1g0rithm

New Member
Joined
Jul 21, 2024
Messages
5
Reaction score
1
Credits
48
Hi, I'm hoping someone can help with this issue. Maybe one of you can point me in the right direction.

I am having an issue with pipewire immediately putting my mixer into a suspended state; see below:
Audio/Sync
Code:
pw-cli info 32
    id: 32
    permissions: rwxm-
    type: PipeWire:Interface:Node/3
*    input ports: 1/1
*    output ports: 0/0
*    state: "suspended"
*    properties:
*        factory.name = "api.alsa.pcm.sink"
*        node.name = "soundcraft-sink"
*        node.description = "Soundcraft Signature 12 MTK"
*        device = "hw:4"
*        node.autoconnect = "true"
*        audio.channels = "12"
*        audio.rate = "48000"
*        audio.format = "S16LE"
*        node.latency = "512/48000"
*        factory.id = "10"
*        clock.quantum-limit = "8192"
*        device.api = "alsa"
*        media.class = "Audio/Sink"
*        node.driver = "true"
*        object.id = "32"
*        object.serial = "32"
*    params: (4)
*      1 (Spa:Enum:ParamId:PropInfo) r-
*      2 (Spa:Enum:ParamId:Props) rw
*      7 (Spa:Enum:ParamId:IO) r-
*      16 (Spa:Enum:ParamId:ProcessLatency) rw
Audio/Source
Code:
    id: 34
    permissions: rwxm-
    type: PipeWire:Interface:Node/3
*    input ports: 0/0
*    output ports: 1/1
*    state: "suspended"
*    properties:
*        factory.name = "api.alsa.pcm.source"
*        node.name = "soundcraft-source"
*        node.description = "Soundcraft Signature 12 MTK"
*        device = "hw:4"
*        node.autoconnect = "true"
*        audio.channels = "14"
*        audio.rate = "48000"
*        audio.format = "S16LE"
*        node.latency = "512/48000"
*        factory.id = "10"
*        clock.quantum-limit = "8192"
*        device.api = "alsa"
*        media.class = "Audio/Source"
*        node.driver = "true"
*        object.id = "34"
*        object.serial = "34"
*    params: (4)
*      1 (Spa:Enum:ParamId:PropInfo) r-
*      2 (Spa:Enum:ParamId:Props) rw
*      7 (Spa:Enum:ParamId:IO) r-
*      16 (Spa:Enum:ParamId:ProcessLatency) rw

I know Alsa is good as I can play and record utilizing aplay.
Code:
aplay -D plughw:4,0 ~/Downloads/test.wav
The sound from this command comes out fine on the monitor speakers straight through the mixer.
Here is my [I]/etc/asound.conf[/I] file if anyone is interested.
Code:
pcm.!default {
    type asym
    playback.pcm {
        type plug
        slave.pcm "hw:4,0"
    }
    capture.pcm {
        type plug
        slave.pcm "hw:4,0"
    }
}

ctl.!default {
    type hw
    card 4
}

pcm.dmixed {
    type asym
    playback.pcm {
        type plug
        slave.pcm "hw:4,0"
    }
    capture.pcm {
        type plug
        slave.pcm "hw:4,0"
    }
}

pcm.dsnooped {
    type dsnoop
    ipc_key 312939
    slave {
        pcm "hw:4,0"
        channels 14
        period_time 0
        period_size 1024
        buffer_size 8192
        rate 48000
    }
    bindings {
        0 0
        1 1
        2 2
        3 3
        4 4
        5 5
        6 6
        7 7
        8 8
        9 9
        10 10
        11 11
        12 12
        13 13
    }
}

Problem: I cannot set the mixer as output or input in gnome. When pipewire identifies the nodes it immediately moves them to a suspended state:

Code:
[D][07157.778700] pw.global    | [        global.c:   90 pw_global_new()] 0x5f4338663940: new PipeWire:Interface:Node 32
[D][07157.778712] pw.node      | [     impl-node.c:  823 pw_impl_node_initialized()] 0x5f43386620d0 initialized
[D][07157.778716] pw.node      | [     impl-node.c:  402 node_update_state()] 0x5f43386620d0: (soundcraft-sink) creating -> suspended ((null))
[I][07157.778719] pw.node      | [     impl-node.c:  412 node_update_state()] (soundcraft-sink-32) creating -> suspended
[D][07157.778722] pw.global    | [        global.c:  166 pw_global_register()] 0x5f4338663940: registered 32

[D][07157.778807] pw.context   | [       context.c: 1425 pw_context_recalc_graph()] 0x5f43385d5110: keep rate:1/48000 restore:0 lock:0 resume:0 running:0 force:0 state:suspended
[D][07157.778812] pw.context   | [       context.c: 1491 pw_context_recalc_graph()] 0x5f43385d5110: keep quantum:1024 restore:0 lock:0 resume:0 running:0 force:0 state:suspended
[D][07157.778815] pw.context   | [       context.c: 1550 pw_context_recalc_graph()] 0x5f43385d5110: driver 0x5f433863d180 running:0 runnable:0 quantum:1024 rate:48000 (1024/48000)'Dummy-Driver'
[D][07157.778818] pw.node      | [     impl-node.c: 2390 pw_impl_node_set_state()] 0x5f433863d180: set state (suspended) suspended -> suspended, active 1 pause_on_idle:1
[D][07157.778822] pw.node      | [     impl-node.c:  437 suspend_node()] 0x5f433863d180: suspend node state:suspended

[D][07157.778807] pw.context   | [       context.c: 1425 pw_context_recalc_graph()] 0x5f43385d5110: keep rate:1/48000 restore:0 lock:0 resume:0 running:0 force:0 state:suspended
[D][07157.778812] pw.context   | [       context.c: 1491 pw_context_recalc_graph()] 0x5f43385d5110: keep quantum:1024 restore:0 lock:0 resume:0 running:0 force:0 state:suspended
[D][07157.778815] pw.context   | [       context.c: 1550 pw_context_recalc_graph()] 0x5f43385d5110: driver 0x5f433863d180 running:0 runnable:0 quantum:1024 rate:48000 (1024/48000)'Dummy-Driver'
[D][07157.778818] pw.node      | [     impl-node.c: 2390 pw_impl_node_set_state()] 0x5f433863d180: set state (suspended) suspended -> suspended, active 1 pause_on_idle:1
[D][07157.778822] pw.node      | [     impl-node.c:  437 suspend_node()] 0x5f433863d180: suspend node state:suspended

[D][07157.779404] pw.context   | [       context.c: 1425 pw_context_recalc_graph()] 0x5f43385d5110: keep rate:1/48000 restore:0 lock:0 resume:0 running:0 force:0 state:suspended
[D][07157.779408] pw.context   | [       context.c: 1491 pw_context_recalc_graph()] 0x5f43385d5110: keep quantum:1024 restore:0 lock:0 resume:0 running:0 force:0 state:suspended
[D][07157.779411] pw.context   | [       context.c: 1550 pw_context_recalc_graph()] 0x5f43385d5110: driver 0x5f433863d180 running:0 runnable:0 quantum:1024 rate:48000 (1024/48000)'Dummy-Driver'
[D][07157.779415] pw.node      | [     impl-node.c: 2390 pw_impl_node_set_state()] 0x5f433863d180: set state (suspended) suspended -> suspended, active 1 pause_on_idle:1
[D][07157.779418] pw.node      | [     impl-node.c:  437 suspend_node()] 0x5f433863d180: suspend node state:suspended

I do have some pipewire configuration here it is:
Code:
~/.config/pipewire$ tree
.
└── pipewire.conf.d
    └── 90-soundcraft.conf

~/.config/pipewire$ cat pipewire.conf.d/90-soundcraft.conf
# ~/.config/pipewire/pipewire.conf.d/90-soundcraft.conf
context.objects = [
    {   factory = spa-node-factory
        args = {
            factory.name = "api.alsa.pcm.sink"
            node.name = "soundcraft-sink"
            node.description = "Soundcraft Signature 12 MTK"
            device = "hw:4"
            node.autoconnect = true
            audio.channels = 12
            audio.rate = 48000
            audio.format = "S16LE"
            node.latency = 512/48000
        }
    },
    {   factory = spa-node-factory
        args = {
            factory.name = "api.alsa.pcm.source"
            node.name = "soundcraft-source"
            node.description = "Soundcraft Signature 12 MTK"
            device = "hw:4"
            node.autoconnect = true
            audio.channels = 14
            audio.rate = 48000
            audio.format = "S16LE"
            node.latency = 512/48000
        }
    }
]

Wireplumber does not seem to be the issue yet but here is some of the configuration just in case:
Code:
~/.config/wireplumber$ tree
.
├── main.lua.d
├── scripts
└── wireplumber.conf.d
    ├── 51-disable-unwanted-nodes.conf
    └── 51-enable-soundcraft.conf


3 directories, 3 files
~/.config/wireplumber$ cat main.lua.d/51-enable-soundcraft.lua
-- main.lua.d/51-enable-soundcraft.lua
rule = {
  matches = {
    {
      { "device.name", "matches", "alsa_card.usb-Soundcraft_Soundcraft_Signature_12_MTK-.*" },
    },
  },
  apply_properties = {
    ["device.disabled"] = false,
  },
}

table.insert(alsa_monitor.rules, rule)

~/.config/wireplumber$ cat wireplumber.conf.d/51-disable-unwanted-nodes.conf
monitor.rules = [
  {
    matches = [
      {
        { "node.name", "equals", "Dummy-Driver" },
      },
      {
        { "node.name", "equals", "Freewheel-Driver" },
      },
      {
        { "node.description", "equals", "TU102 High Definition Audio Controller Digital Stereo (HDMI)" },
      },
      {
        { "node.description", "matches", ".*HDMI.*" },
      },
      {
        { "node.name", "equals", "Midi-Bridge" },
      }
    ],
    actions = {
      { "node.disabled", true },
    },
  }
]
Operating System Info Below:
Starting with the OS information:
NAME="Pop!_OS"
VERSION="22.04 LTS"
ID=pop
ID_LIKE="ubuntu debian"
PRETTY_NAME="Pop!_OS 22.04 LTS"


I am out of ideas on how to proceed; I hope someone here has experienced something similar and can point me in the right direction.


Best,
Alex
 


G'day a1g0rithm, Welcome to Linux.org

Alex, my knowledge where these type of issues are concerned is close to zero.....However, is there any chance that this is Kernel related?....either earlier kernel or later may be worth a try.
 
G'day a1g0rithm, Welcome to Linux.org

Alex, my knowledge where these type of issues are concerned is close to zero.....However, is there any chance that this is Kernel related?....either earlier kernel or later may be worth a try.
Hi Condobloke,
It's certainly not Kernel related. That is why I mentioned the Alsa situation above, I am able to get sound if I play directly to the hardware: I'll output `aplay`and arecord information so it's here:

Code:
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 2: NVidia [HDA NVidia], device 3: HDMI 0 [38GL950G]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: Audio [USB Audio], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: Audio [USB Audio], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: Audio [USB Audio], device 2: USB Audio [USB Audio #2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: Audio [USB Audio], device 3: USB Audio [USB Audio #3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 4: MTK [Soundcraft Signature 12 MTK], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0


arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: BRIO [Logitech BRIO], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: Audio [USB Audio], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: Audio [USB Audio], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: Audio [USB Audio], device 2: USB Audio [USB Audio #2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 4: MTK [Soundcraft Signature 12 MTK], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Have a look at card4.

Best,
Alex
 
Finally got my setup working, now does anyone know how to map default routes in POP_OS!22.04's version of wireplumber:
wireplumber
Compiled with libwireplumber 0.4.17
Linked with libwireplumber 0.4.17

wpctl settings - in the documentation for wireplumber is apparently not an option:

I have to manually route output to my mixer for every audio stream I start, it's a bit annoying, as the mixer by default routes any audio stream to AUX01 and AUX1

1721820003174.png


This works but as anyone can understand it's a bit cumbersome, I have tried messing with the session manager in LUA scripts but can't get it to work.

Best,
Alex
 
Before anybody tags me in this:
I’m still using pulseaudio and ALSA for my home studio setup on my Debian 11 laptop. I haven’t even looked at pipewire yet.

But I’m a bit of a Luddite and extremely slow to adopt new-fangled things like pipewire (amongst many other things!).
 
Before anybody tags me in this:
I’m still using pulseaudio and ALSA for my home studio setup on my Debian 11 laptop. I haven’t even looked at pipewire yet.

But I’m a bit of a Luddite and extremely slow to adopt new-fangled things like pipewire (amongst many other things!).
Maybe I can gain some insight there, how do you keep different AUX channels as default?
 
Unfortunately, I’m a drummer, not a professional sound man. Even after several years, I’m still finding my feet with audio production. I’m not sure I understand what you’re asking.

My home studio setup is pretty basic. I don’t have any AUX channels set up. I don’t even have a hardware mixer. I only have a simple audio interface (Behringer Uphoria UMC1820). For mixing, I use the mixer in Ardour.

I mostly use pulseaudio and/or ALSA in Ardour. Sometimes I use JACK, if I’m using MIDI/virtual instruments. But I don’t have any persistent audio routing set up. I set up all routing on a per session basis.

My whole setup is deliberately minimal and portable. I don’t set up persistent audio routing, because my laptop isn’t dedicated to audio production. I use it for tons of other stuff and don’t always have my audio interface plugged in.

I’ve had problems in the past, where I’d set up persistent routing, but then whenever I booted my laptop without the audio interface already plugged in and switched on, all audio would be routed through a "dummy" virtual device. So I’d end up with no audio whatsoever.
And once it was going through the dummy device, on subsequent boots, even if the device was plugged in and on, the audio was still routed to the dummy device. Took me a long while to work out how to reset everything and get the audio working again through the built in sound card by default.

So I don’t bother with persistent routes any more. If my laptop was part of a permanent, dedicated home-studio setup - I might look into setting up some kind of persistent routing. But as things stand, I’m better off manually setting things up for each session.
 
Thanks for the reply, for me it's actually not really about a studio setup I use the mixer as my fulltime soundcard... I have no other speakers. If I figure it out I'll post here but thanks for replaying.

Best,
Alex
 

Members online

No members online now.

Latest posts

Top