You are not logged in.

#1 2022-08-02 16:15:52

starise
Member
Registered: 2020-12-18
Posts: 2

wireplumber: disable iec958 digital profile

I have a Steinberg UR22mkII USB Audio that only has a physical "analog" output, but also a "digital S/PDIF" software profile. It looks like it's happening for this reason as explained in pipewire FAQs. I want to hide that specific port/profile and keep only the analog one that I'm using. I tried with this config file:

$ cat ~/.config/wireplumber/main.lua.d/51-steinberg.lua
disable_iec958 = {
  matches = {
    {
      { "node.name", "equals", "alsa_output.usb-Yamaha_Corporation_Steinberg_UR22mkII-00.iec958-stereo" },
    },
  },
  apply_properties = {
    ["node.disabled"] = "true",
  },
}

table.insert(alsa_monitor.rules, disable_iec958)
$ wpctl status
Audio
 ├─ Devices:
 │      90. UR22mkII                            [alsa]
 ├─ Sinks:
 │  *   82. UR22mkII Stereo digitale (IEC958)   [vol: 0.50]

$ wpctl inspect 82
id 82, type PipeWire:Interface:Node
    alsa.card = "4"
    alsa.card_name = "Steinberg UR22mkII"
    alsa.class = "generic"
    alsa.device = "0"
    alsa.driver_name = "snd_usb_audio"
    alsa.id = "USB Audio"
    alsa.long_card_name = "Yamaha Corporation Steinberg UR22mkII at usb-0000:04:00.0-6.4.1, high speed"
    alsa.name = "USB Audio"
    alsa.resolution_bits = "32"
    alsa.subclass = "generic-mix"
    alsa.subdevice = "0"
    alsa.subdevice_name = "subdevice #0"
    api.alsa.card.longname = "Yamaha Corporation Steinberg UR22mkII at usb-0000:04:00.0-6.4.1, high speed"
    api.alsa.card.name = "Steinberg UR22mkII"
    api.alsa.path = "iec958:4"
    api.alsa.pcm.card = "4"
    api.alsa.pcm.stream = "playback"
    audio.adapt.follower = ""
    audio.channels = "2"
    audio.position = "FL,FR"
    card.profile.device = "5"
  * client.id = "87"
    clock.quantum-limit = "8192"
    device.api = "alsa"
    device.class = "sound"
  * device.id = "90"
    device.profile.description = "Stereo digitale (IEC958)"
    device.profile.name = "iec958-stereo"
    device.routes = "1"
  * factory.id = "18"
    factory.mode = "merge"
    factory.name = "api.alsa.pcm.sink"
    library.name = "audioconvert/libspa-audioconvert"
  * media.class = "Audio/Sink"
  * node.description = "UR22mkII Stereo digitale (IEC958)"
    node.driver = "true"
    node.max-latency = "16384/48000"
  * node.name = "alsa_output.usb-Yamaha_Corporation_Steinberg_UR22mkII-00.iec958-stereo"
  * node.nick = "Steinberg UR22mkII"
    node.pause-on-idle = "false"
  * object.path = "alsa:pcm:4:iec958:4:playback"
  * object.serial = "334"
  * priority.driver = "1008"
  * priority.session = "1008"

The problem is that it does not go away. On Gnome > Audio settings I can see the same device can be selected. Running wpctl again, i can find another node called alsa_output.usb-Yamaha_Corporation_Steinberg_UR22mkII-00.iec958-stereo.2. If I disable it, then another one is created with .3 at the end.

Last edited by starise (2022-08-02 16:45:27)

Offline

#2 2022-08-03 00:43:52

mrlamud
Member
Registered: 2014-09-27
Posts: 104

Re: wireplumber: disable iec958 digital profile

Suggest edit  the last line in your "~/.config/wireplumber/main.lua.d/51-steinberg.lua".
.......
table.insert(alsa_monitor.rules, disable_iec958 rule)

Offline

#3 2022-08-05 20:13:23

starise
Member
Registered: 2020-12-18
Posts: 2

Re: wireplumber: disable iec958 digital profile

mrlamud wrote:

Suggest edit  the last line in your "~/.config/wireplumber/main.lua.d/51-steinberg.lua".
.......
table.insert(alsa_monitor.rules, disable_iec958 rule)

Thanks, but not gonna work. My array is called `disable_iec958`, so with `rule` I'm passing nothing.

Offline

#4 2022-11-12 18:47:04

szszoke
Member
Registered: 2022-11-12
Posts: 7

Re: wireplumber: disable iec958 digital profile

Did you manage to find a solution to this? I am having the same problem. I am trying to disable all IEC598 profiles (and some other things) without success. Just like in your case, the profiles are still visible and can be selected in Gnome Settings. They don't seem to work, but they are visible and polluting.

Here is my lua file

disable_hdmi = {
  matches = {
    {
      { "device.name", "equals", "alsa_card.pci-0000_0d_00.1" },
    },
  },
  apply_properties = {
    ["device.disabled"] = true,
  },
}

disable_onboard = {
  matches = {
    {
      { "device.name", "equals", "alsa_card.pci-0000_0f_00.4" },
    },
  },
  apply_properties = {
    ["device.disabled"] = true,
  }
}

disable_iec958_stereo = {
  matches = {
    {
      { "device.profile.name", "equals", "iec958-stereo" },
    },
  },
  apply_properties = {
    ["node.disabled"] = true,
  }
}

table.insert(alsa_monitor.rules, disable_hdmi)
table.insert(alsa_monitor.rules, disable_onboard)
table.insert(alsa_monitor.rules, disable_iec958_stereo)

Offline

#5 2023-12-10 05:21:45

Fil0sOFF
Member
Registered: 2023-12-10
Posts: 1

Re: wireplumber: disable iec958 digital profile

Pipewire already comes with "analog-only" profile-set. It does exactly that, disables IEC958 profiles. You just have to select it.

$ cat ~/.config/wireplumber/main.lua.d/51-alsa-custom.lua

rule = {
  matches = {
    {
      { "device.nick", "matches", "Maono Elf pro" },
    },
  },
  apply_properties = {
    ["device.profile-set"] = "analog-only.conf",
  },
}
table.insert(alsa_monitor.rules,rule)

Offline

Board footer

Powered by FluxBB