Jackdbus and pulse

Len Ovens len at ovenwerks.net
Wed Jan 9 23:46:51 UTC 2013

We have lately been having trouble with our pulse/jackdbus setup. When I
first installed 12.04 starting Jackdbus with qjackctl or jack_control
would stop whatever pulse was doing and use the port. Somewhere between
there and here this no longer works right. Sometimes if the session has
just started, and pulse has not been used to stream anything, jack still
works this way, but for sure once pulse has been used or is streaming,
Jack will fail to start because it can not get access to the device pulse
is using.

What is supposed to happen: Jackdbus uses dbus to tell pulseaudio to
release the device jack wishes to connect to. This does appear to happen,
at least audio stops going to the device and the timer on the streaming
app stops just as in the case of a blocked port. However, jack fails to
get the port. (once in a long while it "just works")

I have played around with this and there is a hack that will work. This is
not a fix. When setting up qjackctl, there is a tab called "Options". On
that panel there is a line with "Execute script on Startup". If this is
enabled and the line:

pasuspender sleep 5 &

Added, everything just works so long as jack is started with qjackctl. I
tested this by using Audacious to play some songs through pulse. On
starting jack with qjackctl there is a brief silence and then the stream
switches over to jack-sink and continues to stream through jack. Stopping
jack works just fine too with the stream switching back to the device.

Davis I CCed this to you because I know you have a better understanding of
pulse than me. Would you (or anyone) know if pasuspender uses dbus to tell
PA to release HW devices? If so then it would appear that PA is working
but jackdbus is not waiting long enough, or that PA is ack the dbus
message before it has completed releasing the port. Maybe it is the right
thing for PA to do even... Dbus may not like to wait around while PA does
stuff. Anyway, an answer to this will give me a good idea which package to
apply the bug against... and maybe see if a patch can be made. My
inclination is to bug jackd2. The patch would be to delay jackd for a
short period (half second?) after getting a dbus ack before attempting to
use the device. I will try to figure it out myself, but am not great with
c++, most of my programing has been c, and not for a while now.

Len Ovens

More information about the Ubuntu-Studio-devel mailing list