Pipewire default sink name and set

When I start plying with an app, in this case Strawberry music player, this is how it patches automatically:
Screenshot_20250418_131832

But, this is what I want:
Screenshot_20250418_132108

Checking with:

pactl info | grep 'Default Sink'

reports the default sink is indeed analog aux0/1:

Default Sink: alsa_output.pci-0000_00_14.2.pro-output-0

If I patch as shown in the second image, wpctl reports

wpctl status                                                                                                                   
PipeWire 'pipewire-0' [1.4.1, mac@ubstwo, cookie:3285631517]
 └─ Clients:
        32. WirePlumber                         [1.4.1, mac@ubstwo, pid:648]
        33. pipewire                            [1.4.1, mac@ubstwo, pid:649]
        46. WirePlumber [export]                [1.4.1, mac@ubstwo, pid:648]
       146. libcanberra                         [1.4.1, mac@ubstwo, pid:772]
       147.                                     [1.4.1, mac@ubstwo, pid:772]
       148. xdg-desktop-portal                  [1.4.1, mac@ubstwo, pid:725]
       149. libcanberra                         [1.4.1, mac@ubstwo, pid:792]
       150. plasmashell                         [1.4.1, mac@ubstwo, pid:792]
       151.                                     [1.4.1, mac@ubstwo, pid:792]
       152. python3.13                          [1.4.1, mac@ubstwo, pid:1253]
       154. calfjackhost                        [1.4.1, mac@ubstwo, pid:1550]
       157. Thunar                              [1.4.1, mac@ubstwo, pid:1480]
       166. calfjackhost                        [1.4.1, mac@ubstwo, pid:1550]
       167. Strawberry device finder            [1.4.1, mac@ubstwo, pid:1573]
       170. wpctl                               [1.4.1, mac@ubstwo, pid:5244]
       174. Firefox                             [1.4.1, mac@ubstwo, pid:1858]
       175. Firefox                             [1.4.1, mac@ubstwo, pid:1858]
       176. Firefox                             [1.4.1, mac@ubstwo, pid:1858]
       177. SciTE                               [1.4.1, mac@ubstwo, pid:3396]
       178. Strawberry                          [1.4.1, mac@ubstwo, pid:1573]

Audio
 ├─ Devices:
 │      47. GA106 High Definition Audio Controller [alsa]
 │      48. Built-in Audio                      [alsa]
 │  
 ├─ Sinks:
 │  *   34. Built-in Audio Pro                  [vol: 1.00]
 │      45. Built-in Audio Pro 1                [vol: 1.00]
 │      55. GA106 High Definition Audio Controller Pro [vol: 1.00]
 │      56. GA106 High Definition Audio Controller Pro 7 [vol: 1.00]
 │      57. GA106 High Definition Audio Controller Pro 8 [vol: 1.00]
 │      58. GA106 High Definition Audio Controller Pro 9 [vol: 1.00]
 │  
 ├─ Sources:
 │  *   43. Built-in Audio Pro                  [vol: 1.00]
 │      44. Built-in Audio Pro 2                [vol: 1.00]
 │  
 ├─ Filters:
 │  
 └─ Streams:
       179. Strawberry                                                  
            169. output_FR       > Calf Studio Gear:X-Over 3 Band In #2 [active]
            173. output_FL       > Calf Studio Gear:X-Over 3 Band In #1 [active]

Video
 ├─ Devices:
 │  
 ├─ Sinks:
 │  
 ├─ Sources:
 │  
 ├─ Filters:
 │  
 └─ Streams:

Settings
 └─ Default Configured Devices:
         0. Audio/Sink    alsa_output.pci-0000_00_14.2.pro-output-0
         1. Audio/Source  alsa_input.usb-0d8c_USB_Sound_Device-00.pro-input-0

But, attempting to use pactl to set the default to the Calf plugin:

pactl set-default-sink "Calf Studio Gear:X-Over 3 Band In"                                                                     
Failure: No such entity
 pactl set-default-sink "Calf Studio Gear"                                                                                    
Failure: No such entity

Does an app like Strawberry use the default defined by pactl?

And, if so how do I find/specify the name of a plugin?

to get a list of sinks to set-default-sink

pactl list sinks short

or use pw-metadata - PipeWire Wiki - Default Sink/Source

I’m looking at the link now.

But, I did the pactl list sinks short previously and it didn’t show anything about the calf plugin.

pactl list sinks short                                                                                                        1 ✘ 
55      alsa_output.pci-0000_01_00.1.pro-output-3       PipeWire        s32le 8ch 48000Hz       SUSPENDED
56      alsa_output.pci-0000_01_00.1.pro-output-7       PipeWire        s32le 8ch 48000Hz       SUSPENDED
57      alsa_output.pci-0000_01_00.1.pro-output-8       PipeWire        s32le 8ch 48000Hz       SUSPENDED
58      alsa_output.pci-0000_01_00.1.pro-output-9       PipeWire        s32le 8ch 48000Hz       SUSPENDED
59      alsa_output.pci-0000_00_14.2.pro-output-0       PipeWire        s32le 8ch 48000Hz       RUNNING
60      alsa_output.pci-0000_00_14.2.pro-output-1       PipeWire        s32le 2ch 48000Hz       SUSPENDED

Hmm…pw-metadata appears to have worked:

pw-metadata 0 default.configured.audio.sink '{ "name": "Calf Studio Gear" }'  
Settings
 └─ Default Configured Devices:
         0. Audio/Sink    Calf Studio Gear
         1. Audio/Source  alsa_input.usb-0d8c_USB_Sound_Device-00.pro-input-0

But, Strawberry stills seeks out the built in hardware.

Screenshot_20250418_143930

wpctl man | Linux Command Library

Synopsis

wpctl [OPTIONS] COMMAND [ARGS...]

Parameters

inspect [OBJECTID]

Inspect the selected object and dump all properties. If no ID is provided will list all object IDs.

link [OUTPUT_ID] [INPUT_ID]

Links two nodes by their ids.

Thanks again!

After some head scratching and experimentation I got it working.

Would be nice if you can share the solution :slightly_smiling_face:

And, I’m happy to do so.

Unfortunately, it is not a one sentence “solution”.

Here are my notes as they stand at the moment. (Anyone who has corrections or comments feel free to let me know. I am certainly no expert and don’t claim this tome is flawless. )

Well…I thought I’d attach a pdf to this post. It has screen captures and such, so it is not just text. I do no online or cloud storage. Is there a recommended solution?

We love text, anything else is just bloat :wink:
We also enjoy imgur

Setting the default sink in PipeWire will not help with internal connections between clients in a JACK audio server

There are GUI tools (qpwgraph, raysession, coppwr) to manage connections, and CLI tools:

jack-example-tools has 3 commands
jack_lsp - to list input/output clients
jack_connect - to create connections between clients
jack_disconnect - to remove connections between clients

aj-snapshot to save or restore connections
(similar to using alsactl store and alsactl restore for ALSA)

pw-link can also be used with pipewire-jack

Seems imgur would handle images.

I have a 10 page pdf.

I guess the short answer to the OP is:

pa-link -l or jack-lps will show the names needed when attempting to patch various sinks and sources in pipewire.

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.