Hi Pali, On Sat, Apr 20, 2019 at 10:01 AM Pali Rohár <pali.rohar@xxxxxxxxx> wrote: > > On Saturday 20 April 2019 09:43:17 Luiz Augusto von Dentz wrote: > > Hi Pali, > > > > On Fri, Apr 19, 2019 at 3:04 PM Pali Rohár <pali.rohar@xxxxxxxxx> wrote: > > > > > > On Friday 19 April 2019 14:48:38 Luiz Augusto von Dentz wrote: > > > > Hi Pali, > > > > > > > > On Fri, Apr 19, 2019 at 2:02 PM Pali Rohár <pali.rohar@xxxxxxxxx> wrote: > > > > > > > > > > On Friday 19 April 2019 13:04:01 Luiz Augusto von Dentz wrote: > > > > > > Hi Pali, > > > > > > > > > > > > On Fri, Apr 19, 2019 at 11:03 AM Pali Rohár <pali.rohar@xxxxxxxxx> wrote: > > > > > > > > > > > > > > On Wednesday 27 March 2019 12:14:30 Pali Rohár wrote: > > > > > > > > On Sunday 27 January 2019 03:00:38 Pali Rohár wrote: > > > > > > > > > On Wednesday 23 January 2019 13:24:22 Luiz Augusto von Dentz wrote: > > > > > > > > > > Hi Pali, > > > > > > > > > > On Tue, Jan 22, 2019 at 7:56 PM Pali Rohár <pali.rohar@xxxxxxxxx> wrote: > > > > > > > > > > > > > > > > > > > > > > On Tuesday 22 January 2019 16:20:12 Luiz Augusto von Dentz wrote: > > > > > > > > > > > > Hi Pali, > > > > > > > > > > > > On Tue, Jan 22, 2019 at 3:45 PM Luiz Augusto von Dentz > > > > > > > > > > > > <luiz.dentz@xxxxxxxxx> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> > > > > > > > > > > > > > > > > > > > > > > > > > > This adds the possibility to expose remote SEP using MediaEndpoint > > > > > > > > > > > > > interface to allow setting a configuration. > > > > > > > > > > > > > --- > > > > > > > > > > > > > doc/media-api.txt | 27 +++++++++++++++++++++++++-- > > > > > > > > > > > > > 1 file changed, 25 insertions(+), 2 deletions(-) > > > > > > > > > > > > > > > > > > > > > > > > > > diff --git a/doc/media-api.txt b/doc/media-api.txt > > > > > > > > > > > > > index b5ad2db12..af9485342 100644 > > > > > > > > > > > > > --- a/doc/media-api.txt > > > > > > > > > > > > > +++ b/doc/media-api.txt > > > > > > > > > > > > > @@ -500,14 +500,23 @@ Properties object Player [readonly] > > > > > > > > > > > > > MediaEndpoint1 hierarchy > > > > > > > > > > > > > ======================== > > > > > > > > > > > > > > > > > > > > > > > > > > -Service unique name > > > > > > > > > > > > > +Service unique name (Server role) > > > > > > > > > > > > > + org.bluez (Client role) > > > > > > > > > > > > > Interface org.bluez.MediaEndpoint1 > > > > > > > > > > > > > -Object path freely definable > > > > > > > > > > > > > +Object path freely definable (Server role) > > > > > > > > > > > > > + [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/sepX > > > > > > > > > > > > > + (Client role) > > > > > > > > > > > > > > > > > > > > > > > > > > Methods void SetConfiguration(object transport, dict properties) > > > > > > > > > > > > > > > > > > > > > > > > > > Set configuration for the transport. > > > > > > > > > > > > > > > > > > > > > > > > > > + For client role transport must be set with a server > > > > > > > > > > > > > + endpoint oject which will be configured and the > > > > > > > > > > > > > + properties must contain the following properties: > > > > > > > > > > > > > + > > > > > > > > > > > > > + array{byte} Capabilities > > > > > > > > > > > > > + > > > > > > > > > > > > > array{byte} SelectConfiguration(array{byte} capabilities) > > > > > > > > > > > > > > > > > > > > > > > > > > Select preferable configuration from the supported > > > > > > > > > > > > > @@ -532,6 +541,20 @@ Methods void SetConfiguration(object transport, dict properties) > > > > > > > > > > > > > endpoint, because when this method gets called it has > > > > > > > > > > > > > already been unregistered. > > > > > > > > > > > > > > > > > > > > > > > > > > +Properties string UUID [readonly, optional]: > > > > > > > > > > > > > + > > > > > > > > > > > > > + UUID of the profile which the endpoint is for. > > > > > > > > > > > > > + > > > > > > > > > > > > > + byte Codec [readonly, optional]: > > > > > > > > > > > > > + > > > > > > > > > > > > > + Assigned number of codec that the endpoint implements. > > > > > > > > > > > > > + The values should match the profile specification which > > > > > > > > > > > > > + is indicated by the UUID. > > > > > > > > > > > > > + > > > > > > > > > > > > > + array{byte} Capabilities [readonly, optional]: > > > > > > > > > > > > > + > > > > > > > > > > > > > + Capabilities blob, it is used as it is so the size and > > > > > > > > > > > > > + byte order must match. > > > > > > > > > > > > > > > > > > > > > > > > > > MediaTransport1 hierarchy > > > > > > > > > > > > > ========================= > > > > > > > > > > > > > -- > > > > > > > > > > > > > 2.17.2 > > > > > > > > > > > > > > > > > > > > > > > > Can you try this set? > > > > > > > > > > > > > > > > > > > > > > Hi! In V3 you added only "a2dp: Add reverse discovery" patch right? > > > > > > > > > > > I tested my setup also with this patch and there is no difference, > > > > > > > > > > > pulseaudio is working fine :-) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Applied. > > > > > > > > > > > > > > > > > > Hi! I have one bug report for these patches. > > > > > > > > > > > > > > > > > > When I manually disconnect A2DP profile, but let HFP active then all SEP > > > > > > > > > paths on D-Bus disappear. > > > > > > > > > > > > > > > > > > qdbus --system org.bluez /org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX org.bluez.Device1.DisconnectProfile 0000110b-0000-1000-8000-00805f9b34fb > > > > > > > > > > > > > > > > > > So pulseaudio would still see bluetooth device as active (because HFP is > > > > > > > > > in use), but does not see any A2DP codec as all remote SEPs from DBus > > > > > > > > > were removed. > > > > > > > > > > > > > > > > > > It is possible to not remove remote SEPs when A2DP sink profile is > > > > > > > > > manually disconnected? > > > > > > > > > > > > > > > > Hi Luiz! Have you looked at above problem? > > > > > > > > > > > > > > Hi! This one problem is still there. > > > > > > > > > > > > This should have been fixed: > > > > > > > > > > > > https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=9f7659a44601e043bdb6724b0ab4f3f59c46e9fe > > > > > > > > > > Hi! It is still not fixed. I have that commit applied (it is in master > > > > > branch), but SEPs still disappears from dbus after calling > > > > > DisconnectProfile 0000110b-0000-1000-8000-00805f9b34fb as described > > > > > above; even HFP/HSP is still active. > > > > > > > > > > Can you reproduce that problem? > > > > > > > > We remove the objects when we disconnect AVDTP, this is working as > > > > intended as we don't want to initiate the connection directly from the > > > > endpoint as those may have disappeared or changed to some other codec > > > > while disconnected. > > > > > > That is a bit problematic. Pulseaudio see device as active when either > > > A2DP or HFP/HSP profile is connected. It makes sense. But when A2DP is > > > disconnected then bluez remove SEP from dbus which says to pulseaudio > > > that all codecs (as they belongs to SEPs) are unsupported. Which leads > > > to situation that pulseaudio has no idea which codecs are supported nor > > > if A2DP is supported at all. > > > > Usually, all audio profiles are connected simultaneously, we even have > > a policy plugin to enforce this. Also keep in mind that we never > > intend to PulseAudio to trigger connections, for that you use the > > Bluetooth system settings. > > Look, I'm able to achieve state when A2DP is not connected and HFP/HSP > is. Only via public dbus API. So such thing is possible and it could be > available in the future in some program (command line or bluetooth gui). > > And as this state is not only possible, but also valid then pulseaudio > needs to deal with it. > > And as you wrote that pulseaudio should not trigger connection, how it > should know list of available codecs? User just have to connect A2DP, Bluetooth settings should know it is not connected, it is a user action after all. > > > So if bluez remove all SEPs from dbus, how can pulseaudio again activate > > > A2DP connection with codec X? It is impossible as SEP endpoint exported > > > by dbus does not exist anymore. > > > > It doesn't, if you want to reconnect that should be triggered via > > Device.Connect, the daemon will remember the last connected SEP and do > > the right thing, if the user wants to later overwrite the default it > > is free to do so by selecting a different SEP. > > A2DP is connected, HSP is. Currently HSP audio output is used in > pulseaudio and user want to switch it to codec X. bluez has remembered > codec Y (but this information is not available to pulseaudio). > > How should now pulseaudio activate A2DP with codec X? > > > So, in short, it is a > > design choice not to support connecting directly from SEP, anyway in > > most cases that would not even be possible since the device should not > > be connected PA would not list any audio device for it. > > If device is not connected then pulseaudio does not list audio device. > > But if HSP is connected and A2DP not, then pulseaudio show that > bluetooth audio device. User has to connect A2DP and then he has to option to switch to whatever codec that has been discovered, as I said this is a design choice, we don't want to duplicate controls. -- Luiz Augusto von Dentz