You are not logged in.

#1 2024-07-17 16:05:02

Broll
Member
Registered: 2017-02-01
Posts: 4

[SOLVED] Using Wireplumber to rename I/O's of my Rodecaster pro II

Hello all,


This is the script I made in order to change the two sinks of my Rodecaster from the naming of "Pro" & "Pro 1" to their original Main and Chat naming as the device has set by default on it's own internally and through other OS's.

monitor.alsa.rules = [
  {
    matches = [
      {
        device.name = "alsa_card.usb-R__DE_RODECaster_Pro_II_GV0097761-00"
      }
    ]
    actions = {
      update-props = {
        device.nick = "RODECaster Pro II"
      }
    }
  }
  {
    matches = [
      {
        node.name = "alsa_output.usb-R__DE_RODECaster_Pro_II_GV0097761-00.pro-output-1"
      }
    ]
    actions = {
      update-props = {
        node.nick = "RODECaster Pro II Main"
      }
    }
  }
    {
    matches = [
      {
        node.name = "alsa_output.usb-R__DE_RODECaster_Pro_II_GV0097761-00.pro-output-0"
      }
    ]
    actions = {
      update-props = {
        node.nick = "RODECaster Pro II Chat"
      }
    }
  }
]

The location of the said script is

/etc/wireplumber/

I have also tried the location as an alternative

~/.config/wireplumber/

My wpctl status is

PipeWire 'pipewire-0' [1.2.1, broll@bushidoarch, cookie:2764853196]
 └─ Clients:
        32. Mutter                              [1.2.1, broll@bushidoarch, pid:1369]
        33. Firefox                             [1.2.1, broll@bushidoarch, pid:2]
        34. xdg-desktop-portal                  [1.2.1, broll@bushidoarch, pid:1928]
        35. WirePlumber                         [1.2.1, broll@bushidoarch, pid:3818]
        43. WirePlumber [export]                [1.2.1, broll@bushidoarch, pid:3818]
        96. PulseAudio Volume Control           [1.2.1, broll@bushidoarch, pid:3846]
       132. gnome-shell                         [1.2.1, broll@bushidoarch, pid:1369]
       133. GNOME Shell Volume Control          [1.2.1, broll@bushidoarch, pid:1369]
       134. GNOME Settings                      [1.2.1, broll@bushidoarch, pid:3568]
       135. GNOME Volume Control Media Keys     [1.2.1, broll@bushidoarch, pid:1575]
       150. wpctl                               [1.2.1, broll@bushidoarch, pid:5311]

Audio
 ├─ Devices:
 │      44. Navi 21/23 HDMI/DP Audio Controller [alsa]
 │      45. RODECaster Pro II                   [alsa]
 │      46. HD Pro Webcam C920                  [alsa]
 │      47. Built-in Audio                      [alsa]
 │  
 ├─ Sinks:
 │      53. Navi 21/23 HDMI/DP Audio Controller Digital Stereo (HDMI) [vol: 1.00]
 │      54. RODECaster Pro II Pro               [vol: 1.00]
 │  *   55. RODECaster Pro II Pro 1             [vol: 1.00]
 │  
 ├─ Sources:
 │  *   56. RODECaster Pro II Pro               [vol: 1.00]
 │      57. RODECaster Pro II Pro 1             [vol: 1.00]
 │  
 ├─ Filters:
 │  
 └─ Streams:
       101. PulseAudio Volume Control                                   
            100. input_FR        < LG TV:monitor_FR	[active]
            123. monitor_FR     
            126. input_FL        < LG TV:monitor_FL	[active]
            130. monitor_FL     
       127. PulseAudio Volume Control                                   
            114. input_FR        < USB Audio #1:monitor_AUX1	[active]
            116. input_FL        < USB Audio #1:monitor_AUX0	[active]
            118. monitor_FR     
            119. monitor_FL     
       128. PulseAudio Volume Control                                   
            108. monitor_FR     
            109. input_FL        < RODECaster Pro II:capture_AUX0	[active]
            110. monitor_FL     
            113. input_FR        < RODECaster Pro II:capture_AUX1	[active]
       129. PulseAudio Volume Control                                   
             99. monitor_FR     
            120. monitor_FL     
            124. input_FR        < RODECaster Pro II:monitor_AUX1	[active]
            125. input_FL        < RODECaster Pro II:monitor_AUX0	[active]
       131. PulseAudio Volume Control                                   
            103. monitor_FL     
            104. input_FR        < USB Audio #1:capture_AUX1	[active]
            105. input_FL        < USB Audio #1:capture_AUX0	[active]
            107. monitor_FR     
       136. GNOME Settings                                              
            138. input_FL        < USB Audio #1:monitor_AUX0	[active]
            139. monitor_FL     
            140. input_FR        < USB Audio #1:monitor_AUX1	[active]
            141. monitor_FR     
       137. GNOME Settings                                              
            144. input_FL        < RODECaster Pro II:capture_AUX0	[active]
            145. monitor_FL     
            146. input_FR        < RODECaster Pro II:capture_AUX1	[active]
            147. monitor_FR     

Video
 ├─ Devices:
 │      61. HD Pro Webcam C920                  [v4l2]
 │      62. HD Pro Webcam C920                  [v4l2]
 │      63. HD Pro Webcam C920                  [libcamera]
 │  
 ├─ Sinks:
 │  
 ├─ Sources:
 │  *   67. HD Pro Webcam C920 (V4L2)          
 │  
 ├─ Filters:
 │  
 └─ Streams:

Settings
 └─ Default Configured Devices:
         0. Audio/Sink    alsa_output.usb-R__DE_RODECaster_Pro_II_GV0097761-00.pro-output-1
         1. Audio/Source  alsa_input.usb-R__DE_RODECaster_Pro_II_GV0097761-00.pro-input-0

I can also provide the wpctl inspect output for each sink if requested.

Now, my issue is that this has produced zero results in regards to the renaming of the sinks. Anyone can direct me please to a source that can help me, or to a solution? I can't see my mistake yet.

Have a great day!

EDIT: Updated title to reflect the issue better.
FINAL EDIT: Check the 5th comment of this thread for the solution. Issue resolved.

Last edited by Broll (2024-07-18 13:23:29)

Offline

#2 2024-07-18 06:22:10

Funny0facer
Member
From: Germany
Registered: 2022-12-03
Posts: 159

Re: [SOLVED] Using Wireplumber to rename I/O's of my Rodecaster pro II

I can confirm that I use the same syntax for renaming the display names in KDE Plasma.
Where "exactly" is your script located? I use ~/.config/wireplumber/wireplumber.conf.d/51-device-rename-alsa.conf

Where do  you want to see your change? In wpctl status or somewhere on Gnome?

PS: You did restart wireplumber, right?

systemctl restart wireplumber --user

Last edited by Funny0facer (2024-07-18 06:26:43)

Offline

#3 2024-07-18 06:48:09

Broll
Member
Registered: 2017-02-01
Posts: 4

Re: [SOLVED] Using Wireplumber to rename I/O's of my Rodecaster pro II

Funny0facer wrote:

I can confirm that I use the same syntax for renaming the display names in KDE Plasma.
Where "exactly" is your script located? I use ~/.config/wireplumber/wireplumber.conf.d/51-device-rename-alsa.conf

Where do  you want to see your change? In wpctl status or somewhere on Gnome?

PS: You did restart wireplumber, right?

systemctl restart wireplumber --user

Thank you very much for the response.


The exact location of the file is

/etc/wireplumber/51-device-rename-alsa.conf

And I have also used the another naming of the file in the past with no success.

 /etc/wireplumber/55-RODECaster_Pro_II-rename.conf 

And yes I have also used

systemctl restart wireplumber --user

to restart the service as well as

systemctl restart pipewire wireplumber --user

and of course rebooted many times.
No change.

Mind you, the device works flawlessly and it recognizes all input/output signals. I just want the rename to happen for ease of use when I select sinks for continuity through the devices onboard LCD screen and my OS/software.

I am honestly out of ideas, nor am I able to see where my error lies on my own, yet.

EDIT: And to answer your question too, I want to be able to see the device on gnome settings sound section, on pulse audio volume control and on qpwgraph so I can reroute things with no mistakes as to the naming of the sources. I wasn't clear about that before. Apologies.

Last edited by Broll (2024-07-18 07:09:06)

Offline

#4 2024-07-18 09:22:29

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 25,223

Re: [SOLVED] Using Wireplumber to rename I/O's of my Rodecaster pro II

You need to figure out which device string all of these are actually using for display, sometimes it's a mix. Are your changes not reflected in the properties you see when checking

pactl list sinks

? FWIW I'm fairly certain pavucontrol (actually most "user visible" software) will and should be using the device.description property, so try updating that.

Also agreed with above try using a "drop-in dir" as in /etc/wireplumber/wireplumber.conf.d/5-RODECaster_Pro_II-rename.conf  since those are the ones actually looked at as snippets.

Offline

#5 2024-07-18 10:01:14

Broll
Member
Registered: 2017-02-01
Posts: 4

Re: [SOLVED] Using Wireplumber to rename I/O's of my Rodecaster pro II

V1del wrote:

You need to figure out which device string all of these are actually using for display, sometimes it's a mix. Are your changes not reflected in the properties you see when checking

pactl list sinks

?

Thank you very much for the response.

Now, as to the result of the

pactl list sinks
Sink #187
	State: SUSPENDED
	Name: alsa_output.usb-R__DE_RODECaster_Pro_II_GV0097761-00.pro-output-0
	Description: RODECaster Pro II Pro
	Driver: PipeWire
	Sample Specification: s32le 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-R__DE_RODECaster_Pro_II_GV0097761-00.pro-output-0.monitor
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE DECIBEL_VOLUME LATENCY 
	Properties:
		alsa.card = "0"
		alsa.card_name = "RODECaster Pro II"
		alsa.class = "generic"
		alsa.components = "USB19f7:0030"
		alsa.device = "0"
		alsa.driver_name = "snd_usb_audio"
		alsa.id = "II"
		alsa.long_card_name = "RØDE RODECaster Pro II at usb-0000:00:14.0-3, high speed"
		alsa.mixer_name = "USB Mixer"
		alsa.name = "USB Audio"
		alsa.resolution_bits = "32"
		alsa.subclass = "generic-mix"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.sync.id = "00000000:00000000:00000000:00000000"
		api.alsa.card.longname = "RØDE RODECaster Pro II at usb-0000:00:14.0-3, high speed"
		api.alsa.card.name = "RODECaster Pro II"
		api.alsa.path = "hw:0,0"
		api.alsa.pcm.card = "0"
		api.alsa.pcm.stream = "playback"
		audio.channels = "2"
		audio.position = "AUX0,AUX1"
		card.profile.device = "1"
		clock.name = "api.alsa.0"
		device.api = "alsa"
		device.class = "sound"
		device.id = "100"
		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 = "RODECaster Pro II"
		node.name = "alsa_output.usb-R__DE_RODECaster_Pro_II_GV0097761-00.pro-output-0"
		node.nick = "RODECaster Pro II"
		node.pause-on-idle = "false"
		object.path = "alsa:acp:II:1:playback"
		port.group = "playback"
		priority.driver = "1500"
		priority.session = "1500"
		factory.id = "19"
		clock.quantum-limit = "8192"
		client.id = "131"
		node.driver = "true"
		node.loop.name = "data-loop.0"
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "110"
		object.serial = "187"
		api.acp.auto-port = "false"
		api.alsa.card = "0"
		api.alsa.use-acp = "true"
		api.dbus.ReserveDevice1 = "Audio0"
		api.dbus.ReserveDevice1.Priority = "-20"
		device.bus = "usb"
		device.bus-id = "usb-RØDE_RODECaster_Pro_II_GV0097761-00"
		device.bus_path = "pci-0000:00:14.0-usb-0:3:1.0"
		device.enum.api = "udev"
		device.icon_name = "audio-card-analog-usb"
		device.name = "alsa_card.usb-R__DE_RODECaster_Pro_II_GV0097761-00"
		device.nick = "RODECaster Pro II"
		device.plugged.usec = "14767584"
		device.product.id = "0x0030"
		device.product.name = "RODECaster Pro II"
		device.serial = "RØDE_RODECaster_Pro_II_GV0097761"
		device.subsystem = "sound"
		sysfs.path = "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/sound/card0"
		device.vendor.id = "0x19f7"
		device.vendor.name = "RODE Microphones"
		device.string = "0"
	Formats:
		pcm

Sink #188
	State: RUNNING
	Name: alsa_output.usb-R__DE_RODECaster_Pro_II_GV0097761-00.pro-output-1
	Description: RODECaster Pro II Pro 1
	Driver: PipeWire
	Sample Specification: s32le 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-R__DE_RODECaster_Pro_II_GV0097761-00.pro-output-1.monitor
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE DECIBEL_VOLUME LATENCY 
	Properties:
		alsa.card = "0"
		alsa.card_name = "RODECaster Pro II"
		alsa.class = "generic"
		alsa.components = "USB19f7:0030"
		alsa.device = "1"
		alsa.driver_name = "snd_usb_audio"
		alsa.id = "II"
		alsa.long_card_name = "RØDE RODECaster Pro II at usb-0000:00:14.0-3, high speed"
		alsa.mixer_name = "USB Mixer"
		alsa.name = "USB Audio #1"
		alsa.resolution_bits = "32"
		alsa.subclass = "generic-mix"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.sync.id = "00000000:00000000:00000000:00000000"
		api.alsa.card.longname = "RØDE RODECaster Pro II at usb-0000:00:14.0-3, high speed"
		api.alsa.card.name = "RODECaster Pro II"
		api.alsa.path = "hw:0,1"
		api.alsa.pcm.card = "0"
		api.alsa.pcm.stream = "playback"
		audio.channels = "2"
		audio.position = "AUX0,AUX1"
		card.profile.device = "2"
		clock.name = "api.alsa.0"
		device.api = "alsa"
		device.class = "sound"
		device.id = "100"
		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 = "RODECaster Pro II"
		node.name = "alsa_output.usb-R__DE_RODECaster_Pro_II_GV0097761-00.pro-output-1"
		node.nick = "USB Audio #1"
		node.pause-on-idle = "false"
		object.path = "alsa:acp:II:2:playback"
		port.group = "playback"
		priority.driver = "1228"
		priority.session = "1228"
		factory.id = "19"
		clock.quantum-limit = "8192"
		client.id = "131"
		node.driver = "true"
		node.loop.name = "data-loop.0"
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "97"
		object.serial = "188"
		node.max-latency = "16384/48000"
		api.alsa.period-size = "512"
		api.alsa.period-num = "64"
		api.alsa.headroom = "512"
		api.acp.auto-port = "false"
		api.alsa.card = "0"
		api.alsa.use-acp = "true"
		api.dbus.ReserveDevice1 = "Audio0"
		api.dbus.ReserveDevice1.Priority = "-20"
		device.bus = "usb"
		device.bus-id = "usb-RØDE_RODECaster_Pro_II_GV0097761-00"
		device.bus_path = "pci-0000:00:14.0-usb-0:3:1.0"
		device.enum.api = "udev"
		device.icon_name = "audio-card-analog-usb"
		device.name = "alsa_card.usb-R__DE_RODECaster_Pro_II_GV0097761-00"
		device.nick = "RODECaster Pro II"
		device.plugged.usec = "14767584"
		device.product.id = "0x0030"
		device.product.name = "RODECaster Pro II"
		device.serial = "RØDE_RODECaster_Pro_II_GV0097761"
		device.subsystem = "sound"
		sysfs.path = "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/sound/card0"
		device.vendor.id = "0x19f7"
		device.vendor.name = "RODE Microphones"
		device.string = "0"
	Formats:
		pcm

Sink #367
	State: SUSPENDED
	Name: alsa_output.pci-0000_07_00.1.hdmi-stereo
	Description: Navi 21/23 HDMI/DP Audio Controller Digital Stereo (HDMI)
	Driver: PipeWire
	Sample Specification: s32le 2ch 48000Hz
	Channel Map: front-left,front-right
	Owner Module: 4294967295
	Mute: no
	Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
	        balance 0.00
	Base Volume: 65536 / 100% / 0.00 dB
	Monitor Source: alsa_output.pci-0000_07_00.1.hdmi-stereo.monitor
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS 
	Properties:
		alsa.card = "2"
		alsa.card_name = "HDA ATI HDMI"
		alsa.class = "generic"
		alsa.components = "HDA:1002aa01,00aa0100,00100800"
		alsa.device = "3"
		alsa.driver_name = "snd_hda_intel"
		alsa.id = "HDMI"
		alsa.long_card_name = "HDA ATI HDMI at 0xfb620000 irq 74"
		alsa.mixer_name = "ATI R6xx HDMI"
		alsa.name = "LG TV"
		alsa.resolution_bits = "16"
		alsa.subclass = "generic-mix"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.sync.id = "00000000:00000000:00000000:00000000"
		api.alsa.card.longname = "HDA ATI HDMI at 0xfb620000 irq 74"
		api.alsa.card.name = "HDA ATI HDMI"
		api.alsa.path = "hdmi:2"
		api.alsa.pcm.card = "2"
		api.alsa.pcm.stream = "playback"
		audio.channels = "2"
		audio.position = "FL,FR"
		card.profile.device = "6"
		device.api = "alsa"
		device.class = "sound"
		device.id = "129"
		device.profile.description = "Digital Stereo (HDMI)"
		device.profile.name = "hdmi-stereo"
		device.routes = "1"
		factory.name = "api.alsa.pcm.sink"
		media.class = "Audio/Sink"
		device.description = "Navi 21/23 HDMI/DP Audio Controller"
		node.name = "alsa_output.pci-0000_07_00.1.hdmi-stereo"
		node.nick = "LG TV"
		node.pause-on-idle = "false"
		object.path = "alsa:acp:HDMI:6:playback"
		port.group = "playback"
		priority.driver = "696"
		priority.session = "696"
		factory.id = "19"
		clock.quantum-limit = "8192"
		client.id = "131"
		node.driver = "true"
		node.loop.name = "data-loop.0"
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "109"
		object.serial = "367"
		api.acp.auto-port = "false"
		api.alsa.card = "2"
		api.alsa.use-acp = "true"
		api.dbus.ReserveDevice1 = "Audio2"
		api.dbus.ReserveDevice1.Priority = "-20"
		device.bus = "pci"
		device.bus_path = "pci-0000:07:00.1"
		device.enum.api = "udev"
		device.icon_name = "audio-card-analog-pci"
		device.name = "alsa_card.pci-0000_07_00.1"
		device.nick = "HDA ATI HDMI"
		device.plugged.usec = "14822546"
		device.product.id = "0xab28"
		device.product.name = "Navi 21/23 HDMI/DP Audio Controller"
		device.subsystem = "sound"
		sysfs.path = "/devices/pci0000:00/0000:00:03.0/0000:03:00.0/0000:04:10.0/0000:05:00.0/0000:06:00.0/0000:07:00.1/sound/card2"
		device.vendor.id = "0x1002"
		device.vendor.name = "Advanced Micro Devices, Inc. [AMD/ATI]"
		device.string = "2"
	Ports:
		hdmi-output-0: HDMI / DisplayPort (type: HDMI, priority: 5900, availability group: Legacy 1, available)
	Active Port: hdmi-output-0
	Formats:
		pcm

The naming isn't going through as intended as far as I can see.

V1del wrote:

FWIW I'm fairly certain pavucontrol (actually most "user visible" software) will and should be using the device.description property, so try updating that.

Already pacman -Syu and -Syyu many times, and removed and re-added the pavucontrol a few times. Great minds think alike.

V1del wrote:

Also agreed with above try using a "drop-in dir" as in /etc/wireplumber/wireplumber.conf.d/5-RODECaster_Pro_II-rename.conf  since those are the ones actually looked at as snippets.

Well what do you know?

That last addition to the path of "/wireplumber.conf.d/file-to-be-renamed" did the trick....so that was my mistake, not adding the correct path, which for the sake of clarity is

/etc/wireplumber/wireplumber.conf.d/55-RODECaster_Pro_II-rename.conf

I also updated my script by adding the device and sinks description values in there.

monitor.alsa.rules = [
  {
    matches = [
      {
        device.name = "alsa_card.usb-R__DE_RODECaster_Pro_II_GV0097761-00"
      }
    ]
    actions = {
      update-props = {
        device.nick               = "RODECaster Pro II"
        device.description        = "RODECaster Pro II"
      }
    }
  }
  {
    matches = [
      {
        node.name = "alsa_output.usb-R__DE_RODECaster_Pro_II_GV0097761-00.pro-output-1"
      }
    ]
    actions = {
      update-props = {
        node.nick              = "RODECaster Pro II Main"
        node.description       = "RODECaster Pro II Main"
      }
    }
  }
    {
    matches = [
      {
        node.name = "alsa_output.usb-R__DE_RODECaster_Pro_II_GV0097761-00.pro-output-0"
      }
    ]
    actions = {
      update-props = {
        node.nick              = "RODECaster Pro II Chat"
        node.description       = "RODECaster Pro II Chat"
      }
    }
  }
]

EDIT: Added a second script for renaming the two inputs in case anyone wants to use.

Location of said script:

/etc/wireplumber/wireplumber.conf.d/55-RODECaster_Pro_II_inputs-rename.conf

And the script.

monitor.alsa.rules = [
   {
    matches = [
      {
        node.name = "alsa_input.usb-R__DE_RODECaster_Pro_II_GV0097761-00.pro-input-1"
      }
    ]
    actions = {
      update-props = {
        node.nick              = "RODECaster Pro II Main Mic"
        node.description       = "RODECaster Pro II Main Mic"
      }
    }
  }
    {
    matches = [
      {
        node.name = "alsa_input.usb-R__DE_RODECaster_Pro_II_GV0097761-00.pro-input-0"
      }
    ]
    actions = {
      update-props = {
        node.nick              = "RODECaster Pro II Chat Mic"
        node.description       = "RODECaster Pro II Chat Mic"
      }
    }
  }
]

I honestly cannot thank you enough! What an awesome and simple advice! Thank you!

I am marking this as solved!! Thank you all

Last edited by Broll (2024-07-18 10:47:51)

Offline

Board footer

Powered by FluxBB