<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<oembed><type>rich</type><version>1.0</version><provider_name>phorkie</provider_name><provider_url>https://p.cweiske.de/</provider_url><title>pipewire: change speaker/output description at runtime</title><author_name>Christian Weiske</author_name><cache_age>86400</cache_age><width>900</width><height>900</height><html>&lt;!-- embedding all files of https://p.cweiske.de/962 --&gt;
&lt;link rel="stylesheet" href="https://p.cweiske.de/css/embed.css"/&gt;
&lt;div class="phork" id="962"&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  &lt;div class="code"&gt;&lt;pre class="txt"&gt;&amp;lt;cweiske&amp;gt; I&amp;#039;d like to temporarily change the name of a pipewire output. I already found the device id 73 with &amp;quot;pw-cli list-objects&amp;quot; and see that the label that Gnome Shell shows is the &amp;quot;node.description&amp;quot; property:&#13;
&amp;lt;cweiske&amp;gt; $ pw-cli info 73 |grep node.desc&#13;
&amp;lt;cweiske&amp;gt; *  node.description = &amp;quot;Sennheiser PC 8.2 USB Analog Stereo&amp;quot;&#13;
&amp;lt;cweiske&amp;gt; How can I change that?&#13;
&amp;lt;cweiske&amp;gt; I tried&#13;
&amp;lt;cweiske&amp;gt; $ pw-cli set-param 73 Props &amp;#039;{ props = [ &amp;#039;node.description&amp;#039; &amp;quot;Headset&amp;quot; ] }&#13;
&amp;lt;cweiske&amp;gt; but that does not work.&#13;
&amp;lt;cweiske&amp;gt; I also tried variations like &amp;#039;{ props = [ &amp;quot;node.description&amp;quot;: &amp;quot;Headset Sennheiser&amp;quot; ] }&amp;#039;, but no avail&#13;
&amp;lt;wtay&amp;gt; cweiske, it&amp;#039;s not possible to change a property like that&#13;
&amp;lt;wtay&amp;gt; cweiske, you can make a wireplumber rule to change the description though&#13;
&amp;lt;cweiske&amp;gt; I saw that in the docs: https://docs.pipewire.org/page_man_pipewire_conf_5.html&#13;
&amp;lt;cweiske&amp;gt; but I thought I could try that at run-time&#13;
&amp;lt;wtay&amp;gt; https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/alsa.html#rules&#13;
&amp;lt;wtay&amp;gt; not possible at runtime&#13;
&amp;lt;cweiske&amp;gt; thanks for the info.&lt;/pre&gt;&lt;/div&gt;

 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/962/rev-raw/1877c5a9ecbf13469002144e024f06703faf62d7/1-chatlog.txt" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/962#1-chatlog.txt"&gt;1-chatlog.txt&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  &lt;style type="text/css"&gt;/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2014 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.bash .de1, .bash .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}
.bash  {font-family:monospace;}
.bash .imp {font-weight: bold; color: red;}
.bash li, .bash .li1 {color: #DDD;}
.bash .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.bash .kw1 {color: #000000; font-weight: bold;}
.bash .kw2 {color: #c20cb9; font-weight: bold;}
.bash .kw3 {color: #7a0874; font-weight: bold;}
.bash .co0 {color: #666666; font-style: italic;}
.bash .co1 {color: #800000;}
.bash .co2 {color: #cc0000; font-style: italic;}
.bash .co3 {color: #000000; font-weight: bold;}
.bash .co4 {color: #666666;}
.bash .es1 {color: #000099; font-weight: bold;}
.bash .es2 {color: #007800;}
.bash .es3 {color: #007800;}
.bash .es4 {color: #007800;}
.bash .es5 {color: #780078;}
.bash .es_h {color: #000099; font-weight: bold;}
.bash .br0 {color: #7a0874; font-weight: bold;}
.bash .sy0 {color: #000000; font-weight: bold;}
.bash .st0 {color: #ff0000;}
.bash .st_h {color: #ff0000;}
.bash .nu0 {color: #000000;}
.bash .re0 {color: #007800;}
.bash .re1 {color: #007800;}
.bash .re2 {color: #007800;}
.bash .re4 {color: #007800;}
.bash .re5 {color: #660033;}
.bash span.xtra { display:block; }
&lt;/style&gt;&lt;div class="code"&gt;&lt;table class="bash"&gt;&lt;tbody&gt;&lt;tr class="li1"&gt;&lt;td class="ln"&gt;&lt;pre class="de1"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
&lt;/pre&gt;&lt;/td&gt;&lt;td class="de1"&gt;&lt;pre class="de1"&gt;$ pw-cli list-objects
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;...&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="kw2"&gt;id&lt;/span&gt; &lt;span class="nu0"&gt;50&lt;/span&gt;, &lt;span class="kw3"&gt;type&lt;/span&gt; PipeWire:Interface:Node&lt;span class="sy0"&gt;/&lt;/span&gt;&lt;span class="nu0"&gt;3&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; object.serial = &lt;span class="st0"&gt;&amp;quot;51&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; object.path = &lt;span class="st0"&gt;&amp;quot;alsa:pcm:3:front:3:playback&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; factory.id = &lt;span class="st0"&gt;&amp;quot;18&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; client.id = &lt;span class="st0"&gt;&amp;quot;33&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; device.id = &lt;span class="st0"&gt;&amp;quot;47&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; priority.session = &lt;span class="st0"&gt;&amp;quot;1009&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; priority.driver = &lt;span class="st0"&gt;&amp;quot;1009&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; node.description = &lt;span class="st0"&gt;&amp;quot;USB Audio Analog Stereo&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; node.name = &lt;span class="st0"&gt;&amp;quot;alsa_output.usb-Generic_USB_Audio-00.analog-stereo&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; node.nick = &lt;span class="st0"&gt;&amp;quot;USB Device 0xdb0 0x422d&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; media.class = &lt;span class="st0"&gt;&amp;quot;Audio/Sink&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;...&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="kw2"&gt;id&lt;/span&gt; &lt;span class="nu0"&gt;73&lt;/span&gt;, &lt;span class="kw3"&gt;type&lt;/span&gt; PipeWire:Interface:Node&lt;span class="sy0"&gt;/&lt;/span&gt;&lt;span class="nu0"&gt;3&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; object.serial = &lt;span class="st0"&gt;&amp;quot;1170&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; object.path = &lt;span class="st0"&gt;&amp;quot;alsa:pcm:4:front:4:playback&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; factory.id = &lt;span class="st0"&gt;&amp;quot;18&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; client.id = &lt;span class="st0"&gt;&amp;quot;33&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; device.id = &lt;span class="st0"&gt;&amp;quot;71&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; priority.session = &lt;span class="st0"&gt;&amp;quot;1009&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; priority.driver = &lt;span class="st0"&gt;&amp;quot;1009&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; node.description = &lt;span class="st0"&gt;&amp;quot;Sennheiser PC 8.2 USB Analog Stereo&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; node.name = &lt;span class="st0"&gt;&amp;quot;alsa_output.usb-Sennheiser_Sennheiser_PC_8.2_USB_A002900204807706-00.analog-stereo&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; node.nick = &lt;span class="st0"&gt;&amp;quot;Sennheiser PC 8.2 USB&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; media.class = &lt;span class="st0"&gt;&amp;quot;Audio/Sink&amp;quot;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;...&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;
&amp;#160;
$ pw-cli info &lt;span class="nu0"&gt;50&lt;/span&gt; &lt;span class="sy0"&gt;|&lt;/span&gt;&lt;span class="kw2"&gt;grep&lt;/span&gt; node.desc
&lt;span class="sy0"&gt;*&lt;/span&gt; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; node.description = &lt;span class="st0"&gt;&amp;quot;USB Audio Analog Stereo&amp;quot;&lt;/span&gt;
&amp;#160;
$ pw-cli info &lt;span class="nu0"&gt;73&lt;/span&gt; &lt;span class="sy0"&gt;|&lt;/span&gt;&lt;span class="kw2"&gt;grep&lt;/span&gt; node.desc
&lt;span class="sy0"&gt;*&lt;/span&gt; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; node.description = &lt;span class="st0"&gt;&amp;quot;Sennheiser PC 8.2 USB Analog Stereo&amp;quot;&lt;/span&gt;
&amp;#160;
$ pw-dump &lt;span class="nu0"&gt;73&lt;/span&gt;&lt;span class="sy0"&gt;|&lt;/span&gt;jq &lt;span class="st_h"&gt;'.[0].info.props[&amp;quot;node.description&amp;quot;]'&lt;/span&gt;
&lt;span class="st0"&gt;&amp;quot;Sennheiser PC 8.2 USB Analog Stereo&amp;quot;&lt;/span&gt;
&amp;#160;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/962/rev-raw/1877c5a9ecbf13469002144e024f06703faf62d7/2-infos.sh" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/962#2-infos.sh"&gt;2-infos.sh&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  
&lt;div class="document"&gt;


&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://docs.pipewire.org/page_man_pipewire_conf_5.html#pipewire_conf__device_rules"&gt;https://docs.pipewire.org/page_man_pipewire_conf_5.html#pipewire_conf__device_rules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/alsa.html#rules"&gt;https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/alsa.html#rules&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;/etc/pipewire/pipewire.conf.d/cweiske-device-names.conf&lt;/p&gt;
&lt;p&gt;Debugging:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ systemctl --user restart pipewire wireplumber
$ journalctl --user-unit=pipewire --user-unit=wireplumber -f
&lt;/pre&gt;
&lt;/div&gt;

 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/962/rev-raw/1877c5a9ecbf13469002144e024f06703faf62d7/3-links.rst" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/962#3-links.rst"&gt;3-links.rst&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</html></oembed>
