Filter chain sinks "not ready" after startup
I am running pipewire 0.3.35 on Arch Linux.
Sinks created with libpipewire-module-filter-chain
are not visible with tools like pactl
after pipewire has started. They only appear after some client has started playback.
The following message appears in journal when trying to query the sinks :
Sep 09 16:59:38 Silmeria pipewire-pulse[32313]: 33: sink not ready: sample:0 map:1 volume:1
The issue can be reproduced using the following commands and the pipewire.conf
config file below.
systemctl --user restart pipewire.service
pactl list sinks short # foo doesn't appear, not ready printed in journal
mpv anything.mp3
pactl list sinks short # foo now visible
context.properties = {
core.daemon = true
core.name = pipewire-0
default.clock.rate = 44100
default.clock.allowed-rates = [ 44100 ]
}
context.spa-libs = {
audio.convert.* = audioconvert/libspa-audioconvert
api.alsa.* = alsa/libspa-alsa
api.v4l2.* = v4l2/libspa-v4l2
api.libcamera.* = libcamera/libspa-libcamera
api.bluez5.* = bluez5/libspa-bluez5
api.vulkan.* = vulkan/libspa-vulkan
api.jack.* = jack/libspa-jack
support.* = support/libspa-support
}
context.modules = [
{ name = libpipewire-module-rt }
{ name = libpipewire-module-protocol-native }
{ name = libpipewire-module-profiler }
{ name = libpipewire-module-metadata }
{ name = libpipewire-module-spa-device-factory }
{ name = libpipewire-module-spa-node-factory }
{ name = libpipewire-module-client-node }
{ name = libpipewire-module-client-device }
{ name = libpipewire-module-portal }
{ name = libpipewire-module-access }
{ name = libpipewire-module-adapter }
{ name = libpipewire-module-link-factory }
{ name = libpipewire-module-session-manager }
{ name = libpipewire-module-filter-chain
args = { node.name = "foo" node.description = "foo" media.name = "foo"
filter.graph = {
nodes = [
{ type = builtin label = copy name = left config = { channel = 0 } }
{ type = builtin label = copy name = right config = { channel = 1 } }
]
inputs = [ "left:In" "right:In" ]
outputs = [ "left:Out" "right:Out" ]
}
capture.props { media.class = Audio/Sink audio.channels = 2 audio.position = [ FL FR ] }
playback.props { node.passive = true node.target = "alsa_output.usb-Yamaha_Corporation_Steinberg_UR22-00.analog-stereo" }
}
}
]
context.objects = [
{ factory = spa-node-factory
args = { factory.name = support.node.driver node.name = Dummy-Driver node.group = pipewire.dummy
priority.driver = 20000 } }
{ factory = spa-node-factory
args = { factory.name = support.node.driver node.name = Freewheel-Driver
priority.driver = 19000 node.group = pipewire.freewheel node.freewheel = true } }
]