Hi Pauli, On Wed, Jan 17, 2024 at 5:23 PM Luiz Augusto von Dentz <luiz.dentz@xxxxxxxxx> wrote: > > From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> > > This prints the owner name when it exits/quits/crash or releases a > transport. > --- > - Looks like there is a bug/race on codec switch it appears the likes of > pipewire attempts to call Release in the process which stops the > acquire/resume: > > bluetoothd[1774429]: profiles/audio/transport.c:transport_set_state() State > changed /org/bluez/hci0/dev_94_DB_56_F7_F2_88/sep1/fd8: TRANSPORT_G > bluetoothd[1774429]: profiles/audio/transport.c:media_request_create() > Request created: method=Acquire id=50 > bluetoothd[1774429]: profiles/audio/transport.c:media_owner_add() Owner > :1.133105 Request Acquire > bluetoothd[1774429]: profiles/audio/transport.c:media_transport_set_owner() > Transport /org/bluez/hci0/dev_94_DB_56_F7_F2_88/sep1/fd8 Owner :1.5 > bluetoothd[1774429]: profiles/audio/transport.c:release() Owner :1.133105 > bluetoothd[1774429]: profiles/audio/transport.c:media_owner_remove() Owner > :1.133105 Request Acquire I wonder if we have a regression on BlueZ or PW for A2DP, since I recall this used to work just fine while switching codecs back and forth, but today it didn't work at all for me and I had to reconnect a couple of times to get it working: >pipewire --version pipewire Compiled with libpipewire 1.0.0 Linked with libpipewire 1.0.0 pw.node: (bluez_output.94_DB_56_F7_F2_88.1-70) running -> error (Received error event) > profiles/audio/transport.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c > index a4696154aba5..5395985b990f 100644 > --- a/profiles/audio/transport.c > +++ b/profiles/audio/transport.c > @@ -531,6 +531,8 @@ static void media_owner_exit(DBusConnection *connection, void *user_data) > { > struct media_owner *owner = user_data; > > + DBG("Owner %s", owner->name); > + > owner->watch = 0; > > media_owner_remove(owner); > @@ -742,6 +744,8 @@ static DBusMessage *release(DBusConnection *conn, DBusMessage *msg, > if (owner == NULL || g_strcmp0(owner->name, sender) != 0) > return btd_error_not_authorized(msg); > > + DBG("Owner %s", owner->name); > + > if (owner->pending) { > const char *member; > > -- > 2.43.0 It seems you PW calls Release after Acquire, not sure if it didn't like our response to Acquire or something. -- Luiz Augusto von Dentz